LCD1602液晶顯示實(shí)驗(yàn)(DOC)_第1頁
LCD1602液晶顯示實(shí)驗(yàn)(DOC)_第2頁
免費(fèi)預(yù)覽已結(jié)束,剩余14頁可下載查看

下載本文檔

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

文檔簡介

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

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

3、RSR/WD7D6D5D4D3D2D1D01清顯示00000000012光標(biāo)返回000000001*3置輸入模式00000001I/DS4顯示開/關(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寫數(shù)到CGRAM或DDRAM)10要寫的數(shù)據(jù)內(nèi)容11從CGRAM或DDRAM讀數(shù)11讀出的數(shù)據(jù)內(nèi)容1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表1-4所示:表1-4控制命令表1為高電平、0為1602液晶模塊的讀寫操作、屏幕和

4、光標(biāo)的操作都是通過指令編程來實(shí)現(xiàn)的。(說明: 低電平)讀寫操作時(shí)序如圖1-5和1-6所示:41.1.4 1602LCD的RAM地址映射及標(biāo)準(zhǔn)字庫表液晶顯示模塊是一個(gè)慢顯示器件,所以,在執(zhí)行每條指令之前,一定要確認(rèn)模塊的忙標(biāo)志為低電平, 表示不忙,否則此指令失效。要顯示字符時(shí),要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符, 圖1-7是1602的內(nèi)部顯示地址。LCD16 字鬆行00i01 02 03 04 05 06 07 0809 o AOBoc!00 0E OF 1027404143 44 45 46 47 4849|4A4B4D 4E 4F5067圖1-7 1602LCD內(nèi)部顯示地址例

5、如,第二行第一個(gè)字符的地址是40H,那么是否直接寫入40H就可以將光標(biāo)定位在第二行第一個(gè) 字符的位置呢?這樣不行,因?yàn)閷懭腼@示地址時(shí)要求最高位D7恒定為高電平1,所以實(shí)際寫入的數(shù)據(jù)應(yīng)該是01000000B(40H)+10000000B(80H)=11000000B(C0H)。在對液晶模塊的初始化中,要先設(shè)置其顯示模式,在液晶模塊顯示字符時(shí)光標(biāo)是自動(dòng)右移的,無需 人工干預(yù)。每次輸入指令前都要判斷液晶模塊是否處于忙的狀態(tài)。1602液晶模塊內(nèi)部的字符發(fā)生存儲(chǔ)器(CGROM)已經(jīng)存儲(chǔ)了160個(gè)不同的點(diǎn)陣字符圖形,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號(hào)、和日文假名等,每一個(gè)字符都有一個(gè)固定

6、的代碼, 比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時(shí)模塊把地址41H中的點(diǎn)陣字符圖形顯示出 來,我們就能看到字母 “A”因?yàn)?602識(shí)別的是ASCII碼,試驗(yàn)可以用ASCII碼直接賦值,編程中還可以用字符型常量或變量賦 值,如“A”。1602通過D0D7的8位數(shù)據(jù)端傳輸數(shù)據(jù)和指令。1.1.5 1602LCD的一般初始化(復(fù)位)過程延時(shí)15mS寫指令38H(不檢測忙信號(hào))延時(shí)5mS5寫指令38H(不檢測忙信號(hào))延時(shí)5mS寫指令38H(不檢測忙信號(hào))以后每次寫指令、讀/寫數(shù)據(jù)操作均需要檢測忙信號(hào)寫指令38H:顯示模式設(shè)置寫指令08H:顯示關(guān)閉寫指令01H:顯示清屏寫指令0

7、6H:顯示光標(biāo)移動(dòng)設(shè)置寫指令OCH:顯示開及光標(biāo)設(shè)置1.2任務(wù)1及其原理任務(wù)1:更改led上顯示的字符。通過更改wire 127:0 row1_val,wire 127:0 row2_val的賦值即可,注意保證“”內(nèi)的字符數(shù)包括空格共16位。1.3任務(wù)2及其原理任務(wù)2:將“LCD1602驅(qū)動(dòng)模塊”文件與“LCD1602驅(qū)動(dòng)測試模塊”文件合并成為一個(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)過程中按下復(fù)位鍵循環(huán)

8、可從0重新開始。完成本次的實(shí)驗(yàn)想法是將“LCD1602驅(qū)動(dòng)測試模塊”文件中wire 127:0 row1_val,wire 127:0row2_val變量進(jìn)行改動(dòng),將row1_val原本賦予的字符替換為一個(gè)變量,設(shè)定新的時(shí)鐘,即循環(huán)變換的間隔時(shí)間,再通過條件語句控制循環(huán)。使能鍵的控制原理是通過對循環(huán)變換的條件進(jìn)行操作實(shí)現(xiàn)的,即當(dāng)按鍵使能時(shí)循環(huán)開始,反之,則從0開始。62.實(shí)驗(yàn)流程圖09循環(huán)變換流程圖開始定義輸入輸出變量及類型led 液晶屏初 始化定義 a=8h30;i=0將 a 賦值給顯示定義字符結(jié)束3.實(shí)驗(yàn)程序3.1任務(wù)1程序程序更改部分:wire 127:0 row1_val = liu

9、wupe ngwire 127:0 row2_val = 2009081206 ”;row1_val 低 8 位a=a+1;i=i+1;否73.2任務(wù)2程序?qū)y試模塊中的驅(qū)動(dòng)部分,兩個(gè)文件的對應(yīng)命名只留其一,合并兩文件,即以下部分8/例化LCD1602驅(qū)動(dòng)lcd1602_drive uO(.clk(CLOCK_50M), rst_n(Q_KEY), .row1_val(row1_val), .row2_val(row2_val),cd_data(LCD1602_DATA),cd_e(LCD1602_E),cd_rs(LCD1602_RS),cd_rw(LCD1602_RW);完整程序請參見附件

10、:13.3任務(wù)3程序in putCLOCK_50M,/板載時(shí)鐘25MHzin putQ_KEY,/板載按鍵RSToutput 7:0 LCD1602_DATA,/ LCD1602數(shù)據(jù)總線outputLCD1602_E,/ LCD1602使能outputLCD1602_RS,/ LCD1602指令數(shù)據(jù)選擇outputLCD1602_RW,/ LCD1602讀寫選擇outputSEL0,/ LCD1602讀寫選擇outputSEL1,/ LCD1602讀寫選擇outputSEL2/ LCD1602讀寫選擇in putkey,/使能控制鍵改動(dòng)模塊:LCD1602驅(qū)動(dòng)測試模塊,加重處為修改、添加部分m

11、odule lcd1602_test();reg 127:0 row1_val;wire 127:0 row2_val =;/將第二行賦值都是空格,實(shí)驗(yàn)時(shí)顯示為空reg 7:0 a;reg 3:0 i;reg 25:0 ent;reg en;assig n SEL0 = 1b0;assig n SEL1 = 1b0;assig n SEL2 = 1b1;/將原本的wire型改為reg型/a變化控制reg 127:0 row1_/分頻用/使能控制,保證其可變always (posedge CLOCK_50M, negedge Q_KEY)if (!Q_KEY) cnt = 0;else cnt

12、= cnt + 1b1;wire lcd_clk = cnt25;/分頻模塊always (a)beginrow1_val7:0=a;9end/將a賦給row1_val7:0的低8位always (n egedge key)beginif (en=O) en=1;elseen=0;end/使能控制模塊,下降沿有效always (posedge lcd_clk)if (en)if(i=8)begina=a+1;i=i+1;endelsebegini=0;a=8h30;endelsea=8h30;II/例化LCD1602驅(qū)動(dòng)lcd1602_driveu0( .clk(CLOCK_50M), rst

13、_n(Q_KEY),II LCD1602 In put Value.row1_val(row1_val),.row2_val(row2_val),II LCD1602 In terfacecd_data(LCD1602_DATA),cd_e(LCD1602_E),cd_rs(LCD1602_RS),cd_rw(LCD1602_RW);en dmodule4.管腳分配4.1任務(wù)2管教分配通過條件控制語句實(shí)現(xiàn)09的循環(huán)變換10SELOOutputPIN_144dSEL1OutputPIN.対5aSEL2OutputPIN 1MAdkInputPIN 23aIcd dat37OutputPIN-13

14、0lcd data6OutputPIN_11alcd data5OutputPIN 10lcd data4OutputPIN 80lcd data3jOutputPIN GIcd dat3l2OutputPIN-5lcd datalOutputPIM_4lcd data0OutputPIN 3IcdjeOutputPIN 15led客Outputlcd mOutputPIN 30rstjiInputPIN_564.2任務(wù)3管教分配IVCLOCK 5QMInputPIN工LCD1602 DATA(7|OutputPIN 13P LJCD11502JJATA6OutputPIN UQLCD1602

15、 DATA5OutputPIN 10e LCD1602_DATAOutputPIN 3aLCD1602 DATA3OutputP1N 5O LCD1602_DATA2OutputPIN 5 LCD1602_PATAlOutputPIN 4LCD1602 DATA0OutputPIN 3LCD1602_EOutputPIN 150 LJCD160I2RSOutputPIN少金LCD1602_RWOutputPIN_30M Q_KEInputPIN 56 SELOOutputPIN 144e SELLOutputP1N 145 SELZOutputPIN.146A keyInputPIN 106令

16、kyUnknownPIN 405.實(shí)驗(yàn)結(jié)果5.1任務(wù)1實(shí)驗(yàn)結(jié)果修改程序后,液晶屏第一行顯示liu wupeng ,第二行顯示2009081206 5.2任務(wù)2實(shí)驗(yàn)結(jié)果文件合并后,顯示內(nèi)容仍與原始程序相同。5.3任務(wù)3實(shí)驗(yàn)結(jié)果液晶屏第一行最后一位可實(shí)現(xiàn)09的循環(huán)變換,撥動(dòng)復(fù)位鍵,計(jì)數(shù)從0重新開始。116.實(shí)驗(yàn)心得通過本次實(shí)驗(yàn),我了解了LCD-1602的構(gòu)成及使用方法, 能夠通過編程顯示字符。 在完成課堂任務(wù)“實(shí) 現(xiàn)某一位09循環(huán)變換”時(shí),起初由于沒有掌握LCD的工作原理,出現(xiàn)了問題,即09快速變化,無法控制其速度,經(jīng)過對程序及實(shí)驗(yàn)原理的研究,最后完成了任務(wù)。FPGA實(shí)驗(yàn)是鍛煉編程能力、邏輯思維能

17、力的一門很好的課程,我現(xiàn)在所欠缺的便是縝密的思維及查錯(cuò)的能力,還望在以后實(shí)驗(yàn)中提高。通過這次實(shí) 驗(yàn),學(xué)到了很多東西,體會(huì)到了自己實(shí)現(xiàn)一個(gè)程序功能的小小喜悅,也認(rèn)識(shí)到了自己只是FPGA道路上的新手,還有很多未知的知識(shí)需要學(xué)習(xí)。真正學(xué)習(xí)的歷程需要在課下多下功夫,希望通過這學(xué)期的學(xué)習(xí)自己能熟練掌握一些編程的技術(shù),培養(yǎng)良好的思維模式。附件:1module heb ing(in putclk,/ 50MHz時(shí)鐘in putrst_n./復(fù)位信號(hào)in put127:0 row1_val,/第一行字符in put127:0 row2_val,/第二行字符/ LCD1602 In terfaceoutputS

18、EL0,/ LCD1602讀寫選擇outputSEL1,/ LCD1602讀寫選擇outputSEL2,/ LCD1602讀寫選擇wire 127:0 row1_val = liu wupeng ;wire 127:0 row2_val = 2009081206 ”;assig n SEL0 = 1b0;assig n SEL1 = 1b0;assign SEL2 = 1b1;/ +/ LCD1602 In terfaceoutput reg 7:0 lcd_data,/outputlcd_e,/output reglcd_rs,/outputlcd_rw/丿;/ 0 (8*16-1)=128

19、/ 16bits- 0123456789ABCDEF 數(shù)據(jù)總線使能信號(hào)指令、數(shù)據(jù)選擇讀、寫選擇12/分頻模塊 開始/ +reg 15:0 ent;/計(jì)數(shù)子always (posedge elk, n egedge rst_n)if (!rst_ n)ent = 0;elseent = ent + 1b1;/ 500Khz 1MHz皆可wire led_elk = ent15;/ (2A15 / 50M) = 1.31ms/-/分頻模塊結(jié)束/-/ +LCD1602驅(qū)動(dòng)模塊開始/ + /格雷碼編碼:共40個(gè)狀態(tài)parameter IDLE = 8h00;/寫指令,初始化parameter DISP

20、_SET =:8h01;parameter DISP_OFF =:8h03;parameter CLR_SCR =8h02;parameter CURSOR_SET1 = 8h06;parameter CURSOR_SET2 = 8h07;/顯示第仃parameter ROW1_ADDR=8h05;parameter ROW1_0=8h04;parameter ROW1_1=8h0C;parameter ROW1_2=8h0D;parameter R0W1_3=8h0F;parameter ROW1_4=8h0E;parameter ROW1_5=8h0A;parameter ROW1_6=8

21、h0B;parameter R0W1_7=8h09;parameter R0W1_8=8h08;parameter R0W1_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;parameter ROW2_0=8h14;parameter ROW2_1=8h15;/顯示模式設(shè)置/顯示關(guān)閉/顯示清屏/顯示

22、光標(biāo)移動(dòng)設(shè)置/顯示開及光標(biāo)設(shè)置/寫第1行起始地址/寫第2行起始地址13parameter ROW2_2= 8h17;parameter ROW2_3= 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 R0W2_A= 8h33;parameter ROW2_B= 8h32;parameter R0W2_C= 8h36;parameter R0

23、W2_D= 8h37;parameter R0W2_E= 8h35;parameter R0W2_F= 8h34;reg 5:0 curre nt_state, n ext_state; /現(xiàn)態(tài)、次態(tài)/ FSM: always1always (posedge lcd_clk, n egedge rst_n)if(!rst_n) curre nt_state = IDLE;else curre nt_state = n ext_state;/ FSM: always2alwaysbegincase(curre nt_state)IDLE : next_state = DISP_SET;/寫指令,

24、初始化DISP_SET : n ext_state = DISP_OFF;DISP_OFF : next_state = CLR_SCR;CLR_SCR : n ext_state = CURSOR_SET1;CURSOR_SET1 : n ext_state = CURSOR_SET2;CURSOR_SET2 : n ext_state = ROW1_ADDR;/顯示第一行ROW1_ADDR : n ext_state = ROW1_0;R0W1_0:next_state=:R0W1_1;R0W1 _1:next_state=:R0W1_2;R0W1 _2:next_state=:R0W1_

25、3;R0W1 _3:next_state=:R0W1_4;R0W1 _4:next_state=:R0W1_5;R0W1 _5:next_state=:R0W1_6;R0W1 _6:next_state=:R0W1_7;R0W1 _7:next_state=:R0W1_8;R0W1 _8:next_state=:R0W1_9;R0W1 _9:next_state=:ROW1_A;R0W1 _A:next_state=ROW1_BR0W1 _B:next_state=ROW1_CR0W1 _C:n ext_state =ROW1_DR0W1 _D:n ext_state =ROW1_ER0W1_

26、E : n ext_state = R0W1_F;14R0W1_F : n ext_state = R0W2_ADDR;/顯示第二行R0W2_ADDR : n ext_state = ROW2_0;ROW2_0:next_state=:R0W2_1;R0W2_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;ROW2_7:next_state=:

27、ROW2_8;ROW2_8:next_state=:ROW2_9;ROW2_9:next_state=:R0W2_A;R0W2_A:next_state=R0W2_B;R0W2_B:next_state=R0W2_C;R0W2_C:n ext_state :=R0W2_D;R0W2_D:n ext_state :=R0W2_E;R0W2_E:next_state=R0W2_F;R0W2_F:next_state=R0W1_ADDR/default : n ext_state = IDLE ;endcase end/ FSM: always3always (posedge lcd_clk, n

28、egedge rst_n) beginif(!rst_n)beginlcd_rs = 0;lcd_data = 8hxx;endelsebegin/寫lcd_rscase (n ext_state)IDLE : lcd_rs = 0;/寫指令,初始化DISP_SET : lcd_rs = 0;DISP_OFF : lcd_rs = 0;CLR_SCR : lcd_rs = 0;CURSOR_SET1 : lcd_rs = 0;CURSOR_SET2 : lcd_rs = 0;/寫數(shù)據(jù),顯示第一行R0W1_ADDR : lcd_rs = 0;15ROW1_0:lcd_ rs = 1;ROW1_1

29、: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;ROW1_C:lcd_ _rs = 1;ROW1_D:lcd_ _rs = 1;ROW1_E:lcd_ rs = 1;ROW1_F:lcd_ rs = 1;/寫數(shù)據(jù),顯示第二行ROW2_ADDR

30、 : 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=1;ROW2_9:lcd_rs=1;ROW2_A:Icd- _rs = 1;ROW2_B:Icd- _rs = 1;ROW2_C:lcd _rs = 1;ROW2_D:lcd _rs = 1;ROW2_E:lcd. _rs = 1;ROW2_F:lcd. _rs = 1;endcase/

31、寫lcd_data case (n ext_state)IDLE : lcd_data = 8hxx;/寫指令,初始化DISP_SET : lcd_data = 8h38;DISP_OFF : lcd_data = 8h08;CLR_SCR : lcd_data = 8h01;CURSOR_SET1 : lcd_data = 8h06;CURSOR_SET2 : lcd_data = 8hOC;/寫數(shù)據(jù),顯示第一行16R0W1_ADDR : lcd_data = 8h80;ROW1_0: lcd_data = row1_val127:120;R0W1_1: lcd_data = row1_val119:112;R0W1_2: lcd_data = row1_val111:104;R0W1_3: lcd_data = row1_val103: 96;R0W1_4: lcd_data = row1_val 95: 88;ROW1_5: lcd_data = row1_val 8

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論