51單片機(jī)秒表計(jì)時(shí),四位數(shù)碼管顯示。上電前顯示00.00,一共2個(gè)按鍵,一個(gè)啟動(dòng)停止,另一個(gè)清零功能,60秒后自動(dòng)歸零,程序可自行修改。
原理圖
程序
#include<89C51.h>
#define uchar unsigned char
#define uint unsigned int
void delay(uint c);
#define dula P22
#define wela P23
void keycan();
void init();
void display();
uchar table[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uint num,dis,n;
uint ms=0;
uint sec=0;
void main()
{
init();
TR0=0;
while(1)
{
display();
keycan();
}
}
void init()
{
TMOD=0X01;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
EA=1;
ET0=1;
TR0=1;
EX0=1;
IT0=1;
}
void Time0() interrupt 1
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
ms++;
if(ms==100)
{
ms=0;
sec++;
if(sec==60)
{
sec=0;
TR0=0;
}
}
}
void keycan()
{
if(P10==0)
{
delay(5);
if(P10==0)
{
while(!P10);
TR0=~TR0;
}
}
if(P11==0)
{
delay(5);
if(P11==0)
{
while(!P11);
sec=0;
ms=0;
}
}
}
void display()
{
wela=1;
P0=0xfe;
wela=0;
P0=0;
dula=1;
P0=table[sec/10];
dula=0;
delay(5);
wela=1;
P0=0xfd;
wela=0;
P0=0;
dula=1;
P0=table[sec%10]|0x80;
dula=0;
delay(5);
wela=1;
P0=0xfb;
wela=0;
P0=0;
dula=1;
P0=table[ms/10];
dula=0;
delay(5);
wela=1;
P0=0xf7;
wela=0;
P0=0;
dula=1;
P0=table[ms%10];
dula=0;
delay(5);
}
void delay(uint c)
{
uint a,b;
for(a=c;a >0;a--)
for(b=115;b >0;b--);
}
-
51單片機(jī)
+關(guān)注
關(guān)注
274文章
5704瀏覽量
123745 -
數(shù)碼管
+關(guān)注
關(guān)注
32文章
1882瀏覽量
91202 -
秒表
+關(guān)注
關(guān)注
3文章
77瀏覽量
22031
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論