1樓:瀋陽_大偉
#include
sbit axs=p1^3; sbit bxs=p1^2; sbit cxs=p1^1; sbit dxs=p1^0;//數碼管位選埠
char table[10]=;//數碼管顯示編碼
void ys(char hs); void xs(int xm,int xs); void time1(void);int n,i,m,s;
void main(void)}//主函式
void int1() interrupt 1 //定時器中斷}}}
void time1(void)//定時器初始化
void xs(int xm,int xs) //數碼管顯示
void ys(char hs)}//延時函式
和你要的一樣,無償奉獻了
利用51微控制器,4個數碼管設計乙個計時器,要求在數碼管上顯示的資料從0開始每1秒鐘加1。
2樓:匿名使用者
我正好也寫了那麼乙個程式,我說一下自己的思路吧,我也剛學。
先做乙個段選錶和位選錶,用兩個陣列儲存,如果有八個燈,位選就有8個。然後再定義乙個陣列
digit[8] 裡面儲存 個位十位百位等數字。然後再定時器中斷函式裡,用乙個switch語句,分別表明位選在01234567的情況。 我把它貼出來吧。
switch (num_we) //控制每一次位選的數碼管顯示
上面ledcode 是段選錶 wecode 是位選錶 。 num_we是位選標誌,表示選到了第幾個數碼管。
然後在除錯差不多掃瞄幾回為1秒,每到了一定的回數,個位數字就+1,個位數字到10,個位清零,十位+1,,以此類推。
3樓:絕種好風
那得看你的數碼管是怎麼接的,其實重要的是51微控制器定時器的使用,兩個,t0和t1,隨便選乙個,就行了,只是提醒下,
用51微控制器做定時器,時間顯示在數碼管上,要求有秒鐘十秒鐘分鐘十分鐘,四個數碼管,程式一開始就直接
4樓:照月明
............這不是最簡單來
的嗎?用源微控制器的定時bai器設定成50ms中斷du
一次,然後20次就是1秒,秒到zhi了60,然後把dao秒變成0,分鐘加1,數碼管你看看是用什麼控制138加595,還是數碼管晶元直接驅動
5樓:匿名使用者
#include
#define uchar unsigned char#define uint unsigned intuchar ledtab=;
uchar disdat[4]=;
uchar num=0;
uchar min=0,sec=0;
void datdeal()
void t0isr() interrupt 1datdeal();
p0=ledtab[disdat[num]];
num++;
num&=0x03;
}void t1isr() interrupt 3}}void ext0isr() interrupt 0main()
用C51系列的微控制器控制在8位數碼管動態顯示秒錶要c語言版程式謝謝
顯示程式和硬體關聯,如驅動方式 位數等,所以沒有統一的程式,假定動態顯示,大概思路如下 1 設定定時中斷,定時中斷時間是5毫秒 2 中斷程式完成秒計時,秒數發生變化時,要將秒數對應的顯示碼放到顯示緩衝區 3 每次中斷迴圈顯示一位數碼管 下面是我曾經寫的乙個顯示程式 顯示緩衝區g disp buf d...
微控制器求動態顯示分別顯示0123在四位數碼管
include define uchar unsigned charuchar tab 0到f uchar num uchar led void delay uchar a main c語言微控制器 數碼管動態顯示 這裡的16個元素代表的是從 十六進製制數0 9 a b c d e f的段碼,根據什...
我微控制器設計裡驅動4位數碼管段選由P1口控制,位選通過74LS373驅動,請問他的原理,這裡373的作
這裡373不是做鎖存器copy用,純粹用來增加驅動bai電流,因為oe腳接高電du平,這樣 zhi373輸出完全和輸入一dao致。這樣做,是因為51的驅動能力弱,當作為數碼管位驅動時能力不夠,位電流是所有的段電流之和,比如顯示數字8時,是段電流的7倍。1 擴充套件io口 2 增大驅動能力 io口無法...