欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 不太明白LCD1602的單片機程序 求解釋 [打印本頁]

作者: HAKEEM    時間: 2020-6-4 17:19
標題: 不太明白LCD1602的單片機程序 求解釋
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;
        }
}
大佬們 這段程序是什么意思。


作者: 楊雪飛    時間: 2020-6-4 18:04
本帖最后由 楊雪飛 于 2020-6-5 08:57 編輯

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

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



作者: 想學習好難    時間: 2020-6-4 19:43
循環看得懂吧,0x40是第二行,意思就是在第二行寫入數組zifu[]
作者: chengp    時間: 2020-6-4 20:04
把程序都寫出來,一段程序不怎么好弄懂
作者: angmall    時間: 2020-6-5 09:55
對1602 的CGRAM 一個自定義字符操作

http://m.raoushi.com/bbs/dpj-42528-1.html
作者: HAKEEM    時間: 2020-6-5 12:36
angmall 發表于 2020-6-5 09:55
對1602 的CGRAM 一個自定義字符操作

http://m.raoushi.com/bbs/dpj-42528-1.html

好的 謝謝
作者: HAKEEM    時間: 2020-6-5 12:37
楊雪飛 發表于 2020-6-4 18:04

謝謝!
作者: 太熱    時間: 2020-6-5 13:08
write_com這個函數是什么內容
作者: zhai1995    時間: 2020-6-5 13:56
太熱 發表于 2020-6-5 13:08
write_com這個函數是什么內容

#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);                        //下降沿,執行指令
   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);                        //下降沿,執行指令
   check_busy();
}


我這個是四個數據io, 分兩次發,一次高四,一次發低四
作者: 烈火    時間: 2020-6-5 15:17
write_com這個函數是向LCD液晶寫數據,寫子函數。
作者: larrychen    時間: 2020-6-8 21:17
write_com 這個是LCD1602寫命令函數,見下面函數.
void WriteLcdCom(uchar Com)
{
        rs=0;
        rw=0;
        LcdE=0;
        LcdDat=Com;
        delayms(1);
        LcdE=1;
        delayms(3);
        LcdE=0;

}




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1