1 / 5
文档名称:

程序流程图及代码.doc

格式:doc   页数:5页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

程序流程图及代码.doc

上传人:xxj16588 2015/11/29 文件大小:0 KB

下载得到文件列表

程序流程图及代码.doc

文档介绍

文档介绍:基于BS5104红外遥控器发射与接收设计制作
学号:20100030101
姓名:刘靖
班级:T1003—1
发射部分
发射电路有BA5104等构成发射电路,详细见发射部分原理图,BA5104工作原理实验讲义、网上资料都有详细讲解,这里就不浪费篇幅做再一说明,
接收解码部分
接收采用一体化接收头加反相器,解码由单片机完成,外围有数码管、1602液晶、8个LED灯将接收码显示出来。详细见接收部分原理图。
由于各个部分都相对较简单且讲义上都有详细说明,这里就不做赘述,仅将制作部分及解码程序贴出来。
/***关于BA5104红外编码51单片机解码程序***/
/***2013-12-11***/
/***MCU-STC89C52***/
/**晶振12MHZ**/
/**一体化接收头接收数据与发射数据相反,在电路中加一反相器**/
#include<>
#define uint unsigned int
#define uchar unsigned char
sbit IR_Data =P2^1;// 定义一体化接收头数据位
uint IR[3];//用于装取一次接受的多帧数据
uchar K_Data;//装取正确键值
uint mscount;
void init()
{
IR_Data=1; //释放数据线
TMOD=0x10; //设置定时器1
TH1=(65536-100)/256; //装初值
TL1=(65536-100)%256; //
ET1=1; //开定时器1中断
EA=1; //开总中断
mscount=0;
}
void delay_0_1ms(uint endcount)
{
TR1=1; //开定时器1,开始计时
while(mscount<endcount);//计时到endcount退出while循环
TR1=0; //关计数器
mscount=0; //mscount归0
}
void time1() interrupt 3 using 3
{
TH1=(65536-100)/256; //,mscount加一
TL1=(65536-100)%256; // 用定时写延时函数,时间较准确且易控制
mscount++;
}
uchar IR_Receive_data()
{
uint date;
uchar i,j,k;
for(k=0;k<32;k++)
{
delay_0_1ms(10);
if(IR_Data==1) //若在32ms内出现高电平则认为是干扰视为无效信号,退出
{
k=32;
break;
}
else if(k==31) // 若低电平持续了32ms
{
while(IR_Data==0);//等待低电平持续完
for(i=0;i<3;i++) //对一帧数据读三次进行比较确保准确性
{
for(j=1;j<=12;j++)//读取12位数据
{
while(IR_Data==0);//等待上升沿
delay_0_1ms(8); //,1值高