|
51單片機(jī)加按鍵控制LED花樣閃爍(非用中斷),51中用一個main主函數(shù)來控制led花樣閃爍,實現(xiàn)和用中斷控制差不多的效果...
單片機(jī)源程序如下:
- #include<reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- #define lei unsigned char
- lei q=0;
- sbit KEY=P3^2;
- uchar before=0;
- int temp=0;
- //延遲---還會用于消抖
- void Delay(uint x) {
- uchar i;
- while(x--){
- for(i=0;i<120;i++);
- }
- }
- //延遲1
- void delay_1() {
- unsigned char i,j;
- for(i=0;i<250;i++)
- {
- if(KEY==0)
- break;
- for(j=0;j<250;j++);
- }
- }
- //樣式2 按下之前的流水燈
- void a1(){
- P2=0xff;
- if(temp>7)
- temp=0;
- if(before==1){
- temp+=2;
- before=0;
- }
- P2&=~(1<<(temp++));
- Delay(150);
- }
- //樣式3
- void a2() {
- P2=0xff;
- if(temp<0)
- temp=7;
- if(before==1){
- temp-=2;
- before=0;
- }
- P2&=~(128>>(7-temp--));
- Delay(150);
- }
- //樣式4 往外兩端亮去
- void a3(){
- P2=0xff;
- P2=0xcc;
- delay_1();
- P2=0xff;
- P2=0x33;
- delay_1();
- }
- //按下次數(shù)
- char Key_Scan(){
- if(KEY==0){
- Delay(4);
- while(KEY==0);
- before=1;
- q++;
- if(q==3)
- q=0;
- }
- return q;
- }
- void main(){
- P2=0xff;
- while(1){
- while(1){
- Key_Scan();
- switch(q%3){
- case 0: a1();break;
- case 1: a2();break;
- case 2: a3();break;
- //case 3: a4();break;
- }
- }
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
甭中斷之key control led 花樣閃.rar
(63.41 KB, 下載次數(shù): 13)
2019-12-25 20:05 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
|