第10页 共43页
图3.6 一类遥控连发信号波形
当一个键按下超过36ms,振荡器使芯片激活,将发射一组108ms的编码脉冲,这108ms发射代码由一个引导码(9ms),一个结果码(4.5ms),低8位地址码(9ms~18ms),高8位地址码(9ms~18ms),8位数据码(9ms~18ms)和这8位数据的反码(9ms~18ms)组成。如果键按下超过108ms仍未松开,接下来发射的代码(连发码)将仅由起始码(9ms)和结束码(2.25ms)组成。 3.2.3红外接收电路
一体化的红外接收装置将遥控信号的接收、放大、检波、整形集于一身,并且输出可以让单片机识别的TTL 信号,这样大大简化了接收电路的复杂程度和电路的设计工作,方便使用。在本系统中我们采用红外一体化接收头HS0038,外观图如图3.7 所示。HS0038 黑色环氧树脂封装,不受日光、荧光灯等光源干扰,内附磁屏蔽,功耗低,灵敏度高。在用小功率发射管发射信号情况下,其接收距离可达35m。它能与TTL、COMS 电路兼容。HS0038 为直立侧面收光型。它接收红外信号频率为38 kHz,周期约26 μs,同时能对信号进行放大、检波、整形,得到TTL 电平的编码信号。三个管脚分别是地、+5 V 电源、解调信号输出端。
图3.7 红外一体化接收头hs0038外观图
当无遥控信号输入时,HS0038输出端保持高电平,有信号时输出为高低电平脉冲,故接收时一个码由一个低电平后跟一个高电平构成。本红外遥控接收电路如图3.8所示。将其输出端接入单片机外部中断0的INT0脚。
第11页 共43页
图3.8 红外接收电路
3.2.4 存储电路
遥控器所能存储代码的数量也是衡量一个智能学习型遥控器性能好坏的重要指标。遥控器在学习完某个遥控器的代码后得把该代码存储起来, 由于单片机内部的数据存储器RAM所能存储的数据有限而且不能掉电保护。所以就需要合适大小的外存储器来存储所学习到的代码。这里采用常用的存储芯片AT24C02。AT24C02是由ATMEL公司提供的,I2C总线串行EEPROM,其容量为1KB,工作电压在1.8V~5.5V之间,生产工艺是CMOS工艺,具有工作电压宽(2.5~5.5V)、擦写次数多(大于10000次)、写入速度快(小于10ms)、抗干扰能力强、数据不易丢失、 体积小等特点。其引脚图和时序图分别如图3.9、3.10所示。
图3.9 AT24C02引脚图
图3.10 AT24C02时序图
第12页 共43页
引脚功能介绍如下:
A0(引脚1):器件地址的A0位。 A1(引脚2):器件地址的A1位。 A2(引脚3):器件地址的A2位。 GND(引脚4):地线。 SDA(引脚5):数据总线引脚。 SCL(引脚6):时钟总线引脚。 TEST(引脚7):测试引脚, Vcc(引脚8):电源线引脚。
AT24CXX系列的器件地址是A6 A5 A4 A3 A2 A1 A0 R/W,其中最低位R/W除外,其余都是地址位,共有7位,其中低3位A2 A1 A0由引脚连接决定,高4位A6 A5 A4 A3已经由厂家给出为1010。R/W决定数据传输的方向,当R/W=1时,是从 存储器读出数据,当R/W=0时,是向存储器写入数据。AT24C02内有256字节存储单元,片内地址使用一字节(8位)地址寻址就可以满足要求。地址范围是00H~FFH。 存储电路原理图如下:
图3.11 存储电路
3.2.5 单片机控制电路
(1)所选单片机简介
本设计中选用的宏晶科技的STC89C52RC型单片机是一种低功耗、高性能、采用CMOS工艺的8位微处理器,与工业标准型80C51单片机的指令系统和引脚完全兼容。片内8K Flash存储器可在线重新编程,或使用通用的非易失性存储器编程器。由于一般的距离
第13页 共43页
测量中,距离的变化速度并不太快,而且单片机的机器周期可达μs级,则其计时精度为μs级,完全可以满足系统测量的要求,并且成本较低,所以本设计中选用STC89C52RC型号的单片机。
STC89C52RC单片机,基于STC89C51内核,是新一代增强型单片机,指令代码完全兼容传统STC89C51,速度快8~12倍,带ADC,4路PWM,双串口,有全球唯一ID号,加密性好,抗干扰强。
(2)单片机引脚功能
STC89C52RC采用40Pin封装的双列直插DIP结构。40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。STC89C52RC的引脚图如图3.12所示,其引脚功能如下:
图3.12 STC89C52RC引脚图
1. Pin20:接地脚。
2. Pin40:正电源脚,工作时,接+5V电源。 3. Pin19:时钟XTAL1脚,片内振荡电路的输入端。 4. Pin18:时钟XTAL2脚,片内振荡电路的输出端。
5. STC89C52RC的时钟有两种方式,一种是片内时钟振荡方式,但需在18和19脚
第14页 共43页
外接石英晶体(2-12MHz)和振荡电容,振荡电容的值一般取10p-30p。另外一种是外部时钟方式,即将XTAL1接地,外部时钟信号从XTAL2脚输入。
6. 输入输出(I/O)引脚:
Pin39-Pin32为P0.0-P0.7输入输出脚。 Pin1-Pin8为P1.0-P1.7输入输出脚。 Pin21-Pin28为P2.0-P2.7输入输出脚。
7. Pin9:RESET/Vpd复位信号复用脚,当STC89C52RC通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。STC89C52RC的复位方式可以是自动复位,也可以是手动复位。此外,RESET/Vpd还是一复用脚,Vcc掉电期间,此脚可接上备用电源,以保证单片机内部RAM的数据不丢失。
8. Pin30:ALE当访问外部程序存储器时,ALE(地址锁存)的输出用于锁存地址的低位字节。而访问内部程序存储器时,ALE端将有一个1/6时钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,也可以当作一个时钟向外输出。如果单片机是EPROM,在编程其间,将用于输入编程脉冲。
9. Pin29:当访问外部程序存储器时,此脚输出负脉冲选通信号,PC的16位地址数据将出现在P0和P2口上,外部程序存储器则把指令数据放到P0口上,由CPU读入并执行。
10. Pin31:EA/Vpp程序存储器的内外部选通线,STC89C52RC和8751单片机,内置有4kB的程序存储器,当EA为高电平并且程序地址小于4kB时,读取内部程序存储器指令数据,而超过4kB地址则读取外部指令数据。如EA为低电平,则不管地址大小,一律读取外部程序存储器指令。
4 系统软件设计
4.1 系统编程语言和编程工具
在单片机的开发应用系统中,汇编语言作为传统的编程语言,己经不能满足实际需要,高级语言被逐渐引入,C语言就是其中之一。C语言是一种通用的计算机程序设计语言,它既有高级语言的各种特征,又能直接操作系统硬件。对于大多数单片机,使用C语言与使用汇编语言相比具有如下优点:
(1)不需要了解处理器的指令集,也不必了解存储器结构。 (2)寄存器分配和寻址方式由编译器进行管理。