1樓:做而論道
最低位,是0.01s 變化一次,一秒鐘,變化 100 次。
這麼快,人的眼睛,分辨不出來。
只能看到一個 8。
停止時,才能看到穩定的數字。
程式如下:
#include
sbit p3_5 =p3^5;
unsigned char counet, m[4] = ;
void display()
unsigned char code tab = ;
unsigned char code bit = ;
unsigned char i, j;
for (i = 0; i < 4; i++) {
p0 = tab[m[i]]; if (i == 2) p0 &= 127;
p2 = bit[i]; for(; j > 0; j++); p2 = 0;
void wait_key()
while( p3_5) display();
while(!p3_5) display();
main()
tmod = 0x02;
ie = 0x82;
while(1) {
wait_key(); tr0 = 1; th0 = tl0 = 6;
wait_key(); tr0 = 0;
wait_key(); m[0] = m[1] = m[2] = m[3] = 0;
void time0() interrupt 1
counet++;
counet %= 40;
if(!counet) {
m[0]++; m[0] %= 10;
if(!m[0]) {
m[1]++; m[1] %= 10;
if(!m[1]) {
m[2]++; m[2] %= 10;
if(!m[2]) {
m[3]++; m[3] %= 10;
2樓:
#include
sbit led1=p2^0;
sbit led2=p2^1;
sbit led3=p2^2;
sbit led4=p2^3;
sbit p3_5 =p3^5;
unsigned char keycnt;
unsigned char tab=;
unsigned int counet,second,msecond,minute;
void delay(unsigned int m)void display()
main()
while(p3_5==0);}}
} }void time0() interrupt 1 }}}}
3樓:匿名使用者
用定時器
我是做微控制器的
用51微控制器設計一個秒錶。主要要求: 1.用微控制器的定時/計數器實現一個
4樓:匿名使用者
keyval equ 30h
dat equ 33h
scanled equ 39h
clk equ 77h
sec equ 78h
sec1 equ 79h
sec2 equ 7ah
dot bit 00h
org 0000h
ljmp main
org 0003h
ljmp extint0
org 000bh
ljmp t0isr ;50ms定時
org 001bh
ljmp t1isr ;掃描顯示
org 0030h
main:
mov sp,#5fh
mov tmod,#11h
mov th0,#03ch
mov tl0,#0b0h
mov th1,#0ech
mov tl1,#078h
mov keyval,#2
mov 33h,#10h
mov 34h,#10h
mov 35h,#10h
mov 36h,#10h
mov clk,#0
setb it0
setb ex0
clr tr0
clr et0
mov r2,#0
setb tr1
setb et1
setb ea
loop:
mov a,keyval
loop1:
jnz loop2 ;啟動
setb tr0
setb et0
sjmp loop
loop2:
dec a
jnz loop3 ;暫停
clr tr0
clr et0
sjmp loop
loop3:
dec a
jnz loop ;清零
mov 36h,#0
mov 35h,#0
mov 34h,#0
mov 33h,#0
sjmp loop
extint0:
push acc
inc keyval
mov a,keyval
cjne a,#3,ext00
ext00:
jc ext01
mov keyval,#0
ext01:
pop acc
reti
t0isr:
push acc
clr tr0
mov th0,#3ch
mov tl0,#0b0h
setb tr0
inc clk
mov a,clk
cjne a,#2,t0isre
mov clk,#0
inc 36h
mov a,36h
cjne a,#10,t0isre
mov 36h,#0
inc 35h
mov a,35h
cjne a,#10,t0isre
mov 35h,#0
inc 34h
mov a,34h
cjne a,#6,t0isre
mov 34h,#0
inc 33h
mov a,33h
cjne a,#10,t0isre
mov 33h,#0
t0isre:
pop acc
reti
t1isr:
push acc
clr tr1
mov th1,#0ech
mov tl1,#78h
setb tr1
mov dptr,#ledtab
t100:
mov r0,#dat
mov a,scanled
add a,r0
mov r0,a
mov a,scanled
jnz t101
mov p2,#01h
setb dot
sjmp t1dis
t101:
dec a
jnz t102
mov p2,#02h
clr dot
sjmp t1dis
t102:
dec a
jnz t103
mov p2,#04h
setb dot
sjmp t1dis
t103:
mov p2,#08h
clr dot
t1dis:
mov a,@r0
movc a,@a+dptr
jnb dot,t1dis1
orl a,#01h
t1dis1:
cpl a
mov p0,a
inc scanled
mov a,scanled
cjne a,#4,t1end
mov scanled,#0
t1end:
pop acc
reti
ledtab: db 0fch ;"0" 00hdb 60h ;"1" 01h
db 0dah ;"2" 02h
db 0f2h ;"3" 03h
db 66h ;"4" 04h
db 0b6h ;"5" 05h
db 0beh ;"6" 06h
db 0e0h ;"7" 07h
db 0feh ;"8" 08h
db 0f6h ;"9" 09h
db 0eeh ;"a" 0ah
db 3eh ;"b" 0bh
db 9ch ;"c" 0ch
db 7ah ;"d" 0dh
db 9eh ;"e" 0eh
db 8eh ;"f" 0fh
db 00h ;" " 10hend
利用51微控制器,4個數碼管設計一個計時器,要求在數碼管上顯示的資料從0開始每1秒鐘加1。 10
5樓:anyway丶
共陽數碼管中斷程式:
#include
#define uint unsigned int
#define uchar unsigned char
uchar code table=
;uint num,a;
uchar bai,shi,ge;
void init();
void delay(uint);
void display(ucharbai,ucharshi,ucharge);
uint fb();
uint fs();
uint fg();
void main()
}void init()
void display(ucharbai,ucharshi,ucharge)
void timeoff() interrupt 1}}
void delay(uint z)
uint fb()
uint fs()
uint fg()
擴充套件資料
2個可程式設計定時/計數器·5箇中斷源,2個優先順序(52有6個)
一個全雙工序列通訊口
外部資料儲存器定址空間為64kb
外部程式儲存器定址空間為64kb
邏輯操作位定址功能·雙列直插40pindip封裝
單一+5v電源供電
cpu:由運算和控制邏輯組成,同時還包括中斷系統和部分外部特殊功能暫存器;
ram:用以存放可以讀寫的資料,如運算的中間結果、最終結果以及欲顯示的資料;
rom:用以存放程式、一些原始資料和**;
i/o口:四個8位並行i/o口,既可用作輸入,也可用作輸出
t/c:兩個定時/記數器,既可以工作在定時模式,也可以工作在記數模式;
五個中斷源的中斷控制系統;
一個全雙工uart(通用非同步接收傳送器)的序列i/o口,用於實現微控制器之間或微控制器與微機之間的序列通訊;
片內振盪器和時鐘產生電路,石英晶體和微調電容需要外接。最佳振盪頻率為6m—12m。
6樓:匿名使用者
我剛剛寫好的 我的數碼管是共陽的 用中斷函式來寫#include
#define uint unsigned int#define uchar unsigned charuchar code table=
;uint num,a;
uchar bai,shi,ge;
void init();
void delay(uint);
void display(ucharbai,ucharshi,ucharge);
uint fb();
uint fs();
uint fg();
void main()
}void init()
void display(ucharbai,ucharshi,ucharge)
void timeoff() interrupt 1}}void delay(uint z)
uint fb()
uint fs()
uint fg()
7樓:匿名使用者
#include
#define uint unsigned int
uint qian,bai,shi,ge;
int a;
unsigned char code table=;
void chushihua(); //初始化函式
void delay(unsigned int i); //延時函式
void xianshi(uint qian,uint bai,uint shi,uint ge); //顯示函式
void main()
xianshi(qian,bai,shi,ge); } }
void exter1() interrupt 1
void chushihua()
void delay(unsigned int i)
void xianshi(uint qian,uint bai,uint shi,uint ge)
如何利用51微控制器設計發出1MHz頻率的方波
if真相 可以用定時器中斷實現這樣的處理,這種方法重點在於根據你的晶振頻率計算出定時器中斷的引數,然後就可以很好的控制定時器中斷觸發的時間了。只要在中斷處理過程裡不斷的讓i o口取反,就可以實現這樣的方波了。常數定義 define timel 0x07 定時器低位 define timeh 0xfe...
用51微控制器C語言版設計秒錶倒計時
要分析乙個微控制器 c 語言程式設計的秒錶程式,需要考慮以下幾個方面 硬體平台 需要了解秒錶程式所執行的微控制器型別,以及硬體平台上可用的硬體資源,如定時器 顯示器等。時間計數方式 需要確定秒錶程式使用的時間計數方式,是通過定時器實現週期性計時,還是通過程式每隔一段時間手動計時。顯示方式 需要確定秒...
51微控制器的溫度採集系統設計
雪少 第一章 確定系統功能與效能 本系統的功能主要有資料採集 資料處理 輸出控制。能對0 1000 0 2c範圍內的各種電加熱爐的溫度進行精密測量,同時,四位led顯示器直接跟蹤顯示被控物件的溫度值,準確度高,顯示清晰,穩定可靠,使用方便 在具體設計程式設計 除錯過程中,為了除錯方便,程式設計把溫度...