微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 单片机定时器-遥控器解码程序分析

单片机定时器-遥控器解码程序分析

时间:08-31 来源:互联网 点击:

一、前言

利用STC公司1T内核的STC12C08S2 单片机对一款遥控器进行解码,将解码的数据转换为以us为单位的时间通过单片机串口通讯发送到STC下载软件自带的串口调试工具接收框进行显示。

本文主要对测试结果进行展示与分析并对单片机控制程序进行分析,以此起到抛砖引玉的作用,希望读者理解程序以后可以利用单片机对身边的任意一款遥控器进行解码并将遥控器与单片机的实际应用联系在一起。

二、测试结果展示

1、实验材料介绍



实验材料硬件部分 软件部分 为KEIL V2 编程软件 和 单片机程序下载软件STC_ISP_V479

为了高效率学习程序编写,本实验平台采用单片机教程网的51hei-5单片机开发板。控制芯片为 STC12C08S2,红外通讯传感器为sm0038与单片机的P3.2引脚连接。大家用一根杜邦线将j7的3脚 连到顶部的p3.2口的排针处即可。程序下载器采用usb转串口线。遥控器采用如上图(对于NEC标准的遥控器都适用,比如电视遥控器等)。

2、遥控器按下数字1,PC所接收的数据码

显示的数据:数字1: 02456 00206 00205 00202 00204 00207 00202 00206 00206 00407 00408 00412 00407 00408 00412 00407 00408 00206 00206 00407 00408 00206 00205 00203 00204 00409 00411 00202 00204 00410 00410 00407 00410

3、遥控器按下数字2,PC所接收的数据码

数字2:2456 00206 00200 00206 00206 00202 00205 00206 00202 00412 00407 00410 00410 00407 00408 00412 00407 00206 00205 00202 00410 00410 00203 00204 00205 00408 00409 00410 00205 00202 00408 00412 00407

4、遥控器按下数字3,PC所接收的数据码

数字3:02457 00206 00198 00208 00206 00198 00209 00206 00200 00413 00407 00406 00414 00407 00405 00415 00408 00206 00410 00405 00417 00407 00206 00407 00206 00408 00206 00200 00208 00208 00407 00206 00408

三、测试数据分析

下载程序在硬件电路正常的情况下,遥控器按下数字1,PC机可以接收到以下数据数字1: 02456 00206 00205 00202 00204 00207 00202 00206 00206 00407 00408 00412 00407 00408 00412 00407 00408 00206 00206 00407 00408 00206 00205 00203 00204 00409 00411 00202 00204 00410 00410 00407 00410

那这些数据代表什么意思呢?

单片机向PC机每发送一次都是5位数据,这5位数据是单片机内部定时器以5us循环一次对temp变量从0开始自加所得到的数据。也就是说这些数据可以理解为一个时间值,这个时间值就是遥控器每个数据码高电平和低电平所持续时间的值。

从数据可以看出每个按键按下去PC机都接收到33个数据,这33个数据仔细观察可以发现都有以下规律:

第一个数据 在2456和2460之间。

第二个数据到第九个数据 在200和210之间。

第十个数据到第十八个数据 在400和410之间。

第十九个数据到第三十二个数据在200和210之间和在400和410之间都有。

继续分析:如果将在2456和2460之间的数据定义为字符‘h’,将在200和210之间的数据定义为字符‘0’,将在400和410之间的数据定义为字符‘1’。那么以上33个数据可以表达为:h 1111 1111 0000 0000 0011 0000 1100 1111 那么这个数据就是按键1按下的用0和1来表示的编码。

相同道理可以推测出数字2和数字3用0和1来表示的编码如下:

数字 2 : h 0000 0000 1111 1111 0001 1000 1110 0111

数字 3 : h 0000 0000 1111 1111 0111 1010 1000 0101

好了,到了这里我们可以下结论了,因为已经有了3个对比。

我们的结论是:如上图的遥控器编码原理为每个按键都有33个编码其中第一个编码都相同时间比较长,接着16编码分别可以用我们所定义的0和1表示即前八个为0后八个为1。其实这个我们可以理解为遥控器的地址编码,就好比电话号码的区号一样的,浙江衢州的区号是0570而武汉的区号是027,在本区域里的所有的座机号码都是以这个开头固定不变的。

接着再仔细观察可以发现原来后面16个数据码也是有规律的,那就是前8个和后8个是相互取反的的编码。

好了,更多的思维留个大家,下面我们要分享程序了,希望大家下载程序以后可以得出我以上的结论,如果复制到keil上有乱码,大家可从这里下载源程序:http://www.51hei.com/f/hwykjm1.rar 哈哈,这也是学习单片机的趣味所在哦。因为我将分享的程序涵盖了单片机外部中断、内部定时器、串口通讯的三个结构的应用。

四、程序分享

/*

测试方案_07

程序设计:胡琴

电话:15886684881

设计时间:2010-12-1

测试方法:用定时器计算33位红外信号持续时间

测试原理:在测试方案_01的结论上,记录一组红外信

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top