版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
//這是我練習(xí)的一個(gè)程序,做完后正確運(yùn)行,就貼出來供愛好verilogFPGA設(shè)計(jì)的朋友們共享,大家共同進(jìn)步.//該程序由于含有常量驅(qū)動(dòng)num_count故是不可綜合的??!//useVerilogHDLtodisplayacharonthelcd
//采用四線傳輸,傳輸一個(gè)八位數(shù)據(jù)得分兩次,需6個(gè)state來完成;
//通過本試驗(yàn)的狀態(tài)羅列,可以使你充分感受到什么叫做狀態(tài)機(jī)??!哈哈
//本程序在lcd上顯示OK;
modulelcd_control(input
clk,
//使能時(shí)鐘
input
reset_n,
//復(fù)位信號
output
reg
lcd_rs,
//指令/數(shù)據(jù)信號
output
lcd_rw,
//讀寫控制信號
output
reg
lcd_e,
//顯示使能端
output
reg[3:0]lcd_d,
//數(shù)據(jù)/指令輸出端
output
flash_ce
//存儲器總線使能
);
//strataflash存儲器芯片的使能信號設(shè)置為高電平,不允許其占用數(shù)據(jù)總線總線
assignflash_ce=1;//lcd_rw讀寫控制,由于只向液晶顯示屏控制芯片寫數(shù)據(jù),故將其設(shè)置為低電平
assignlcd_rw=0;
//根據(jù)傳送給液晶顯示屏控制芯片初始化命令和指定的地址計(jì)數(shù)器地址以及顯示字符的編碼數(shù)據(jù)的時(shí)序,定義若干狀態(tài)
parameterstate1=6'd1;
parameterstate2=6'd2;
parameterstate3=6'd3;
parameterstate4=6'd4;
parameterstate5=6'd5;
parameterstate6=6'd6;
parameterstate7=6'd7;
parameterstate8=6'd8;parameterstate9=6'd9;
parameterstate10=6'd10;
parameterstate11=6'd11;
parameterstate12=6'd12;
parameterstate13=6'd13;
parameterstate14=6'd14;
parameterstate15=6'd15;
parameterstate16=6'd16;parameterstate17=6'd17;
parameterstate18=6'd18;
parameterstate19=6'd19;
parameterstate20=6'd20;
parameterstate21=6'd21;
parameterstate22=6'd22;
parameterstate23=6'd23;
parameterstate24=6'd24;parameterstate25=6'd25;
parameterstate26=6'd26;
parameterstate27=6'd27;
parameterstate28=6'd28;
parameterstate29=6'd29;
parameterstate30=6'd30;
parameterstate31=6'd31;
parameterstate32=6'd32;parameterstate33=6'd33;
parameterstate34=6'd34;
parameterstate35=6'd35;
parameterstate36=6'd36;
parameterstate37=6'd37;
parameterstate38=6'd38;
parameterstate39=6'd39;
parameterstate40=6'd40;parameterstate41=6'd41;
parameterstate42=6'd42;
parameterstate43=6'd43;
parameterstate44=6'd44;
parameterstate45=6'd45;
parameterstate46=6'd46;
parameterstate47=6'd47;
parameterstate48=6'd48;
parameterstate49=6'd49;
parameterstate50=6'd50;
parameterstate51=6'd51;
parameterstate52=6'd52;
parameterstate53=6'd53;reg[5:0]state;
//statesignal
regstate_change;
//statechangecommunicate
//counterusedto對液晶顯示屏控制芯片進(jìn)行初始化和傳輸數(shù)據(jù)的時(shí)序控制,以及各狀態(tài)
//的停留時(shí)間,完成計(jì)數(shù)定時(shí)功能,輸出改變狀態(tài).
//定義用于計(jì)時(shí)的計(jì)數(shù)器信號
reg[19:0]delay_count;
reg[19:0]num_count;
reg[6:1]nextstate
;
always@(posedgeclk,negedgereset_n)
if(!reset_n)
begin
state_change<=1'b0;
delay_count<=0;
end
else
if(delay_count==num_count-1)
begin
state_change<=1'b1;
delay_count<=0;
end
else
begin
state_change<=1'b0;
delay_count<=delay_count+1;
end//FSMpart
//thisstatemachinepartusedto對狀態(tài)停留時(shí)間進(jìn)行設(shè)定,
//并且完成狀態(tài)轉(zhuǎn)移和輸出液晶顯示屏的控制信號lcd_rs,andlcd_e,datasignallcd_d
always@(posedgeclk,negedgereset_n)
//時(shí)鐘沿敏感,完成狀態(tài)更新
begin
if(!reset_n)
begin
state<=state1;
num_count<=20'd750_000;
//等待15ms,對應(yīng)750_000個(gè)時(shí)鐘脈沖信號
lcd_rs<=1'b0;
lcd_e<=1'b0;
lcd_d<=4'h3;
end
else
state<=nextstate;
end
//組合邏輯,完成狀態(tài)變化;
always@(state_change)
if(state_change)
case(state)
state1:
begin
nextstate=state2;
//先傳送控制命令超前l(fā)cd_e使能信號
num_count=20'd4;
//lcd_e未使能的等待時(shí)間大于40ns
lcd_rs=1'b0;
lcd_e=1'b0;
lcd_d=4'h3;
//寫入功能指令設(shè)置,等待使能
end
state2:
begin
nextstate=state3;
num_count=20'd12;
//使能lcd_e為高電平,并保持240ns;
lcd_e=1'b1;
end
state3:
begin
nextstate=state4;
num_count=20'd5_000;
//不是能lcd_e并等待100us
lcd_e=1'b0;
end
state4:
//重復(fù)寫入功能設(shè)置指令4'h3;
begin
nextstate=state6;
num_count=20'd4;
lcd_d=4'h3;
end
state5:
begin
nextstate=state6;
num_count=20'd12;
lcd_e=1'b1;
end
state6:
begin
nextstate=state7;
num_count=20'd5000;
lcd_e=1'b0;
end
//寫入功能設(shè)置指令,采用四位數(shù)據(jù)總線傳輸,傳輸功能控制字中的DL=0;
//當(dāng)DL=1時(shí),是八位數(shù)據(jù)總線傳輸。
//功能控制字為0x2*;四線傳輸;
state7:
begin
nextstate=state8;
num_count=20'd4;
lcd_d=4'h2;
end
state8:
begin
nextstate=state9;
num_count=20'd12;
lcd_e=1'b1;
end
state9:
begin
nextstate=state10;
num_count=20'd4000;
lcd_e=1'b0;
end
//傳輸功能控制設(shè)置字,采用四位總線DB[7:4],DL(對應(yīng)DB4)=0;
//雙行雙行顯示N(db3)=1;
//5*7點(diǎn)陣(db2)=0*;
//故控制字為0x28;
state10:
begin
nextstate=state11;
num_count=20'd4;
lcd_rs=0;
lcd_d=4'h2;
end
state11:
begin
nextstate=state12;
num_count=20'd12;
lcd_e=1;
end
state12:
begin
nextstate=state13;
num_count=20'd80;
//傳輸連個(gè)數(shù)據(jù)之間的間隔大于1us。
lcd_e=1'b0;
//完成了2的傳輸;
end
state13:
begin
nextstate=state14;
num_count=20'd4;
lcd_d=4'h8;
end
state14:
begin
nextstate=state15;
num_count=20'd12;
lcd_e=1'b1;
end
state15:
begin
nextstate=state16;
num_count=20'd4000;
lcd_e=1'b0;
//完成了8的傳輸;;
end
//采用增量模式(AC地址自動(dòng)加一),數(shù)據(jù)為DB1設(shè)置為1,顯示不移動(dòng)則DB0設(shè)置為0;
//故傳輸控制字為0X06;
state16:
begin
nextstate=state17;
num_count=20'd4;
lcd_d=4'h0;
end
state17:
begin
nextstate=state18;
num_count=20'd12;
lcd_e=1;
end
state18:
begin
nextstate=state19;
num_count=20'd80;
lcd_e=1'b0;
//完成了0的傳輸;
end
state19:
begin
nextstate=state20;
num_count=20'd4;
lcd_d=4'h6;
end
state20:
begin
nextstate=state21;
num_count=20'd12;
lcd_e=1'b0;
end
state21:
begin
nextstate=state22;
num_count=20'd4000;
lcd_e=1'b0;
//完成了6的傳輸;
end
//打開顯示;設(shè)置打開顯示控制字為0X0C,對應(yīng)狀況是
//光標(biāo)不顯示不閃爍,
state22:
begin
nextstate=state23;
num_count=20'd4;
lcd_d=4'h0;
end
state23:
begin
nextstate=state24;
num_count=20'd12;
lcd_e=1'b1;
end
state24:
begin
nextstate=state25;
num_count=20'd4000;
lcd_e=1'b0;
end
//完成了0的傳輸;
state25:
begin
nextstate=state26;
num_count=20'd4;
lcd_d=4'hc;
end
state26:
begin
nextstate=state27;
num_count=20'd12;
lcd_e=1'b1;
end
state27:
begin
nextstate=state28;
num_count=20'd4000;
lcd_e=0;
end
state28:
begin
nextstate=state29;
num_count=20'd2000;//等待1.64ms
end
//至此,完成了lcd的初始化,接下來可以傳送
//顯示數(shù)據(jù)以完成顯示任務(wù)://輸入ddram的地址;從第一行第一個(gè)字開始,故
//輸入的DDRAM地址應(yīng)該為0x80;
state29:
begin
nextstate=state30;
num_count=20'd4;
lcd_d=4'h8;
end
state30:
begin
nextstate=state31;
num_count=20'd12;
lcd_e=1'b1;
end
state31:
begin
nextstate=state32;
num_count=20'd4000;
lcd_e=1'b0;
end
state32:
begin
nextstate=state33;
num_count=20'd4;
lcd_d=4'h0;
end
state33:
begin
nextstate=state34;
num_count=20'd12;
lcd_e=1'b1;
end
state34:
begin
nextstate=state35;
num_count=20'd4000;
lcd_e=1'b0;
end
//開始正式工作,發(fā)送字符OK。
state35:
begin
nextstate=state36;
num_count=20'd4;
lcd_rs=1'b1;
//開始傳送數(shù)據(jù)
lcd_d=4'h4;
end
state36:
begin
nextstate=state37;
num_count=20'd12;
lcd_e=1;
end
state37:
begin
nextstate=state38;
num_count=20'd80;
lcd_e=1'b0;
//傳送了4'h4;
end
state38:
begin
nextstate=state39;
num_count=20'd4;
lcd_d=4'hf;
end
state39:
begin
nextstate=state40;
num_count=20'd12;
lcd_e=1'b1;
end
state40:
begin
nextstate=state41;
num_count=20'd2000;
lcd_e=1'b0;
//傳送了編碼4‘hf
end
//傳送字符k的編碼:0x4b;
state41:
begin
nextstate=state42;
num_count=20'd4;
lcd_rs=1'b1;
lcd_d=4'h4;
end
state42:
begin
nextstate=state43;
num_count=20'd12;
lcd_e=1'b1;
end
state43:
begin
nextstate=state44;
num_count=20'd80;
lcd_e=1'b0;
end
state44:
begin
nextstate=state45;
num_count=20'd4;
lcd_d=4'hb;
end
state45:
begin
nextstate=state46;
num_count=20'd12;
lcd_e=1'b1;
end
state46:
begin
nextstate=state47;
num_count=20'd2000;
lcd_e=1'b0;
end
//字符!的編碼0x21
state47:
begin
nextstate=state48;
num_count=20'd4;
lcd_d=4'h2;
lcd_rs=1'b1;
end
state48:
begin
nextstate=state49;
num_count=20'd12;
lcd_e=1'b1;
end
state49:
begin
nextstate=state50;
num_count=20'd80;
lcd_e=1'b0;
end
state50:
begin
nextstate=state51;
num_count=20'd4;
lcd_d=4'h1;
end
state51:
begin
nextstate=state52;
num_count=20'd12;
lcd_e=1'b1;
end
state52:
begin
nextstate=state53;
num_count=20'd4000;
lcd_e=1'b0;
end
//至此。已經(jīng)成功地完成了字符OK,在液晶顯示屏上的顯示;;
//接下來,進(jìn)入等待狀態(tài)
state53:
begin
nextstate=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《游泳服務(wù)與管理》課件
- 《電力企業(yè)流程管理》課件
- 《電磁輻射及預(yù)防》課件
- 2024年高考生物一輪復(fù)習(xí)必修二第五單元遺傳的基本規(guī)律試題
- 單位管理制度集合大合集【人力資源管理】十篇
- 單位管理制度集粹匯編職員管理篇十篇
- 單位管理制度分享匯編【員工管理】十篇
- 單位管理制度分享大全【人員管理】十篇
- 單位管理制度呈現(xiàn)合集【員工管理】十篇
- 《團(tuán)隊(duì)建設(shè)與發(fā)展》課件
- 五年級數(shù)學(xué)上冊錯(cuò)題專練-第一單元人教版(含答案)
- 組織內(nèi)外部環(huán)境要素識別表
- 韌性理論與韌性城市建設(shè)
- 高中數(shù)學(xué)作業(yè)分層設(shè)計(jì)的有效性分析 論文
- 基于二十四節(jié)氣開展幼兒園美育活動(dòng)的實(shí)踐策略 論文
- 四年級語文閱讀理解《嫦娥奔月(節(jié)選)》練習(xí)(含答案)
- 鼻咽炎-疾病研究白皮書
- 普速鐵路工務(wù)安全規(guī)則
- 石阡縣人民醫(yī)院內(nèi)科綜合大樓建設(shè)項(xiàng)目環(huán)評報(bào)告
- 業(yè)主搭建陽光房申請書
- 消費(fèi)主義影響下中國當(dāng)代陶藝的特點(diǎn)獲獎(jiǎng)科研報(bào)告
評論
0/150
提交評論