數(shù)碼管led顯示器控制電路_第1頁
數(shù)碼管led顯示器控制電路_第2頁
數(shù)碼管led顯示器控制電路_第3頁
數(shù)碼管led顯示器控制電路_第4頁
數(shù)碼管led顯示器控制電路_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

專題二.

經(jīng)典模塊設(shè)計(jì)——LED數(shù)碼管顯示控制電路設(shè)計(jì)數(shù)碼管顯示原理數(shù)碼管的組成:LED數(shù)碼管是由發(fā)光二極管構(gòu)成的,常用的有8段。數(shù)碼管的分類:有共陰和共陽極兩種。多個(gè)LED的陰極連在一起的為共陰極數(shù)碼管,陽極連在一起的為共陽極數(shù)碼管。共陰極數(shù)碼管的公共端接地,陽極(a到h)接高電平,數(shù)碼管點(diǎn)亮。共陽極數(shù)碼管的公共端接電源,陰極(a到h)接低,數(shù)碼管點(diǎn)亮。數(shù)碼管的段碼和位碼數(shù)碼管的位碼就是提供給公共端的電平。位碼的作用是控制數(shù)碼管的亮滅。數(shù)碼管的段碼就是提供給a,b,c,d,e,f,g,h的電平。段碼的作用是控制數(shù)碼管顯示什么字符。單個(gè)數(shù)碼管需要9個(gè)端口來控制。位碼段碼舉例:位碼和段碼例1:顯示字符“1”。(共陰極數(shù)碼管)位碼應(yīng)該接低電平。段碼按照hgfedcba的順序,應(yīng)該為“00000110”。例2:顯示字符“A”。(共陽極數(shù)碼管)位碼應(yīng)該接高電平。段碼按照hgfedcba的順序,應(yīng)該為“10001000”。LED數(shù)碼管顯示控制電路靜態(tài)顯示方式動(dòng)態(tài)顯示方式(1)LED靜態(tài)顯示控制電路靜態(tài)顯示方式將每一個(gè)數(shù)碼管的段碼端a~h連接到CPLD/FPGA的IO端口上,公共端接地(對(duì)于共陰極LED)。每個(gè)數(shù)碼管需要8個(gè)IO口線,N個(gè)數(shù)碼管共需要N×8條IO口線。當(dāng)CPLD/FPGA有相當(dāng)多的IO端口資源,并且顯示的位數(shù)較少時(shí)(通常為1~2位),可以直接使用靜態(tài)顯示的方式。數(shù)碼管靜態(tài)顯示方式的優(yōu)點(diǎn)是連線簡(jiǎn)單,軟件編程簡(jiǎn)單。缺點(diǎn)是需要耗費(fèi)大量的IO端口資源。8×N靜態(tài)顯示的方式CPLD/FPGA驅(qū)動(dòng)LED靜態(tài)顯示譯碼程序Libraryieee;Useieee.std_logic_1164.all;Useieee.std_logic_unsigned.all;Useieee.std_logic_arith.all;Entitydisplayis--共陰極數(shù)碼管段碼譯碼port(data:INstd_logic_vector(3downto0);seg:OUTstd_logic_vector(6downto0)--gfedcba);Enddisplay;architectureaofdisplayisbeginprocess(data)begincasedatais--gfedcba

when"0000"=>seg<="0111111";--0when"0001"=>seg<="0000110";--1when"0010"=>seg<="1011011";--2when"0011"=>seg<="1001111";--3when"0100"=>seg<="1100110";--4when"0101"=>seg<="1101101";--5when"0110"=>seg<="1111101";--6when"0111"=>seg<="0000111";--7when"1000"=>seg<="1111111";--8when"1001"=>seg<="1100111";--9when"1010"=>seg<="1110111";--Awhen"1011"=>seg<="1111100";--bwhen"1100"=>seg<="0111001";--cwhen"1101"=>seg<="1011110";--dwhen"1110"=>seg<="1111001";--Ewhen"1111"=>seg<="1110001";--Fwhenothers=>seg<="0000000";--全滅endcase;endprocess;enda;仿真結(jié)果將要顯示的數(shù)據(jù)譯成段碼在數(shù)碼管上顯示出來。靜態(tài)顯示應(yīng)用舉例:設(shè)計(jì)一個(gè)4路獨(dú)立鍵盤輸入電路,讀取鍵盤的鍵值,并將鍵值在一位靜態(tài)共陰極LED數(shù)碼管中顯示出來。輸入為時(shí)鐘信號(hào)CLK(50MHz),按鍵狀態(tài)KEY1,KEY2,KEY3,KEY4。輸出為L(zhǎng)ED數(shù)碼管的段碼SEG[6..0]。電路模塊輸入信號(hào):clk:時(shí)鐘,50MHz;reset:復(fù)位信號(hào);key1,key2,key3,key4:按鍵信號(hào)輸入;輸出信號(hào):SEG[6..0]:靜態(tài)LED數(shù)碼管的段碼信號(hào)。分頻模塊去抖動(dòng)模塊鍵盤掃描譯碼模塊50MHz鍵盤掃描譯碼模塊程序(1)--輸出’1’的段碼--輸出’2’的段碼--輸出’3’的段碼--輸出’4’的段碼--數(shù)碼管燈滅鍵盤掃描譯碼模塊程序(2)keyscan程序:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;useieee.std_logic_arith.all;entitykeyscanisport(clk10hz:INstd_logic;key1,key2,key3,key4:INstd_logic;keyvalue:OUTintegerrange0to4);endkeyscan;architectureaofkeyscanisbeginprocess(clk10hz)--100msbeginif(clk10hz'eventandclk10hz='1')thenif(key1='0')thenkeyvalue<=1; --輸出鍵值1 elsif(key2='0')thenkeyvalue<=2; --輸出鍵值2elsif(key3='0')thenkeyvalue<=3; --輸出鍵值3elsif(key4='0')thenkeyvalue<=4; --輸出鍵值4elsekeyvalue<=0; --輸出鍵值0endif;endif;endprocess;enda;display程序:Libraryieee;Useieee.std_logic_1164.all;Useieee.std_logic_unsigned.all;Useieee.std_logic_arith.all;Entitydisplayisport(data:INintegerrange0to4;seg:OUTstd_logic_vector(6downto0)--gfedcba);Enddisplay;architectureaofdisplayisbeginprocess(data)begincasedatais--gfedcbawhen1=>seg<="0000110";--1when2=>seg<="1011011";--2when3=>seg<="1001111";--3when4=>seg<="1100110";--4whenothers=>seg<="0000000";--全滅endcase;endprocess;enda;(2)LED動(dòng)態(tài)顯示控制電路在顯示的數(shù)據(jù)較多時(shí),會(huì)用到多個(gè)數(shù)碼管,如果用靜態(tài)顯示方式會(huì)占用很多IO(8×N),這時(shí)可以采用動(dòng)態(tài)掃描方式來實(shí)現(xiàn)。動(dòng)態(tài)掃描方式的硬件連接是: 將每個(gè)數(shù)碼管的段碼引腳并聯(lián)接到CPLD/FPGA的IO端口上,每個(gè)數(shù)碼管的公共端是獨(dú)立的,通過控制公共端來控制相應(yīng)數(shù)碼管的亮、滅。N個(gè)LED數(shù)碼管以動(dòng)態(tài)方式顯示時(shí),需要8+N個(gè)IO口線。其中8個(gè)IO口線用作輸出段碼,N個(gè)IO口線輸出位碼。段碼共用,位碼獨(dú)立動(dòng)態(tài)顯示方式實(shí)現(xiàn)方法是依次點(diǎn)亮各個(gè)LED數(shù)碼管,輪流向各個(gè)數(shù)碼管送出段碼和位碼,循環(huán)進(jìn)行顯示。一個(gè)數(shù)碼管顯示之后下一個(gè)數(shù)碼管馬上顯示,利用人眼的視覺暫留特性,得到多個(gè)數(shù)碼管同時(shí)顯示的效果。采用數(shù)碼管的動(dòng)態(tài)顯示方式,數(shù)碼管的掃描頻率的快慢控制相當(dāng)重要。掃描頻率太慢,會(huì)產(chǎn)生數(shù)碼管逐個(gè)顯示的效果。掃描頻率太快也不好,會(huì)造成數(shù)碼管的亮度不夠,因?yàn)閿?shù)碼管需要一定的時(shí)間才能達(dá)到一定的亮度。通常掃描頻率為1KHz(即數(shù)碼管顯示1ms)可以達(dá)到滿意的效果。動(dòng)態(tài)顯示電路框圖分頻器計(jì)數(shù)器段碼數(shù)據(jù)設(shè)置sysclk50Mhz1khzclk1khz位碼數(shù)據(jù)設(shè)置SCAN[7..0]qcnt[2..0]SEG[6..0]如上圖所示,為L(zhǎng)ED動(dòng)態(tài)顯示頂層原理圖。由fdiv分頻模塊,cnt計(jì)數(shù)模塊和dispdec顯示譯碼模塊三個(gè)模塊組成。輸入為:sysclk:50MHz系統(tǒng)時(shí)鐘。d0~d7:8個(gè)顯示數(shù)據(jù),分別顯示在8個(gè)數(shù)碼管上。輸出為: SEG【6..0】:7位段碼輸出。 SCAN【7..0】:8位位碼輸出,每一位分別控制一個(gè)數(shù)碼管的點(diǎn)亮。50MHz1KHzCPLD/FPGA驅(qū)動(dòng)LED動(dòng)態(tài)顯示程序顯示譯碼模塊dispdecLibraryieee;Useieee.std_logic_1164.all;Useieee.std_logic_unsigned.all;Useieee.std_logic_arith.all;entitydispdecisport(qcnt:INintegerrange0to7;--計(jì)數(shù)值輸入d0,d1,d2,d3,d4,d5,d6,d7:INstd_logic_vector(3downto0);--顯示數(shù)據(jù)seg:OUTstd_logic_vector(6downto0);--7位段碼輸出scan:OUTstd_logic_vector(7downto0)--8位位碼輸出);enddispdec;architectureaofdispdecissignaldata:std_logic_vector(3downto0);beginprocess(qcnt,d0,d1,d2,d3,d4,d5,d6,d7)begincaseqcntis--根據(jù)計(jì)數(shù)值,輸出相應(yīng)的位碼,并設(shè)置要顯示的數(shù)據(jù)when0=>scan<="11111110";data<=d0;when1=>scan<="11111101";data<=d1; when2=>scan<="11111011";data<=d2; when3=>scan<="11110111";data<=d3; when4=>scan<="11101111";data<=d4; when5=>scan<="11011111";data<=d5;when6=>scan<="10111111";data<=d6;when7=>scan<="01111111";data<=d7;whenothers=>scan<="11111111";data<=d0;endcase;endprocess;process(data)--對(duì)顯示數(shù)據(jù)譯碼begincasedataiswhen"0000"=>seg<="0111111";--0when"0001"=>seg<="0000110";--1when"0010"=>seg<="1011011";--2when"0011"=>seg<="1001111";--3when"0100"=>seg<="1100110";--4when"0101"=>seg<="1101101";--5when"0110"=>seg<="1111101";--6when"0111"=>seg<="0000111";--7when"1000"=>seg<="1111111";--8when"1001"=>seg<="1100111";--9when"1010"=>seg<="1110111";--Awhen"1011"=>seg<="1111100";--bwhen"1100"=>seg<="0111001";--cwhen"1101"=>seg<="1011110";--dwhen"1110"=>seg<="1111001";--Ewhen"1111"=>seg<="1110001";--Fwhenothers=>seg<="0000000";endcase;endprocess;enda;仿真結(jié)果以1KHz頻率動(dòng)態(tài)掃描顯示,依次輸出8個(gè)數(shù)碼管的段碼和位碼。123456LED動(dòng)態(tài)顯示分位譯碼電路設(shè)計(jì)要求:采用動(dòng)態(tài)顯示方式,將一個(gè)兩位數(shù)用兩個(gè)數(shù)碼管顯示出來。一個(gè)數(shù)碼管顯示個(gè)位,另一個(gè)顯示十位。頂層原理圖如上圖所示,為L(zhǎng)ED分位譯碼顯示頂層原理圖。由fdiv分頻模塊,cnt計(jì)數(shù)模塊,fenwei分位模塊和dispdec顯示譯碼模塊四個(gè)模塊組成。輸入為:sysclk:50MHz系統(tǒng)時(shí)鐘。num[6..0]:一個(gè)要顯示的兩位數(shù),0~99。輸出為: SEG【6..0】:7位段碼輸出。 SCAN【7..0】:8位位碼輸出,每一位分別控制一個(gè)數(shù)碼管的點(diǎn)亮。50MHz1KHz分位模塊LED動(dòng)態(tài)顯示分位譯碼電路程序1.fenwei分位模塊Libraryieee;Useieee.std_logic_1164.all;Useieee.std_logic_unsigned.all;Useieee.std_logic_arith.all;entityfenweiisport(num:INintegerrange0to99;numshi:OUTintegerrange0to9;numge:OUTintegerrange0to9);endfenwei;architectureaoffenweiisbeginnumge<=numMOD10;numshi<=num/10;enda;2.顯示譯碼模塊dispdecLibraryieee;Useieee.std_logic_1164.all;Useieee.std_logic_unsigned.all;Useieee.std_logic_arith.all;entitydispdecisport(qcnt:INintegerrange0to1;--計(jì)數(shù)值輸入d0,d1:INintegerrange0to9;--分位得到的十位數(shù)和個(gè)位數(shù)seg:OUTstd_logic_vector(6downto0);--7位段碼輸出scan:OUTstd_logic_vector(7downto0)--8為位碼輸出);enddispdec;architectureaofdispdecissignaldata:integerrange0to9;beginprocess(qcnt,d0,d1)begincaseqcntiswhen0=>scan<="11111110";data<=d0;when1=>scan<="11111101";data<=d1;whenothers=>scan<="11111111";data<=d0;endcase;endprocess;process(data)begincasedataiswhen0=>seg<="0111111";--0when1=>seg<="0000110";--1when2=>seg<="1011011";--2when3=>seg<="1001111";--3when4=>seg<="1100110";--4when5=>seg<="1101101";--5when6=>seg<="1111101";--6when7=>seg<="0000111";--7when8=>seg<="1111111";--8when9=>seg<="1100111";--9whenothers=>seg<="0000000";endcase;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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)論