基于HX1838(HS0038)与STC10F04单片机的红外遥控器的读码程序

发布者:创新驿站最新更新时间:2023-08-31 来源: zhihu关键字:HX1838  HS0038  单片机  红外遥控器 手机看文章 扫描二维码
随时随地手机看文章

//此程序在硬件上测试通过,要弄懂的话就要去看看HT6221的时序图。

//此程序可以将读到的键值,地址码通过串口发送到计算机,上位机可用串口调试助手查看。

///C51的红外解码程序,可以根据需要自己修改:

////////////////////////////

//11.0592Mhz

#include

//根据自己的接线来改

sbit IRIN = P3^2; //红外接收器数据线

sbit led = P3^7; //指示灯

////////////////////////////////////////////

//定义数组IRCOM,分别装解码后得到的数据

//IRCOM[0] 低8位地址码

//IRCOM[1] 高8位地址码

//IRCOM[2] 8位数据码

//IRCOM[3] 8位数据码的反码

/////////////////////////////////////////////

#define uchar unsigned char

#define uint unsigned int

uchar IRCOM[4]=0;

bit flag=0;

bit flagcom=0; //串口发送标志

/********************/

void delay014ms(unsigned char x); //x*0.14MS

void IR_init(void);

void delay014ms(unsigned char x) //x*0.14MS STC10F04延时约0.15MS

{

unsigned char i;

while(x--)

{

for (i = 0; i<125; i++) //13

{;}

}

}

///////////////

//初始化

////////////

void IR_init(void)

{

EA=1;

EX0=1; //允许总中断中断,使能 INT0 外部中断

IT0=1; //触发方式为脉冲负边沿触发

IRIN=1; //I/O口初始化

}

//////////

//解码过程

//////////////

void IR_CODE(void) interrupt 0 //在外部中断子程序中解码

{

unsigned char j,k,N=0;

EX0 = 0;

delay014ms(15);

if (IRIN==1)

{ EX0 =1;

return;

} //确认IR信号出现

while (!IRIN) //等IR变为高电平,跳过9ms的前导低电平信号。

{delay014ms(1);}

for (j=0;j<4;j++) //收集四组数据

{

for (k=0;k<8;k++) //每组数据有8位

{

while (IRIN) //等 IR 变为低电平,跳过4.5ms的前导高电平信号。

{delay014ms(1);}

while (!IRIN) //等 IR 变为高电平

{delay014ms(1);}

while (IRIN) //计算IR高电平时长

{

delay014ms(1);

N++;

if (N>=30)

{ EX0=1;

return;} //0.14ms计数过长自动离开。

} //高电平计数完毕

IRCOM[j]=IRCOM[j] >> 1; //数据最高位补"0"

if (N>=8) {IRCOM[j] = IRCOM[j] | 0x80;} //数据最高位补"1"

N=0;

}

}

if (IRCOM[2]!=~IRCOM[3]) //不等的话表示解码失败

{

IRCOM[4]=0;

EX0=1;

return;

}

flagcom = 1; //正确解码后,置串口发送标志

flag = !flag;//pro();//解码成功后运行的程序

EX0=1;

return;

}

//主程序

void main(void)

{

unsigned char k;

IR_init( ); //初始化外部中断0

SCON=0x50; //串口 方式 1

TMOD=0x20; //T1 方式 1

TL1=0xfd; //波特率 9600 的常数

TH1=0xfd;

TR1=1; //开定时器1

flag = 0;

while(1)

{

led=flag;

if(flagcom)

{

flagcom = 0;

for(k=0;k<4;k++)

{

SBUF=IRCOM[k]; //串口输出键盘输入的值

while(TI==0); //是否发送完毕

TI=0;

}

}

}

}


关键字:HX1838  HS0038  单片机  红外遥控器 引用地址:基于HX1838(HS0038)与STC10F04单片机的红外遥控器的读码程序

上一篇:时钟芯片ds12c887的C51驱动程序
下一篇:I2C总线万能程序C语言

推荐阅读最新更新时间:2024-11-09 17:00

STM32单片机的时钟源和时钟树的简介
在嵌入式系统中时钟是其脉搏,处理器内核在时钟驱动下完成指令执行,状态变换等动作。外设部件在时钟的驱动下完成各种工作,比如串口数据的发送、A/D转换、定时器计数等等。 02 STM32时钟源 ◆ HSI是高速内部时钟,RC振荡器,频率为8MHz。 ◆ HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,比较常用的8MHz 12MHz 25MHz。 ◆ LSI是低速内部时钟,RC振荡器,频率为40kHz。 ◆ LSE是低速外部时钟,接频率为32.768kHz的石英晶体。 在STM32中每个外设都有其单独的时钟,在使用某个外设之前必须打开该外设的时钟 ,为什么要这么麻烦来设置每一个外设的时钟而不是将所有外设的时钟统一打开?
[单片机]
STM32<font color='red'>单片机</font>的时钟源和时钟树的简介
Microchip扩大耐辐射单片机产品线推出基于Arm® Cortex®-M0+ 的32位单片机SAMD21RT
Microchip扩大耐辐射单片机产品线, 为航空航天和防御市场推出基于Arm® Cortex®-M0+ 的32位单片机SAMD21RT SAMD21RT采用64引脚陶瓷和塑料封装,基底面为10 mm × 10 mm 太空探索正迎来复苏期,一系列令人兴奋的新任务相继展开,如备受期待的Artemis II(阿尔忒弥斯二号计划)、JAXA SLIM 和 Chandaaryan-3成功登月以及New Space在近地轨道 (LEO)进行新部署。 设计人员需要符合严格的辐射和可靠性标准的电子元件,以满足在恶劣太空环境中工作的要求。Microchip Technology(微芯科技公司)宣布推出新款耐辐射32位单片机SAMD21RT
[单片机]
Microchip扩大耐辐射<font color='red'>单片机</font>产品线推出基于Arm® Cortex®-M0+ 的32位<font color='red'>单片机</font>SAMD21RT
瑞萨推出全新RX261/RX260 MCU产品群, 具备卓越能效、先进触控功能及强大安全特性
2024 年 1 0 月 22 日,中国北京讯 - 全球半导体解决方案供应商瑞萨电子(TSE:6723)今日宣布推出RX261与RX260微控制器(MCU)产品群。这两款全新的64MHz MCU带来出色的能效比——工作模式下仅为69μA/MHz,待机模式下为1μA。此外,它们还能帮助设计人员轻松实现防水的电容式触控传感器设计,并提供强大的安全特性。得益于卓越性能与功能的完美结合,RX261/RX260产品群适用于家用电器、楼宇和工厂自动化等应用,以及智能锁、电动自行车和移动式热敏打印机等众多应用场景。 RX261/RX260产品群基于瑞萨的RXv3 CPU内核,在64MHz运行频率下可获得355CoreMark的评分
[单片机]
瑞萨推出全新RX261/RX260 <font color='red'>MCU</font>产品群,  具备卓越能效、先进触控功能及强大安全特性
利用51单片机设计闪烁灯
简介:51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了长足的进展,成为应用最广泛的8位单片机之一。 1. 电路图 一个二极管点亮一般需流经的电流值为3mA~10mA,二极管两边的压降为1.6V~1.7V。 2. 点亮二极管: (1)位操作: sbit led0=P0^0; led0=0;//单个位的赋值 (2)总线操作: P0=0xfe;//11111110 整个8位引脚一起赋值 3. 软件仿真: 点工具栏上d图标,双击某行即设置断点;若要用软件仿真查看一条语句的执行时间,一定要在Op
[单片机]
利用51<font color='red'>单片机</font>设计闪烁灯
基于飞思卡尔MCU的空调(HVAC)与供暖通风方案
方案描述: 空调 ( HVAC ) 与 供暖通风 系统用于调节车内气流,为驾乘者提供舒适的环境。这些系统一般需要根据不同输入条件 (如温度) 控制多个电机 (如运行风机和风扇),高端系统还含有LCD显示屏,甚至触控执行器。 HVAC 系统必须有效、安静且经济地运行。多个电机需要同时控制,而且系统需要满足汽车系统严格的可靠性要求。新型系统使用更少的传感器检测车内环境,因此对计算能力提出了更高的要求。 飞思卡尔 丰富的微控制器 ( MCU ) 产品组合可在存储器容量、性能和引脚数方面,满足车载 HVAC 系统的不同应用要求。此外,由于具备PWM功能、低静态电流、过流保护、过热保护和负载电流反馈等特点,采用电机驱动器 (如MC33
[汽车电子]
基于飞思卡尔<font color='red'>MCU</font>的空调(HVAC)与供暖通风方案
基于单片机和CAN总线的车灯控制系统设计
1 、引言 CAN(Controller Area Network)是德国 Bosch 公司最先提出的,是目前汽车 控制器 局域网中最流行、最常用的总线。它的主要特点是:CAN 总线为多主站总线,各节点均可在任意时刻主动向网络上的其他节点发送信息,不分主从,通信灵活;CAN 总线采用独特的非破坏性总线仲裁技术,优先级高的节点先传送数据,能满足实时性要求;CAN 总线具有点对点、一点对多点及全局广播传送数据的功能;CAN 总线上每帧有效字节数最多为 8 个,并有 CRC 及其他校验措施,数据出错率极低,某个节点出现严重错误,可自动脱离总线,总线上的其他操作不受影响;CAN 总线只有 2 条导线,系统扩充时可直接将新节点挂在总线上
[汽车电子]
基于<font color='red'>单片机</font>和CAN总线的车灯控制系统设计
单片机欠压复位问题的解决
  欠压复位(以下称为BOR)是单片机可靠性的一项重要功能,通常用于解决电源问题,下面将介绍欠压复位的另一个问题。   单片机的“电量不足”是电源电压不足或暂时降低,低于可靠运行所需的水平。许多单片机具有保护电路,该电路可检测电源电压何时低于此水平,并将设备置于复位状态,以确保在电源恢复时正确启动。此操作也称为“欠压复位”,英文缩写为“BOR”。类似的功能称为低电压检测(LVD),它更复杂,增加了对多个电压电平的检测,可以在触发复位之前产生中断。   BOR通常由控制寄存器中的某个位使能。通常,当BOR引起复位时,状态位会置1。该状态位在复位后仍然有效,并允许程序检测到问题并执行其他恢复或记录事件。   如果BOR被禁用会怎样
[单片机]
<font color='red'>单片机</font>欠压复位问题的解决
STM32F103单片机使用DMA功能读取ADC采样数据
使用DMA功能操作外设时,可以极大的简化代码,提高程序的执行效率。特别是在需要频繁操作的外设上。比如现在要采集单片机16个ADC通道的电压值,就可以使用DMA功能,直接将ADC通道转换好的值,传输到数组中。需要操纵ADC的值时,直接去数组中拿数据就行。不需要再去判断ADC数据转换是否结束。下面直接通过代码来实现。 首先初始化ADC,这里将ADC的16个采样通道全部开启。 void ADC1_Init ( void ) { GPIO_InitTypeDef GPIO_InitStructure; ADC_InitTypeDef ADC_InitStructure; RCC_APB2PeriphCloc
[单片机]

推荐帖子

高分在线等:用ARM汇编指令如何访问I/O口数据寄存器
如题?我这样,总是编不过......LDRR0GPGDAT......该如何写呢?高分在线等:用ARM汇编指令如何访问I/O口数据寄存器upldrr0,=GPGDATldrr1,;GPGDAT的内容=r0ldrr2,=0x12345str,r0;0x12345=GPGDAT上面写错了,应为ldrr0,=GPGDATldrr1,;GPGDAT的内容=r0ldrr2,=0x12345strr2,
湖北王浩 ARM技术
msp430F149通用I/O端口是否能承受5V电压接口
如题所问,打算用MSP430F149做个液晶显示装置,MSP430F149电源电压是3.3V,液晶接口电平是5V电压,想尽量简化硬件电路,能否直接和149端口相连,还是必须用3.3V转5V的芯片做缓冲,请实际用过的朋友告知一下,谢谢!msp430F149通用I/O端口是否能承受5V电压接口要进行电平转换 http://www.ti.com.cn/cn/lit/an/slaa148/slaa148.pdf个人觉得3.3v的也可以驱动液晶,只是背光比较暗。谢谢收到,我也用3.3V驱
阿力 微控制器 MCU
基于SDI-12总线(通信协议)的数据采集技术
概述:目前SDI-12产品越来越丰富,应用也越来越广泛,关键在于其智能化,数字化。众多仪器厂商,系统集成商,开始关注该项技术,几乎所有的数据采集器生产商都在自己的产品中增加了SDI-12总线接口,在大趋势的推动下,传感器厂家也开始加入这个协议。通过SDI-12组建的数据采集系统结构简洁,由于使用了总线技术,所有的传感器连接在一条SDI-12总线上,所以放弃了以往的复杂接线,让用户一目了然,即使供应商不提供服务,用户自己也能很好的来改变观测方案甚至是对系统升级。关
viewtool 嵌入式系统
cygwin安装mips编译器后不识别库函数,请高手指教,谢谢!
cygwin下安装了mips的编译器,但不能识别函数,即使写一个“HelloWorld”,使用mips-elf-gcc编译时也会提示“undefinedreferenceto`printf\'”,直接用gcc编译就没问题。不知是何原因,望高手指教,谢谢!cygwin安装mips编译器后不识别库函数,请高手指教,谢谢!没人回答,自己顶一下吧另外也提示:“warning:cannotfindentrysymbol_start”当然cygwin下是能编译的,cygwin包含有
mjdhj_520 嵌入式系统
为什么OCL电路三极管损耗随频率升高而增大?
电路如图所示,OCL电路前级三极管为:NPN——PBSS8110Y,PNP——PBSS9110Y。后级三极管型号为:NPN——NSS1C301ET4G,PNP——NSS1C300ET4G。在Signal_in端钮输入正弦波信号,幅值2V,频率可调。随着频率的升高,供电电源显示电路电路逐渐增大,当输入信号频率小于10MHz,供电电源的电流能够稳定下来,当频率大于10MHz以后,由于电流增大,三极管发热,反过来使电流进一步增大,最终电流迅速升高直至达到供电电源的限流值。请问为什么频率升高会导致
咖啡不加冰 模拟电子
【 ST NUCLEO-G071RB测评】——by donatello1996
@donatello1996【NucleoG071评测】开箱&介绍&上电&工程环境搭建&点灯&串口【NucleoG071评测】串口1空闲中断+DMA实现不定长接收【NucleoG071评测】SYSTICK&两种常用的低功耗模式对比【NucleoG071评测】I2COLED&AD采集【NucleoG071评测】PWM呼吸灯【NucleoG071评测】检测HTS221温湿度传感器数据【NucleoG071评测】接上串口LORA模块进行实验&远程控制
okhxyyo stm32/stm8
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved