高手请进,mini80E实验板上1602液晶屏的显示问题,我的代码如下,就是显示数据。lcd接口如图

2024-12-13 17:44:52
推荐回答(1个)
回答1:

下面的复制到keil c软件中看比较明白
#include //单片机型号选择正确看是不是52还是51
#define uchar unsigned char
#define uint unsigned int

sbit lcdrs=P2^4;//数据指令选择 //控制口我是看着你给的图片上选得。
sbit lcden=P2^6; //使能端
sbit lcdrw=P2^5; //读写选择 //sbit dula=P3^7; dula我不知道这是什么端口,如果是读写选择端口的话下面用法错误。
uchar num;
uchar h=12,m=59,s=3; //h,m,s虽然是字符型的,但是下面不能这样用
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_com(uchar com)
{
lcdrs=0;
lcdrw=0; //读写选择写在这里
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_date(uchar date)
{
lcdrs=1;
lcdrw=0;//读写选择写在这里
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void init()
{
//dula=0; 不需用 写
//lcden=0; 不需用写
write_com(0x38);//设置16*2显示,5*7点阵,8位数据接口
write_com(0x0c);//设置开显示关光标
write_com(0x06);//写一个字符后地址指针加1
write_com(0x01);//显示清0,数据指针清零
}
void main()
{
init();

write_com(0x80+0x40);
write_date(0x31);//h,m,s得用他们对应的ASC!!码并且一次只能写入一个字符
delay(5);
write_date(0x32); //如果要一起写入的话可以用字符串的形式这样就简单。
delay(5);
write_date(':');
delay(5);
write_date(0x35);
delay(5);
write_date(0x39);
delay(5);
write_date(':');
delay(5);
write_date(0x33);
delay(5);
while(1);
}