51單片機秒表計時,四位數碼管顯示。上電前顯示00.00,一共2個按鍵,一個啟動停止,另一個清零功能,60秒后自動歸零,程序可自行修改。
原理圖
程序
#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單片機
+關注
關注
274文章
5702瀏覽量
123617 -
數碼管
+關注
關注
32文章
1882瀏覽量
91122 -
秒表
+關注
關注
3文章
77瀏覽量
22017
發布評論請先 登錄
相關推薦
C51單片機秒表計時(C語言) 相關資料下載
功能描述:本設計實現在99秒內的秒表計時,一個按鍵實現開始、暫停、復位。原理概述:P1接四位七段數碼管,P3.2接一按鍵產生外部中斷0,P3.4-P3.7控制掃描顯示。計時使用定時器0產生...
發表于 07-01 07:34
評論