1、2.1 总体设计框图按照系统设计的功能的要求,初步确定设计系统主要由发射模块与接收模块两部分组成。发送模块先由键盘操作键值,以二进制信号的形式,传送给单片机,然后单片机将待发送的二进制信号编码调制为一系列的脉冲串信号,通过红外发射管发射红外信号。红外接收模块普遍采用价格便宜,性能可靠的一体化红外接收头(如HS0038,它接收红外信号频率为 38KHz,周期约为 26us)接收红外信号,它同时对信号进行放大、检波、整形,得到 TTL 电平的编码信号,再传送给单片机,经单片机解码并由数码管显示接收到的数据。系统的构成框图如图.操作键盘单片机 红外发射电 路红外接收头单片机数码管图.1 红外收发器系
2、统的构成框图2.2 二进制的编码本设计系统采用不同的脉宽宽度来实现二进制信号的编码,可由发送单片机来完成。用图 2(a)表示二进制信号中的高电平1 ,其特征是脉冲中低电平与高电平的宽度均等于 026ms,相当于 lO个 26 的宽度;用图 2(b)表示二进制信号中的低电平0 ,其特征是脉冲中高电平的宽度等于 026ms,而低电平的宽度是高电平的二倍,等于 052ms,相当于 20 个 26 的宽度。上述 lO 个和 20 个脉冲宽度还可适当调整,以适应不同数据传输速度的需要。2.3 二进制的调制二进制信号的调制仍由发送单片机来完成,它把编码后的二进制信号调制成频率为 38KHz 的间断脉冲串,
3、相当于用二进制信号的编码乘以频率为 38KHz 的脉冲信号得到的间断脉冲串,即是调制后输入数据 编码调制 信号发射 接收解调 解码 显示 用于红外发射二极管发送的信号。如图 3 所示,A 是二进制信号的编码波形,B 是频率为 38KHz(周期为 26us )的连续脉冲串,c 是经调制后的间断脉冲串(相当于 C=AB),用于红外发射二极管发送的波形。图 3 中,待发送的二进制数据为 101。2.4 二进制的解调二进制信号的解调由一体化红外接收头 HS0038 来完成,它把收到的红外信号(图 4 中波形 D,也是图 3 中波形 C)经内部处理并解调复原,输出图 4 中波形 E(正好是对图 3 中波
4、形 A 的取反),HS0038的解调可理解为:在输入有脉冲串时,输出端输出低电平,否则输出高电平。2.5 二进制的解码二进制信号的解码由接收单片机来完成,它把红外接收头送来的二进制编码波形通过解码,还原出发送端发送的数据。如图 4,把波形 E 解码还原成数据信息 101。2.6 基于字节传输的红外收发数据格式在发送字节的开始先通过单片机发送 20 个脉冲宽度(每个脉冲周期 26us)的高电平作为传输开始,接着发送 8 位数据(字节高位在前,低位在后),最后发送 1O 个脉冲宽度的低电平作为传输结束,如图 6 所示。第 3 章 硬件设计3.1.2 键盘电路键盘采用列扫描。列扫描的原理是:使第一行
5、线为低电平,如果这条列线上没有闭合键,则各条线的状态都为高电平,如果行线上有闭合键,则相应的那条列线即变为低电平。于是就可以根据按行线号和列线号求得闭合键的键码。行号分别接到了 P1.0,P1.1,P1.2,列号分别接到了 P1.3,P1.4,P1.5,做成了 3*3 的矩阵式键盘。3.1.3 红外线发射编码AT89C51 的 P1.7 引脚外接元件组成了红外驱动放大发射电路。它主要是由驱动管和红外发射二极管组成的。当 P1.7 脚有指令信号输出时,该信号经驱动管放大后,加至红外发射二极管上,遥控指令则以红外线的形式发射出去。当按下键盘上的不同按键时,通过编码器产生与之相应的特定的二进制脉冲码
6、信号。将此二进制脉冲码信号先调制在 38KHz 的载波上,经过放大后,激发红外发光二极管转发成波长 940nm 的红外线光传输出去。3.2 模块设计3.2.2 红外接收模块设计红外接收器采用一体化红外遥控接收器 SM0038,实验电路如图1 2 3OUT VCC GND图.8SM0038UT 接单片机的 P3.2 口, 若有红外线数字信号则经过红外接收器取出数字信号数据经单片机译码,最后送到显示电路。GND 接地,VCC 接高电平。3.2.3 显示电路的设计显示部分采用普通的共阳数码管显示,使用动态扫描,以便减少硬件电路。考虑到一次扫描 7 位数码管显示时会出现闪烁情况,设计时采用多次调用显示
7、子程序解决这个问题。驱动数码管的芯片采用驱动能力较强的 74HC373,使用单片机的 P0 口作为并行输出,74HC373 是高电平锁存,用 P1.4 口作为 74HC373 时钟控制端口,即置1控制端。由于数码管采用共阳接法,使用 P2.0-P2.1 口作为数码管的位选。74HC373 在得到高电平后,将 8 位数据锁存,并行输出送至数码管各段选控制口。3.2.4 键盘接口的设计键盘只有 4 个,其中 2 个用于单片机上电复位,其中一个用于电源转换电路中,另外一个用于红外发射程序和红外接收程序能下载到不同单片机上的转换开第 4 章 软件设计系统软件可分为发射部分、接收部分和显示三部分。软件可
8、由汇编语言完成。发射和接收部分都采用 AT89C51。4.1 红外收发流程图:NYNY键按下逐行扫描,按 P 口值查 键号按键号转至相应的发射程序装入发射脉冲个数到(R1)发 3ms 脉冲停发 1ms(R1)-1=0?发 1ms 脉冲停发 1ms开始发射初始化扫描键盘延时消抖结束开始图 9.1:发射主程序流程图 图 9.2:发射程序流程图 NYNYNY初始化低电平脉宽2ms?接收并对低电平脉冲计数高电平脉冲宽3ms?按脉冲个数至对应功能程序中断返回中断开始开始是否有中断?调中断子程序按照按键数显示图 10.1:接受主程序流程图 图 10.2:中断子程序流程图4.2 红外收发器程序:4.2.1
9、发射程序主程序和中断程序入口ORG 0000HAJMP STARTORG 0003H RETIORG 000BH RETI ORG 0013H RETI ORG 001BH LJMP INTT1 初始化程序 CLEARMEMIO: CLR ADEC AMOV P0,AMOV P1,AMOV P2,AMOV P3,ACLR P1.7 MOV IE,#00H ; MOV TMOD,#20H ;MOV TH1,#0F5H ; MOV TL1,#0F5HSETB EARET主程序START: LCALL CLEARMEMIO MAIN: LCALL KEYWORK LJMP MAIN中断服务程序INT
10、T1: CPL P1.7 RETI KEYWORK: MOV P1,#0FFH CLR P1.7CLR P1.6 CLR P1.0 ; MOV A,P1ANL A,#38HCJNE A,#38H,KEYCON SETB P1.0 CLR P1.1MOV A,P1ANL A,#38HCJNE A,#38H,KEYCON SETB P1.1 CLR P1.2MOV A,P1ANL A,#38HCJNE A,#38H,KEYCON SETB P1.2 RET KEYCON: LCALL DELAY MOV A,P1 CJNE A,#38H,KEYCHE KEYCHE: MOV A,P1 MOV B,
11、A LOOP: MOV A,P1ANL A,#38H ;松手检测 CJNE A,#38H,LOOP MOV R7,#00H MOV DPTR,#KEYTABCHELOOP: MOV A,R7 MOVC A,A+DPTRXRL A,B JZ KEYOKINC R7CJNE R7,#09H,CHELOOPRETKEYOK: MOV A,R7MOV B,ARL AADD A,BMOV DPTR,#KEYFUNTAB ;散转功能程序首址JMP A+DPTR ;散转至对应功能程序标号KEYFUNTAB: LJMP KEYFUN00 ;跳到键号对应功能程序标号 LJMP KEYFUN01 LJMP KEY
12、FUN02 LJMP KEYFUN03LJMP KEYFUN04LJMP KEYFUN05 LJMP KEYFUN06 LJMP KEYFUN07LJMP KEYFUN08RETKEYTAB: DB 36H,35H,33H,2EH,2DH,2BH,1EH,1DH,1BH,0FFHKEYFUN00: MOV A,#02H LCALL REMOTE RET KEYFUN01: MOV A,#03H LCALL REMOTE RET KEYFUN02: MOV A,#04H LCALL REMOTE ; RET KEYFUN03: MOV A,#05H ; LCALLREMOTE RET KEYFU
13、N04: MOV A,#06H ; LCALL REMOTE RET KEYFUN05: MOV A,#07H LCALL REMOTE RET KEYFUN06: MOV A,#08H LCALLREMOTE RET KEYFUN07: MOV A,#09H ; LCALLREMOTE RET KEYFUN08: MOV A,#0AH RET 编码发射程序REMOTE: MOV R1,A LJMP OUT3OUT: MOV R0,#75H OUT1: SETB ET1 SETB TR1 NOP NOP NOP NOPDJNZ R0,OUT1MOV R0,#32H OUT2: CLR TR1
14、CLR ET1 CLR P1.7 ; 发脉冲NOP NOP NOPNOP NOPNOP NOPNOP NOPDJNZ R0,OUT2 ;时间不到,转OUT2 再循环DJNZ R1,OUT ;发脉冲个数 脉冲未发完,转 OUT 再循环LCALL DL500MSRETOUT3: MOV R0,#0FFH LJMP OUT1DELAY: MOV R2,#0FFHDELAY1: DJNZ R2,DELAY1RET DL10MS: MOV R3,#14HDL10MS1: LCALL DELAYDJNZ R3,DL10MS1RETDL500MS: MOV R4,#32HDL500MS1: LCALL DL10MSDJNZ R4,DL500MS1RETEND接收程序主程序和中断程序入口ORG 0000HAJMP STARTORG 0003H ;外部中断 0 中断入口LJMP INTEX0ORG 000BH RETI ORG 0013H RETI ORG 001BH RETI ORG 0023H RETI ORG 002BH RETI ;初始化程序 CLEAR: CLR ADEC AMOV P0,AMOV P1,AMOV P2,AMOV P3,ACLEARMEM: MOV IE,#00H ;关所有中断 SETB EX0 ;开外中断