⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 双按键控制数码管加减1.txt

📁 单片机入门卡发的点行代码
💻 TXT
字号:
#pragma db code
#include<AT89X51.H>
#define uchar unsigned char
#define uint  unsigned int

/*=====数码管位及按键定义=====*/ 
sbit LED_0=P1^0;
sbit LED_1=P1^1;
sbit LED_2=P1^2;
sbit LED_3=P1^3;
sbit P20=P2^0;
sbit P21=P2^1;
sbit P24=P2^4;
sbit P25=P2^5;


/*=====0-9=====A-G=====*/
uchar a[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
             0x80,0x90,0x88,0x83,0xc6,0x86,0x8e,0x82};

/*=====四个数码管显示数据存放处=====*/ 
uchar one,two,three,four;
uint wc=0;

/*=====函数定义=====*/ 
void delay(uint x);
void display(void);
void key();
void led_analyze(uint i);

/*====主函数=====*/ 
void main()
{
  while(1)
  {
  key();
  display();
  }
}

/*====延时函数=====*/ 
void delay(uint x)
{
  uint i;
  for(i=0;i<x;i++);
}

/*====显示函数=====*/ 
void display(void)
{
  P0=a[one];//调用显示数据 
  LED_0=0;  //显示开 
  delay(100);    //调用键盘扫描 
  LED_0=1;  //关显示 

  P0=a[two];
  LED_1=0;
  delay(100);
  LED_1=1;

  P0=a[three];
  LED_2=0;
  delay(100);
  LED_2=1;

  P0=a[four];
  LED_3=0;
  delay(100);
  LED_3=1; 
}

/*====分解显示数据=====*/ 
void led_analyze(uint i)
{
    i=i%10000;
	one=i/1000;
    two=(i/100)%10;
    three=(i%100)/10;
    four=(i%100)%10;
}
/*====按键扫描=====*/     
void key()
{  
   uchar i;
   P24=0;
   P25=1;//按键控制端 
   if(!P20||!P21)//判断有键按下 
   {
       for(i=0;i<20;i++) display();//调用显示函数N次达到延时 
       if(!P20||!P21)  //有键按下 
       { 
         if(!P20)
         {
             wc++;
             if(wc>9999) wc=0;//如果WG大于9999则将它清零 
         }
         else
         {
             wc--;
             if(wc>9999) wc=9999;
         }        
       }    
   }
   led_analyze(wc);//把WC值返回到分解显示数据中 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -