崔紫騰+李小蕊
摘 要:文中設(shè)計(jì)了基于單片機(jī)技術(shù)原理的簡(jiǎn)易秒表,該設(shè)計(jì)以AT89C52芯片作為核心元件,采用C語(yǔ)言為開(kāi)發(fā)工具,通過(guò)數(shù)碼管顯示計(jì)時(shí)結(jié)果,并以Proteus和Keil軟件作為開(kāi)發(fā)平臺(tái),對(duì)所設(shè)計(jì)的數(shù)字秒表進(jìn)行仿真,調(diào)試及優(yōu)化設(shè)計(jì),并觀察實(shí)際的工作狀態(tài),從而達(dá)到預(yù)期效果。
關(guān)鍵詞:?jiǎn)纹瑱C(jī);數(shù)字秒表;C語(yǔ)言;AT89C52芯片
中圖分類號(hào):TP368 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2095-1302(2016)10-00-02
0 引 言
目前,計(jì)算機(jī)技術(shù)為生活帶來(lái)了巨大的變化,微型計(jì)算機(jī)的應(yīng)用已滲透到我們生活的各個(gè)領(lǐng)域。單片機(jī)作為計(jì)算機(jī)發(fā)展的一個(gè)重要分支領(lǐng)域,其具有系統(tǒng)結(jié)構(gòu)簡(jiǎn)單,使用方便,可實(shí)現(xiàn)模塊化,環(huán)境適應(yīng)能力強(qiáng)等特點(diǎn)。數(shù)字秒表在生活、運(yùn)動(dòng)、競(jìng)賽中起著非常重要的作用,已發(fā)展成為人們?nèi)粘S?jì)時(shí)的必需品,本文結(jié)合單片機(jī)設(shè)計(jì)及C語(yǔ)言編程實(shí)現(xiàn)了一種基于AT89C52單片機(jī)的數(shù)字秒表。
1 總體方案設(shè)計(jì)
本設(shè)計(jì)由AT89C52單片機(jī)、電源電路、晶振電路、復(fù)位電路、顯示電路以及按鍵電路等組成。軟件系統(tǒng)采用C語(yǔ)言編寫(xiě)程序,包括顯示、計(jì)數(shù)、中斷、延時(shí)、按鍵消抖程序等。數(shù)字秒表的總體框圖如圖1所示。
2 硬件電路設(shè)計(jì)
2.1 晶體振蕩電路
89C52芯片內(nèi)部有一個(gè)由高增益反相放大器構(gòu)成的振蕩電路,XTAL1和XTAL2分別為振蕩電路的輸入和輸出端[1]。本設(shè)計(jì)采用52單片機(jī)12 MHz的內(nèi)部振蕩方式,其振蕩電路如圖2所示,電容器C1、C2可以使電路具有穩(wěn)定的振蕩頻率和快速起振,電容值一般為20100 pF。本設(shè)計(jì)采用大小為30 pF的電容。
2.2 復(fù)位電路
為確保微機(jī)系統(tǒng)中的電路穩(wěn)定可靠的工作,復(fù)位電路必不可少。復(fù)位電路可以使中央處理器CPU以及其他功能部件都恢復(fù)到一個(gè)確定的初始狀態(tài),并從這個(gè)狀態(tài)開(kāi)始工作[2]。從圖3所示的電路可以看出其可實(shí)現(xiàn)上電復(fù)位和按鍵復(fù)位功能。
上電后,由于電容C3的充電和反相門(mén)的作用,使RST持續(xù)一段時(shí)間的高電平。當(dāng)單片機(jī)進(jìn)入工作狀態(tài)時(shí),按下復(fù)位按鈕,使RST引腳接到高電平,電容C3放電完后可實(shí)現(xiàn)上電加按鍵復(fù)位的操作。復(fù)位電路如圖3所示。
2.3 按鍵電路
鍵盤(pán)從結(jié)構(gòu)上分為獨(dú)立式按鍵和矩陣式鍵盤(pán)[3]。由于本設(shè)計(jì)按鍵較少所以采用獨(dú)立式按鍵,即按鍵直接和I/O口連接,電路圖如圖4所示。此處設(shè)計(jì)了五個(gè)按鍵,分別為開(kāi)始/暫停、記錄、上翻、下翻、清零,鍵盤(pán)按鍵識(shí)別方法采用查詢法,并設(shè)計(jì)了防抖動(dòng)程序。當(dāng)按鍵沒(méi)按下時(shí),CPU對(duì)應(yīng)的I/O接口由于內(nèi)部有上拉電阻,其輸入為高電平;當(dāng)某鍵被按下后,對(duì)應(yīng)的I/O接口變成低電平。只要在程序中判斷I/O接口的狀態(tài)即可知道獲得的鍵值,并執(zhí)行鍵功能程序。
2.4 顯示電路
單片機(jī)應(yīng)用系統(tǒng)中使用的顯示器件主要有LED和LCD。在一位LED顯示器中,當(dāng)某一段加上正向電流時(shí),該段被點(diǎn)亮,沒(méi)有通電的則不亮[4]。LED顯示器一般由8個(gè)發(fā)光二極管組成,可分為共陽(yáng)極與共陰極兩種。共陽(yáng)極將8個(gè)發(fā)光二極管的陽(yáng)極連在一起,成為一個(gè)公共端。共陰極將8個(gè)發(fā)光二極管的陰極連在一起,成為一個(gè)公共端[5]。LED顯示分為靜態(tài)顯示與動(dòng)態(tài)顯示[4]。靜態(tài)顯示在顯示某一字符時(shí),電路具有鎖存功能。動(dòng)態(tài)顯示使LED在一個(gè)顯示周期內(nèi)分別顯示一段時(shí)間,用P0口驅(qū)動(dòng)顯示。本設(shè)計(jì)采用如圖5所示的共陽(yáng)極LED動(dòng)態(tài)顯示電路。
2.5 硬件整體電路
在Proteus中繪制的硬件電路原理圖如圖6所示。
3 軟件設(shè)計(jì)
本文設(shè)計(jì)的模塊程序采用C語(yǔ)言編寫(xiě),在編寫(xiě)代碼時(shí),將程序模塊化設(shè)計(jì)。在模塊設(shè)計(jì)的過(guò)程中,需讓各模塊的程序完成明確的任務(wù),實(shí)現(xiàn)某個(gè)具體的功能,并盡量減少模塊之間的控制參數(shù)和數(shù)據(jù)參數(shù)。數(shù)字秒表軟件系統(tǒng)模塊如圖7所示。
3.1 初始化模塊
定時(shí)器共有四種工作方式,分別為方式0、方式1、方式2、方式3。TMOD寄存器中的M0、M1位為01時(shí),定時(shí)器被選為工作方式1[6]。初始化模塊主要根據(jù)晶振頻率來(lái)設(shè)定定時(shí)器的中斷時(shí)間,讓單片機(jī)定時(shí)器工作在方式1下。
3.2 中斷模塊
CPU在處理某一事件A時(shí),能對(duì)外界發(fā)生的事情B請(qǐng)求CPU迅速處理。CPU暫停中斷當(dāng)前的工作,轉(zhuǎn)去處理事件B,CPU將事件B處理完畢后,再回到原來(lái)的事件A被中斷的地方繼續(xù)處理事件A,這一過(guò)程稱為中斷[7]。AT89C52單片機(jī)提供了5個(gè)中斷源,兩個(gè)外部中斷源和3個(gè)內(nèi)部中斷源。每個(gè)中斷源都有一個(gè)中斷申請(qǐng)標(biāo)志,串行口占兩個(gè)中斷標(biāo)志位,共6個(gè)中斷標(biāo)志。
3.3 顯示模塊
本設(shè)計(jì)采用4位7段LED數(shù)碼管,采用共陽(yáng)極顯示器。為使LED點(diǎn)亮,位選信號(hào)應(yīng)為高電平,段選信號(hào)應(yīng)為低電平。使用動(dòng)態(tài)顯示的方法,AT89C52單片機(jī)的P1口和P2口分別為L(zhǎng)ED的段選和位選。由于在Proteus中模擬仿真時(shí),它的反應(yīng)速度太慢,比不上硬件,所以會(huì)出現(xiàn)顯示不清楚的情況,這時(shí)就需要加上消隱程序以消除這種情況。數(shù)碼管顯示流程圖如圖8所示。
3.4 按鍵模塊
本文設(shè)計(jì)的按鍵檢測(cè)模塊函數(shù)采用查詢法實(shí)現(xiàn)按鍵檢測(cè),通過(guò)檢測(cè)接口上的電平變化可以確定哪個(gè)按鍵被按下。程序的按鍵模塊流程圖如圖9所示。
4 結(jié) 語(yǔ)
本文設(shè)計(jì)的數(shù)字秒表采用軟件與硬件相結(jié)合的開(kāi)發(fā)模式,具有線路簡(jiǎn)單、系統(tǒng)設(shè)計(jì)合理、執(zhí)行速度快、性能穩(wěn)定、程序精簡(jiǎn)易懂等特點(diǎn)。對(duì)于程序設(shè)計(jì),應(yīng)采用模塊化設(shè)計(jì)以優(yōu)化結(jié)構(gòu)。最終,實(shí)現(xiàn)了開(kāi)始、暫停、記錄、查詢等功能,達(dá)到了預(yù)期效果。
參考文獻(xiàn)
[1]高文慶,呂英英.基于AT89C51單片機(jī)的數(shù)字秒表設(shè)計(jì)[J].電腦知識(shí)與技術(shù),2012,8(22):5344-5346.
[2]王新娜,孫新鳳.基于ATmega16單片機(jī)的簡(jiǎn)易秒表的設(shè)計(jì)與制作[J].硅谷,2011(23):59.
[3]屈楊.數(shù)字秒表的設(shè)計(jì)[J].科技信息,2013(2):206-207.
[4]郭海麗.基于單片機(jī)的數(shù)字秒表設(shè)計(jì)[J].電子元器件應(yīng)用,2012(1):27-29.
[5]雷躍榮,詹旭,杜玲艷,等.基于單片機(jī)的智能秒表設(shè)計(jì)[J].四川理工學(xué)院學(xué)報(bào)(自然科學(xué)版),2010,23(5):602-604.
[6]李彩娜,王智磊.基于LCD1602的數(shù)字電子鐘設(shè)計(jì)[J].無(wú)錫南洋職業(yè)技術(shù)學(xué)院論叢,2012(Z1):70-74.
[7]樓俊君.基于STC89C51的簡(jiǎn)易秒表的設(shè)計(jì)[J].福建電腦,2015,31(9):116,145.endprint
物聯(lián)網(wǎng)技術(shù)2016年10期