找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1662|回复: 1
收起左侧

89C51做的一个秒表(数码管)

[复制链接]
ID:594178 发表于 2019-8-2 15:52 | 显示全部楼层 |阅读模式

#include "reg52.h"   
typedef unsigned int u16;   
typedef unsigned char u8;
sbit a1=P3^2;
sbit a2=P3^3;
sbit a3=P3^4;
sbit a4=P3^5;
u8 code smgduan[17]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
u8 sec,min,ssec;
u8 DisplayData[4];
void delay(u16 i)
{
while(i--);
}
void Timer0Init()
{
TMOD|=0X01;
TH0=0Xd8;
TL0=0Xf0;
ET0=1;
EA=1;
TR0=1;  
}
void DigDisplay()
{
u8 i;
for(i=0;i<4;i++)
{
  switch(i)  
  {
   case(0):
    a1=0;a2=0;a3=0;a4=1; break;
   case(1):
    a1=0;a2=0;a3=1;a4=0; break;
   case(2):
    a1=0;a2=1;a3=0;a4=0; break;
   case(3):
    a1=1;a2=0;a3=0;a4=0; break;
   
   
  }
  P2=DisplayData[i];
  delay(800);
  P2=0xff;
}
}
void datapros()
{
DisplayData[0]=smgduan[ssec/10];
DisplayData[1]=smgduan[sec%10]&0x7f;
DisplayData[2]=smgduan[sec/10];
DisplayData[3]=smgduan[min%10]&0x7f;
}
void main()
{
Timer0Init();  
while(1)
{
  datapros();
  DigDisplay();
}  
}

void Timer0() interrupt 1
{
TH0=0Xd8;
TL0=0Xf0;
ssec++;
if(ssec>=100)  
{
  ssec=0;
  sec++;   
  if(sec>=60)
  {
   sec=0;
   min++;
   if(min>=60)
   {
    min=0;
   }
  }
}
}
回复

使用道具 举报

ID:594178 发表于 2019-8-2 15:55 | 显示全部楼层
刚学51,有什么错望指出,谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表