请帮我写一下关于AT89C51单片机液晶 屏显示“孙晓辉”的项目设计,要求提供代码和程序图
时间: 2024-05-10 22:17:49 浏览: 125
好的,这里提供一个简单的 AT89C51 单片机液晶屏显示“孙晓辉”的项目设计。
硬件部分:
1. AT89C51单片机
2. 16x2液晶屏
3. 10K电位器
4. 4.7K电阻
5. 10uF电容
6. 12MHz晶振
7. 杜邦线若干
8. 面包板
软件部分:
1. Keil C51
2. Proteus
首先,将AT89C51单片机和其他硬件连接好,然后在Keil C51中编写程序,代码如下:
```
#include<reg52.h>
#include<intrins.h>
#define LCD1602_DB P0
sbit RS=P2^0;
sbit RW=P2^1;
sbit EN=P2^2;
void delay_ms(unsigned int xms)
{
unsigned int i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void lcd_write_cmd(unsigned char cmd)
{
LCD1602_DB=cmd;
RS=0;
RW=0;
EN=1;
_nop_();
EN=0;
}
void lcd_write_data(unsigned char dat)
{
LCD1602_DB=dat;
RS=1;
RW=0;
EN=1;
_nop_();
EN=0;
}
void lcd_init()
{
lcd_write_cmd(0x38);
delay_ms(5);
lcd_write_cmd(0x0c);
delay_ms(5);
lcd_write_cmd(0x06);
delay_ms(5);
lcd_write_cmd(0x01);
delay_ms(5);
}
void lcd_display_string(unsigned char x,unsigned char y,unsigned char *s)
{
unsigned char i;
if(x<16)
{
if(y) x|=0x40;
x|=0x80;
lcd_write_cmd(x);
}
i=0;
while(s[i]!='\0')
{
lcd_write_data(s[i]);
i++;
}
}
void main()
{
lcd_init();
lcd_display_string(0,0,"Sun Xiaohui");
while(1);
}
```
然后在Proteus中进行仿真,将AT89C51单片机和液晶屏连接好,添加时钟模块,设置为12MHz,下载程序到单片机中,运行仿真即可看到液晶屏上显示“Sun Xiaohui”。
注意事项:
1. 电源必须稳定,否则会导致显示不正常。
2. 硬件连接时注意电位器、电容、电阻的连接方向。
3. 代码中要根据自己的液晶屏型号和引脚连接情况进行相应的修改。
希望这个项目设计能对你有所帮助。
阅读全文