欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機P1開關控制低四位流水燈源程序+Proteus仿真
[打印本頁]
作者:
學生黨1325
時間:
2020-11-26 18:40
標題:
單片機P1開關控制低四位流水燈源程序+Proteus仿真
P1開關控制低四位流水燈,速度有點快自己調,有備注。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.png
(20.72 KB, 下載次數: 40)
下載附件
2020-11-26 23:36 上傳
單片機源程序如下:
#include<reg51.h>
#define led P1 //可以改為其他口
void delay(int x);
void left(int x);
void right(int x);
void flash1(int x);
void flash2(int x);
void delay(int x) //延遲函數1ms(大概)
{int i;
while(x)
{
for(i=0;i<125;i++);
x--;
}
}
void left(int x) //從P1^3到P1^0(我叫它左移)
{int i,j;
while(x)
{for(i=0;i<3;i++) // 循環3遍
{led=0xfe;
delay(50); //每個燈亮50ms
for(j=0;j<3;j++) //一共四位
{
led=led<<1|0xf1;
delay(50);
}
}
x--;
}
}
void right(int x) //從最低位的最高位(我叫它右移)
{int i,j;
while(x) //其他同左移
{for(i=0;i<3;i++)
{ led=0xf7;
delay(50);
for(j=0;j<3;j++)
{
led=led>>1|0xf8;
delay(50);
}
}
x--;
}
}
void flash1(int x) //四位全閃 (可以改很多種)
{int i;
while(x)
{led=0xf0;
delay(100); //一次亮100ms
for(i=0;i<1;i++) //可以改循環次數
{
led=~led|0xf0; //屏蔽高四位
delay(100);
}
x--;
}
}
void flash2(int x) //隔一位閃爍(全閃改)
{int i;
while(x) //基本和全閃一樣
{led=0xf5;
delay(100);
for(i=0;i<1;i++)
{
led=~led|0xf0;
delay(100);
}
x--;
}
}
main()
{while(1)
{led=0xff;
switch(led) //在燈全滅的情況下,多個按鍵同時按下時不會動作;
{case 0xef :{left(2);}break; //按下P1^4,執行左移,可以修改循環次數
case 0xdf :{right(2);}break; //按下P1^5,執行右移
case 0xbf :{flash1(2);}break;//按下P1^6,執行全閃
case 0x7f :{flash2(2);}break;//按下P1^7,執行全閃改
default:{led=0xff;}
}
}
}
復制代碼
#include<reg51.h>
#define led P1 //可以改為其他口
void delay(int x);
void left(int x);
void right(int x);
void flash1(int x);
void flash2(int x);
void delay(int x) //延遲函數1ms(大概)
{int i;
while(x)
{
for(i=0;i<125;i++);
x--;
}
}
void left(int x) //從P1^3到P1^0(我叫它左移)
{int i,j;
while(x)
{for(i=0;i<3;i++) // 循環3遍
{led=0xfe;
delay(50); //每個燈亮50ms
for(j=0;j<3;j++) //一共四位
{
led=led<<1|0xf1;
delay(50);
}
}
x--;
}
}
void right(int x) //從最低位的最高位(我叫它右移)
{int i,j;
while(x) //其他同左移
{for(i=0;i<3;i++)
{ led=0xf7;
delay(50);
for(j=0;j<3;j++)
{
led=led>>1|0xf8;
delay(50);
}
}
x--;
}
}
void flash1(int x) //四位全閃 (可以改很多種)
{int i;
while(x)
{led=0xf0;
delay(100); //一次亮100ms
for(i=0;i<1;i++) //可以改循環次數
{
led=~led|0xf0; //屏蔽高四位
delay(100);
}
x--;
}
}
void flash2(int x) //隔一位閃爍(全閃改)
{int i;
while(x) //基本和全閃一樣
{led=0xf5;
delay(100);
for(i=0;i<1;i++)
{
led=~led|0xf0;
delay(100);
}
x--;
}
}
main()
{while(1)
{led=0xff; //在燈全滅的情況下,多個按鍵同時按下時不會動作;
if(led==0xef) //按下P1^4,執行左移,可以修改循環次數 ;
{left(2);}
else if(led==0xdf) //按下P1^5,執行右移
{right(2);}
else if(led==0xbf) //按下P1^6,執行全閃
{flash1(2);}
else if(led==0x7f) //按下P1^7,執行全閃改
{flash2(2);}
}
}
復制代碼
所有資料51hei提供下載:
開關控制低四位流水燈.zip
(74.82 KB, 下載次數: 10)
2020-11-26 18:40 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1