課程設計(論文)點陣LED顯示的設計報告_第1頁
課程設計(論文)點陣LED顯示的設計報告_第2頁
課程設計(論文)點陣LED顯示的設計報告_第3頁
課程設計(論文)點陣LED顯示的設計報告_第4頁
課程設計(論文)點陣LED顯示的設計報告_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 點陣led顯示的設計1課程設計指標(1)實現點陣led的動態(tài)掃描。 (2)在點陣led顯示學生自己的中文名字、班級和學號。(3)兩個功能鍵:1)、啟動顯示,2)、停止顯示。2課程設計的總體方案2.1 方案比較在1616led發(fā)光二極管點陣上顯示漢字的方式有兩種:第一種方法是滾屏顯示學生班級,姓名,學號,另一種方法是每次顯示一個漢字,一秒鐘后刷新顯示第二個漢字,再一秒鐘后刷新顯示第三個漢字,依次刷新顯示班級和學號數。循環(huán)顯示以上內容。對于前一種方案,可以依次對多漢字抽取像素信息,并按順序排隊存放于rom之中,這樣便可得到一個待顯示數據序列。然后通過尋址的方法來控制該數據序列的釋放過程,就可實現

2、在1616 led 發(fā)光二極管點陣上滾動顯示多漢字信息的目的。這種方法雖然看起來比較簡單,但是實現起來卻有許多困難,由于滾屏顯示是將需要顯示的內容當成一個整體,即是在行方向上看成許多漢字排成一排,然后通過指針順序控制漢字的顯示,而對于在vhdl語言中指針的使用這方面的內容我們接觸不多,沒有經驗,因此做起來比較困難。而且,如果滾屏顯示時間把握得不好,那么顯示的效果將會受到很大的影響。而采用刷新顯示對時間方面要求比較低,容易控制。而且刷新顯示比較符合我們的習慣。2.2 方案選擇 通過上述比較,我們決定采用方案二。3設計的詳細原理3.1 系統(tǒng)結構及工作原理led點陣顯示控制的傳統(tǒng)方式是采用單片機或系

3、統(tǒng)機作為cpu來實現,當系統(tǒng)顯示的信息比較多時,由于單片機的輸入/輸出端口(i/o)有限,采用此方式的成本將大大增加,系統(tǒng)和程序的設計難度也急劇增加;而且,當系統(tǒng)完成后修改、改變顯示方式或擴展時,所需改動的地方比較大,甚至有可能需要重新設計;另外,在以顯示為主的系統(tǒng)中,單片機的運算和控制等主要功能的利用率很低,單片機的優(yōu)勢得不到發(fā)揮,相當于很大得資源浪費。如果采用現場可編程邏輯器件作為cpu來設計控制器,選擇合適的器件,利用器件豐富的i/o口、內部邏輯和連線資源,采用自頂而下的模塊化設計方法,可以方便地設計整個顯示系統(tǒng)。由于pld器件的外圍器件很少,且可以利用pld的編程端口(可復用)進行在系

4、統(tǒng)編程,使得系統(tǒng)的修改、顯示方式的改變和擴展都變的非常簡單、方便。本系統(tǒng)采用單個1616led點陣逐列左移(或右移)顯示漢字或字符,需顯示漢字或符號的1616點陣字模已經存放在字模存儲器中。顯示控制器由復雜可編程邏輯器件(cpld)epm7128slc84-15來實現,系統(tǒng)組成原理框圖如圖1所示。系統(tǒng)原理是pld控制模塊首先產生點陣字模地址,并從存儲器讀出數據存放在16位寄存器中,然后輸出到led點陣的列,同時對點陣列循環(huán)掃描以動態(tài)顯示數據,當需要顯示數據字模的列和被選中的列能夠協(xié)調配合起來,就可以正確顯示漢字或符號。 圖1點陣顯示控制器原理框圖3.2 控制器設計及工作原理從框圖中可以看出,系

5、統(tǒng)的關鍵在于控制器的設計。led點陣顯示數據地址的產生、點陣列掃描和需顯示數據的配合以及點陣顯示方式控制的實現都必須由控制器來實現。對單個1616led點陣顯示控制器進行設計的頂層邏輯原理圖如圖2所示。圖2 控制器頂層電路原理圖原理圖中包含5個模塊,其中sequ模塊產生讀信號rdn和10位地址線(ad9.0)中的最低位地址ad0,ad0和其它模塊產生的地址配合,通過8位數據線(data7.0)從存儲器讀出列高字節(jié)(ad0=1時)和低字節(jié)(ad0=0時),由于1616點陣字模數據為32個字節(jié),每列含兩個字節(jié)即16位,它由hout7.0和lout7.0 來構成;模塊r由adclk提供一個慢時鐘構成

6、16進制計數器,它的輸出送給r模塊,為變模計數器r提供一個模,通過模的規(guī)律變化以控制點陣按照左移或右移等顯示方式進行顯示;模塊decode4_16是一個416譯碼器,其輸出l15.0連接到led點陣的列,可選中1616led點陣的某列,并顯示sequ模塊輸出的點陣高低字節(jié)(字模)數據;模塊r為點陣顯示控制的核心,為了實現點陣漢字從右到左逐列移動顯示,它由r模塊提供的模,在r內部構成兩個變模計數器,其中一個用來產生讀字模數據的地址ad4.1,另外一個產生1616led點陣列掃描選擇地址r3.0,列掃描選擇地址由decode4_16譯碼后輸出;模塊rdd為字選擇計數器,其輸出可以控制多塊led顯示

7、器的顯示及其顯示方式。為了實現字符由右到左逐列移動顯示,模塊r內部設計了兩個由r控制的變模加法計數器,其中r3.0為列掃描控制線。3.3 系統(tǒng)擴展以上為顯示單個字符系統(tǒng),若要同時顯示多個字符時,可以按照圖1加入虛線框內部分,并且模塊rdd設計成r的格式,把ad4作為rdd的記數脈沖即可。按照epm7128slc8415的資源(64個i/o口,2個全局時鐘,1個全局復位和5個可復用專用端口,5000個等效邏輯門,192個內部寄存器),若不外部擴展譯碼器,可以有效控制約16個字符的顯示;而采用外部譯碼器時,可以控制的字符數將大大增加,但須注意時鐘clk的頻率需要提高,以視覺不能看到整個字符的閃爍為

8、基準。4系統(tǒng)軟件設計控制核心模塊r采用vhdl語言設計,在開發(fā)軟件max+plus 10.2中實現,詳細程序見附錄a。從程序可以看出,隨著r從0000到1111不斷變化,即實現了系統(tǒng)時鐘對點陣led的不停掃描。當r=0000時,即讀出第一個字符的第一列并顯示在led的第1列;當r=0001時,即讀出第一個字符的第一、二列并顯示在led的第1、2列由此類推,由于系統(tǒng)掃描時鐘為1khz,掃描速度比較快,因此,當完成一次掃描時,在人眼視覺差的作用下會看到整個的字符好像是靜態(tài)顯示的一樣。然后,在通過控制rdd按一定時間在一定的范圍順序自增,每自增1則顯示一個漢字,這樣就能實現多個漢字的刷新顯示了。5設

9、計的仿真和運行結果以上程序在max+plus10.2上仿真驗證結果如圖3所示。 圖3 r模塊仿真時序圖在設計中,應注意模塊sequ的記數時鐘clk頻率的選擇應遠遠大于模塊r的記數時鐘adclk的頻率,r的記數時鐘為地址最低位ad0,字選擇計數器的時鐘脈沖為16進制模塊r的最高位out3。這樣, r3.0變化的足夠快,在點陣led上可以看到完整的字符,并當r記數到15產生進位返回到0時,字選擇模塊rdd獲得一個記數脈沖并加1(上升沿觸發(fā)),此后將顯示下一個字符。6、結論以上點陣字符顯示系統(tǒng)在開發(fā)軟件max+plus10.2上經仿真驗證無誤。另外,由于器件含有豐富的可編程連線資源,當系統(tǒng)顯示方式和

10、顯示字符個數變化時,只需要通過開發(fā)工具修改控制器的控制邏輯和連接關系,再將修改完成的程序通過下載電纜下載到器件即可,而電路板可以不做任何改動,可見,系統(tǒng)的維護和修改是極其方便和容易的。當然,由于clpd的驅動能力有限,當點陣led顯示亮度不夠時,需要添加led驅動電路以得到合適的led顯示亮度。7.心得體會兩周的eda課程設計時間雖然很短暫,但我從中獲益匪淺.首先對eda這門課程有了更深刻的了解,因為課程設計本身要求將以前所學的理論知識運用到實際的電路程序設計當中去,在設計的過程中,我無形中便加深了對vhdl語言的了解及運用能力,并且對課本以及以前學過的知識有了一個更好的總結與理解;以前的ed

11、a實驗只是針對某一個小的功能設計,而eda課程設計對我們的總體電路的設計的要求更嚴格,需要通過翻閱復習以前學過的知識確立了實驗總體設計方案,然后逐步細化進行各模塊的設計;其次,在程序仿真的過程中總會出現一些問題,需要我們細心解決,所以這兩周下來,我對程序故障的排查能力有了很大的提高;再次,通過此次課程設計,我對altera公司的max+plus軟件從編譯、排錯到波形仿真、下載到fpga器件上仿真都有了一定的掌握。也加強了發(fā)現問題,解決問題的能力,同時還學會了和他人的有效合作、高效率的解決問題,這對我們以后的工作和學習的幫助都很有用處。參考文獻電子技術實驗指導書,李國麗,朱維勇主編,中國科技大學

12、出版社。電子技術基礎 模擬部分(第四版),康華光主編,高教出版社。數字電子技術基礎(第四版),閻石主編,高教出版社。eda技術基礎,譚會生主編,湖南大學出版社。eda技術實用教程,李洋主編,機械工業(yè)出版社。附錄a 程序清單library ieee; use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity dot_led is port(clk :in std_logic; -系統(tǒng)時鐘(1khz) key: in std_logic_vector(1 downto 0);-功能鍵,key=01,啟動顯示;key=10,

13、停止顯示 r:out std_logic_vector(3 downto 0); -點陣led行輸入,當r=0000, 表示第一列有效. l:out std_logic_vector(15 downto 0); -點陣led列輸入 end dot_led; architecture display of dot_led is signal rdd:std_logic_vector(3 downto 0);-控制顯示一個漢字或字符的時間 signal ldd:std_logic_vector(3 downto 0);-ldd用來選擇掃描的列 signal cnt0: integer range

14、0 to 2000; signal temp: std_logic_vector(1 downto 0); begin process(clk,key) begin if (key=11) then cnt01999 then cnt0=0;temp=key; else cnt0=cnt0+1; end if; end if; end process; process(clk) variable cnt: integer; variable tmp:std_logic_vector(3 downto 0); begin if clkevent and clk=1 then if cnt5000

15、00 then cnt:=cnt+1; else cnt:=0; if tmp=1100 then tmp:=0000; else tmp:=tmp+1; end if; end if; end if; rdd=tmp; end process; process(clk) variable tmb:std_logic_vector(3 downto 0); begin if clkevent and clk=1 then if tmb=1111 then tmb:=0000; else tmb:=tmb+1; end if; end if; ldd r=0000; l r=0001; l r=

16、0010; l r=0011; l r=0100; l r=0101; l r=0110; l r=0111; l r=1000; l r=1001; l r=1010; l r=1011; l r=1100; l r=1101; l r=1110; l r=1111; lnull; end case; elsif rdd=0001and temp=01 then -子 case ldd is when 0000 = r=0000; l r=0001; l r=0010; l r=0011; l r=0100; l r=0101; l r=0110; l r=0111; l r=1000; l

17、 r=1001; l r=1010; l r=1011; l r=1100; l r=1101; l r=1110; l r=1111; lnull; end case; elsif rdd=0010and temp=01 then -06 case ldd is when0000 = r=0000; l r=0001; l r=0010; l r=0011; l r=0100; l r=0101; l r=0110; l r=0111; l r=1000; l r=1001; l r=1010; l r=1011; l r=1100; l r=1101; l r=1110; l r=1111

18、; lnull; end case; elsif rdd=0011and temp=01 then -02 case ldd is when 0000= r=0000; l r=0001; l r=0010; l r=0011; l r=0100; l r=0101; l r=0110; l r=0111; l r=1000; l r=1001; l r=1010; l r=1011; l r=1100; l r=1101; l r=1110; l r=1111; lnull; end case; elsif rdd=0100and temp=01 then -班 case ldd is wh

19、en 0000= r=0000; l r=0001; l r=0010; l r=0011; l r=0100; l r=0101; l r=0110; l r=0111; l r=1000; l r=1001; l r=1010; l r=1011; l r=1100; l r=1101; l r=1110; l r=1111; lnull; end case; elsif rdd=0101and temp=01 then -吳 case ldd is when 0000= r=0000; l r=0001; l r=0010; l r=0011; l r=0100; l r=0101; l

20、 r=0110; l r=0111; l r=1000; l r=1001; l r=1010; l r=1011; l r=1100; l r=1101; l r=1110; l r=1111; lnull; end case; elsif rdd=0110and temp=01 then -云 case ldd is when 0000= r=0000; l r=0001; l r=0010; l r=0011; l r=0100; l r=0101; l r=0110; l r=0111; l r=1000; l r=1001; l r=1010; l r=1011; l r=1100;

21、 l r=1101; l r=1110; l r=1111; lnull; end case; elsif rdd=0111and temp=01 then -20 case ldd is when 0000= r=0000; l r=0001; l r=0010; l r=0011; l r=0100; l r=0101; l r=0110; l r=0111; l r=1000; l r=1001; l r=1010; l r=1011; l r=1100; l r=1101; l r=1110; l r=1111; lnull; end case; elsif rdd=1000and t

22、emp=01 then -06 case ldd is when0000 = r=0000; l r=0001; l r=0010; l r=0011; l r=0100; l r=0101; l r=0110; l r=0111; l r=1000; l r=1001; l r=1010; l r=1011; l r=1100; l r=1101; l r=1110; l r=1111; lnull; end case; elsif rdd=1001and temp=01 then -57 case ldd is when 0000= r=0000; l r=0001; l r=0010;

23、l r=0011; l r=0100; l r=0101; l r=0110; l r=0111; l r=1000; l r=1001; l r=1010; l r=1011; l r=1100; l r=1101; l r=1110; l r=1111; lnull; end case; elsif rdd=1010and temp=01 then -17 case ldd is when 0000= r=0000; l r=0001; l r=0010; l r=0011; l r=0100; l r=0101; l r=0110; l r=0111; l r=1000; l r=1001; l r=1010; l r=1011; l r=1100; l r=1101

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論