版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
v1.0可編寫可改正FPGA課程設(shè)計(jì)報(bào)告題目:鑒于CPLD的1602字符液晶顯示系統(tǒng)設(shè)計(jì)院系:信息與電氣工程學(xué)院班級(jí):電子信息工程學(xué)號(hào):學(xué)生姓名:指導(dǎo)教師:成績(jī):2011年7月1v1.0可編寫可改正鑒于CPLD的1602字符液晶顯示系統(tǒng)設(shè)計(jì)一.設(shè)計(jì)題目:鑒于CPLD的1602字符液晶顯示系統(tǒng)設(shè)計(jì)二.設(shè)計(jì)要求技術(shù)指標(biāo):要求用1602液晶顯示字符;顯示內(nèi)容:學(xué)號(hào)+英文姓名;顯示方式:流動(dòng)顯示,開關(guān)控制字符流動(dòng)速度及方向;擁有暫停和清屏的功能;三.設(shè)計(jì)平臺(tái):QUARTUSII軟件MARS-1270CPLD1602液晶四.設(shè)計(jì)思路與設(shè)計(jì)步驟:液晶指令介紹:要想控制1602液晶顯示字符,第一需要弄清楚1602有那些可控管腳,有哪些控制命令,怎樣控制其顯示,怎樣控制其挪動(dòng)及怎樣控制其挪動(dòng)速度及方向等,下邊第一介紹一下我所要用的指令及管腳等。(1)接口說(shuō)明:2v1.0可編寫可改正(2)基本操作時(shí)序:A.讀狀態(tài):輸入:RS=L,RW=H,E=H,輸出:DB0--DB7=狀態(tài)字B.寫指令:輸入:RS=L,RW=L,E=降落沿脈沖,DBO--DB7=指令碼,輸出:無(wú)C.讀數(shù)據(jù):輸入:RS=H,RW=H,E=H,輸出:DB0--DB7=數(shù)據(jù)D.寫數(shù)據(jù):輸入:RS=H,RW=L,E=降落沿脈沖,DBO--DB7=數(shù)據(jù),輸出:無(wú)(3)指令集及其設(shè)置說(shuō)明:清屏指令:功能:<1>消除液晶顯示器馬上DDRAM的內(nèi)容所有填入"空白"的ASCII碼20H;<2>光標(biāo)歸位,馬上光標(biāo)撤回液晶顯示屏的左上方;<3>將地點(diǎn)計(jì)數(shù)器(AC)的值設(shè)為0。進(jìn)入設(shè)置模式指令:功能:設(shè)定每次定入1位數(shù)據(jù)后光標(biāo)的移位方向,而且設(shè)定每次寫入的一個(gè)字符能否挪動(dòng)。參數(shù)設(shè)定的狀況以下所示:位名設(shè)置I/D0=寫入新數(shù)據(jù)后光標(biāo)左移1=寫入新數(shù)據(jù)后光標(biāo)右移S0=寫入新數(shù)據(jù)后顯示屏不移1=寫入新數(shù)據(jù)后顯示屏整體右移1字符C.顯示開關(guān)控制指令:3v1.0可編寫可改正功能:控制顯示器開/關(guān)、光標(biāo)顯示/封閉以及光標(biāo)能否閃耀。參數(shù)設(shè)定的情況以下:位名設(shè)置D0=顯示功能關(guān)1=顯示功能開C0=無(wú)光標(biāo)1=有光標(biāo)B0=光標(biāo)閃耀1=光標(biāo)不閃耀D.設(shè)定顯示屏或光標(biāo)挪動(dòng)方向指令:功能:使光標(biāo)移位或使整個(gè)顯示屏幕移位。參數(shù)設(shè)定的狀況以下:S/CR/L設(shè)定狀況00光標(biāo)左移1格,且AC值減101光標(biāo)右移1格,且AC值加110顯示器上字符所有左移一格,但光標(biāo)不動(dòng)11顯示器上字符所有右移一格,但光標(biāo)不動(dòng)功能設(shè)定指令:功能:設(shè)定數(shù)據(jù)總線位數(shù)、顯示的行數(shù)及字型。參數(shù)設(shè)定的狀況以下:位名設(shè)置4v1.0可編寫可改正DL0=數(shù)據(jù)總線為4位1=數(shù)據(jù)總線為8位N0=顯示1行1=顯示2行F0=5×7點(diǎn)陣/每字符1=5×10點(diǎn)陣/每字符F.設(shè)定CGRAM地點(diǎn)指令:功能:設(shè)定下一個(gè)要存入數(shù)據(jù)的CGRAM的地點(diǎn)。DB5DB4DB3為字符號(hào),也就是你未來(lái)要顯示該字符時(shí)要用到的字符地點(diǎn)。(000~111)(能定義八個(gè)字符)DB2DB1DB0為行號(hào)。(000~111)(八行)G.設(shè)定DDRAM地點(diǎn)指令;功能:設(shè)定下一個(gè)要存入數(shù)據(jù)的DDRAM的地點(diǎn)。H.數(shù)據(jù)寫入DDRAM或CGRAM指令:功能:<1>將字符碼寫入DDRAM,以使液晶顯示屏顯示出相對(duì)應(yīng)的字符;<2>將使用者自己設(shè)計(jì)的圖形存入CGRAM。5v1.0可編寫可改正DB7DB6DB5可為任何數(shù)據(jù),一般取“000”。DB4DB3DB2DB1DB0對(duì)應(yīng)于每行5點(diǎn)的字模數(shù)據(jù)。設(shè)計(jì)流程:弄懂1602中各樣管腳及其控制方法以及各樣指令的指令碼后,就能夠進(jìn)行程序的編寫了,第一整理一下編寫流程:初始化設(shè)置狀態(tài)狀態(tài)變換3.設(shè)計(jì)源程序:libraryIEEE;useuseuseentitylcd_1602isPort(clk:instd_logic;reset:instd_logic;lcdrs:outstd_logic;--讀或?qū)懼噶顋數(shù)據(jù)控制端lcdrw:outstd_logic;--讀|寫控制端lcden:bufferstd_logic;--使能端data:outstd_logic_vector(7downto0);key1:instd_logic;--撥碼開關(guān)控制挪動(dòng)與不動(dòng);key2:instd_logic);6v1.0可編寫可改正endlcd_1602;ArchitectureBehavioraloflcd_1602isTypestateis(set_qingping,set_nobusy,set_cursor,set_switch,set_ddram,write_data,set_ddram1,write_data1,set_ddram2,write_data2,set_ddram3,write_data3,set_ddram4,write_data4,set_ddram5,write_data5,set_ddram6,write_data6,set_ddram7,write_data7,set_ddram8,write_data8,set_ddram9,write_data9,set_ddram10,write_data10,set_ddram11,write_data11,set_ddram12,write_data12,set_ddram13,write_data13,set_ddram14,write_data14,set_ddram15,write_data15,set_ddram17,write_data17,set_ddram16,write_data16,set_ddram18,write_data18,set_ddram19,write_data19,set_ddram20,write_data20,set_ddram21,write_data21,set_ddram22,write_data22,set_ddram23,write_data23,set_cgram,write_cgram,set_ddram24,write_data24,set_ddram25,write_data25,shift_cur,shift_display);--定義各樣狀態(tài)typeram2isarray(0to7)ofstd_logic_vector(7downto0);constantcgram:ram2:=(("00011111"),("00000100"),("00000100"),("00011111"),("00000100"),("00000100"),("00000100"),("00011111"));把“王”字字摹寫入數(shù)組;signalcurrent_state:state;signalclkcnt:std_logic_vector(18downto0);Constantdivcnt:std_logic_vector(18downto0):="000000";signalclkdiv:std_logic;signaltc_clkcnt:std_logic;signalclk_int:std_logic;signalclkdiv2:std_logic;signalclkdiv3:std_logic;7v1.0可編寫可改正signalclkdiv6:std_logic;beginlcdrw<='0';--讀寫控制端設(shè)為寫有效process(clk,reset)Beginif(reset='0')thenclkcnt<="0000000000000000000";elsif(clk'eventandclk='1')thenif(clkcnt=divcnt)thenclkcnt<="0000000000000000000";elseclkcnt<=clkcnt+1;--對(duì)系統(tǒng)時(shí)鐘進(jìn)行分頻使其工作周期為endif;endif;endprocess;tc_clkcnt<='1'whenclkcnt=divcntelse'0';--tc_clkcnt為process(tc_clkcnt,reset)beginif(reset='0')thenclkdiv<='0';elsif(tc_clkcnt'eventandtc_clkcnt='1')thenclkdiv<=notclkdiv;--進(jìn)一步分頻使clkdiv=2*;endif;endprocess;8v1.0可編寫可改正process(clkdiv,reset)beginif(reset='0')thenclk_int<='0';elsif(clkdiv'eventandclkdiv='1')thenclk_int<=notclk_int;--再進(jìn)一步分頻使clk_int=4*endif;endprocess;process(clk_int,reset)beginif(reset='0')thenclkdiv2<='0';--再進(jìn)一步分頻使clkdiv2=8*elsif(clk_int'eventandclk_int='1')thenclkdiv2<=notclkdiv2;endif;endprocess;process(clkdiv2,reset)beginif(reset='0')thenclkdiv3<='0';--再進(jìn)一步分頻使clkdiv3=16*elsif(clkdiv2'eventandclkdiv2='1')thenclkdiv3<=notclkdiv3;endif;endprocess;process(clkdiv3,reset)9v1.0可編寫可改正beginif(reset='0')thenclkdiv6<='0';--仍是進(jìn)一步分頻使clkdiv6=32*elsif(clkdiv3'eventandclkdiv3='1')thenclkdiv6<=notclkdiv6;endif;endprocess;process(clkdiv3,reset)beginif(reset='0')thenlcden<='0';elsif(clkdiv3'eventandclkdiv3='0')thenlcden<=notlcden;--設(shè)置使能信號(hào)頻次endif;endprocess;附注:進(jìn)行多次分頻的目地是為了使字符顯示速度及挪動(dòng)速度等適合,便于察看。control:process(clk,reset,current_state)variablecnt1:std_logic_vector(3downto0);--控制各樣狀態(tài)及其變換beginifreset='0'thencurrent_state<=set_nobusy;cnt1:=(others=>'1');lcdrs<='0';elsifrising_edge(clkdiv6)then使用clkdiv6是為了和lcden符合,達(dá)到使能目地current_state<=current_state;10v1.0可編寫可改正lcdrs<='0';casecurrent_stateiswhenset_nobusy=>--測(cè)試安閑狀態(tài)data<="00111000";--38Hcurrent_state<=set_cursor;whenset_cursor=>data<="00000110";--進(jìn)入模式設(shè)置狀態(tài)寫入新數(shù)據(jù)后光標(biāo)右移current_state<=set_switch;whenset_switch=>data<="00001100";--顯示開關(guān)控制狀態(tài);顯示功能開current_state<=set_qingping;whenset_qingping=>data<="00000001";--清屏指令current_state<=set_ddram;whenset_ddram=>data<="";--設(shè)置要顯示數(shù)據(jù)的地點(diǎn):第1行第1列80Hcurrent_state<=write_data;whenwrite_data=>lcdrs<='1';data<="00110001";--設(shè)置要顯示的數(shù)據(jù)1current_state<=set_ddram1;whenset_ddram1=>lcdrs<='0';--設(shè)置要顯示數(shù)據(jù)的地點(diǎn):第1行第2列81H11v1.0可編寫可改正data<="";current_state<=write_data1;whenwrite_data1=>lcdrs<='1';--設(shè)置要顯示的數(shù)據(jù)2data<="00110010";current_state<=set_ddram2;whenset_ddram2=>lcdrs<='0';--設(shè)置要顯示數(shù)據(jù)的地點(diǎn):第1行第3列82Hdata<="";--82Hcurrent_state<=write_data2;whenwrite_data2=>lcdrs<='1';--設(shè)置要顯示的數(shù)據(jù)8data<="00111000";current_state<=set_ddram3;whenset_ddram3=>lcdrs<='0';--設(shè)置要顯示數(shù)據(jù)的地點(diǎn):第2行第4列83Hdata<="";current_state<=write_data3;whenwrite_data3=>lcdrs<='1';--設(shè)置要顯示的數(shù)據(jù)8data<="00111000";current_state<=set_ddram4;whenset_ddram4=>lcdrs<='0';--設(shè)置要顯示數(shù)據(jù)的地點(diǎn):第1行第5列84Hdata<="";--82H12v1.0可編寫可改正current_state<=write_data4;whenwrite_data4=>lcdrs<='1';--設(shè)置要顯示的數(shù)據(jù)4data<="00110100";current_state<=set_ddram5;whenset_ddram5=>lcdrs<='0';data<="";--設(shè)置要顯示數(shù)據(jù)的地點(diǎn):第1行第6列85Hcurrent_state<=write_data5;whenwrite_data5=>lcdrs<='1';data<="00110000";--設(shè)置要顯示的數(shù)據(jù)0current_state<=set_ddram6;whenset_ddram6=>lcdrs<='0';data<="";--設(shè)置要顯示數(shù)據(jù)的地點(diǎn):第1行第7列86Hcurrent_state<=write_data6;whenwrite_data6=>lcdrs<='1';--設(shè)置要顯示的數(shù)據(jù)1data<="00110001";current_state<=set_ddram7;whenset_ddram7=>lcdrs<='0';data<="";--設(shè)置要顯示數(shù)據(jù)的地點(diǎn):第1行第8列87H13v1.0可編寫可改正current_state<=write_data7;whenwrite_data7=>lcdrs<='1';--設(shè)置要顯示的數(shù)據(jù)5data<="00110101";current_state<=set_ddram8;whenset_ddram8=>lcdrs<='0';data<="";--設(shè)置要顯示數(shù)據(jù)的地點(diǎn):第1行第9列88Hcurrent_state<=write_data8;whenwrite_data8=>lcdrs<='1';data<="00101101";--設(shè)置要顯示的數(shù)據(jù)-current_state<=set_ddram9;whenset_ddram9=>lcdrs<='0';data<="";--設(shè)置要顯示數(shù)據(jù)的地點(diǎn):第1行第10列89Hcurrent_state<=write_data9;whenwrite_data9=>lcdrs<='1';data<="01011010";--設(shè)置要顯示的數(shù)據(jù)Zcurrent_state<=set_ddram10;whenset_ddram10=>lcdrs<='0';data<="";--設(shè)置要顯示數(shù)據(jù)的地點(diǎn):第1行第11列90Hcurrent_state<=write_data10;14v1.0可編寫可改正whenwrite_data10=>lcdrs<='1';data<="01000111";--設(shè)置要顯示的數(shù)據(jù)Gcurrent_state<=set_ddram11;whenset_ddram11=>lcdrs<='0';data<="";--設(shè)置要顯示數(shù)據(jù)的地點(diǎn):第1行第12列91Hcurrent_state<=write_data11;whenwrite_data11=>lcdrs<='1';data<="01001100";--設(shè)置要顯示的數(shù)據(jù)Lcurrent_state<=set_ddram12;whenset_ddram12=>lcdrs<='0';data<="";--設(shè)置要顯示數(shù)據(jù)的地點(diǎn):第2行第1列C0Hcurrent_state<=write_data12;whenwrite_data12=>lcdrs<='1';--設(shè)置要顯示的數(shù)據(jù)1data<="00110001";current_state<=set_ddram13;whenset_ddram13=>lcdrs<='0';data<="";--設(shè)置要顯示數(shù)據(jù)的地點(diǎn):第2行第2列C1Hcurrent_state<=write_data13;15v1.0可編寫可改正whenwrite_data13=>lcdrs<='1';--設(shè)置要顯示的數(shù)據(jù)2data<="00110010";current_state<=set_ddram14;whenset_ddram14=>lcdrs<='0';data<="";--設(shè)置要顯示數(shù)據(jù)的地點(diǎn):第2行第3列C2Hcurrent_state<=write_data14;whenwrite_data14=>lcdrs<='1';--設(shè)置要顯示的數(shù)據(jù)8data<="00111000";current_state<=set_ddram15;whenset_ddram15=>lcdrs<='0';data<="";--設(shè)置要顯示數(shù)據(jù)的地點(diǎn):第2行第4列C3Hcurrent_state<=write_data15;whenwrite_data15=>lcdrs<='1';data<="00111000";--設(shè)置要顯示的數(shù)據(jù)8current_state<=set_ddram16;whenset_ddram16=>lcdrs<='0';data<="";--設(shè)置要顯示數(shù)據(jù)的地點(diǎn):第2行第5列C4Hcurrent_state<=write_data16;whenwrite_data16=>16v1.0可編寫可改正lcdrs<='1';--設(shè)置要顯示的數(shù)據(jù)4data<="00110100";current_state<=set_ddram17;whenset_ddram17=>lcdrs<='0';data<="";--設(shè)置要顯示數(shù)據(jù)的地點(diǎn):第2行第6列C5Hcurrent_state<=write_data17;whenwrite_data17=>lcdrs<='1';--設(shè)置要顯示的數(shù)據(jù)0data<="00110000";current_state<=set_ddram18;whenset_ddram18=>lcdrs<='0';data<="";--設(shè)置要顯示數(shù)據(jù)的地點(diǎn):第2行第7列C6Hcurrent_state<=write_data18;whenwrite_data18=>lcdrs<='1';--設(shè)置要顯示的數(shù)據(jù)2data<="00110010";current_state<=set_ddram19;whenset_ddram19=>lcdrs<='0';data<="";--設(shè)置要顯示數(shù)據(jù)的地點(diǎn):第2行第8列C7H17v1.0可編寫可改正current_state<=write_data19;whenwrite_data19=>lcdrs<='1';--設(shè)置要顯示的數(shù)據(jù)8data<="00111000";current_state<=set_ddram20;whenset_ddram20=>lcdrs<='0';data<="";--設(shè)置要顯示數(shù)據(jù)的地點(diǎn):第2行第9列C8Hcurrent_state<=write_data20;whenwrite_data20=>lcdrs<='1';--設(shè)置要顯示的數(shù)據(jù)-data<="00101101";current_state<=set_ddram21;whenset_ddram21=>lcdrs<='0';data<="";--設(shè)置要顯示數(shù)據(jù)的地點(diǎn):第2行第10列C9Hcurrent_state<=write_data21;whenwrite_data21=>lcdrs<='1';--設(shè)置要顯示的數(shù)據(jù)Xdata<="01011000";current_state<=set_ddram22;whenset_ddram22=>lcdrs<='0';data<="";--設(shè)置要顯示數(shù)據(jù)的地點(diǎn):第2行第11列CAH18v1.0可編寫可改正current_state<=write_data22;whenwrite_data22=>lcdrs<='1';--設(shè)置要顯示的數(shù)據(jù)Hdata<="01001000";current_state<=set_ddram23;whenset_ddram23=>lcdrs<='0';data<="";--設(shè)置要顯示數(shù)據(jù)的地點(diǎn):第2行第12列CBHcurrent_state<=write_data23;whenwrite_data23=>lcdda<='1';--設(shè)置要顯示的數(shù)據(jù)Ydata<="01011001";current_state<=set_cgram;whenset_cgram=>lcdda<='0';data<="01000000";--設(shè)定CGRAM地點(diǎn)指令;current_state<=write_cgram;whenwrite_cgram=>lcdda<='1';cnt1:=cnt1+1;--向CGRAM中寫入“王”字;data<=cgram(conv_integer(cnt1));ifcnt1="1000"thencurrent_state<=set_ddram24;endif;19v1.0可編寫可改正whenset_ddram24=>lcdda<='0';--設(shè)定王字的顯示地點(diǎn)第1行第13列92Hdata<="";current_state<=write_data24;whenwrite_data24=>lcdda<='1';--設(shè)置要顯示的王字data<="00000000";current_state<=set_ddram25;whenset_ddram25=>lcdda<='0';--設(shè)定王字的顯示地點(diǎn)第2行第13列CCHdata<="";current_state<=write_data25;whenwrite_data25=>lcdda<='1';--設(shè)置要顯示的王字data<="00000000";ifkey1='1'thencurrent_state<=shift_cur;elsifkey2='1'thencurrent_state<=shift_d
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 34942-2025網(wǎng)絡(luò)安全技術(shù)云計(jì)算服務(wù)安全能力評(píng)估方法
- 護(hù)士崗位技能考試題及答案
- 電子商務(wù)專業(yè)期末試卷及答案資源
- 建筑給排水考試大全及答案(題庫(kù))
- 螞蟻電商考試試題及答案
- 執(zhí)業(yè)護(hù)士考試職業(yè)道德規(guī)范試題及答案
- 院感三基試題及答案2025年
- 2025年執(zhí)業(yè)藥師繼續(xù)教育題庫(kù)及參考參考答案
- 阿里云客服試題和答案
- 急危重癥護(hù)理學(xué)模擬試題及參考答案
- 倉(cāng)庫(kù)貨物擺放標(biāo)準(zhǔn)培訓(xùn)課件
- 2023年運(yùn)動(dòng)控制工程師年度總結(jié)及下一年展望
- 江蘇省高級(jí)人民法院勞動(dòng)爭(zhēng)議案件審理指南
- 低蛋白血癥的護(hù)理查房知識(shí)ppt
- 2023自愿離婚協(xié)議書范文(3篇)
- 眼科常見疾病診療規(guī)范診療指南2022版
- 30以內(nèi)加法運(yùn)算有進(jìn)位1000題1
- 戰(zhàn)略成本1-6章toc經(jīng)典案例
- 新藥臨床使用觀察表
- GB/T 34202-2017球墨鑄鐵管、管件及附件環(huán)氧涂層(重防腐)
- DB37-T 5026-2022《居住建筑節(jié)能設(shè)計(jì)標(biāo)準(zhǔn)》
評(píng)論
0/150
提交評(píng)論