杭州电子科技大学本科毕业设计
SEND0:
MOV R4,#69H ;0码低电平
DJNZ R4,$ DJNZ R3,SEND0 AJMP SIG
MOV
;转脉冲发送信号
R3,#02H ;1码低电平
SEND1:
SEND10: MOV R4,#8CH
DJNZ R4,$ DJNZ R3,SEND10
;开T1中断 ;开启定时器T1
SIG: SETB ET1 MOV DJNZ
SETB TR1
R3,$
R3,#08CH ;发脉冲
CLR TR1 ;关定时器T1 CLR ET1 ;关T1中断 CLR P3.5 ;关脉冲输出
RET 具体发送程序见附录 3。
5.4 红外遥控接收程序设计
红外遥控接收程序主要任务是将红外接收头发出的信号还原为二进制编码。因红外接收头输出的信号是对输入信号的求反。因此其接收到的引导码为5ms低电平和3ms的高电平,低电平引发接收端单片机中断。单片机在收到中断信号后对低电平时间进行计数,超过4ms才认定引导码有效。利用延时跳过3ms的高电平,单片机才开始接收数据。
原码‘1’原码‘0’原码‘1’E0.8ms0.8ms低电平高电平图 28 单片机对接收头输出信号的判定
红外接收头输出的信号为一列方波如图28。如何将其还原为二进制中的‘1’和‘0’是软件设计的关键。从编码标准得知信号的‘1’和‘0’信号占空比不同。
- 22 -
杭州电子科技大学本科毕业设计
即接收头对信号反相后码‘1’和‘0’的高电平时间长度不同。由‘0’码和‘1’码的高低电平宽度可设定程序延时0.8ms后对信号的电平取样。若为低电平即为原码的‘1’,高电平为原码‘0’。
由上所述可知,红外遥控系统接收部分的主程序流程图如图29所示。程序首先初始化端口并开中断,随后单片机即对处于工作状态的设备计数,等待中断。引导码识别正确后单片机调用四次读码子程序,分别接收四个八位数据,并对码值进行校验,不符则跳出中断。当接收到结束码‘1’后,单片机开始对控制码进行响应,对相关IO口置位,之后返回LED数码管显示程序。
开始初始化端口及中断LED数码管显示返回N中断 引导码?Y调用读码值子程序N码值判定YN四个八位码接收完毕?Y接收结束码 1YIO口操作N图29 红外遥控接收主程序
- 23 -
杭州电子科技大学本科毕业设计
红外遥控接收部分读码子程序利用码‘1’和‘0’的电平特性对接收头输出的信号进行解码。以八位二进制码为一个循环。在高电平到达后0.8ms对P3.1口电平采样,取反后即为二进制原码,将其逐位保存到累加器中。电平采样后软件延时等待下一个高电平的出现。等八位数据全部读取完毕退出子程序。
进入读码子程序延时0.8msN接收头电平高?Y0->累加器A1->累加器A等待高电平结束等待下一个高电平出现N八位数据是否读完Y退出子程序图 30 红外遥控接收部分读码子程序
中断接收并判断引导码: INTEX0: MOV 35H,A MOV 20H,C
CLR EX0 ;关外中断
JNB P3.1,READ ;P3.1口为低电平转READ 为高电平退出 OUT: SETB EX0 ;开中断(系干扰) MOV A,38H MOV C,20H
RETI ;退出中断
;恢复现场
;采用中断接收 保护现场
- 24 -
杭州电子科技大学本科毕业设计
READ: CLR A ;清A 读取引导码 MOV DPH,A ;清DPTR MOV DPL,A
HEAD: JB P3.1,HEAD01 ;P3.5变高电平转HARD01 INC DPTR ;用DPTR对低电平计数
MOV R1,#04H
DJNZ R1,$
AJMP HEAD ;转HARD循环(循环周期为16微秒) HEAD01: MOV A,DPH ;DPTR高8位放入A JZ OUT
读码子程序: READ01: MOV
- 25 -
;为0(脉宽小于16*255=4毫秒)退出
;3ms空隙
MOV R1,#0AH
CODENUM,#08H ;读取数据码8位 A C R1,#02H R2,#0C8H
;延时0.8ms
;清A
CLR CLR
LJMP READ02 MOV MOV
READ02: READ03:
DJNZ R2,$ DJNZ R1,READ03 MOV CPL RLC JB JNB
C,P3.1 C A P3.1,$
;取码 ;还原码值 ;移位赋值
P3.1,$
DJNZ CODENUM,READ02 RET
具体接收程序见附录 4。
杭州电子科技大学本科毕业设计
6 仿真与制作
设计进行到这里进入到了最后的验证及实施阶段。因本设计是基于单片机的课题,故可采用软件对系统的关键环节进行仿真调试,以证实设计的可靠性,并对原设计的不足之处做出更改。
6.1 系统仿真
系统的软件仿真主要采用Proteus 和Keil两款软件。
Proteus软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。
Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。它是由德国开发的一个51单片机开发软件平台。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。
这里主要采用这两款软件进行来联调,以验证软硬件的协调性。仿真的主要部分放在了红外发射功能,即通过遥控发射电路与遥控发射程序的联合调试验证模块是否能按要求输出波形。
发射模块的硬件电路在Proteus中按电路图完成搭建,并在单片机的中断口T1口接上软件提供的虚拟示波器,以显示其输出波形。发射系统的软件部分在Keil中采用汇编语言编辑。在软件编译无错后可进行软硬件联调。在软硬件协调的情况下,即可从虚拟示波器中观察到单片机输出的待发射波形。
图31为Proteus中的硬件电路。图 32为虚拟示波器波形。
经过仿真并通过观察波形对设计中的软硬件进行修改以达到需要的功能。验证完后即可进行下一步的实际制作中。
- 26 -