找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2800|回復(fù): 10
收起左側(cè)

不太明白LCD1602的單片機(jī)程序 求解釋

[復(fù)制鏈接]
ID:729709 發(fā)表于 2020-6-4 17:19 | 顯示全部樓層 |閱讀模式
void Lcd_ram()      
{
        uint i,j,k=0,temp=0x40;
        for(i=0;i<7;i++)
        {
           for(j=0;j<8;j++)
           {
            write_com(temp+j);
            write_date(zifu[k]);
            k++;
           }
           temp=temp+8;
        }
}
大佬們 這段程序是什么意思。

回復(fù)

使用道具 舉報(bào)

ID:97554 發(fā)表于 2020-6-4 18:04 | 顯示全部樓層
本帖最后由 楊雪飛 于 2020-6-5 08:57 編輯

void Lcd_ram()          //   LCD顯示子程序
{
        uint i,j,k=0,temp=0x40;      //定義四個(gè)無符號(hào)整數(shù)變量 i  j  k  temp。temp的起始數(shù)值為0x40,后邊的write_com(temp+j);就是寫完一個(gè)字符這個(gè)地址加1的意思,也就是往后移一位寫寫一個(gè)字符。

        for(i=0;i<7;i++)    //這個(gè)就很簡單了吧,i自己加,加到8停止,也就是i的值會(huì)依次+1從0到7停止。
        {
           for(j=0;j<8;j++)   //同理,這個(gè)j也是從0到8
           {
            write_com(temp+j);    //上邊說過了,這個(gè)就是往后移一個(gè)位置的意思。
            write_date(zifu[k]);     //這個(gè)在程序的開頭有個(gè)定義的名字為zifu的table,[ ] 里邊會(huì)有N個(gè)字符,比如a b c d啥的,這個(gè)k就是這N個(gè)字符中的第幾個(gè)的意思,下邊的一句k++就是k自己每次+1的意思,這樣就會(huì)配合上邊的語句,把zifu[xxxxxxxxxxx]里的字符一個(gè)一個(gè)的在屏幕上挨個(gè)的顯示出來了。
            k++;
           }
           temp=temp+8;      //這個(gè)是把上邊的寫完了之后直接把字符的顯示位置的地址直接+8。
        }
}


回復(fù)

使用道具 舉報(bào)

ID:669432 發(fā)表于 2020-6-4 19:43 | 顯示全部樓層
循環(huán)看得懂吧,0x40是第二行,意思就是在第二行寫入數(shù)組zifu[]
回復(fù)

使用道具 舉報(bào)

ID:760179 發(fā)表于 2020-6-4 20:04 來自手機(jī) | 顯示全部樓層
把程序都寫出來,一段程序不怎么好弄懂
回復(fù)

使用道具 舉報(bào)

ID:155507 發(fā)表于 2020-6-5 09:55 | 顯示全部樓層
對(duì)1602 的CGRAM 一個(gè)自定義字符操作

http://www.torrancerestoration.com/bbs/dpj-42528-1.html
回復(fù)

使用道具 舉報(bào)

ID:729709 發(fā)表于 2020-6-5 12:36 | 顯示全部樓層
angmall 發(fā)表于 2020-6-5 09:55
對(duì)1602 的CGRAM 一個(gè)自定義字符操作

http://www.torrancerestoration.com/bbs/dpj-42528-1.html

好的 謝謝
回復(fù)

使用道具 舉報(bào)

ID:729709 發(fā)表于 2020-6-5 12:37 | 顯示全部樓層
回復(fù)

使用道具 舉報(bào)

ID:770266 發(fā)表于 2020-6-5 13:08 | 顯示全部樓層
write_com這個(gè)函數(shù)是什么內(nèi)容
回復(fù)

使用道具 舉報(bào)

ID:267932 發(fā)表于 2020-6-5 13:56 | 顯示全部樓層
太熱 發(fā)表于 2020-6-5 13:08
write_com這個(gè)函數(shù)是什么內(nèi)容

#define LCD_RS(x)  P3DIR &= ~BIT(0);x?(P3 |= BIT(0)) : (P3 &= ~BIT(0))
#define LCD_RW(x)  P1DIR &= ~BIT(3);x?(P1 |= BIT(3)) : (P1 &= ~BIT(3))
#define LCD_EN(x)   P1DIR &= ~BIT(2);x?(P1 |= BIT(2)) : (P1 &= ~BIT(2))
#define LCD_4(x)   P02_set_dir(0);x?(P0 |= BIT(2)) : (P0 &= ~BIT(2))
#define LCD_5(x)   P00_set_dir(0);x?(P0 |= BIT(0)) : (P0 &= ~BIT(0))
#define LCD_6(x)   P01_set_dir(0);x?(P0 |= BIT(1)) : (P0 &= ~BIT(1))
#define LCD_7(x)   P11_set_dir(0);x?(P1 |= BIT(1)) : (P1 &= ~BIT(1))


void write_command(u8 dat)    //寫命令
{   
  //uchar dat_half;
        u8 Hdata,Ldata;
    LCD_RS(0);                         //指令 寫入
   //RW_CLR;                    //先寫入高四位
    LCD_RW(0);
    delay_RWC;
    Hdata=dat&0xf0;                    //è???????
    Ldata=(dat<<4)&0xf0;    //è?μí????
        LCD_4(Hdata&0x10);
        LCD_5(Hdata&0x20);
        LCD_6(Hdata&0x40);
        LCD_7(Hdata&0x80);

       
  delay_Dat;
   LCD_EN(1);
   delay_Eset;
   LCD_EN(0);                        //下降沿,執(zhí)行指令
   check_busy_ff();

   LCD_RS(0);                         //指令 寫入
   LCD_RW(0);
   delay_RWC;
   LCD_4(Ldata&0x10);
   LCD_5(Ldata&0x20);
   LCD_6(Ldata&0x40);
   LCD_7(Ldata&0x80);        //再寫入低四位
   delay_Dat;
   LCD_EN(1);
   delay_Eset;
   LCD_EN(0);                        //下降沿,執(zhí)行指令
   check_busy();
}


我這個(gè)是四個(gè)數(shù)據(jù)io, 分兩次發(fā),一次高四,一次發(fā)低四
回復(fù)

使用道具 舉報(bào)

ID:744327 發(fā)表于 2020-6-5 15:17 | 顯示全部樓層
write_com這個(gè)函數(shù)是向LCD液晶寫數(shù)據(jù),寫子函數(shù)。
回復(fù)

使用道具 舉報(bào)

ID:663230 發(fā)表于 2020-6-8 21:17 | 顯示全部樓層
write_com 這個(gè)是LCD1602寫命令函數(shù),見下面函數(shù).
void WriteLcdCom(uchar Com)
{
        rs=0;
        rw=0;
        LcdE=0;
        LcdDat=Com;
        delayms(1);
        LcdE=1;
        delayms(3);
        LcdE=0;

}
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

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

快速回復(fù) 返回頂部 返回列表