本帖最后由 渡渡鸟 于 2020-5-28 15:43 编辑
51单片机利用按钮分别控制数码管实现+1、+2、+3、-1。 实现功能如下: 1、单片机启动时数码管显示“00”; 2、当按下ADD1按钮时,数字加1并在数码管上显示; 3、当按下ADD2按钮时,数字加2并在数码管上显示; 4、当按下ADD3按钮时,数字加3并在数码管上显示; 5、当按下SUB1按钮时,数字减1并在数码管上显示; 单片机源程序如下: - #include<REGX51.H>
- unsigned char num[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
- sbit ADD1=P2^1;//定义+1按钮
- sbit ADD2=P2^3;//定义+2按钮
- sbit ADD3=P2^5;//定义+3按钮
- sbit SUB1=P3^5;//定义-1按钮
- void delay()//延时函数
- {
- unsigned int a=5500;
- while(a--);
- }
- void main()
- {
- unsigned char i;//定义i
- while(1)
- {
- P1=num[i/10];//显示i的十位
- P3_0=0;P3_1=1;
- delay();
- P3_0=1;P3_1=1;//消影处理
- P1=num[i%10];//显示i的个位
- P3_0=1;P3_1=0;
- delay();
- P3_0=1;P3_1=1;//消影处理
- if(ADD1==0)//判断+1按钮是否按下
- {
- delay();//防抖
- if(ADD1==0)//确认+1按钮按下
- {
- i=i+1;//使数码管的数字+1
- delay();
- }
- }
- if(ADD2==0)//判断+2按钮是否按下
- {
- delay();//防抖
- if(ADD2==0)//确认+2按钮按下
- {
- i=i+2;//使数码管的数字+2
- delay();
- }
- }
- if(ADD3==0)//判断+3按钮是否按下
- {
- delay();//防抖
- if(ADD3==0)//确认+3按钮按下
- {
- i=i+3;//使数码管的数字+3
- delay();
- }
- }
- if(SUB1==0)//判断-1按钮是否按下
- {
- delay();//防抖
- if(SUB1==0)//确认-1按钮按下
- {
- i=i-1;//使数码管的数字-1
- delay();
- }
- }
- if(i>99)//判断数码管显示的位数是否超过两位
- i=0;//将数码管归零
- }
- }
复制代码仿真图及其源代码在压缩包里
|