南通职业大学电子工程系毕业论文
SM0038是红外线传感器,它对外只有3个引脚:GND、VS和1个脉冲信号输出引脚OUT,只能接收38KHZ的红外线信号,外形引脚如图3.2所示。
3.2.2 SM0038与单片机接口电路
图3.3 SM0038与单片机接口电路
与单片机接口非常方便,如图四所示。VCC接电源+5V并经电容进行滤波,以避免电源干扰; GND接系统的地线(0V);脉冲信号输出接CPU的中断输入引脚(例如8051的13脚INT1)。采取这种连接方法,软件解码既可工作于查询方式,也可工作于中断方式。
3.3 MAX232芯片 3.3.1 MAX232芯片引脚
Max232产品是由德州仪器公司(TI)推出的一款兼容RS232标准的芯片。该器件包含2驱动器、2接收器和一个电压发生器电路提供TIA/EIA-232-F电平。
该器件符合TIA/EIA-232-F标准,每一个接收器将TIA/EIA-232-F电平转换成5-V TTL/CMOS电平。每一个发送器将TTL/CMOS电平转换成TIA/EIA-232-F电平,芯片图如图3.4所示。
5
南通职业大学电子工程系毕业论文
图3.4 MAX232
3.3.2 MAX232芯片功能
为了能使单片机与PC进行通信,必须使其遵循相同的通信协议。由于STC89C52的串行口输入/输出为TTL逻辑电平,高电平为3.8V左右,低电平为0.3V左右,因而这种以TTL电平传送数据的方式的抗干扰性较差。而计算机内部的RS-232C串行口用±12V和-12V电平方式,这种方式中,信号0和信号1的电平差别增大,从而增强了抗干扰性。但是,为了解决这种电平不一致的矛盾,必须采用一个RS-232C电平转换器,文中采用的MAX232自身带有电源电压变换器,可把+5V电压变换成RS-232输出电平所需的±10V电压,因而采用这种方式进行串行通信具有较好的性能和低廉的价格。如果通信距离较远,还可以通过增加MAX485转换器来连接MAX232以满足要求。
3.4 电源电路及其说明
图3.5 电源电路
先通过变压器降压为12V,经过整流桥将交流电压变为直流电压,然后再滤波,通过78M05稳压器稳压,输出+5V的电压提供给总电路用,使其电路正常工作。
6
南通职业大学电子工程系毕业论文
3.5 总原理图及其说明
图3.6 系统电路原理图
先通过SM0038的红外接收头接收38KHZ的红外线信号,然后将信号通过STC89C52单片机的P1.7口送单片机进行处理,单片机再发出接收到的信号给PC机显示该信号的波形,由于STC89C52的串行口输入/输出为TTL逻辑电平,高电平为3.8V左右,低电平为0.3V左右,因而这种以TTL电平传送数据的方式的抗干扰性较差。而计算机内部的RS-232C串行口用±12V和-12V电平方式,所以就需要MAX232电平转换器来将可把+5V电压变换成RS-232输出电平所需的±10V电压,使得PC机与单片机能够正常的通信。
4 软件设计 4.1 红外编码格式
现有的红外遥控包括两种方式:PWM(脉冲宽度调制)和PPM(脉冲位置调制)。 两种形式编码的代表分别为NEC和PHILIPS的RC-5、RC-6以及将来的RC-7。 PWM(脉冲宽度调制):以发射红外载波的占空比代表“0”和“1”。为了节省能量,一般情况下,发射红外载波的时间固定,通过改变不发射载波的时间来改变占空比。例如常用的电视遥控器,使用NEC upd6121,其“0”为载波发射0.56ms,不发射0.56ms;其“1”为载波发射0.56ms,不发射1.68ms;此外,为了解码的方便,还有引导码,upd6121的引导码为载波发射9ms,不发射4.5ms。upd6121总共的编码长度为108ms。
但并不是所有的编码器都是如此,比如TOSHIBA的TC9012,其引导码为载波发射4.5ms,不发射4.5ms,其“0”为载波发射0.52ms,不发射0.52ms,其“1”为载波发射0.52ms,不发射1.04ms。
7
南通职业大学电子工程系毕业论文
PPM(脉冲位置调制):以发射载波的位置表示“0”和“1”。从发射载波到不发射载波为“0”,从不发射载波到发射载波为“1”。其发射载波和不发射载波的时间相同,都为0.68ms,也就是每位的时间是固定的。
通过以上对编码的分析,可以得出以某种固定格式的“0”和“1”去学习红外,是很有可能不成功的。即市面上所宣传的可以学习64位、128位必然是不可靠的。
另外,由于空调的状态远多于电视、音像,并且没有一个标准,所以各厂家都按自己的格式去做一个,造成差异更大。比如:美的的遥控器采用PWM编码,码长120ms左右;新科的遥控器也采用PWM编码,码长500ms左右。如此大的差异,如果按“位”的概念来讲,应该是多少位呢?64位还是128位显然都不可能包含如此长短不一的编码。
4.2 单片机的软件编程 4.2.1下位软件编程思路
我用的是C语言编写的程序,该程序主要由串口初始化子函数、外部中断0中断子函数、单片机内部定时器T0中断子函数、红外信号发送子函数等3大模块组成。等到红外信号下降沿到来时,进入外部中断0中断子函数,打开T0定时器开关TR0,使得T0工作,在主函数中判断外部中断0接线端为1时,进入T0中断子函数,在T0中断子函数中主要是把TH0,TL0所记的数值送单片机处理。
4.2.2 下位机程序 #include
TMOD=0x21;//定时器 TR1=1;
8
//定时器设置 串口设置

