利用51微控制器設計秒錶一定要按要求做到0 01秒)

時間 2021-09-06 09:20:34

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微控制器的電子秒錶設計

這個是 數碼管顯示計數器程式。稍加更改 既滿足要求 要精確定時,必須使用自裝載方式。這裡我們使用t2定時器,讓它工作在16bit自動裝載方式,這時,有另一個位置專門裝著16位預裝載值,t2溢位時,預裝載值立即被置入。這就保證了精確定時。但是,即使是16位定時器,最長的溢位時間也就幾十毫秒,要定時一秒...

利用AT89C51微控制器設計簡易電子鐘(六位),通過8位LED數碼管實現時間顯示系統可以通過按鍵實現時間

這個做起來也辛苦的好吧?我這正好有一份可以改改,這個分也太對不起勞動力了。人民幣10元還差不多。利用at89c51微控制器設計簡易電子鐘 六位 通過8位led數碼管實現時間顯 你好!需要用時鐘晶片嗎?數碼管是怎麼驅動的 我曾經做過,單單程式設計這一項就麻煩死了.還不如去網購買現成的,整套都有的賣.做...

51微控制器跑馬燈程式,51微控制器設計跑馬燈的程式用(c語言)編寫

不好意思,延時用了樓上的。keil下編譯ok。假設p1接燈。org 00h sjmp start org 30h start mov a 00 setb c mov r0,9 從左到右 loop1 rlc a mov p1,a acall delay djnz r0,loop1 從右到左 mov r...