2口接8個LED流水燈,P3.0接一個按鍵
按鍵按下一次流水燈方向改變一次
1.png (50.46 KB)
下載附件
2021-5-5 23:43 上傳
單片機源程序如下:
- #include<reg52.h> //51系列單片機頭文件
- #include<intrins.h> //51系列單片機頭文件
- #define uint unsigned int //宏定義
- #define uchar unsigned char //宏定義
- sbit k1=P3^0;
- uchar a,b,c,d,y=0; //定義一個變量,用來給P2口賦值
- void delayms(uint xms) //延時子函數
- {
- uint i,j;
- for(i=xms;i>0;i--) //i=xms即延時約xms毫秒
- for(j=110;j>0;j--);
- }
- void key()
- {
- uchar x;
- if(k1==0)
- {
- delayms(10); //延時10ms 去抖
- if(k1==0) //再判斷k1按鍵是否按下
- {
- while(!k1);
- x++;
- if(x==4)
- x=1;
- if(y==4)
- x=0;
- switch(x) //條件選擇
- {
- case 1: y=1; break;
- case 2: y=2; break;
- case 3: y=3; break;
- default: break;
- }
- }
- }
- }
- void display()
- {
- if(y==0)
- {
- P2=a;
- delayms(500);
- a=~a; //狀態0時 LED閃爍
- }
- if(y==1)
- {
- P2=b;
- delayms(500);
- b=_crol_(b,1); //狀態1時 LED選擇左移
- }
- if(y==2)
- {
- P2=c;
- delayms(500);
- c=_cror_(c,1); //狀態2時 LED選擇右移
- }
- if(y==3)
- {
- P2=d;
- delayms(500);
- d=d; //狀態3時 LED全亮
- }
- }
- void main()
- {
- a=0xff; //高4位和低4位都置為1
- b=0x01; //只有低4位的最低位為1
- c=0xfe; //低4位的最低位為0
- d=0xff;
- while(1)
- {
- key();
- display(); //按鍵顯示
- }
- }
復制代碼
【必讀】版權免責聲明
1、本主題所有言論和內容純屬會員個人意見,與本論壇立場無關。2、本站對所發內容真實性、客觀性、可用性不做任何保證也不負任何責任,網友之間僅出于學習目的進行交流。3、對提供的數字內容不擁有任何權利,其版權歸原著者擁有。請勿將該數字內容進行商業交易、轉載等行為,該內容只為學習所提供,使用后發生的一切問題與本站無關。 4、本網站不保證本站提供的下載資源的準確性、安全性和完整性;同時本網站也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的損失或傷害。 5、本網站所有軟件和資料均為網友推薦收集整理而來,僅供學習用途使用,請務必下載后兩小時內刪除,禁止商用。6、如有侵犯你版權的,請及時聯系我們(電子郵箱1370723259@qq.com)指出,本站將立即改正。
|