标题:
单片机红外线遥控开关实验 Proteus仿真加源程序
[打印本页]
作者:
51黑电子happy
时间:
2017-3-29 23:08
标题:
单片机红外线遥控开关实验 Proteus仿真加源程序
单片机用
红外线来遥控一个开关实验
的仿真原理图(proteus工程文件可到本帖附件下载):
0.png
(22.49 KB, 下载次数: 109)
下载附件
2017-3-29 23:03 上传
单片机源程序:
//----------------------------------------------------------------------------------------------------------------------------------
//程序名: HW6-3.c
//程序功能:红外线遥控开关程序
// --------------------------------------------------------------------------------------------------------------------------------
#include<reg51.h> //头文件
sbit IRIN=P3^2; //定义红外IR信号输入位
sbit SPK=P0^0; //定义蜂鸣器接口
sbit RELAY=P2^7; //定义继电器接口
unsigned char IRDATA[7]; //定义数组,存储红外接收到的数据
void delay(unsigned char x);
void fs_d ( );
//-------------------------------------- 主函数 --------------------------------------
void main()
{
EA=1; // 允许总中断
EX0=1; // 允许外部中断INT0中断
IT0=1; // 外部中断INT0采用脉冲触发方式
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;
}
//执行语句
if(IRDATA[2]==0x01) RELAY=0; //接通继电器
fs_d ( );
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
0.png
(51.18 KB, 下载次数: 91)
下载附件
2017-3-29 23:07 上传
该系列源码包含有很多非常经典,代码风格十分规范,而且注释详细的单片机例程,还带仿真,对于MCU学习特别是初学者是很有帮助的,全部源码下载(共25个项目):
http://www.51hei.com/bbs/dpj-79328-1.html
本例程下载(含proteus仿真工程文件与源码):
6-3单片机红外线遥控开关实验.rar
(74.52 KB, 下载次数: 105)
2017-3-29 23:07 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
yourfather
时间:
2017-5-6 09:44
好资料。
作者:
Nemesis_126
时间:
2017-8-6 18:16
呵呵,怎么没人顶!看不懂叫喔!
作者:
wjsyjh
时间:
2019-12-9 10:03
谢谢楼主分享 正需要一个遥控开关程序
作者:
wjsyjh
时间:
2019-12-10 08:20
楼主忽悠人呀 ,没有发射程序 ,接收程序也不全 能真诚点不
作者:
欧阳来洪
时间:
2019-12-10 09:39
不错不错 要是可以直接下载就好啦
作者:
nzyhgw
时间:
2020-4-24 11:03
多向前辈学习,这么好的资料!
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1