用51微控制器的定時/計數器t0計時功能,作為秒計數時間,當一秒產生時,秒計數加1,記到六十自動從0開始。十位數由接在p0的數碼管顯示,個位數由接在p2的數碼管顯示出來。
因為微控制器的計時器t0最大定時只有65536μs,所以我們要定時1s,可以通過設定定時器t0一次計時50ms,計時20次剛好是1s。
**如下:
org 0000h
ajmp main
org 0030h
main:
mov r0,#00h; //秒數
mov r1,#00h;//定時器次數
mov tmod,#01h;//定時器0工作在方式1
mov th0,#3ch;//設定初值
mov tl0,#0b0h;
setb tr0;//定時器0允許工作
show:
mov a,r0;//顯示秒數
mov b,#10;
div ab;
mov dptr,#table;
movc a,@a+dptr;
mov p0,a;
mov a,b;
movc a,@a+dptr;
mov p2,a;
wait;
jnb tf0,wait;
clr tf0;
mov th0,#3ch;
mov tl0,#0b0h;
inc r1;
cjne r1,#20,next1;
mov r1,#00h;
inc r0;
cjne r0,#60,next2;
mov r0,#00h;
next2:
ljmp show
next1:
ljmp wait;
table: db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
end當然,可以在這個程式基礎上增加暫停,重置等功能。
用51微控制器做乙個簡單加法器
在做完流水燈後就可以嘗試做乙個結合數碼管和按鍵結合的簡單加法器 我所用的是sct89c51微控制器 此微控制器有3個數碼管,可以通過2個key按鍵控制 1key個選擇數碼管,另為乙個調整數碼管的顯示 如下 include define uint unsigned int define uchar u...
51微控制器做乙個計時器
同樣我們使用的仍然是stc的8051微控制器,這段 是用來做乙個計時器,通過數碼管實時顯示出來,因為板子上數碼管有6個,所以可以設定小時,分鐘,秒三個單位,在proteus上也是可以模擬的,計時結束可以用蜂鳴器,或者繼電器介面連線 乙個鬧鈴,鬧鈴用電磁式的就可以,當然簡單來說蜂鳴器就是乙個不錯的選擇...
乙個鬧鐘的微控制器程式
乙個鬧鐘的微控制器程式。其中蜂鳴器接p37,我的微控制器數碼管是四位共陽數碼管,接p0和p2,k1接p14,k2接p15,k3接p16,k4接p17。晶振採用12mhz。stc89c52 file clock.c include const unsigned char led7code unsign...