設計十進位制0 99的計數器,採用按鍵計數,數碼管顯示,採用微控制器內部的定時計數器完成計數功能

時間 2021-09-01 18:44:15

1樓:

看這個,跟你要求的差不多  ,你自己稍稍改下就ok啦~\(≧▽≦)/~

#include

#define uchar unsigned char#define uint unsigned intuchar dsy_code=;

uchar count=0;

void main()

p0=0x00;

p2=0x00;

tmod=0x06;//tmod=0000 0110b,c/t=1,工作於計數方式

th0=tl0=256-1;

et0=1;   //允許t0中斷

ex0=1;   //允許int0中斷

ea=1;

ip=0x02;   //定時器0中斷優先it0=1;     //int0中斷觸發為下降沿觸發tr0=1;    //啟動t0

while(1)

p0=dsy_code[count/10];

p2=dsy_code[count%10];

void clear_counter() interrupt 0count=0;

void key_counter() interrupt 1count=(count+1)%100;

2樓:匿名使用者

怪了,這個問題不是回答了?

利用51微控制器,4個數碼管設計一個計時器,要求在數碼管上顯示的資料從0開始每1秒鐘加1。 10

3樓: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。

4樓:匿名使用者

我剛剛寫好的 我的數碼管是共陽的 用中斷函式來寫#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()

5樓:匿名使用者

#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)

6樓:匿名使用者

這個不難的 你自己動手練習一下就會了的

怎樣用51微控制器實現累加計時和倒計時,並用六個共陰極數碼管顯示出來。用兩個按鍵分別切換。

7樓:匿名使用者

剛開始上電時, system_mode不是1 也不是2,不知你初始化時是否給它賦值?另外你的按鍵檢測程式沒加入到迴圈程式中,剛上電時若沒有按鍵按下,則很快跳過兩個按鍵檢測語句,然後進入迴圈顯示程式中,這是一個死迴圈,只有中斷才可打斷其執行,所以再按什麼鍵也沒反應了,建議把按鍵檢測放入顯示迴圈中,它對顯示效果不會有什麼影響,或在初始化後加一個迴圈,若兩個按鍵都沒有按下,一直檢測按鍵

利用51微控制器,4個數碼管設計一個計時器,要求在數碼管上顯示的資料從0開始每1秒鐘加1。

8樓:匿名使用者

我正好也寫了那麼一個程式,我說一下自己的思路吧,我也剛學。

先做一個段選表和位選表,用兩個陣列儲存,如果有八個燈,位選就有8個。然後再定義一個陣列

digit[8] 裡面儲存 個位十位百位等數位。然後再定時器中斷函式裡,用一個switch語句,分別表明位選在01234567的情況。 我把它貼出來吧。

switch (num_we) //控制每一次位選的數碼管顯示

上面ledcode 是段選表 wecode 是位選表 。 num_we是位選標誌,表示選到了第幾個數碼管。

然後在除錯差不多掃描幾回為1秒,每到了一定的回數,個位數字就+1,個位數字到10,個位清零,十位+1,,以此類推。

9樓:絕種好風

那得看你的數碼管是怎麼接的,其實重要的是51微控制器定時器的使用,兩個,t0和t1,隨便選一個,就行了,只是提醒下,

用74LS192構成十進位制加法計數器

anyway丶 主要是用74ls283晶片和74ls86晶片通過撥碼開關來控制高低電平作為二進位制的0和1,用普通led燈來展現高低電平狀態,高電平則燈亮,低電平則燈滅,通過2位的撥碼開關來實現加法器和減法器的轉換,經過兩組晶片後電流通過led,led燈亮,則表示為1,如果燈滅,則表示為0。另外設計...

什麼十進位制計數法,什麼是十進位制計數法

墨汁諾 十進位制 計數法 是以10為基礎數字系統,是在世界上應用最廣泛的進位制。十進位制計數法是相對二進位制計數法而言的,是我們日常使用最多的計數方法 俗稱 逢十進一 它的定義是 每相鄰的兩個計數單位之間的進率都是十 的計數方法,叫做 十進位制計數法 十進位制計數法是滿十進一,滿二十進二,以此類推的...

利用兩片同步十進位制計數器74160和必要的閘電路構成29進位制的同步計數器

anyway中國 時鐘clk與第一片74160的cp直接相連,第一片rco與clk經與門與第二片74160的cp相連,可構成100進位制計數器。兩片74160的四位二進位制輸出分別記為 q00 q01 q02 q03及q10 q11 q12 q13。用閘電路實現c q13 q12 q11 q10 q...