单片机课程设计(论文)红外线接收发送装置设计_第1页
单片机课程设计(论文)红外线接收发送装置设计_第2页
单片机课程设计(论文)红外线接收发送装置设计_第3页
单片机课程设计(论文)红外线接收发送装置设计_第4页
单片机课程设计(论文)红外线接收发送装置设计_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计说明书 第24页红外线接收发送装置设计摘 要利用红外线传输信息的方式可用于近距离遥控、飞机内广播和航天飞机内宇航员间的通信等。同时红外通信技术适合于低成本、跨平台、点对点高速数据连接,尤其是嵌入式系统。其主要应用:设备互联、信息网关。设备互联后可完成不同设备内文件与信息的交换。信息网关负责连接信息终端和互联网。红外通信技术是在世界范围内被广泛使用的一种无线连接技术,被众多的硬件和软件平台所支持。红外线通信是目前使用较广泛的一种通信手段。与一般通用的红外遥控器不同的是它不是利用专用的编解码芯片来实现发收端的编解码,而是应用c51 单片机,通过单片机的编、解码程序来实现红外信号的发收,从而

2、实现红外遥控通信功能。此通信系统经过一些必要的扩展,完全可以实现通用和各种专用红外遥控器的功能。 本文所要介绍的内容就是如何利用单片机,结合红外线器件设计构造出一套简易的红外线通信系统,以实现在中短距离内的红外无线通信的功能。关键字:单片机红外通信发射、接收、遥控、串行接口241 绪论随着社会生产力的发展和技术的进步,单片机的应用越来越广泛。在遥控应用领域,单片机尤其得到了很好的应用。很多单片机应用系统中,常常利用非电信号传送控制信息和数据信息,以实现遥控或遥测的功能。在各种非电信号中, 红外线光信号是最经常用的。它在各领域都得到广泛的应用,红外线为不可见光,具有很强的隐蔽性和保密性,因此其在

3、防盗、警戒等安全保卫装置也得到了广泛的应用。因为红外线通信具有成本低廉、控制简单、实施方便、简单易用、结构紧凑和抗干扰能力强、传输可靠性高的特点,因此在小型的通信移动设备中获得了广泛的应用。试想一下,如果没有红外通信,连接这其中的两个设备就必须要有一条特制的连线,如果要使它们能够任意地两两互联传输数据,该需要多少条连线呢?而有了红外线通信口,这些问题就都迎刃而解了。本课题要设计完成的就是一个简单的基于单片机的红外通信系统,通过单片机的编、解码程序来实现红外信号的发收,从而实现红外遥控通信功能.此通信系统经过一些必要的扩展,完全可以实现通用和各种专用红外遥控器的功能。实现单片机系统红外通信的关键

4、在于红外接口电路的设计以及接口驱动程序设计。 2 红外通信各硬件电路 我们这里把整个遥控器系统分为发射模块及接收模块两部分,和一般通用的遥控器结构相同,本课题设计的通信系统发射部分也包括键盘矩阵电路、编码调制电路、led 红外发射电路;接收部分包括光、电转换放大器、解调解码电路和解码显示电路。各部分电路的设计思路和具体实现如下。2.1 红外发射模块电路的实现 当按下某一按键后,遥控器上的遥控芯片便进行编码产生一组句柄,结合载波电路的载波(38khz)而成为合成信号,经过放大器提升功率而推动红外发射二极管,将红外线信号发射出去,所要发射的句柄必须加上载波才能使信号传送的距离加长,一般遥控器的有效

5、距离为7m。图1 基于i/o口的红外发射电路2.1.1 载波信号电路的设计图2 载波电路图为使红外信号能够正确的传送出去和传送更远,我们也需要在编码信号输出端加上一个高频载波信号。通过载波信号的调制,把编码信号的有用信息“携带”出去,这样信号的传送距离就能更长,而且能有效的避免干扰。通过555 时基电路和选择合适的外围元件组成频率为38khz 的载波脉冲振荡器,如图2 所示。图中,通过调节200 欧精密可调变阻器rp2 的阻值,可以调整使555 的输出端输出为38khz 的载波信号。2.1.2按键输入电路图3 按键输入电路2.1.3串口通信的硬件电路如下图4所示。 图4 串口通信电路2.1.4

6、 红外发射电路模块的系统综合电路图通过上面对发射模块各部分电路的具体设计,我们可以得出发射模块的系统综合电路设计图如下图5所示。图5 发射模块系统综合电路图2.2 红外接收模块电路的实现下图为红外接收的工作方块图,其主要控制组件为红外线接收模块,其内部含有高频的载波电路,专门用来滤除红外线合成信号的载波信号(38khz)而送出发射器的控制信号。当红外线合成信号进入红外线接收模块,在其输出端便可以得到原先的数字控制编码,只要经过单片机译码程序进行译码,便可以得知按下了哪一按键,而作出相对应的控制处理,完成红外遥控的动作。 图6 红外接收工作方块图2.2.1 解码后控制电路无线通信的最终目的就是为

7、了实现无线接收后的控制功能。本课题的无线接收后控制电路设计为一个数码显示电路和一个响铃报警电路,这样既可以实现了红外无线接收后的控制功能,也可以通过这个电路很直观的识别解码的成功与否。具体电路设计见下图7。图7 解码后数码显示电路电路中根据发射端发射按键的数目,设计一位的数码管来显示,数码管采用的是一个共阴极接法的一位数码显示管,其中09 数码显示数字表示的是发射按键的09 的编号数,关闭按键的数码显示符号则用“e”来表示。报警电路部分则只采用了一个5伏电磁型蜂鸣器来报响,通过蜂鸣器的报响从而表示译码的成功。2.2.2 接收模块的系统综合电路图通过上面对接收模块各部分电路的具体设计,我们不难得

8、出接收模块的系统综合电路设计图见图8图8 接收模块的系统综合电路图3 红外通信系统的软件设计 软件的设计,要求准确无误的实现红外遥控器的控制功能,并要求系统具有高的可靠性、快的反应速度、以及低的系统功耗。本系统的控制功能主要包括发射端的键盘按键输入,按键信息的编码输出,接收端的译码显示以及报响控制等功能。下面是对红外发射与红外接收软件程序设计的具体阐述。3.1 红外遥控发射的软件程序实现#include #include /_nop_ ();void scan_k0(void); /0void scan_k1(void); /1void scan_k2(void); /2void scan_k

9、3(void); /3void scan_k4(void); /4void scan_k5(void); /5void scan_k6(void); /6void scan_k7(void); /7void scan_k8(void); /8void scan_k9(void); /9void scan_k10(void);/10void send_9000(void);void send_1685(void);void send_2000(void);void send(unsigned char data);void timer0_int(void);/ interrupt 1 ; /t0

10、 中断子程序 /2ms 计数器*sbit out=p10;/发射脚sbit k0 =p20;sbit k1 =p21;sbit k2 =p22;sbit k3 =p23;sbit k4 =p24;sbit k5 =p25;sbit k6 =p26;sbit k7 =p27;sbit k8 =p15;sbit k9 =p16;sbit k10=p17;sbit test1=p30;/test1sbit test2=p31;/test2sbit test3=p32;/test3sbit test4=p33;/test4*unsigned char ss ; /system statusunsign

11、ed char n0,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10; /键龄unsigned char wait; /等待释放#void main()out=0; /关闭发射tmod=0x11; /定时器0 和1 都设置为方式1 即16 位计数器tl0=0x30;th0=0x0f8; /t0 定时2msea=1; /开放总中断et0=1; /允许t0 中断et1=0; /禁止t1 中断tr0=1; /启动t0while(1);*void scan_k0(void) /if (k0=0) /按键按下时i/o 口为0.if (+n0=9) /键盘防抖延时2ms*9=18mswait

12、=250,n0=0;send(0);*void scan_k1(void) /if (k1=0) /按键按下时i/o 口为0.if (+n1=9) /键盘防抖延时2ms*9=18mswait=250,n1=0;send(1);*void scan_k2(void) /if (k2=0) /按键按下时i/o 口为0.if (+n2=9)wait=250,n2=0;send(2);*void scan_k3(void) /if (k3=0) /按键按下时i/o 口为0.if (+n3=9)wait=250,n3=0;send(3);*void scan_k4(void) /if (k4=0) /按

13、键按下时i/o 口为0.if (+n4=9)wait=250,n4=0;send(4);*void scan_k5(void) /if (k5=0) /按键按下时i/o 口为0.if (+n5=9)wait=250,n5=0;send(5);*void scan_k6(void) /if (k6=0) /按键按下时i/o 口为0.if (+n6=9)wait=250,n6=0;send(6);*void scan_k7(void) /if (k7=0) /按键按下时i/o 口为0.if (+n7=9)wait=250,n7=0;send(7);*void scan_k8(void) /if (

14、k8=0) /按键按下时i/o 口为0.if (+n8=9)wait=250,n8=0;send(8);*void scan_k9(void) /if (k9=0) /按键按下时i/o 口为0.if (+n9=9)wait=250,n9=0;send(9);*void scan_k10(void) /if (k10=0) /按键按下时i/o 口为0.if (+n10=9)wait=250,n10=0;send(10);*void send(unsigned char data)ea=0; /关中断/-下面开始发码头-send_9000();send_4500();/.下面开始发识别码.send

15、_565();/0send_560();send_565();/1send_565();/0send_560();send_565();/1send_1685();send_565();/0send_560();send_565();/1send_1685();send_565();/1send_1685();/.下面开始发数据码和数据反码.send_565();/d0if(data & 0x01)=1)send_1685();else send_560();send_565();/d1if(data & 0x02)=2)send_1685();else send_560();send_565

16、();/d2if(data & 0x04)=4)send_1685();else send_560();send_565();/d3if(data & 0x08)=8)send_1685();else send_560();/send_565();/d0 反if(data & 0x01)=1)send_560();else send_1685();send_565();/d1 反if(data & 0x02)=2)send_560();else send_1685();send_565();/d2 反if(data & 0x04)=4)send_560();else send_1685();s

17、end_565();/d3 反if(data & 0x08)=8)send_560();else send_1685();send_2000();/结束信号!/out=0; /停止发送!ea=1; /开中断void send_9000(void)th1=0x0dc;tl1=0x0d8; /9000us,开始发码头tf1=0; /清除溢出标志/+tr1=1; /启动t1out=1;while(!tf1);void send_4500(void)th1=0x0ee;tl1=0x06c; /4500ustf1=0; /清除溢出标志out=0;while(!tf1);void send_560(voi

18、d)th1=0x0fd;tl1=0x0d0; /560ustf1=0; /清除溢出标志out=0;while(!tf1);void send_565(void)th1=0x0fd;tl1=0x0cb; /565ustf1=0; /清除溢出标志out=1;while(!tf1);void send_1685(void)th1=0x0f9;tl1=0x06b; /1685ustf1=0; /清除溢出标志out=0;while(!tf1);void send_2000(void)th1=0x0f8;tl1=0x030; /2000ustf1=0; /清除溢出标志out=1;while(!tf1);v

19、oid timer0_int(void) interrupt 1 /t0 中断子程序 /2ms 计数器;tl0=0x30;th0=0x0f8; /重装定时器0 常数;/定时2msif (wait=0) /如果之前没有键按下或者有键按下延时结束.scan_k0();scan_k1(); /scan_k2(); /scan_k3(); /scan_k4(); /scan_k5(); /scan_k6(); /scan_k7(); /scan_k8(); /scan_k9(); /scan_k10(); /elsewait-;end3.2 红外遥控接收的软件程序org 0000hajmp main;

20、 转入主程序org 0003h; 外部中断p3.2 脚int0 入口地址ajmp int ; 转入外部中断服务子程序(解码程序)main: lcall ys100ms ;延时100msmov dptr,#tabsetb ea ; 打开cpu 总中断请求setb it0 ; 设定int0 的触发方式为脉冲负边沿触发setb ex0 ; 打开int0 中断请求mov tmod,#01h; t0 方式1,16 位计数器setb tr0; 启动t0clr et0; 禁止t0 中断mov p0,#0; led 不显示clr p2.7;lcall speak;ajmp $;=;以下为进入p3.2 脚外部中

21、断子程序,也就是解码程序int: clr ea ; 暂时关闭cpu 的所有中断请求clr a;mov r6,#10; #10h9: acall ys861 ; 调用861 微秒延时子程序jb p3.2,exit1;延时861 微秒后判断p3.2 脚是否出现高电平如果有就退出解码程序djnz r6,h9 ;重复10 次,完成对遥控信号的9000 微秒的初始低电平信号识别。mov p1,#1 ; test1mov r6,#5 ;h45:acall ys861; 调用861 微秒延时子程序mov c,p3.2 ; 将p3.2 引脚此时的电平状态0 或1 存入c 中jnc exit1 ; 如果为0 就

22、退出djnz r6,h45; 检测到高电平1 的话继续检测直到4.7ms 的高电平结束acall ys500; 延时500 微秒避开4.5 毫秒的结果码c_a0_0: jnb p3.2,$ ; 等待地址码第一位的高电平信号lcall ys861; 高电平开始后用861 微秒的时间尺去判断信号此时的电平状态jb p3.2,exit1; 如果为1 就退出c_a1_1: jnb p3.2,$ ; 等待地址码第一位的高电平信号lcall ys861; 高电平开始后用861 微秒的时间尺去判断信号此时的电平状态jnb p3.2,exit1; 如果为0 就退出lcall ys1000; 检测到高电平1 的

23、话,延时1 毫秒等待脉冲高电平结束c_a2_0: jnb p3.2,$ ; 等待地址码第一位的高电平信号lcall ys861; 高电平开始后用861 微秒的时间尺去判断信号此时的电平状态jb p3.2,exit1; 如果为1 就退出c_a3_0: jnb p3.2,$ ; 等待地址码第一位的高电平信号lcall ys861; 高电平开始后用861 微秒的时间尺去判断信号此时的电平状态jb p3.2,exit; 如果为1 就退出lcall ys861; 高电平开始后用861 微秒的时间尺去判断信号此时的电平状态jnb p3.2,exit; 如果为0 就退出lcall ys1000; 检测到高电

24、平1 的话,延时1 毫秒等待脉冲高电平结束c_a5_0: jnb p3.2,$ ; 等待地址码第一位的高电平信号lcall ys861; 高电平开始后用861 微秒的时间尺去判断信号此时的电平状态jb p3.2,exit; 如果为1 就退出c_a6_1: jnb p3.2,$ ; 等待地址码第一位的高电平信号lcall ys861; 高电平开始后用861 微秒的时间尺去判断信号此时的电平状态jnb p3.2,exit; 如果为0 就退出lcall ys1000; 检测到高电平1 的话,延时1 毫秒等待脉冲高电平结束c_a7_1: jnb p3.2,$ ; 等待地址码第一位的高电平信号jnb p

25、3.2,exit; 如果为0 就退出lcall ys1000; 检测到高电平1 的话,延时1 毫秒等待脉冲高电平结束;mov p1,#3 ; test3ajmp nextexit1: ajmp exit ; 中继跳转next: nopmov r1,#1ah ; 设定1ah 为起始ram 区mov r2,#2; 接收从1ah 到1bh 的2 个内存,用于存放操作码和操作反码pp: mov r3,#4; 每组数据为4 位mov c,p3.2; 将p3.2 引脚此时的电平状态0 或1 存入c 中jnc uuu; 如果为0 就跳转到uuulcall ys1000; 检测到高电平1 的话,延时1 毫秒等

26、待脉冲高电平结束uuu:rrc a; 将c 中的值0 或1 移入a 中的最低位djnz r3,jjjj;swap a; 接收满4 位进行处理mov r1,a; 将a 中的数暂时存放在r1 数值的内存中inc r1; 对r1 中的值加1,换下一个ramdjnz r2,pp ; 接收完4 位数据码和4 位数据反码,存放在1ah/1bh 中;mov p1,#4 ; test4,ok!mov a,1ahcpl a; 对1ah 取反后和1bh 比较anl a,#0fh; 屏蔽高4 位;mov b,1bh; testcjne a,1bh,exit;如果不等表示接收数据发生错误,放弃;mov p1,#5 ;

27、 test5mov a,1ah;movc a,a+dptr ;查表lcall speak; 蜂鸣器响0.1ms,表示解码成功!mov p0,a; 将按键的段码通过p0 口的1 个led 数码管显示出来!ajmp okexit: mov p0,#79h ;显示解码出错ee;mov p1,r6 ;testok: setb ea ; 允许中断reti ; 退出解码子程序;=ys861: mov r4,#20 ; 延时子程序1,精确延时861 微秒d1: mov r5,#20 ; 1usdjnz r5,$ ; 2usdjnz r4,d1 ; (2us*20+1+2)*20+1=861usretys47

28、30: mov r4,#10 ; 延时子程序2,精确延时4730 微秒d2: mov r5,#235; (2us*235+1+2)*10+1=4731djnz r5,$djnz r4,d2retys1000: mov r4,#2; 延时程序3,精确延时1000 微秒d3: mov r5,#248djnz r5,$djnz r4,d3retys500: mov r5,#248; 延时子程序4,精确延时500 微秒djnz r5,$retys100ms:mov r4,#200; 延时程序5,精确延时100m 秒d5: mov r5,#248djnz r5,$djnz r4,d5ret;-speak

29、: mov r6,#1loop1: mov r7,#200; 发声100ms * 1loop2: mov th0,#0feh;mov tl0,#00ch; 500us 定时clr tf0;jnb tf0,$cpl p2.7;djnz r7,loop2djnz r6,loop1ret;-tab: db 03fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00h; 0 1 2 3 4 5 6 7 8 9 灭end 结 论利用单片机来实现红外通信技术,结合通信原理中的数字信号编解码技术,研制出了一套简单的红外通信遥控器。通过对系统模块的测试与调试,已基本上实现了红外通信的功能。然而,在一个有限的时间内,我已经把握了红外通信系统设计开发的基本思路和方法。已经完成了红外通信系统遥控器从电路原理图到电路板图的设计,掌握了基于评估板的基本功能程序的开发和调试方法与红外发射

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论