標(biāo)題:
單片機(jī)開關(guān)控制心型LED閃爍狀態(tài)源程序與Proteus仿真
[打印本頁]
作者:
洋洋ww
時(shí)間:
2022-6-2 14:42
標(biāo)題:
單片機(jī)開關(guān)控制心型LED閃爍狀態(tài)源程序與Proteus仿真
Proteus通過使用單片機(jī)C51控制流水燈的閃碩狀態(tài),語言簡單
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.gif
(93.21 KB, 下載次數(shù): 58)
下載附件
2023-1-29 19:18 上傳
單片機(jī)源程序如下:
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit S1=P2^0;
sbit S2=P2^1;
sbit S3=P2^2;
sbit S4=P2^3;
uchar keyval; //定義鍵值變量
void key_scan(); //按鍵掃描函數(shù)聲明
void delayms(uint); //延時(shí)函數(shù)聲明
void pattern1();
void pattern2();
void pattern3();
void pattern4();
void main(void)
{
keyval=0;
while(1)
{
key_scan(); //調(diào)用按鍵掃描函數(shù)
switch(keyval)
{
case 1:pattern1();break; //按鍵1被按下時(shí)執(zhí)行操作
case 2:pattern2();break; //按鍵2被按下時(shí)執(zhí)行操作
case 3:pattern3();break; //按鍵3被按下時(shí)執(zhí)行操作
case 4:pattern4();break; //按鍵4被按下時(shí)執(zhí)行操作
}
}
}
void key_scan(void) //按鍵掃描函數(shù)定義
{
P2=0xff;
if((P2&0x0f)!=0x0f)
{
delayms(100); //按鍵消抖
if(S1==0)
keyval=1;
if(S2==0)
keyval=2;
if(S3==0)
keyval=3;
if(S4==0)
keyval=4;
}
}
void delayms(uint j)
{
uchar i;
for(;j>0;j--)
{
i=250;
while(--i);
i=249;
while(--i);
}
}
void pattern1()
{
uchar i;
P0=0x7f;
P1=0xfe;
for(i=0;i<8;i++)
{delayms(200);
P0=_cror_(P0,1);
P1=_crol_(P1,1);
}
}
void pattern2()
{
uchar i,temp;
temp=0xfe;
for(i=0;i<8;i++)
{delayms(200);
P0=P1=temp;
temp=temp<<1;
}
}
void pattern3()
{
P0=P1=0xff;
delayms(200);
P0=P1=0x00;
delayms(200);
}
void pattern4()
{
uchar i;
P0=0x7f;
for(i=0;i<8;i++)
{delayms(200);
P0=_cror_(P0,1);
}
P0=0xff;
P1=0xfe;
for(i=0;i<8;i++)
{delayms(200);
P1=_crol_(P1,1);
}
P1=0xff;
}
復(fù)制代碼
本人初學(xué),僅供參考,存在錯誤和不足之處,請大家回帖多多指教,切勿照搬,文件下載:
以上的Keil5代碼工程文件和Proteus仿真8.13下載:
以上代碼下載.7z
(60.43 KB, 下載次數(shù): 17)
2022-6-2 20:03 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
qsddxu
時(shí)間:
2022-6-8 16:56
剛試用了 發(fā)現(xiàn)要切換不同的閃爍只能在剛接通電源時(shí)才能,中途按下其他鍵沒有反應(yīng),
作者:
164908060
時(shí)間:
2023-1-29 16:13
我的也是這樣的效果 只有復(fù)位后按按鍵可以切換 之后就切換不了
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1