久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
簡單的單片機(jī)按鍵控制流水燈
[打印本頁]
作者:
Danny1710
時間:
2018-4-24 22:27
標(biāo)題:
簡單的單片機(jī)按鍵控制流水燈
按鍵控制流水燈仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
360截圖18481110123128113.jpg
(107.93 KB, 下載次數(shù): 127)
下載附件
2018-4-24 22:25 上傳
功能:
1.
用8盞LED小燈,實(shí)現(xiàn)至少4種彩燈燈光效果(不含全部點(diǎn)亮,全部熄滅);
2.
可以用輸入按鈕在幾種燈光效果間切換;
3.
可以通過按鈕暫停彩燈效果,使小燈全亮,再次按下相同按鈕后繼續(xù)之前的效果;
4.
增加自動在幾種效果間切換的功能,并設(shè)置一個按鈕可以在自動模式和手動模式間切換;
5.
使用定時中斷延時
(由于仿真圖略大,不能上傳)
源代碼:
#include<reg51.h>
#include<intrins.h>
#define GPIO_LED P0 //led使用P0口
#define GPIO_KEY P1 //獨(dú)立鍵盤用P1口
sbitK1=P1^0;
sbitK2=P1^1;
sbitK3=P1^2;
sbitK4=P1^3;
sbitK5=P1^4;
char KeyNum;
unsignedchar state;
unsignedchar change_state;
voidDelay10ms(unsigned int c); //延時10ms
voidLED1();
voidLED2();
voidLED3();
voidLED4();
voidauto_LED();
voidPause();
unsignedchar Key_Scan(); //掃描鍵盤//
voidmain(void)
{
IT0=1;
IT1=1;
EX1=1;
EX0=1;
EA=1;
auto_LED();
while(1)
{
if(1 == state)
{
LED1();
change_state = 0;
}
else if(2 == state)
{
LED2();
change_state = 0;
}
else if(3 == state)
{
LED3();
change_state = 0;
}
else if(4 == state)
{
LED4();
change_state = 0;
}
}
}
voidChange() interrupt 0
{
KeyNum=Key_Scan();
switch(KeyNum)
{
case(0xFe) : //返回按鍵K1的數(shù)據(jù)
state=1;
change_state=1;
break;
case(0xFD) : //返回按鍵K2的數(shù)據(jù)
state=2;
change_state=2;
break;
case(0xFB) : //返回按鍵K3的數(shù)據(jù)
state=3;
change_state=3;
break;
case(0xF7) : //返回按鍵K4的數(shù)據(jù)
state=4;
change_state=4;
break;
default:
break;
}
}
voidPause() interrupt 1
{
auto_LED();
}
voidDelay10ms(unsigned int c) //誤差 0us
{
unsigned char a, b;
for (;c>0;c--)
{for (b=30;b>0;b--)
{
for (a=100;a>0;a--);
}
}
unsignedchar Key_Scan()
{
unsigned char keyValue = 0 , i; //保存鍵值
//--檢測按鍵1--//
if (GPIO_KEY != 0xFF) /檢測按鍵K1是否按下
{
Delay10ms(1); //消除抖動
if (GPIO_KEY != 0xFF) //再次檢測按鍵
{
keyValue = GPIO_KEY;
i = 0;
while ((i<50) && (GPIO_KEY !=0xFF)) //檢測按鍵是否松開
{
Delay10ms(1);
i++;
}
}
}
return keyValue; //將讀取到鍵值的值返回
}
voidLED1()
{
unsigned char i;
GPIO_LED = 0x01;
for (i=0; i<16; i++)
{
GPIO_LED = _crol_(GPIO_LED, 1);
Delay10ms(100);
if(change_state==2)
break;
if(change_state==3)
break;
if(change_state==4)
break;
if(change_state==5)
break;
}
}
voidLED2()
{
unsignedchar i;
GPIO_LED = 0x80;
for (i=0; i<16; i++)
{
GPIO_LED = _cror_(GPIO_LED, 1);
Delay10ms(100);
if(change_state==1)
break;
if(change_state==3)
break;
if(change_state==4)
break;
if(change_state==5)
break;
}
}
voidLED3()
{
unsigned char i;
GPIO_LED = 0x81;
for (i=0; i<8; i++)
{
GPIO_LED = _cror_(GPIO_LED, 4);
Delay10ms(100);
if(change_state==1)
break;
if(change_state==2)
break;
if(change_state==4)
break;
if(change_state==5)
break;
}
}
voidLED4()
{
unsigned char i;
GPIO_LED = 0x18;
for (i=0; i<8; i++)
{
GPIO_LED = _cror_(GPIO_LED, 3);
Delay10ms(100);
if(change_state==1)
break;
if(change_state==2)
break;
if(change_state==3)
break;
if(change_state==5)
break;
}
}
void auto_LED()
{
LED1();
Delay10ms(100);
LED2();
Delay10ms(100);
LED3();
Delay10ms(100);
LED4();
Delay10ms(100);
}
復(fù)制代碼
作者:
發(fā)了個哥
時間:
2018-11-13 13:29
請問附件在哪啊?
作者:
bhjyqjs
時間:
2018-11-14 08:58
程序?qū)懙暮芎茫?br /> 個人認(rèn)為,類似
if(1 == state)
{
LED1();
change_state = 0;
}
else if(2 == state)
改成switch語句,更加一目了然。
作者:
產(chǎn)檢簿
時間:
2018-12-2 21:22
請問附件在哪啊?
作者:
玖吟璽
時間:
2019-4-22 21:12
為什么沒有晶振
作者:
MisterM
時間:
2019-10-14 21:58
樓主你這個是自動的 跟按鍵沒關(guān)系啊auto_LED就直接運(yùn)行了啊
作者:
flynn13
時間:
2020-6-16 20:52
87行的大括號少了
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
国产精品久久久久久久毛片
|
国产成人免费视频
|
成人影院在线视频
|
精品欧美一区二区精品久久
|
美国十次成人欧美色导视频
|
91视频播放
|
亚洲第一成人av
|
久久久久成人精品免费播放动漫
|
欧美a区
|
午夜激情一区
|
国产精品精品
|
在线视频中文字幕
|
91久久久久久久久久久久久
|
欧美一区二区三区久久精品
|
久久久久久久久久久福利观看
|
精品亚洲一区二区
|
日本 欧美 国产
|
2018国产大陆天天弄
|
99在线免费观看视频
|
国产精品欧美一区二区三区
|
国产精品国产三级国产aⅴ浪潮
|
亚洲欧美日韩精品久久亚洲区
|
成人免费xxxxx在线视频
|
在线观看国产h
|
狠狠做六月爱婷婷综合aⅴ 国产精品视频网
|
国产精品久久久久久久久久免费
|
国产一区二区三区四区在线观看
|
欧美日韩视频网站
|
精品视频www
|
久久美女网
|
欧美日韩一区不卡
|
成人一区二区三区在线观看
|
亚洲一区二区视频
|
日韩亚洲视频
|
99精品视频免费在线观看
|
国产精品片aa在线观看
|
国产在线精品一区二区三区
|
野狼在线社区2017入口
|
国产999精品久久久 精品三级在线观看
|
亚洲一区在线免费观看
|
成人网址在线观看
|