红外接收程序,1602上显示用户码和数据码

合集下载

基于单片机的红外解码.温度及液晶显示

基于单片机的红外解码.温度及液晶显示

中国矿业大学徐海学院技能考核培训姓名:顾嘉诚学号: 22110818专业:信息11-2班题目:基于单片机的红外解码.温度及液晶显示专题:红外解码指导教师:宥鹏老师翟晓东老师设计地点:电工电子实验室时间: 2014 年 4 月通信系统综合设计训练任务书学生姓名顾嘉诚专业年级信息11-2班学号22110818设计日期:2014年4 月5日至2014 年4 月10 日同组成员:姜怀修,刘剑桥,顾嘉诚,彭传锁,何子豪,王业飞设计题目:基于单片机的红外无线控制设计专题题目:红外解码设计主要内容和要求:1.主要内容:2.单片机内部结构红外遥控解码C语言程序设Ds18b20的使用Lcd1602的使用2. 功能扩展要求环境温度液晶显示指导教师签字:目录正文 (5)1.概述 (5)1.1功能描述 (5)1.2单片机资源 (5)2.1管脚图 (5)3.1. 使用资源 (5)2.原理篇 (6)2.1红外发送及接收 (6)2.1.1红外接收概述 (6)2.1.2硬件及原理图 (7)2.1.3红外中断接收部分程序 (8)2.2温度原理 (9)2.2.1 DS18B20 的主要特性 (9)2.2.2原理图与硬件 (10)2.2.3 DS18B20时序和程序 (10)2.3 QC1602A (12)2.3.1 1602外部结构及管脚说明 (12)2.3.2 写命令/数据时序与部分程序 (13)3.效果图 (15)4.软件篇 (15)4.1程序框图 (15)4.1.1 Main函数 (15)4.1.2 中断 (16)4.1.3 60ms定时中断 (16)4.2 完整程序 (16)4.2.1 Project.c文件 (16)4.2.2 onewire.c 文件 (23)5.参考文献 (26)技能考核培训摘要:利用单片机所学内容进行拓展,我们实现了基于单片机的红外解码.温度及液晶显示。

Lcd液晶显示实时环境温度和接收显示红外遥控器的键值,在收到红外信号时会用蜂鸣器作为反馈,以提醒红外一体接收头有接到信号。

(完整word版)红外编码解码程序(word文档良心出品)

(完整word版)红外编码解码程序(word文档良心出品)

红外编码解码程序,我写的是:发送模块通过按键,发送出相应键值的编码,接收模块接收到信号后解码该键值,并点亮相应的状态灯(新手,高手勿喷)//************************* 单片机红外发射******************************* #include<reg52.h> sbit ir=P 1人3;sbit k1= P2A5;sbit k2=P2M;sbit k3=P2A3;sbit k4=P2A2;sbit k5=Pil;unsigned int count, set_count; bit irflag,keyflag; unsigned char irsys[]={0x00,0xff}; unsigned char irdata,ircode;void delay(unsigned int a){unsigned char i;while(--a!=0) for(i=300;i>0;i--);}void keyscan(){/*if(k1==0){delay(10);if(k1==0){keyflag=1;while(!k1);irdata=0x01;}*/ if(k2==0) {delay(10); if(k2==0) {keyflag=1;while(!k2); irdata=0x02;}{delay(10); if(k3==0) {keyflag=1;while(!k3); irdata=0x03;} if(k4==0){delay(10); if(k4==0) {keyflag=1;while(!k4); irdata=0x04;} if(k5==0){delay(10); if(k5==0) {keyflag=1;while(!k5); irdata=0x05;void ir_sendbyte() // 红外发送一个字节数据{ unsigned char i; for(i=0;i<8;i++) //发送8 位数据{set_count=43; //发送编码中的0.56ms 高电平irflag=1;count=0;TR0=1; while(count<set_count);TR0=0;if(ircode&0x01) set_count=130; // 判断红外编码最低位,若为 1 则 1.69ms 的低电平else set_count=43; // 为0 则0.565ms 的低电平irflag=0;count=0;TR0=1; while(count<set_count);TR0=0; ircode=ircode>>1;}}void ir_send(){set_count=346; //发送编码中的引导码(4.5ms高电平+4.5ms低电平)irflag=1;count=0;TR0=1;while(count<set_count);set_cou nt=346; //发送编码中的 4.5ms低电平irflag=0;count=0;TR0=1;while(count<set_count);TR0=0; ircode=irsys[0];ir_sendbyte();ircode=irsys[1];ir_sendbyte();ircode=irdata; //发送8 位数据码ir_sendbyte();ircode=~irdata; // 发送8 位数据反码ir_sendbyte();set_count=43; //发送编码中的0.56ms高电平irflag=1;count=0;TR0=1;while(count<set_count);TR0=0;irflag=0;/*delay(23); //延时23ms (编码中的23ms低电平)set_count=346; //发送编码中的引导码(4.5ms高电平+4.5ms低电平) irflag=1;count=0;TR0=1; while(count<set_count);TR0=0; set_count=346; irflag=0;count=0;TR0=1;while(count<set_count);TR0=0;*/ set_count=43;irflag=1;count=0;TR0=1;while(count<set_count);TR0=0;irflag=0;delay(23);}void timer0_init(){EA=1;TMOD=0x02;//定时0 8 位自动重装模式ET0=1;TH0=0xe6; //定时13us,38K 红外矩形波,晶振24M TL0=0xe6; }void main(){timer0_init();count=0;ir=0;irflag=0;while(1){keyscan(); if(keyflag) {delay(10); ir_send(); delay(500); keyflag=0;delay(100);}}}void timer0() interrupt 1 {count++;if(irflag==1)ir=~ir; // 有发射标志,则发射38khz 的矩形波elseir=0;红外接收**************************** //*************************#include<reg52.h>#define uchar unsigned char #define uint unsigned intsbit led仁P2A1;sbit led2=卩2人2;sbit led3=卩2人3;uchar irtime;uchar startflag;uchar irdata[33];uchar bitnum;uchar irreceok;uchar ircode[4]; uchar irprosok;void display();void timer0init(){TMOD=0x02;TH0=0x00;TL0=0x00;ET0=1;EA=1;TR0=1;void int0init(){IT0=1;EX0=1; EA=1;}}void irpros(){uchar k,i,j;uchar value;k=1;for(j=0;j<4;j++){for(i=0;i<8;i++){ value=value>>1; if(irdata[k]>6){value=value | 0x80;}k++;if(k>33)k=1;}ircode[j]=value;}irprosok=1;}void main(){ timer0init(); int0init(); while(1) { if(irreceok) { irpros(); irreceok=0;} display();}void display()switch(ircode[2]){case 0x05:led1=1; led2=1; led3=1; break;case 0x02:led1=0;led2=1; led3=1; break;case 0x03:led2=0; led1=1; led3=1; break;case 0x04:led3=0;led1=1;led2=1; break;//case 0x01: 备用}void timer0 () interrupt 1 { irtime++;}void int0 () interrupt 0 {if(startflag){if(irtime>32) // 检测引导码{bitnum=0;}irdata[bitnum]=irtime;irtime=0;bitnum++;if(bitnum==33){bitnum=0;irreceok=1;startflag=0;}else{startflag=1; irtime=0;}}。

常用红外线遥控信号协议详解(完整版)

常用红外线遥控信号协议详解(完整版)

电子报/2006年/7月/16日/第013版资料(开发)常用红外遥控信号传输协议详解(一)四川杨叶珍编者按:红外遥控器应用非常广泛,但由于各个厂家设计的遥控器种类各异,因而针对各类不同电子产品,采用的红外遥控器也就不完全相同,除了遥控器本身的造型外,起决定因素的是红外遥控信号传输协议。

目前,多数电子设计人员在设计产品遥控部分时,大多采用现成的遥控套件,或依靠现成的红外遥控接收程序,直接进行应用。

这一切原因,源于大多电子设计工程师难以了解到更多的红外遥控信号传输协议,故此仅能“照搬”制作。

本文(将分3期连续)介绍常见的8种红外遥控信号传输协议,这些协议是非常实用的,不仅是一套全面的红外遥控协议概念,更便于掌握和选择设计更优异的红外遥控产品。

常用的红外线信号传输协议有ITT协议、NEC协议、Nokia NRC协议、Sharp协议、Philips RC -5协议、Philips RC-6协议,Philips RECS-80协议,以及Sony SIRC协议等,下面分别进行介绍。

一、ITT协议ITT是最早的一种红外线传输协议。

该协议没有象其他协议那样使用载波频率传输红外线信号,而是用宽度为10μs的14个脉冲进行遥控命令的传送,通过改变脉冲的间距对命令进行编码。

用ITT协议传输数据非常可靠,而且功耗极低。

在欧洲,包括ITT(国际电话电报公司)、Greatz、Schaub-Lorenz、Fin-lux、Nokia等在内的很多公司均采用此协议做用户电子标签。

1.主要特性:每条信息只有14个非常窄的脉冲(脉宽10μs),不对信号进行调制;采用脉冲距离编码;电池寿命极长;4位地址码、6位命令码;带时间自校准,发送器中可使用RC振荡器;通信速度快,发送一条信息只需1.7ms~2.7ms;应用该协议的器件生产厂家有Intermetal、Micronas 等。

2.协议:14个脉冲传送1条红外信息,每个脉冲宽10μs,用三种不同的脉冲周期来区别每位所表达的内容:100μs表示二进制的“0”,200μs表示“1”, 300μs表示预备脉冲或结束脉冲。

HL6122

HL6122

HL6122-多功能红外遥控发射电路概述HL6122电路是通用红外线遥控发射CMOS集成电路。

该电路由外部连接二极管与上拉电阻,并与内部ROM组合可产生多达65536种用户码。

电路的振荡频率由外接谐振器控制在400KHz~500KHz之内(通常在455KHz)。

本电路主要用于电视机、VCD、音响、功放、空调等家用电路的遥控发射器之中。

功能特点z低工作电压(V DD:2.0~3.3V)。

z低功耗(待机模式下I DD<1μA)。

z数据编码1.HL6121:32个单键输入和3个双键输入,利用SEL脚可扩展到64+6个功能键。

2.HL6122:64个单键输入和3个双键输入,利用SEL脚可扩展到128+6个功能键。

z可选择65536种用户码(外部二极管、上拉电阻与内部ROM组合)。

z封装形式:HL6121为SOP20,HL6122为SOP24。

管脚排列图管脚说明序号符号功能序号符号功能HL6121HL6122HL6121HL612231KI2键输入21113LMP灯输出42KI3键输入31214KI/O7键输入/输出7 3KI4键输入41315KI/O6键输入/输出64KI5键输入51416KI/O5键输入/输出55KI6键输入61517KI/O4键输入/输出46KI7键输入71618KI/O3键输入/输出3 57REM红外遥控输出1719KI/O2键输入/输出2 68V DD正电源1820KI/O1键输入/输出1 79SEL64/128数据选择1921KI/O0键输入/输出0 810OSCO振荡器输出2022CCS用户码选择输入911OSCI振荡器输入23KI0键输入0 1012V SS地24KI1键输入1功能框图*:HL6121KI0~KI3HL6122KI0~KI7HL6121和HL6122功能比较功能说明1.引脚功能:(1)键输入管脚(HL6121为KI0~KI3,HL6122为KI0~KI7),键输入/输出管脚(KI/O0~KI/O7)在键输入管脚和V SS之间有一个下拉电阻。

红外解码程序详解

红外解码程序详解

红外遥控解码程序设计——————基于uPD6121红外编码制式红外传感系统是目前应用最为广泛的遥控系统,一个红外遥控系统可分为发射和接收两部分组成,发射端称之为红外遥控器,一般由矩阵键盘,红外编码调制芯片和红外发射管组成;接收端用一体化红外接收头即可,这个东东内置光电放大器和解调部分,信号接收之后一般很微弱须放大后才可解码,为有效发射出去得先托付在载波上所以需经历调制、解调的过程,其实对于发射部分主要工作在于编码,而对于编码方式只有几种主流方式,而目前国内大部分均为uPD6121编码方式(日本NEC公司搞出来的。

),所以我们只须弄清楚这种编码的时序,即可写出万能的红外解码程序,只要是基于这种编码方式的遥控器(家里的电视、空调、电扇遥控器)都可以用该程序来解码(这点也充分证明了C语言的高移植性啊。

)这种编码的格式其实很简单,开头是一个引导码,人家芯片在编码时将其设计成9ms的高电平和4.5ms的低电平,也就是说你必须跳过这段引导码之后才会接收到数据,第一个问题来了:为什么要加这段引导码?因为红外传感是非常容易受到干扰的,如果直接传送数据很可能并非发送端的信号,很可能来自其他辐射,后面设计程序时会遇到这个问题。

所以我们在写程序时在引导码时可以加入检测代码,如果是引导码则继续接收,否则跳出。

第二个问题就是:接收数据时我们用外部中断接收,这是考虑到CPU 的执行效率,如果你在主函数里接收数据,就好比CPU一直在问:你接收到数据没?你接收到没?..很明显不靠谱,和串口通信一样,接收数据用中断这是经验,有利于单片机的执行效率。

第三个要注意的就是红外接收端和编码发送的数据是反向的!这点很重要,我看很多资料没有写明这点,让很多童鞋疑惑不解,也就是说引导码编码时确实是9ms高电平和4.5ms 的低电平,但是到了接收端是9ms的低电平和4.5ms的高电平,所以我们在解码时就得注意引导码高电平出现的顺序。

对于编码格式,引导码后接了4个字节的数据,前两个字节为用户码和用户反码,简单点说就是器件地址;后两字节为操作码和操作反码,就是我们真正需要的数据。

单片机STM32F103C8T6的红外遥控器解码系统设计

单片机STM32F103C8T6的红外遥控器解码系统设计

单片机STM32F103C8T6的红外遥控器解码系统设计一、本文概述本文旨在详细阐述基于STM32F103C8T6单片机的红外遥控器解码系统的设计和实现过程。

随着科技的不断进步和智能化设备的普及,红外遥控器作为一种常见的遥控设备,已经广泛应用于家电、安防、玩具等多个领域。

然而,红外遥控器发出的红外信号往往需要通过解码器才能被设备正确识别和执行,因此,设计一款高效、稳定、可靠的红外遥控器解码系统具有重要意义。

本文将首先介绍红外遥控器的基本原理和信号特点,然后详细阐述STM32F103C8T6单片机的性能特点和在红外遥控器解码系统中的应用优势。

接着,将详细介绍红外遥控器解码系统的硬件设计,包括红外接收头的选择、电路设计和PCB制作等。

在软件设计部分,将详细阐述如何通过STM32F103C8T6单片机的编程实现红外信号的接收、解码和处理,以及如何将解码后的数据通过串口或其他通信方式发送给主控制器。

本文还将对红外遥控器解码系统的性能进行测试和分析,包括信号接收距离、解码速度和稳定性等方面的测试。

将总结本文的主要工作和创新点,并对未来的研究方向进行展望。

通过本文的研究和实现,旨在为红外遥控器解码系统的设计提供一种新的思路和方法,同时也为相关领域的研究人员提供有益的参考和借鉴。

二、红外遥控器基础知识红外遥控器是一种常见的无线遥控设备,它利用红外光作为信息载体,通过发射和接收红外光信号实现对设备的远程控制。

这种遥控方式因其简单、低成本和无需视线连接等优点,在各类消费电子产品中得到了广泛应用,如电视机、空调、音响等。

红外遥控器的工作原理主要基于红外辐射和光电器件的检测。

遥控器内部通常包含一个或多个红外发射管,当按下按键时,发射管会发射出特定频率和编码的红外光信号。

接收端则配备有红外接收头,该接收头内部有一个光敏元件(如硅光敏三极管或光敏二极管),用于检测红外光信号并将其转换为电信号。

为了区分不同的按键操作,红外遥控器通常采用特定的编码方式对按键信号进行编码。

红外遥控解码流程图

红外遥控解码流程图

pic12f1822接收红外信号解码流程图单片机初始化
高电平 1.125 2.25低电平表示还在引导码高电平
高电平表示还在引导码9mS高电平结束,4.5mS低电平
高电平上,
高电平表示信号没来继续等待,高电位是红外接收头的电平
解码的关键是如何识别“0”和“1”,从位的定义我们可以
发现“0”、“1”均以0.56ms的低电平开始,不同的是高电
据高电平的宽度区别“0”和“1”。

如果从0.56ms低电平过
后,开始延时,0.56ms以后,若读到 的电平为低,说明该位为“0”,反之则为“1”,为了可靠起见,延时必须比
0.56ms长些,但又不能超过1.12ms,否则如果该位为“0”,
读到的已 是下一位的高电平,因此取(1.12ms+0.56ms)/2=0.84ms最为可靠,一般取0.88ms左右均可。

头的电平
mS。

红外遥控器程序及原理、程序

红外遥控器程序及原理、程序
Data=1;//收到数据 1 } else if(Tim>=10 && Tim<50) {
Data=0;//收到数据 0 }
if(Ok==1) {
hw_jsm<<=1; hw_jsm+=Data;
if(Num>=32)
{ hw_jsbz=1; break }
EXTI_ClearITPendingBit(EXTI_Line15); }
printf_init(); //printf 初始化
while(1)
{
if(hw_jsbz==1) //如果红外接收到
{
hw_jsbz=0;
//清零
printf("红外接收码 %0.8X\r\n",hw_jsm); //打印
hw_jsm=0;
//接收码清零
}
}
}
1.1 红外遥控简介简介 红外遥控是一种无线、非接触控制技术,具有抗干扰能力强,信息传输可靠,功耗低, 成本低,易实现等显著优点,被诸多电子设备特别是家用电器广泛采用,并越来越多的应用 到计算机系统中。 由于红外线遥控不具有像无线电遥控那样穿过障碍物去控制被控对象的能力,所以,在 设计红外线遥控器时,不必要像无线电遥控器那样,每套(发射器和接收器)要有不同的遥控 频率或编码(否则,就会隔墙控制或干扰邻居的家用电器),所以同类产品的红外线遥控器, 可以有相同的遥控频率或编码,而不会出现遥控信号“串门”的情况。这对于大批量生产以 及在家用电器上普及红外线遥控提供了极大的方面。由于红外线为不可见光,因此对环境影 响很小,再由红外光波动波长远小于无线电波的波长,所以红外线遥控不会影响其他家用电 器,也不会影响临近的无线电设备。 红外遥控的编码目前广泛使用的是: NEC Protocol 的 PWM(脉冲宽度调制)和 Philips RC-5 Protocol 的 PPM(脉冲位置调制)。 普中科技 STM32 开发板配套的遥控器使用的是 NEC 协议,其特征如下: 1、 8 位地址和 8 位指令长度; 2、地址和命令 2 次传输(确保可靠性) 3、 PWM 脉冲位置调制,以发射红外载波的占空比代表“ 0”和“ 1”; 4、载波频率为 38Khz; 5、位时间为 1.125ms 或 2.25ms; NEC 码的位定义:一个脉冲对应 560us 的连续载波,一个逻辑 1 传输需要 2.25ms ( 560us 脉冲+1680us 低电平),一个逻辑 0 的传输需要 1.125ms( 560us 脉冲+560us 低 电平) 。而遥控接收头在收到脉冲的时候为低电平,在没有脉冲的时候为高电平,这样, 我们在接收头端收到的信号为:逻辑 1 应该是 560us 低+1680us 高,逻辑 0 应该是 560us 低+560us 高。 NEC 遥控指令的数据格式为:同步码头、地址码、地址反码、控制码、控制反码。同步 码由一个 9ms 的低电平和一个 4.5ms 的高电平组成,地址码、地址反码、控制码、控制 反 码均是 8 位数据格式。按照低位在前,高位在后的顺序发送。采用反码是为了增加传输的 可靠性(可 用于校验)。 2.数据码格式 数据格式包括了引导码、用户码、数据码和数据码反码,编码总占 32 位。数据反码是数据 码反相后的编码,编码时可用于对数据的纠错。注意:第二段的用户码也可以在遥控应用电 路中被设置成第一段用户码的反码。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
L1602_char(1,5,'b')
*输入:行,列,需要输入1602的数据
*输出:无
***********************************************************************/
void L1602_char(uchar hang,uchar lie,char sign)
while(!hwx);//低电平开始,不处理只等待高电平接收
ly_ct=0;
while(hwx){//高电平开始,
delay100us();
if(ly_ct>25)
return;
return;
}
if(ly_ct<35)//NEC引导码引导码的后4。5MS,ly_ct约45
return;
/***********开始接收四个字节内容**************************************/
for(i=0;i<4;i++){
for(ia=0;ia<8;ia++){
case 0x82:num=6;break;
case 0xf8:num=7;break;
case 0x80:num=8;break;
case 0x90:num=9;break;
case 0x88:num=10;break;
case 0x83:num=11;break;
case 0xc6:num=12;break;
else IRCOM[5]=IRCOM[5]+0x30;
if(IRCOM[6]>9) { IRCOM[6]=IRCOM[6]+0x37;}
else IRCOM[6]=IRCOM[6]+0x30;
if(IRCOM[7]>9) { IRCOM[7]=IRCOM[7]+0x37;}
else IRCOM[7]=IRCOM[7]+0x30;
标题:红外遥控控制继电器
效果:使用红外遥控器,按下电源按键,在实验板上已经试验过,主函数中自己可以灵活修改以满足自我要求!可以再液晶上显示接收到的用户码和数据码,数码管上显示的自我设计的遥控器按键所代表的数值!
******************************************************************************/
{
uchar a;
if(hang == 1) a = 0x80;
if(hang == 2) a = 0xc0;
a = a + lie - 1;
enable(a);
write(sign);
}
/********************************************************************
*名称: L1602_string(uchar hang,uchar lie,uchar *p)
*功能:改变液晶中某位的值,如果要让第一行,第五个字符开始显示"ab cd ef",调用该函数如下
L1602_string(1,5,"ab cd ef;")
*输入:行,列,需要输入1602的数据
*输出:无
#include "reg52.h"
#include <intrins.h>
#define uchar unsigned char
uchar LCD_ID_1[16] = {"Red Control"};
uchar LCD_ID_2[16] = {"IR CODE:------H"};
sbit E=P2^7;//1602使能引脚
*名称: delay()
*功能:延时,延时时间大概为140US。
*输入:无
*输出:无
***********************************************************************/
void Delay2()
{
int i,j;
for(i=0; i<=10; i++)
{
ly_flag=0;
IRCOM[4]=ly_lhj[0] & 0x0F; //取键码的低四位
IRCOM[5]=ly_lhj[0] >> 4; //右移4次,高四位变为低四位
IRCOM[6]=ly_lhj[1]& 0x0F; //取键码的低四位
IRCOM[7]=ly_lhj[1] >> 4; //右移4次,高四位变为低四位
for(j=0; j<=2; j++)
;
}
/********************************************************************
*名称: enable(uchar del)
*功能: 1602命令函数
*输入:输入的命令值
*输出:无
***********************************************************************/
void hongwai(void) interrupt 2
{
unsigned char i,ia;
/**************开始判断是否为NEC波形引导码的前9MS和后4.5MS******************************/
ly_ct=0;//计数时间清0
while(!hwx)
IRCOM[8]=ly_lhj[2] & 0x0F; //取键码的低四位
IRCOM[9]=ly_lhj[2] >> 4; //右移4次,高四位变为低四位
if(IRCOM[4]>9) { IRCOM[4]=IRCOM[4]+0x37;}
elseIRCOM[4]=IRCOM[4]+0x30;
if(IRCOM[5]>9) { IRCOM[5]=IRCOM[5]+0x37;}
***********************************************************************/
void L1602_init(void)
{
enable(0x01);
enable(0x38);
enable(0x0c);
enable(0x06);
enable(0xd0);
if(IRCOM[8]>9) { IRCOM[8]=IRCOM[8]+0x37;}
elseIRCOM[8]=IRCOM[8]+0x30;
if(IRCOM[9]>9) { IRCOM[9]=IRCOM[9]+0x37;}
elseIRCOM[9]=IRCOM[9]+0x30;
L1602_char(2,10,IRCOM[4]);
if(hang == 2) a = 0xc0;
a = a + lie - 1;
Hale Waihona Puke enable(a);while(1)
{
if(*p == '\0') break;
write(*p);
p++;
}
}
/***********主函数开始********************************************************/
delay100us();//调用0.1MS延时计数,ly_ct每调用一次加1
if(ly_ct<75||ly_ct>105)//NEC引导码前9MS,ly_ct约等于90,给个误差值,用80-100之间来判断
return;
ly_ct=0;
while(hwx){
delay100us();
if(ly_ct>55)//NEC引导码引导码的后4。5MS,ly_ct约45
L1602_char(2,9,IRCOM[5]);
L1602_char(2,12,IRCOM[6]);
L1602_char(2,11,IRCOM[7]);
L1602_char(2,14,IRCOM[8]);
L1602_char(2,13,IRCOM[9]);
}
}
}
/***********外中断1入口函数,P33引脚,红外线接收IC数据脚**************************/
sbit S1=P2^0;
sbit S2=P2^1;
sbit S3=P2^2;
sbit dula=P3^7;
int num;
uchar IRCOM[11];
void delay1(int ms);
/********数据定义*************************************************************/
E = 0;
Delay2();
E = 1;
Delay2();
}
/********************************************************************
*名称: L1602_init()
*功能: 1602初始化,请参考1602的资料
*输入:无
*输出:无
void main(void)
{
EA=1;//首先开启总中断
EX1=1;//开启外部中断1,红外接收数据引脚
IT1=1;
L1602_init(); //初始化LCD
相关文档
最新文档