導航:首頁 > 操作系統 > 單片機四位led數字時鍾

單片機四位led數字時鍾

發布時間:2022-12-07 14:52:39

① 運用51單片機實現4位8段LED數碼管的動態數字顯示,寫出C語言程序

#include<reg51.h>
#define uchar unsigned char;
uchar distab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; //0到f
uchar number,nn=0;
uchar dat[]={2,0,1,2,1,1,4,5,8,2};
void t0isr() interrupt 1
{
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
number++;
number%=4;
switch(number)
{
case 0:P2=0x08;P0=distab[nn];
break;
case 1:P2=0x04;P0=distab[nn+1];
break;
case 2:P2=0x02;P0=distab[nn+2];
break;
case 3:P2=0x01;P0=distab[nn+3];
break;
default:break;
}
nn++;
nn%=7;
}
main()
{
TMOD=0x01;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
TR0=1;
ET0=1;
EA=1;
while(1);
}

② 51單片機實現數字時鍾,用四位數碼管實現分計時,顯示分和秒,可以任意設置時間。

1、將分(秒)中的數字位分離
2、控制顯示在相應數碼管
3、數碼管如果採用動態掃描實現,要注意位選和段選
4.更多交流參考我空間文章。

③ 用單片機控制4位LED數碼顯示,先從左到右慢速動態掃描顯示數字「1357」,「2468」,然後在從

#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code dis_code_[]={0xf9,0xb0,0x92,0xf8,0xa4,0x99,0x82,0x80,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x89,0x8c};
void delay(uint t)
{
uchar i;
while (t--)
{
for(i=0;i<200;i++);
}
}
void main()
{
uchar i,j=0x80;
while(1)
{
for(i=0;i<4;i++)
{j=_crol_(j,1);
P0=dis_code_[i];
P2=j;
delay(200);
}
}
while(1)
{for(i=4;i<8;i++)
{j=_crol_(j,1);
P0=dis_code_[i];
P2=j;
delay(180);
}
}
while(1)
{for(i=8;i<12;i++)
{j=_crol_(j,1);
P0=dis_code_[i];
P2=j;
delay(100);
}
}
while(1)
{for(i=12;i<16;i++)
{j=_crol_(j,1);
P0=dis_code_[i];
P2=j;
delay(100);
}
}
}

④ STC單片機四位數碼管怎麼顯示時間

這個程序有你要的功能 給你參考一下 電路可能和你的不一樣
#include<AT89X51.H>

#define uchar unsigned char
#define uint unsigned int

#define LedDisp_Port P0
sbit smg1=P1^0;
sbit smg2=P1^1;
sbit smg3=P1^2;
sbit smg4=P1^3;
sbit Led1=P2^7;

unsigned char t0IntCnt=0x00; //定義變數
unsigned char second,minute,hour,x,y;

void display(); //聲明函數
void key_detect();
void delay_ms(uchar);
void system_init();

sbit key1=P3^7; //埠定義
sbit key2=P3^6;
sbit key3=P3^5;
sbit key4=P3^4; //埠定義
sbit key5=P3^3;
sbit key6=P3^2;

unsigned char code tab[10]=
{
0xC0,/*0*/ //共陽
0xF9,/*1*/
0xA4,/*2*/
0xB0,/*3*/
0x99,/*4*/
0x92,/*5*/
0x82,/*6*/
0xF8,/*7*/
0x80,/*8*/
0x90,/*9*/ //共陽

//0x3f, /*0*/ // 共陰
//0x06, /*1*/
//0x5b, /*2*/
//0x4f, /*3*/
//0x66, /*4*/
//0x6d, /*5*/
//0x7d, /*6*/
//0x07, /*7*/
//0x7f, /*8*/
//0x6f, /*9*/ // 共陰
};
/*--------------------------------
主程序
--------------------------------*/
void main()
{
system_init();
while(1)
{
display();
key_detect();

}
}
/*--------------------------------
初始化程序
--------------------------------*/
void system_init()
{
TMOD=0x01;
TR0=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
t0IntCnt=0x00;
second=0x00;
minute=0x00;
hour=0x00;

}
/*--------------------------------
定時器0中斷程序
--------------------------------*/
void timer0_ISR() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
t0IntCnt++;
if(t0IntCnt==20)
{
t0IntCnt=0x00;
P1_0=!P1_0;
second++;

if(second==60)
{
second=0x00;
minute++;
if(minute==60)
{
minute=0x00;
hour++;
if(hour==24)
{
hour=0x00;
}
}
}
}
}
/*--------------------------------
毫秒延時程序
--------------------------------*/
void delay_ms(uchar no)
{
uchar i,j;
for(i=0;i<no;i++)
{
for(j=0;j<164;j++);
for(j=0;j<164;j++);
}
}
/*--------------------------------
動態掃描顯示程序
--------------------------------*/
void display()
{
/*======顯示秒和分=======
LedDisp_Port=tab[minute/10];
LedDisp_com1=0;
delay_ms(1);
LedDisp_com1=1;

LedDisp_Port=tab[minute%10];

if(t0IntCnt<11 )
{ LedDisp_dp=0; }
else
{ LedDisp_dp=1; }
LedDisp_com2=0;
delay_ms(1);
LedDisp_com2=1;

LedDisp_Port=tab[second/10];
LedDisp_com3=0;
delay_ms(1);
LedDisp_com3=1;

LedDisp_Port=tab[second%10];
LedDisp_com4=0;
delay_ms(1);
LedDisp_com4=1;
*/

/*=======顯示小時和分鍾=========*/
if(key==0)
{
P0=tab[x/10];
smg1=0;
delay_ms(1);
smg1=1;

P0=tab[x%10];

if(t0IntCnt<11 ) //定義dp點閃爍
{ LedDisp_dp=0; }
else
{ LedDisp_dp=1; } //定義dp點閃爍
LedDisp_com2=0;
delay_ms(1);
LedDisp_com2=1;

LedDisp_Port=tab[y/10];
LedDisp_com3=0;
delay_ms(1);
LedDisp_com3=1;

LedDisp_Port=tab[y%10];

if(t0IntCnt<11 ) //定義dp點閃爍
{ LedDisp_dp=0; }
else
{ LedDisp_dp=1; } //定義dp點閃爍
LedDisp_com4=0;
delay_ms(1);
LedDisp_com4=1;

LedDisp_Port=tab[0/10];
LedDisp_com5=0;
delay_ms(1);
LedDisp_com5=1;

LedDisp_Port=tab[0%10];

LedDisp_com6=0;
delay_ms(1);
LedDisp_com6=1;

}
else
{LedDisp_Port=tab[hour/10];
LedDisp_com1=0;
delay_ms(1);
LedDisp_com1=1;

LedDisp_Port=tab[hour%10];

if(t0IntCnt<11 ) //定義dp點閃爍
{ LedDisp_dp=0; }
else
{ LedDisp_dp=1; } //定義dp點閃爍
LedDisp_com2=0;
delay_ms(1);
LedDisp_com2=1;

LedDisp_Port=tab[minute/10];
LedDisp_com3=0;
delay_ms(1);
LedDisp_com3=1;

LedDisp_Port=tab[minute%10];

if(t0IntCnt<11 ) //定義dp點閃爍
{ LedDisp_dp=0; }
else
{ LedDisp_dp=1; } //定義dp點閃爍
LedDisp_com4=0;
delay_ms(1);
LedDisp_com4=1;

LedDisp_Port=tab[second/10];
LedDisp_com5=0;
delay_ms(1);
LedDisp_com5=1;

LedDisp_Port=tab[second%10];
LedDisp_com6=0;
delay_ms(1);
LedDisp_com6=1;
}
}
/*--------------------------------
按鍵檢測程序
--------------------------------*/
void key_detect()
{
if(!key_hour) //判斷鍵是否按下
{
hour++;
hour%=24;
while(!key_hour) //等待按鍵釋放
{
display();
}
}

if(!key_h) //判斷鍵是否按下
{
if(hour>0)
{
hour--;
hour%=24;
}
else
{
hour=23;
}
while(!key_h) //等待按鍵釋放
{
display();
}
}

if(!key_minute) //判斷鍵是否按下
{
minute++;
minute%=60;
while(!key_minute) //等待按鍵釋放
{
display();
}
}

if(!key_m) //判斷鍵是否按下
{
if(minute>0)
{
minute--;
minute%=60;
}
else
{
minute=59;
}
while(!key_m) //等待按鍵釋放
{
display();
}

}

if(!key_clr) //判斷鍵是否按下
{
hour=0x00;
minute=0x00;
second=0x00;
while(!key_clr) //等待按鍵釋放
{
display();
}
}
if(!key_a) //判斷鍵是否按下

{while(!key_a){display();}
x++;
if(x==24){x=0;}
}
if(!key_b) //判斷鍵是否按下
{while(!key_b){display();}
y++;
if(y==60)
{y=0;}
}

}

⑤ 51單片機的4位數碼管做簡易秒錶C語言程序

#include"dz110306140.h"這是什麼頭文件

閱讀全文

與單片機四位led數字時鍾相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:757
蘋果郵件無法連接伺服器地址 瀏覽:962
phpffmpeg轉碼 瀏覽:671
長沙好玩的解壓項目 瀏覽:142
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:732
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:484
h3c光纖全工半全工設置命令 瀏覽:141
公司法pdf下載 瀏覽:381
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:349
風翼app為什麼進不去了 瀏覽:778
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:150
伊克塞爾文檔怎麼進行加密 瀏覽:890
app轉賬是什麼 瀏覽:163