找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机倒计时程序

[复制链接]
跳转到指定楼层
楼主
ID:70375 发表于 2014-12-12 16:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
时钟倒计时

xx.zip

29.2 KB, 下载次数: 102, 下载积分: 黑币 -5

倒计时

评分

参与人数 1黑币 +10 收起 理由
daniu + 10 共享资料的积分奖励!

查看全部评分

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

使用道具 举报

沙发
ID:1 发表于 2014-12-12 17:36 来自手机 | 只看该作者
好资料 下面是楼主的源码
#include<reg52.h>
#define uchar unsigned char
#define uint  unsigned int
sbit KEY1 = P3^2;
sbit KEY2 = P3^3;
sbit KEY3 = P3^4;       
uint hour=12,min=23,sec=33;
uint flag=1;
uint Count = 0;
uchar code table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//数码管段值
void Delay(uint del)
{        uchar i,j;
        for(i=0; i<del; i++)
        for(j=0; j<140; j++)   
        ;}
void Time0_Init()
{   Count++;
    TMOD=0x01;
   TH0=(65536-10000)/256;
   TL0=(65536-10000)%256;
   EA=1;
   ET0=1;}
void timer0_int(void)interrupt 1
  {
   Count++;
   TH0=(65536-10000)/256;
   TL0=(65536-10000)%256; }
void time()
{     P2=7;  
      P0=table[sec%10];
          Delay(1);
          P2=6;
          P0=table[sec/10];
          Delay(1);
          P2=5;
          P0=0x40;
          Delay(1);
          P2=4;
          P0=table[min%10];
          Delay(1);
          P2=3;
          P0=table[min/10];
          Delay(1);
          P2=2;
          P0=0x40;
          Delay(1);
          P2=1;
          P0=table[hour%10];
          Delay(1);
          P2=0;
          P0=table[hour/10];
          Delay(1);        }
void Key(void)
{          if(KEY1==0 )                         //计时开始
      {Delay(1);                     //20毫秒软件防抖
                if(KEY1==0)
                TR0=1; }
          if(KEY2==0 )                         
            {  Delay(1);                  
                if(KEY2 == 0)
                TR0=0;
                Delay(1);}         
         if(KEY3==0 )                        //改变加减法
             {Delay(1);                   //20毫秒软件防抖
                if(KEY3 == 0)
                flag=!flag;       
                Delay(1);
                }

}       
void Main(void)                 
{ Time0_Init();
while(1)
{ time();
   Key();
   if(Count == 100)
   { Count=0;
    if(flag==1)        //type=1时为加法               
            { sec++;
                if(sec>59)
                {  sec=0;
                   min++;
                   if(min>59)
                   {min=0;
                    hour++;
                        if(hour>23)  
                        hour=0; }} }
                else if(flag==0)
            {sec--;
                 if(sec<1)
                {sec=59;          
                 min--;
                 if(min<1)
                 {min=59;
                hour--;
                 if(hour<1)  
                hour=23;} } }
}
}}

回复

使用道具 举报

板凳
ID:273174 发表于 2018-1-8 15:20 | 只看该作者
牛批牛批
回复

使用道具 举报

地板
ID:586359 发表于 2019-7-28 15:28 | 只看该作者
这个数码管的选通端是直接连的计数器吗?P2是对应的什么?直接就是位码吗?
回复

使用道具 举报

5#
ID:849826 发表于 2021-7-14 10:15 来自手机 | 只看该作者
有电路图吗
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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