第一篇:單片機數字時鐘課程設計感想
五.實驗總結及感想
在實驗的開始幾天,基本上沒有收獲,不知何從下手,不知所措。為了看得更遠,不妨站在前人的肩膀上,我在整體思路模糊的情況下,在網上大量招資糧,各種與電子時鐘相關的文章,我閱讀了不少。隨著涉獵的點滴積累,我對電子時鐘的設計方案已經慢慢醞釀而成。有了方向和不少知識儲備后,在接下來的幾天,幾乎每天都有突破,雖然有時只是一句程序的修改或誕生,但那種收獲的感覺很暖人心。
實驗中遇到了不少問題,接下來總結一下,共同探討。
1,按鍵問題。我的設計中,很多功能選擇是通過按鍵開關實現的。在仿真中發現,調整數值時,有時按鍵反應太快,按一次,跳了幾下,使設置時間,日期很不方便。但是仿真多了之后,找到了按鍵(實際上是按鼠標)的節奏,對按鍵的掌控力提高了不少,不怎么會出現跳變的情況了。有些開關我采用了長按鍵的方式來防抖,效果不錯,但是每次都要長按鍵,調整效率太低,我沒有普及。本來想把所有的按鍵都加延時防抖電路,但仿真中感覺對鍵盤的控制力沒提高多少,有時還是會出問題,這個方案放棄了。索性將板子焊接出來了在調試軟件吧,仿真畢竟不是那么“真”啊!實際電路調試中,按鍵反應沒有出現過于靈敏的問題,基本可控制。
出現以上問題,我認為是電路板上焊接點太多,接觸不是很好,影響了信號的傳輸時間,從而解決了按鍵問題!也有可能是按鍵質量問題,接觸不良。
2,P0口開關問題。P0口比較特殊,它存在高阻態,要使其輸入不是高電平就是低電平,就要接上拉電阻,給其高電平輸入。
3,音樂鬧鈴問題。在鬧鈴時間到,鬧鈴提醒時,我的數碼管為熄滅狀態,因為開始我的響鈴程序內,沒有數碼管掃描顯示程序。但加入數碼管顯示子程序后,我的鬧鈴音樂被影響了,一開始不知所措,有點懷疑是顯示程序時間過長,影響音樂的定時(節拍),我就在響鈴程序中加延時模塊,延時長度逐漸提高,最后出現了類似的問題,看來時顯示程序占用時間太長,使音樂每個音符的節拍出現了紊亂,音樂功能被遏制了!魚和熊掌不能兼得,我只能犧牲顯示來獲得音樂鬧鈴,但為了彌補顯示,我設計了閃爍提醒方案,就是在手動或音樂自然停止后,進入當前時間閃爍提示,8秒后若不按返回鍵,則自動跳入主程序。
在仿真中,老師提供的響鈴電路不能實現功能,但是在我的電路板中效果很好,令人費解!4,中斷沖突問題,為了實現秒表,我在T0中斷嵌套了秒表相關進位程序,由于秒表要求精度0.01秒,故我的T0中斷定時為就剛好0.01秒,中斷100次,剛好1秒。秒表確實實現了,但是我的鬧鈴音質變差了。一開始以為是鬧鈴程序存太多冗余環節,影響了T1的音樂輸出中斷,但是檢查程序后,發現沒什么多余的,裁剪無從下手。
在仿真中,我讓音樂模塊運行,發現音質很好。添加T0中斷服務程序,但是將中斷進入的間隔變大,即0.05秒進入一次中斷,發現音質有所下降,有滋滋聲,但比原來的好。最后認定應該是T0中斷過于頻繁,T1音樂頻率發生中斷被打破,當單位時間內被打破的次數達到一定程度時,音符和節拍的對應發生紊亂,最終音質變差。
雖然如此,我的焊接的電路板的表現卻很爭氣,鬧鈴音質可以接受!雖然這次實際表現不錯,但問題還是有的,還是要解決的,我的方案是把秒表程序放在T1中斷服務程序,雖然音樂的發生要用到T1中斷,但是秒表的顯示和鬧鈴音樂的演奏上不會重合在一起,鬧鈴判斷是在主程序,而秒表實現是在秒表子程序,故原本相互矛盾的兩個功能,在T1中斷服務程序中找到了共同的歸宿,和諧相處。
5,顯示數字分隔問題。本實驗中用8個共陰極數碼管顯示日歷及其時間,但是8個數碼管連在一起,顯示過程中不能有效地區分時,分,秒和年,月,日,數碼管是兩兩組合起來,形成某位的十位和個位,故用小數點在適當位置一直保持高亮狀態,形成分隔符,實現方便的讀取數據。具體方法是,將需要小數點位高亮的數碼管找出來,在動態顯示掃描到該數碼管時,先將提取的字段碼的最高位變為1,利用語句 ORL A,#10000000B 實現,修正字碼后,再將字碼送入P1口顯示數字,如此問題得以解決。
6,添加倒計時器嘀嘀聲提示功能。這個功能我用到了T1中斷,作為音調頻率發生器,但是T1已經承擔了音樂鬧鈴的音調發生功能,在此通過設立標志位實現中斷服務程序的轉變。即使我將秒表的實現服務程序放入T1中斷實現,也沒問題,只要選擇標志位判斷就可以了。在此,我們用調整狀態指示燈的狀態來做標志位,具體的說是P0.1口做標志位。
還有一個問題就是如何使鈴聲有間隔的響,這就牽涉到定時,在此我們用硬件定時,即T1中斷的次數作為定時參數。我的設計是音調響0.25秒,然后用T1延時0.5秒,由于計數器工作于方式1時,12MHZ時鐘頻率下時,一次中斷最多定時65536*1us=0.065536秒,為了實現0.5秒的響聲間隔,將T1中斷1次定時為0.05秒,中斷10次后,重新裝音調發生計數初值。對于響鈴時間的設定原理類似,可以有發聲頻率求出一次發聲定時中斷的時間,N次發聲定時中斷后,使時間變化0.25秒,而后轉入發聲間隔定時程序。
設計體會
以前看別人的一個電子表賣十幾塊錢,心里面有點憤憤不平,現在,自己做過一個電子鐘,才發現,其中的不容易,還有艱辛。其實做其他的事情也是一樣,都會經過很多的困難,才能成功。突然想起一句話“不經歷風雨,怎么見彩虹”。其實想想,這一個月,也留下了很多美好的回憶。一分耕耘,一分收獲。只有親自用實踐來驗證這句話,在能得其要領。經過這次單片機課程設計,我從一個單片機實踐的門外漢,已經越升為略知一二的新手。雖然還有很多有關單片機的應用有待學習,但萬變不離其宗,只要深入了解單片的原理,全部知識點,各個細節,一切設計皆有可能。還記得那個晚上通宵達旦仿真,不成功,誓不睡覺,很困了,都還在弄著。卻當仿真成功時,沒有一絲睡意,有的只是心中的喜悅通過這次的設計使我認識到本人對單片機方面的知識知道的太少了,對于書本上的很多知識還不能靈活運用,尤其是對程序設計語句的理解和運用,不能夠充分理解每個語句的具體含義,導致編程的程序過于復雜,使得需要的存儲空間增大。損耗了過多的內存資源。本次的設計使我從中學到了一些很重要的東西,那就是如何從理論到實踐的轉化,怎樣將我所學到的知識運用到我以后的工作中去。只要我們有耐心,夠細心,都可以把它們解決。在大學的課堂的學習只是在給我們灌輸專業知識,而我們應把所學的用到我們現實的生活中去,此次的電子時鐘設計給我奠定了一個實踐基礎,我會在以后的學習、生活中磨練自己,使自己適應于以后的競爭,同時在查找資料的過程中我也學到了許多新的知識,在和同學協作過程中增進同學間的友誼,使我對團隊精神的積極性和重要性有了更加充分的理解。我知道,今后我的路還是很長,我要學的東西也有很多。通過這次實習,我深刻的認識到計算機專業的路的不平坦,但我會以一種良好的態度去迎接每一個挫折和挑戰。
第二篇:數字時鐘課程設計
數字電子技術課程設計報告
一、設計目的
數字鐘是一種用數字電路技術實現時、分、秒計時的裝置,與機械式時鐘相比具有更高的準確性和直觀性,且無機械裝置,具有更更長的使用壽命,因此得到了廣泛的使用。數字鐘從原理上講是一種典型的數字電路,其中包括了組合邏輯電路和時序電路。
因此,我們此次設計與制做數字鐘就是為了了解數字鐘的原理,從而學會制作數字鐘.而且通過數字鐘的制作進一步的了解各種在制作中用到的中小規模集成電路的作用及實用方法.且由于數字鐘包括組合邏輯電路和時敘電路.通過它可以進一步學習與掌握各種組合邏輯電路與時序電路的原理與使用方法.二、設計要求
(1)設計指標
① 時間以12小時為一個周期; ② 顯示時、分、秒;
③ 具有校時功能,可以分別對時及分進行單獨校時,使其校正到標準時間; ④ 計時過程具有報時功能,當時間到達整點前10秒進行蜂鳴報時; ⑤ 為了保證計時的穩定及準確須由晶體振蕩器提供表針時間基準信號。(2)設計要求
① 畫出電路原理圖(或仿真電路圖); ② 元器件及參數選擇; ③ 電路仿真與調試;
④ PCB文件生成與打印輸出。
(3)制作要求
自行裝配和調試,并能發現問題和解決問題。
(4)編寫設計報告
寫出設計與制作的全過程,附上有關資料和圖紙,有心得體會。
三、原理框圖
1.數字鐘的構成
數字鐘實際上是一個對標準頻率(1HZ)進行計數的計數電路。由于計數的起始時間不可能與標準時間(如北京時間)一致,故需要在電路上加一個校時電路,同時標準的1HZ時間信號必須做到準確穩定。通常使用石英晶體振蕩器電路構成數字鐘。
0 / 12
(a)數字鐘組成框圖
2.晶體振蕩器電路
晶體振蕩器電路給數字鐘提供一個頻率穩定準確的32768Hz的方波信號,可保證數字鐘的走時準確及穩定。不管是指針式的電子鐘還是數字顯示的電子鐘都使用了晶體振蕩器電路。一般輸出為方波的數字式晶體振蕩器電路通常有兩類,一類是用TTL門電路構成;另一類是通過CMOS非門構成的電路,本次設計采用了后一種。如圖(b)所示,由CMOS非門U1與晶體、電容和電阻構成晶體振蕩器電路,U2實現整形功能,將振蕩器輸出的近似于正弦波的波形轉換為較理想的方波。輸出反饋電阻R1為非門提供偏置,使電路工作于放大區域,即非門的功能近似于一個高增益的反相放大器。電容C1、C2與晶體構成一個諧振型網絡,完成對振蕩頻率的控制功能,同時提供了一個180度相移,從而和非門構成一個正反饋網絡,實現了振蕩器的功能。由于晶體具有較高的頻率穩定性及準確性,從而保證了輸出頻率的穩定和準確。
(b)CMOS 晶體振蕩器(仿真電路)/ 12 3.時間記數電路
一般采用10進制計數器如74HC290、74HC390等來實現時間計數單元的計數功能。本次設計中選擇74HC390。由其內部邏輯框圖可知,其為雙2-5-10異步計數器,并每一計數器均有一個異步清零端(高電平有效)。
秒個位計數單元為10進制計數器,無需進制轉換,只需將QA與CPB(下降沿有效)相連即可。CPA(下降沒效)與1HZ秒輸入信號相連,Q3可作為向上的進位信號與十位計數單元的CPA相連。
秒十位計數單元為6進制計數器,需要進制轉換。將10進制計數器轉換為6進制計數器的電路連接方法如圖 2.4所示,其中Q2可作為向上的進位信號與分個位的計數單元的CPA相連。
十進制-六進制轉換電路
分個位和分十位計數單元電路結構分別與秒個位和秒十位計數單元完全相同,只不過分個位計數單元的Q3作為向上的進位信號應與分十位計數單元的CPA相連,分十位計數單元的Q2作為向上的進位信號應與時個位計數單元的CPA相連。
時個位計數單元電路結構仍與秒或個位計數單元相同,但是要求,整個時計數單元應為12進制計數器,不是10的整數倍,因此需將個位和十位計數單元合并為一個整體才能進行12進制轉換。利用1片74HC390實現12進制計數功能的電路如圖(d)所示。
(d)十二進制電路
另外,圖(d)所示電路中,尚余-2進制計數單元,正好可作為分頻器2HZ輸出信號轉化為1HZ信號之用。
4.譯碼驅動及顯示單元電路
選擇CD4511作為顯示譯碼電路;選擇LED數碼管作為顯示單元電路。由CD4511把輸進來的二進制信號翻譯成十進制數字,再由數碼管顯示出來。這里的LED數碼管是采用共陰的方法連接的。
計數器實現了對時間的累計并以8421BCD碼的形式輸送到CD4511芯片,再由451/ 12 芯片把BCD碼轉變為十進制數碼送到數碼管中顯示出來。
5.校時電路
數字鐘應具有分校正和時校正功能,因此,應截斷分個位和時個位的直接計數通路,并采用正常計時信號與校正信號可以隨時切換的電路接入其中。即為用COMS與或非門實現的時或分校時電路,In1端與低位的進位信號相連;In2端與校正信號相連,校正信號可直接取自分頻器產生的1HZ或2HZ(不可太高或太低)信號;輸出端則與分或時個位計時輸入端相連。當開關打向下時,因為校正信號和0相與的輸出為0,而開關的另一端接高電平,正常輸入信號可以順利通過與或門,故校時電路處于正常計時狀態;當開關打向上時,情況正好與上述相反,這時校時電路處于校時狀態。
實際使用時,因為電路開關存在抖動問題,所以一般會接一個RS觸發器構成開關消抖動電路,所以整個較時電路就如圖(f)。
(f)帶有消抖電路的校正電路
6.整點報時電路
電路應在整點前10秒鐘內開始整點報時,即當時間在59分50秒到59分59秒期間時,報時電路報時控制信號。
當時間在59分50秒到59分59秒期間時,分十位、分個位和秒十位均保持不變,分別為5、9和5,因此可將分計數器十位的QC和QA、個位的QD和QA及秒計數器十位的QC和QA相與,從而產生報時控制信號。
報時電路可選74HC30來構成。74HC30為8輸入與非門。/ 12 說明:當時間在59分50秒到59分59秒期間時 分十位、分個 位和秒十位均保持不變,分別為5,9和5;因此,可以將分計數器十位的Qc和QA,個位的QD和QA及秒計數器十位的QC和QA相與,從而產生報時控制信號。IO1分計數器十位的Qc和QAIO2U11VCCIO35VVCCX182345V分計數器個位的QD和QAIO456114V_0.5WIO512秒計數器十位的QC和QAIO674HC30D數字鐘設計-整點報時電路部分
四、元器件
1.四連面包板1塊(編號A45)2.鑷子1把 3.剪刀1把
4.共陰八段數碼管6個 5.網絡線2米/人 6.CD4511集成塊6塊 7.CD4060集成塊1塊 8.74HC390集成塊3塊 9.74HC51集成塊1塊 10.74HC00集成塊4塊 11.74HC30集成塊1塊 12.10MΩ電阻5個 13.500Ω電阻14個 14.30p電容2個
15.32.768k時鐘晶體1個 16.蜂鳴器10個(每班)1)芯片連接圖
1)74HC00D
2)CD4511 / 12
3)74HC390D
4)74HC51D
2.面包板的介紹
面包板一塊總共由五部分組成,一豎四橫,面包板本身就是一種免焊電板。面包板的樣式是:
/ 12 面包板的注意事項:
1. 面包板旁一般附有香蕉插座,用來輸入電壓、信號及接地。2. 上圖中連著的黑線表示插孔是相通的。
3. 拉線時,盡量將線緊貼面包板,把線成直角,避免交叉,也不要跨越元件。4. 面包板使用久后,有時插孔間連接銅線會發生脫落現象,此時要將此排插孔做記號。并不再使用。
五、各功能塊電路圖
數字鐘從原理上講是一種典型的數字電路,可以由許多中小規模集成電路組成,所以可以分成許多獨立的電路。
(一)六進制電路
由74HC390、7400、數碼管與4511組成,電路如圖一。
U1A3123U2A12Com74HC00D74HC00DU5SEVEN_SEG_COM_KABCDEFGU3AV1 32Hz 5V141INA1INB21CLR31QA1QB1QC1QD5677126U413DADBDCDD5OAOBOCODOE1211109151474HC390D43~ELOF~BI~LTOGVCC5V4511BD將十進制計數器轉換為六進制的連接方法
(二)十進制電路
由74HC390、7400、數碼管與4511組成,電路如圖二。/ 12 U4A3126U4B4574HC00D74HC00DComU3SEVEN_SEG_COM_KU1AV1 60Hz 5V141INA1INB21CLR31QA1QB1QC1QD5677126U213DADBDCDD5OAOBOCODOE12111091514ABCDEFGVCC5V74HC390D43~ELOF~BIOG~LT4511BD十進制接法測試仿真電路
(三)六十進制電路
由兩個數碼管、兩4511、一個74HC390與一個7400芯片組成,電路如圖三。
(四)雙六十進制電路
由2個六十進制連接而成,把分個位的輸入信號與秒十位的Qc相連,使其產生進位,電路圖如圖四。/ 12
ComComSEVEN_SEG_COM_KU1B6453U1A12U4SEVEN_SEG_COM_KU7U11BABCDEFG64513DADBDCDD5OAOBOCODOE~ELOF~BI~LTOG1211109151421CLR141INA1INB3U10A12ABCDEFG74HC00D74HC00DU3B15122INA2INB142CLR132QA2QB2QC2QD11109U2712674HC00D74HC00DU8A31QA1QB1QC1QD5677126U913DADBDCDD5OAOBOCODOE12111091514VCC5V74HC390D43U1C891011U1D12134511BD74HC390DComVCCU643~ELOF~BI~LTOG5VSEVEN_SEG_COM_K74HC00D74HC00DABCDEFG84511BDComU15C91011U16DSEVEN_SEG_COM_K1213U14U3A131INA1INB21CLR1QA1QB1QC1QD5677126U513DADBDCDD5OAOBOCODOE1211109151474HC00D74HC00DU12B15122INA2INB142CLR132QA2QB2QC2QD111097126U13DADBDCDD5OAOBOCODOEABCDEFG***14V1 100kHz 5V474HC390D43~ELOF~BI~LTOGVCC74HC390D5V43~ELOF~BI~LTOG4511BD4511BD
(五)時間計數電路
由1個十二進制電路、2個六十進制電路組成,因上面已有一個雙六十電路,只要把它與十二進制電路相連即可,詳細電路見圖五。
ComComComComComComU1SEVEN_SEG_COM_KU2SEVEN_SEG_COM_KU4SEVEN_SEG_COM_KU3SEVEN_SEG_COM_KU5SEVEN_SEG_COM_KU6SEVEN_SEG_COM_KABCDEFGABCDEFGABCDEFGVCCVCCABCDEFGABCDEFGABCDEFG5V***45VVCCVCC***49***45V***3121110***01514145V9VCCOG995V99OAOBODOAOBODOAOBODOEOEOCOCOCOFOFOEOGOAOBODOAOBODOAOBODOEOEOCOCOCOFOFOEOGOG~LT~LT~EL~EL~BI~BI~ELDADCDDDADCDDDADC~LT~LT~LTDBDB~EL~EL~EL~BI~BIDADCDDDADCDDDADCDBDB3DBDD~BI5V73DBDD4511BD54511BD******12643U23CU25A74HC00D***8U21A74HC00D13111038U20C74HC00D3U19A74HC00D131110974HC00D9356356772QB1QD2QD2QD1QB1QC2QB2QC2QB2QC1QB1QA2QA2QA1QA1QC1QD2QA2QC2QD61QB2INA1CLR2CLR2CLR1INA1INB2INA2INB2INA2INB1INA1INA1INB74HC00D161CLR74HC390D6151INB74HC00D111CLRU26B74HC390D74HC390N1174HC390N74HC390DU20B1574HC00D1262INB74HC00D74HC00D***242V1 1000Hz 5V時,分,秒計時電路圖
(六)校正電路
由74CH51D、74HC00D與電阻組成,校正電路有分校正和時校正兩部分,電路如圖六。/ 12
142CLRU13AU16B1QA1QC1QDU24DU22BU14AU17BU20DU15AU18B74HC390N43~BI~LT4511BDOGU7U8OFU10VCC4511BDOGU9U114511BDOFU124511BD1010921921254***254IO1VCC正常輸入信號5V校正信號IO2R1U2C9108小時校正電路J110Mohm74HC00D注意:分校時時,不會進位到小時。U11111213910U2DKey = A12R210MohmIO313U2A8123時計數器IO574HC00D1123674HC00D正常輸入信號校正信號IO4R3U3A10Mohm12U2B456分計數器IO64574HC00D74HC51D3J274HC00DKey = B分鐘校正電路分校正時鎖定小時信號輸入R410MohmU3B456圖中采用基本RS觸發器構成開關消抖動電路,其中與非門選用74HC00;對J1和J2,因為校正信號與0相與為0,而開關的另一端接高電平,正常輸入信號可以順利通過與或門,故校時電路處于正常計時狀態,當開關打向上時,情況正好與上述相反,這時電路處于校時狀態。74HC00D數字鐘設計-校時電路部分
(七)晶體振蕩電路
由晶體與2個30pF電容、1個4060、一個10兆的電阻組成,芯片3腳輸出2Hz的方波信號,電路如圖七。
(八)整點報時電路
由74HC30D和蜂鳴器組成,當時間在59:50到59:59時,蜂鳴報時,電路如圖八。/ 12 說明:當時間在59分50秒到59分59秒期間時 分十位、分個 位和秒十位均保持不變,分別為5,9和5;因此,可以將分計數器十位的Qc和QA,個位的QD和QA及秒計數器十位的QC和QA相與,從而產生報時控制信號。IO1分計數器十位的Qc和QAIO2U11VCCIO35VVCCX182345V分計數器個位的QD和QAIO456114V_0.5WIO512秒計數器十位的QC和QAIO674HC30D數字鐘設計-整點報時電路部分
六、總接線元件布局簡圖
整個數字鐘由時間計數電路、晶體振蕩電路、校正電路、整點報時電路組成。
其中以校正電路代替時間計數電路中的時、分、秒之間的進位,當校時電路處于正常輸入信號時,時間計數電路正常計時,但當分校正時,其不會產生向時進位,而分與時的校位是分開的,而校正電路也是一個獨立的電路。
電路的信號輸入由晶振電路產生,并輸入各電路。簡圖如圖九。
七、芯片連接總圖
因仿真與實際元件上的差異,所以在原有的簡圖的基礎上,又按實際布局畫了這張按實際芯片布局的接線圖,如圖十。
八、總結
1. 實驗過程中遇到的問題及解決方法
① 面包板測試
測試面包板各觸點是否接通。
② 七段顯示器與七段譯碼器的測量 / 12 把顯示器與CD4511相連,第一次接時,數碼管完全沒有顯示數字,檢查后發現是數碼管未接地而造成的,接地后發現還是無法正確顯示數字,用萬用表檢測后,發現是因芯片引腳有些接觸不良而造成的,所以確認芯片是否接觸良好是非常重要的一件事。
③ 時間計數電路的連接與測試
六進制、十進制都沒有什么大的問題,只是芯片引腳的老問題,只要重新插過芯片就可以解決了。但在六十進制時,按圖接線后發現,顯示器上的數字總是100進制的,而不是六十進制,檢測后發現無論是線路的連通還是芯片的接觸都沒有問題。最后,在重對連線時發現是線路接錯引腳造成的,改過之后,顯示就正常了。
④ 校正電路
因上面程因引腳接錯而造成錯誤,所以校正電路是完全按照仿真圖所連的,在測試時,開始進行時校時時,沒有出現問題,但當進行到分校時時,發現計數電路的秒電路開始亂跳出錯。因此,電路一定是有地方出錯了,在反復對照后,發現是因為在接入校正電路時忘了把秒十位和分個位之間的連線拿掉而造成的,因此,在接線時一定要注意把不要的多余的線拿掉。
2. 設計體會
通過這次對數字鐘的設計與制作,讓我了解了設計電路的程序,也讓我了解了關于數字鐘的原理與設計理念,要設計一個電路總要先用仿真仿真成功之后才實際接線的。但是最后的成品卻不一定與仿真時完全一樣,因為,再實際接線中有著各種各樣的條件制約著。而且,在仿真中無法成功的電路接法,在實際中因為芯片本身的特性而能夠成功。所以,在設計時應考慮兩者的差異,從中找出最適合的設計方法。通過這次學習,讓我對各種電路都有了大概的了解,所以說,坐而言不如立而行,對于這些電路還是應該自己動手實際操作才會有深刻理解。
3. 對設計的建議
我希望老師在我們動手制作之前應先告訴我們一些關于所做電路的資料、原理,以及如何檢測電路的方法,還有關于檢測芯片的方法。這樣會有助于我們進一步的進入狀況,完成設計 / 12
第三篇:EDA課程設計 數字時鐘
EDA
課程設計報告
一·設計任務
使用硬件描述語言,在CPLD/FPGA上實現一個多功能數字鐘。
二·設計要求
除按鍵、LED、揚聲器、時鐘信號外,整個數字鐘的功能要求在一塊芯片上實現。
a)具有時,分,秒,計數顯示功能,以24小時循環計時; b)具有時間清零功能;
c)具有小時、分鐘和秒鐘調整功能(個位和十位分開調或合起來調)。
d)具有鬧鐘功能,能預設鬧鐘時間,精確到秒。
整個數字鐘只設一個時鐘輸入端口,所需不同頻率信
號在內部分頻實現。(LED掃描頻率設為50Hz以上)。
三·設計方案
設計采用模塊方式,分別為分頻模塊:產生1Hz的脈沖作為秒的輸入,和產生1kHz的脈沖作為數碼管顯示的動態掃描。計時模塊:秒模塊,分模塊,時模塊。鬧鐘模塊,顯示模塊,控制模塊。
四·模塊端口設置
1.分頻模塊
輸入:clkin :
本實驗輸入為50MHz晶振
輸出:clk : 為顯示模塊及始終調節提供1KHz脈沖
clkt: 為計數器模塊提供1Hz脈沖
2.計時模塊
m 是模式按鍵,當m=0 時,進入計時模式,在計時模式下可以進行時間調整。num3,num4 產生加速調整時間,當其值為1 時,可以快速調整時間,該調整時間的頻率由clk 提
供。counta,count1 是手動調節時間。Turn 接按鍵,可以改變當前調節的是小時還是分鐘,長按turn 鍵還可以使秒鐘信號清零。sec1,min1,hour1 輸出的是計時的秒,分,時。
3.鬧鐘模塊
原理:num1,num2 產生加速調整時間,當其值為1 時,可以快速調整時間,該調整時間的
頻率由clk 提供。countb,count2 是手動調節鬧鐘時間。amin,ahour 是輸出的鬧鐘的分鐘和 小時 4.控制模塊
m 是模式按鍵,當m=0 時,指當前輸出的是計時功能;當m=1 時,指當前調整的是
鬧鐘時間;當m=2 時,指當前調整的是計時時間;當m=3 時,此時turn 按鍵可用于跑表的
暫停與開始。change 接按鍵,手動調整時,每按一次,計數器加1;如果長按,則連續快
速加1,用于快速調時和定時;turn 接按鍵,在手動校時功能時,選擇是調整小時,還是分
鐘;若長時間按住該鍵,還可使秒信號清零,用于精確調時。count1,count2,counta,countb 分
別是用來調節計時時間和鬧鐘時間。LD_min,LD_hour,指示當前調節的是分鐘還是小時。5 顯示模塊
輸入:clk--1kHz時鐘,提供高頻掃描
in0、in1…in5--分別為時、分、秒的個位與十位信號
輸出:a、b…g--數碼管輸入
d0、d1…d5--數碼管選通
五.程序。
分頻模塊
module fenpin(clk,clkt,clkin);input clkin;output clk,clkt;reg clk,clkt;reg [31:0]out,t1;
initial t1<=0;initial out<=0;initial clk<=0;initial clkt<=0;
always@(posedge clkin)begin
out<=out+1;
if(out==20000)
begin
out<=0;
clk<=!clk;
end end
always@(posedge clk)
begin
t1<=t1+1;
if(t1==1000)
begin
clkt<=1;
t1<=0;
end
else
clkt<=0;end endmodule
計時模塊 module jishi(clk,clk_1Hz, turn,mode,count1,counta,sec1,min1,hour1,num3,num4);input clk,clkt,turn,num3,num4;input mode;input count1,counta;output [7:0] sec1,min1;output [7:0] hour1;wire clkt,ct1,cta,turn,num3,num4;reg [7:0] sec1=0,min1=0;reg [7:0] hour1=0;reg [1:0] m;wire count1,counta;reg minclk,hclk;always @(posedge mode)//mode 信號控制系統在三種功能間轉換 begin if(m==4)m<=0;else m<=m+1;end /////秒鐘計時模塊////// always @(posedge clkt)
if((sec1==8'h59)|turn&(!m))///////若長時間按住該鍵,還可使秒信號清零,用于精確調時。begin sec1<=0;//按住“turn”按鍵一段時間,秒信號可清零,該功能用于手動精確調時
if(!(turn&(!m)))minclk<=1;///產生進位 end else begin if(sec1[3:0]==4'b1001)begin sec1[3:0]<=4'b0000;sec1[7:4]<=sec1[7:4]+1;end else sec1[3:0]<=sec1[3:0]+1;minclk<=0;end ////////分鐘計時模?/// assign m_clk=minclk||count1;/////m_clk 產生進位或校正改變 assign ct1=(num3&clk)|(!num3&m_clk);//ct1 用于計時、校時中的分鐘計數
always @(posedge ct1)begin if(min1==8'h59)begin min1<=0;hclk<=1;end else begin if(min1[3:0]==9)
begin min1[3:0]<=0;min1[7:4]<=min1[7:4]+1;end else min1[3:0]<=min1[3:0]+1;hclk<=0;end end ////////小時計時模塊/// assign h_clk=hclk||counta;//////h_clk 產生進位或校正改變 assign cta=(num4&clk)|(!num4&h_clk);//cta 用于計時、校時中的小時計數
always @(posedge cta)if(hour1==8'h23)hour1<=0;else if(hour1[3:0]==9)begin hour1[7:4]<=hour1[7:4]+1;hour1[3:0]<=0;end else hour1[3:0]<=hour1[3:0]+1;Endmodule
鬧鐘模塊
module alarm(clk,amin,ahour,num1,num2,count2,countb,LD_alert);input clk,num1,num2,count2,countb;output [7:0] amin;
output [7:0] ahour;output LD_alert;wire LD_alert;reg [7:0] amin=0;reg [7:0] ahour=0;assign ct2=(num1&clk)|(!num1&count2);//ct2 用于定時狀態下調整分鐘信號
assign LD_alert=(ahour|amin)?1:0;//指示是否進行了鬧鈴定時 always @(posedge ct2)if(amin==8'h59)amin<=0;else if(amin[3:0]==9)begin amin[3:0]<=0;amin[7:4]<=amin[7:4]+1;end else amin[3:0]<=amin[3:0]+1;assign ctb=(num2&clk)|(!num2&countb);////ctb 用于定時狀態調節小時信號 always @(posedge ctb)if(ahour==8'h23)ahour<=0;else if(ahour[3:0]==9)begin ahour[3:0]<=0;ahour[7:4]<=ahour[7:4]+1;end else ahour[3:0]<=ahour[3:0]+1;Endmodule 控制模塊
module ctrol(change,turn,count1,count2,counta,countb,pause,LD_min,LD_hour,mode);input change,mode,turn;output count1,count2,counta,countb,pause,LD_min,LD_hour;reg [1:0] m;reg fm=0,count1=0,count2=0,counta=0,countb=0,pause=0,LD_min=0,LD_hour=0;wire mode,turn,change;always @(posedge mode)//mode 信號控制系統在三種功能間轉換 begin if(m==4)m<=0;else m<=m+1;end always @(posedge turn)//////////接按鍵,在手動校時功能時,選擇是調整小時,還是分鐘; begin fm<=~fm;end
always @(m or fm or change)begin case(m)2: begin ////////2:調節時間功能; if(fm)begin count1<=change;{LD_min,LD_hour}<=2;end//////指示當前調整的是分鐘
Else
begin counta<=change;{LD_min,LD_hour}<=1;end/////指示當前調整的是小時 {count2,countb}<=0;end 1: begin //////1:調節鬧鐘功能 if(fm)begin count2<=change;{LD_min,LD_hour}<=2;end/////指示當前調整的是分 else begin countb<=change;{LD_min,LD_hour}<=1;end/////指示當前調整的是小時 {count1,counta}<=0;end
0: begin {count1,count2,counta,countb,LD_min,LD_hour}<=0;end ////0:計時功能 endcase end endmodule 顯示模塊
module show(min1,sec1,amin,hour1,ahour,MSH,MSL,SH,SL,MH,ML,min,sec,hour,mode);input [7:0] min1,sec1,amin;input [7:0] hour1,ahour;input[3:0] MSH,MSL,SH,SL,MH,ML;input mode;output [7:0] min,sec;output [7:0] hour;reg [7:0] min,sec;reg [7:0] hour;reg [1:0] m;always @(posedge mode)//mode 信號控制系統在三種功能間轉換
begin if(m==4)m<=0;else m<=m+1;end always @(min1 or sec1 or amin or hour1 or ahour or m)begin case(m)0: begin hour<=hour1;min<=min1;sec<=sec1;end 1: begin hour<=ahour;min<=amin;sec<=8'hzz;end 2: begin hour<=hour1;min<=min1;sec<=8'hzz;end 3: begin
hour<={SH,SL};
min<={MSH,MSL};sec<={MH,ML};end endcase end Endmodule
六
實驗分析 七
實驗總結
八、參考資料
1、《EDA技術實用教程》
2、實驗箱使用說明;
第四篇:EDA課程設計——數字時鐘
Hefei University
EDA課程綜述
論文題目: EDA課程綜述
專 業: 09通信(2)班
姓 名: 唐吉祥
學 號: 0905072035 指導老師: 查長軍
前
言
隨著基于PLD的EDA技術的發展和應用領域的擴大和深入,EDA技術在電子信息、通信、自動控制及計算機應用領域的重要性日益提高。
作為現在的大學生應熟練掌握這門技術,為以后的發展打下良好的基礎,本實驗設計是應用QuartusII環境及VHDL語言設計一個時間可調的數字時鐘。使自己熟練使用QuartusII環境來進行設計,掌握VHDL語言的設計方法。要注重理論與實踐之間的不同,培養自己的實踐能力!
目錄
一、課程設計任務及要求............................................................................................3
1.1實驗目的..........................................................................................................3 1.2功能設計..........................................................................................................3
二、整體設計思想........................................................................................................3
2.1性能指標及功能設計......................................................................................3 2.2總體方框圖......................................................................................................4
三、詳細設計................................................................................................................4
3.1數字鐘的基本工作原理:..............................................................................4
3.1.1時基T 產生電路..................................................................................4 3.1.2調時、調分信號的產生......................................................................4 3.1.3計數顯示電路.......................................................................................5 3.2設計思路..........................................................................................................5 3.3設計步驟..........................................................................................................6
3.3.1工程建立及存盤...................................................................................6 3.3.2工程項目的編譯...................................................................................7 3.3.3目標芯片的選擇...................................................................................7 3.3.4時序仿真...............................................................................................8 3.3.5引腳鎖定.............................................................................................10 3.3.6硬件測試.............................................................................................11 3.3.7實驗結果.............................................................................................11
四、設計總結..............................................................................................................12
五、附錄......................................................................................................................12
5.1 VHDL源程序..................................................................................................12 5.2配置符號圖....................................................................................................17
一、課程設計任務及要求
1.1實驗目的
1)掌握VHDL語言的基本運用
2)掌握QuartusII的簡單操作并會使用EDA實驗箱 3)掌握一個基本EDA課程設計的操作
1.2功能設計
1)有時、分、秒計數顯示功能,小時為24進制,分鐘和秒為60進制以24小時循環計時
2)設置復位、清零等功能
3)有校時功能,可以分別對時及分進行單獨校時,使其校正到標準時間 4)時鐘計數顯示時有LED燈顯示
二、整體設計思想
2.1性能指標及功能設計
1)時、分、秒計時器
時計時器為一個24進制計數器,分、秒計時器均為60進制計數器。當秒計時器接受到一個秒脈沖時,秒計數器開始從1計數到60,此時秒顯示器將顯示00、01、02、...、59、00;每當秒計數器數到00時,就會產生一個脈沖輸出送至分計時器,此時分計數器數值在原有基礎上加1,其顯示器將顯示00、01、02、...、59、00;每當分計數器數到00時,就會產生一個脈沖輸出送至時計時器,此時時計數器數值在原有基礎上加1,其顯示器將顯示00、01、02、...、23、00。即當數字鐘運行到23點59分59秒時,當秒計時器在接受一個秒脈沖,數字鐘將自動顯示00點00分00秒。2)校時電路
當開關撥至校時檔時,電子鐘秒計時工作,通過時、分校時開關分別對時、分進行校對,開關每按1次,與開關對應的時或分計數器加1,當調至需要的時與分時,撥動reset開關,電子鐘從設置的時間開始往后計時。2.2總體方框圖
三、詳細設計
3.1數字鐘的基本工作原理:
3.1.1時基T 產生電路
數字鐘以其顯示時間的直觀性、走時準確性作為一種計時工具,數字鐘的基本組成部分離不開計數器,在控制邏輯電路的控制下完成預定的各項功能。
由晶振產生的頻率非常穩定的脈沖,經整形、穩定電路后,產生一個頻率為1Hz的、非常穩定的計數時鐘脈沖。
3.1.2調時、調分信號的產生
由計數器的計數過程可知,正常計數時,當秒計數器(60進制)計數到59 時,再來一個脈沖,則秒計數器清零,重新開始新一輪的計數,而進位則作為分計數器的計數脈沖,使分計數器計數加1。現在我們把電路稍做變動:把秒計數器的進位脈沖和一個頻率為2Hz的脈沖信號同時接到一個2選1數據選擇器的兩個數據輸入端,而位選信號則接一個脈沖按鍵開關,當按鍵開關不按下去時(即為0),則數據選擇器將秒計數器的進位脈沖送到分計數器,此時,數字鐘正常工作;當按鍵開關按下去時(即為1),則數據選擇器將另外一個2Hz 的信號作為分計數 器的計數脈沖,使其計數頻率加快,當達到正確時間時,松開按鍵開關,從而達到調時的目的。調節小時的時間也一樣的實現。
3.1.3計數顯示電路
由計數部分、數據選擇器、譯碼器組成,是時鐘的關鍵部分。
1、計數部分:由兩個60進制計數器和一個24 進制計數器組成,其中60 進制計數器可用6 進制計數器和10 進制計數器構成;24 進制的小時計數同樣可用6 進制計數器和10 進制計數器得到:當計數器計數到24 時,“2”和“4”同時進行清零,則可實現24 進制計數。
2、數據選擇器:84 輸入14 輸出的多路數據選擇器,因為本實驗用到了8個數碼管(有兩個用來產生隔離符號‘—’)。
3、譯碼器:七段譯碼器。譯碼器必須能譯出‘—’,由實驗二中譯碼器真值表可得:字母F 的8421BCD 碼為“1111”,譯碼后為“1000111”,現在如果只譯出‘—’,即字母F的中間一橫,則譯碼后應為“0000001”,這樣,在數碼管上顯示的就為‘—’。
3.2設計思路
根據系統設計要求,系統設計采用自頂向下設計方法,由時鐘分頻部分、計時部分、按鍵部分調時部分和顯示部分五個部分組成。這些模塊都放在一個頂層文件中。
1)時鐘計數:
首先下載程序進行復位清零操作,電子鐘從00:00:00計時開始。sethour可以調整時鐘的小時部分, setmin可以調整分鐘,步進為1。
由于電子鐘的最小計時單位是1s,因此提供給系統的內部的時鐘頻率應該大于1Hz,這里取100Hz。CLK端連接外部10Hz的時鐘輸入信號clk。對clk進行計數,當clk=10時,秒加1,當秒加到60時,分加1;當分加到60時,時加1;當時加到24時,全部清0,從新計時。
用6位數碼管分別顯示“時”、“分”、“秒”,通過OUTPUT(6 DOWNTO 0)上的信號來點亮指定的LED七段顯示數碼管。
2)時間設置:
手動調節分鐘、小時,可以對所設計的時鐘任意調時間,這樣使數字鐘真正具有使用功能。我們可以通過實驗板上的鍵7和鍵4進行任意的調整,因為我們用的時鐘信號均是1HZ的,所以每LED燈變化一次就來一個脈沖,即計數一次。3)清零功能: reset為復位鍵,低電平時實現清零功能,高電平時正常計數。可以根據我們自己任意時間的復位。
3.3設計步驟
3.3.1工程建立及存盤
1.打開 QuartusⅡ,單擊“File”菜單,選擇 File→New Project Wizard,對話框如下:分別輸入項目的工作路徑、項目名和實體名,單擊Finish。
2.單擊“File”菜單,選擇New,彈出小對話框,雙擊“VHDL File“,即選中了文本編輯方式。在出現的“Vhdl1.vhd”文本編輯窗中鍵入VHDL程序,輸入完畢后,選擇File→Save As,即出現“Save As”對話框。選擇自己建立好的存放本文件的目錄,然后在文件名框中鍵入文件名,按“Save”按鈕。
3.建立工程項目,在保存VHDL文件時會彈出是否建立項目的小窗口,點擊“Yes”確定。即出現建立工程項目的導航窗口,點擊“Next”,最后在出現的屏幕中分別鍵入新項目的工作路徑、項目名和實體名。注意,原理圖輸入設計方法中,存盤的原理圖文件名可以是任意的,但VHDL程序文本存盤的文件名必須與文件的實體名一致,輸入后,單擊“Finish”按鈕。3.3.2工程項目的編譯
單擊工具條上的編譯符號開始編譯,并隨著進度不斷變化屏幕,編譯完成后的屏幕如圖所示:
3.3.3目標芯片的選擇
選擇菜單 Assignments 選項的下拉菜單中選擇器件 Device ?,如圖所示: 在彈出的對話框中的 Family(器件序列欄)對應的序列名,EP1C3 對應的是 Cyclone 系列。在 Available Devices里選擇 EP1C3T144-C8(有時需要把 Show advanced devices的勾消去,以便顯示出所有速度級別的器件)。注意:所選器件必須與目標板的器件型號完全一致。
在圖中,單擊“Device and Pin Options?”,在彈出的“Device and Pin Options?”窗口中,單擊“Unused Pins”標簽。選擇“As output driving an unspecified signal ”(由于學習機的“FPGA”具有很多功能,為了避免使用引腳對其它器件造成影響,保證本系統可靠工作,將未使用引腳設定為輸出不定狀態)后,單擊確定后,無誤后單擊“OK”。
3.3.4時序仿真
建立波形文件:選擇 File→New,在New窗中選中“Other File”標簽。在出現的屏幕中選擇“Vector Waveform File”項出現一新的屏幕。在出現的新屏幕中,雙擊“Name”下方的空白處,彈出“Insert Nod or Bus”對話框,單擊該對話框的“Node Finder??”。在屏幕中的 Filter 中選擇 Pins,單擊“List”。而后,單擊“>>”,所有輸入/輸出都被拷貝到右邊的一側,這些正是我們希望的各個引腳,也可以只選其中的的一部分,根據實際情況決定。然后單擊屏幕右上腳的 “OK”。在出現的小屏幕上單擊“OK”。
設定仿真時間寬度。選擇 Edit → End time?選項,在End time選擇窗中選擇適當的仿真時間域,以便有足夠長的觀察時間。
波形文件存盤。選擇File→Save as 選項,直接存盤即可。運行仿真器。在菜單中選擇項,直到出現,仿真結束。
未曾編輯的仿真波形
仿真波形 3.3.5引腳鎖定
將設計編程下載進選定的目標器件中,如EPF10K10,作進一步的硬件測試,將設計的所有輸入輸出引腳分別與目標器件的EPF10K10的部分引腳相接,操作如下:
1.選擇 Assignments → Assignments Editor ,即進入 Assignments Editor編輯器。在Category 欄選擇 Pin,或直接單擊右上側的 Pin 按鈕。
2.雙擊 TO 欄的《new》,在出現的的下拉欄中選擇對應的端口信號名(如 D[0]);然后雙擊對應的欄的《new》,在出現的下拉欄中選擇對應的端口信號名的期間引腳號。
3.最后存儲這些引腳鎖定信息后,必須再編譯(啟動)一次,才能將引腳鎖定信息編譯進編程下載文件中。此后就可以準備將編譯好的 SOF 文件下載到試驗系統的FPGA中去了。
引腳鎖定 3.3.6硬件測試
1.首先將下載線把計算機的打印機口與目標板(如開發板或實驗板)連接好,打開電源,選擇模式7。
2.打開編輯窗和配置文件。選擇,彈出一個編輯窗。在Mode欄中選擇JTAG,并在選項下的小方框打勾。注意核對下載文件路徑與文件名。如果文件沒有出現或者出錯,單擊左Add file側按鈕,手動選擇配置文件 clock.sof。
3.最后單擊下載標符Start,即進入對目標器件 FPGA 的配置下載操作。當 Progress 顯示100%,以及在底部的處理欄中出現 Configuration Succeeded 時,表示編程成功,如圖所示。注意,如果必要時,可再次單擊 Start,直至編程成功。
4.下載完成后,通過硬件測試進一步確定設計是否達到所有的技術指標,如未達到,可逐步檢查,哪部分出現問題。如果是代碼出現問題,須修改代碼;若是時序波形圖有問題,須重新設置。
3.3.7實驗結果
實驗箱使用模式7,鍵8為復位按鍵,鍵8為1時正常工作。鍵4設置小時,鍵7設置分鐘。
下載成功后,按下鍵8,及使六個LED復位清零,顯示數秒的自動計時,可以通過4鍵設置小時數,7鍵設置分鐘數。當秒數滿60則進一位,分鐘數滿60進一位,當顯示為23:59:59時,秒數在加一則顯示00:00:00,之后從新計時。
四、設計總結
通過這次課程設計,我進一步加深了對電子設計自動化的了解。并進一步熟練了對QuartusII軟件的操作。在編寫程序的過程中,遇到了很多問題,使我發現自己以前學習上存在的不足。通過與同學探討和請教老師,終于把問題都解決了,并加深了對數字時鐘原理和設計思路的了解。
同時也掌握了做課程設計的一般流程,為以后的設計積累了一定的經驗。做課程設計時,先查閱相關知識,把原理吃透,確定一個大的設計方向,在按照這個方向分模塊的把要實現的功能用流程圖的形式展示。最后參照每個模塊把輸入和輸出引腳設定,運用我們所學的VHDL語言進行編程。總之,通過這次的設計,進一步了解了EDA技術,收獲很大,對軟件編程、排錯調試、相關儀器設備的使用技能等方面得到較全面的鍛煉和提高。
在此,也感謝康老師的悉心指導,使自己學到了很多東西!
五、附錄
5.1 VHDL源程序
Alert模塊
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY alert IS
PORT(clk:IN STD_LOGIC;
dain:IN STD_LOGIC_VECTOR(6 DOWNTO 0);
speak:OUT STD_LOGIC;
lamp:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END alert;ARCHITECTURE fun OF alert IS
SIGNAL count:STD_LOGIC_VECTOR(1 DOWNTO 0);SIGNAL count1:STD_LOGIC_VECTOR(1 DOWNTO 0);
BEGIN speaker:PROCESS(clk)
BEGIN
--speak<=count1(1);
IF(clk'event and clk='1')THEN
IF(dain=”0000000“)THEN
speak<=count1(1);
IF(count1>=”10“)THEN
count1<=”00“;--count1為三進制加法計數器
ELSE
count1<=count1+1;--speak<=count1(0);
END IF;
END IF;
END IF;
END PROCESS speaker;lamper:PROCESS(clk)
BEGIN
IF(rising_edge(clk))THEN
IF(count<=”10“)THEN
IF(count=”00“)THEN
lamp<=”001“;--循環點亮三只燈
ELSIF(count=”01“)THEN
lamp<=”010“;
ELSIF(count=”10“)THEN
lamp<=”100“;
END IF;
count<=count+1;
ELSE
count<=”00“;
END IF;
END IF;
END PROCESS lamper;END fun;Hour模塊
LIBRARY IEEE;use IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY hour IS
PORT(clk,reset:IN STD_LOGIC;
daout:out STD_LOGIC_VECTOR(5 DOWNTO 0));END ENTITY hour;ARCHITECTURE fun OF hour IS SIGNAL count:STD_LOGIC_VECTOR(5 DOWNTO 0);
BEGIN
daout<=count;
PROCESS(clk,reset)
BEGIN
IF(reset='0')THEN count<=”000000“;--若reset=0,則異步清零
ELSIF(clk'event and clk='1')THEN
--否則,若clk上升沿到
IF(count(3 DOWNTO 0)=”1001“)THEN--若個位計時恰好到”1001“即9
IF(count<16#23#)THEN
--23進制
count<=count+7;
--若到23D則
else
count<=”000000“;
--復0
END IF;
ELSIF(count<16#23#)THEN
--若未到23D,則count進1
count<=count+1;
ELSE
--否則清零
count<=”000000“;
END IF;
--END IF(count(3 DOWNTO 0)=”1001“)
END IF;
--END IF(reset='0')
END PROCESS;END fun;Minute模塊
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY minute IS
PORT(clk,clk1,reset,sethour:IN STD_LOGIC;
enhour:OUT STD_LOGIC;
daout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END ENTITY minute;ARCHITECTURE fun OF minute IS SIGNAL count :STD_LOGIC_VECTOR(6 DOWNTO 0);SIGNAL enhour_1, enhour_2: STD_LOGIC;--enmin_1為59分時的進位信號 BEGIN
--enmin_2由clk調制后的手動調時脈沖信號串
daout<=count;
enhour_2<=(sethour and clk1);--sethour為手動調時控制信號,高電平有效
enhour<=(enhour_1 or enhour_2);PROCESS(clk,reset,sethour)
BEGIN
IF(reset='0')THEN--若reset為0,則異步清零
count<=”0000000“;
ELSIF(clk'event and clk='1')THEN--否則,若clk上升沿到
IF(count(3 DOWNTO 0)=”1001“)THEN--若個位計時恰好到”1001“即9
IF(count <16#60#)THEN--又若count小于16#60#,即60
IF(count=”1011001“)THEN--又若已到59D
enhour_1<='1';--則置進位為1
count<=”0000000“;--count復0
ELSE
count<=count+7;--若count未到59D,則加7,即作”加6校正“
END IF;--使前面的16#60#的個位轉變為8421BCD的容量
ELSE
count<=”0000000“;--count復0(有此句,則對無效狀態電路可自啟動)
END IF;
--END IF(count<16#60#)
ELSIF(count <16#60#)THEN
count<=count+1;--若count<16#60#則count加1
enhour_1<='0' after 100 ns;--沒有發生進位
ELSE
count<=”0000000“;--否則,若count不小于16#60# count復0
END IF;--END IF(count(3 DOWNTO 0)=”1001“)
END IF;--END IF(reset='0')
END process;END fun;Second模塊
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY second IS PORT(clk,reset,setmin:STD_LOGIC;
enmin:OUT STD_LOGIC;
daout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END ENTITY second;ARCHITECTURE fun OF second IS SIGNAL count:STD_LOGIC_VECTOR(6 DOWNTO 0);SIGNAL enmin_1,enmin_2:STD_LOGIC;
--enmin_1為59秒時的進位信號
BEGIN
--enmin_2由clk調制后的手動調分脈沖信號串
daout<=count;
enmin_2<=(setmin and clk);--setmin為手動調分控制信號,高電平有效
enmin<=(enmin_1 or enmin_2);--enmin為向分進位信號
PROCESS(clk,reset,setmin)
BEGIN
IF(reset='0')THEN count<=”0000000“;--若reset為0,則異步清零
ELSIF(clk 'event and clk='1')then--否則,若clk上升沿到
IF(count(3 downto 0)=”1001“)then
--若個位計時恰好到”1001“即9
IF(count<16#60#)then--又若count小于16#60#,即60H IF(count=”1011001“)then
--又若已到59D
enmin_1<='1';count<=”0000000“;--則置進位為1及count復0
ELSE
--未到59D
count<=count+7;--則加7,而+7=+1+6,即作”加6校正“
END IF;
ELSE
--若count不小于16#60#(即count等于或大于16#60#)
count<=”0000000“;
--count復0
END IF;
--END IF(count<16#60#)
ELSIF(count<16#60#)then--若個位計數未到”1001“則轉此句再判
count<=count+1;
--若count<16#60#則count加1
enmin_1<='0'after 100 ns;--沒有發生進位
ELSE
--否則,若count不小于16#60#
count<=”0000000“;
--則count復0
END IF;
--END IF(count(3 DOWNTO 0)=”1001")
END IF;
--END IF(reset='0')END PROCESS;END fun;5.2配置符號圖
第五篇:數字時鐘課程設計論文
目錄
1.序論?????????????????????????3 2.本論?????????????????????????4 ——設計說明????????????????????4 ——電路圖?????????????????????5 ——原理圖?????????????????????5 ——振蕩器?????????????????????6 ——分頻器?????????????????????6 ——計數器?????????????????????7 ——譯碼器?????????????????????10 ——校時??????????????????????11 ——鬧鐘??????????????????????12 ——心得??????????????????????12 3.特別感謝???????????????????????14 序論
一、本課程設計的地位和作用
數字電子技術課程設計是電子技術基礎教學中的一個實踐環節,它使學生自己通過設計和搭建一個實用電子產品雛形,鞏固和加深在數字電子技術課程中的理論基礎和實驗中的基本技能,訓練電子產品制作時的動手能力。通過該課程設計,設計出符合任務要求的電路,掌握通用電子電路的一般設計方法和步驟,訓練并提高學生在文獻檢索、資料利用、方案比較和元器件選擇等方面的綜合能力,同時為畢業設計和畢業以后從事電子技術方面的科研和開發打下一定的基礎。
二、課程設計的目的和要求
1.能夠較全面地鞏固和應用“數字電子技術”課程中所學的基本理論和基本方法,并初步掌握小型數字系統設計的基本方法。
2.能合理、靈活地應用各種標準集成電路(SSI、MSI、LSI等)器件實現規定的數字系統。
3.培養獨立思考、獨立準備資料、獨立設計規定功能的數字系統的能力。4.培養獨立進行實驗,包括電路布局、安裝、調試和排除故障的能力。5.培養書寫綜合設計實驗報告的能力。
三、課程設計的基本要求
根據設計任務,從選擇設計方案開始,進行電路設計;選擇合適的器件,畫出設計電路圖;通過安裝、調試,直至實現任務要求的全部功能。對電路要求布局合理,走線清晰,工作可靠,經驗收合格后,寫出完整的課程設計報告
本論
數字鐘電路是一塊獨立構成的時鐘集成電路專用芯片。它集成了計數器,比較器,振蕩器,譯碼器和驅動等電路,能直接驅動顯示時,分,秒,具有定時,報警等多種功能,被廣泛應用于自動化控制,智能化儀表等領域。
一.設計說明
該系統工作原理:
振蕩器產生穩定的高頻脈沖信號,作為數字鐘的時間基準。再經過分頻器輸出標準秒脈沖。秒計數器計滿60后向分計數器進位。分計數計滿60后向時計數器進位。小時計數器按照“24翻1”規律計數。計數器的輸出經譯碼器送給顯示器。計時器出現誤差時可以用校正時電路進行“時校正”,“分校正”,“秒校正”。該系統還有定時鬧鐘功能,該擴展電路必須在主體電路運行正常的情況下才能進行擴展。
總體設計如圖所示:
總體原理圖如下
1.石英晶體振蕩器
晶體振蕩器是構成數字式時鐘的核心,它保證了時鐘的走時準確及穩定。石英晶體振蕩器的特點是頻率準確 , 電路結構簡單 , 頻率易調整。不管是指針式的電子鐘還是數字顯示的電子鐘都使用了晶體振蕩器電路。
2.分頻器
由于產生的脈沖信號并不是我們所需要的1hz信號,所以需要經過分頻電路將脈沖信號分成1HZ的信號。所以我設計了如下的分頻電路:
如圖,因為實驗室的信號為8Mh,所以我用一個七個90的設計圖設計了這樣的分頻電路,分別是一個八分頻器和六個十分頻器,這樣,就能實現輸出一個1HZ的信號了。3.計數器
時間計數電路由秒個位和秒十位計數器,分個位和分十位計數器及時個位和時十位計數器電路構成,其中秒個位和秒十位計數器,分個位和分十位計數器為60進制計數器,而根據設計要求,時個位和時十位計數器為12進制計數器.因為電子鐘由秒、分、時組成。分別為 60 進制和24 進制。采用一片90接成 60 進制 ,74LS90的第一組 4位二進制接成秒的個位 , 另一組接成秒的十位 ,“分”也為60 進制 ,“時”為 24 進制。這兩種進制的次序和二進制完全相同 , 只是模數不是 2 的整冪。當秒脈沖輸入時,電路狀態按二進制自然序列依次遞增1,QA、QB、QC、QD輸出為0000、0001、0010、0011、0100、0101、0110、0111、1000、1001,當輸出為1010也就是10采用反饋置零法清零 , 先按二進制計數器串聯起來構成計數器 , 當計數狀態達到所需的脈沖模值后 , 經過電路譯碼、反饋、產生復位脈沖將計數器清零 , 然后重新開始進行下一個循環。
秒位設計圖如下
分位同秒
分位的設計基本同秒位相同,最關鍵的是星期的設計,如下如
而在星期的設計上則不能再使用90的集成塊,我選擇了161的集成塊,使用了集成塊的置數功能,這樣集成塊在顯示完“7”之后就會直接被置數為“1”,就能實現星期的顯示功能了,設計如圖:
這樣就能實現從秒到星期的全部計數功能了。4.譯碼和顯示
譯碼是把給定的代碼進行翻譯 , 將時、分、秒數器輸出的四位二進制代碼翻譯為相應的十進制 , 并通過LED 顯示器顯示 , 通常LED 顯示器與譯碼器是配套使用的。我們選用的七段譯碼驅動器74LS47或者是CD4511)和數碼管(LED)是共陽接法。LED顯示的3、8 管腳接一起 , 限流電阻為 200Ω和 + 5V接。實際使用時 a、b、c、d、e、f、g 各段都應接一個限流電阻 , 在圖中略畫出來。譯碼顯示電如下圖所示
5.校時電路
前面的電路設計的很傳統很簡單,現在我具體說一下我們設計的校時電路,首先電路圖如下;
校時功能說明,正常情況,01控制器打到1,則,高位進位正常按照低位的進位信號進位不受印象。
校時,01控制器打到0,則,高位進位只按照校時脈沖變化,不受低位進位信號限制,這樣就能使高位變化到我們想要校對的時間的,這是再將01控制器打到1,恢復正常。
6.鬧鐘電路
鬧鐘電路主要就是講所要報時的時間的信號輸入到大與非門中,再統一輸入到蜂鳴器上,所要注意的是,小時的十位,因為十位在顯示“1”和“2”時都會輸出“1”信號,所以這里要格外注意。二.心得體會
本次課程設計好似我目前收獲最大的一次課程設計。我是工科專業的學生,設計是我們將來必需的技能,這次課程設計恰恰給我們提供了一個應用自己所學知識的機會,通過這次對數字電子鐘的設計作,讓我了解了電路設計的基本步驟,也讓我了解了關于數字鐘的原理與設計理念。可以說,本次課程設計有苦也有甜。設計思路是最重要的,只要你的設計思路是成功的,那你的設計已經成功了一半。因此我們應該在設計前做好充分你的準備,像查找詳細的資料,為我們設計的成功打下堅實的基礎。制作過程是一個考驗人耐心的過程,不能有絲毫的急躁,馬虎,對電路的調試要一步一步來,又要求我們有一個比較正確的調試方法,這要求我們靈活處理,要熟練地掌握課本上的知識,這樣才能對試驗中出現的問題進行分析解決。整個電路的設計過程中,花費時間最多的是各個單元電路的連接及電路細節上的設計,如CP脈沖的供給通斷等。在多種方案的選擇中,我們仔細比較分析其原理以及可行的原因,最后還是在老師的耐心指導下,是整個電路設計完成。在設計過程中,我深刻的體會到要反復實踐,其過程相當麻煩,有時花很長時間設計出來的電路還需要重做,那時心中未免有些灰心,有時還特別想放棄,此時更加需要靜下心來,查找原因。總體說來,這次課程設計我受益匪淺,在摸索該如何設計電路使之實現所需要的功能。課設培養了我的設計思維,增加了實際操作能力。在讓我體會到了設計電路的艱辛的同時,更讓我體會到成功的喜悅。