本帖最后由 渡渡鳥 于 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;//將數碼管歸零
- }
- }
復制代碼仿真圖及其源代碼在壓縮包里
|