找回密码
 立即注册

QQ登录

只需一步,快速开始

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

9999倒计时按键 单片机程序

[复制链接]
跳转到指定楼层
楼主

#include
#define uchar unsigned char
#define uint unsigned int
sbit k1 = P1^0;            //加
sbit k2 = P1^1;            //减
sbit k3 = P1^2;            //复位
void key(void);
void display(void);
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,
                    0x92,0x82,0xf8,0x80,0x90};    //数组
   
char m=99,n=98;    //显示初值,m,n的值决定开机显示数值
//延时程序
void delayms(uint xms)
{
   uint i,j;
   for(i=xms;i>0;i--)
   for(j=110;j>0;j--);
}
//显示程序
void display(void)
{
        P2=0X08;
  P0=table[m%10];   //显示个位
  delayms(5);  
  P2=0X04;
     P0=table[m/10];   //显示十位
  delayms(5);            
     P2=0X02;
  P0=table[n%10];   //显示百位
  delayms(5);
  P2=0X01;
  P0=table[n/10];   //显示千位
  delayms(5);
}
//按键处理
void key()
{
  if(k1==0)      //检测按键是否被按下
   {       //延时消抖
    delayms(10);   
if(k1==0)     //再次检测是否真正按下按键
{
   m++;      //m自加一
   if(m>=100)    //如果m加到100则n加一 (限制m的取值范围) 个位、十位最大显示99
   {
    n++;     //n自加一
  m=0;     //使m又从0开始计数
  if(n>=100)    //如果n加到100则m=n=99 (限制n的取值范围) 百位、千位最大显示99
  {
    m=99;     //最大显示9999
    n=99;
  }
   }
}
while(!k1);     //按键松开
   }
  if(k2==0)      //检测按键是否被按下
   {       //延时消抖
    delayms(10);    //再次检测是否真正按下按键
if(k2==0)
{       //m自减一
   m--;
   if(m<=0)     //如果m减到0则n减一 (限制n的取值范围) 个位、十位最小显示00
   {      
     m=99;     //重新给m装初值
    n--;     //n自减一
  if(n==-1)    //如果n减到-1,则m=n=0 (限制n的取值范围) 百位、千位最小显示00
  {
   n=0;     //最小显示0000
   m=0;
  }
   }
}
while(!k2);     //按键松开
   }
if(k3==0)      //检测按键是否被按下
{
   delayms(10);     //延时消抖
   if(k3==0)     //再次检测是否真正按下按键
   {
     m=0;      //复位,显示0000
  n=0;
   }
   while(!k3);     //按键松开
}
}
void main()
{
  while(1)
  {        //调用按键检测
   key();      //数码管显示
   display();
  }
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2019-12-10 21:51 | 只看该作者
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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