單片機(jī)小白學(xué)習(xí)之路(四十二)---LCD1602液晶編碼

目標(biāo):LCD1602的編碼


  • lcd.c
#include "lcd.h"

void Lcd1602_Delay1ms(uint c) //延時(shí)'c'ms
{
    uchar a,b;
    for(;c>0;c--){
        for(b=199;b>0;b--){
            for(a=1;a>0;a--);
        }
    }
}

#ifndef          LCD1602_4PINS  //如果定義的不是四位的話
void LcdWriteCom(uchar com){   //傳輸命令的函數(shù)
    LCD1602_E = 0;  //使能端為低,可以進(jìn)行數(shù)據(jù)改變轧抗,在這時(shí)把數(shù)據(jù)放如數(shù)據(jù)端口(DATAPINS)
    LCD1602_RS = 0; //命令
    LCD1602_RW = 0; //寫入

    LCD1602_DATAPINS = com;   //數(shù)據(jù)放入數(shù)據(jù)端
    Lcd1602_Delay1ms(1);     //延遲1ms,也可以不延遲

    LCD1602_E = 1;     //使能端變高,可以把數(shù)據(jù)輸送到液晶
    Lcd1602_Delay1ms(5);  //給數(shù)據(jù)傳輸?shù)揭壕У臅r(shí)間
    LCD1602_E = 0;     //為下次傳輸時(shí)間做準(zhǔn)備
}
#else
void LcdWriteCom(uchar com)
{
    LCD1602_E = 0;
    LCD1602_RS = 0;
    LCD1602_RW = 0;

    LCD1602_DATAPINS = com; //由于4位的接線是接到P0口的高四位妆够,所以傳送高四位不用改
    Lcd1602_Delay1ms(1);

    LCD1602_E = 1;                  
    Lcd1602_Delay1ms(5);
    LCD1602_E = 0;

        //Lcd1602_Delay1ms(1);
    LCD1602_DATAPINS = com << 4; //發(fā)送低四位
    Lcd1602_Delay1ms(1);

    LCD1602_E = 1;   //寫入時(shí)序
    Lcd1602_Delay1ms(5);
    LCD1602_E = 0;
}
#endif


#ifndef         LCD1602_4PINS   //如果定義的不是四位的話
void LcdWriteData(uchar dat)  //傳輸數(shù)據(jù)的函數(shù)
{
    LCD1602_E = 0;
    LCD1602_RS = 1;
    LCD1602_RW = 0;

    LCD1602_DATAPINS = dat;
    Lcd1602_Delay1ms(1);

    LCD1602_E = 1;
    Lcd1602_Delay1ms(5);
    LCD1602_E = 0;
}
#else
void LcdWriteData(uchar dat)
{
    LCD1602_E = 0;
    LCD1602_RS = 1;
    LCD1602_RW = 0;

    LCD1602_DATAPINS = dat;
    Lcd1602_Delay1ms(1);

    LCD1602_E = 1;
    Lcd1602_Delay1ms(5);
    LCD1602_E = 0; 
        //  Lcd1602_Delay1ms(1);
    LCD1602_DATAPINS = com << 4; //發(fā)送低四位
    Lcd1602_Delay1ms(1);

    LCD1602_E = 1;   //寫入時(shí)序
    Lcd1602_Delay1ms(5);
    LCD1602_E = 0;
}
#endif


#ifndef            LCD1602_4PINS
void LcdInit()
{
    LcdWriteCom(0x38); //開顯示
    LcdWriteCom(0x0c); //開顯示不顯示光標(biāo)
    LcdWriteCom(0x06); //寫一個(gè)指針加1
    LcdWriteCom(0x01); //清屏
    LcdWriteCom(0x80); //設(shè)置數(shù)據(jù)指針的起點(diǎn)
}
#else
void LcdInit()
{
    LcdWriteCom(0x32); //將8位總線轉(zhuǎn)為4位總線
    LcdWriteCom(0x28); //在四位線下的初始化
    LcdWriteCom(0x0c); //開顯示不顯示光標(biāo)
    LcdWriteCom(0x06); //寫一個(gè)指針加1
    LcdWriteCom(0x01); //清屏
    LcdWriteCom(0x80); //設(shè)置數(shù)據(jù)指針的起點(diǎn)
}
#endif

  • main.c
#include "reg52.h"
#include "lcd.h"

typedef unsigned int u16;
typedef unsigned char u8;

u8 Disp1[] = " KAI TUO ZHE V2 ";  //第一排要顯示的字符
u8 Disp2[] = "  Hello World!  ";  //第二排要顯示的字符

void main()
{     
    u8 i;
    LcdInit();
    for(i=0;i<16;i++){
        LcdWriteData(Disp1[i]); //從指針的起始位置開始傳輸,自動(dòng)加1
    }
    LcdWriteCom(0x80+0x40);  //第二排起始地址
    for(i=0;i<16;i++){
        LcdWriteData(Disp2[i]);
    }
    while(1); //數(shù)據(jù)已經(jīng)傳輸過去了丸凭,可以一直顯示枯冈,就保持在這就行了
}

  • lcd.h
#ifndef _LCD_H_
#define _LCD_H_

//#define LCD1602_4PINs  //當(dāng)使用的四位數(shù)據(jù)傳輸?shù)臅r(shí)候定義,使用8位時(shí)注釋此句話

#include<reg52.h>

#ifndef uint
#define uint unsigned int
#endif

#ifndef uchar
#define uchar unsigned char
#endif

//PIN口定義
#define LCD1602_DATAPINS P0
sbit LCD1602_E = P2^7;  //使能端
sbit LCD1602_RW = P2^5; //選擇寫還是讀
sbit LCD1602_RS = P2^6; //命令數(shù)據(jù)選擇端

//函數(shù)定義
void Lcd1602_Delay1ms(uint c); //延時(shí)'c'ms 4
void LcdWriteCom(uchar com);   ///*LCD1602寫入8位命令子函數(shù)*/
void LcdWriteData(uchar dat);  /*LCD1602寫入8位數(shù)據(jù)子函數(shù)*/
void LcdInit();    /*LCD1602初始化子程序*/    

#endif
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末昆咽,一起剝皮案震驚了整個(gè)濱河市驾凶,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌掷酗,老刑警劉巖调违,帶你破解...
    沈念sama閱讀 211,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異泻轰,居然都是意外死亡技肩,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門浮声,熙熙樓的掌柜王于貴愁眉苦臉地迎上來虚婿,“玉大人,你說我怎么就攤上這事阿蝶■ǚ妫” “怎么了?”我有些...
    開封第一講書人閱讀 157,435評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵羡洁,是天一觀的道長玷过。 經(jīng)常有香客問我,道長筑煮,這世上最難降的妖魔是什么辛蚊? 我笑而不...
    開封第一講書人閱讀 56,509評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮真仲,結(jié)果婚禮上袋马,老公的妹妹穿的比我還像新娘。我一直安慰自己秸应,他們只是感情好虑凛,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,611評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著软啼,像睡著了一般桑谍。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上祸挪,一...
    開封第一講書人閱讀 49,837評(píng)論 1 290
  • 那天锣披,我揣著相機(jī)與錄音,去河邊找鬼。 笑死雹仿,一個(gè)胖子當(dāng)著我的面吹牛增热,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播胧辽,決...
    沈念sama閱讀 38,987評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼峻仇,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了票顾?” 一聲冷哼從身側(cè)響起础浮,我...
    開封第一講書人閱讀 37,730評(píng)論 0 267
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎奠骄,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體番刊,經(jīng)...
    沈念sama閱讀 44,194評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡含鳞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,525評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了芹务。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蝉绷。...
    茶點(diǎn)故事閱讀 38,664評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖枣抱,靈堂內(nèi)的尸體忽然破棺而出熔吗,到底是詐尸還是另有隱情,我是刑警寧澤佳晶,帶...
    沈念sama閱讀 34,334評(píng)論 4 330
  • 正文 年R本政府宣布桅狠,位于F島的核電站,受9級(jí)特大地震影響轿秧,放射性物質(zhì)發(fā)生泄漏中跌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,944評(píng)論 3 313
  • 文/蒙蒙 一菇篡、第九天 我趴在偏房一處隱蔽的房頂上張望漩符。 院中可真熱鬧,春花似錦驱还、人聲如沸嗜暴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽闷沥。三九已至,卻和暖如春咪鲜,著一層夾襖步出監(jiān)牢的瞬間狐赡,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評(píng)論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留颖侄,地道東北人鸟雏。 一個(gè)月前我還...
    沈念sama閱讀 46,389評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像览祖,于是被迫代替她去往敵國和親孝鹊。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,554評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom閱讀 2,694評(píng)論 0 3
  • 在保證視頻圖像質(zhì)量的前提下展蒂,HEVC通過增加一定的計(jì)算復(fù)雜度又活,可以實(shí)現(xiàn)碼流在H.264/AVC的基礎(chǔ)上降低50%。...
    加劉景長閱讀 7,833評(píng)論 0 6
  • ----讀第七章《學(xué)習(xí)的行為主義觀點(diǎn)》 從廣義上說锰悼,學(xué)習(xí)是指由經(jīng)驗(yàn)(或?qū)嵺`)引起的個(gè)體知識(shí)或行為的相對持久的變化柳骄。...
    香故事閱讀 412評(píng)論 0 0
  • 協(xié)議的格式 協(xié)議的定義方式與類,結(jié)構(gòu)體箕般,枚舉的定義都非常相似 遵守協(xié)議的格式 協(xié)議的基本使用 定義協(xié)議和遵守協(xié)議 ...
    猴子的救兵520閱讀 545評(píng)論 0 1