電子技術課程設計-可編程時鐘控制器_第1頁
電子技術課程設計-可編程時鐘控制器_第2頁
電子技術課程設計-可編程時鐘控制器_第3頁
電子技術課程設計-可編程時鐘控制器_第4頁
電子技術課程設計-可編程時鐘控制器_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、目錄 TOC o 1-3 h z u HYPERLINK l _Toc329084295 設計功能要求 PAGEREF _Toc329084295 h 3 HYPERLINK l _Toc329084296 方案分析選擇與系統框圖 PAGEREF _Toc329084296 h 4 HYPERLINK l _Toc329084297 模塊功能分析 PAGEREF _Toc329084297 h 6 HYPERLINK l _Toc329084298 仿真下載結果 PAGEREF _Toc329084298 h 9 HYPERLINK l _Toc329084299 主要經歷 PAGEREF _

2、Toc329084299 h 10 HYPERLINK l _Toc329084300 操作指南 PAGEREF _Toc329084300 h 11 HYPERLINK l _Toc329084301 相關代碼 PAGEREF _Toc329084301 h 12設計功能要求一.設計任務數字鐘不僅可以通過數字直觀地顯示日歷,時間,用音樂及語言報時,還可以定時發(fā)出各種聲,光,電信號,以及啟動各種設備實現實時控制,時間順序控制.如作息時間自動打鈴,家電設備自動定時啟動/停頓,生產過程順序控制等,用途很廣.本課題的要求是:1/設計一個具有時,分,秒計時,6位數字顯示的時鐘電路.2/具有快速校準時,

3、分的校時功能.3/具有仿電臺的自動整點報時功能或者發(fā)出與整點數目相等的音響聲.4/具有一定的擴展功能二.設計要求1/分析設計任務,擬定多種設計方案,根據當時的制作條件選擇其中一種方案繪制系統框圖和設計流程.2/設計各局部單元電路或編寫VHDL描述程序,計算元器件參數,確定元器件型號和數量,提出元件清單.3/安裝調試硬件電路或制作CPLD/FPGA為根底的專用集成芯片ASIC.4/對制作的電路進展功能測試,分析各項技術指標,或對VHDL描述進展功能仿真,對ASIC作硬件測試或脫機運行.5/總結設計各環(huán)節(jié)的資料,整理打印出設計報告(含原理電路,仿真波形).交驗并演示設計制作的電路裝置.方案分析選擇

4、與系統框圖方案分析選擇1/使用的是開發(fā)板,應選擇編寫VHDL描述程序,并結合AltiumDesigner中提供的元件繪制原理圖,下載到開發(fā)板上.2/開發(fā)板上的資源包括:LCD顯示屏,蜂鳴器,鍵盤,撥盤開關,各種頻率的方波信號,各種對外接口,LED燈等.根據板上資源和需要實現的功能,我選擇了使用以下板上資源,并實現以下功能:LCD顯示屏用于顯示時分秒計時蜂鳴器用于整點報時與鬧鈴功能撥盤開關用于時間設定,鬧鈴設定與聲音開關方波信號經過分頻后作為時鐘信號輸入和蜂鳴器發(fā)聲系統原理框圖整點報時模塊聲音模塊蜂鳴器存儲器模塊控制模塊撥盤開關信號發(fā)生器時鐘顯示模塊LCD顯示屏計時模塊硬件原理圖模塊功能分析計時

5、模塊計時模塊具有時,分,秒的計時功能,每收到一個時鐘信號,秒個位計算加一,在各個位加滿時,重新置零,并向下一位進一.同時,輸出端口會把秒個位,秒十位,分個位,分十位,時個位,時十位的8位數字信號輸出到各個模塊.顯示模塊LCD顯示模塊需要將顯示代碼與位置代碼輸入控制模塊并給與脈沖,就會在相應的位置顯示相應的字符,為了使得顯示沒有滯后,因此給較高的脈沖頻率.因為我們要顯示時分秒一共6位數字,因此需要寫一個LCD掃描輸出模塊,時刻顯示變化的時間. LCD掃描輸出需要把計時模塊輸出的8位BCD碼加上48轉化為ASC2碼.并且在時分秒之間參加冒號區(qū)分.存儲器模塊存儲器模塊的地址信號為計時模塊的分個位,分

6、十位,時個位,時十位有效位,寫入的信號由撥盤開關sw4控制,輸出的信號到聲音模塊的使能.寫入開關由撥盤開關sw3控制.在需要鬧鈴的時間寫入一,那么就會讀出一,對聲音模塊使能,使其發(fā)聲.整點報時模塊整點報時模塊的輸入取上圖的幾個關鍵數據,當這些數據都為1時,此時為整點報時的時間,那么對聲音模塊使能,使其發(fā)聲.聲音模塊聲音模塊包括音調選擇以及開關整點報時與鬧鈴的模塊.用來實現不同的要求與功能.仿真下載結果計時模塊仿真圖下載結果第一次下載的時候,因為很多地方都不知道,不是沒接好線就是沒有改名字,造成編譯正常但是無法下載的結果.后來通過自己的摸索與請教他人,終于實現了下載.但是下載后又發(fā)現了許多意想不

7、到的錯誤.用了很長的時間,我才把這些都弄清楚并且解決掉.最后終于實現了自己的預定功能.主要經歷 在電子技術課程設計之前,我先做了單片機課程設計.做單片機課程設計的時候,是一邊拿著板子一邊不斷下載測試,一點點完善程序的,但是當我做電子技術課程設計時,因為板子不在身邊,所以自己在寢室寫的程序無法驗證.因此在這些地方浪費了很多時間,直到我在實驗室待了兩天時間,才把問題解決掉.所以我明白,做這種設計,必須不斷的實踐測試,才能知道自己缺乏在哪里,才知道設計有什么不完善的地方.無論做什么事,如果你手邊有實驗的條件,那么做什么事,學習什么東西都可以事半功倍.還有,經歷很重要.如果是一開場什么都沒有做過,那么

8、各種各樣的問題會接踵而來,而且你不知道從何解決.但是當你有了經歷后,就可以很快知道終究在什么地方出現了問題.在開場階段,如果有一個教師,那一定是無比幸運的事情.他能夠告訴你你需要知道什么,能夠告訴你如何發(fā)現錯誤,那樣就節(jié)省了很多自己摸索的時間.最后一點,要知道規(guī)那么,如果連語言規(guī)那么和軟件規(guī)那么都不知道,那么怎么能好好地設計呢?靠自己的摸索想要摸索規(guī)那么不是不可以,但是也會花太多的時間.所以如果在開場階段能夠看幾本根底的書,不需要記住,只要有印象,那么以后在碰到問題的時候就知道在哪里可以找到解決方法,就可以容易地學習好這個課程.總結起來,電子技術課程設計的學習,如果有3點條件,就可以比擬簡單的

9、入門了.1/看關于語言規(guī)那么,軟件操作的書.熟悉根底.2/多做實驗,從實驗中獲得豐富的經歷.3/多向別人請教.操作指南本設計使用撥盤開關作為控制輸入.sw0為LCD燈開關,打上為關,打下為開.sw1為鬧鈴開關,打上為關,打下開.sw2為整點報時開關, 打上為關,打下開.sw3為鬧鈴寫入開關,打上為關,打下為RAM寫入模式,此時可以利用sw4設定鬧鈴.sw4為鬧鈴設定開關,在sw3為寫入時有效,打上為取消鬧鈴,打下為設定鬧鈴.sw5為時調整,打上為關,打下為開場時調整,此時分秒均置為零,時以每秒1的速度增加.sw6為分十位調整, 打上為關,打下為開場分十位調整,此時分個位和秒均置為零,分十位以每

10、秒1的速度增加.sw7為分十位調整, 打上為關,打下為開場分個位調整,此時秒均置為零,分個位以每秒1的速度增加.提醒,調整時間時,應按一下順序調整.時-分十位-分個位相關代碼整點報時音調選擇模塊clibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity chose is port ( en,chosein,clkin1,clkin2: in std_logic; clkout: out std_logic );end chose;arc

11、hitecture change of chose isbegin process(clkin1,clkin2,en,chosein) begin if en=1 then if chosein=1 then clkout=clkin1; else clkout=clkin2; end if; else clkout=1; end if; end process;end change;計時模塊library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;

12、entity counter is port ( clk,changemint,changemino,changeh: in std_logic; so,st,mino,mint,ho,ht: buffer std_logic_vector(7 downto 0) );end counter;architecture add of counter isbegin process(clk,so,st,mino,mint,ho,ht,changemint,changemino,changeh) begin if rising_edge(clk) then so=so+1; if so=x09 th

13、en st=st+1; so=x00; end if; if (st=x05 and so=x09) or changemino=1 then mino=mino+1; st=x00; so=x00; end if; if (mino=x09 and st=x05 and so=x09) or changemint=1or (changemino=1 and mino=x09) then mint=mint+1; mino=x00; st=x00; so=x00; end if; if (mint=x05 and mino=x09 and st=x05 and so=x09) or chang

14、eh=1 or (changemint=1 and mint=x05) or (changemino=1 and mino=x09 and mint=x5) then ho=ho+1; mint=x00; mino=x00; st=x00; so=x00; end if; if( ho=x09 and mint=x05 and mino=x09 and st=x05 and so=x09) or (changeh=1 and ho=x09) then ht=ht+1; ho=x00; mino=x00; st=x00; so=x00; mint=x00; end if; if(ht=x02 a

15、nd ho=x03 and mint=x05 and mino=x09 and st=x05 and so=x09) or (changeh=1 and ht=x02 and ho=x03) then ht=x00; ho=x00; mino=x00; st=x00; so=x00; end if; end if; end process;end add;聲音開關模塊onoff.vhdlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;enti

16、ty onoff is port ( en,clkin: in std_logic; clkout: out std_logic );end onoff;architecture en of onoff isbegin process(clkin,en) begin if en=1 then clkout=clkin; else clkout=1; end if; end process;end en;鬧鈴音樂模塊ring.vhdlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_

17、logic_unsigned.all;entity ring is port ( clkin1,clkin2,clkin3,clkin4,clk,en: in std_logic; clkout: out std_logic );end ring;architecture change of ring issignal num : integer;begin process(clk,num,clkin1,clkin2,clkin3,clkin4,en) begin if en=1 then if rising_edge(clk) then num=num+1; end if; if num=9

18、 then num=0; end if; if num=1 then clkout=clkin1; elsif num=2 then clkout=clkin2; elsif num=3 then clkout=clkin3; elsif num=4 then clkout=clkin4; elsif num=5 then clkout=clkin4; elsif num=6 then clkout=clkin3; elsif num=7 then clkout=clkin2; elsif num=8 then clkout=clkin1; end if; else clkout=1; end

19、 if; end process;end change;顯示掃屏模塊show.vhdlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity show is port ( clk: in std_logic; data1,data2,data3,data4,data5,data6: in std_logic_vector(7 downto 0); add: out std_logic_vector(3 downto 0); dataout: out std_logic_vector(7 downto 0) );end show;architecture change of show issignal num : integer;begin process(clk,data1,data2,data3,data4,data5,data6,num) begin if rising_edge(clk) then num=num+1; if num=7 then num=0; end if; end if; if num=0 then add=x1; dataout=data1+x30; elsif

溫馨提示

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

評論

0/150

提交評論