51 单片机定时器数码管 从1数到100(带三个按键控制开始,暂停,复位)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了51 单片机定时器数码管 从1数到100(带三个按键控制开始,暂停,复位)相关的知识,希望对你有一定的参考价值。

 

 

 

#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit wei=P2^7;
sbit duan=P2^6;
sbit key1=P3^4;
sbit key2=P3^5;
sbit key3=P3^6;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//1~9    //0~9,0x77,0x7c,0x39,0x5e,0x79,0x71
uint number;
void delay(uint xms)//延迟函数
{
   uint i;uchar j;
   for(i=xms;i>0;i--)
   for(j=110;j>0;j--);
}
void show(uint ge,uint shi)
{
    ge=number%10;
    shi=number/10;   
      wei=1;
    P0 = 0xfe;
    wei=0;
    duan=1;
    P0=table[shi];
    duan=0;
    P0=0xff;
    delay(5);

    wei=1;
    P0=0xfd;
    wei=0;
    duan=1;
    P0=table[ge];
    duan=0;
    P0=0xff;
    delay(5); 
}
void initial_mcu()
{                                                   
    TMOD=0x01; //定时器0和1工作在16位模式
    TH0=(65536-45872)/256;
    TL0=(65536-45872)%256;
    EA=1;
    ET0=1;
    //TR0=1;
}

void buttons()
{
         if(key1==0)
         {
            delay(10); //键盘消抖
            if(key1==0)
            {                                       
               number=0; 
            }                
          } 
          
          if(key2==0)
         {
            delay(10); //键盘消抖
            if(key2==0)
            {                                       
               TR0=1;
            }                
          } 
          
          if(key3==0)
         {
            delay(10); //键盘消抖
            if(key3==0)
            {                                       
               TR0=0;
            }                
          }                                 
}
void main ()
{ 
     initial_mcu();//定时器初始化            
         while(1)
         {
            buttons();
              show();                         
         }     
}
void timer0() interrupt 1 
{     
    uint num;    
    TH0=(65536-45872)/256;
    TL0=(65536-45872)%256;
    num++;    
    if(num==20)
    {
         num=0;
         number++;
         if(number==100)
         {
            number=0;
         }
    }
}

 

以上是关于51 单片机定时器数码管 从1数到100(带三个按键控制开始,暂停,复位)的主要内容,如果未能解决你的问题,请参考以下文章

利用51单片机,4个数码管设计一个计时器,要求在数码管上显示的数据从0开始每1秒钟加1。

51单片机定时器2的最短定时时间怎么有限制?

单片机按键控制数码管显示

基于51单片机的交通灯Proteus仿真设计_带紧急开关+可调时间(源码+仿真+报告)

基于51单片机的交通灯Proteus仿真设计_带紧急开关+黄灯倒计时(源码+仿真)

单片机STC15定时器(1)中断,数码管自动加1的电子钟,为啥不自动加1