找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2070|回复: 3
打印 上一主题 下一主题
收起左侧

秒表开发程序

[复制链接]
跳转到指定楼层
楼主
ID:91995 发表于 2015-10-9 17:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};  //0-9
uchar code se[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};  //0.-9.
char Min,Sec;    //定义十位和个位
void delayms(uint z)    //延时1秒钟
{
  uint x;
  for(;z>0;z--)
   for(x=110; x>0; x--);
}
void Time_Init()       //时间初始化
{
   EA = 1;
  TMOD |= 0X01;
  TH0 = (65536 - 2000)/256;
  TL0 = (65536 - 2000)%256;
  ET0 = 1;
}
void display()      //显示程序
{
   P2 = 0xfe;
  P0 = du[Sec];
  delayms(2);
  P0 = 0xff;

  P2 = 0xfd;
  P0 = se[Min];
  delayms(2);
  P0 = 0xff;
  
   
}
void keyboradscan()
{
    uchar key;
static uchar key_on = 0;
key = P3 & 0x0f;
if(key != 0x0f)
  {
    if(key_on ==0)
     {
     key_on = 1;
      switch (key)
   {
     case 0x0e:TR0 = 1;break;
      case 0x0d:TR0 = 0;break;
      case 0x0b:TR0 = 0;Sec = 0;Min = 0;break;
   }
  }
  }
  else
  {
     key_on = 0;
  }
}
void main()
{
    Time_Init();         //时间初始化
   while(1)
  {
   display();        //显示扫描
   keyboradscan();     //键盘扫描
   if(Min == 9 && Sec == 9)
    {
     TR0  = 0;
      Min = 9;Sec = 9;
    }
  }
}
void Timer0() interrupt 1
{
static int count;
TH0 = (65536 - 2000)/256;
TL0 = (65536 - 2000)%256;
count++;
    if(count >= 50)      //1毫秒加1
    {
    count = 0;
    Sec++;
      if(Sec > 9)       //加到9后
    {
     Sec = 0;         //毫秒清零
     Min++;           //秒加1
     if(Min > 9)
      Min = 0;       //秒清零
    }
   }
}  

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2015-10-9 17:59 来自手机 | 只看该作者
谢谢分享,能共享一下电路图吗
回复

使用道具 举报

板凳
ID:88707 发表于 2015-10-10 22:14 | 只看该作者
感谢分享,研究一下
回复

使用道具 举报

地板
ID:120571 发表于 2016-5-13 17:16 | 只看该作者
有电路吗?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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