基于-51單片機(jī)的數(shù)字鐘設(shè)計(jì)
《基于-51單片機(jī)的數(shù)字鐘設(shè)計(jì)》由會(huì)員分享,可在線(xiàn)閱讀,更多相關(guān)《基于-51單片機(jī)的數(shù)字鐘設(shè)計(jì)(35頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、 畢業(yè)論文設(shè)計(jì) 基于51單片機(jī)的數(shù)字鐘設(shè)計(jì) 總計(jì) 畢業(yè)設(shè)計(jì) 〔論文〕 23 頁(yè) 表 格 3 個(gè) 插 圖 12 個(gè) Abstract The application of multi-function digital clock very general, by single chip microp
2、uter as the core controller, digital clock through its clock signal timing function, will realize its time data SCM outputs, using monitors displayed. This design has the timing, reset function of digital clock, using the microputer digital clock with programming flexible, facilitate function expans
3、ion, etc. Keywords: multi-function, AT89C51, LCD 31 / 35 目錄 摘要I AbstractII 第一章緒論1 1.1任務(wù)要求1 1.2 設(shè)計(jì)意義1 1.3 設(shè)計(jì)方案1 第二章硬件設(shè)計(jì)3 2.1單片機(jī)的選擇3 2.2 顯示方案3 2.3 時(shí)鐘電路6 2.4 復(fù)位電路6 2.5按鍵電路7 第三章軟件設(shè)計(jì)8 3.1主程序8 3.2定時(shí)器T0中斷效勞程序8 3.3顯示子程序9 3.4定時(shí)器T1中斷效勞程序10 3
4、.5 調(diào)時(shí)功能程序10 3.6 延時(shí)程序10 第四章仿真結(jié)果分析11 4.1 Proteus ISIS的介紹11 4.2 仿真結(jié)果11 第五章系統(tǒng)測(cè)試13 5.1 硬件測(cè)試13 5.2 軟件測(cè)試13 總結(jié)14 參考文獻(xiàn)15 附錄16 序完整代碼16 第一章 緒論 1.1任務(wù)要求 ⑴ 通過(guò)單片機(jī)定時(shí)器控制走時(shí),準(zhǔn)確持續(xù)走時(shí),調(diào)時(shí)不影響走時(shí)。 ⑵ 在LCD液晶顯示屏上顯示時(shí)、分、秒及兩個(gè)小數(shù)點(diǎn)。 ⑶能對(duì)時(shí)間進(jìn)展校準(zhǔn)。 1.2 設(shè)計(jì)意義 用單片及制作數(shù)字鐘是單片機(jī)的一個(gè)典型應(yīng)用。數(shù)字鐘是采用數(shù)字電路實(shí)現(xiàn)對(duì)“時(shí)、分、秒〞數(shù)字
5、顯示的計(jì)時(shí)裝置,廣泛應(yīng)用于個(gè)人家庭、車(chē)站、碼頭、辦公室等公共場(chǎng)所,已成為人們?nèi)粘I钪胁豢扇鄙俚谋匦杵贰S捎跀?shù)字集成電路的開(kāi)展和石英晶體振蕩器的廣泛應(yīng)用,使得數(shù)字鐘的精度遠(yuǎn)遠(yuǎn)超過(guò)老式鐘表,鐘表的數(shù)字化給人們生產(chǎn)生活帶來(lái)了極大的方便。利用單片機(jī)設(shè)計(jì)一個(gè)時(shí)鐘,單片機(jī)擴(kuò)展的LCD 顯示器用來(lái)顯示秒、分、時(shí)計(jì)數(shù)單元中的值,可以非常準(zhǔn)確地顯示標(biāo)準(zhǔn)時(shí)間。 1.3 設(shè)計(jì)方案 采用AT89C51芯片作為硬件核心,其部采用Flash ROM,具有4KB ROM 存儲(chǔ)空間,能于3V的超低壓工作,本系統(tǒng)的計(jì)時(shí)方案是利用單片機(jī)部的定時(shí)/計(jì)數(shù)器進(jìn)展中斷定時(shí),配合軟件延時(shí)實(shí)現(xiàn)對(duì)時(shí)、分、秒的計(jì)時(shí)。 整個(gè)系統(tǒng)的控制方案
6、是:上電后系統(tǒng)自動(dòng)進(jìn)入時(shí)間顯示,從00:00:00 開(kāi)場(chǎng)計(jì)時(shí)。按下功能鍵,當(dāng)安下身時(shí)間小于1s時(shí),進(jìn)入省電狀態(tài),大于1s時(shí),進(jìn)入調(diào)分狀態(tài),等待操作,此時(shí)計(jì)數(shù)器停頓走動(dòng)。當(dāng)再次按下按鍵時(shí),假設(shè)按鍵時(shí)間小于0.5s,那么時(shí)間加1min;假設(shè)按鍵時(shí)間大于0.5s,那么進(jìn)入小時(shí)調(diào)整狀態(tài)。在小時(shí)調(diào)整狀態(tài)下,假設(shè)按鍵時(shí)間小于0.5s時(shí),那么小時(shí)加1h,假設(shè)按鍵時(shí)間大于0.5s,那么退出調(diào)整狀態(tài),時(shí)鐘繼續(xù)走動(dòng)。 整個(gè)系統(tǒng)的硬件原理框圖如圖1.1,它采用的是AT89C51單片機(jī),只用了P1口和P2口。為了簡(jiǎn)化硬件電路,LED顯示采用了動(dòng)態(tài)掃描的方式實(shí)現(xiàn),P1口輸出段碼數(shù)據(jù),P2.0-P2.5 段作掃描輸出控
7、制端,P2.7作功能轉(zhuǎn)換按鍵輸入端。LED采用共陽(yáng)極數(shù)碼管,驅(qū)動(dòng)電流由三極管9012提供。為了提高計(jì)數(shù)精度,所采用的晶振頻率為12MHz。 六位數(shù)碼顯示電路 89C51 驅(qū) 動(dòng) 電源 時(shí)鐘電路 復(fù)位電路 按鍵 位選 圖 1.1 硬件原理框圖 第二章 硬件設(shè)計(jì) 2.1單片機(jī)的選擇 本課程選用AT89C51型號(hào)的單片機(jī)。 AT89C51 是美國(guó)ATMEL 公司生產(chǎn)的低電壓,高性能CMOS8 位單片機(jī),片含4k bytes
8、的可反復(fù)擦寫(xiě)的只讀程序存 儲(chǔ)器〔PEROM〕和128 bytes 的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器〔RAM 〕,器件采用ATMEL 公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn), 兼容標(biāo)準(zhǔn)MCS-51 指令系統(tǒng),片置通用8 位 央處理器〔CPU〕和Flash 存儲(chǔ)單元,功能強(qiáng)大AT89C51 單片機(jī)可為您提供許多高性?xún)r(jià)比的應(yīng)用場(chǎng)合,可靈活應(yīng)用于各種控制領(lǐng)域。 主要性能參數(shù): ·與MCS-51 產(chǎn) 指令系統(tǒng)完全兼容 ·4k 字節(jié)可重擦寫(xiě)Flash 閃速存儲(chǔ)器 ·1000 次擦寫(xiě)周期 ·全靜態(tài)操作:0Hz-24MHz ·三級(jí)加密程序存儲(chǔ)器 ·128×8 字節(jié)部RAM ·32 個(gè)可編程I /O
9、 口線(xiàn) ·2 個(gè)16 位定時(shí)/計(jì)數(shù)器 2.2 顯示方案 由于系統(tǒng)要顯示的容較簡(jiǎn)單,顯示量不多,所以選用數(shù)碼管既方便又經(jīng)濟(jì)。LED有共陰極和共陽(yáng)極兩種。如圖2.2所示。 二極管的陰極連接在一起,通常此公共陰極接地,而共陽(yáng)極那么將發(fā)光二極管的陽(yáng)極連接在一起,接入+5V的電壓。一位顯示器由8個(gè)發(fā)光二極管組成,其中7個(gè)發(fā)光二極管構(gòu)成字型“8〞的各個(gè)筆劃〔段〕a~g,另一個(gè)小數(shù)點(diǎn)為dp發(fā)光二極管。當(dāng)在某段發(fā)光二極管施加一定的正向電壓時(shí),該段筆劃即亮;不加電壓那么暗。為了保護(hù)各段LED不被損壞,需外加限流電阻。 圖2.2 LED數(shù)碼管構(gòu)造原理圖 眾所周知,LED顯示數(shù)碼管通常由
10、硬件7段譯碼集成電路,完成從數(shù)字到顯示碼的譯碼驅(qū)動(dòng)。本系統(tǒng)采用軟件譯碼,以減小體積,降低本錢(qián)和功耗,軟件譯碼的另一優(yōu)勢(shì)還在于比硬件譯碼有更大的靈活性。所謂軟件譯碼,即由單片機(jī)軟件完成從數(shù)字到顯示碼的轉(zhuǎn)換。從LED數(shù)碼管構(gòu)造原理可知,為了顯示字符,要為L(zhǎng)ED顯示數(shù)碼管提供顯示段碼,組成一個(gè)“8〞字形字符的7段,再加上1個(gè)小數(shù)點(diǎn)位,共計(jì)8段,因此提供應(yīng)LED數(shù)碼管的顯示段碼為1個(gè)字節(jié)。各段碼位與顯示段的對(duì)應(yīng)關(guān)系如表2.2。 表2.2 各段碼位的對(duì)應(yīng)關(guān)系〔放在表的上面〕 段碼位 D7 D6 D5 D4 D3 D2 D1 D0 顯示段 dp g f e d c
11、b a 需說(shuō)明的是當(dāng)用數(shù)據(jù)口連接LED數(shù)碼管a~dp引腳時(shí),不同的連接方法,各段碼位與顯示段有不同的對(duì)應(yīng)關(guān)系。通常數(shù)據(jù)口的D0位與a段連接,D1位與b段連接,……D7位與dp段連接,如表1所示,表2.3為用于LED數(shù)碼管顯示的十六進(jìn)制數(shù)和空白字符與P的顯示段碼。 根據(jù)AT89C2051單片機(jī)灌電流能力強(qiáng),拉電流能力弱的特點(diǎn),我們選用共陽(yáng)數(shù)碼管。將AT89C2051的P1.0~P1.7分別與共陽(yáng)數(shù)碼管的a~g及dp相連,高電平的位對(duì)應(yīng)的LED 數(shù)碼管的段暗,低電平的位對(duì)應(yīng)的LED數(shù)碼管的段亮,這樣,當(dāng)P0口輸出不同的段碼,就可以控制數(shù)碼管顯示不同的字符。例如:當(dāng)P0口輸出的段碼為11
12、00 0000,數(shù)碼管顯示的字符為0。 表2.3 LED顯示段碼 字型 共陽(yáng)極段碼 共陰極段碼 字型 共陽(yáng)極段碼 共陰極段碼 0 C0H 3FH 9 90H 6FH 1 F9H 06H A 88H 77H 2 A4H 5BH B 83H 7CH 3 BOH 4FH C C6H 39H 4 99H 66H D A1H 5EH 5 92H 6DH E 86H 79H 6 82H 7DH F 84H 71H 7 F8H 07H 空白 FFH 00H 8 80H 7FH P 8CH
13、 73H 注:〔1〕本表所列各字符的顯示段碼均為小數(shù)點(diǎn)不亮的情況。 〔2〕“空白〞字符即沒(méi)有任何顯示。 數(shù)碼管顯示器有二種工作方式,即靜態(tài)顯示方式和動(dòng)態(tài)掃描顯示方式。 為節(jié)省端口及降低功耗,本系統(tǒng)采用動(dòng)態(tài)掃描顯示方式。動(dòng)態(tài)掃描顯示方式需解決多位LED數(shù)碼管的“段控〞和“位控〞問(wèn)題,本電路的“段控〞〔即要顯示的段碼的控制〕通過(guò)P0口實(shí)現(xiàn);而每一位的公共端,即LED數(shù)碼管的“位控〞,那么由P3口控制。這種連接方式由于多位字段線(xiàn)連在一起,因此,要想顯示不同的容,必然要采取輪流顯示的方式,即在某一瞬間,只讓其中的某一位的字位線(xiàn)處于選通狀態(tài),其它各位的字位線(xiàn)處于斷開(kāi)狀態(tài),同時(shí)字段線(xiàn)上輸
14、出這一位相應(yīng)要顯示字符的字段碼。在這一瞬時(shí),只有這一位在顯示,其他幾位那么暗。在本系統(tǒng)中,字位線(xiàn)的選通與否是通過(guò)PNP三極管的導(dǎo)通與截止來(lái)控制,即三極管處于“開(kāi)關(guān)〞狀態(tài)。 2.3 時(shí)鐘電路 晶體振蕩器電路給數(shù)字鐘提供一個(gè)頻率穩(wěn)定準(zhǔn)確的方波信號(hào),可保證數(shù)字鐘的走時(shí)準(zhǔn)確及穩(wěn)定.不管是指針式的電子鐘還是數(shù)字顯示的電子鐘都使用了晶體振蕩器電路。如圖2.3所示。 圖2.3 時(shí)鐘電路 2.4 復(fù)位電路 當(dāng)上電時(shí),電源對(duì)電容充電,對(duì)單片機(jī)復(fù)位,使單片機(jī)從00H開(kāi)場(chǎng)執(zhí)行程序。如圖2.4所示。 圖2.4 復(fù)位電路 2.5按鍵電路 按鍵的開(kāi)關(guān)狀態(tài)通過(guò)一定的電路轉(zhuǎn)換為高、低電平狀
15、態(tài)。按鍵閉合過(guò)程在相應(yīng)的I/O端口形成一個(gè)負(fù)脈沖。閉合和釋放過(guò)程都要經(jīng)過(guò)一定的過(guò)程才能到達(dá)穩(wěn)定,這一過(guò)程是處于高、低電平之間的一種不穩(wěn)定狀態(tài),稱(chēng)為抖動(dòng)。抖動(dòng)持續(xù)時(shí)間的常長(zhǎng)短與開(kāi)關(guān)的機(jī)械特性有關(guān),一般在5-10ms之間。為了防止CPU屢次處理按鍵的一次閉合,應(yīng)采用措施消除抖動(dòng)。本文采用的是獨(dú)立式按鍵,直接用I/O口線(xiàn)構(gòu)成單個(gè)按鍵電路,按鍵占用一條I/O口線(xiàn)。如圖2.5所示。 圖2.5按鍵電路 第三章 軟件設(shè)計(jì) 3.1主程序 主程序功能主要是初始化、正?,F(xiàn)實(shí)時(shí)間和判斷功能轉(zhuǎn)換鍵。顯示時(shí)間調(diào)用顯示子程序。當(dāng)p2.7端口按鍵按下時(shí),轉(zhuǎn)入調(diào)時(shí)功
16、能程序。主程序的流程圖3.1。 內(nèi)存單元清零 調(diào)用顯示子程序 調(diào)時(shí)程序 T0,T1為16位計(jì)數(shù)器 允許T0中斷 開(kāi)場(chǎng) P2.7=0 ? N Y 圖3.1 主程序 3.2定時(shí)器T0中斷效勞程序 時(shí)鐘的最小計(jì)時(shí)單位是秒,60s進(jìn)為1min,60min進(jìn)位1h。定時(shí)器T0用于產(chǎn)生最小計(jì)時(shí)單位1s,定時(shí)時(shí)間為50ms,中斷累計(jì)20次為1計(jì)數(shù)單元中的十進(jìn)制BCD數(shù)每逢60進(jìn)位。程序流程圖如圖3.2所示。 分單位清0,時(shí)單位加1 中斷返回 60min?到? 開(kāi)場(chǎng) 保護(hù)現(xiàn)場(chǎng) 恢復(fù)現(xiàn)場(chǎng) 秒單
17、位清0,分單位加1 秒單位加1 60s到 ? 1s到否? 24h到 ? 時(shí)單位清0 Y N N N N N N Y Y Y N 圖3.2 定時(shí)器T0中斷效勞程序 3.3顯示子程序 數(shù)碼管顯示的數(shù)據(jù)存放在40H~55H存單元中,其中50H、51H單元存放秒數(shù)據(jù),52H、 53H單元存放分?jǐn)?shù)據(jù),54H、55H單元存放時(shí)數(shù)據(jù)。時(shí)間的數(shù)據(jù)采用BCD碼表示,對(duì)應(yīng)的顯示代碼存放在ROM中。顯示時(shí),先取出50H~55H某一地址的數(shù)據(jù),然后從段碼表中查出對(duì)應(yīng)的顯示用段
18、碼并從P1口中輸出,同時(shí)P2口將對(duì)應(yīng)的數(shù)碼管選中,就可以顯示出相應(yīng)的時(shí)間值。 3.4定時(shí)器T1中斷效勞程序 進(jìn)展時(shí)間調(diào)整是,正在被調(diào)整的時(shí)間以閃爍的形式表現(xiàn),定時(shí)器T1用于產(chǎn)生閃爍的時(shí)間間隔,每隔0.3s閃爍一次。 3.5 調(diào)時(shí)功能程序 調(diào)整時(shí)間程序的方法是:按下功能鍵,當(dāng)安下身時(shí)間小于1s時(shí),進(jìn)入省電狀態(tài),大于1s時(shí),進(jìn)入調(diào)分狀態(tài),等待操作,此時(shí)計(jì)數(shù)器停頓走動(dòng)。當(dāng)再次按下按鍵時(shí),假設(shè)按鍵時(shí)間小于0.5s,那么時(shí)間加1min;假設(shè)按鍵時(shí)間大于0.5s,那么進(jìn)入小時(shí)調(diào)整狀態(tài)。在小時(shí)調(diào)整狀態(tài)下,假設(shè)按鍵時(shí)間小于0.5s時(shí),那么小時(shí)加1h,假設(shè)按鍵時(shí)間大于0.5s,那么退出調(diào)整狀態(tài),時(shí)鐘繼續(xù)
19、走動(dòng)。 3.6 延時(shí)程序 系統(tǒng)使用三個(gè)延時(shí)程序。因?yàn)橄到y(tǒng)是動(dòng)態(tài)顯示,為了確保系統(tǒng)在有效顯示時(shí)間圍〔約50ms〕必須執(zhí)行顯示程序,所以0.5s的延時(shí)程序是通過(guò)執(zhí)行顯示程序約81遍實(shí)現(xiàn)的。 第四章 仿真結(jié)果分析 4.1 Proteus ISIS 的介紹 Proteus ISIS是英國(guó)Labcenter公司開(kāi)發(fā)的電路分析與實(shí)物仿真軟件。它運(yùn)行于Windows操作系統(tǒng)上,可以仿真、分析(SPICE)各種模擬器件和集成電路,該軟件的特點(diǎn)是:①實(shí)現(xiàn)了單片機(jī)仿真和SPICE電路仿真相結(jié)合。具有模擬電路仿真、數(shù)字電路仿真、單片機(jī)及其外圍電路組成的系統(tǒng)的仿真、
20、RS232動(dòng)態(tài)仿真、I2C調(diào)試器、SPI調(diào)試器、鍵盤(pán)和LCD系統(tǒng)仿真的功能;有各種虛擬儀器,如示波器、邏輯分析儀、信號(hào)發(fā)生器等。②支持主流單片機(jī)系統(tǒng)的仿真。目前支持的單片機(jī)類(lèi)型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各種外圍芯片。③提供軟件調(diào)試功能。在硬件仿真系統(tǒng)中具有全速、單步、設(shè)置斷點(diǎn)等調(diào)試功能,同時(shí)可以觀察各個(gè)變量、存放器等的當(dāng)前狀態(tài),因此在該軟件仿真系統(tǒng)中,也必須具有這些功能;同時(shí)支持第三方的軟件編譯和調(diào)試環(huán)境,如Keil C51 uVision2等軟件。④具有強(qiáng)大的原理圖繪制功能。總之,該軟件是一款集單
21、片機(jī)和SPICE分析于一身的仿真軟件,功能極其強(qiáng)大。 4.2 仿真結(jié)果 根據(jù)設(shè)計(jì)圖在Proteus ISIS軟件中畫(huà)出原理圖,如圖4.3。 圖4.3 原理圖 在PROTEUS繪制好原理圖后,調(diào)入已編譯好的目標(biāo)代碼文件:*.HEX,可以在PROTEUS的原理圖中看到模擬的實(shí)物運(yùn)行狀態(tài)和過(guò)程 圖4.4 運(yùn)行圖 第五章 系統(tǒng)測(cè)試 5.1 硬件測(cè)試 該數(shù)字鐘的電路系統(tǒng)較大,對(duì)于焊接方面更是不可輕視,龐大的電路系統(tǒng)中只要出于一處的錯(cuò)誤,那么會(huì)對(duì)檢測(cè)造成很大的不便,而且電路的交線(xiàn)較多,對(duì)于各種
22、鋒利的引腳要注意處理,否那么會(huì)刺破帶有封皮的導(dǎo)線(xiàn),使電路造成短路現(xiàn)象。 另外,買(mǎi)來(lái)的元器件要先進(jìn)展檢測(cè),如果有壞的器件要進(jìn)展更換,還有就是要注間元器件的正確放置與安裝以及布線(xiàn)的合理,便于成品電路的檢測(cè)與維護(hù)。 在本數(shù)字鐘的設(shè)計(jì)調(diào)試中遇到了很多的問(wèn)題。回想這些問(wèn)題,其實(shí)只要認(rèn)真思考很多功能都是可以防止的,電路做成后,LCD有顯示,但是不能正常計(jì)時(shí)走鐘通過(guò)檢測(cè),查出單片機(jī)AT89S51的31腳EA 引腳 沒(méi)有接5V的電源作為高電平〔因?yàn)樵撓到y(tǒng)中沒(méi)有擴(kuò)展外部程序存儲(chǔ)器,故電路通電工作后,其部程序執(zhí)行應(yīng)該從部程序存儲(chǔ)單元開(kāi)場(chǎng),也即EA引腳要接高電平。 通常引腳懸空也可看成是接高電平,但是本次設(shè)計(jì)
23、中選的用芯片AT89S51部采用的是CMOS構(gòu)造,不能將懸空等同為接高電平,而必須接5V的電源作為高電平才能正常工作〕,用導(dǎo)線(xiàn)將31腳接到電源,問(wèn)題就得到解決了。 5.2 軟件測(cè)試 數(shù)字鐘的功能雖然比擬少,但是程序也較為復(fù)雜,特別對(duì)于初學(xué)者的我來(lái)說(shuō)更是如此,所以在編寫(xiě)程序和調(diào)試時(shí)出現(xiàn)了相對(duì)較多的問(wèn)題。最后經(jīng)過(guò)屢次的模塊子程序的修改,一步一步的完成,最終解決了軟件。 在軟件的調(diào)試過(guò)程中主要遇到的問(wèn)題是燒入程序后,LCD管能顯示,也能走鐘,但時(shí)間明顯跳動(dòng)很快,是由于從“秒〞、“時(shí)〞、“分〞的循環(huán)次數(shù)太少,加大其循環(huán)次數(shù)能解決抖動(dòng)問(wèn)題。 參考文獻(xiàn) [1]東生.勇
24、,許四毛. Protell99SE電路設(shè)計(jì)技術(shù)入門(mén)與應(yīng)用[M].:電子工業(yè),2002; [2]揚(yáng)剛主.電子系統(tǒng)設(shè)計(jì)與實(shí)踐.電子工業(yè)[M] 2004 [3] 盧結(jié)成. 電子電路實(shí)驗(yàn)及應(yīng)用課題設(shè)計(jì)[M].中國(guó)科學(xué)技術(shù)大學(xué),2002年 [4]廣弟,朱月秀,王秀山.單片機(jī)根底[M].航空航天,2001.7 [5]維成,加國(guó).單片機(jī)原理與應(yīng)用及C51程序設(shè)計(jì)[M].清華大學(xué),2007.2 [6] 關(guān)宗安,仲叢久.基于單片機(jī)實(shí)現(xiàn)的多路定時(shí)控制器的設(shè)計(jì).航空工業(yè)學(xué)院學(xué)報(bào).2004年6月.第21卷第3期68頁(yè) [7]何希慶,高偉.MCS-51單片機(jī)原理、實(shí)驗(yàn)、實(shí)例[M].:大學(xué).1989 [8]
25、 飛等,兩種數(shù)字鐘電路設(shè)計(jì)比擬[J] 師學(xué)院學(xué)報(bào) .2003,2(23):40-43 [9] 胥筱門(mén),單片機(jī)系統(tǒng)的試驗(yàn)及應(yīng)用[J] 電子制作.1999,〔6〕:20-30 [10]房小翠,王金鳳.單片微型計(jì)算機(jī)與機(jī)電接口技術(shù)[M].國(guó)防工業(yè).2002 [11]Maxim公司.Newreleases Data Book 1996 [12] ATMEL.Microcontroller Data book.2002 [13] Mark1.Montrose.PRINTED Circuit Board Design Techniques for EMC pliance. IEE Press se
26、ries.2000 附錄 序完整代碼 ORG 0000H AJMP MAINT ;轉(zhuǎn)主程序 NOP ORG 000BH AJMP INT01 ;轉(zhuǎn)定時(shí)器T0中斷程序 NOP ORG 001BH AJMP INT11 ;轉(zhuǎn)定時(shí)器T1中斷程序 NOP MAINT: MOV R0,#7FH ;00H~7FH單元清零 CLR A WZ1:
27、 MOV R0,A DJNZ R0,WZ1 MOV SP,#30H ;置堆棧指針 MOV 5AH,#0AH ;放入“熄滅符〞數(shù)據(jù) MOV TMOD,#11H ;設(shè)T0,T1為16位定時(shí)器 MOV TL0,#0B0H ;置50 ms定時(shí)初值 MOVTH0,#3CH MOV TL1,#0B0H MOVTH1,#3CH SETB EA ;開(kāi)中斷 SETBET0 ;允許T0中斷 SETB TR0 ;啟動(dòng)T0 MOV R4,#14H
28、 ;用于產(chǎn)生1 s定時(shí) MAINT1: LCALL XSZCX ;調(diào)用顯示子程序 JNB P2.7,SJTZ0 ;功能鍵按下,進(jìn)入調(diào)時(shí)程序 SJMP MAINT1 SJTZ0: LCALL XSZCX ;通過(guò)調(diào)用顯示時(shí)間程序延時(shí)消抖動(dòng) JNB P2.7,SJTZ1 SJMP MAINT1 ;功能鍵沒(méi)有按下,顯示時(shí)間 SJTZ1: CLR ET0 ;關(guān)閉T0中斷 CLR TR0 ;關(guān)閉T0 LCALL YS1S
29、 ;調(diào)用1 s延時(shí)程序 P2.7,KMTES ;按鍵時(shí)間小于1 s,進(jìn)入省電狀態(tài) MOV R2,#06H ;進(jìn)入調(diào)時(shí)狀態(tài),置閃爍定時(shí)初值 SETB ET1 ;允許T1中斷 SETB TR1 ;啟動(dòng)T1 XYZ2: JNB P2.7,XYZ1 ;P2.7端為0,等待 CLR 01H ;置調(diào)分標(biāo)志位為1 XYZ4: P2.7,XYZ3 ;等待鍵按下 LCALL YS05S ;延時(shí)0.
30、5 s JNB P2.7,XYZHH ;按鍵時(shí)間大于0.5 s,轉(zhuǎn)調(diào)小時(shí)狀態(tài) MOV R0,#53H ;按鍵時(shí)間小于0.5 s,進(jìn)入調(diào)分狀態(tài) LCALL ADD1 ;調(diào)時(shí)間加1子程序 MOV A,R3 ;取要調(diào)整的單元數(shù)據(jù) CLR C CJNE A,#60H,QWE ;調(diào)整單元數(shù)據(jù)與60比擬 QWE: JC XYZ4 ;小于60轉(zhuǎn)到XYZ4循環(huán) CLR A ;大于或等于60,清零 MOV R0,A DEC R0 MOV R0
31、,A CLR C AJMP XYZ4 ;轉(zhuǎn)到XYZ4循環(huán) KMTES: SETB ET0 ;省電狀態(tài),開(kāi)T0中斷 SETB TR0 ;啟動(dòng)T0(開(kāi)時(shí)鐘) KMA: P2.7,$ ;無(wú)按鍵按下,等待 LCALL XSZCX ;通過(guò)調(diào)用顯示時(shí)間程序延時(shí)消抖動(dòng) P2.7,KMA ;是干擾返回等待 KMA1: JNB P2.7,$ ;等待鍵釋放 LJMP MAINT1 ;返回主程序,顯示時(shí)間 X
32、YZHH: JNB P2.7,XYZ5 ;等待鍵釋放 SETB 01H ;置調(diào)小時(shí)標(biāo)志位 XYZ6: P2.7,XYZ7 ;等待鍵按下 LCALL YS05S ;有鍵按下,延時(shí)0.5 s JNB P2.7,XYZOUT ;按下時(shí)間大于0.5 s,退出調(diào)整狀態(tài) MOV R0,#55H ;小于0.5 s,調(diào)整小時(shí) LCALL ADD1 ;調(diào)加1子程序 MOV A,R3 CLR C CJNE A,#24H,KMB1 ;計(jì)時(shí)
33、單元與24比擬 KMB1: JC XYZ6, ;小于24轉(zhuǎn)XYZ6循環(huán) CLR A ;大于或等于24,那么清零 MOV R0,A DEC R0 MOV R0,A AJMP XYZ6 ;轉(zhuǎn)XYZ6循環(huán) XYZOUT: JNB P2.7,XYZOUT1;退出調(diào)時(shí)狀態(tài),等待鍵釋放 LCALL XSZCX ;通過(guò)調(diào)用顯示程序延時(shí)消抖動(dòng) JNB P2.7,XYZOUT ;是抖動(dòng),返回XYZOUT等待 MOV 20H,#00H ;清調(diào)時(shí)標(biāo)志位 CLR
34、 TR1 ;關(guān)閉T1 CLR ET1 ;關(guān)T1中斷 SETB TR0 ;啟動(dòng)T0 SETB ET0 ;開(kāi)T0中斷 LJMP MAINT1 ;返回主程序 XYZ1: LCALL XSZCX ;鍵釋放等待時(shí),調(diào)用顯示子程序 AJMP XYZ2 ;防止此時(shí)無(wú)時(shí)鐘顯示XYZ3: LCALL XSZCX AJMP XYZ4 XYZ5: LCALL XSZCX AJMP
35、 XYZHH XYZ7: LCALL XSZCX AJMP XYZ6 XYZOUT1:LCALL XSZCX AJMP XYZOUT ;******顯示子程序****** XSZCX: MOV R1,#50H ;顯示數(shù)據(jù)首址 MOV R5,#0FEH ;掃描控制字初值 MAXY: MOV A,R5 ;掃描控制字送A MOV P2,A ;輸出掃描控制字 MOV A,R1 ;取顯示數(shù)據(jù) MOV DPTR
36、,#ABC ;取段碼表首地址 MOVC A,A+DPTR ;取對(duì)應(yīng)段碼 MOV P1,A ;P1口輸出段碼 LCALL YS1MS ;延時(shí)1 ms INC R1 ;顯示地址增1 MOV A,R5 ;掃描控制字送A JNB ACC.5,ENDOUT;ACC.5為0時(shí)一次顯示完畢 RL A ;控制字左移 MOVR5,A ;制字送回R5中 AJMP MAXY ;
37、循環(huán)顯示下一個(gè)數(shù)據(jù) ENDOUT:MOV P2,#0FFH ;一次顯示完畢,P2口復(fù)位 MOV P1,#0FFH ;P1口復(fù)位 RET ;子程序返回 ******T0中斷效勞程序****** INT01: PUSH ACC ;保護(hù)現(xiàn)場(chǎng) PUSH PSW CLR ET0 ;關(guān)T0中斷 CLR TR0 ;關(guān)定時(shí)器T0 MOV A,#0B7H ;修正中斷響應(yīng)時(shí)間
38、 ADD A,TL0 MOV TL0,A MOV A,#3CH ADDC A,TH0 SETB TR0 ;啟動(dòng)定時(shí)器T0 DJNZ R4,INT0U ;20次中斷未到退出中斷 AD1: MOV R4,#14H ;R4重新賦值 MOV R0,#51H ;指向秒計(jì)時(shí)單元(50H,51H) LCALL ADD1 ;調(diào)用加1 s程序 MOV A,R3 ;秒數(shù)據(jù)放入A CLR C ;清進(jìn)位標(biāo)志 CJNE
39、A,#60H,AD2 ;小于60 s嗎 AD2:JC INT0U ;小于60 s退出中斷 CLR A ;大于或等于60 s,清秒計(jì)數(shù)單元 MOV R0,A DEC R0 MOV R0,A MOV R0,#57H ;指向分計(jì)時(shí)單元 (56H,57H) ACALL ADD1 ;調(diào)用加1 min程序 MOV A,R3 ;分?jǐn)?shù)據(jù)放
40、入A CLR C CJNE A,#60H,AD3 ;小于60 min嗎 AD3: JC INT0U ;小于60 min退出中斷 CLR A ;大于或等于60 min,清分計(jì)數(shù)單元 MOV R0,A DEC R0 MOV R0,A MOV R0,#59H ;指向小時(shí)計(jì)時(shí)單元 (58H,59H) ACALL ADD1 ;調(diào)用加1 h程序
41、 MOV A,R3 ;小時(shí)數(shù)據(jù)放入A CLR C CJNE A,#24H,AD4 ;小于24 h嗎 AD4: JC INT0U ;小于24 h退出中斷 CLR A ;大于或等于24 h清小時(shí)計(jì)數(shù)單元 MOV R0,A DEC R0 MOV R0,A INT0U:MOV 52H,56H ;中斷退出時(shí)將分、時(shí)計(jì)時(shí)單元數(shù) MOV
42、 53H,57H ;據(jù)移入對(duì)應(yīng)顯示單元 MOV 54H,58H MOV 55H,59H POP PSW ;恢復(fù)現(xiàn)場(chǎng) POP ACC SETB ET0 ;開(kāi)放T0中斷 RETI ;中斷返回 ****** T1中斷效勞程序****** INT11: PUSH ACC ;保護(hù)現(xiàn)場(chǎng) PUSH PSW MOV TL1,#0B0H ;裝定時(shí)器T1初值
43、 MOV TH1,#3CH DJNZ R2,INT1U ;0.3 s未到退出中斷 MOV R2,#06H ;重裝0.3 s定時(shí)用初值 CPL 02H ;0.3 s定時(shí)到,對(duì)閃爍標(biāo)志取反 02H,CCC1 ;02H位為1時(shí)顯示單元“熄滅〞 MOV 52H,56H ;02H位為0時(shí)顯示正常 MOV 53H,57H MOV 54H,58H MOV 55H,59H INT1U: POP PSW ;
44、恢復(fù)現(xiàn)場(chǎng) POP ACC RETI ;退出中斷 CCC1: 01H,CCC2 ;01H位為1時(shí)轉(zhuǎn)小時(shí)熄滅控制 MOV 52H,5AH ;01H位為0時(shí)“熄滅符〞放入分計(jì)時(shí)單元 MOV 53H,5AH MOV 54H,58H MOV 55H,59H AJMP INT1U ;轉(zhuǎn)中斷退出 CCC2: MOV 52H,56H ; 01H位為1時(shí)“熄滅符〞放入小時(shí)計(jì)時(shí)單元 MOV 5
45、3H,57H MOV 54H,5AH MOV 55H,5AH AJMP INT1U ;轉(zhuǎn)中斷退出 ADD1: MOV A,R0;取出現(xiàn)計(jì)時(shí)數(shù)據(jù)放入A DEC R0 ;指向前一單元 SWAP A ;A中高4位與低4位互換 ORL A,R0 ;前一單元中數(shù)據(jù)放入A中低4位 ADD A,#01H ;A加1 DA A ;十進(jìn)制調(diào)整 MOV R3,A ;移入R3存放器 ANL A,#0FH ;高4位變0 MOV R0,A
46、 ;放回前一地址單元 MOV A,R3 ;取回R3中暫存數(shù)據(jù) INC R0 ;指向當(dāng)前地址單元 SWAP A ;A中高4位與低4位互換 ANL A,#0FH ;高4位變0 MOV R0, A ;數(shù)據(jù)存入當(dāng)前地址單元 RET ;子程序返回 ******延時(shí)子程序****** YS1MS:MOV R6,#14H ;延時(shí)1 ms子程序 YS1: MOV R7,#19H YS2:
47、 DJNZ R7,YS2 DJNZ R6,YS1 RET YS1S:LCALL YS05S ;延時(shí)1 s子程序 LCALL YS05S RET YS05S: MOV R3,#51H ;延時(shí)0.5 s子程序 YS05S1:LCALL XSZCX DJNZ R3,YS05S1 RET ABC:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH END
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 初中生物對(duì)照實(shí)驗(yàn)專(zhuān)題復(fù)習(xí)課件
- 初中物理資源九年級(jí)第十五單元課件串并聯(lián)識(shí)別
- 咯血與嘔血課件
- What's_your_number_課件
- 外研版七下Module3Unit1(教育精品)
- 浙美版三年級(jí)上冊(cè)美術(shù)第15課-剪雪花教學(xué)ppt課件
- 蘇教版六年級(jí)下冊(cè)數(shù)學(xué)正比例和反比例的意義課件
- 蘇教版五下《單式折線(xiàn)統(tǒng)計(jì)圖》教研課件
- 固態(tài)相變概論
- 三角形全等的判定復(fù)習(xí)-課件2
- 太陽(yáng)能發(fā)展趨勢(shì)課件
- 道路工程監(jiān)理最新規(guī)劃范本課件
- SPC及CPK教程(理論篇)課件
- Travel-Plan旅行計(jì)劃-PPT
- 新冠肺炎疫情期間醫(yī)務(wù)人員防護(hù)技術(shù)指南