欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機紅外線遙控七色小燈 Proteus仿真加源程序
[打印本頁]
作者:
51黑電子happy
時間:
2017-3-29 23:37
標題:
單片機紅外線遙控七色小燈 Proteus仿真加源程序
這種調光效果如果51黑電子論壇的朋友們有機會做成實物的話效果一定很酷炫.
51單片機做的
紅外線遙控七色小燈
的仿真原理圖(proteus工程文件可到本帖附件下載):
0.png
(29.8 KB, 下載次數: 86)
下載附件
2017-3-29 23:29 上傳
單片機源程序:
//----------------------------------------------------------------------------------------------------------------------------------
//程序名:IRKD6-3
//程序功能:紅外線遙控七色小燈
// --------------------------------------------------------------------------------------------------------------------------------
#include<reg51.h> //頭文件
sbit IRIN=P3^2; //定義紅外IR信號輸入位
sbit R_LED=P0^0; //定義發紅光LED控制引腳
sbit G_LED=P0^1; //定義發綠光LED控制引腳
sbit B_LED=P0^2; //定義發藍光LED控制引腳
sbit SPK=P2^7; //定義壓電喇叭信號輸入位
unsigned char IRDATA[7]; //定義數組,存儲紅外接收到的數據
void delay(unsigned char x); //延時約x*0.1ms 函數
void fs_d ( ); //發聲函數
void IR_ZX(); //遙控執行函數
//-------------------------------------- 主函數 --------------------------------------
void main() //主函數
{
EA=1; //允許總中斷
EX0=1; //允許外部中斷INT0中斷
IT0=1; //外部中斷INT0采用脈沖觸發方式
fs_d ( );
{
IRIN=1; //IR 輸入位設置為高電平
P0=0xff;
IR_ZX();
while(1); //無限循環
}
}
//-------------------------------------- 延時函數 -----------------------------------
void delay(unsigned char x) //延時約x*0.1ms
{
unsigned char i;
while(x--)
{for(i=0;i<10;i++){}}
}
//------------------------------------- 中斷解碼函數 ----------------------------------
void IR_IN() interrupt 0 using 0 //外部中斷INT0函數
{
unsigned char j,k,n=0; //定義變量,且n=0
EX0=0; //暫時先關中斷
delay(20); //延時0.10ms*20=2ms
if(IRIN==1) //如果IRIN出現高電平,是干擾信號
{
EX0=1;
return; //返回
}
while(!IRIN){delay(1);} //避開9ms前導低電平信
for(j=0;j<4;j++) //一共有4組數據
{
for(k=0;k<8;k++) //每組數據有8位
{
while(IRIN){delay(1);} // 避開4.5ms高電平
while(!IRIN){delay(1);}
// 開始接收數據
while(IRIN)
{
delay(1); //延時0.1ms
n++; //每過0.1ms時n就加1
if(n>=30) //如果超過30,放棄
{
EX0=1;
return;} //返回
}
IRDATA[j]=IRDATA[j]>>1; //右移1位
if(n>=8){IRDATA[j]=IRDATA[j]|0x80;}
n=0; //n清0
}
}
//檢查接收的數據和數據反碼是否相反
if(IRDATA[2]!=~IRDATA[3]) //判斷數據碼和數據反碼是不是相反
{ //否則就放棄
EX0=1;
return;
}
// 遙控執行
else
EX0=1; //開中斷
fs_d ( ); //調用發聲函數
}
//------------------------------------- 發聲函數 -----------------------------------------
void fs_d ( )
{
unsigned char i;
for(i=0;i<100;i++)
{
delay(4);
SPK=~SPK;
}
SPK=1;
}
//------------------------------------ 遙控執行函數 --------------------------------------
void IR_ZX() //遙控執行函數
{
while(1)
{
switch(IRDATA[2])
{
//發紅色光
case 0x01:
{
G_LED=1; //綠光LED熄滅
B_LED=1; //藍光LED熄滅
R_LED=0; //紅光LED亮
break;
}
//發黃色光
case 0x02:
{
B_LED=1; //藍光LED熄滅
R_LED=0; //紅光LED亮
G_LED=0; //綠光LED亮
break;
}
//發綠色光
case 0x03:
{
B_LED=1; //藍光LED熄滅
R_LED=1; //紅光LED滅
G_LED=0; //綠光LED亮
break;
}
//發青色光
case 0x04:
{
R_LED=1; //紅光LED熄滅
G_LED=0; //綠光LED亮
B_LED=0; //藍光LED亮
break;
}
//發藍色光
case 0x05:
{
R_LED=1; //紅光LED熄滅
G_LED=1; //綠光LED熄滅
B_LED=0; //藍光LED亮
break;
}
//發紫色光
case 0x06:
{
G_LED=1; //綠光LED熄滅
R_LED=0; //紅光LED亮
B_LED=0; //藍光LED亮
break;
}
//發白色光
case 0x07:
{
R_LED=0; //紅光LED亮
G_LED=0; //綠光LED亮
B_LED=0; //藍光LED亮
break;
}
//關閉彩燈
case 0x08:
{
R_LED=1; //紅光LED熄滅
G_LED=1; //綠光LED熄滅
B_LED=1;
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
0.png
(52.63 KB, 下載次數: 104)
下載附件
2017-3-29 23:36 上傳
該系列源碼包含有很多非常經典,代碼風格十分規范,而且注釋詳細的單片機例程,還帶仿真,對于MCU學習特別是初學者是很有幫助的,全部源碼下載(共25個項目):
http://www.raoushi.com/bbs/dpj-79328-1.html
本例程下載(含proteus仿真工程文件與源碼):
單片機紅外線遙控七色小燈.rar
(51.55 KB, 下載次數: 168)
2017-3-29 23:35 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
dxh51
時間:
2017-4-29 09:50
仿真的時候,添加hex文件怎樣添加
作者:
15856405182
時間:
2017-5-30 17:31
膜拜大佬
作者:
211209
時間:
2017-12-22 13:00
謝謝大佬了拿去修改一下
作者:
歡666
時間:
2018-1-3 15:05
我試了一下,在proteus仿真的時候會出現“在U2 HP中丟失的接口模型AT89”這個問題,樓主求解
作者:
shcshc
時間:
2018-10-16 19:27
有發射的源碼嗎
作者:
qq1050026447
時間:
2018-10-28 14:35
是全部源碼嗎?圖2個芯片啊
作者:
路還要走
時間:
2018-10-29 14:03
畢設可以考慮
作者:
miyakoy
時間:
2019-5-3 21:32
有發送端的代碼嗎?
作者:
nzyhgw
時間:
2020-4-28 14:34
感謝分享這么好的資源,樓主有福!
作者:
空白西瓜
時間:
2020-4-28 15:37
你好,程序打不開是什么原因呢
作者:
空白西瓜
時間:
2020-4-28 16:24
你好,我想問一下怎么樣實現讓LED燈亮起來呢
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1