单片机定时器遥控器解码程序分析与论证杨荣国唐精明_第1页
单片机定时器遥控器解码程序分析与论证杨荣国唐精明_第2页
单片机定时器遥控器解码程序分析与论证杨荣国唐精明_第3页
单片机定时器遥控器解码程序分析与论证杨荣国唐精明_第4页
单片机定时器遥控器解码程序分析与论证杨荣国唐精明_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单片机定时器-遥控器解码程序分析 武汉三维电子工作室 杨荣国 唐精明 2010年12月6日一、前言利用STC公司1T内核的STC12C08S2单片机对一款遥控器进行解码,将解码的数据转换为以us为单位的时间通过单片机串口通讯发送到STC下载软件自带的串口调试工具接收框进行显示。本文主要对测试结果进行展示与分析并对单片机控制程序进行分析,以此起到抛砖引玉的作用,希望读者理解程序以后可以利用单片机对身边的任意一款遥控器进行解码并将遥控器与单片机的实际应用联系在一起。二、测试结果展示1、实验材料介绍实验材料硬件部分 软件部分 为KEIL V2 编程软件 和 单片机程序下载软件STC_ISP_V479

2、为了高效率学习程序编写,本实验平台采用三维电子SFC51-V3。控制芯片为 STC12C08S2,红外通讯传感器为VS1838 与单片机的P3.2引脚连接。程序下载器采用三维电子程序下载及串口通讯模块 SFCSTC-USB-V1。遥控器采用如上图(对于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

3、00408 00206 00205 00203 00204 00409 00411 00202 00204 00410 00410 00407 004103、遥控器按下数字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 004074、遥

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 00

5、207 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开始自加所得到的数据。也就是说这些数据可以理解为一个时间值,这个时间值就是遥控器每个数据码高电平和低电平所持续时间的值。从数据可以看出每个按键按

6、下去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来表示的编码。相同道理可以

7、推测出数字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,在本区域里的所有的座机号码都是以这

8、个开头固定不变的。接着再仔细观察可以发现原来后面16个数据码也是有规律的,那就是前8个和后8个是相互取反的的编码。好了,更多的思维留个大家希望大家下载程序以后可以得出我以上的结论,哈哈,这也是学习单片机的趣味所在哦。因为我将分享的程序涵盖了单片机外部中断、内部定时器、串口通讯的三个结构的应用。四、红外遥控器编码及解码原理介绍1、遥控器编码原理遥控发射器专用芯片很多,根据编码格式可以分成两大类:NEC码和RC5码,本课程以运用比较广泛,解码比较容易的日本NEC为例说明编码原理(遥控专用IC HT6221编码方式也采用NEC码)。NEC码产生的遥控编码是连续的32位二进制码组,其中前16位为用户识

9、别码,能区别不同的电器在设备,防止不同机种遥控码互相干扰。后16位为8位功能码及其反码。NEC数据帧格式:当一个键按下超过36ms,振荡器使芯片激活,将发射一组108ms的编码脉冲,这108ms发射代码由一个起始码(9ms的高电平),一个结果码(4.5ms低电平),低8位地址码(918ms),高8位地址码(918ms),8位数据码(918ms)和这8位数据码的反码(918ms)组成。其中地址码和数据码有“0”编码和“1”编码组成。在NEC编码格式中“0”,“1”的表示方法(脉宽调制)如下:从上图可以看出遥控发射码“0”由持续0.565ms的高电平和0.56ms的低电平组成,遥控发射码“1”由持

10、续0.565ms的高电平和1.685ms的低电平组成,前导码由9ms的高电平和4.5ms的低电平组成。每个按键按下先发一个前导码,接着持续发32个有“0”和“1”组成的地址码和数据码。高电平代表有红外线,低电平代表无红外线,对于遥控发射码“0”表示红外发光二极管发射红外线0.565ms,停止发射0.56ms。如果遥控器要对外发射01两位数据,红外二极管的工作流程是,先发红外线持续9ms接着停止发射红外线4.5ms,表示发射前导码。接着发红外线持续0.565ms接着停止发射红外线0.56ms,表示发射码“0”。接着发红外线持续0.565ms接着停止发射红外线1.685ms,表示发射码“1”。如下

11、图:为降低功耗提高发射效率,红外二极管发射红外线时并不是一直工作的,而是按38KHZ的脉冲进行调制工作的。也就说说红外线在工作的时候是按38KHZ的频率在闪烁,而不是一直亮。2、遥控器解码原理红外线遥控信号的接收,可以使用一种集红外线接收和放大于一体的VS183B来接收,不需要任何外接元件,就能完成从红外线接收到输出与TTL电平信号的所有工作。VS183B实物图如下: 器件对外只有三个引脚,从左到右分别是OUT GND VCC,工作电压为2.7V5V, VCC接5V电源正极,GND接电源负极,OUT引脚为信号输出引脚,可以输出TLL的高电平和低电平信号。VS183B在空闲时输出高电平信号,在接

12、收到38KHZ红外信号时输出低电平,根据这个特性可得出以下结论。如果遥控器发射01两位数据,VS183B接收到遥控信号以后将输出持续9ms的低电平和4.5ms的高电平表示接收到前导码,接着输出0.565ms的低电平和0.56ms的高电平表示接收到“0”发射码,接着输出0.565ms的低电平和1.685ms的高电平表示接收到“1”发射码。3、单片机解码编程将VS1838B的输出引脚与单片机外部中断0引脚相连,每个被解出来的码都是以低电平开始紧接着是高电平,第二个码也同样以低电平开始紧接着高电平,启动单片机外部中断并设置为脉冲触发方式可以精确的捕获到每个码开始瞬间,这个时候启动定时器中断,等待一个

13、低电平和一个高电平结束并关闭定时中断。通过查看定时中断的次数可以计算出对应编码的执行时间从而推算出相应的编码。五、程序分享1、将每个遥控按键对应的32个码的延时时间发送到串口显示/*测试原理:在测试方案_01的结论上,记录一组红外信号33位中各编码持续时间测试结果:前导码:约 2457,持续时间为 2457 * 0.005 = 12.285ms (NEC标准为13.5) 编码 0:约 206, 持续时间为 206 * 0.005 = 1.03ms (NEC标准为1.125) 编码 1:约 408, 持续时间为 408 * 0.005 = 2.04ms (NEC标准为2.25)*/#includ

14、e <reg52.h>sbit IR = P32;/ 红外信号感应引脚unsigned int time;unsigned int dat33 = 0 ;bit flag = 0;void Send( void ) /将32位数据对应的时间发送到PC上显示char i;for(i = 0;i < 33;i +) TI = 0;SBUF = dati / 10000 + 48;while( !TI );TI = 0;SBUF = dati / 1000 % 10 + 48;while( !TI );TI = 0;SBUF = dati / 100 % 10 + 48;while

15、( !TI );TI = 0;SBUF = dati / 10 % 10 + 48;while( !TI );TI = 0;SBUF = dati % 10 + 48;while( !TI );TI = 0;SBUF = ' 'while( !TI );void Init( void )/定时器、外部中断初始化TMOD = 0x22;/ 定时器0、1方式2SCON = 0x40;/ 串行口方式1,不允许接收 TH1 = TL1 = 0xfd;/ 串行口方式2,Fosc=11.05926,BPS=9600TH0 = TL0 = 0xfb;/ 中断频率 0.005msTR1 = 1

16、;/ 开启与串行口相关的定时器1IT0 = 1;/ 边沿式触发ET0 = 1;/ 开启定时器0中断EX0 = 1;/ 外部中断0中断允许IP = 0x02;/ 定时器0优先级高EA = 1;void main( void ) /主程序Init( );/中断 定时器 初始化while( 1 );/等待遥控信号void Xint0( void ) interrupt 0 /外部中断0复位子程序char i;for(i = 0;i < 33;i +)time = 0;TR0 = 1;while( !IR );/ 前导信号检测while( IR ); TR0 = 0;dati = time;Se

17、nd( );flag = 1;EX0 = 0; void Timer0( void ) interrupt 1 /5us中断一次 变量加1time +;2、将每个遥控按键对应的32个遥控码转换成4个16进制数据发送到串口显示#include<reg52.h> sbit Ir= P32; unsigned char temp = 0,x = 0,ch=0;char DAT14= 0 ;void init( ) /中断初始化IE = 0x83; /启动中断总开关 外部中断0 定时中断0IT0 = 1;/外部中断0下降沿触发SCON = 0x40;/串口工作方式1TMOD = 0x22;

18、/定时器0、1方式2 TH1 = TL1 = 0xfd;/ 定时器1,用于串口通讯TR1 = 1;TH0 = TL0 = 0x47;/ 定时器0,用于延时计算IP = 0x02;/设置定时器0的中断优先级最高void ck_int()unsigned char i;for(i=0;i<4;i+)SBUF = DAT1i;while(TI = 0);TI=0;void main() init(); while(1)if(x = 1)ck_int();x=0;EX0=1;void ins_0() interrupt 0 /整个脉冲时间unsigned char i,j;temp = 0;/ 从 0 开始计数TR0 = 1;while( !Ir ); /前导码是高电平 9MSwhile( Ir ) if(temp >80) break; /前导码是低

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论