電路圖源程式
全域性思路:定時模組單獨工作, 按鍵掃瞄模組和顯示模組分時輪流執行
一、 定時模組
微控制器啟動後,首先啟動定時器
機器週期是1um,所以定時器計數500000是半秒,1000000次是一秒
將1000000分成256份,每份是3906,定時器每次計數3906。使定時器0工作在方式1,每完成一次計數產生一次中斷使r2自加1,r2初值是0,則當r2=128時是半秒,當r2=0時是一秒
計數初值:65536-3906=61630=f0beh 所以th0值為f0h,tl0值為beh
二、按鍵掃瞄模組(kt)
定時器啟動後,程式轉入按鍵掃瞄和 led顯示的迴圈,首先是按鍵掃瞄
按鍵s0按下,使標誌r5加1。r5的值代表顯示模組的顯示模式號碼,加1表示模式的切換 r5=x 對應模式x
按鍵s1按下,使標誌r6的值為1
按鍵s2按下,使標誌r7的值為1 在時調整、分調整中,s1表示加1,s2表示減1;在鬧鈴調整中,s1表示時加1,s2表示分加1
按鍵s3按下,使r5的值為0,即返回模式0
三、鬧鐘模組
在這個模組中,程式判斷dshi和shi是否相等以及dfen和fen是否相等,如果兩個判斷都相等就使p2.0清0,驅動蜂鳴器發聲;有任意乙個判斷不相等都使p2.0置1,蜂鳴器不工作
四、顯示模組
一共4個led管,採用分時掃瞄顯示
顯示分為不同的模式:模式0、模式1、模式2、模式3、模式4,對應的標誌r5的值為0、1、2、3、4
模式0,正常模式,顯示為「時:分」
模式1,正常模式,顯示為「分:秒」
模式2,時調整模式,顯示為「時:分」,並且「分」正常顯示,「時」一閃一閃
模式3,分調整模式,顯示為「時:分」,並且「時」正常顯示,「分」一閃一閃
模式4,鬧鈴調整模式,顯示為「時:分」,並且「時」、「分」全部一閃一閃
在此模組,程式根據r5的值進入對應模式。
在模式0和模式1,只顯示,不能調整;
在模式2(模式3)可以通過按鍵s1、s2對時(分)進行加減操作;
在模式4,可以通過s1、s2對鬧鈴的時、分進行加操作(沒有減的操作)
各個模式下,按鍵s0使模式號增加,按鍵s3使任何模式返回模式0
五、總結
1.本實驗選用了共陰極led顯示器,而stc89c52的高電平驅動能力很差,所以需要使用電晶體放大,段碼訊號從基極輸入。又因為選用了pnp型電晶體,所以要sn和段碼訊號都是低電平才能使led發光,致使共陰極的led需要共陽極的**來驅動。
2.由於stc89c52的高電平驅動能力很差,一般都不做為驅動,所以以後的實驗應盡量選擇共陽極led,因為這樣可以減少電晶體的數目(本實驗用了7個,如果使用共陽極led則可以只用4個)。
3.由於定時器的工作與程式的迴圈查詢時分開的,所以誤差主要**於微控制器的自身頻率和定時器初值的設定,即:理論的初值只適合於標準的12mhz,現實的微控制器頻率可能不是標準值。可以通過具體的誤差反算出正確的初值。
附:電路圖
配套源程式:
org 0000h
ajmp main
org 000bh
ajmp int10
org 0030h
main: mov sp,#53h
mov r5,#00h初始模式設定為模式0
shi equ 20h
fen equ 21h
miao equ 22h
dshi equ 27h鬧鈴時
dfen equ 28h鬧鈴分
xianshi equ 29h ;顯示標誌,當為全0時顯示,全1不顯示
mov 2ah,#00h
cpl p2.7
mov shi,#00h
mov fen,#00h
mov miao,#00h
mov dshi,#10 ;預設10:30鬧鈴
mov dfen,#30
mov xianshi,#00h ;預設為顯示
mov r2,#00h
mov r6,#00h ;按鍵1(加)標誌
mov r7,#00h ;按鍵2(減)標誌
mov tmod,#01h
mov tl0,#0beh
mov th0,#0f0h
setb ea
setb et0
setb tr0
loop: ajmp aa3鍵盤掃瞄及 led顯示入口
int10: mov tl0,#0beh
mov th0,#0f0h
inc r2
cjne r2,#128,int11
acall aa1半秒中斷入口
int11: cjne r2,#0,int2
acall aa2一秒中斷入口
int2: reti
aa1: cpl p2.7半秒中斷服務 p2.7取反,使兩點閃動
mov 2ah,#0ffh
retaa2: cpl p2.7一秒中斷服務 p2.7取反,使兩點閃動
mov 2ah,#00h
inc miao
mov r0,#22h
cjne @r0,#60,aa22
mov miao,#00h
inc fen
dec r0
cjne @r0,#60,aa22
mov fen,#00h
inc shi
dec r0
cjne @r0,#24,aa22
mov shi,#00h
aa22: ret
aa3: acall kt呼叫鍵盤掃瞄程式
返回:k0閉合則模式號加1
k1閉合則r6=#01h
k2閉合則r7=#01h
k3閉合則模式號置1,即返回模式0
aa5: push acc
mov a,shi鬧鐘
cjne a,dshi,aa55
mov a,fen
cjne a,dfen,aa55
clr p2.0
pop acc
ajmp aa4
aa55: setb p2.0
pop acc
aa4: mov a,r5led顯示 ,模式標誌位r5
rl a
mov dptr,#modtab
jmp @a+dptr
modtab: ajmp mod0 ;時分式
ajmp mod1 ;分秒式
ajmp mod2時調整
ajmp mod3分調整
ajmp mod4 ;鬧鈴設定模式
ajmp mod5預留擴充套件模式(未定義)
ajmp mod6預留擴充套件模式(未定義)
mod0: mov xianshi,#00h ;開顯示
mov r3,#3 ;模式0(正常模式) 時分式 ,標誌 r5=0
mov a,fen ;顯示s3
mov b,#10
div ab
swap a
add a,b
mov 24h,a
anl 24h,#0fh
mov r4,24h
push acc
acall prt
dec r3顯示s2
pop acc
swap a
anl a,#0fh
mov r4,a
acall prt
dec r3顯示s1
mov a,shi
mov b,#10
div ab
swap a
add a,b
mov 24h,a
anl 24h,#0fh
mov r4,24h
push acc
acall prt
dec r3顯示s0
pop acc
swap a
anl a,#0fh
89C52微控制器
3.2 stc89c52系列微控制器系統結構特點 stc89c52是一種低功耗 高效能cmos8位微控制器,具有8k 在系統可程式設計flash 儲存器。使用高密度非易失性儲存器技術製造,與工業80c51 產品指令和引腳完全相容。片上flash允許程式儲存器在系統可程式設計,亦適於常規程式設計器。在...
基於STC89C51微控制器定時插座的設計與實現報告
摘要隨著家用電器的越來越普及和人們生活節奏的加快,人們對電器的依賴性進一步提高,對電器的定時需求也進一步增大。定時開關插座可用於電飯煲 飲水機 電視機 電腦 電動車電池的充電 定時開關電熱毯等需要定時供電的場合。定時開關插座的使用能夠做到節能 安全 方便等。本文介紹了一種基於stc89c51微控制器...
AT89C51微控制器的基本結構
at89c51微控制器的主要工作特性 內含4kb的flash儲存器,擦寫次數1000次 內含28位元組的ram 具有32根可程式設計i o線 具有2個16位可程式設計定時器 具有6個中斷源 5個中斷向量 2級優先權的中斷結構 具有1個全雙工的可程式設計序列通訊介面 具有乙個資料指標dptr 兩種低功...