基於51微控制器的電子秒錶設計

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

1樓:

這個是 數碼管顯示計數器程式。稍加更改 既滿足要求

要精確定時,必須使用自裝載方式。這裡我們使用t2定時器,讓它工作在16bit自動裝載方式,這時,有另一個位置專門裝著16位預裝載值,t2溢位時,預裝載值立即被置入。這就保證了精確定時。

但是,即使是16位定時器,最長的溢位時間也就幾十毫秒,要定時一秒,就需要一個變數來儲存溢位的次數,積累到了多少次之後,才執行一次操作。這樣就可以累加到1秒或者更長的時間才做一次操作了。

t2定時器有個特殊的地方,它進入中斷後,需要自己清除溢位標記,而51的其他定時器是自動清除的。請參考51微控制器相關書籍。

如果使用t2定時器實現1秒精確定時

下面我們就來計算:

**器的晶振是22118400hz,每秒鐘可以執行1843200個機器週期。而t2每次溢位最多65536個機器週期。我們儘量應該讓溢位中斷的次數最少,這樣對主程式的干擾也就最小。

選擇每秒中斷24次,每次溢位1843200/24=76800個機器週期,超出65536,無效。

選擇每秒中斷30次,每次溢位1843200/30=61440個機器週期

選擇每秒中斷32次,每次溢位1843200/32=57600個機器週期

選擇每秒中斷36次,每次溢位1843200/36=51200個機器週期

選擇每秒中斷40次,每次溢位1843200/40=46080個機器週期

從上面可以看到我們可以選擇方式有很多,但是最佳的是每秒中斷30次,每次溢位61440個機器週期。也就是賦定時器t2初值65536-61440=4096,換成十六進位制就是0x1000。

從上面的計算也可以看出晶振2118400hz的好處,它可以整除的倍數多,要準確定時非常方便。更常見的應用是在串列埠波特率上,使用22118400hz可以輸出最多準確的標準波特率。

如果是其他頻率的晶振 按照上面的方法計算即可

#include //包括一個52標準核心的標頭檔案

#include

void x8led(unsigned long ddd);

void delay882us(void);

sbit p20=p2^0;

sbit p21=p2^1;

sbit s16=p3^0;

sbit s15=p3^1;

sbit s14=p3^2;

sbit p10=p1^0;

sbit p11=p1^1;

sbit p12=p1^2;

sbit p13=p1^3;

sbit p14=p1^4;

sbit p15=p1^5;

sbit p16=p1^6;

sbit p17=p1^7;

bit f=0;//位變數

timer2() interrupt 5

void x8led(unsigned long ddd)

;//0-9的欄位碼

unsigned char xx[8]=;

unsigned char y[8]=;

xx[0]=ddd%10;

xx[2]=ddd/10%10;

xx[1]=ddd/100%10;

xx[3]=ddd/1000%10;

xx[4]=ddd/10000%10;

xx[6]=ddd/100000%10;

xx[5]=ddd/1000000%10;

xx[7]=ddd/10000000; //求出八位數,分別放在八個變數中

for(q=0;q<8;) //迴圈掃描

} /*******************************延時882us*************************/

void delay882us(void)

void main(void)

x8led(a);//將a的值送到數碼管顯示}}

2樓:二分之一百

彙編不會,c語言還行

求基於51微控制器的流水燈的設計

摩凌文 include define uint unsigned int define uchar unsigned charsbit keya p2 1 這裡看你把按鍵設定在哪個引腳上,這個是實現功能2 sbit keyb p2 2 這個是實現功能2sbit keyc p2 7 實現功能3void...

求基於MCS 51系列微控制器AT89C51,設計8路搶答

org 0000h ajmp main org 0003h ajmp int0sub org 000bh ajmp t0int org 001bh ajmp t1int ok equ 20h 搶答開始標誌位 ring equ 22h 響鈴標誌位 org 0040h main mov r1,0fh 初...

51微控制器的溫度採集系統設計

雪少 第一章 確定系統功能與效能 本系統的功能主要有資料採集 資料處理 輸出控制。能對0 1000 0 2c範圍內的各種電加熱爐的溫度進行精密測量,同時,四位led顯示器直接跟蹤顯示被控物件的溫度值,準確度高,顯示清晰,穩定可靠,使用方便 在具體設計程式設計 除錯過程中,為了除錯方便,程式設計把溫度...