本文主要以“加、減計時器的設計和實現”為例,詳細介紹了單片機的設計和制作。
一、設計要求
該設計即可做日常用的鬧表,又可做體育比賽中的計時器。其設計時間達到23:59:59。設計功能要求如下:
(一)、設置在任意時刻開始加計時或減計時的控制開關;
(二)、設置可設定初值開關:設置秒初值開關、設置分初值開關、設置時初值開關;
(三)、設置定時鬧鈴開關;
(四)、設置在任意時刻人為暫停開關,并使鬧鈴有鈴聲;
控制部分用單片機AT89C51來實現。
顯示部分用共陰極8段數碼管,其中時、分、秒的分段“:”,將分、秒的十位數碼管倒置與時、分個位的點組合而成。用AT89C51的P0.0~P0.7并接6個數碼管做時、分、秒的顯示。
選擇7個按鈕開關分別做:
1、加、減控制開關SW1,接單片機AT89C51的1.4口;2、定時開關:S(調秒)、M(調分)、H(調時)分別接單片機AT89C51的P1.0、P1.1、P1.2口。
3、定時鬧鈴開關SW3接單片機AT89C51的P1.6口與蜂鳴器的“+”連接;
4、暫停開關SW2接單片機AT89C51的P1.4口;
5、關閉顯示開關SW4接6個數碼管的供電端。
電路原理圖如下圖所示:
三、軟件編程
程序由五部分組成:
(1)主程序START:用于初始化,流程圖如下圖;
(2)調試功能程序NK1用于判斷按鍵S、M、H是否按下,若有按下則調整計時器初值。當S按下一次則秒增加1秒,按下的次數與秒增加值一樣;同樣的M、H按下的次數與其增加值都對應。流程圖如下圖。
(3)取時、分、秒BCD碼程序DISP
用于取出時、分、秒的BCD碼,并把秒的BCD碼存放于40H、41H單元,分的BCD碼存放于42H、43H單元,時的BCD碼存放于44H、45H單元。
(4)顯示子程序INT_T0用于把時、分、秒送到數碼管顯示,并當SW1未按下時,實現加計時。流程圖如下圖。
(5)減計時子程序JIANJISHU當SW1按下時實現減計時。流程圖如下圖。
(6)INU1用于整點和暫停時響鈴。流程圖如下圖。
四、程序仿真調試和燒錄
單片機軟件很多,其中可以軟件仿真的軟件如Keil C51(3)。該設計中的程序可以通過Keil C51中的Dpj8.dll仿真。仿真的時候,把程序中的S、M、H分別用P3.2、P3.3、P3.4代替,仿真以下程序,可以看到時鐘的加計時功能和時、分、秒的調節功能的實現。再把SW1、SW2分別用P3.3、P3.4代替,仿真以下程序,可以看到減計時和暫停功能的實現。
當仿真無誤后,用對應的燒錄器把程序燒錄到單片機中,然后插到電路板上進行調試。
五、安裝與調試
1、AT89C51最好不要直接焊接在電路板內,應先用一個與之對應的插座焊接,以方便修改調試程序。
2、數碼管要先用萬用表測量各個引腳,且判斷出是共陰還是共陽的數碼管。把兩個數碼管倒裝(如附圖把數碼觀的小數點用于顯示時與分、分與秒之問的“:“。
3、全部焊接好后,就對單片機編程調試;31腳()接高電平即VCC。
-
單片機
+關注
關注
6043文章
44621瀏覽量
638567 -
計時器
+關注
關注
1文章
426瀏覽量
32861
發布評論請先 登錄
相關推薦
評論