版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、單片機原理及接口課程設計報告題 目: 時鐘系統(tǒng)設計 專業(yè)名稱: xxx 班 級: 莆田學院 學 號: xxxx 姓 名: xxxx 2012年 1月 時鐘系統(tǒng)設計一設計說明1.1 設計目的:(1)掌握c51單片機的結構及其內部的定時/計數(shù)器、中斷系統(tǒng)、以及外圍的行列式按鍵和led數(shù)碼管等部件(2)掌握定時/計數(shù)器的結構和原理、中斷處理系統(tǒng)的工作原理及中斷方式處理定時/計數(shù)的工作過程,數(shù)碼管顯示原理(3)設計時鐘系統(tǒng)通過數(shù)碼管顯示及按鍵設置實現(xiàn)時間的準確顯示、鬧鈴和修改(4)學會運用軟件和硬件相結合來實現(xiàn)設計的需要1.2 設計要求:設計一時鐘系統(tǒng),系統(tǒng)具有時鐘功能,能準確顯示時、分、秒。1.3
2、電子數(shù)字鐘實現(xiàn)的主要功能1、 實現(xiàn)正常走時2、 能夠設置時間且待設置位會閃爍顯示3、 具有鬧鈴及設定鬧鈴時間功能4、 具有倒計時功能1.4設計環(huán)境(1) 硬件:計算機一臺(2) windowns操作系統(tǒng) 、 keilc51單片機仿真軟件 、 proteus單片機系統(tǒng)仿真軟件。二、整體設計方案1.硬件電路設計 時鐘的設計,主要采用了at89s52、74hc573、74ls138、晶振、8只共陰led數(shù)碼管,包括顯示模塊,按鍵模塊和揚聲器模塊以及單片機的基礎電路。 1.1方案設計所應用知識 1.1.1.c51單片機介紹(如圖1-1) 89c51單片機有四組8位并行i/o口,記作p0、p1、p2和p
3、3。每組i/o口內部都有8位數(shù)據(jù)輸入緩沖器、8位數(shù)據(jù)輸出鎖存器及數(shù)據(jù)輸出驅動等電路。四組并行i/o端口即可以按字節(jié)操作,又可以按位操作。當系統(tǒng)沒有擴展外部器件時,i/o端口用作雙向輸入輸出口;當系統(tǒng)作外部擴展時,使用p0口作系統(tǒng)地址的低8位、p2口作系統(tǒng)地址的高8位;p0口還可作數(shù)據(jù)時分復用線,p3口有第二功能(如圖1-2),大多與其內部功能部件有關,其中rd、wr是外部數(shù)據(jù)存儲器的寫、讀控制信號。 應注意:當四個并行口在作輸入口使用時,均應先對其寫“1”,以避免誤讀。 圖1-1 89c51 單片機相關引腳 圖1-2 p3口每一位的第二功能1.1.2定時/計數(shù)器8051型單片機有兩個十六位定時
4、/計數(shù)器t0、t1,有四種工作方式,跟定時/計數(shù)器相關的特殊功能寄存器有這樣幾個:表一:方式控制寄存器tmod d7d6d5d4d3d2d1d0gatec/t m1 m0gatec/tm1m0加法計數(shù)寄存器th0、th1 (高八位)tl0、tl1(低八位);定時/計數(shù)到標志tf0、tf1(中斷控制寄存器tcon);定時/計數(shù)器啟??刂莆籺r0、tr1(tcon);定時/計數(shù)器中斷允許位et0、et1(中斷允許寄存ie);定時/計數(shù)器中斷優(yōu)先級控制位pt0、pt1(中斷優(yōu)ip)。tmod的低四位為t0的方式字,高四位為t1的方式字。tmod不能位尋址,必須整體賦值。(1)工作方式選擇位m1、m0
5、 表二:m1、m0的狀態(tài)決定定時器的工作方式m1m0 功 能 說 明 00110101方式0,為13位的定時計數(shù)器方式1,為16位的定時計數(shù)器方式2,為常數(shù)自動重裝入的8位定時計數(shù)器方式3,t0分為兩個8位定時計數(shù)器,t1在該方式時停止 (2)定時和外部事件計數(shù)方式選擇位c/tc/t0為定時器方式;c/t1為外部事件計數(shù)器方式(3)門控位gategate = 0時,且受定時器運行控制位(tr0、tr1)的控制時為軟件啟動。gate = 1時,除受tr0、tr1控制外,還受外部引腳(int0、 int1)輸入電平的控制(為高)為硬啟動。(4)初值的確定:a = tfosc/12 (注意單位);t
6、hx = a / 256;tlx = a % 256;根據(jù)確定初值的公式,三種工作方式下可得以下結論:a.同種方式下,頻率越大,所定的最大時間越來越短;b.同種頻率下,方式1所定的時間最長;c.晶振為6mhz時能定的最大時間100ms,晶振為12mhz時能定的最大時間為50ms1.1.3中斷所謂中斷是指,單片機內部有一個中斷管理系統(tǒng),它對內部的定時器事件、串行通信的發(fā)送和接收事件及外部事件(如鍵盤按鍵動作)等進行自動的檢測判斷,當有某個事件產生時,中斷管理系統(tǒng)會置位相應標志通知cpu,請求cpu迅速去處理。cpu檢測到某個標志時,會停止當前正在處理的程序流程,轉去處理所發(fā)生的事件(針對發(fā)生的事
7、件,調用某一特定的函數(shù),稱為該事件的中斷服務函數(shù)),處理完以后,再回到原來被中斷的地方,繼續(xù)執(zhí)行原來的程序。1.1.4數(shù)碼管顯示原理數(shù)碼管是一種把多個led顯示段集成在一起的顯示設備,有兩種類型:共陰和共陽如圖1-3(a)和(b)。共陽極的就是把多個led顯示段的陽極接在一起,又稱為公共端;共陰極的就是把多個led顯示段的陰極接在一起,稱為公共端。通常數(shù)碼管又分為8段,即8個led顯示段,分別為adp,其中dp是小數(shù)點位段。n位led顯示器有n根位選線和8n根段選線。根據(jù)顯方式不同,位選線與段選線的連接方法不同。段選線控制字符選擇,位選線控制顯示位的亮、滅。數(shù)碼管有兩種顯示方式:靜態(tài)顯示與動態(tài)
8、顯示靜態(tài)顯示方式:各位led的位選線連在一起接地或接+5v;每位led的段選線(adp)各與一個八位并行口相連。動態(tài)顯示方式:將所有l(wèi)ed的段選線并聯(lián)在一起,由一個八位io口控制,而位選線分別由相應的io口線控制(如圖1-4)本設計用的是數(shù)碼管動態(tài)顯示原理,利用人眼的視覺暫留性,依次給出各個數(shù)碼管公共端加有效信號,在此同時給出數(shù)碼管加有效地數(shù)據(jù)信號,當全段掃面速度大于視覺暫留速度時,顯示就會清晰顯示出來。根據(jù)圖1-3(a)和(c)可推導出顯示09的共陰代碼(包括顯示小數(shù)點)即為0時相應的顯示段亮 圖1-3 led顯示器1.2控制器部分方案論證 方案一:時鐘模塊采用ds1302 芯片,功耗實時時
9、鐘電路結構、工作原理及其在實時顯示時間中的應用。它可以對年、月、日、周、日、時、分、秒進行計時。方案二:采用51單片機,用51單片機加以一定的硬件電路,由于使用軟硬件結合的方式,所以電路結構簡單,調試也相對方便。1.3顯示部分的方案論證方案一:采用8段數(shù)碼管led有兩種顯示方式:動態(tài)顯示和靜態(tài)顯示。靜態(tài)顯示式是簡單的將數(shù)碼管的段選與io口相連,另一端接vcc或gnd,動態(tài)顯示則是將多個數(shù)碼管的段選接至同一個io口,位選接入相應的io口,在編程時,分別點亮每一個數(shù)碼管,利用人眼的暫留效果即感覺到數(shù)碼管是一直顯示的。方案二:液晶顯示方式。液晶顯示效果出眾,可以運用菜單項來方便操作但是價格相對比較貴
10、,而且驅動程序相對于led也比較復雜。 圖-2 數(shù)碼管顯示電路1.4最終方案控制器部分選擇at89s52作為始終電路的核心,顯示部分選擇8位8段數(shù)碼管,揚聲器部分由io連接至三極管作為驅動。由此結合單片機課程學習中對實驗面板的了解,做出如下電路: 圖-3 proteus仿真電路如圖,晶振頻率12mhz,p0口接一個上拉排阻,輸出作為控制數(shù)碼管的段控信號,經(jīng)74ls573即8位數(shù)據(jù)鎖存器接到數(shù)碼管中;p2.0-p2.2經(jīng)74hc138連接到數(shù)碼管位選,p27為74hc138的片選信號;p3.7經(jīng)三極管與蜂鳴器相連;四個按鈕分別與p3.0-p3.3相連。2.系統(tǒng)軟件總流程設計流程圖如左圖所示。主程
11、序是先開始,然后啟動定時器,定時器啟動后在進行按鍵檢測,檢測完后,就可以顯示時間,之后再檢測是否響鈴。 圖-4 程序總流圖按鍵處理是先檢測切換功能位是否被按下,如果沒有則顯示保留當前狀態(tài),若按下,則顯示下一個功能(順序為時鐘鬧鐘倒計時循環(huán));判斷以為案件是否按下,如果按下,被設置位就相應的改變(順序為秒分時循環(huán));判斷“+”按鍵是否按下,“+”按鍵如果按下,相對應的被設置位就加1;如果沒有按下,原數(shù)字不變。秒計時是采用中斷方式進行溢出次數(shù)的累積,計滿20次,即得到秒計時。從秒到分,從分到時是通過軟件累加并進行比較的方法來實現(xiàn)的。要求每滿1秒,則“秒”單元中的內容加1;“秒”單元滿60,則“分”
12、單元中的內容加1;“分”單元滿60,則“時”單元中的內容加1;“時”單元滿24,則將時、分、秒的內容全部清零。3.實時時鐘程序設計步驟:(1)計算初值;(2)采用中斷方式進行溢出次數(shù)累計;(3)時鐘顯示:時鐘時間在方位數(shù)碼管上進行顯示,直接通過顯示子函數(shù)完成; (4)響鈴程序:在一定的條件下是蜂鳴器播放聲音;(5)時鐘設置:對相應的設置為堿性加或減操作;(6)中斷服務程序:進行計時操作,并完成對時、分、秒的加或減操作。三程序調試過程:3.1顯示模塊電子時鐘顯示采用數(shù)碼管,顯示模塊采用動態(tài)顯示的方式,即將所有l(wèi)ed的段選線并聯(lián)在一起接至p0,而位選線由74hc138的輸出控制。一次可以推算出顯示
13、的位碼為smg_wei=0xf7,0xf6,0xf5,0xf4,0xf3,0xf2,0xf1,0xf0。正常顯示狀態(tài):默認為走時狀態(tài),按24小時制分別顯示“時時-分分-秒秒”,設置時間狀態(tài):數(shù)碼管時間暫停,同時對應的待設置位會閃爍顯示。判斷當前的顯示狀態(tài),既flag_into標志位。三個flag_int0分別對應時鐘、鬧鐘、倒計時。如下圖所示:圖-6 設置時間時的顯示3.2 走時、倒計時功能走時程序有內部中斷t0完成,把定時器的定時時間定為50ms。這樣,計數(shù)溢出20次即可得到1秒。而計數(shù)20次可以用軟件實現(xiàn)。然后完成通過程序對時、分、秒的加操作。同理,倒計時程序由內部中斷t1完成,硬件定時5
14、0ms,軟件循環(huán)20次得到1秒,通過相應的程序完成時分秒的減操作。并在數(shù)碼管上動態(tài)顯示。綜上所述在設置t0、t1定時器是即將tmod=0x11(0001 0001),thx=-50000/256,tlx=-50000%256,然后將相應的中斷打開即可。走時截圖如下: 3.3 時間設置模塊由于時鐘有三個功能,而這三個功能對應時間內容都是暫時存放在三個對應的數(shù)組(time、alarm、timer)內,所以設置時間時要將待設置的時間裝入一個臨時數(shù)組(time_tmp)內。由于正常顯示時間時,數(shù)碼管是顯示實時時間,而設置時間時,數(shù)碼管則應該暫停顯示,所以在調試時,在設置時間模塊里加了一個讀標志(rea
15、d_flag),當read_flag為1時,本模塊可以讀取相應數(shù)組的時間;反之則不能讀取,如果不能讀取時間則相當于時間一直停止在當前狀態(tài)不變。對于倒計時功能則處理相對簡單,每當進入設置狀態(tài)時,直接置tr1=0,暫停計時。在分別設置過秒、分、時之后,將time_tmp數(shù)組的時間寫入相應的待設置數(shù)組,并且置tr1=1,read_flag=1。進入正常走勢狀態(tài)。3.4 響鈴模塊圖-7 蜂鳴器電路響鈴的原理主要是單片機的某個引腳產生一定頻率的方波,通過驅動電路接入揚聲器,從而產生某一特定頻率的聲音,程序和響鈴有關的有整點報時、鬧鐘和倒計時三個部分,其中鬧鐘和倒計時的響鈴程序除了條件不一樣以外,其他都差
16、不多。只是在響鈴時由于蜂鳴器占用了cpu導致了現(xiàn)實程序無法正常運行。整點時,則是把它設置成56s和58s兩聲約1s低音,進入整點時,一聲高音, 3.5仿真調試 軟件調試部分主要是使用protus 7 professional軟件配合keil進行在線仿真,通過設置斷點來判斷程序有不合實際的地方,并且修改,在最終完成程序以后,將keil生成的hex文件下載到51單片機的學習板上進行硬件仿真,取得了預期的效果。仿真效果如下:圖-8 最終調試結果 四 心得體會 通過了解89c51單片機結構及工作原理和硬件電路定時/計數(shù)器、中斷、行列式鍵盤、數(shù)碼管顯示的工作原理,從而通過keil軟件編寫程序和仿真器結合
17、控制時鐘系統(tǒng)實現(xiàn)基本的準確顯示時間和鬧。通過這次課程設計進一步數(shù)碼管動態(tài)顯示及定時/計數(shù)器的工作原理,掌握keil軟件與仿真器的結合使用。經(jīng)過這次的設計讓自己學會軟件與硬件相結合使用,同時也認識到理論與實際相結合的重要性,只有理論知識是不夠的,只有把理論知識與實踐相結合,多動手多思考,從而提高自己的實踐能力。在設計過程中也發(fā)現(xiàn)自己有很多不足之處,對所學過的知識理解得不夠深刻,掌握得不夠牢固,也不太懂與實際相運用,但是經(jīng)過一周的實訓,還有通過網(wǎng)上查找資料,在老師和同學們的幫助下,不僅鞏固了課堂所學的知識,而且加深了解了89c51單片機中的使用及工作原理。在設計過程中,經(jīng)過老師的指導,學會了獨立畫
18、流程圖來分析程序,只有這樣,才比較清楚地知道自己每一步要做什么,每一步要完成什么任務,而且在程序調試的過程中也容易查錯。 6、附錄:/*主要功能:正常走時、鬧鐘、秒表倒計時、正點報時、設置時間*/#include #define uchar unsigned char#define uint unsigned intuchar s,flag_t1,flag_t0,flag_int0,flag_int1,flag_alarm,flag_read,flag_timer;sbit beep=p37; /蜂鳴器sbit p30=p30; /時間+sbit p31=p31;/時間-uint time=0
19、,5,10,9,5,10,0,1;uint alarm=0,2,10,0,0,10,0,1;uint timer=0,1,10,0,0,10,0,0;uint time_tmp=1,1,10,3,3,10,3,3;unsigned char smg_du=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40;/ 顯示段碼值0123456789-unsigned char smg_wei=0xf7,0xf6,0xf5,0xf4,0xf3,0xf2,0xf1,0xf0;/0,1,2,3,4,5,6,7;/分別對應相應的數(shù)碼管點亮,即位碼voi
20、d delay1ms(uchar x);/大約1ms,軟件延時void smg_dis();/數(shù)碼管顯示函數(shù)void timeset() ;/時間設置函數(shù)void beep_alarm();/蜂鳴器部分void delay1ms(uchar x)uchar i,j; for (i=0; ix; i+)for (j=0; j120; j+)void to(void) interrupt 1/50ms*20次 一秒 用于時鐘th0=-50000/256;tl0=-50000%256;if(flag_t0!=20) flag_t0+;else if (flag_t0=20)flag_t0=0;s+;
21、time0=s;if(s=10)s=0;if(time0=10)time0=0; time1+; /時分秒進位if(time1=6)time1=0; time3+;if(time3=10)time3=0; time4+;if(time4=6)time4=0; time6+;if(time6=4)time6=0; time7+; if(time7=2)time7=0; void t1(void) interrupt 3/50ms*20次 一秒用于倒計時uchar t1_count=0;th0=-50000/256;tl0=-50000%256;if(flag_t0!=20) flag_t1+;e
22、lse if (flag_t0=20)flag_t1=0;timer0-;if(timer0=-1)timer0=9; timer1-; /時分秒退位if(timer1=-1)timer1=5; timer3-;if(timer3=-1)timer3=9; timer4-;if(timer4=-1)timer4=5; timer6-;if(timer6=-1)timer6=0; timer6-;if(timer7=-1)timer7=2;timer7=3; void setint0(void) interrupt 0 /外部中斷 用于設置數(shù)碼管切換顯示時鐘、鬧鐘、倒計時 flag_int0+;
23、delay1ms(2);flag_int1=0;if(flag_int0=3) flag_int0=0; void setint1(void) interrupt 2 /設置時分秒位 flag_int1+;delay1ms(2); void smg_dis() /數(shù)碼管顯示uchar i;for(i=0;i8;i+) p2=smg_weii;if(flag_int0=0)p0=smg_dutimei; /顯示時鐘if(flag_int0=1)p0=smg_dutime_tmpi; /顯示鬧鐘if(flag_int0=2)p0=smg_dutimeri; /顯示倒計時 delay1ms(2);i
24、f(flag_int1=1)if(i!=0&i!=1)delay1ms(10);/設置為閃爍 if(flag_int1=2if(i!=3&i!=4)delay1ms(10); if(flag_int1=3)if(i!=6&i!=7)delay1ms(10);void timeset()/設置時間uchar i;for(i=0;i8;i+) if(flag_read=1&flag_int0=0)time_tmpi=timei; /時鐘時間放入timetmpif(flag_int0=1)time_tmpi=alarmi; /鬧鐘時間放入timetmpif(flag_int0=2)time_tmpi
25、=timeri; /定時時間放入timetmp if(flag_int0=2&flag_int1!=0)tr1=0; /設置倒計時時,t1停止計時if(flag_int1=1) / 設置時間 秒 flag_read=0;if(p30=0)/ /按鍵+按下 時間+time_tmp0+; delay1ms(255);if(time_tmp0=10)time_tmp0=0; time_tmp1+; if(time_tmp1=6)time_tmp1=0; ; if(p31=0) /按鍵+按下 時間-time_tmp0-;delay1ms(255);if(time_tmp0=0)time_tmp0=9;
26、 time_tmp1-; if(time_tmp1=-1)time_tmp1=5; ; if(flag_int1=2) / 設置時間 分 flag_read=0;if(p30=0) time_tmp3+;delay1ms(255);if(time_tmp3=10)time_tmp3=0; time_tmp4+; if(time_tmp4=6)time_tmp4=0; ;if(p31=0)time_tmp3-;delay1ms(255);if(time_tmp3=0)time_tmp3=9; time_tmp4-;/時分秒進位if(time_tmp4=-1)time_tmp4=5; ; if(f
27、lag_int1=3) / 設置時間 時 flag_read=0;if(p30=0) /按鍵+按下 時間+time_tmp6+;delay1ms(255);if(time_tmp6=10)time_tmp6=0; time_tmp7+; if(time_tmp7=2&time_tmp6=4)time_tmp7=0;time_tmp6=0; ;if(p31=0)time_tmp6-;delay1ms(255);if(time_tmp6=-1&time_tmp7=0)time_tmp6=3; time_tmp7- ;if(time_tmp6=-1&time_tmp7=1)time_tmp6=9;
28、time_tmp7- ;if(time_tmp6=-1&time_tmp7=2)time_tmp6=9; time_tmp7- ;if(time_tmp7=-1)time_tmp7=2; for(i=0;i8;i+)if(flag_int0=2)timeri=time_tmpi;if(flag_int0=1)alarmi=time_tmpi;if(flag_int0=0)timei=time_tmpi; if(flag_int1=4) flag_int1=0;flag_read=1; tr0=1; tr1=1; void beep_alarm()/蜂鳴器部分uint i,x;beep=1;if(alarm0=time0&alarm1=time1&alarm3=time3&alarm4=time4&alarm6=time6&alarm7=time7)flag_alarm=1; /flag_alarm為1時是 鬧鐘if(tr1=1&timer0=0&timer1=0&timer3=0&timer4=0&timer6=0&timer7=
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度互聯(lián)網(wǎng)企業(yè)派遣員工網(wǎng)絡安全合同3篇
- 2025年全新公對公借款合同模板下載及服務支持10篇
- 二零二五年度體育館租賃合同附體育賽事推廣及贊助招商服務
- 2025版智能工廠生產線改造施工合同4篇
- 二零二五年度新能源產品銷售代理合作合同范本3篇
- Bobath技術閆秀麗講解
- 2025年度個人藝術品租賃借款合同范本及租賃期限約定
- 2025年室內墻面批白工程售后服務合同
- 二零二五年度戶外廣告照明外接電源供應合同
- 2025年度個人房屋抵押貸款擔保及養(yǎng)老保障服務合同
- 道路瀝青工程施工方案
- 2025年度正規(guī)離婚協(xié)議書電子版下載服務
- 《田口方法的導入》課件
- 內陸?zhàn)B殖與水產品市場營銷策略考核試卷
- 電力電纜工程施工組織設計
- 醫(yī)生給病人免責協(xié)議書(2篇)
- 票據(jù)業(yè)務居間合同模板
- 高中物理選擇性必修2教材習題答案
- 應急預案評分標準表
- “網(wǎng)絡安全課件:高校教師網(wǎng)絡安全與信息化素養(yǎng)培訓”
- 鋰離子電池健康評估及剩余使用壽命預測方法研究
評論
0/150
提交評論