最近学单片机pic16f877,闲来无事,写了一个液晶1602显示汉字 c语言程序。希望大家批评指导!!!!!!!!!!谢谢
//#include<picme1687x.h>
#include<pic.h>
#define uchar unsigned char
#define rs RC0
#define rw RC1
#define en RC2
#define data PORTD
uchar tab[]={0x08,0x0F,0x12,0x0F,0x0A,0x1F,0x02,0x02,
0x0F,0x09,0x0F,0x09,0x0F,0x09,0x13,0x00,
0x0F,0x09,0x09,0x0F,0x09,0x09,0x0F,0x00,
0x0f,0x02,0x04,0x0f,0x19,0x09,0x0f,0x00,
0x1f,0x02,0x04,0x1f,0x02,0x02,0x06,0x00,
};
const uchar tab1[]="thank you";
void delay(uchar y)
{
uchar x;
for(;y>0;y--)
for(x=110;x>0;x--);
}
void check_busy()
{
uchar temp;
do
{
data=0xff;
rs=0;
rw=1;
en=1;
NOP();
temp=data;
temp=temp>>7;
en=0;
}while(temp);
}
void write_com(uchar com)
{
check_busy();
rs=0;
rw=0;
en=1;
data=com;
delay(1);
en=0;
}
void write_dat(uchar dat)
{
check_busy();
rs=1;
rw=0;
en=1;
data=dat;
delay(1);
en=0;
}
void lcd_init()
{
write_com(0x38);
write_com(0x0c);
write_com(0x06);
}
void main()
{
uchar i;
uchar ii;
uchar iii;
TRISC=0x00;
TRISD=0x00;
en=0;
delay(15);
lcd_init();
write_com(0x40);
for(i=0;i<48;i++)
{
write_dat(tab[i]);
}
write_com(0x80);
for(ii=0;ii<5;ii++)
{
write_dat(ii);
}
write_com(0xc0);
for(iii=0;iii<9;iii++)
{
write_dat(tab1[iii]);
}
while(1);
}