欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

單片機+數碼管簡單秒表程序,帶停止啟動復位

作者:佚名   來源:本站原創   點擊數:  更新時間:2013年11月05日   【字體:

p0口是數碼管的位選入口,P2口是數碼管的段選用4位一體的數碼管,P3.0 P3.1 P3.2分別是啟動停止和復位按鈕
 

 #include <reg51.h>
 
#define uchar unsigned char
#define uint unsigned int

 
#define DATA P2
sbit start=P3^0;
sbit stop=P3^1;
sbit reset=P3^2;

 
//---------啟停標志-----
bit SAT=0;

 
bit RST=0;

 
//------------數碼管碼表----------
uchar tab[10]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07,  0x7F, 0x6F};

 
//------------
uint time=0;    //時間
uint cnt=0;     //計數

 

 
//-------------

 

 
void delay(int k)
{
while(k--);
}

 

 

 
void startkey()
{
static uchar i,j;
  if(start==0)
{
if(i==0)
{
j++;
     if(j>3)
{
      if(start==0)
{
i=1;j=0; SAT=1;
}
}
}
}
else
{
i=j=0;
}
}

 

 
void stopkey()
{
static uchar i,j;
  if(stop==0)
{
if(i==0)
{
j++;
     if(j>3)
{
      if(stop==0)
{
i=1;j=0; SAT=0;
}
}
}
}
else
{
i=j=0;
}
 
}

 

 
void resetkey()
{
static uchar i,j;
  if(reset==0)
{
if(i==0)
{
j++;
     if(j>3)
{
      if(reset==0)
{
i=1;j=0; RST=1;
}
}
}
}
else
{
i=j=0;RST=0;
}
 
}

 
//---------數碼管顯示  00.0-------
void shownumber(int num)         
{
 DATA=tab[num%10];
 P0=7;
 delay(100);
 DATA=0x80;
 P0=6;
 delay(100);
 DATA=tab[num%100/10];
 P0=5;
 delay(100);
 DATA=tab[num/100];
 P0=4;
 delay(100);
 
}

 
//---------定時器初始化ˉ---------
void time0_init()
TMOD=0x01;
 
TH0=(65536-18348)/256;
TL0=(65536-18348)%256;
EA=1;
ET0=1;
 
}

 
void T0_time()interrupt 1
{
TH0=(65536-18348)/256;
TL0=(65536-18348)%256;
cnt++;
if(cnt==5)
{
time++;cnt=0;
}
 
}

 

 
void main(void)
{
delay(50000);
time0_init();
while(1)
{
shownumber(time);
if(SAT==1)TR0=1;
if(SAT==0)TR0=0;
if(RST==1){TR0=0;SAT=0;time=0;}
startkey();
stopkey();
resetkey();
 
}
}
關閉窗口

相關文章