LCD1602液晶顯示C程序.doc_第1頁
LCD1602液晶顯示C程序.doc_第2頁
LCD1602液晶顯示C程序.doc_第3頁
LCD1602液晶顯示C程序.doc_第4頁
LCD1602液晶顯示C程序.doc_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、關(guān)于1602液晶的電氣參數(shù) 一般市場(chǎng)上的1602液晶使用的驅(qū)動(dòng)器為HD44780U或HD44780S,市場(chǎng)上大部分液晶用的是后者。HD44780S的供電電壓為5V10%,而HD44780U的供電電壓為2.7V5.5V。也就是說,絕大部分1602液晶只能工作在5V電壓下,其供電電壓必須為5V。經(jīng)過試驗(yàn)發(fā)現(xiàn),1602液晶的供電雖然必須為5V,但其控制總線和數(shù)據(jù)總線可以用3.3V電平(因?yàn)閷?duì)于TTL電平,一般大于2.5V以上都算高電平,不過最可靠的是大于3.6V),只不過在3.3V電平下,數(shù)據(jù)的通信速度會(huì)大大降低,這一點(diǎn)需要在寫驅(qū)動(dòng)時(shí)注意。需要時(shí),可以將MCU的IO配置為漏極開路方式,用上拉電阻拉到5V電平;實(shí)在不能配置為漏極開路方式時(shí),請(qǐng)查閱MCU的電氣參數(shù),在允許的條件下,直接使用電阻弱上拉也可以。2、 硬件連接1602液晶可以使用4位或8位通信模式,通信可以是雙向的或單向的,雙向通信主要是為了讀取LCD忙標(biāo)志和AC地址寄存器和DDRAM和CGRAM中的值,一般用處不大,因?yàn)?602不支持點(diǎn)陣?yán)L圖功能。在連接時(shí),注意4位通信方式下,LCD只使用DB7DB4,一般情況下會(huì)使用MCU某端口的高4位或低4位與之連接,注意寫驅(qū)動(dòng)時(shí)在必要的情況下對(duì)端口的其它幾位要保護(hù),防止破壞其數(shù)據(jù);當(dāng)然如果沒有使用其它4位時(shí)則不必要保護(hù)(奇怪,不使用其它4位干嘛用4位通信方式嘛?)。還要注意的是,如果需要雙向通信,則必須選擇既能做輸入又能做輸出的IO口,特別是對(duì)于RS、RW和E這三條控制線,若能選擇支持位尋址的IO口則可以方便編程。3、底層驅(qū)動(dòng)問題通用1602液晶的時(shí)序如圖:(1)、寫時(shí)序(2)、讀時(shí)序總的說來,按照這個(gè)時(shí)序圖來編寫驅(qū)動(dòng)程序是不會(huì)出什么問題的,只是要深刻理解時(shí)序圖中各參數(shù)的涵義。編程中要特別關(guān)注E這根控制線。寫操作的時(shí)序應(yīng)該是:、RS=0(寫指令寄存器)或RS=1(寫數(shù)據(jù)寄存器);、RW=0(寫操作);、將數(shù)據(jù)寫到數(shù)據(jù)線上;、E=1;、E=0 。在寫操作時(shí),LCD是在E的下降沿將數(shù)據(jù)鎖存,即寫操作時(shí)E下降沿有效。但盡管這樣,為防止LCD出錯(cuò),在E變?yōu)楦唠娖胶?,盡量不要再改變數(shù)據(jù)線上的數(shù)據(jù)值。即最好按照上述的時(shí)序來操作。讀操作的時(shí)序應(yīng)該是:、RS=0(讀忙標(biāo)志BF和地址計(jì)數(shù)器AC)或RS=1(讀數(shù)據(jù)寄存器);、RW=1(讀操作);、E=1;、從數(shù)據(jù)線上讀取數(shù)據(jù);、E=0 。在讀操作時(shí),E一旦變?yōu)楦唠娖?,LCD馬上將數(shù)據(jù)發(fā)到數(shù)據(jù)線上并保持,一直到E=0為止。即寫操作時(shí)E高電平有效。一般如果時(shí)序沒有錯(cuò),不會(huì)出什么問題。絕大部分問題都是延時(shí)不夠造成的,注意看上面兩個(gè)圖表,有許多時(shí)間參數(shù)的。要注意的是這些參數(shù)的條件,如“Vdd=5V5V5%,Vss=0,Ta=25”,其它條件下這些指標(biāo)都要留有余量。此外,電源電壓、MCU數(shù)據(jù)線的電平、驅(qū)動(dòng)能力、PCB布局 均會(huì)影響速度,注意留有足夠的余量,建議先留大的余量,調(diào)通后再逐漸減小延時(shí)。4、 1602液晶的初始化通用1602液晶的初始化需要注意一個(gè)問題,即一定要在最開始寫入功能設(shè)定指令,該指令用以控制LCD的數(shù)據(jù)通信位數(shù),及顯示行數(shù)和字型。并且強(qiáng)烈建議將此指令寫兩次,因?yàn)長CD啟動(dòng)后并不知道您使用的是4位數(shù)據(jù)通信方式還是8位方式,所以它總是先執(zhí)行高4位的指令,也就是說第一次寫入該指令時(shí),低四位的數(shù)據(jù)可能被忽略(這是我根據(jù)使用其它液晶的猜測(cè))。總之為了可靠,最好寫兩遍該指令。下面是1602的接線1602液晶顯示C程序* 描 述 : * 此程序?qū)崿F(xiàn),完成液晶的驅(qū)動(dòng)程序,可以顯示任意的ASCII字符*/#include /調(diào)用頭文件(單片機(jī)內(nèi)部的寄存器定義)/*本段為硬件I/O口定義*/sbit KEY0 = P0 0; /KEY和發(fā)光管復(fù)用,請(qǐng)將跳線插到KEY端sbit KEY1 = P0 1;sbit KEY2 = P0 2;sbit KEY3 = P0 3;sbit DIG0 = P0 4; /數(shù)碼管位0sbit DIG1 = P0 5; /數(shù)碼管位1sbit BUZZ = P3 3; /蜂鳴器sbit LCD_RW = P3 6; sbit LCD_RS = P3 7; sbit LCD_E = P3 4;#define LED_SEG P1 /數(shù)碼管#define LCD_DATA P2 /LCD DATA#define LCD_BUSY 0x80 / 用于檢測(cè)LCD的BUSY標(biāo)識(shí)(本程序中用的延時(shí),未檢測(cè))/LCD顯示內(nèi)容,定義到代碼段unsigned char code LcdBuf1= welcom!;unsigned char code LcdBuf2= MCU-STUDY-BOARD;/函數(shù)聲明void lcd_init(void);void display_string(unsigned char x,unsigned char y,unsigned char *s);void disp_selec(unsigned char bit_selec,unsigned char seg);/* 函數(shù)名稱: dellay* 入口參數(shù):h(unsigned int型)* 出口參數(shù):無* 功能描述: 短暫延時(shí),使用11.0592晶體,約0.01MS*/void dellay(unsigned int h)while(h-); /0.01MS/*主程序*/main() lcd_init();display_string(3,0,LcdBuf1); /顯示第一行,從第3個(gè)位置開始display_string(0,1,LcdBuf2); /顯示第二行,從第0個(gè)位置開始 while(1); /單片機(jī)待機(jī)/* 函數(shù)名稱: WriteDataLcd* 入口參數(shù):wdata(unsigned char型)* 出口參數(shù):無* 功能描述: 寫數(shù)據(jù)到LCD*/void WriteDataLcd(unsigned char wdata) LCD_DATA=wdata; LCD_RS=1; LCD_RW=0; LCD_E=0; dellay(100); /短暫延時(shí),代替檢測(cè)忙狀態(tài) LCD_E=1;/* 函數(shù)名稱: WriteCommandLcd* 入口參數(shù):wdata(unsigned char型)* 出口參數(shù):無* 功能描述: 寫命令到LCD*/void WriteCommandLcd(unsigned char wdata) LCD_DATA=wdata; LCD_RS=0; LCD_RW=0; LCD_E=0; dellay(100); /短暫延時(shí),代替檢測(cè)忙狀態(tài) LCD_E=1;/LCD初始化void lcd_init(void) LCD_DATA=0; WriteCommandLcd(0x38); dellay(1000); WriteCommandLcd(0x38); /顯示模式設(shè)置 WriteCommandLcd(0x08); /關(guān)閉顯示 WriteCommandLcd(0x01); /顯示清屏 WriteCommandLcd(0x06); /顯示光標(biāo)移動(dòng)設(shè)置 WriteCommandLcd(0x0c); /顯示開及光標(biāo)移動(dòng)設(shè)置/* 函數(shù)名稱: display_xy* 入口參數(shù):x(unsigned char型),y(unsigned char型)* 出口參數(shù):無* 功能描述: 設(shè)置光標(biāo)位置, x是列號(hào),y是行號(hào)*/void display_xy(unsigned char x,unsigned char y) if(y=1) x+=0x40;x+=0x80;WriteCommandLcd(x);/* 函數(shù)名稱: display_char* 入口參數(shù):x(unsigned char型),y(unsigned char型),dat(unsigned char型)* 出口參數(shù):無* 功能描述: 在具體位置顯示單個(gè)字符,x是列號(hào),y是行號(hào)*/void display_char(unsigned char x,unsigned char y,unsigned char dat)display_xy(x,y);WriteDataLcd(dat);/* 函數(shù)名稱: display_string* 入口參數(shù):x(unsigned char型),y(u

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論