|
分為2個(gè)例子
一個(gè)是單片機(jī)按鍵短按,實(shí)現(xiàn)led燈的上下移動(dòng)
一個(gè)是單片機(jī)按鍵長按led燈亮,松開,led燈滅
附件里有仿真圖,源碼,以及hex文件
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png (11.87 KB, 下載次數(shù): 32)
下載附件
2018-5-3 17:59 上傳
0.jpg (30.39 KB, 下載次數(shù): 25)
下載附件
2018-5-3 17:59 上傳
單片機(jī)源程序如下:
- #include<reg51.h>
- #include<intrins.h>
- #define LEDR P0
- #define LEDG P2
- sbit PB1=P1^4;
- sbit PB2=P1^5;
- sbit PB3=P1^6;
- sbit PB4=P1^7;
- char tamp,tp;
- void delay (int);
- void debouncer(void);
- main() {
- PB1=1;
- PB2=1;
- PB3=1;
- PB4=1;
- LEDR=0x00;
- LEDG=0xff;
- tamp=0xfd;
- tp=0xfd;
- while(1) {
- if(PB1==0) {
- debouncer();
- tamp=_cror_(tamp,1); //變量右移函數(shù)
- delay(20);
- while(PB1==0);
- debouncer();
- LEDR=tamp;
- }
- if(PB2==0) {
- debouncer();
- tamp=_crol_(tamp,1);//變量左移函數(shù)
- delay(20);
- while(PB2==0);
- debouncer();
- LEDR=tamp;
- }
- if(PB3==0) {
- debouncer();
- tp=_cror_(tp,1);
- delay(20);
- while(PB3==0);
- debouncer();
- LEDG=tp;
- }
- if(PB4==0) {
- debouncer();
- tp=_crol_(tp,1);
- delay(20);
- while(PB4==0);
- debouncer();
- LEDG=tp;
- }
- }
- }
- void debouncer(void)
- {
- int i;
- for(i=0; i<2400; i++);
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
51單片機(jī)實(shí)現(xiàn)按鍵長按和短按.zip
(30.87 KB, 下載次數(shù): 80)
2018-5-3 12:07 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|