NEC编译码器的设计.doc_第1页
NEC编译码器的设计.doc_第2页
NEC编译码器的设计.doc_第3页
NEC编译码器的设计.doc_第4页
NEC编译码器的设计.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

NEC编译码器的设计一、摘要本电路主要运用STC89C52RC单片机、UPD6121G编码集成芯片、VS1838B红外接收集成芯片、共阳极数码管、发光二极管灯等元件。在发送端用程序已固化好的UPD6121G编码集成芯片来实现NEC的编码并采用38khz红外线发送,在接收端通过STC89C52RC单片机与红外接收集成芯片来实现对NEC的解码过程。通过不同指令来实现数码管和发光二极管亮与灭的变化。四、NEC编译码的基本原理及系统功能模块结构图1、NEC编译码的基本原理:NEC编码是采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”。 上述“0”和“1”组成的32位二进制码经38kHz的载频进行二次调制以提高发射效率,达到降低电源功耗的目的。然后再通过红外发射二极管产生红外线向空间发射。(1)、发送器及NEC编码UPD6121G产生的遥控编码是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的电器设备,防止不同机种遥控码互相干扰。该芯片的用户识别码固定为十六进制01H;后16位为8位操作码(功能码)及其反码。UPD6121G最多额128种不同组合的编码。遥控器在按键按下后,周期性地发出同一种32位二进制码,周期约为108ms。一组码本身的持续时间随它包含的二进制“0”和“1”的个数不同而不同,大约在4563ms之间。代码格式(以接收代码为准,接收代码与发射代码反向)位定义单发代码格式:根据码的格式,应该等待9ms的起始码和4.5ms的结果 码完成后才能读码。(2)、接收器及NEC解码一体化红外线接收器是一种集红外线接收和放大于一体,不需要任何外接 元件,将其和STC89C52RC单片机的P3.2端口的外部中断0相连将接收到的红外信号通过计数器来计算其脉宽的宽度来分别是接收的数字信号“0”。还是数字信号“1”,其具体操作过程在C程序中解释,在按下一个键时,单片机会发送一个32位的二进制数,此时我们用unsigned char型的变量a4存储在四个字节的存储空间作为命令来进行设计者的自动控制。(3)、NEC码波形图数字信号“0”和数字信号“1”波形图 起始码 用户识别码 指令码 指令反码 一帧数据波形图2、系统功能模块结构框图(1)、NEC编码模块结构框图: 监控编码扫描信号发生模块时钟脉冲发生模块键盘指令编码调制器红外线发送设备(2)、NEC解码模块结构框图:STC89C52单片机数据接收与处理数据显示红外接收电路基准时钟电路复位电路五、系统电路图及工作原理分析1、外线接收NEC译码电路模块此模块由红外接收电路、复位电路、基准时钟电路、单片机单片机数据处理电路和数码管与发光二极管显示电路五大部分组成:(a)、基准时钟电路:是采用12MHZ的晶振来提高其稳定性。在此情况下,单片机的一个机器周期就为1us,也就是说在计数时,1ms时间计数器要计数1000次,这在单片机译码的时候要根据TH0和TL0的值来计算脉宽是否为有效值;(b)、复位电路:是在程序跑飞时或者使用者想单片机从第一条指令重新运行时的功能。其原理就是根据电容的充放电使RST引脚在上电时电容充电使RST处于低电平让单片机复位或者是当按键按下时单片机复位;(c)、红外接收电路:是将接收到的红外信号经过整形、放大、滤波送给单片机进行译码;(d)、单片机数据处理电路:是译码电路的核心,它将红外接收送来的信号进行识别、处理并存储。识别过程是通过启动外部中断0和计数器0来辨别脉冲宽度及二进制数据“0”和”1”的。(e)、数码管与发光二极管显示电路:此电路是将单片机接收到的数据指令用它来显示查表后的数据。2、红外线发送NEC编码电路模块 此模块主要是由键盘输入电路、单片机控制编码电路、基准时钟电路、复位电路和红外二极管发送电路组成(a)、时钟基准电路:和接收端一样为单片机提供稳定的工作频率,一般采用12MH的晶振来提高其稳定性。(b)、单片机控制编码电路:利用单片机将接收来的键盘输入信号进行识别,通过编写程序使发送端按不同的延时时间取反发送端,从而达到NEC编码的过程。(c)、键盘输入电路:是通过6x5的矩阵通过键盘扫描来确定输入值的理论上可以发送30个不同的指令,用来执行不同任务。(d)、复位电路:和接收端一样,用于让单片机程序从第一条执行。(e)、 红外二极管发送电路:是通过控制二极管电压的高低来实现红外发送的,发送的频率为38KHZ的方波,由于发送功率不强所以接收端接收距离在10M左右范围内。 六、NEC编译码程序流程图1、NEC编码流程图: 2、NEC译码流程图:初始化程序查表调用显示函数计数脉宽是否标准有外部中断0锁存接收数据并执行相应控制YesNONOYes七、C程序代码及注释#include#define uchar unsigned char#define uint unsigned intUint code table21= 0x77,0x7c,0x39,0x5e,0x79,0x71,0x5e,0x79,0x71,0x3f,0x39,0x5e,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /共阳极数码管相对应的十六进制值uchar a4=0,0,0,0,j,i,k,num; /定义变量sbit js=P32; /红外接收端sbit hd=P23; /红色二极管控制端sbit yd=P24; /蓝色二极管控制端delay(uint z)/延时子程序uint x;for(x=z;x0;x-);void main()EA=1; /初始化ET0=1; /开计数中断0EX0=1; /开外部中断0TMOD=1; /设置工作方式IT0=1; /启动计时器while(1)if(a2+a3)=0xff) /判断接收到数据是否正确switch(a2) /将接受到的数据与所建表一一对应case 0x00:num=1;break;case 0x01:num=2;break;case 0x02:num=3;break;case 0x04:num=4;break;case 0x05:num=5;break;case 0x06:num=6;break;case 0x08:num=7;break;case 0x09:num=8;break;case 0x0a:num=9;break;case 0x0c:num=10;break;case 0x0d:num=11;break;case 0x0e:num=12;break;case 0x10:num=13;break;case 0x11:num=14;break;case 0x12:num=15;break;case 0x14:num=16;break;case 0x15:num=17;break;case 0x16:num=18;break;case 0x18:num=19;break;case 0x19:num=20;break;case 0x1a:num=21;break;P0=tablenum-1; /输出显示值if(num=1) /判断按键值是否为第一个按键如果是就熄灭蓝灯hd=1;if(num=2) /判断按键值是否为第二个按键如果是就点亮蓝灯hd=0;if(num=4) /判断按键值是否为第四个按键如果是就熄灭红灯yd=1;if(num=5) /判断按键值是否为第五个按键如果是就点亮红灯yd=0;void zhd(void) interrupt 0 / 外部中断子程序(译码过程)TH0=0; /计数器清零TL0=0;TR0=1; /启动计数器while(!js) /等待低电平结束delay(5);if(TH045) /判断低电平是否高于11.52ms如果高于则跳出等待和中断return;TR0=0;if(TH028) /判断高电平是否高于7.168ms如果高于则跳出等待和中断return;/至此为起始信号检测TR0=0;TH0=0

温馨提示

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

评论

0/150

提交评论