欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機鍵控淘氣彩燈控制源碼與proteus仿真
[打印本頁]
作者:
阿姐酒啊就
時間:
2018-4-12 22:58
標題:
單片機鍵控淘氣彩燈控制源碼與proteus仿真
51單片機彩燈控制系統
有4種閃爍方式
能自動手動切換
淘氣彩燈仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png
(24.54 KB, 下載次數: 50)
下載附件
2018-4-13 01:59 上傳
0.jpg
(44.99 KB, 下載次數: 58)
下載附件
2018-4-13 02:00 上傳
單片機淘氣彩燈源程序如下:
#include<reg52.h>
#include<intrins.h>
sbit Key1=P3^2; //切換狀態按鈕(外部中斷0)
sbit Key2=P3^3;
sbit Key3=P3^4;//暫停按鈕(外部中斷1)
sbit p1=P1^5;///蜂鳴器控制端口
unsigned char state=1; //狀態標志
unsigned int aut=1; //改變手動自動模式
char F; //定義F為外部變量
unsigned char NUM1[4]={0x7e,0xbd,0xdb,0xe7}; //第3種亮燈方式(向內)
unsigned char NUM2[4]={0xe7,0xdb,0xbd,0x7e}; //第3種亮燈方式(向外)
unsigned char a[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //第4種亮燈方式
void Delay(unsigned int t) //延時函數
{
unsigned int i,j;
for(i=0;i<t;i++) //用for循環嵌套來實現延時
for(j=0;j<200;j++);
}
void Int_Init() //外部中斷初始化
{
IT0=1; //外部中斷0,邊沿觸發
EX0=1; //允許中斷
IT1=1; //外部中斷1,邊沿觸發
EX1=1; //允許中斷
TMOD=0x06;
TH0=0xff;
TL0=0xff;
ET0=1;
TR0=1;
EA=1; //開總中斷
}
void first()
{
unsigned char n;
for(n=0;n<35;n++)
{
P0=0x6d;
P2=0x6d;
Delay(30);
if(F== 1) break; //如果按下外部中斷按鈕,立即跳出效果,執行中斷的內容
}
F = 0; //把外部變量清0
}
void second()
{
unsigned char m,n;
for(m=0;m<4;m++)
{
P0=0xf0;
P2=0x0f;
Delay(100);
P0=0xff;
P2=0xff;
Delay(100);
if(F == 1 ) break; //如果按下外部中斷按鈕,立即跳出效果,執行中斷的內容
}
for(n=0;n<4;n++)
{
P0=0x0f;
P2=0xf0;
Delay(100);
P0=0xff;
P2=0xff;
Delay(100);
if(F == 1 ) break; //如果按下外部中斷按鈕,立即跳出效果,執行中斷的內容
}
F = 0; //把外部變量清0
}
void third()
{
unsigned char n;
for(n=0;n<4;n++)
{
P0=NUM1[n];
P2=NUM2[n];
Delay(100);
if(F == 1 ) break; //如果按下外部中斷按鈕,立即跳出效果,執行中
}
F = 0; //把外部變量清0
}
void four()
{
unsigned char n;
for(n=0;n<8;n++)
{
P0=a[n];
P2=a[n];
Delay(100);
if(F == 1 ) break; //如果按下外部中斷按鈕,立即跳出效果,執行中斷的內容
}
F = 0; //把外部變量清0
}
void five()
{
while(aut==0)
{
first();
if(aut==1)break;
second();
if(aut==1)break;
third();
if(aut==1)break;
four();
if(aut==1)break;
Delay(10);
if(F==1) break;
}
F = 0; //把外部變量清0
}
/**************主函數*******************/
void main()
{
Int_Init(); //外部中斷初始化
while(1)
{ if(!(aut && state)){
five();
}
else{
if(state==1) first(); //掃描狀態標志,為1時,第一種效果
else if(state==2) second(); //掃描狀態標志,為2時,第二種效果
else if(state==3) third(); //掃描狀態標志,為3時,第三種效果
else if(state==4) four(); //掃描狀態標志,為4時,第四種效果
else
{P0=0x00; P2=0x00;} //其他狀態,八盞燈全亮,即暫停
}
}
//蜂鳴器程序
while(1){
p1=0;
Delay(200);
p1=1;
Delay(500);
}
}
/************外部中斷0********************/
void INT_0() interrupt 0
{
Delay(100);//消抖
if(Key1 == 0)
{
F = 1;
state++; //外部變量置1,即立即跳出效果 //按一次按鈕,狀態標志加1
if(state>4) state=1;
while(Key1 == 0); //松手檢測
}
}
/************外部中斷1********************/
void INT_1() interrupt 2
{
Delay(100);//消抖
if(Key2 == 0)
{
F=1; //外部變量置1,即立即跳出效果
state=~state; //取反狀態標志,按一次可暫停,使八盞燈全亮,再按一次,繼續執行之前的操作
while(Key2 == 0); //松手檢測
}
}
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
淘氣的彩燈.rar
(56.93 KB, 下載次數: 33)
2018-4-12 22:57 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1