《大工16春《單片機原理》大作業(yè)正確答案》由會員分享,可在線閱讀,更多相關(guān)《大工16春《單片機原理》大作業(yè)正確答案(11頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、
網(wǎng)絡(luò)教育學(xué)院
《單片機原理及應(yīng)用》大作業(yè)
題 目:單片機電子時鐘設(shè)計
學(xué)習(xí)中心:******學(xué)習(xí)中心
層 次:專升本
專 業(yè):*****
2、
年 級:2016年04 春季
學(xué) 號: *****
學(xué)生姓名: *****
基于51單片機的電子時鐘設(shè)計
摘 要:本文介紹了基于51單片機的電子時鐘的設(shè)計,從硬件和軟件兩個方面給出了具體實現(xiàn)過程。該時鐘的設(shè)計采用功能分塊的思想方法,將硬件電路劃分為開關(guān)電路,顯示驅(qū)動電路和數(shù)碼管電路等若干獨立模塊,而軟件的實現(xiàn)則由鬧鐘的聲音程序、時間顯示程序、日期顯示程序,秒表顯示程序,時間調(diào)整程序、鬧鐘調(diào)整程序、定時調(diào)整程序,延時程序等組成。文中給出了各個模塊的電路圖,并用Prot
3、eus的ISIS軟件對電子時鐘系統(tǒng)的各個功能進行了仿真,并給出了相應(yīng)的仿真結(jié)果圖像。
關(guān)鍵詞:單片機;電子時鐘;鍵盤控制
一、引言
1957年,Ventura發(fā)明了世界上第一個電子表,從而奠定了電子時鐘的基礎(chǔ),電子時鐘開始迅速發(fā)展起來?,F(xiàn)代的電子時鐘是基于單片機的一種計時工具,采用延時程序產(chǎn)生一定的時間中斷,用于一秒的定義,通過計數(shù)方式進行滿六十秒分鐘進一,滿六十分小時進一,滿二十四小時小時清零。從而達到計時的功能,是人們?nèi)粘I畈豢扇鄙俚墓ぞ摺,F(xiàn)在高精度的計時工具大多數(shù)都使用了石英晶體振蕩器,由于電子鐘、石英鐘、石英表都采用了石英技術(shù),因此走時精度高,穩(wěn)定性好,使用方便,不需要經(jīng)常調(diào)試
4、,數(shù)字式電子鐘用集成電路計時時,譯碼代替機械式傳動,用LED顯示器代替指針顯示進而顯示時間,減小了計時誤差,這種表具有時、分、秒顯示時間的功能,還可以進行時和分的校對,片選的靈活性好。
二、時鐘的基本原理分析
利用單片機定時器完成計時功能,定時器0s中斷一次并當(dāng)作一個計數(shù),設(shè)定定時1秒的中斷計數(shù)初值為100,每中斷一次中斷計數(shù)初值減1,當(dāng)減到0時,則表示1s到了,秒變量加1,同理再判斷是否1min鐘到了,再判斷是否1h到了。
三、時鐘設(shè)計分析
針對要實現(xiàn)的功能,采用AT89S51單片機進行設(shè)計,AT89S51 單片機是一款低功耗,高性能CMOS8位單片機,片內(nèi)含4KB在線可編程(ISP
5、)的可反復(fù)擦寫1000次的Flash只讀程序存儲器,器件采用高密度、非易失性存儲技術(shù)制造,兼容標準MCS- 51指令系統(tǒng)及80C51引腳結(jié)構(gòu)。這樣,既能做到經(jīng)濟合理又能實現(xiàn)預(yù)期的功能。
在程序方面,采用分塊設(shè)計的方法,這樣既減小了編程難度、使程序易于理解,又能便于添加各項功能。程序可分為鬧鐘的聲音程序、時間顯示程序、日期顯示程序,秒表顯示程序,時間調(diào)整程序、鬧鐘調(diào)整程序、定時調(diào)整程序,延時程序等。運用這種方法,關(guān)鍵在于各模塊的兼容和配合,若各模塊不匹配會出現(xiàn)意想不到的錯誤。
首先,在編程之前必須了解硬件結(jié)構(gòu)尤其是各引腳的用法,以及內(nèi)部寄存器、存儲單元的用法,否則,編程無從下手,電路也無法設(shè)
6、計。這是前期準備工作。第二部分是硬件部分:依據(jù)想要的功能分塊設(shè)計設(shè)計,比如輸入需要開關(guān)電路,輸出需要顯示驅(qū)動電路和數(shù)碼管電路等。第三部分是軟件部分:先學(xué)習(xí)理解匯編語言的編程方法再根據(jù)設(shè)計的硬件電路進行分塊的編程調(diào)試,最終完成程序設(shè)計。第四部分是軟件畫圖部分:設(shè)計好電路后進行畫圖,包括電路圖和仿真圖的繪制。第五部分是軟件仿真部分:軟硬件設(shè)計好后將軟件載入芯片中進行仿真,仿真無法完成時檢查軟件程序和硬件電路并進行修改直到仿真成功。第六部分是硬件實現(xiàn)部分:連接電路并導(dǎo)入程序檢查電路,若與設(shè)計的完全一樣一般能實現(xiàn)想要的功能。
四、時鐘的設(shè)計
1. 整體設(shè)計
此次設(shè)計主要是應(yīng)用單片機來設(shè)計電子
7、時鐘,硬件部分主要分以下電路模塊:顯示電路用8個共陰數(shù)碼管分別顯示,星期(年份),小時、分鐘(月份)和秒(日),通過動態(tài)掃描進行顯示,從而避免了譯碼器的使用,同時節(jié)約了I/0端口,使電路更加簡單。單片機采用AT89S51系列,這種單片機應(yīng)用簡單,適合電子鐘設(shè)計。
電路的總體設(shè)計框架如下:
單片機
輸入部分
晶振和復(fù)位
輸出部分
2. 分塊設(shè)計
模塊電路主要分為:輸入部分、輸出部分、復(fù)位和晶振電路。
2.1 輸入部分
輸入信號主要是各種模式選擇和調(diào)整信號,由按鍵開關(guān)提供。
以下為輸入部分樣例:
在本實驗中主要用用P3口輸入
8、按鍵信號,還用到了特殊的P0口。對于P0口,由于其存在高阻狀態(tài),為了實現(xiàn)開關(guān)功能,給其添加上拉電阻,具體如下圖所示:
2.2 輸出部分
本電路的輸出信號為7段數(shù)碼管的位選和段選信號,鬧鈴脈沖信號,提示燈信號。
本實驗的數(shù)碼管是共陰的,為了防止段選信號不能驅(qū)動數(shù)碼管,故在P1口連接上拉電阻后,再送段選信號,以提高驅(qū)動,位選信號直接從P2口接入,如下圖:
鬧鈴由P2.6端輸出,模塊如下:
2.3 晶振與復(fù)位電路
本實驗單片機時鐘用內(nèi)部時鐘,模塊如下:
復(fù)位電路為手動復(fù)位構(gòu)成,模塊如下:
各模塊拼接組合,電路總體設(shè)計圖如下:
B.1 程序總體設(shè)計
本實
9、驗用匯編程序完成.
程序總的流程圖如下:
主程序開始
顯示星期,時,
分,秒
是否有調(diào) 轉(zhuǎn)?
T0中斷
秒,分,時等進位
閃爍提示
顯示日期并調(diào)整
響鈴提示
時間調(diào)整
鬧鈴設(shè)置
定時設(shè)置
鈴聲測試
秒表模式
回主程序
定時到
按0鍵
按0鍵
鬧鈴到
按1鍵
按2鍵
按3鍵
按4鍵
按5鍵
按7鍵
7鍵恢復(fù)
按4鍵
按8鍵
按0鍵
按0鍵
倒計時啟動并顯示
回主程序
秒表暫停
秒表清零
回主程序
按7鍵
10、
B.2 程序主要模塊
B.2.1 延時模塊
數(shù)碼管顯示動態(tài)掃描時,用到延時程序,這里使用延遲1ms的程序,此程序需反復(fù)調(diào),除數(shù)碼管動態(tài)掃描外,數(shù)碼管的閃爍提示,以及音樂模塊也用到了延時,只是延時的長短不同罷了 。
本實驗中,計數(shù)器T0,T1中斷都有運用,其中T0中斷為時鐘定時所用,T1中斷用于音樂播放。T0的定時長度為0.01s,工作于方式1,計數(shù)1次,時長1us,故計數(shù)器計數(shù)10000次,進入中斷,計數(shù)初值為65536-10000=55536=#0D8F0,裝滿定時器需要0.01s的時間,從而100次中斷為一秒,一秒之后,判斷
11、是否到60秒,若不到則秒加一,然后返回,若到,則秒賦值為0,分加一,依次類推。包括日期顯示的功能也是如此。另外,由于要實現(xiàn)倒計時功能,因此在中斷程序中還要加入減一的寄存器,需要時將其進行顯示?;谝陨峡紤],以R3為倒計時中的秒,R4為倒計時的分,當(dāng)秒加1時R3減一,減到0之后,秒賦值為59,分減一,直到分為0。
計數(shù)器T1工作于方式1, 當(dāng)調(diào)用響鈴程序時,其計數(shù)功能開啟,為音樂音調(diào)不同頻率的方波的形成,提供延時。其中斷服務(wù)程序就是根據(jù)音調(diào)改變音樂方波輸出口電平的高低,用語句 CPL實現(xiàn)。
中斷服務(wù)程序中日歷的實現(xiàn)較為復(fù)雜,要考慮平年,閏年,特殊的2月,每月的天數(shù)的不盡相同。具體的邏輯判斷
12、方法為:首先,要考慮年份是不是閏年,閏年的判斷方法是:將年份除以100,若能整除,則將年份除以400,若還能整除,則為閏年,若不能,則為平年;若不能被100整除,則判斷是否能被4整除,若能,則為閏年,若不能則為平年。只有2月與平、閏年相關(guān),因此在閏年和平年的子程序中,要判斷是不是2月,若是則在相應(yīng)的年中進行日期的增加,若不是則轉(zhuǎn)入平時的月份。其中1、3、5、7、8、10、12月是每月31天,4、6、9、11月為每月30天。
日歷進位判斷流程圖如下
年份能否被100整除
N
Y
年份是否能被4整除
年份是否能被400整除
N
N
平年
閏年
Y
Y
是不
13、是2月
是不是2月
Y
日>=28之后返回為1
N
N
Y
日>=29之后返回為1
若月份為1、3、5、7、8、10、12月則調(diào)用31天的程序
若月份為4、6、9、11則調(diào)用30天的程序
本實驗用8個數(shù)碼管,剛好能顯示年,月,日,掃描顯示與時間的掃描顯示類似。年比較特殊,由兩個寄存器存儲,個位,十位為0時,表明年數(shù)能被100整除,若此時千位,百位
組成兩位數(shù)能被4整除,則年數(shù)被400整除,為閏年。若十位,個位組成兩位數(shù)能被4整除,則年數(shù)能被4整除,為閏年。
主程序主要對按鍵進行掃描,以及判斷定時和鬧鈴時間是否已到,
14、若到則調(diào)用相關(guān)程序。
B.2.4 顯示子程序
8個數(shù)碼管輪流進行顯示,分別顯示1ms,依賴人的視覺 暫留效應(yīng),給人以數(shù)碼管持續(xù)高亮的錯覺。
日期的顯示,秒表的顯示,倒計時的顯示,調(diào)鬧鈴,調(diào)定時的顯示,閃爍的顯示程序與以上的的掃描相似,有的以子程序的方式出現(xiàn),通過子程序調(diào)用語句ACALL調(diào)用;有點直接嵌套在相應(yīng)的程序里面,順序執(zhí)行,或者用調(diào)轉(zhuǎn)語句AJMP調(diào)用。
C 程序調(diào)試及仿真
本程序通過Keil單片機開發(fā)平臺實現(xiàn)程序的編譯,鏈接,生成HEX文件。通過Keil和硬件仿真平臺Proteus的聯(lián)合,可以將設(shè)計效果仿真出來,根據(jù)效果,有目的的改變設(shè)計,優(yōu)化程序。
利用Proteus仿真實驗過程截圖:
普通時間顯示模式仿真圖,表示:星期一 9點10分38秒
五、總結(jié)
本文先從整體論述了設(shè)計電子鐘的大致思路,然后再采用劃分模塊的方法,將硬件電路劃分為開關(guān)電路,顯示驅(qū)動電路,以及數(shù)碼管電路等,而軟件部分,則依據(jù)要實現(xiàn)的功能,劃分為:鬧鐘的聲音程序,時間顯示程序,日期顯示程序,秒表顯示程序,時間調(diào)整程序、鬧鐘調(diào)整程序、定時調(diào)整程序,延時程序等。最后將各模塊集成為一個整體,合成一個多功能的電子鐘。