射出的红外信号的发射频率即为该值,从而可断定出遥控操作,然后由接收遥控器CPU将其转化为控制操作,对外电路实施控制功能[27]。
P3.2口与地之间的开关SW为控制方式选择开关,当开关闭合,即P3.2=0,单片机输出为上锁控制方式,此状态下遥控器不能对控制电路实施控制功能;当开关断开,即P3.2=1,为单路控制方式,此状态下遥控器能对外电路实施控制功能。当外部中断1响应,自动检测该位的电平,若为0自动跳出,重新等待红外脉冲,在检测该位电平,如此循环,不对外电路发控制命令;若为1则继续执行下面的程序[28]。
开始 调初始化过程 接收到第一个 红外脉冲,
INT1 被触发 SW=1 28
Y
N
Y
图4.3 遥控接收主程序流程图 4.2.2 初始化程序
在初始化程序中,首先将P1口和P3口初始化,初值均为0FFH。外部中断1触发方式设置为电平触发方式,即将IT1位清零。在就是设置T0和T1的工作方式,由于T0为计数方式、T1为定时方式,故将将方式控制寄存器TMOD赋值为15H。为了便于编写和理解程序,将各种不同状态对应的红外脉冲数分别赋给X0到X7。
由于在整个过程中要多次用到计数器0的计数值,所以应将该值予以保护,我们在这种情况下,通常的做法就是将该值放入堆栈,每次要使用时,在从堆
29
栈里面调出。
堆栈是微机的一种重要的存储器,它的一个重要特点是后进先出的方式工作,用于暂存信息的存储单元。他通常应用于在调用子程序前、响应中断前保护现场,将断点的有关信息送入堆栈,待子程序和中断服务程序执行完毕,再将断点信息弹出,恢复现场。
最后就是开所有中断,等待INT1引脚被触发,进入中断服务子程序。 4.2.3 计数值比较程序
将计时器计数值与欲置的计数值比较是定时器1中断服务程序的一部分。首先将两数直接比较,看是否相等,若相等,则直接返回;若不相等,则比较它们的大小,然后将较大数减去较小数,看差值是否在5以内。若在5以内,则可判定红外发射器发射的红外光的发射频率为该欲置数;若在5以外,则将该计数值与下一个欲置数比较,知道找到一个数与它的差值在5以内,如果找不到该值,则该操作无效。 4.2.4 定时器1中断服务程序
在遥控接收程序中,主要就是定时器1中断服务程序,它包括数值扫描与比较程序,以及对控制电路实施控制操作程序。其流程图如下:
开始
T1定时
时间到
关计数器T0保存该计数值 30
计数值与X1比较差值在5以内 图4.4 定时器1中断服务子程序流程图
5 总结与展望
经过两个多月的思考与查阅,终于完成了这篇毕业论文。通过多方面的审查,可以认为在硬件与软件的设计上是没有问题的,由于实验室条件的限制,不能亲自做实验仿真,不过经过我理论上的分析,应该是可以达成我的目标的。
但是由于时间的仓促,本系统还存在很多的不足,虽然本系统有8路遥控开关控制,但是在实际遥控控制系统中,一般要求的控制操作不止8路,这就
31
要求系统进行功能的扩展,由于单片机引脚的限制,如果要扩展功能,就必须应用组合键来操作,不过也可以应用多片单片机来实现,但如果这样设计必将使遥控器的体积增大。而现代电器正朝小型化发展,所以一般不采用这种方法。而是在改变电路硬件结构的基础上重新编程,这样整个设计过程就变的相对复杂,由于时间和水平的限制,在此不考虑这种情况。
另外一点不足就是精度的问题,由于红外管的灵敏度问题啊,以及系统在布线焊接上,器件与器件之间的相互干扰,多少存在一定的影响,所以这种遥控操作准确性还存在不足。
最后一点就是单片机电源的稳定性,复位电路过于简单,使得系统的抗干扰能力不强,使系统不能稳定的运行。
以上三点不足之处是我能想到的,系统肯定还存在其他方面的不足,还望老师能够赐教,指正出不足来。
计算机的发展可以说是日新月异,它给我们的生活、工作带来了翻天覆地的变化,现代生产生活计算机无处不在。随着近代单片机的发展,人民的生活工作环境更是向着智能化、自动化方向发展,单片机主要的特点就是功能强大并且成本相当的低,所以很多领域都应用了单片机。我想,随着我们的努力,单片机应用技术会越来越成熟,它的功能会越来越强大。
致 谢
经过两个多月来的艰苦努力,我的毕业论文终于取得了阶段性的进展,虽然我们未能最后将此系统做为产品,但我们自觉已在这两个多月之内尽了自己的最大的努力,去钻研这个系统,从用PROTEL布线布板到收集大量的有关本系统的文献资料再到周期非常长的软件调试,我们接触了真正设计一个电子产品的全部过程,学到了很多实实在在的学问。
经历不知从何入手的无助,不知程序为什么出错的苦恼,初现光芒的窃喜还有最后攻破难关的欢呼。现在回头想想,真的是很有意义
32