51单片机的红外收发Word下载.docx
- 文档编号:16925302
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:22
- 大小:139.08KB
51单片机的红外收发Word下载.docx
《51单片机的红外收发Word下载.docx》由会员分享,可在线阅读,更多相关《51单片机的红外收发Word下载.docx(22页珍藏版)》请在冰豆网上搜索。
图1:
红外发射框图图2:
红外接收框图
三、系统硬件设计
3.1红外发射模块设计
(一)单片机的最小系统
ATMEL公司生产的AT89C51单片机它是硬件电路的核心部分,时钟电路晶振使用11.0592MHZ,复位电路采取按键复位方式。
具体连接见附录1。
1、主要元器件介绍
单片机主控电路的主要元件是AT89C51,其外型如图3:
图3:
AT89C51引脚图
AT89C51是一个低电压,高性能CMOS8位单片机,片内含4KBYTES的可反复擦写的只读程序存储器(PEROM)和128BYTES的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和FLASH存储单元,内置功能强大的微型计算机的AT89C51提供了高性价比的解决方案。
AT89C51是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,AT89C51可以按照常规方法进行编程,也可以在线编程。
其将通用的微处理器和FLASH存储器结合在一起,特别是可反复擦写的FLASH存储器可有效地降低开发成本。
2、管脚说明:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
口管脚备选功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
/ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;
当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
(二)键盘电路
键盘采用列扫描。
列扫描的原理是:
使第一行线为低电平,如果这条列线上没有闭合键,则各条线的状态都为高电平,如果行线上有闭合键,则相应的那条列线即变为低电平。
于是就可以根据按行线号和列线号求得闭合键的键码。
行号分别接到了P1.0,P1.1,P1.2,列号分别接到了P1.3,P1.4,P1.5,做成了3*3的矩阵式键盘。
(三)红外线发射编码
AT89C51的P1.7引脚外接元件组成了红外驱动放大发射电路。
它主要是由驱动管和红外发射二极管组成的。
当P1.7脚有指令信号输出时,该信号经驱动管放大后,加至红外发射二极管上,遥控指令则以红外线的形式发射出去。
当按下键盘上的不同按键时,通过编码器产生与之相应的特定的二进制脉冲码信号。
将此二进制脉冲码信号先调制在38KHz的载波上,经过放大后,激发红外发光二极管转发成波长940nm的红外线光传输出去。
3.2红外接收模块设计
(一)红外接收器设计
红外接收器采用一体化红外遥控接收器SM0038,实验电路如图4:
OUTVCCGND
图4:
SM0038
OUT接单片机的P3.2口,若有红外线数字信号则经过红外接收器取出数字信号数据经单片机译码,最后送到显示电路。
GND接地,VCC接高电平。
(二)显示电路的设计
显示部分采用普通的共阳数码管显示,使用动态扫描,以便减少硬件电路。
考虑到一次扫描7位数码管显示时会出现闪烁情况,设计时采用多次调用显示子程序解决这个问题。
驱动数码管的芯片采用驱动能力较强的74HC373,使用单片机的P0口作为并行输出,74HC373是高电平锁存,用P1.4口作为74HC373时钟控制端口,即置‘1’控制端。
由于数码管采用共阳接法,使用P2.0-P2.1口作为数码管的位选。
74HC373在得到高电平后,将8位数据锁存,并行输出送至数码管各段选控制口。
(三)键盘接口的设计
键盘只有4个,其中2个用于单片机上电复位,其中一个用于电源转换电路中,另外一个用于红外发射程序和红外接收程序能下载到不同单片机上的转换开关。
四、系统软件设计
系统软件可分为发射部分、接收部分和显示三部分。
软件可由汇编语言完成。
发射和接收部分都采用AT89C51。
发射程流程图如图5:
图5.1:
发射主程序流程图图5.2:
发射程序流程图
图5:
发射流程图
接收流程图如图6:
图6.1:
接受主程序流程图图6.2:
中断子程序流程图
图6:
接收流程图
五、调试及性能分析
5.1调试步骤
调试分为硬件调试和软件调试。
硬件调试主要是检测硬件电路是否有短路、断路、虚焊等。
具体步骤及测试结果如下:
(1)检查电源与地线是否全部连接上,用万用表对照电路原理图测试各导线是否完全连接,测试结果所有连接线都已连接好;
(2)检验单片机的晶振是否起振,用示波器观察波形;
测试结果波形都很好;
(3)检查各芯片的功能是否正常,检测按键的导通情况。
测试结果正常。
软件调试主要是程序调试,可以分块进行调试,分别对发射模块和接收模块程序进行调试。
首先都要在实验台上进行调试。
具体步骤如下:
(1)发射模块程序调试,首先将程序输入到电脑中,对逻辑功能和语句进行检查,再用软件进行调试,调试无错误后才可以下载到单片机中。
(2)接收模块程序调试,程序无错误后,下载到单片机中,结合接收模块程序,验证实验功能,当发射部分有键按下时,接收模块中的接收器接收红外线并在数码管中显示出按键数,完成实验要求。
5.2性能分析
首先单片机按键复位后,数码管无显示,指示灯灭。
然后把发射程序和接收程序分别下载到相应的单片机中,当发射部分有键按下时,经过内部编码,然后根据键值设定按键的脉冲个数,再调制成40HZ方波由红外发射管发射出去。
红外接收模块的红外接收器SM0038接收红外线,当红外接收器输出脉冲帧数据时,第一位码的低电平将启动终端程序,实时接收数据帧。
在数据帧接收时,将对第一位码的码宽进行验证,若第一位低电平的脉冲小于2ms,将作为错误码处理,当间隔位的高电平脉冲宽大于3ms时,结束接收。
再经过单片机的译码来确定所按键的脉冲数,并经过解码功能确定相应的功能,最后经过数码管显示出按键数。
红外接收器输出的一帧遥控码波形如图7:
1ms
图7:
红外接收器一帧遥控码波形图
六、心得体会
这次课程设计是对我们学习微机原理及单片机课程的检验及实际应用能力的一次提高。
我们所设计的是红外收发器。
所能实现的是红外的发射和接收,发射部分通过键盘输入数字通过AT89C51编码并用红外二极管发射出去。
接收部分通过另外一块AT89C51通过中断方式接收红外信号并解码,最后从数码管显示所按下的键号。
原理图的设计时我们使用了Altium6.0这个强大的绘图工具,由于一些实际的器件在器件库中无法找到,我们只有自己制作,在这个过程中我们学到了很多的知识和方法。
在制作PCB印刷电路板的时候,很多器件的封装与实际尺寸存在很大的差别,为了获得准确的封装,我们实际测量了所给器件的大小与规格,自己制作与之匹配的封装库,这让我们明白实践是出真知的唯一途径,只有亲自动手,实际才能测试才能获得最可靠的设计数据。
当然我们也出现了严重的失误,由于对电源与地的距离估计不足,导致两者过近,出现了短接的危险。
因此我们不得不重新处理这个问题,这个教训也告诫了我们,对于任何小的细节都不能掉以轻心,小的疏忽也会造成大的损失。
对于电路图和电路板都应当采取科学谨慎的态度,这是保证是的基本实验结果产生的前提,在正式焊接前,对电路板的核查测试应当细心备至,反复检测才不会导致最终的失败。
程序的编写过程也给了我们很大的收获。
在编写程序之前,我们查阅了大量的相关资料,力求做到规范清晰。
在把握了整体的思路后,我们先从程序流程图着手,将整个程序分成若干模块,分开编写,一边发现问题一边解决问题,并在实验板上检验程序测试情况,根据现象不断修改。
在这个过程中我们体会到编程的技巧,设置子程序的合理性,同时对单片机最小系统的设计有了整体的理解和深刻的体会,使我们的思维的锻炼与能力培养有了很大的提高和长足的进步。
本次课程设计虽然时间很短,但收获却很大。
首先我们对单片机最小系统的设计有了整体的把握,对程序编写的合理与规范性有了深刻的理解,建立起程序设计的一般思路,以及Altium6.0的使用方法,其强大的功能给我们提供了很大的帮助,通过原理图的设计过程,使我们认识到了这个软件的重要性,我们会以此为契机,在日后的学习中会继续使用它,使其发挥更大的功能。
经过三个星期的课程设计,我们得到了充分的锻炼,不仅对单片机的学习有了深刻的理解,同时也增强了我们的毅力和处理突发问题的能力。
学习是要付出一定的艰辛与努力的,做事情一定要有不怕困难的吃苦精神,唯有坚持不懈,发扬团队协作才能够克服困难,取得最后的胜利。
相信本次课程设计对我们以后的学习将会有很大的影响,我们一定会积极地总结经验与教训,改进不足,争取在日后做得更好。
当然要感谢老师和同学们的帮助,在我们束手无策,陷入困境的时候给予热情的帮助,使我们顺利渡过难关。
课程设计是一次很好的实践动手机会,通过实践,我们的知识得到了应用,真正实现了知识的学以致用,理论联系实际,我们会更加注重实践能力的锻炼,注重动手能力的培养。
参考文献
[1]彭为、黄科、雷道仲.单片机典型系统设计实例精讲.北京:
电子工业出版社,2006
[2]陈明荧.8051单片机课程设计实训教材.北京:
清华大学出版社,2004
[3]李群芳,黄建.单片机微型计算机与接口技术.北京:
电子工业出版社,2001
[4]楼然苗、李光飞.51系列单片机设计实例.北京:
北京航空航天大学出版社,2003
[5]李光飞、楼然苗.单片机课程设计指导.北京航空航天大学出版社,2007
附录
1程序清单
发射程序
;
主程序和中断程序入口
ORG0000H
AJMPSTART
ORG0003H
RETI
ORG000BH
RETI
ORG0013H
ORG001BH;
定时器T1中断入口地址
LJMPINTT1
初始化程序
CLEARMEMIO:
CLRA
DECA
MOVP0,A
MOVP1,A
MOVP2,A
MOVP3,A
CLRP1.7
MOVIE,#00H;
关所有中断
MOVTMOD,#20H;
方式2
MOVTH1,#0F5H;
定时初值
MOVTL1,#0F5H
SETBEA
RET
主程序
START:
LCALLCLEARMEMIO
MAIN:
LCALLKEYWORK
LJMPMAIN
中断服务程序
INTT1:
CPLP1.7;
38.5KHZ红外遥控信号
KEYWORK:
MOVP1,#0FFH;
置P1口为输入状态
CLRP1.7
CLRP1.6
CLRP1.0;
扫描第1行
MOVA,P1
ANLA,#38H
CJNEA,#38H,KEYCON
SETBP1.0;
扫描第2行
CLRP1.1
SETBP1.1;
扫描第3行
CLRP1.2
SETBP1.2;
结束扫描
RET
KEYCON:
LCALLDELAY;
延时去抖动
MOVA,P1;
读入P1口值
ANLA,#38H
CJNEA,#38H,KEYCHE;
确有键按下
KEYOUT:
KEYCHE:
MOVA,P1
MOVB,A
LOOP:
ANLA,#38H;
低3位为0
CJNEA,#38H,LOOP;
列选全为1(键按着)
MOVR7,#00H;
放键,查表次数为0
MOVDPTR,#KEYTAB
CHELOOP:
MOVA,R7
MOVCA,@A+DPTR
XRLA,B;
查表值与P1口值比较
JZKEYOK
INCR7
CJNER7,#09H,CHELOOP
KEYOK:
MOVA,R7
MOVB,A
RLA
ADDA,B
MOVDPTR,#KEYFUNTAB;
散转功能程序首址
JMP@A+DPTR;
散转至对应功能程序标号
KEYFUNTAB:
LJMPKEYFUN00;
跳到键号对应功能程序标号
LJMPKEYFUN01
LJMPKEYFUN02
LJMPKEYFUN03
LJMPKEYFUN04
LJMPKEYFUN05
LJMPKEYFUN06
LJMPKEYFUN07
LJMPKEYFUN08
KEYTAB:
DB36H,35H,33H,2EH,2DH,2BH,1EH,1DH,1BH,0FFH
KEYFUN00:
MOVA,#02H;
发送2个脉冲
LCALLREMOTE;
转发送程序
KEYFUN01:
MOVA,#03H;
发送3个脉冲
LCALLREMOTE;
转发送程序
KEYFUN02:
MOVA,#04H;
发送4个脉冲
KEYFUN03:
MOVA,#05H;
发送5个脉冲
KEYFUN04:
MOVA,#06H;
发送6个脉冲
KEYFUN05:
MOVA,#07H;
发送7个脉冲
KEYFUN06:
MOVA,#08H;
发送8个脉冲
KEYFUN07:
MOVA,#09H;
发送9个脉冲
KEYFUN08:
MOVA,#0AH;
发送10个脉冲
编码发射程序
REMOTE:
MOVR1,A;
装入发射脉冲个数
LJMPOUT3
OUT:
MOVR0,#75H;
1MS宽低电平发射数据
OUT1:
SETBET1;
开T1中断
SETBTR1;
开定时器T1
NOP
NOP
DJNZR0,OUT1
MOVR0,#32H;
1MS宽高电平间隙控制数据
OUT2:
CLRTR1;
关定时器T1
CLRET1;
关中断
CLRP1.7;
关脉冲输出
DJNZR0,OUT2;
时间不到,转OUT2再循环
DJNZR1,OUT;
脉冲未发完,转OUT再循环发射
LCALLDL500MS
OUT3:
MOVR0,#0FFH;
装发射3MS宽控制数据
LJMPOUT1
DELAY:
MOVR2,#0FFH
DELAY1:
DJNZR2,DELAY1
10MS延时
DL10MS:
MOVR3,#14H
DL10MS1:
LCALLDELAY
DJNZR3,DL10MS1
500MS延时程序
DL500MS:
MOVR4,#32H
DL500MS1:
LCALLDL10MS
DJNZR4,DL500MS1
END
接受程序
ORG0003H;
外部中断0中断入口
LJMPINTEX0
ORG001BH
ORG0023H
ORG002BH
CLEAR:
CLEARMEM:
关所有中断
SETBEX0;
开外中断
SETBEA;
总中断允许
LCALLCLEAR
SJMP$
遥控接收程序(采用中断接收)
INTEX0:
CLREX0;
关外中断
JNBP3.2,READ1
READOUT:
允许外部中断0中断
READ1:
CLRA
MOVDPH,A;
DPTR清零
MOVDPL,A
HARD1:
JBP3.2,HARD11;
P3.2变高电平转HARD11
INCDPTR;
低电平记数
NOP;
1US延时
AJMPHARD1
HARD11:
MOVA,DPH;
DPTR高8位放入A
JZREADOUT;
为0则脉宽小于(255*8US)2MS退出
CLRA;
否则第一个为宽脉冲(计数器先清0)
CLRP3.6
READ11:
INCA
READ12:
JNBP3.2,READ12;
低电平时等待
MOVR1,#06H
READ13:
JNBP3.2,READ11
延时512US
DJNZR1,READ13;
6次延时
DECA;
超过3MS判为结束,减1
DECA
JZFUN0;
为0执行FUN0(2个脉冲)
JZFUN1;
为0执行FUN1(3个脉冲)
JZFUN2;
为0执行FUN2(4个脉冲)
JZFUN3;
为0执行FUN3(5个脉冲)
JZFUN4;
为0执行FUN4(6个脉冲)
JZFUN5;
为0执行FUN5(7个脉冲)
JZFUN6;
为0执行FUN6(8个脉冲)
JZFUN7;
为0执行FUN7(9个脉
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 51 单片机 红外 收发