當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]這是我們設(shè)計(jì)的單片機(jī)電子鐘/計(jì)時器學(xué)習(xí)板,它采用6位LED數(shù)碼管顯示時、分、秒,以24小時計(jì)時方式。可以通過按鍵實(shí)現(xiàn)時分調(diào)整、秒表/時鐘功能轉(zhuǎn)換、省電(關(guān)閉顯示)等功能。我們能提供的完整的匯編語言源程序清單及電路原理設(shè)計(jì)圖有助于學(xué)習(xí)者進(jìn)行分析和進(jìn)行實(shí)驗(yàn)驗(yàn)證`

這是我們設(shè)計(jì)的單片機(jī)電子鐘/計(jì)時器學(xué)習(xí)板,它采用6位LED數(shù)碼管顯示時、分、秒,以24小時計(jì)時方式。可以通過按鍵實(shí)現(xiàn)時分調(diào)整、秒表/時鐘功能轉(zhuǎn)換、省電(關(guān)閉顯示)等功能。我們能提供的完整的匯編語言源程序清單及電路原理設(shè)計(jì)圖有助于學(xué)習(xí)者進(jìn)行分析和進(jìn)行實(shí)驗(yàn)驗(yàn)證。

 

硬件參數(shù)板上資源:MCU STC89C52、6位Led顯示、3位按鍵。電源部分為5V直流電壓,需要穩(wěn)壓、濾波電路,不能接反!

51單片機(jī)做的電子鐘在很多地方都有介紹, 對于單片機(jī)學(xué)習(xí)者來說這個程序基本上是一道門檻,掌握了電子鐘程序, 基本上可以說51單片機(jī)就掌握了80%。常見的電子鐘程序由顯示部分、計(jì)算部分、時鐘調(diào)整部分構(gòu)成,本產(chǎn)品硬件上完全支持倒計(jì)時器,客戶只要自己修改程序就能實(shí)現(xiàn)倒計(jì)時功能。

為了實(shí)現(xiàn)LED顯示器的數(shù)字顯示,可以采用靜態(tài)顯示法和動態(tài)顯示法。由于靜態(tài)顯示法需要數(shù)據(jù)鎖存器等硬件,接口復(fù)雜一些??紤]時鐘顯示只有六位,且系統(tǒng)沒有其它復(fù)雜的處理任務(wù),所以決定采用動態(tài)掃描法實(shí)現(xiàn)LED的顯示。單片機(jī)采用易購的AT89S51系列,這樣單片機(jī)可具有足夠的空余硬件資源實(shí)現(xiàn)其它的擴(kuò)充功能,硬件系統(tǒng)的總體構(gòu)成如下圖所示:視頻演示

http://xie-gang.com/SZDZZ.htm視頻演示

該板采用AT89S51單片機(jī),最小化應(yīng)用設(shè)計(jì),采用共陽七段LED顯示器,P0口輸出段碼數(shù)據(jù),P2.0~P2.5做列掃描輸出,P1.0,P1.2,P1.3,接三個按鍵開關(guān),用以調(diào)時及功能設(shè)置。為了提高共陽數(shù)碼管的驅(qū)動電壓,用9012做電源驅(qū)動輸出。采用12M晶振,有利于提高秒計(jì)時的精度。

本設(shè)計(jì)中,計(jì)時采用定時器T0中斷完成,其余狀態(tài)循環(huán)調(diào)用顯示子程序,當(dāng)端口開關(guān)按下時,轉(zhuǎn)入相應(yīng)功能程序。其主程序執(zhí)行流程圖見下左圖:

 

數(shù)碼管顯示的數(shù)據(jù)存放在內(nèi)存單元70H~75H中。其中70H~71H存放秒數(shù)據(jù),72H~73H存放分?jǐn)?shù)據(jù),74H~75H存放時數(shù)據(jù),每一地址單元內(nèi)均為十進(jìn)制BCD碼。由于采用軟件動態(tài)掃描實(shí)現(xiàn)數(shù)據(jù)顯示功能,顯示用十進(jìn)制BCD碼數(shù)據(jù)的對應(yīng)段碼存放在ROM表中。顯示時,先取出70H~~75H某一地址中的數(shù)據(jù),然后查得對應(yīng)的顯示用段碼,并從P0口輸出,P2口將對應(yīng)的數(shù)碼管選中供電,就能顯示該地址單元的數(shù)據(jù)值。

定時器T0用于時間計(jì)時。定時溢出中斷周期可分別設(shè)為50mst和10ms。中斷進(jìn)入后,先判斷是時鐘計(jì)時還是秒表計(jì)時,時鐘計(jì)時累計(jì)中斷20次(即1s)時,對秒計(jì)數(shù)單元進(jìn)行加1操作,秒表計(jì)時每10ms進(jìn)行加1操作。時鐘計(jì)數(shù)單元地址分別在70H~71H(秒)、76H~77H(分)和78H~79H(時),最大計(jì)時值為23時59分59秒。而秒表計(jì)數(shù)單元地址也在70H~~71H(0.01毫秒)、76H~~77H(秒)和78H~~79H(分),最大計(jì)時值為99分59.99秒。7AH單元內(nèi)存放“熄滅符”數(shù)據(jù)(#0AH)。在計(jì)數(shù)單元中采用十進(jìn)制BCD碼計(jì)數(shù),滿60(秒表功能時有100)進(jìn)位,T0中斷服務(wù)程序執(zhí)行流程見上圖右

T1中斷服務(wù)程序用于指示調(diào)整單元數(shù)字的亮閃。在時間調(diào)整狀態(tài)下,每過0.3S將對應(yīng)單元的顯示數(shù)據(jù)換成“熄滅符”數(shù)據(jù)(#0AH)。這樣在調(diào)整時間時,對應(yīng)調(diào)整單元的顯示數(shù)據(jù)會間隔閃亮。

調(diào)時功能程序的設(shè)計(jì)方法是:按下P1.0口按鍵,若按下時間短于1 s則進(jìn)入省電狀態(tài)(數(shù)碼管不亮,時鐘不停);否則進(jìn)入調(diào)分狀態(tài),等待操作,此時計(jì)時器停止走動。當(dāng)再按下按鈕時,若按下時間短于0.5s,則時間加1分;若按下時間長于0.5s,則進(jìn)入[小]時調(diào)整狀態(tài)。在[小]時調(diào)整狀態(tài)下,當(dāng)按鍵按下的時間長于0.5s時,退出調(diào)整狀態(tài),時鐘繼續(xù)走動。P1.1口按鍵在調(diào)時狀態(tài)下可實(shí)現(xiàn)減1功能。

 

使用方法:按下K1按鍵,如果按下時間小于1秒,就會進(jìn)入省電模式,這時數(shù)碼管熄滅但是時鐘仍然運(yùn)行。如果按下K1按鍵時間大于1秒,就會進(jìn)入調(diào)分狀態(tài),此時計(jì)時器停止走動等待操作,這時中間的兩位00會閃爍,這時當(dāng)按下K1按鍵時間小于0.5秒時,時間信息就會加1(單位分鐘);若時間大于0.5秒,這時左邊的兩位00會閃爍,進(jìn)入小時調(diào)整,在小時調(diào)整狀態(tài)下按下S6按鍵時間小于0.5秒時,時間信息就會加1(單位小時),如果按下按鍵時間大于0.5S時,就會退出調(diào)整狀態(tài),時鐘繼續(xù)走動。

配件:采用PL2303芯片的USB轉(zhuǎn)TTL串口模塊 每個15元 含一根4芯杜邦連接線

 

你還可以另外購買我們的PL2303模塊,就能實(shí)現(xiàn)STC芯片的在線程序下載。只要連接3根線:一根串口入R連接單片機(jī)的P3.1TXD、一根串口出D連接單片機(jī)的P3.0 RXD、一根地線-連接單片機(jī)的電源地即可。

然后將PL2303的USB轉(zhuǎn)串口模塊插入電腦的USB口(已經(jīng)安裝好2303的驅(qū)動),然后在STC編程軟件界面中選擇單片機(jī)型號STC89C52RC,選擇COM6(具體按電腦實(shí)際虛擬出的串口號)波特率選擇9600,點(diǎn)擊“OPEN FILE”選擇你的燒寫文件,點(diǎn)擊“下載”按鈕,然后接通超聲波測距成品學(xué)習(xí)板的電源,3秒左右就能完成程序下載并運(yùn)行。

以下是部分匯編源程序,購買我們產(chǎn)品后我們可以通過電子郵件將完整的單片機(jī)匯編源程序和燒寫文件發(fā)送給客戶。 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; AT89S51時鐘程序 ;;(該程序不全,不要直接使用。購買產(chǎn)品后提供全部程序和圖紙)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;

; 定時器T0、T1溢出周期為50MS,T0為秒計(jì)數(shù)用, T1為調(diào)整時閃爍用,

; P1.0、P1.1、P1.2為調(diào)整按鈕,P0口 為字符輸出口,采用共陽顯示管。

;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; 中斷入口程序 ;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;

ORG 0000H ;程序執(zhí)行開始地址

LJMP START ;跳到標(biāo)號START執(zhí)行

ORG 0003H ;外中斷0中斷程序入口

RETI ;外中斷0中斷返回

ORG 000BH ;定時器T0中斷程序入口

LJMP INTT0 ;跳至INTTO執(zhí)行

ORG 0013H ;外中斷1中斷程序入口

RETI ;外中斷1中斷返回

ORG 001BH ;定時器T1中斷程序入口

LJMP INTT1 ;跳至INTT1執(zhí)行

ORG 0023H ;串行中斷程序入口地址

RETI ;串行中斷程序返回

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; 主 程 序 ;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;

START: LCALL ST ;上電顯示年月日及班級學(xué)號

MOV R0,#70H ;清70H-7AH共11個內(nèi)存單元

MOV R7,#0BH ;

CLEARDISP: MOV @R0,#00H ;

INC R0 ;

DJNZ R7,CLEARDISP ;

MOV 20H,#00H ;清20H(標(biāo)志用)

MOV 7AH,#0AH ;放入"熄滅符"數(shù)據(jù)

MOV TMOD,#11H ;設(shè)T0、T1為16位定時器

MOV TL0,#0B0H ;50MS定時初值(T0計(jì)時用)

MOV TH0,#3CH ;50MS定時初值

MOV TL1,#0B0H ;50MS定時初值(T1閃爍定時用)

MOV TH1,#3CH ;50MS定時初值

SETB EA ;總中斷開放

SETB ET0 ;允許T0中斷

SETB TR0 ;開啟T0定時器

MOV R4,#14H ;1秒定時用初值(50MS×20)

START1: LCALL DISPLAY ;調(diào)用顯示子程序

JNB P1.0,SETMM1 ;P1.0口為0時轉(zhuǎn)時間調(diào)整程序

JNB P1.1,FUNSS ; 秒表功能,P1.1按鍵調(diào)時時作減1加能

JNB P1.2,FUNPT ;STOP,PUSE,CLR

SJMP START1 ;P1.0口為1時跳回START1

SETMM1: LJMP SETMM ;轉(zhuǎn)到時間調(diào)整程序SETMM

FUNSS: LCALL DS20MS

JB P1.1,START1

WAIT11: JNB P1.1,WAIT11

CPL 03H

MOV 70H,#00H

MOV 71H,#00H

MOV 76H,#00H

MOV 77H,#00H

MOV 78H,#00H

MOV 79H,#00H

AJMP START1

FUNPT: LCALL DS20MS

JB P1.2,START1

WAIT22: JNB P1.2,WAIT21

CLR ET0

CLR TR0

WAIT33: JB P1.2,WAIT31

LCALL DS20MS

JB P1.2,WAIT33

WAIT66: JNB P1.2,WAIT61

MOV R0,#70H ;清70H-79H共10個內(nèi)存單元

MOV R7,#0AH ;

CLEARP: MOV @R0,#00H ;

INC R0 ;

DJNZ R7,CLEARP ;

WAIT44: JB P1.2,WAIT41

LCALL DS20MS

JB P1.2,WAIT44

WAIT55: JNB P1.2,WAIT51

SETB ET0

SETB TR0

AJMP START1

WAIT21: LCALL DISPLAY

AJMP WAIT22

WAIT31: LCALL DISPLAY

AJMP WAIT33

WAIT41: LCALL DISPLAY

AJMP WAIT44

WAIT51: LCALL DISPLAY

AJMP WAIT55

WAIT61: LCALL DISPLAY

AJMP WAIT66

;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; 1秒計(jì)時程序 ;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;T0中斷服務(wù)程序

INTT0: PUSH ACC ;累加器入棧保護(hù)

PUSH PSW ;狀態(tài)字入棧保護(hù)

CLR ET0 ;關(guān)T0中斷允許

CLR TR0 ;關(guān)閉定時器T0

JB 03H,FSS

MOV A,#0B7H ;中斷響應(yīng)時間同步修正

ADD A,TL0 ;低8位初值修正

MOV TL0,A ;重裝初值(低8位修正值)

MOV A,#3CH ;高8位初值修正

ADDC A,TH0 ;

MOV TH0,A ;重裝初值(高8位修正值)

SETB TR0 ;開啟定時器T0

DJNZ R4, OUTT0 ;20次中斷未到中斷退出

ADDSS: MOV R4,#14H ;20次中斷到(1秒)重賦初值

MOV R0,#71H ;指向秒計(jì)時單元(71H-72H)

ACALL ADD1 ;調(diào)用加1程序(加1秒操作)

MOV A,R3 ;秒數(shù)據(jù)放入A(R3為2位十進(jìn)制數(shù)組合)

CLR C ;清進(jìn)位標(biāo)志

CJNE A,#60H,ADDMM ;

ADDMM: JC OUTT0 ;小于60秒時中斷退出

ACALL CLR0 ;大于或等于60秒時對秒計(jì)時單元清0

MOV R0,#77H ;指向分計(jì)時單元(76H-77H)

ACALL ADD1 ;分計(jì)時單元加1分鐘

MOV A,R3 ;分?jǐn)?shù)據(jù)放入A

CLR C ;清進(jìn)位標(biāo)志

CJNE A,#60H,ADDHH ;

ADDHH: JC OUTT0 ;小于60分時中斷退出

ACALL CLR0 ;大于或等于60分時分計(jì)時單元清0

MOV R0,#79H ;指向小時計(jì)時單元(78H-79H)

ACALL ADD1 ;小時計(jì)時單元加1小時

MOV A,R3 ;時數(shù)據(jù)放入A

CLR C ;清進(jìn)位標(biāo)志

JB 03H,OUTT0 ;秒表時最大數(shù)為99

CJNE A,#24H,HOUR ;

HOUR: JC OUTT0 ;小于24小時中斷退出

ACALL CLR0 ;大于或等于24小時小時計(jì)時單元清0

OUTT0: MOV 72H,76H ;中斷退出時將分、時計(jì)時單元數(shù)據(jù)移

MOV 73H,77H ;入對應(yīng)顯示單元

MOV 74H,78H ;

MOV 75H,79H ;

POP PSW ;恢復(fù)狀態(tài)字(出棧)

POP ACC ;恢復(fù)累加器

SETB ET0 ;開放T0中斷

RETI ;中斷返回

;秒表計(jì)時程序(10MS加1),低2位為0.1、0.01秒,中間2位為秒,最高位為分。

;最大計(jì)數(shù)值為99

FSS: MOV A,#0F7H ;中斷響應(yīng)時間同步修正,重裝初值(10ms)

ADD A,TL0 ;低8位初值修正

MOV TL0,A ;重裝初值(低8位修正值)

MOV A,#0D8H ;高8位初值修正

ADDC A,TH0 ;

MOV TH0,A ;重裝初值(高8位修正值)

SETB TR0 ;開啟定時器T0

MOV R0,#71H ;指向秒計(jì)時單元(71H-72H)

ACALL ADD1 ;調(diào)用加1程序(加1秒操作)

CLR C ;

MOV A,R3 ;

JZ FSS1 ;加1后為00,C=0

SETB C ;加1后不為00,C=1

FSS1: AJMP ADDMM ;

》》》》》》》》》》》省略》》》》》

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; 加1子 程 序 ;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;

ADD1: MOV A,@R0 ;取當(dāng)前計(jì)時單元數(shù)據(jù)到A

DEC R0 ;指向前一地址

SWAP A ;A中數(shù)據(jù)高四位與低四位交換

ORL A,@R0 ;前一地址中數(shù)據(jù)放入A中低四位

ADD A,#01H ;A加1操作

DA A ;十進(jìn)制調(diào)整

MOV R3,A ;移入R3寄存器

ANL A,#0FH ;高四位變0

MOV @R0,A ;放回前一地址單元

MOV A,R3 ;取回R3中暫存數(shù)據(jù)

INC R0 ;指向當(dāng)前地址單元

SWAP A ;A中數(shù)據(jù)高四位與低四位交換

ANL A,#0FH ;高四位變0

MOV @R0,A ;數(shù)據(jù)放入當(dāng)削地址單元中

RET ;子程序返回

》》》》》》》》》》》省略》》》》》

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; 延時程序 ;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;

;1MS延時程序,LED顯示程序用

DL1MS: MOV R6,#14H

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉