红外接收与发送系统设计。
一、红外发送与接收系统硬件构成。
红外遥感原理是利用红外线进行信息传递,波长范围:0.76um~1.75um。该系统总体框架图如图1所示,发射机、接收机和数码显示组成。
图1 红外发送与接收系统框架图。
1.红外发送系统模块。
发射码是由引导码,用户码,键码和键码反码构成。通过按键控制发射码的编辑与发送。然后通过单片机8051的调制并通过通用i/o口的电平转换来控制红外led的发光。
红外发送系统原理图如图2所示。
图2红外发送系统原理图。
发射码的具体编码过程如图3所示。
图3 发射机具体编码过程图。
2.红外接收系统模块。
红外接收模块主要是通过光敏三极管感受光照而控制三极管的导通与截止进而控制电平的转换,通过电平转换形成数字调制码。通过8051对调制信号进行解调、解码。接收系统**原理图如图4所示。
图4红外接收系统模块。
数码显示系统模块。
采用多位一体数码管显示,以发光二极管为组成单元的显示器件。采用共阴极数码管工作模式:阴极接在一起,低电平,阳极为高电平时,则对应的led灯亮。工作原理图如图5所示。
图5 led数码管工作原理图。
系统红外接收led数码显示模块multisim原理图如图6所示。
图6数码显示模块原理图。
二、软件设计模块。
1.发送模块程序设计。
通过按键来控制i/o口电平高低转换。由i/o口电平转换,组成红外编码时序图,然后通过开关上移、下移、左移、右移按键控制响应功能程序,并实现红外编码的调制。相应程序设计流程图如图7所示。
图7 发送模块程序设计流程图。
2.接收模块程序设计。
(1)红外接收模块是通过中断的方式来接收红外的信号,具体接收流程图如图8所示。
图 8 中断接收流程图。
2)通过中断接收的红外调制信号,按照图9所示的解调和解码。解码过程中,通过判读是否接收到引导码来判断接收的信号是否是用户码,然后并对用户码进行识别,确认键码后解码。利用接收波形的下降沿使单片机产生中断,相邻两次中断(两个下降沿)的间隔时间由定时器计时。
图9解码流程图。
3.数码管显示程序设计。
数码管显示模块,通过单片机识别解码数据,并根据数据十进制高地位进行显示,设定片选每一位的显示时间。每次中断切换数码管,四次为一个周期,定时时间4ms。已知三个数码管分别显示十位、个位和十分位,对解码后的程序首先进行十位判断,如果有值则进行零值判断,如果无值则进行个位判断,依次到十分位判断,三个有效位依次根据判断顺序进行查表,并通过单片机程序片选十位、个位和十分位数码管进行显示。
根据一个周期4ms,对数码管进行扫描显示,就形成了红外编码显示。具体程序设计流程图如图10所示。
图10 数码管显示程序设计流程图。
8051源程序。
#include
#include
// 函数原型
void systeminit(void);
void delay_840us(void);
void delay_2400us(void);
void leddisp();
unsigned char getcode(void);/获得码
void delay(unsigned char loop);
// 位变量
sbit irin = p3^2;
sbit beep = p1^6;
sbit swch = p1^7;
// 变量
unsigned char keyvalue; /机器码
unsigned char m**alue; /键值码;
unsigned char disbuf[4]; 数码管显示缓冲
unsigned char scan[4]=;p2位选择
unsigned char code table[16] =
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
/*延时 */
void delay(unsigned char loop)
unsigned char i
for(i=0;i>8);
tr1=1;
while(!tf1);
tf1=0;
tr1=0;
/*延时9ms */
void delay_9000us(void)
tl1 = 153.6;
th1 = 223.6;
tr1 = 1;
while(!tf1);
tf1 = 0;
tr1 = 0;
/*延时4.5ms */
void delay_4500us(void)
th1 = 239.8;
tl1 = 204.8;
tr1 = 1;
while(!tf1);
tf1 = 0;
tr1 = 0;
/*系统初始化*/
void systeminit(void)
irin = 1;
it0 = 1int0负跳变触发
tmod = 0x10; /定时器1工作在方式1
ea = 1;
ex0 = 1;
*读码*/
unsigned char getcode()
unsigned char n;
static temp = 0;
for( n = 0; n < 8; n++
return temp;
/*数码管显示*/
void leddisp()
unsigned char i;
for(i=0;i<4;i++)
p0=table[disbuf[i]];
p2 = scan[i];
delay(50);
p0=0x00;
void main(void)
systeminit();
while(1)
void interr_ir(void) interrupt 0
/*用户码和机器码*/
unsigned char addrl,addrh,num1,num2;
ea = 0; /先关闭外部中断0
delay_9000us();检测9ms开始码
if (irin检测是否为干扰信号
ea = 1; /重新开启外部中断0
return ; 退出解码
while(!irin); 等待跳为高电平
delay_4500us();检测4.5ms结果码
if (irin检测是否为干扰信号
ea = 1; /重新开启外部中断0
return ; 退出解码
// 读码
addrl=getcode();用户编码高位
addrh=getcode();用户编码低位
num1=getcode();机器码
num2=getcode();机器码反码
//校验是否为错码
if(num1!=~num2)
keyvalue=num2;
m**alue=addrh;
ea=1; }
嵌入式式系统作业
目录。摘要 1第一章绪论 2 第二章相关芯片介绍 3 2.1 tms320f28335 3 2.2 加速度传感器adxl345 4 2.3 角速度传感器l3g4200 5 第三章 dsp的i2c通讯原理 6 3.1 adxl345的i2c接口 6 3.2 l3g4200的i2c接口 8 3.3 tm...
嵌入式系统作业
嵌入式系统的应用范围可以粗略分为两大类 电子系统的智能化 工业控制 现代农业 家用电器 汽车电子 测控系统 数据采集等 计算机应用的延伸 手机 通信 网络 计算机外围设备等 从这些应用可以看出,要完成一个以mcu为核心的嵌入式系统应用产品设计,需要硬件 软件及行业领域相关知识。硬件主要有mcu的硬件...
嵌入式系统作业
计算机科学与技术学院。计科09 2班。题目 电子产品之嵌入式追踪系统。一 现状。我时常听到说某位同学的手机被盗了或者相机丢了,类似的事情在高校里时有发生。这给同学们造成了严重的损失,而且里面还有很多资料是非常重要的,这一丢失给失主造成的损失更是无法估量,那么我们能否用什么方法来解决此类问题吗?因此我...