根據(jù)論壇的程序改編了一下,把子函數(shù)放在了前面,編譯后就不好用了,出現(xiàn)了3個警告,寫入單片機也不顯示了,反復檢查也看不出啥原因,特來求教老師
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit E=P2^7; //1602使能引腳
sbit RW=P2^6; //1602讀寫引腳
sbit RS=P2^5; //1602數(shù)據(jù)/命令選擇引腳
uchar tab1[]=" www.zg4o1577.cn "; //要顯示什么就在這兒改
uchar tab2[]="LCD1602 test ok!"; //[size=15.5555562973022px]要顯示什么就在這兒改
void delay(uint del); //延時1ms
void init(); //初始化
void writecmd(uchar com); //寫指令
void writedata(uchar dat); //寫數(shù)據(jù)
void mian()
{
{
uchar j;
init();
writecmd(0x80); //告訴液晶在哪個地方顯示 (設(shè)置地址指針)//80H+00
for(j=0;j<16;j++) //有16個字符,要循環(huán)16次
{
writedata(tab1[j]);
delay(10);
}
writecmd(0x80+0x40); //再設(shè)置第二行的起始位置80H+40H
for(j=0;j<16;j++) //有16個字符,要循環(huán)16次
{ writedata(tab2[j]);
delay(10);
}
while(1); //讓液晶顯示就一直停在這里。
}
}
void delay(uint del) //延時1ms
{
uint i,j;
for(i=0;i<del;i++)
for(j=0;j<=168;j++);
}
void writecmd(uchar com) //寫指令
{
E=0;
RS=0;
RW=0;
P0=com;
delay(10);
E=1;
delay(10);
E=0;
}
void writedata(uchar dat)//寫數(shù)據(jù)
{
E=0;
RS=1;
RW=0;
P0=dat;
delay(10);
E=1;
delay(10);
E=0;
}
void init() //初始化
{
delay(30);
writecmd(0x38);
delay(10);
writecmd(0x38);
delay(10);
writecmd(0x38);
writecmd(0x38);
writecmd(0x08);
writecmd(0x01);
writecmd(0x06);
writecmd(0x0c);
}
|