|
顯示的數(shù)據(jù)也不是初始化的內(nèi)容,按下復(fù)位鍵,sd1那里中間的0會(huì)變成1,其余的按鍵沒(méi)反應(yīng),顯示屏一直顯示這樣的頁(yè)面。開始考慮是不是線路沒(méi)有連接好,但是接成實(shí)線還是一樣
51hei圖片20220509144901.png (109.3 KB, 下載次數(shù): 38)
下載附件
2022-5-9 15:54 上傳
/********************************************************************
* 名稱 : write_com(uchar com)
* 功能 : 1602命令函數(shù)
* 輸入 : 輸入的命令值
* 輸出 : 無(wú)
***********************************************************************/
void write_com(uchar com)
{
e=0;
rs=0;
rw=0;
P0=com;
delay_uint(25);
e=1;
delay_uint(100);
e=0;
}
/********************************************************************
* 名稱 : write_data(uchar dat)
* 功能 : 1602寫數(shù)據(jù)函數(shù)
* 輸入 : 需要寫入1602的數(shù)據(jù)
* 輸出 : 無(wú)
***********************************************************************/
void write_data(uchar dat)
{
e=0;
rs=1;
rw=0;
P0=dat;
delay_uint(25);
e=1;
delay_uint(100);
e=0;
}
/***********************lcd1602上顯示特定的字符****0XDF 度********************/
void write_zifu(uchar hang,uchar add,uchar date)
{
if(hang==1)
write_com(0x80+add);
else
write_com(0x80+0x40+add);
write_data(date);
}
/***********************lcd1602上顯示兩位十進(jìn)制數(shù)************************/
void write_sfm2(uchar hang,uchar add,uint date)
{
if(hang==1)
write_com(0x80+add);
else
write_com(0x80+0x40+add);
write_data(0x30+date/10%10);
write_data(0x30+date%10);
}
/***********************lcd1602上顯示這字符函數(shù)************************/
void write_string(uchar hang,uchar add,uchar *p)
{
if(hang==1)
write_com(0x80+add);
else
write_com(0x80+0x40+add);
while(1)
{
if(*p == '\0') break;
write_data(*p);
p++;
}
}
/***********************lcd1602初始化設(shè)置************************/
void init_1602() //lcd1602初始化
{
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_string(1,0,"Wd1:00 Sd1:00% ");
write_string(2,0,"Wd2:00 Sd2:00% ");
write_zifu(1,5,0xdf); //顯示度
write_zifu(1,15,0xdf); //顯示度
write_sfm2(2,8,s_high); //顯示濕度
write_sfm2(1,13,t_low); //顯示溫度
}
|
|