找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2053|回復: 3
收起左側

單片機+Proteus仿真上電后LCD1602顯示不正確?附程序

[復制鏈接]
ID:896764 發(fā)表于 2022-5-9 16:02 | 顯示全部樓層 |閱讀模式
顯示的數(shù)據(jù)也不是初始化的內容,按下復位鍵,sd1那里中間的0會變成1,其余的按鍵沒反應,顯示屏一直顯示這樣的頁面。開始考慮是不是線路沒有連接好,但是接成實線還是一樣 51hei圖片20220509144901.png

/********************************************************************
* 名稱 : write_com(uchar com)
* 功能 : 1602命令函數(shù)
* 輸入 : 輸入的命令值
* 輸出 : 無
***********************************************************************/
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ù)
* 輸出 : 無
***********************************************************************/
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上顯示兩位十進制數(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初始化設置************************/
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);          //顯示溫度
}
回復

使用道具 舉報

ID:102963 發(fā)表于 2022-5-9 19:27 | 顯示全部樓層
你這樣發(fā),沒用!啥問題看不出!上傳文件!
回復

使用道具 舉報

ID:1013784 發(fā)表于 2022-5-10 01:57 | 顯示全部樓層
看不太清
回復

使用道具 舉報

ID:517466 發(fā)表于 2022-5-10 07:57 | 顯示全部樓層
自己地學會如何調試程序。像這樣有多組數(shù)據(jù)要被顯示的,你一個一個調試,不要一下子全部顯示出來。在程序中,先調通一個,然后再下一個。每一個都調通了,再全部同時調試。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表