欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機紅外線遙控繼電器實驗 Proteus仿真加源程序
[打印本頁]
作者:
51黑電子happy
時間:
2017-3-29 22:24
標題:
單片機紅外線遙控繼電器實驗 Proteus仿真加源程序
很多朋友都需要的51紅外控制繼電器的仿真分享給51黑電子論壇的朋友們
單片機
紅外線遙控LED和繼電器
仿真原理圖(proteus工程文件可到本帖附件下載):
0.png
(33.6 KB, 下載次數: 69)
下載附件
2017-3-29 22:19 上傳
單片機源程序:
//----------------------------------------------------------------------------------------------------------------------------------
// 程序名:HW6-2.c
// 程序功能:紅外線遙控LED
// --------------------------------------------------------------------------------------------------------------------------------
#include<reg51.h> //頭文件
sbit IRIN=P3^2; //定義紅外IR信號輸入位
sbit SPK=P0^0; //定義蜂鳴器接口
sbit RELAY=P2^7; //定義繼電器接口
unsigned char IRDATA[7]; //定義數組,存儲紅外接收到的數據
//-------------------------------------- 主函數 --------------------------------------
void main()
{
EA=1; // 允許總中斷
EX0=1; // 允許外部中斷INT0中斷
IT0=1; // 外部中斷INT0采用脈沖觸發方式
P1=0x00; // 設置P1初始值
SPK=1; // 設置SPK初始值
IRIN=1; // IR 輸入位設置為高電平
while(1); // 無限循環
}
//--------------------------------------- 延時函數 ------------------------------------
void delay(unsigned char x) //延時約x*0.1ms
{
unsigned char i;
while(x--)
{for(i=0;i<10;i++){}}
}
//------------------------------------- 發聲函數 -------------------------------------
void fs_d ( )
{
unsigned char i;
for(i=0;i<100;i++)
{
delay(4);
SPK=~SPK;
}
SPK=1;
}
//------------------------------------- 中斷解碼函數 -----------------------------------
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 {}
fs_d ( ); //調用發聲函數
P1=IRDATA[2]; // P1端口輸出
EX0=1; //開中斷
}
//--------------------------------------------------------------------------------------------------
復制代碼
0.png
(66.21 KB, 下載次數: 65)
下載附件
2017-3-29 22:23 上傳
該系列源碼包含有很多非常經典,代碼風格十分規范,而且注釋詳細的單片機例程,還帶仿真,對于MCU學習特別是初學者是很有幫助的,全部源碼下載(共25個項目):
http://m.raoushi.com/bbs/dpj-79328-1.html
本例程下載(含proteus仿真工程文件與源碼):
6-2單片機紅外線遙控繼電器實驗.rar
(49.42 KB, 下載次數: 55)
2017-3-29 22:22 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
songxia8013
時間:
2018-1-31 18:01
發送端沒有代碼,缺一半!
作者:
都市郎
時間:
2018-2-5 21:21
仿真跟源程序都不對,大家不要下載。浪費黑幣!
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1