在本实例中,ATmega16单片机将从一体化红外接收器接收到的红外遥控键值在数码管上进行显示。
编程过程中,利用单片机的外部中断0口进行检测,一旦检测到有红外遥控信号出现,则程序进入外部中断处理程序,在处理数据过程中关闭外部中断,直到接收完数据,再将外部中断打开。
本实例主要有数码管显示程序和外部中断处理红外接收程序。数码管显示程序在第6章的例子中已经介绍过,本实例中不再详细说明。
红外遥控的数据接收主要在外部中断函数中进行处理。处理过程为:当有遥控键值发送的时候,红外一体化接收器的脉冲信号输出脚发生一个下降沿的电平变化,外部中断采用下降沿触发的方式接收到外部中断事件,程序进入外部中断处理函数。在这过程中首先关闭外部中断,然后根据一体化接收器脉冲信号输出引脚的高低电平变化时间来判断红外遥控发送的数据,单片机通过运算求出遥控器的键值并在数码管上显示。
●目的:红外接收遥控器信号的解码及数码管显示。
●功能:红外解码。
●时钟频率:内部1MHz。
●编译环境:ICC-AVR6.31。
●使用硬件:数码管、红外发射遥控器(型号TC9012或者万能遥控器)和内部定时器。
●结果:连接红外接收跳帽P16,下载程序后最后一位数码管显示8。
按下遥控器1~9数字键,显示1~9。其他按键未添加,读者可以在当前程序的基础上进行修改,实现所有遥控器键值的实现。
●操作要求:插上P16跳帽。
红外遥控器解码程序流程图如图13-13所示。
图13-13 红外遥控器解码程序流程图
1.头文件部分
2.变量声明(www.xing528.com)
3.定时器1中断服务函数
4.外部中断0函数
5.定时器1初始化
6.红外键值处理
7.红外解码函数处理
8.主函数
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。