51单片机实现红外线编码检测_第1页
51单片机实现红外线编码检测_第2页
51单片机实现红外线编码检测_第3页
51单片机实现红外线编码检测_第4页
51单片机实现红外线编码检测_第5页
已阅读5页,还剩6页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

1、01编码,设备显示。51单片机实现红外编码检测通过51单片机及外围电路实现对接受信号的处理(通过外部中断和计数器)获得信号的红外传感基础知识:?红外发光管:红外发光二极管通常使用碎化钱(GaA§、碑铝化钱(GaAlAS)等材料,采用全透明或浅蓝色、黑色的树脂封装。产生的光波波长为940nm左右,为红外光?红外接收头:左图为一常用的红外接收模块。其内部含有高频的滤波电路,专门用来滤除红外线合成信号的载波信号(38KH),并送出接收到的信号。当红外线合成信号进入红外接收模块,在其输出端便可以得到原先发射器 发出的数字编码,只要经过单片机解码程序进行解码,便可以 得知按下了哪一个按键,而做

2、出相应的控制处理,完成红外遥 控的动作。?红外发送协议:引导码+客户码1 +客户码2+操作码 +操作反码*用户真正须要的只有操作码*调制:0”和“1”组成的32位二进制码经38kHz的载频进行二次调制以提高发射效率(因红外接收头能接收的红外线为 38KHz左右),还可达到降低电源功耗的目的调制后加到红外发光杳驱动电路 的波形主要内容:通过51单片机及外围电路实现对接受信号的处理(通过外部中断和计数器)获得信号的01编码,用设备显示,(led或数码管);这里管脚的对应 P3.2接受红外对管信息,led接线:J9 LCD1602RJ6(16O2)主程序:#include<reg52.h>

3、; / 包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器 的定义#include<lcd.h>sbit IR=P3A2; 红外接口标志/*全局变量声明红外用全局变量*/unsigned char irtime;/bit irpro_ok,irok;unsigned char IRcord4;unsigned char irdata33;/*函数声明*/void Ircordpro(void);/*定时器0中断处理*/void tim0_isr (void) interrupt 1 using 1(irtime+; /用于计数2个下降沿之间的时间)/*外部中断0中断处理voi

4、d EX0_ISR (void) interrupt 0 / (.static unsigned char i; /static bit startflag;/*/外部中断0服务函数接收红外信号处理是否开始处理标志位if(startflag) (引导码TC9012的头码,9ms+4.5ms存储每个电平的持续时间,用于以后判断是 0还是1if(irtime<63&&irtime>=33)/ i=0;irdatai=irtime;/ irtime=0;i+;if(i=33)irok=1;i=0;elseirtime=0;startflag=1;/*定时器0初始化*/vo

5、id TIM0init(void)/ 定时器 0 初始化 TMOD=0x02;定时器0工作方式2, TH0是重装值,TL0是初值TH0=0x00; / 重载值TL0=0x00; / 初始化值ET0=1; / 开中断TR0=1;/*外部中断0初始化*/void EX0init(void)IT0 = 1; /指定外部中断0下降沿触发,INT0 (P3.2)EX0 = 1; /使能外部中断EA = 1; /开总中断/*红外码值处理*/void Ircordpro(void)/红外码值处理函数unsigned char i, j, k;unsigned char cord,value;k=1;for(

6、i=0;i<4;i+)/(for(j=1;j<=8;j+) /(cord=irdatak;if(cord>7)/可以有一定误差value|=0x80;if(j<8)(value>>=1;k+;IRcordi=value;value=0;处理4个字节处理1个字节8位大于某值为1,这个和晶振有绝对关系,这里使用12M计算,此值irpro_ok=1;/处理完毕标志位置1./*主函数*/void main(void)(unsigned char temp3;unsigned int i;EX0init(); /初始化外部中断TIM0init();/初始化定时器lcd

7、_init();delay(10);lcd_pos(0);/初始化LCD/设置显示位置为第一行的第0个字符while(1)/ 主循环 (if(irok)/( Ircordpro(); irok=0; if(irpro_ok)/显示对应的数7等如果接收好了进行红外处理如果处理好后进行工作处理,如按对应的按键后(/*将ascii的数字显示:即将字符对应的十进制数的每一位付给temp并转换成字符*/temp0=IRcord2%10+48;/ 个位 temp1=IRcord2%100/10+48;/ 十位temp2=IRcord2/100+48;/ 百位lcd_wcmd(0x01); / 消除LCD的

8、显示内容delay(1);lcd_pos(0);lcd_wdat('*');lcd_wdat(temp2);lcd_wdat(temp1);lcd_wdat(temp0);lcd_wdat('*');for(i=0;i<10;i+) delay(100); /*#include<lcd.h> 文件(lcd用到的一些函数)*/#include<reg52.h>#include <intrins.h>/*定义数据类型*/typedef unsigned char BYTE;typedef bit BOOL ;/*定义控制位*

9、/sbit rs= P2A6;/sbit rw = P2A5;sbit ep = P2A7;/*声明函数*/delay(BYTE ms)/延时子程序BYTE i;while(ms-)for(i = 0; i< 250; i+)_nop_();_nop_();_nop_();_nop_();)BOOL lcd_bz()/测试LCDT碌状态BOOL result;rs = 0;rw = 1;ep = 1;_nop_();_nop_();_nop_();_nop_();result = (BOOL)(P0 & 0x80);ep = 0;return result;)lcd_wcmd(B

10、YTE cmd)( -while(lcd_bz();rs = 0;rw = 0;ep = 0;_nop_();_nop_();P0 = cmd;_nop_();_nop_();_nop_();_nop_();ep = 1;_nop_();_nop_();_nop_();_nop_();ep = 0;)lcd_pos(BYTE pos)( -lcd_wcmd(pos | 0x80);)./写入指令数据到LCD/设定显示位置lcd_wdat(BYTE dat) (while(lcd_bz();rs = 1;rw = 0;ep = 0;P0 = dat;_nop_();_nop_();_nop_();_nop_();ep = 1;_nop_();_nop_();_nop_

温馨提示

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

评论

0/150

提交评论