導航:首頁 > 操作系統 > 51單片機數碼管倒計時

51單片機數碼管倒計時

發布時間:2022-01-12 12:20:54

① AT89C51單片機60.00到00.00倒計時程序 4位數碼管顯示 C語...

AT89C51單片機60.00到00.00倒計時程序 4位數碼管顯示 C語...
黃鶯鳴翠柳 紫燕剪春風 鶯歌燕舞 一年四季春常在 萬紫千紅永開花 喜迎新春

② 如何用單片機和數碼管製作倒計時表

這是我自己寫的代碼,修改了我前段時間寫的電子鍾,在跟老師借的板子上調試成功,你看看參考一下。(還是我第一次寫的編程規范化程序,有注釋哦)
//******************************************************************
//作者:cheungman
//日期:2006-9-23
// 本程序為倒計時程序,用AT89S51,晶振為11.0592MHz
// P2作為數碼管的數據輸入,P1作為數碼管的控制位
//******************************************************************

#include <at89x51.h>

unsigned int time;
unsigned char second10, second1,minute10,minute1;
unsigned char count1=59,count2=59; //定義分倒計59分 鍾,秒倒計59秒

//周老師的開發板上的數碼管字型碼(加點的)
unsigned char code tab[]={0xbf,0x86,0xdb,0xcf,0xe6,
0xed,0xfd,0x87,0xff,0xef};

//周老師的開發板上的數碼管字型碼(不加點的)
unsigned char code tab1[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f}; //共陰字型碼

void delay(unsigned char i) //數碼管動態顯示的延時子程序
{
unsigned char j;
while((i--)!=0)
{
for(j=123;j>0;j--);
}
}

void display(second10, second1,minute10,minute1) //顯示子程序
{
P1=0x04;
P2=tab1[minute10];
delay(1);
P1=0x08;
P2=tab[minute1];
delay(1);
P1=0x10;
P2=tab1[second10];
delay(1);
P1=0x20;
P2=tab1[second1];
delay(1);
}

main()
{
TMOD=(TMOD & 0xf0) | 0x02; //T0工作模式是方式2
TH0=0x06; //定義初始值為0.06ms,計時0.256ms-0.06ms=0.25ms
TL0=0x06;
TR0=1; //開啟T0計時
EA=1;
ET0=1;
while(1)
{
display(count1/10,count1%10,count2/10,count2%10);
}
}

void timer0() interrupt 1 using 0 //T0中斷
{
TH0=0x06;
TL0=0x06;
time++;
if(time==4000) //4000*0.25ms=1000ms=1s
{
time=0;
count1--;
if(count1==0)
{
count1=59;
count2--;
if(count2==0)
{
count2=59;
}
}
}
}

③ 51單片機試題,寫一個用單個數碼管顯示10秒倒計時的程序,急!!!!!

#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit an=P2^6;
sbit wei=P2^7;
uchar disp=0;
uchar time=10;
int miao=0;
uchar code dispcode[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71}; //段碼表

void Timer0Init(void) //1毫秒@12.000MHz
{
TMOD &= 0xF0; //設置定時器模式
TMOD |= 0x01; //設置定時器模式
TL0 = 0x18; //設置定時初值
TH0 = 0xFC; //設置定時初值
TF0 = 0; //清除TF0標志
TR0 = 1; //定時器0開始計時
}

void main()
{
Timer0Init()
ET0=1; //開啟定時器0中斷
EA=1;
while(1);//等待中斷
}
void time0(void)interrupt 1
{
TL0 = 0x18; //設置定時初值
TH0 = 0xFC; //設置定時初值

if(disp&1=0)
{
an=1;
P0=dispcode[time%10];
an=0;
wei=1;
P0=0xdf;
wei=0;
}
else
{
an=1;
P0=dispcode[time/10];
an=0;
wei=1;
P0=0xef;
wei=0;
}
disp++;
miao++;
if(miao==1000)
{
miao=0;
if(miao!=0)time--;
}

}

④ 51單片機的程序(c語言版),用數碼管進行倒計時。

數碼管顯示2個數字,共顯示2萬次。

⑤ 51單片機接2個led數碼管,怎麼讓數碼管倒計時

先看看下面程序,看懂了,就知道咋編了
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar a , b=0;
sbit wei1=P1.0;
sbit wei2=P1.1;
//共陰數碼管七段碼
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77};
void Delay1ms(uint i) //1ms延時程序
{
uint j;
for(;i>0;i--)
{
for(j=0;j<164;j++)
{;}
}
}
void display( uchar a)) /顯示子程序
{
P0= table[a/10];//十位
wei1=1;
Delay1ms(2) ;
wei1=0;
P0= table[a%10];//個位
wei2=1;
Delay1ms(2) ;
wei2=0;
}
void main(void )//主程序
{
TMOD=0x01;// 定時器1工作方式一
ET0=1;
EA=1;
TH0=(65536-50000)/256;//定時50ms
TL0=(65536-50000)%256;
TR0=1;
while(1)
{
display(b);
}
}
//中斷子程序
void Timer0(void) interrupt 1

{

TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
a++;
if(a==20)//20次是1 秒
{ a=0;b++;}
if(b==60)
{ b=0;}
}

⑥ 求單片機數碼管倒計時程序

#include<reg52.h>
#include <intrins.h> //內部包含延時函數 _nop_();
#define uchar unsigned char
#define uint unsigned int sbit d1=P2^0; sbit key1=P0^4;
sbit SDATA_595=P0^0; //串列數據輸入 ----接板卡上的SPI 數據信號輸入端
sbit SCLK_595=P0^1; //移位時鍾脈沖(輸入口) ---接板卡上的SPO----串列時鍾線----SHcp移位時鍾信號輸入端
sbit RCK_595=P0^2; //輸出鎖存器控制脈沖 ----接板卡上SPK STcp鎖存信號輸入端
uchar code an[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar code wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uchar num=60;
void delay(uint z);
void aa595_in(uchar Data) {
uchar i;
for(i=0;i<8;i++)
{SCLK_595=0; Data<<=1; SDATA_595=CY;
SCLK_595=1; SCLK_595=0;
}
}
void a595_in(uchar Data) {
uchar i;
for(i=0;i<8;i++) {
SCLK_595=0; Data<<=1; SDATA_595=CY;
SCLK_595=1; SCLK_595=0;
}
}
void aa595_out(void) {
RCK_595=0;
_nop_(); _nop_();
RCK_595=1;
_nop_(); _nop_();
RCK_595=0;
}
void main() {
uchar ge,shi;
while(1) {
if(key1==0) {
delay(10);
if(key1==0)
{d1=0; num--;
if(num==0)
num=60;}
while(!key1);//鬆手檢測
delay(10);//延時10ms
while(!key1);//再鬆手檢測
}
else d1=1;
// aa595_in(an[num]);
// aa595_in(wei[3]);
shi=num/10;
ge=num%10;
a595_in(an[shi]);
aa595_in(wei[3]);
aa595_out();
delay(10);
aa595_in(an[ge]);
aa595_in(wei[2]);
aa595_out();
delay(10);}
}
void delay(uint z) {
uint x,y;
for(x=100;x>0;x--) for(y=z;y>0;y--);
}//延時子程序,延時Zms

⑦ 51單片機編程2位數碼管倒計時,從10秒開始每隔一秒減一當減到零有重復回到10秒

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//主程序
void main()
{
P0=0x06; //顯示10
P2=0x3f;
i=0;
Second_Counts=100;
TMOD=0x01; //定時器0方式1
TH0=(65536-50000)/256; //定時器0: 5ms
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1
while(1) ;
}
//T0中斷函數
void DSY_Refresh() interrupt 1
{
TH0=(65536-50000)/256; //恢復定時器0初值
TL0=(65536-50000)%256;
if(++i==2) //50ms*2=0.1s轉換狀態
{
i=0;
Second_Counts--;
P0=DSY_CODE[Second_Counts/100];
P2=DSY_CODE[(Second_Counts/10)%10];
if(Second_Counts<=-1) Second_Counts=100; //顯示10
}
}

⑧ 51單片機30秒倒計時,用數碼管顯示的,c程序,元件只有at89c51和數碼管,沒有其他的,

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit la=P2^6;
sbit wela=P2^7;
sbit d1=P1^0;
uchar num,num1;tt;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(uint z);
void main()
{
num=0;
tt=0;
TMOD=0x11;//設置定時器0為工作方式1
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
TH1=(65536-20000)/256;
TL1=(65536-20000)%256;
//EA=1;//開總中斷
ET0=1;//開定時器0中斷
ET1=1;
TR0=1;//啟動定時器0
TR1=1;
wela=1;//11101010
P0=0xea;
wela=0;
la=1;
P0=0x3f;
la=0;
while(1)
{
if(num1==25)
{
num1=0;
P1=~P1;
}
if(tt==100)
{
tt=0;
num++;
if(num==16)
num=0;
la=1;
P0=table[num];
la=0;
}
}
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void time0() interrupt 1
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
tt++;
}
void time1() interrupt 3
{
TH1=(65536-20000)/256;
TL1=(65536-20000)%256;
num1++;
}
自己發掘吧

⑨ 小白求救,51單片機利用兩個數碼管實現60秒倒計時

個位數能夠顯示正常,那麼就說明十位數的處理代碼出了問題;

給出代碼看看吧

⑩ 單片機 at89c51 6位數碼管24小時倒計時程序

留個郵箱發給你。

閱讀全文

與51單片機數碼管倒計時相關的資料

熱點內容
巨靈鳥php源碼ERP破解版 瀏覽:38
長春編譯ipfs製作 瀏覽:356
程序員業績表述 瀏覽:248
雲伺服器可以下載軟體嗎 瀏覽:130
純藍無毛貓解壓 瀏覽:564
privatetracker伺服器如何搭建 瀏覽:591
手機c語言怎麼編譯 瀏覽:176
雙喜地板指標公式源碼 瀏覽:527
app窺探隱私到哪裡投訴 瀏覽:713
decimal數據加密 瀏覽:646
游戲模型加密了如何破解 瀏覽:309
北京伺服器硬碟回收門店雲主機 瀏覽:837
神探狄仁傑5在哪個app可以觀看 瀏覽:697
雲南中級程序員實戰培訓 瀏覽:674
安卓軟體什麼平台比較好 瀏覽:153
linux五筆輸入法下載 瀏覽:923
程序員問題解決方案 瀏覽:78
數據和app哪個好 瀏覽:120
大眾app怎麼顯示車去哪裡 瀏覽:274
柱根部的加密區長度怎麼算 瀏覽:847