單片機課程設計設計并實現(xiàn)可編倒計時裝置_第1頁
單片機課程設計設計并實現(xiàn)可編倒計時裝置_第2頁
單片機課程設計設計并實現(xiàn)可編倒計時裝置_第3頁
單片機課程設計設計并實現(xiàn)可編倒計時裝置_第4頁
單片機課程設計設計并實現(xiàn)可編倒計時裝置_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、武漢理工大學單片機應用實踐課程設計說明書課程設計任務書學生姓名: 專業(yè)班級: 電信1306班 指導教師: 工作單位: 信息工程學院 題 目: 設計并實現(xiàn)可編倒計時裝置 初始條件:一臺pc機,pc機上裝有單片機開發(fā)軟件;實驗室提供單片機實驗箱,該實驗箱具有各種通用接口供同學們選擇,同學們也可以購置單片機最小系統(tǒng)開發(fā)板作為開發(fā)基礎,也可以全部購置分立元件組裝。要求完成的主要任務: (包括課程設計工作量及其技術要求,以及說明書撰寫等具體要求)1、 設計任務一周內完成可編倒計時裝置的軟硬件設計、仿真、調試及制作。2、 技術要求按秒倒計時,由鍵盤預置分、秒各兩位數(shù),鍵控啟動計時開始,倒計時秒數(shù)用數(shù)碼管顯

2、示,計時器歸零時輸出一音頻信號作為倒計時結束的提示信號。3、 課程設計說明書要求課程設計說明書應包括方案設計、硬件電路設計、軟件設計、資源分配表、調試及結果、性能分析、總結幾大部分。其中性能分析主要分析精度和誤差來源,也可分析裝置的反應速度、成本等。最后附參考文獻。設計說明書格式應符合武漢理工大學課程設計工作規(guī)范要求。時間安排:第 1-2 天:查閱相關資料,熟悉接口實驗平臺及其軟件開發(fā)平臺,完成方案設計。第 3-4 天:完成硬件設計,畫出硬件電路圖。第 5-6 天:軟件設計、仿真。第 7天:制作、調試。第8天:撰寫課程設計說明書。指導教師簽名: 年 月 日系主任(或責任教師)簽名: 年 月 日

3、目錄1 電路方案的設計與硬件選擇111 電源提供方案11.2 系統(tǒng)主體部分方案12 硬件模塊的設計22.1數(shù)碼顯示模塊32.2控制部分及蜂鳴器報警模塊32.3輸入模塊43 軟件設計53.1軟件設計流程圖53.2軟件設計思路及原理63.3資源分配表64 程序代碼及課程設計效果74.1 設計的源程序74.2設計效果展示135 設計中遇到問題的解決及性能分析155.1設計中遇到的問題及解決155.2 性能分析166 總結與體會167 參考文獻171 電路方案的設計與硬件選擇11 電源提供方案 為使模塊穩(wěn)定工作,須有可靠電源。我們考慮了兩種電源方案 方案一:采用獨立的穩(wěn)壓電源。此方案的優(yōu)點是穩(wěn)定可靠,

4、且有各種成熟電路可供選用;缺點是各模塊都采用獨立電源,會使系統(tǒng)復雜,且可能影響電路電平。 方案二:采用單片機控制模塊提供電源。方案的優(yōu)點是系統(tǒng)簡明扼要,節(jié)約成本;缺點是輸出功率不高。 綜上所述,我們選擇第二種方案。1.2 系統(tǒng)主體部分方案本次單片機課程設計要求設計可編程倒計時裝置,其中分和秒都是兩位數(shù)字顯示,鍵盤預先設置要倒計時的時間,按鍵啟動倒計時裝置,數(shù)碼管動態(tài)顯示倒計時的畫面,當?shù)褂嫊r歸零后,發(fā)出聲音,提示倒計時結束。在電路中利用at89s52單片機作為倒計時器的核心控制器,針對需要倒計時的場合實現(xiàn)可調時間的倒計時功能。具體的我們利用單片機的芯片的p3口作為按鍵的掃描接口,p2,p0口作

5、為數(shù)碼管位選和段選接口,定時器t0作為每1秒減一的定時器。當“開始”按鍵按下時開始倒計時,三個預置鍵設置數(shù)碼管分秒數(shù)初值。按鍵啟動后,數(shù)碼管會動態(tài)的進行顯示時間,直到最后歸零。倒計時完成后,通過蜂鳴器發(fā)出指示報警音,基本完成了題目要求實現(xiàn)的功能。由以上分析,我們可分為三個部分進行具體的設計,即輸入模塊、顯示模塊、控制模塊。第一部分是輸入部分,這個部分是用于倒計時的時間設置,采用四個按鍵實現(xiàn)。特點是需要元件少而且經(jīng)濟。第二部分是顯示部分,本設計采用4個共陰數(shù)碼管顯示倒計時時間。由于七段數(shù)碼管需要選通4個,故采用輪詢方式對每一個應該點亮的數(shù)碼管進行操作,按鍵延時采用數(shù)碼管顯示模塊填充,從根本上防止

6、抖動。第三部分是控制部分,利用cpu的中斷,在中斷服務程序中執(zhí)行倒計時,在倒計時完成后,采用蜂鳴器指示計時時間到與否。以上便是對倒計時裝備的三大部分的設計思路,按照上面各個部分的設計,進行具體的設計來細化和實現(xiàn)相關功能。12m晶振獨立按鍵數(shù)碼顯示管stc89c52蜂鳴器圖1-1 系統(tǒng)硬件結構框圖2 硬件模塊的設計圖2-1總體設計硬件電路圖其中包括輸入部分、顯示部分和控制部分,這正好是設計思想的體現(xiàn)。2.1數(shù)碼顯示模塊顯示部分由兩個4位數(shù)碼管組成。采用動態(tài)掃描的方式像是輸出的數(shù)字,當掃描的速度控制合理的時候,由于人眼的暫留效應和數(shù)碼管二極管發(fā)光的余暉效應能動態(tài)顯示輸出的時間。 圖2-1數(shù)碼顯示電

7、路2.2控制部分及蜂鳴器報警模塊 此模塊作為定時時間到后的提示音作用,直接接單片機的端口輸出即可。本次采用的是無源的蜂鳴器,不用接獨立的電源。圖2-2 蜂鳴器報警電路圖2-3 控制部分仿真圖at89s52對輸入和輸出進行對應的控制,同時蜂鳴器可以根據(jù)方波的頻率發(fā)出聲音信號,由此根據(jù)它對計時到與否進行判斷。該設計中蜂鳴器在計時時間到后會一直響。2.3輸入模塊 本次控制的按鍵只有4個,分別為倒計時開始按鍵,加按鍵、減按鍵和切換分秒按鍵。本次采用的是獨立按鍵,直接用電平高低控制。圖2-3 獨立按鍵電路3 軟件設計3.1軟件設計流程圖本次使用c52芯片進行編程,首先初始化將主程序所用的到的子程序、變量

8、等定義。輸出報警信號開始其次還有數(shù)碼顯示程序、獨立按鍵程序、時鐘程序和倒計時程序,系統(tǒng)軟件的程序流程圖和顯示部分流程圖如下:系統(tǒng)初始化yn按鍵設置倒計時時間開始數(shù)碼管開始倒計時倒計時時間是否歸零yn 圖3-1 軟件設計流程圖3-2 顯示子程序流程圖3.2軟件設計思路及原理首先,按下電源開關接通電源,通過獨立按鍵的加、減、切換按鍵設置倒計時初始時間。設置完畢后按下開始鍵,開始倒計時。倒計時的顯示采用動態(tài)掃描,顯示后需要延時。打開第一個數(shù)碼管,顯示數(shù)字,短暫延時后,關閉數(shù)碼管,再打開下一個數(shù)碼管,顯示數(shù)字,延時,關閉該數(shù)碼管,以此類推不斷地重復掃描,顯示。利用定時器中斷程序,在中斷服務程序中進行每

9、秒一次的計時減運算,不斷掃描顯示的過程其實也就是等待中斷的過程。通過不斷對獨立按鍵所接i/o口的掃描,按鍵按下相當于對應端口接地,對應端口為低電平,故檢測到對應端口為低電平時執(zhí)行相應的操作來完成預置數(shù)和開始計時操作。本次可編程倒計時裝置采用的是外置獨立的12m晶振。蜂鳴器需要輸出報警音頻,即需編寫兩種頻率的報警程序,使其更像警報聲,蜂鳴器是否工作也僅需一個i/o口來控制。3.3資源分配表p0口數(shù)碼管段選p3.6蜂鳴器p3.4分秒切換p3.2減p2.0p2.3數(shù)碼管位選p3.5獨立按鍵開始p3.3加表3-1 資源分配表4 程序代碼及課程設計效果4.1 設計的源程序#include #define

10、 uchar unsigned char sbit p2_0 = p20;sbit p2_1 = p21;sbit p2_2 = p22;sbit p2_3 = p23; /四位數(shù)碼管位選sbit key_dec=p32; /減sbit key_add=p33; /加sbit key_change=p34; /切換分,秒sbit key_sta rt=p35; /開始 (一共四位獨立按鍵)sbit beep=p36; /蜂鳴器報警裝置static unsigned char second,minute,hour; /定義分、秒、時和一些變量unsigned int tcount;unsigne

11、d int a;unsigned char m;bit t;uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f; /09數(shù)字void delay500(void) /報警器延時 uchar i; for(i=230;i0;i-);void delayus2x(unsigned char b) /按鍵消抖延時 while(-b);void delayms(unsigned char b) while(b-) /大致延時1ms delayus2x(245); delayus2x(245); void delay(u

12、char i) /顯示延時 uchar j,k; for(j=i;j0;j-) for(k=125;k0;k-);void display() /數(shù)碼管顯示子程序 p0=tableminute/10; p2_0 = 0; delay(5); p2_0 = 1; p0=(tableminute%10& 0x7f); p2_1 = 0; delay(5); p2_1 = 1; p0=tablesecond/10; p2_2 = 0; delay(5); p2_2 = 1; p0=tablesecond%10; p2_3 = 0; delay(5); p2_3 = 1; void main(void

13、)/主程序 while(1) for(a=100;a0;a-) /初始顯示四個0 display(); if(!key_change) /判斷分,秒轉換鍵是否按下 delayms(10); if(!key_change) /延時去抖 t=t; if(t) if(!key_add) /判斷分種加按鍵是否按下delayms(10);if(!key_add) /延時去抖if(minute0)minute-; if(!t) if(!key_add) /判斷秒鐘加按鍵是否按下 delayms(10);if(!key_add) /延時去抖if(second0)second-; if(!key_start)

14、 /判斷開始按鍵是否按下 delayms(10); if(!key_start) /延時去抖break; tmod=0x02; /計時器t0初始化及開中斷 th0=0x06; tl0=0x06; tr0=1; et0=1; ea=1; while(1)/循環(huán)顯示且等待中斷 for(a=100;a0;a-) display(); void t0(void) interrupt 1 using 0 /計時器t0中斷服務程序即計時部分 tcount+; if(tcount=4000) tcount=0; second-;if(minute=0)&(second=0)/蜂鳴器報警 uchar j; w

15、hile(1) for(a=100;a0;a-) display(); for(j=200;j0;j-) beep=beep; /輸出頻率1khz delay500(); /延時500us for(j=200;j0;j-) beep=beep; /輸出頻率500hz delay500(); /延時1ms delay500(); if(second=0xff) second=59; minute-; 4.2設計效果展示 將編寫好的源程序用keil軟件進行編程,編譯,最終生成hex文件,燒寫進單片機內,并在proteus上進行仿真,最后按程序連接電路圖。圖4-1 仿真結果最終效果圖如下:開始時 0

16、0.00圖4-2開始計時效果圖預置時間 03.05圖4-3 預置初始時間效果圖倒計時開始:倒計時到02.46圖4-4 倒計時運行效果圖5 設計中遇到問題的解決及性能分析5.1設計中遇到的問題及解決 問題一:程序編寫完成后,在keil軟件上進行編譯、調試生成hex文件進行仿真,一開始數(shù)碼管顯示不出完整的數(shù)字,但能實現(xiàn)設定初值和倒計時功能。原因及解決方案:經(jīng)再次檢查程序,發(fā)現(xiàn)程序中的0到9的數(shù)碼管編碼用的共陽型的,而實際仿真與實物里都選用了共陰數(shù)碼管,導致顯示不完整,把程序中數(shù)碼管編碼改掉之后就成功顯示了。問題二:程序燒寫完成后,打開單片機,數(shù)碼管不顯示數(shù)字,預置數(shù)可以完成,但是預置數(shù)的過程看不到

17、。原因及解決方案:因為在剛開始預置數(shù)階段掃描獨立按鍵時,沒有在循環(huán)內編寫數(shù)碼管顯示程序。故在掃描獨立按鍵循環(huán)內加入如下程序,問題解決。for(a=100;a0;a-) /初始顯示四個0 display(); 問題三:獨立按鍵預置數(shù)時,按鍵不靈敏需較長時間按下才會起作用。原因及解決方案:按鍵去抖延時過長,將去抖延時適當縮短,此問題有所改善。問題四:計時器歸零時,輸出音頻報警信號,但是此時數(shù)碼管顯示亂碼。原因及解決方案:在蜂鳴器報警循環(huán)程序中沒有寫入合適的數(shù)碼管顯示程序,導致出現(xiàn)亂碼。在蜂鳴器報警循環(huán)中,寫入顯示四個零的程序即可解決,在報警的同時,數(shù)碼管顯示四個零。5.2 性能分析本次課程設計為設

18、計并實現(xiàn)可編倒計時裝置,通過查閱資料,對比選擇方案,最終確定選用四個獨立按鍵控制的倒計時程序。第一步程序調試成功后,生成hex文件,再進行第二步電路仿真,仿真成功后將編寫的代碼燒寫到單片機內,檢測的性能結果基本滿足任務書要求。開機顯示的是00-00,可以通過加、減、切換按鍵設置倒計時的初始時間,按下開時按鍵倒計時開始。倒計時歸零后,蜂鳴器也會發(fā)出報警聲音。不足之處在于按鍵的靈敏度在修改消抖延時后有所改善,但是還是不能達到理想的預期效果,按鍵有時會不靈敏。初步估計原因在于獨立按鍵本身按下接觸不良好以及獨立按鍵的焊接問題。6 總結與體會作為電子信息工程專業(yè)的大三的學生,課程設計對我們來說并不陌生。

19、通過對本次課程設計,我對自己以前所修的c語言和單片機都有了更加系統(tǒng)的認識。更重要的是,本次課程設計讓我初次接觸到了keil軟件和proteus仿真軟件,熟系使用這兩個軟件對我們今后的專業(yè)學習和課設都有很大幫助。同時,在做課設的過程中我認識到自己的很多不足之處,在實際動手操作能力的不足,在進行程序編程時,自己需要,認真審題,看懂題目的要求。課程設計的出發(fā)點就是實現(xiàn)它要求的性能,根據(jù)課題要求,復習相關的知識,查詢相關的資料。由課設條件,找到適合的方案,找到需要的元器件及工具。具體的大致為根據(jù)課程設計的要求和自己所要增加的功能寫好程序流程圖,在程序流程圖的基礎上,根據(jù)芯片的功能寫出相應的程序和增加額外的功能程序。然后再進行程序調試和相應的修改,以達到能夠實現(xiàn)所要求的功能的目的。還

溫馨提示

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

評論

0/150

提交評論