模拟红外线遥控器的c语言代码

  • 本代码模拟的是红外线遥控器的1234的编码规则,
    • 51单片机代码

本代码模拟的是红外线遥控器的1234的编码规则,

通过4个按键,可以直接按下触发红外线编码,发射出的红外线与红外线遥控器相同。遥控器如下图1所示。遥控器1234对应码表值如下图2所示。用户码为00FF

51单片机代码

按键为单片机P3.4-P3.7号端口,红外线发射端口为P1.5端口。晶振采用为12M晶振,需要模拟更多按键的请自取。

#include<reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint  unsigned int
#define SBM   0x80                //识别码
#define ms9    (65536-9000)           //约9mS
#define ms4_5  (65536-4500)           //约4.5mS
#define ms1_6  (65536-1630)           //约1.65mS
#define ms_65  (65536-580)        //约0.65mS
#define ms_56  (65536-560)        //约0.56mS
#define ms40   (65536-40000)       //约40mS
#define ms56   (65536-56000)       //56mS
#define ms2_25 (65536-2250)        //约2.25mS
sbit IR  = P1^5;                 //定义发射引脚(接PNP三极管基极)
sbit K1=P3^4;
sbit K2=P3^5;
sbit K3=P3^6;
sbit K4=P3^7;
uchar KEY(void);
void  SanZhuan(void);
void  ZZ(uchar x);
void  Z0(uchar temp);
void  TT0(bit BT,uint x);
/*┈┈┈┈┈┈┈┈┈┈┈函数功能:主函数┈┈┈┈┈┈┈┈┈┈┈┈┈┈*/
void main(void)
{ TMOD = 0x01;         //T0 16位工作方式IR=1;                 //发射端口常态为高电平while(1) {SanZhuan();}}
uchar KEY(void)
{if(K1==0)  return 1;if(K2==0)  return 2;if(K3==0)  return 3;if(K4==0)  return 4;return 0;
}
void SanZhuan(void)
{uchar v;v = KEY();switch(v){case 1:ZZ(0x0c);v=0;break;       //" 数字1 "case 2:ZZ(0x18);v=0;break;      //" 数字2 "case 3:ZZ(0x5e);v=0;break;      //" 数字3 "case 4:ZZ(0x08);v=0;break;      //" 数字4 "default:v=0;}}
/*┈┈┈┈┈┈┈┈┈┈函数功能:发送主程序┈┈┈┈┈┈┈┈┈┈┈┈*/
void ZZ(uchar x)
{ TT0(1,ms9);          //高电平9mSTT0(0,ms4_5);           //低电平4.5mS/*┈ 发送4帧数据 ┈*/Z0(SBM);                                                                                Z0(~SBM);Z0(x);Z0(~x);/*┈┈ 结束码 ┈┈*/TT0(1,ms_65);TT0(0,ms40);/*┈┈ 重复码 ┈┈*/while(KEY()){TT0(1,ms9);TT0(0,ms2_25);TT0(1,ms_56);TT0(0,ms40);TT0(0,ms56);               }}
/*┈┈┈┈┈┈┈┈┈┈单帧发送程序┈┈┈┈┈┈┈┈┈┈┈┈*/
void Z0(uchar temp)
{ uchar v;for (v=0;v<8;v++)                     //循环8次移位 {     TT0(1,ms_65);              //高电平0.65mS         if(temp&0x01) TT0(0,ms1_6); //发送最低位else          TT0(0,ms_56);     temp >>= 1;                //右移一位 }}
/*┈┈┈┈┈┈┈┈┈38KHz脉冲发射 + 延时程序┈┈┈┈┈┈┈┈┈┈┈┈*/
void TT0(bit BT,uint x)
{TH0 = x>>8;             //输入T0初始值TL0 = x;TF0=0;                   //清0TR0=1;                 //启动定时器0if(BT == 0) while(!TF0);  //BT=0时不发射38KHz脉冲只延时;BT=1发射38KHz脉冲且延时;else while(1)             //38KHz脉冲,占空比5:26{IR = 0;if(TF0)break;if(TF0)break;IR = 1;if(TF0)break;if(TF0)break;if(TF0)break;if(TF0)break;if(TF0)break;if(TF0)break;if(TF0)break;if(TF0)break;if(TF0)break;if(TF0)break;}TR0=0;                   //关闭定时器0TF0=0;                 //标志位溢出则清0IR =1;                   //脉冲停止后,发射端口常态为高电平
}

使用51单片机模拟红外线遥控器的按键发射的红外线相关推荐

  1. 51单片机模拟电梯控制(含完整代码)

    51单片机模拟电梯控制 前言 一.普中51-单核-A2开发板 二.系统功能 三 .预定义 四.电梯内按有报警按键,该功能由外部中断功能和蜂鸣器实现 五.延时函数-----电梯每上升,下降一层和开门关门 ...

  2. 51单片机模拟数字键盘输入以及图像显示+Proteus仿真

    51单片机模拟数字键盘输入以及图像显示+Proteus仿真 关于取模 取模软件:pctolcd2002 文字取模方式:阴码–列行式,逆向 主程序代码 //*********************** ...

  3. 51单片机模拟电子琴+Proteus仿真

    51单片机模拟电子琴+Proteus仿真 Proteus仿真 示例程序 #include<reg51.h> #include<intrins.h>#define uchar u ...

  4. 51单片机:利用两个按键通过中断分别实现数码管上数字自加自减功能(00——99)

    51单片机:利用两个按键通过中断分别实现数码管上数字自加自减功能(00--99) 功能描述: 开关key1控制实现每按一次,数码管数字加1,实现00-99的循环 开关key2按键按一下实现数码管减1, ...

  5. 使用51单片机模拟IIC从机,实现主机(51单片机)对模拟从机的读写操作

    51单片机.IIC从机模拟.IIC协议.iiC读写 1.思路 1.1写数据 1.2读数据 2.从机IIC协议 2.1起始信号和结束信号 2.2从机读取和写数据 2.3从机发送和接收ACK 2.4判断主 ...

  6. 51单片机模拟交通信号灯控制系统设计

    51单片机模拟交通信号灯控制系统设计 设计要求: 1.用LED灯模拟十字路口交通灯控制 2.正常情况下双方向轮流通行 3.特殊情况时,A方向通行 4.紧急情况时,A和B方向都不通行 本任务涉及定时控制 ...

  7. c语言变大变小的图片,51单片机模拟水滴由小变大然后滴落现象(附带C语言源码)...

    51单片机模拟水滴由小变大然后滴落现象(附带C语言源码) [复制链接] #include typedef unsigned char u8; typedef signed char v8; typed ...

  8. 2.基于51单片机的蓝牙遥控器制作

    上一次介绍了基于51单片机的蓝牙遥控小车,使用的是手机APP作为遥控器,本节中介绍使用51单片机制作遥控器. 1.单片机 同样使用51单片机作为控制芯片,同样只需要一个芯片和一个晶振电路单片机就能运行 ...

  9. 基于51单片机模拟乒乓球游戏机系统设计

    毕设帮助.开题指导.技术解答(有偿)见文末. 目录 摘要 一.硬件方案 二.设计功能 三.实物图 四.原理图 五.PCB图 六.Proteus仿真 七.程序源码 八.资料包括 摘要 乒乓球游戏电路是一 ...

最新文章

  1. 2018.3.15校内互测总结-点分治-线段树
  2. ios开发日记- 5 屏幕截图
  3. 干货篇:AI赋能医药工业发展案例
  4. jquery高版本全选与全部选无法正常工作
  5. 可口的JAVA-并发控制之CountDownLatch
  6. delphi——用线程创建一个窗体笔记
  7. 从头编写 asp.net core 2.0 web api 基础框架 (2)
  8. Java final 关键字简述
  9. Android监听返回键、Home键+再按一次返回键退出应用
  10. 更新--本地检查需要下载/删除的文件,然后做替换/删除,并重启
  11. rust第三人称视角插件_第三人称视角ThirdPerson Everything Mod
  12. mac os android 线刷,Mac系统下使用Fastboot线刷安卓设备
  13. PyTorch-1.10(十三)--torch.optim基本用法
  14. c++ open_file函数
  15. ECMALL模板解析机制.MVC架构分析及文件目录说明.二次开发指南手册
  16. maven Filtering true 作用
  17. C++大法:举世闻名之BOOST大法精华浅析(三)内存管理库(小白piao分享)
  18. 版号解禁,网络游戏却未解冻
  19. 设计心理学中的映射交互设计概念|优漫动游
  20. 这11家世界顶级AI初创公司,每个单拎出来都是行业第一

热门文章

  1. 许少辉论乡村振兴战略下传统村落文化旅游设计获勤写标兵
  2. 【Android】Android Support库介绍
  3. python endswith与startswith_Python中startswith()和endswith()的用法
  4. MWC 2023,奏响运营商的能源变奏曲
  5. 第十五周知原理题目解析
  6. 贝叶斯(上)—下雨天吃什么?
  7. 百度地图SDK for iOS v2.1.0全新发布
  8. normalized
  9. 网络安全-记录web漏洞修复
  10. Off-policy Actor-critic in RL