課程設(shè)計(jì)任務(wù)書(shū)
一、任務(wù)及要求
設(shè)計(jì)任務(wù):
利用單片機(jī)為核心設(shè)計(jì)一個(gè)多功能電子表,具有電時(shí)鐘和跑表功能。用做時(shí)鐘時(shí),在顯示器上顯示時(shí)、分、秒,用做跑表時(shí),顯示范圍00時(shí)00分00秒-23時(shí)59分59秒并具有跑表啟動(dòng)和跑表復(fù)位功能鍵。當(dāng)按下啟動(dòng)按鈕跑表開(kāi)始計(jì)時(shí),按下停止按停止計(jì)時(shí),當(dāng)按下復(fù)位按鈕跑表回零。
設(shè)計(jì)要求:
1)確定系統(tǒng)設(shè)計(jì)方案;
2)進(jìn)行系統(tǒng)的硬件設(shè)計(jì);
3)完成必要的參數(shù)計(jì)算與元器件選擇;
4)完成應(yīng)用程序設(shè)計(jì);
5)應(yīng)用系統(tǒng)的硬件和軟件的調(diào)試。
二、進(jìn)度安排
第一周:
周一:集中布置課程設(shè)計(jì)任務(wù)和相關(guān)事宜,查資料確定系統(tǒng)總體方案。
周二~周三:完成硬件設(shè)計(jì)和電路連接
周四~周日:完成軟件設(shè)計(jì)
第二周:
周一~周三:程序調(diào)試
周四~周五:設(shè)計(jì)報(bào)告撰寫(xiě)。周五進(jìn)行答辯和設(shè)計(jì)結(jié)果檢查。
三、參考資料
1、王迎旭等.單片機(jī)原理及及應(yīng)用[M]. 2版.機(jī)械工業(yè)出版社,2012
2、胡漢才.單片機(jī)原理及其接口技術(shù)[M].3版.清華大學(xué)出版社,2010.
3、戴燦金.51單片機(jī)及其C語(yǔ)言程序設(shè)計(jì)開(kāi)發(fā)實(shí)例[M].清華大學(xué)出版社,2010
目錄
第1章 總體方案設(shè)計(jì)
1.1設(shè)計(jì)任務(wù)與要求
1.2設(shè)計(jì)原理或者設(shè)計(jì)思路
第2章 硬件電路設(shè)計(jì)
2.2顯示電路
2.3控制電路
第3章 軟件設(shè)計(jì)
3.1系統(tǒng)主程序
3.2系統(tǒng)子程序
3.3中斷服務(wù)程序
第4章 調(diào)試
4.1系統(tǒng)調(diào)試方法
4.2調(diào)試結(jié)果
4.3調(diào)試中遇到的問(wèn)題及其解決方法
總結(jié)
附錄一
附錄二
第1章 總體方案設(shè)計(jì)
1.1設(shè)計(jì)任務(wù)與要求
1.1.1設(shè)計(jì)任務(wù):
利用單片機(jī)為核心設(shè)計(jì)一個(gè)多功能電子表,具有電時(shí)鐘和跑表功能。用做時(shí)鐘時(shí),在顯示器上顯示時(shí)、分、秒,用做跑表時(shí),顯示范圍00時(shí)00分00秒-23時(shí)59分59秒并具有跑表啟動(dòng)和跑表復(fù)位功能鍵。當(dāng)按下啟動(dòng)按鈕跑表開(kāi)始計(jì)時(shí),按下停止按停止計(jì)時(shí),當(dāng)按下復(fù)位按鈕跑表回零。
1.1.2設(shè)計(jì)要求:
1)確定系統(tǒng)設(shè)計(jì)方案;
2)進(jìn)行系統(tǒng)的硬件設(shè)計(jì);
3)完成必要的參數(shù)計(jì)算與元器件選擇;
4)完成應(yīng)用程序設(shè)計(jì);
5)應(yīng)用系統(tǒng)的硬件和軟件的調(diào)試。
1.2設(shè)計(jì)原理或者設(shè)計(jì)思路
電子跑表的電路由多個(gè)部分組成,如控制按鍵的輸入電路,單片機(jī)的時(shí)鐘電路,復(fù)位電路 ,顯示電路,秒表電路,LED顯示器段碼驅(qū)動(dòng)電路,LED顯示器位碼驅(qū)動(dòng)電路及秒表記錄電路組成。
本電子跑表采用AT89C52單片機(jī)為核心器件,AT89C52是一個(gè)低電壓,高性能CMOS8位單片機(jī),片內(nèi)含8k bytes的可反復(fù)擦寫(xiě)的Flash只讀程序存儲(chǔ)器和256 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲(chǔ)單元,AT89C52單片機(jī)在電子行業(yè)中有著廣泛的應(yīng)用。
AT89C52有40個(gè)引腳,32個(gè)外部雙向輸入/輸出(I/O)端口,同時(shí)內(nèi)含2個(gè)外中斷口,3個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,2 個(gè)讀寫(xiě)口線,AT89C52可以按照常規(guī)方法進(jìn)行編程,也可以在線編程。其將通用的微處理器和Flash存儲(chǔ)器結(jié)合在一起,特別是可反復(fù)擦寫(xiě)的 Flash存儲(chǔ)器可有效地降低開(kāi)發(fā)成本。
將LED數(shù)碼管與單片機(jī)和開(kāi)關(guān)連接,用于顯示時(shí)鐘與跑表。P3.2-P3.4分別接開(kāi)關(guān)K1-K3,P3.5和P3.6接開(kāi)關(guān)K4,P1.0-P1.5接LED數(shù)碼管輸出位碼,P0.0-P0.7輸出顯示段碼。電子跑表是利用單片機(jī)內(nèi)部的定時(shí)器來(lái)實(shí)現(xiàn)的,首先設(shè)置單片機(jī)內(nèi)部的一個(gè)定時(shí)器1對(duì)秒表數(shù)據(jù)處理,定時(shí)器0對(duì)時(shí)間數(shù)據(jù)處理。
在本設(shè)計(jì)中LED數(shù)碼顯示器采用的是共陰極接法,把發(fā)光二極管的陰極連在一起構(gòu)成 公共陰極,使用時(shí)公共陰極接地,每個(gè)發(fā)光二極管的陽(yáng)極通過(guò)電阻與輸入端相連。當(dāng)陽(yáng)極端輸入高電平時(shí),段發(fā)光二極管就導(dǎo)通點(diǎn)亮,而輸入低電平時(shí)則不亮。
第2章 硬件電路設(shè)計(jì) 2.1時(shí)鐘電路
單片機(jī)工作的時(shí)間基準(zhǔn)是由時(shí)鐘電路提供的。在單片機(jī)的XTAL1和XTAL2兩個(gè)管腳,接一只晶振及兩只電容就構(gòu)成了單片機(jī)的時(shí)鐘電路。

圖2.1.1 時(shí)鐘電路
圖2.1.2 單片機(jī)
2.2顯示電路
本設(shè)計(jì)顯示用的是四位七段顯示共陰數(shù)碼管,用來(lái)顯示時(shí)間及跑表參數(shù),LED數(shù)碼管顯示器成本低,配置靈活,與單片機(jī)接口簡(jiǎn)單,在單片機(jī)應(yīng)用系統(tǒng)中廣泛應(yīng)用。
為了將時(shí)間顯示在LED數(shù)碼管上,可采用靜態(tài)顯示法和動(dòng)態(tài)顯示法,由于靜態(tài)顯示法需要譯碼器,數(shù)據(jù)鎖存器等較多硬件,可采用動(dòng)態(tài)顯示法實(shí)現(xiàn)LED顯示,通過(guò)對(duì)每位數(shù)碼管的依次掃描,使對(duì)應(yīng)數(shù)碼管亮,同時(shí)向該數(shù)碼管送對(duì)應(yīng)的字碼,使其顯示數(shù)字。由于數(shù)碼管掃描周期很短和人眼的視覺(jué)暫留效應(yīng),使數(shù)碼管看起來(lái)總是亮的,從而實(shí)現(xiàn)了各種顯示。
LED顯示流程圖如下:
圖2.2.1 顯示程序流程圖
圖2.2.2 LED數(shù)碼顯示管
2.3控制電路
K1鍵:模式選擇,可以讓時(shí)鐘、秒表、時(shí)間設(shè)置及秒表的記錄進(jìn)行切換;
K2鍵:加一、開(kāi)始及暫停,設(shè)置時(shí)間設(shè)置時(shí)可以調(diào)節(jié)時(shí)和分加一,秒表記錄時(shí)可以開(kāi)始和暫停;
K3鍵:切換和清零,當(dāng)需要設(shè)置時(shí)間時(shí),按下K3可以切換‘時(shí)’和‘分’;當(dāng)顯示秒表時(shí),K3具有清零功能;
K4鍵:記錄秒表,電路為秒表功能時(shí),按下K4可以記錄一組秒表數(shù)據(jù),最多可以記錄20組數(shù)據(jù)。
圖2.3 開(kāi)關(guān)控制電路
第3章 軟件設(shè)計(jì)
3.1系統(tǒng)主程序
主要進(jìn)行定時(shí)器的初始化編程,然后反復(fù)調(diào)用顯示子程序的方法,等待中斷的到來(lái)。K1是模式選擇開(kāi)關(guān),當(dāng)K1沒(méi)有按下時(shí),數(shù)碼管表示時(shí)間;當(dāng)K1第一次按下時(shí),數(shù)碼管表示秒表;當(dāng)K1第二次按下時(shí),數(shù)碼管表示時(shí)間設(shè)置,并可以閃爍定位;當(dāng)K1第三次按下時(shí),數(shù)碼管顯示秒表記錄。
主程流程圖如下:單片機(jī)源程序如下:
圖3.1 主程序流程圖
3.2系統(tǒng)子程序
子程序包括時(shí)鐘設(shè)置顯示程序,時(shí)鐘運(yùn)行顯示程序,時(shí)鐘溢出入口程序,跑表暫停,跑表記錄數(shù)據(jù)程序。
3.2.1顯示時(shí)鐘模式
如果K1=0時(shí),程序設(shè)定為12.00.00起始計(jì)時(shí),通過(guò)計(jì)數(shù)方式進(jìn)行滿60秒分鐘位進(jìn)一,滿60分小時(shí)位進(jìn)一,滿24小時(shí)小時(shí)位清零。
3.2.2時(shí)間設(shè)置模式
如果K1=2時(shí),先判斷是否為時(shí)間設(shè)置模式,再判斷K2是否按下,需要判斷是否為誤按,所以需要延時(shí)消抖,然后檢測(cè)用戶需要設(shè)置時(shí)還是分。
設(shè)置分,則跳到59之后重新賦值為0;
設(shè)置時(shí),則跳到23之后重新賦值為0 。
K3每按一次Set0取反,時(shí)分切換,Set0為0時(shí)設(shè)置‘分’,Set0為1時(shí)設(shè)置‘時(shí)’。設(shè)置時(shí)間時(shí)用if語(yǔ)句實(shí)現(xiàn)分和鐘以0.5秒的頻率閃爍。
3.2.3秒表模式
如果K1=1時(shí),先判斷是否為秒表模式,再判斷K2是否按下,需要判斷是否為誤按,所以需要延時(shí)消抖,K2每按一次TR1取反,暫停或開(kāi)始定時(shí)器1,達(dá)到暫停或開(kāi)始秒表的目的。當(dāng)K4按下時(shí)秒表記錄一組數(shù)據(jù)。當(dāng)K3按下時(shí)清除所有秒記錄數(shù)據(jù),并停止定時(shí)器1。
3.2.4秒表記錄顯示模式
如果K1=3時(shí),先判斷是否為秒表記錄顯示模式,再判斷K2是否按下,需要判斷是否為誤按,所以需要延時(shí)消抖,將秒表的記錄分為4組,可存20組數(shù)據(jù)。當(dāng)K3按下時(shí)秒表所有數(shù)據(jù)清零,并停止定時(shí)器1。
定時(shí)器1函數(shù)對(duì)于秒表數(shù)據(jù)處理,每?jī)纱窝h(huán)進(jìn)行一次操作,這樣秒表1(1/10秒位)每加1次為0.1s。當(dāng)秒表1(1/10秒位)加到10時(shí),重新賦值為0,此時(shí)秒表2(秒位)開(kāi)始增加;當(dāng)秒表2(秒位)加到60時(shí),重新賦值為0,此時(shí)秒表3(分位)開(kāi)始增加;當(dāng)秒表3(分位)加到60時(shí),重新賦值為0,此時(shí)秒表4(時(shí)位)開(kāi)始增加;當(dāng)秒表4(時(shí)位)加到10時(shí),重新賦值為0。
定時(shí)器0函數(shù)每溢出10次Time0_bit取反一次,時(shí)間間隔為0.5秒閃爍一次,以達(dá)到時(shí)間設(shè)置模式時(shí),分和時(shí)的閃爍。
3.3中斷服務(wù)程序
中斷服務(wù)程序的作用是進(jìn)行計(jì)時(shí)操作,定時(shí)器0和定時(shí)器1都選擇第1種工作方式。定時(shí)器0和定時(shí)器1裝初值,定時(shí)50ms。
中斷服務(wù)程序流程圖如下:
圖3.3 中斷程序流程圖
第4章 調(diào)試4.1系統(tǒng)調(diào)試方法本次課程設(shè)計(jì)采用的是Proteus仿真軟件進(jìn)行電路的仿真,編程使用Keil生成可執(zhí)行文件加載到單片機(jī)中,通過(guò)對(duì)各個(gè)模塊程序的單步或跟蹤調(diào)試,使程序正確,最后統(tǒng)調(diào)程序,并生成相應(yīng)的*.hex文件。進(jìn)行程序的運(yùn)行和調(diào)試,觀察顯示結(jié)果,根據(jù)顯示的結(jié)果和課題的要求再修改程序,再運(yùn)行查找錯(cuò)誤,直到滿足要求。
4.2調(diào)試結(jié)果K1鍵表示模式選擇,可以讓時(shí)鐘、秒表、時(shí)間設(shè)置及秒表的記錄進(jìn)行切換;
K2表示加一、開(kāi)始及暫停,設(shè)置時(shí)間設(shè)置時(shí)可以調(diào)節(jié)時(shí)間,秒表記錄時(shí)可以開(kāi)始和暫停;
K3表示切換和清零,當(dāng)需要設(shè)置時(shí)間時(shí),按下K3可以切換‘時(shí)’和‘分’;當(dāng)顯示秒表時(shí),K3具有清零功能;
K4表示記錄秒表,電路為秒表功能時(shí),按下K4可以記錄一組秒表數(shù)據(jù)。
圖4.2.1 秒表時(shí)的調(diào)試結(jié)果
圖4.2.2 時(shí)鐘調(diào)試結(jié)果
4.3調(diào)試中遇到的問(wèn)題及其解決方法按下K4記錄秒表數(shù)據(jù)時(shí),當(dāng)記錄次數(shù)大于20時(shí),還是會(huì)繼續(xù)保存數(shù)據(jù),但由于AT89C52單片機(jī)內(nèi)存不夠,保存次數(shù)多了就會(huì)出現(xiàn)亂碼。發(fā)現(xiàn)這個(gè)問(wèn)題后小組成員檢查程序是否有錯(cuò),然后在同學(xué)的幫助下修改了程序。
總結(jié)在課程設(shè)計(jì)第一天,老師帶領(lǐng)我們焊電路板,為之后的實(shí)物連接做準(zhǔn)備,有了上學(xué)期電子實(shí)習(xí)的經(jīng)驗(yàn),這次焊接很迅速,半天就焊好了兩塊電路板,在老師的幫助下順利仿真。
課程設(shè)計(jì)開(kāi)始幾天,基本上沒(méi)有收獲,不知從何下手,不知所措。為了看得更遠(yuǎn),,不妨站在前人的肩膀上,我在整體思路模糊的情況下,在網(wǎng)上找資料。也自己研究了一下Proteus仿真軟件的使用,仔細(xì)研究AT89C52芯片的主要功能及管腳接法,這也就為后面比較成功的仿真出結(jié)果打下了基礎(chǔ)。隨著涉獵的點(diǎn)滴積累,我對(duì)電子跑表的設(shè)計(jì)方案已經(jīng)慢慢醞釀而成,有了方向和不少知識(shí)儲(chǔ)備后,在接下來(lái)的幾天,幾乎每天都有突破,雖然有時(shí)只是一句程序的修改或誕生,但那種收獲一直激勵(lì)著我。當(dāng)然在設(shè)計(jì)過(guò)程中也遇到了一些問(wèn)題,比如秒表記錄次數(shù)超過(guò)20次后會(huì)出現(xiàn)亂碼情況,在老師的指導(dǎo)下,經(jīng)過(guò)一次又一次的思考,一遍又一遍的檢查,我終于發(fā)現(xiàn)了問(wèn)題所在,也暴露了前期我在這方面的知識(shí)欠缺和經(jīng)驗(yàn)不足。實(shí)踐才是檢驗(yàn)真理的唯一標(biāo)準(zhǔn),唯有通過(guò)親自動(dòng)手才能令我們掌握的知識(shí)不再是紙上談兵的東西。
經(jīng)過(guò)一周的課程設(shè)計(jì),我收獲頗多,有深刻的心得體會(huì),實(shí)踐讓我們受益匪淺。首先是單片機(jī)方面,為了順利完成程序的編寫(xiě),我又撿起了大一所學(xué)習(xí)的C語(yǔ)言知識(shí)。其次鍛煉了小組合作的能力,合理的分工讓我們組的課程設(shè)計(jì)按時(shí)完成,并對(duì)本專業(yè)的課程充滿了濃厚的興趣,相信有了興趣,我在以后對(duì)本專業(yè)的學(xué)習(xí)會(huì)更加得心應(yīng)手。在這次過(guò)程中我們也曾灰心也曾茫然,也曾不知所措,從一開(kāi)始的自信滿滿,到最后的緊張繁雜,所有這些都令我回味無(wú)窮,這已經(jīng)成為我人生道路上的寶藏。我想今后的學(xué)習(xí)和工作也是這樣的,汗水見(jiàn)證成功。
附錄一