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...