返回主页 单片机教程XL2000开发板 单片机学习 自制编程器 单片机资料 软件下载 电子技术产品介绍如何购买 进入论坛

 单片机教程 栏目导航   第一页..单片机入门教程    第二页..单片机c语言   第三页..红外遥控和步进电机    第四页..单片机问答

2.系统主要程序的设计---51系列单片机设计实例教程

(1)初始化程序

初始化程序内容包括P0、P1、P3口置位,P2口清零,清08H—6EH共103个工作寄存器,设置堆栈基址(70H),设置计数器计数模式、控制字,开外中断允许等。

(2)遥控码读入处理程序

遥控码读入处理程序可以完成遥控码起始位的识别、脉宽计数功能,完成遥控码编码位的宽度计数功能,完成结束位的识别功能,其流程图如图10.2所示。本程序模块在编程设计中非常重要,通过大量的不同种类的遥控码波形实验测试分析,遥控码的帧间歇位宽度均在10ms以上,起始位码宽度在100us—20ms之间,编码位在100us—5ms之间。

为确保所有遥控器学习的成功,采用以下设计方法:

寻找起始位方法:用16位DPTR计数器对高电平进行宽度计数,计数采样周期为21us;当高电平结束时,如高8位计数器为非零,则说明高电平宽度超过5.355ms(255*21us),接下来的低电平码就是起始位,否则重新开始。

读起始位方法:采用16位DPTR对低电平进行宽度计数(最大可读宽度为1.376s),当高电平跳变时结束计数,并将DPTR的高8位、低8位分别存入R4、Rs寄存器。

读遥控编码的方法:采用DPTR低8位计数器对码(高电平或低电平)进行宽度计数,电平跳变时结束计数,并将值存入规定的地址;在高电平码计数时,如DPTR高8位计数器为非零(宽度大于5.355ms),则判定为结束帧间隔位,在相应存储单元写入数据#00H作为结束标志。

        图10.2 遥控码读入处理程序流程图

(3)遥控码发送处理程序

遥控码发送处理程序利用计数器计数中断功能,实现40KHz载波的发送,利用接收时接收的低电平位时间,控制载波的发送时间。

(4)主程序

主程序在上电初始化后进行端口按键扫描,当确认有键按下时,将编码发出去,其流程图如图10.3所示。

                   图10.3 主程序流程图

(5)延时程序

延时程序主要用于读键时消抖。

12个经典单片机程序设计实例:

闪烁LED小灯主程序图

数码管时钟电路的主程序

单键学习型遥控器的设计

15路电器遥控器的设计

自行车里程/速度计的设计

自动往返行驶小汽车的设计

遥控小汽车的设计

数码管时钟电路的设计

8*8点阵LED字符显示器的设计

8路输入模拟信号数值显示电路的设计

8路输入模拟信号数值显示电路程序

单键学习型遥控器的程序

如果对本文有疑问,请到论坛提问 编辑:51单片机学习网 @ 2009-10-20校对 中国开发板最佳品牌  版权:部分由编辑摘引,权利属原著作人