国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

LCD驅動實時顯示控制電路的Verilog設計

2020-05-07 09:02楊翠娥
山西電子技術 2020年2期
關鍵詞:二進制字符時序

楊翠娥

(太原工業(yè)學院,山西 太原 030008)

0 引言

FPGA芯片作為大規(guī)模可編程器件,以其高集成度、高速、可反復編程等特點在電子產品設計中得到了廣泛的應用。作為FPGA的數據輸出外設,一般有LED數碼管輸出及LCD液晶顯示輸出較為常見。而對LCD液晶顯示輸出控制是FPGA設計的一個難點,一種方法是可以通過8051IP核加ROM模塊通過匯編程序實現,資源消耗大;另一種方法是直接用Verilog程序設計實現控制時序,簡單明了,資源利用率高,而且易于移植。一般資料給出的Verilog程序設計完成的LCD顯示控制只能顯示固定地址的字符,本設計給出的LCD顯示控制模塊,可以對輸入端口的數據實時顯示,且可以移植應用到各種需要LCD外設的FPGA設計中。

1 LCD1602工作原理簡介

LCD1602液晶顯示器是一種應用廣泛的字符型液晶顯示模塊。1602是指顯示的內容為16*2,即顯示兩行,每行16個字符。目前大多數的字符液晶都是基于HD44780液晶芯片的,控制原理基本相同,因此基于HD44780寫的Verilog控制程序可以很方便地應用于其他型號的字符型液晶。LCD1602通常有16條引腳線,除了電源、地管腳,其他就是控制讀寫的端口及輸出8位數據口。HD44780內置了DDRAM、CGROM和CGRAM。其中DDRAM用來寄存待顯示的字符代碼。共80個字節(jié),其地址和字符的對應關系可參考其他資料[1]。1602液晶模塊內部的字符發(fā)生存儲器(CGROM)已經存儲了160個不同的點陣字符圖形,每一個字符都有一個固定的代碼。在程序中時可以直接用比如P1=“A”這樣的方法,PC在編譯時可以自動把“A”轉換為對應的41H代碼。對DDRAM中的內容和地址進行操作,需要通過不同的指令來完成。通過Verilog程序設計也可以實現對LCD1602的指令控制、寫入數據指令控制及如何在指定位置顯示字符等的功能。

2 基于Verilog的LCD1602驅動程序設計

圖1所示為用Verilog程序設計的LCD時序控制模塊,輸入端口除了時鐘和復位端,還有20位的數據輸入端口;輸出端口和LCD字符顯示器管腳對應。根據Verilog程序設計特點,完成對LCD的時序控制可通過狀態(tài)機的設計方法。下面一段程序內容用關鍵詞localparam首先定義了12個不同的參數,分別對應于LCD顯示控制、數據、地址的讀寫控制等不同的工作狀態(tài)。

圖1 LCD時序控制模塊

以dis_temp(顯示數據)狀態(tài)為例,下面給出了對應的Verilog程序。首先要判斷狀態(tài)執(zhí)行的時間,LCD1602完成一次數據的顯示需要一定的時間,在此設定為20ms。如果時間到就可以進行此狀態(tài)的工作及轉換到下一個狀態(tài),如果時間不到就一直保持此狀態(tài)。顯示輸入數據時,因為一個字符占8個字節(jié),所以要完整顯示電壓值比如“0.02V”五個字符時,要設定顯示數據寬度為40位,即39到0;每次顯示一個字符,光標右移再顯示第二個字符,所以cnt要計數5次,以完成5個字符的循環(huán)顯示。

下面的程序給出了如何把輸入的二進制數實時顯示為對應的顯示字符,如最高4位數據,除了正常數字0~9對應顯示“0~9”的字符外,根據具體設計內容,還增加了10,11的二進制編碼,在此用于顯示小數點“.”和電壓的單位“V”二個字符。

3 基于FPGA的LCD實時顯示設計舉例

如圖2所示給出了基于FPGA的數字電壓表及LCD顯示設計的頂層電路圖,圖中共有四個模塊:鎖相環(huán)PLL模塊把系統時鐘clk0通過分頻和倍頻輸出三個時鐘,分別提供給AD轉換控制模塊、LCD時序控制模塊及ROM數據讀取模塊作為工作時鐘所用,其中ADCLK同時輸出給外部AD0809芯片使用;ADCINT模塊是基于Verilog設計的AD0809狀態(tài)轉換控制模塊,完成對外部AD0809芯片模擬量到數字量的轉換控制[2];由于AD0809芯片輸出的是8位二進制數,其電壓分辨率為5V/256,約為0.02V,要想通過LCD直接顯示對應的電壓值,還需要通過ROM模塊實現轉換。ROM模塊的功能是通過建立初始化mif文件,形成二進制與電壓的對應關系,然后把AD0809芯片輸出的8位二進制數作為ROM的地址,這樣就完成了二進制數到對應電壓值的轉換。ROM模塊數據的輸出作為給LCD顯示控制模塊的數據輸入,通過上述實現的LCD顯示控制模塊完成對輸入數據的LCD顯示輸出。

圖2 數字電壓表頂層電路圖

如下給出了mif初始化文件的部分內容[3]:

可以看出,通過編碼,設定1010(A)為顯示小數點字符,1011(B)為顯示電壓的單位“V”字符,地址每加1,對應顯示的內容增加0.02V,這樣就可以通過LCD控制模塊控制LCD實時顯示所輸入的模擬電壓值。圖3為LCD顯示的實時電壓測量數據。

圖3 LCD顯示的實時電壓測量數據

4 結束語

Verilog硬件設計語言是實現FPGA設計的主要設計輸入方法之一,語法簡單,結構明了,尤其是狀態(tài)機的設計描述方法可以很方便地完成FPGA的各種模塊設計。本論文通過對LCD顯示控制的Verilog狀態(tài)機設計,完成了對LCD實時數據顯示控制,該設計程序模塊化,標準化,可廣泛應用到FPGA的系統設計中。

猜你喜歡
二進制字符時序
顧及多種弛豫模型的GNSS坐標時序分析軟件GTSA
清明
用二進制解一道高中數學聯賽數論題
論高級用字階段漢字系統選擇字符的幾個原則
基于不同建設時序的地鐵互聯互通方案分析
字符代表幾
有趣的進度
一種USB接口字符液晶控制器設計
圖片輕松變身ASCⅡ藝術畫
基于FPGA 的時序信號光纖傳輸系統
西乌| 封开县| 镇宁| 时尚| 凤庆县| 虞城县| 阜南县| 新营市| 仁化县| 佛学| 扬中市| 楚雄市| 弋阳县| 遂溪县| 大埔区| 衢州市| 醴陵市| 宁乡县| 洞口县| 宜阳县| 淮滨县| 巴青县| 桃源县| 余姚市| 米泉市| 新兴县| 广东省| 神农架林区| 天门市| 河西区| 柘荣县| 墨竹工卡县| 璧山县| 新化县| 页游| 枞阳县| 卫辉市| 长沙县| 德庆县| 泗水县| 象山县|