基于51單片機的流水燈按鍵控制關于按鍵控制暫停繼
單片機源程序如下:
- #include<reg52.h>
- #define uint unsigned int //定義int變量uint
- #define shuzu1 unsigned char
- #define shuzu2 unsigned char //定義兩個數組,實現兩種流水燈
- shuzu1 i;
- shuzu2 j; //數組 i,j變量
- shuzu1 code table1[]={0xfc,0xf9,0xf3,0xe7,
- 0xcf,0x9f,0x3f}; //數組1,每兩個流水燈亮
- shuzu2 code table2[]={0xfe,0xfd,0xfb,0xf7,
- 0xef,0xdf,0xbf,0x7f};//數組2,一位流水燈亮
- sbit k1=P3^2;
- sbit k2=P3^3;
- sbit k3=P3^4;
- sbit k4=P3^5; //定義四位數碼管函數名(k1,k2,k3,k4)
- void deng1(); //流水燈1的子函數
- void deng2(); //流水燈2的子函數
- void anjian(); //按鍵暫停繼續子函數
- void delay(uint z)
- {
- uint i,j;
- for(i=0;i<z;i++)
- for(j=0;j<110;j++);
- } //延時函數
- void deng1()
- {
- if(k1==0)
- {
- delay(10);
- if(k1==0)
- {
- while(!k1); //判斷按鍵1是否按下,松手檢測
- for(i=0;i<=7;i++)
- {
- P1=table1[i];
- delay(500);//流水燈程序
- anjian();//按鍵暫停繼續子程序
- if(k2==0)
- {
- delay(10);
- if(k2==0)
- {
- deng2();//中途跳出燈1循環
- }
- }
- }
- }
- }
- }
- void deng2()
- {
- if(k2==0)
- {
- delay(10);
- if(k2==0)
- {
- while(!k1);
- for(j=8;j>=0;j--)
- {
- P1=table2[j];
- delay(500);
- anjian();
- if(k1==0)
- {
- delay(10);
- if(k1==0)
- {
- deng1();
- }
- }
- }
- }
- }
- }
- void anjian()
- {
- if(k3==0)
- {
- delay(10);
- if(k3==0)
- {
- while(!k3);//判斷按鍵3是否按下,松手檢測
- while(1)//死循環,使流水燈暫停
- {
- if(k4==0);
- if(k4==0)
- {
- delay(10);
- if(k4==0)
- {
- while(!k4);
- break;//跳出死循環
- }
- }
- }
- }
- }
- }
- void main()
- {
- while(1)
- {
- deng1();
- deng2();
- anjian();//調用三個子函數
- }
- }
復制代碼
所有資料51hei提供下載:
兩種流水燈按鍵控制暫停繼續.rar
(37.99 KB, 下載次數: 25)
2019-4-8 18:40 上傳
點擊文件名下載附件
基于51單片機 下載積分: 黑幣 -5
|