五星好市民 发表于 2022-10-7 19:16:26

单片机1602

代码能编译出来,但是1602只显示第一行的白块

#include"reg51.h"
#define uchar unsigned char
#define uint unsigned int
#define        write_date   
        uchar code table[]="I LOVE YOU!";
uchar code table1[]="WELCOME YOU !";
sbit lcden=P2^4;
sbit lcdrs=P2^5;
sbit lcdrw=P2^3;
uchar num;
void delay (uint xms)
{
        uint i, j;
        for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
uchar busy()
{
        uchar lcd_status;
        lcdrs=0;lcdrw=1;
        lcden=1;
        delay(50);
        lcd_status=P0;
        lcden=0;
        return lcd_status;
}
void write_com(uchar com)
{
        while((busy()&0x80)==0x80);
        lcdrw=0;lcdrs=0;
        P0=com;
        delay(50);
        lcden=1;
        delay(50);
        lcden=0;
}
void write_data(uchar date)
{
        while((busy()&0x80)==0x80);
        lcdrw=0;lcdrs=1;
        P0=date;
        delay(50);
        lcden=1;
        delay(50);
       lcden=0;
}
void init()
{
        lcden=0;
        write_com(0x38);
        write_com(0x0c);
        write_com(0x06);
        write_com(0x01);
}
void main()
{
        init();
        write_com(0x80);
        for(num=0;num<11;num++)
{
        write_date(table);
        delay(50);
}
write_com(0x80+0x40);
for(num=0;num<13;num++)
{
        write_date(table1);
        delay(50);
}
while(1);
}


页: [1]
查看完整版本: 单片机1602