LCD1602液晶顯示實(shí)驗(yàn)要點(diǎn)_第1頁(yè)
LCD1602液晶顯示實(shí)驗(yàn)要點(diǎn)_第2頁(yè)
LCD1602液晶顯示實(shí)驗(yàn)要點(diǎn)_第3頁(yè)
LCD1602液晶顯示實(shí)驗(yàn)要點(diǎn)_第4頁(yè)
LCD1602液晶顯示實(shí)驗(yàn)要點(diǎn)_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上實(shí) 驗(yàn) 報(bào) 告實(shí)驗(yàn)名稱: LCD1602液晶顯示實(shí)驗(yàn)姓 名: 學(xué) 號(hào): 指導(dǎo)教師: 實(shí)驗(yàn)時(shí)間: 2013年6月15日 信息與通信工程學(xué)院LCD1602液晶顯示實(shí)驗(yàn)1.實(shí)驗(yàn)原理1.1 基本原理1.1.1 1602字符型LCD簡(jiǎn)介 字符型液晶顯示模塊是一種專門(mén)用于顯示字母、數(shù)字、符號(hào)等點(diǎn)陣式LCD,目前常用16*1,16*2,20*2和40*2行等的模塊。1.1.2 1602LCD的基本參數(shù)及引腳功能 1602LCD分為帶背光和不帶背光兩種,基控制器大部分為HD44780,帶背光的比不帶背光的厚,是否帶背光在應(yīng)用中并無(wú)差別,兩者尺寸差別如下圖1-2所示:圖1-2 1602

2、LCD尺寸圖1.1602LCD主要技術(shù)參數(shù):顯示容量: 162個(gè)字符芯片工作電壓: 4.55.5V工作電流: 2.0mA(5.0V)模塊最佳工作電壓: 5.0V字符尺寸: 2.954.35(WH)mm2.引腳功能說(shuō)明:1602LCD采用標(biāo)準(zhǔn)的14腳(無(wú)背光)或16腳(帶背光)接口,各引腳接口說(shuō)明如表: 表1-3引腳接口說(shuō)明表編號(hào)符號(hào)引腳說(shuō)明編號(hào)符號(hào)引腳說(shuō)明1VSS電源地9D2數(shù)據(jù)2VDD電源正極10D3數(shù)據(jù)3VL液晶顯示偏壓11D4數(shù)據(jù)4RS數(shù)據(jù)/命令選擇12D5數(shù)據(jù)5R/W讀/寫(xiě)選擇13D6數(shù)據(jù)6E使能信號(hào)14D7數(shù)據(jù)7D0數(shù)據(jù)15BLA背光源正極8D1數(shù)據(jù)16BLK背光源負(fù)極1.1.3 1

3、602LCD的指令說(shuō)明及時(shí)序1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表1-4所示:表1-4 控制命令表序號(hào)指令RSR/WD7D6D5D4D3D2D1D01清顯示00000000012光標(biāo)返回000000001*3置輸入模式00000001I/DS4顯示開(kāi)/關(guān)控制0000001DCB5光標(biāo)或字符移位000001S/CR/L*6置功能00001DLNF*7置字符發(fā)生存貯器地址0001字符發(fā)生存貯器地址8置數(shù)據(jù)存貯器地址001顯示數(shù)據(jù)存貯器地址9讀忙標(biāo)志或地址01BF計(jì)數(shù)器地址10寫(xiě)數(shù)到CGRAM或DDRAM)10要寫(xiě)的數(shù)據(jù)內(nèi)容11從CGRAM或DDRAM讀數(shù)11讀出的數(shù)據(jù)內(nèi)容1602液晶

4、模塊的讀寫(xiě)操作、屏幕和光標(biāo)的操作都是通過(guò)指令編程來(lái)實(shí)現(xiàn)的。(說(shuō)明:1為高電平、0為低電平)讀寫(xiě)操作時(shí)序如圖1-5和1-6所示:圖1-5 讀操作時(shí)序圖1-6 寫(xiě)操作時(shí)序1.1.4 1602LCD的RAM地址映射及標(biāo)準(zhǔn)字庫(kù)表液晶顯示模塊是一個(gè)慢顯示器件,所以,在執(zhí)行每條指令之前,一定要確認(rèn)模塊的忙標(biāo)志為低電平,表示不忙,否則此指令失效。要顯示字符時(shí),要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符,圖1-7是1602的內(nèi)部顯示地址。圖1-7 1602LCD內(nèi)部顯示地址例如,第二行第一個(gè)字符的地址是40H,那么是否直接寫(xiě)入40H就可以將光標(biāo)定位在第二行第一個(gè)字符的位置呢?這樣不行,因?yàn)閷?xiě)入顯示地址

5、時(shí)要求最高位D7恒定為高電平1,所以實(shí)際寫(xiě)入的數(shù)據(jù)應(yīng)該是B(40H)+B(80H)=B(C0H)。在對(duì)液晶模塊的初始化中,要先設(shè)置其顯示模式,在液晶模塊顯示字符時(shí)光標(biāo)是自動(dòng)右移的,無(wú)需人工干預(yù)。每次輸入指令前都要判斷液晶模塊是否處于忙的狀態(tài)。1602液晶模塊內(nèi)部的字符發(fā)生存儲(chǔ)器(CGROM)已經(jīng)存儲(chǔ)了160個(gè)不同的點(diǎn)陣字符圖形,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫(xiě)、常用的符號(hào)、和日文假名等,每一個(gè)字符都有一個(gè)固定的代碼,比如大寫(xiě)的英文字母“A”的代碼是B(41H),顯示時(shí)模塊把地址41H中的點(diǎn)陣字符圖形顯示出來(lái),我們就能看到字母“A”因?yàn)?602識(shí)別的是ASCII碼,試驗(yàn)可以用ASCII碼

6、直接賦值,編程中還可以用字符型常量或變量賦值,如“A”。1602通過(guò)D0D7的8位數(shù)據(jù)端傳輸數(shù)據(jù)和指令。1.1.5 1602LCD的一般初始化(復(fù)位)過(guò)程延時(shí)15mS寫(xiě)指令38H(不檢測(cè)忙信號(hào))延時(shí)5mS寫(xiě)指令38H(不檢測(cè)忙信號(hào))延時(shí)5mS寫(xiě)指令38H(不檢測(cè)忙信號(hào))以后每次寫(xiě)指令、讀/寫(xiě)數(shù)據(jù)操作均需要檢測(cè)忙信號(hào)寫(xiě)指令38H:顯示模式設(shè)置寫(xiě)指令08H:顯示關(guān)閉寫(xiě)指令01H:顯示清屏寫(xiě)指令06H:顯示光標(biāo)移動(dòng)設(shè)置寫(xiě)指令0CH:顯示開(kāi)及光標(biāo)設(shè)置1.2 任務(wù)1及其原理任務(wù)1:更改lcd上顯示的字符。通過(guò)更改wire 127:0 row1_val,wire 127:0 row2_val的賦值即可,注

7、意保證“”內(nèi)的字符數(shù)包括空格共16位。1.3 任務(wù)2及其原理任務(wù)2:將“LCD1602驅(qū)動(dòng)模塊”文件與“LCD1602驅(qū)動(dòng)測(cè)試模塊”文件合并成為一個(gè)verilog文件。首先,新建一個(gè)頂層VerilogHDL文件,將兩個(gè)文件的輸入,內(nèi)容合并,調(diào)試新的模塊,然后將管腳連接在一起,從而完成合并。1.4 任務(wù)3及其原理任務(wù)3:實(shí)現(xiàn)液晶屏的某一位完成09的循環(huán)變換,并且設(shè)置復(fù)位鍵,在循環(huán)過(guò)程中按下復(fù)位鍵循環(huán)可從0重新開(kāi)始。完成本次的實(shí)驗(yàn)想法是將“LCD1602驅(qū)動(dòng)測(cè)試模塊”文件中wire 127:0 row1_val,wire 127:0 row2_val變量進(jìn)行改動(dòng),將row1_val原本賦予的字符替

8、換為一個(gè)變量,設(shè)定新的時(shí)鐘,即循環(huán)變換的間隔時(shí)間,再通過(guò)條件語(yǔ)句控制循環(huán)。使能鍵的控制原理是通過(guò)對(duì)循環(huán)變換的條件進(jìn)行操作實(shí)現(xiàn)的,即當(dāng)按鍵使能時(shí)循環(huán)開(kāi)始,反之,則從0開(kāi)始。2. 實(shí)驗(yàn)流程圖09循環(huán)變換流程圖3.實(shí)驗(yàn)程序3.1 任務(wù)1程序 程序更改部分:wire 127:0 row1_val = liu wupeng ; wire 127:0 row2_val = ;3.2 任務(wù)2程序 將測(cè)試模塊中的驅(qū)動(dòng)部分,兩個(gè)文件的對(duì)應(yīng)命名只留其一,合并兩文件,即以下部分 / 例化LCD1602驅(qū)動(dòng) lcd1602_drive u0( .clk(CLOCK_50M), .rst_n(Q_KEY), .row1

9、_val(row1_val), .row2_val(row2_val), .lcd_data(LCD1602_DATA), .lcd_e(LCD1602_E), .lcd_rs(LCD1602_RS), .lcd_rw(LCD1602_RW);完整程序請(qǐng)參見(jiàn)附件:13.3 任務(wù)3程序 改動(dòng)模塊:LCD1602驅(qū)動(dòng)測(cè)試模塊,加重處為修改、添加部分module lcd1602_test( input CLOCK_50M, / 板載時(shí)鐘25MHz input Q_KEY, / 板載按鍵RST output 7:0 LCD1602_DATA, / LCD1602數(shù)據(jù)總線 output LCD1602_

10、E, / LCD1602使能 output LCD1602_RS, / LCD1602指令數(shù)據(jù)選擇 output LCD1602_RW, / LCD1602讀寫(xiě)選擇 output SEL0, / LCD1602讀寫(xiě)選擇 output SEL1, / LCD1602讀寫(xiě)選擇 output SEL2 / LCD1602讀寫(xiě)選擇 input key, /使能控制鍵 );reg 127:0 row1_val; /將原本的wire型改為reg型,保證其可變wire 127:0 row2_val = ; /將第二行賦值都是空格,實(shí)驗(yàn)時(shí)顯示為空reg 7:0 a; /a變化控制reg 127:0 row1_

11、valreg 3:0 i; reg 25:0 cnt; /分頻用reg en; /使能控制assign SEL0 = 1b0; assign SEL1 = 1b0; assign SEL2 = 1b1; always (posedge CLOCK_50M,negedge Q_KEY) if (!Q_KEY) cnt = 0; else cnt = cnt + 1b1;wire lcd_clk = cnt25; /分頻模塊always (a) begin row1_val7:0=a; end /將a賦給 row1_val7:0的低8位 always (negedge key) begin if

12、(en=0) en=1; else en=0; end /使能控制模塊,下降沿有效 always (posedge lcd_clk) if (en) if(i ABCDEF -wire 127:0 row1_val = liu wupeng ;wire 127:0 row2_val = ;assign SEL0 = 1b0; assign SEL1 = 1b0; assign SEL2 = 1b1; / +/ 分頻模塊 開(kāi)始/ +reg 15:0 cnt; / 計(jì)數(shù)子always (posedge clk, negedge rst_n) if (!rst_n) cnt = 0; else cn

13、t = cnt + 1b1;/ 500Khz 1MHz 皆可wire lcd_clk = cnt15; / (215 / 50M) = 1.31ms / -/ 分頻模塊 結(jié)束/ -/ +/ LCD1602驅(qū)動(dòng)模塊 開(kāi)始/ +/ 格雷碼編碼:共40個(gè)狀態(tài)parameter IDLE = 8h00;/ 寫(xiě)指令,初始化parameter DISP_SET = 8h01; / 顯示模式設(shè)置parameter DISP_OFF = 8h03; / 顯示關(guān)閉parameter CLR_SCR = 8h02; / 顯示清屏parameter CURSOR_SET1 = 8h06; / 顯示光標(biāo)移動(dòng)設(shè)置par

14、ameter CURSOR_SET2 = 8h07; / 顯示開(kāi)及光標(biāo)設(shè)置/ 顯示第一行parameter ROW1_ADDR = 8h05; / 寫(xiě)第1行起始地址parameter ROW1_0 = 8h04;parameter ROW1_1 = 8h0C;parameter ROW1_2 = 8h0D;parameter ROW1_3 = 8h0F;parameter ROW1_4 = 8h0E;parameter ROW1_5 = 8h0A;parameter ROW1_6 = 8h0B;parameter ROW1_7 = 8h09;parameter ROW1_8 = 8h08;pa

15、rameter ROW1_9 = 8h18;parameter ROW1_A = 8h19;parameter ROW1_B = 8h1B;parameter ROW1_C = 8h1A;parameter ROW1_D = 8h1E;parameter ROW1_E = 8h1F;parameter ROW1_F = 8h1D;/ 顯示第二行parameter ROW2_ADDR = 8h1C; / 寫(xiě)第2行起始地址parameter ROW2_0 = 8h14;parameter ROW2_1 = 8h15;parameter ROW2_2 = 8h17;parameter ROW2_3

16、= 8h16;parameter ROW2_4 = 8h12;parameter ROW2_5 = 8h13;parameter ROW2_6 = 8h11;parameter ROW2_7 = 8h10;parameter ROW2_8 = 8h30;parameter ROW2_9 = 8h31;parameter ROW2_A = 8h33;parameter ROW2_B = 8h32;parameter ROW2_C = 8h36;parameter ROW2_D = 8h37;parameter ROW2_E = 8h35;parameter ROW2_F = 8h34;reg 5

17、:0 current_state, next_state; / 現(xiàn)態(tài)、次態(tài)/ FSM: always1always (posedge lcd_clk, negedge rst_n) if(!rst_n) current_state = IDLE; else current_state = next_state;/ FSM: always2alwaysbegin case(current_state) IDLE : next_state = DISP_SET; / 寫(xiě)指令,初始化 DISP_SET : next_state = DISP_OFF; DISP_OFF : next_state =

18、CLR_SCR; CLR_SCR : next_state = CURSOR_SET1; CURSOR_SET1 : next_state = CURSOR_SET2; CURSOR_SET2 : next_state = ROW1_ADDR; / 顯示第一行 ROW1_ADDR : next_state = ROW1_0; ROW1_0 : next_state = ROW1_1; ROW1_1 : next_state = ROW1_2; ROW1_2 : next_state = ROW1_3; ROW1_3 : next_state = ROW1_4; ROW1_4 : next_st

19、ate = ROW1_5; ROW1_5 : next_state = ROW1_6; ROW1_6 : next_state = ROW1_7; ROW1_7 : next_state = ROW1_8; ROW1_8 : next_state = ROW1_9; ROW1_9 : next_state = ROW1_A; ROW1_A : next_state = ROW1_B; ROW1_B : next_state = ROW1_C; ROW1_C : next_state = ROW1_D; ROW1_D : next_state = ROW1_E; ROW1_E : next_st

20、ate = ROW1_F; ROW1_F : next_state = ROW2_ADDR; / 顯示第二行 ROW2_ADDR : next_state = ROW2_0; ROW2_0 : next_state = ROW2_1; ROW2_1 : next_state = ROW2_2; ROW2_2 : next_state = ROW2_3; ROW2_3 : next_state = ROW2_4; ROW2_4 : next_state = ROW2_5; ROW2_5 : next_state = ROW2_6; ROW2_6 : next_state = ROW2_7; RO

21、W2_7 : next_state = ROW2_8; ROW2_8 : next_state = ROW2_9; ROW2_9 : next_state = ROW2_A; ROW2_A : next_state = ROW2_B; ROW2_B : next_state = ROW2_C; ROW2_C : next_state = ROW2_D; ROW2_D : next_state = ROW2_E; ROW2_E : next_state = ROW2_F; ROW2_F : next_state = ROW1_ADDR; / default : next_state = IDLE

22、 ; endcaseend/ FSM: always3always (posedge lcd_clk, negedge rst_n)begin if(!rst_n) begin lcd_rs = 0; lcd_data = 8hxx; end else begin / 寫(xiě)lcd_rs case(next_state) IDLE : lcd_rs = 0; / 寫(xiě)指令,初始化 DISP_SET : lcd_rs = 0; DISP_OFF : lcd_rs = 0; CLR_SCR : lcd_rs = 0; CURSOR_SET1 : lcd_rs = 0; CURSOR_SET2 : lcd

23、_rs = 0; / 寫(xiě)數(shù)據(jù),顯示第一行 ROW1_ADDR : lcd_rs = 0; ROW1_0 : lcd_rs = 1; ROW1_1 : lcd_rs = 1; ROW1_2 : lcd_rs = 1; ROW1_3 : lcd_rs = 1; ROW1_4 : lcd_rs = 1; ROW1_5 : lcd_rs = 1; ROW1_6 : lcd_rs = 1; ROW1_7 : lcd_rs = 1; ROW1_8 : lcd_rs = 1; ROW1_9 : lcd_rs = 1; ROW1_A : lcd_rs = 1; ROW1_B : lcd_rs = 1; ROW

24、1_C : lcd_rs = 1; ROW1_D : lcd_rs = 1; ROW1_E : lcd_rs = 1; ROW1_F : lcd_rs = 1; / 寫(xiě)數(shù)據(jù),顯示第二行 ROW2_ADDR : lcd_rs = 0; ROW2_0 : lcd_rs = 1; ROW2_1 : lcd_rs = 1; ROW2_2 : lcd_rs = 1; ROW2_3 : lcd_rs = 1; ROW2_4 : lcd_rs = 1; ROW2_5 : lcd_rs = 1; ROW2_6 : lcd_rs = 1; ROW2_7 : lcd_rs = 1; ROW2_8 : lcd_rs

25、 = 1; ROW2_9 : lcd_rs = 1; ROW2_A : lcd_rs = 1; ROW2_B : lcd_rs = 1; ROW2_C : lcd_rs = 1; ROW2_D : lcd_rs = 1; ROW2_E : lcd_rs = 1; ROW2_F : lcd_rs = 1; endcase / 寫(xiě)lcd_data case(next_state) IDLE : lcd_data = 8hxx; / 寫(xiě)指令,初始化 DISP_SET : lcd_data = 8h38; DISP_OFF : lcd_data = 8h08; CLR_SCR : lcd_data =

26、 8h01; CURSOR_SET1 : lcd_data = 8h06; CURSOR_SET2 : lcd_data = 8h0C; / 寫(xiě)數(shù)據(jù),顯示第一行 ROW1_ADDR : lcd_data = 8h80; ROW1_0 : lcd_data = row1_val127:120; ROW1_1 : lcd_data = row1_val119:112; ROW1_2 : lcd_data = row1_val111:104; ROW1_3 : lcd_data = row1_val103: 96; ROW1_4 : lcd_data = row1_val 95: 88; ROW1_5 : lcd_data = row1_val 87: 80; ROW1_6 : lcd_data = row1_val 79: 72; ROW1_7 : lcd_data = row1_val 71: 64; ROW1_8 : lcd_data = row1_val 63: 56; ROW1_9 : lcd_data = row1_val 55: 48; ROW1_A : lcd_data = row1_val 47: 40; ROW1_B : lcd_data = row1_val 39: 3

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論