通过hx1838遥控数码管显示对应数字的程序及问题
通过hx1838遥控数码管显示对应数字的程序
```c
#include<reg52.h>
sbit IR=P3^2;
#define DATA P0
sbit wei1=P2^4;
sbit wei2=P2^5;
sbit wei3=P2^6;
sbit wei4=P2^7;
unsigned char code duanma[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0123456789
unsigned char irtime;//红外用全局变量
bit irpro_ok,irok;
unsigned char ircord[4]; //客户码1+客户码2+操作码+操作反码
unsigned char irdata[33]; //1+8+8+8+8=33 /*函数定义*/
void tim0init(void) //定时器t0初始化
{TMOD=0x02; //t0工作方式2(自动重装)TH0=0X00;TL0=0X00;ET0=1;TR0=1; //计时器开
}void EX0init(void) //外部中断初始化
{IT0=1; //下降沿触发EX0=1;EA=1;
}void ir_work(void) //红外键值散转程序
{switch(ircord[2]) //判断第三个数码值{ case 0x19:DATA=duanma[0]; //注意,每个遥控器对应键值不一样,需要自己用led灯把每个键的键值试探出来break; case 0x45:DATA=duanma[1];break;case 0x46:DATA=duanma[2];break; case 0x47:DATA=duanma[3];break;case 0x44:DATA=duanma[4];break;case 0x40:DATA=duanma[5];break;case 0x43:DATA=duanma[6];break;case 0x07:DATA=duanma[7];break;case 0x15:DATA=duanma[8];break;case 0x09:DATA=duanma[9];break;default:break;}
}void ircordpro(void)
{unsigned char i,j,k;unsigned char cord,value; //value默认值为0k=1; //因为第一位引导码不需要,所以直接从客户码传入for(i=0;i<4;i++){ for(j=1;j<=8;j++){cord=irdata[k];if(cord>7) //两次下降沿间隔大于1.9msvalue|=0x80; //将真值的第一位置1if(j<8){value>>=1; //向右移位}k++;}ircord[i]=value; //将数字信号重新录入到新数组value=0;}irpro_ok=1; //允许进入下一个函数
}
/*主函数*/
void main()
{ //1.计时器打开,中断允许EX0init(); //初始化外部中断 2. 数码管打开tim0init(); //初始化定时器 3.引导码进入触发中断wei1=1; // 4.电平记录在irdata里wei2=1;wei3=1;wei4=1;while(1){if(irok){ircordpro();irok=0;}if(irpro_ok){ir_work();}}
}/*中断处理*/
void tim0_isr(void) interrupt 1 using 1
{irtime++; //用于计数2个下降沿之间的时间,一次中断236us
}
void EX0_ISR(void) interrupt 0
{static unsigned char i; //接收红外信号处理static bit startflag; //是否开始处理标志位,默认值为0if(startflag){if(irtime<50&&irtime>=33)//引导码头码,判断引导码时长在9~17.5ms之间i=0; //开始计数irdata[i]=irtime;//irdata存储每个电平的持续时间,用于判断是0还是1irtime=0; //重新计时i++; //下一个电平if(i==33) //1+8+8+8+8=33{irok=1; //红外码接收中止i=0;}}else{irtime=0;startflag=1;}
}
**红外遥控程序中要注意的事项**1. 要先测出遥控器每个键的十六进制键值,可在此程序的基础上稍加更改(将switch函数替换)测出2. 测量引导码的时间范围不唯一,这里只选定了稍微合适的范围,但只要能把引导码的时间长度与0,1区分即可3. 最后需要的只有操作码,不需要客户码和操作反码4. hx1838接线,“+“接5v,”-“接gnd,剩下一个接P3.2
通过hx1838遥控数码管显示对应数字的程序及问题相关推荐
- 基于6位数码管显示的数字钟
//基于6位数码管显示的数字钟 #include<reg51.h> sbit no_off = P1^0; //该按键用于暂停计时,设置时间 sbit select = P1^1; //该 ...
- 8255控制四个双色灯C语言,汇编语言实现通过8255A和4个开关控制实现8个LED灯和8个7位数码管显示指定数字全亮、全灭、从左至右、从右至左跑马灯式点亮...
最后改进代码: .MODELTINY .STACK100 .DATA ledshow DB 11111110B ;数据段定义变量按"变量名 数据类型 数据";DB为字节型 seve ...
- 数码管显示倒计时c语言程序,1~99秒倒计时数码管显示C程序+Proteus仿真
1~99秒倒计时数码管显示C程序+Proteus仿真文件. 优化了程序,使用51单片机内部定时器,可以实现1-99秒内倒计时. 仿真效果为: 源程序为: /* 调试环境:Proteus 7.8AT89 ...
- 89c51,8255,6个led数码管显示时钟的汇编语言程序,汇编语言要求编写一个时钟程序 用八位数码管实现时分秒的计时功能...
我以前做的一个6位数码管的时钟程序,你可以看看,其实6位足够了. KEYVALEQU 30H KEYTMEQU 31H KEYSCANEQU 32H DATEQU 33H SCANLEDEQU 39H ...
- 51单片机数码管滚动显示学号_单片机数码管显示0到9程序代码
/* 名称:单只数码管循环显示 0~9 说明:主程序中的循环语句反复将 0~9 的段码送至 P0 口,使数字 0~9 循环显示 */ #include #include #define uchar u ...
- 数码管显示实验一 编写程序让8只数码管同时显示零
编写程序让数码管同时显示零 此实验是共阳极写法 程序: #include <reg51.h> unsigned char segment[]= {0xff,0x7f,0xbf,0xdf,0 ...
- python数码管倒计时程序_树莓派Python编程用1位数码管显示数字倒计时
用1位数码管显示数字倒计时 概述 上一篇 我们学习了使用 PWM 来控制 LED 的亮度,这次我们学习使用1位数码管显示个位数字倒计时. 通过本节课,我们能学习到: 1位数码管的显示原理 所需硬件 树 ...
- FPGA基础知识极简教程(9)七段数码管显示的Verilog简单设计
博文目录 写在前面 正文 七段数码管原理 七段数码管译码表 单个七段数码管显示verilog设计 多个数码管动态扫描显示 参考资料 交个朋友 写在前面 作为FPGA的基础知识教程怎么能少得了这个简单的 ...
- stm32数码管显示实时时间并有闹钟功能
stm32数码管显示实时时间并有闹钟功能 功能描述 数码管介绍 数码管芯片 段选与位选 驱动数码管显示代码 实验思路 完整代码 Led.h Led.c Key.h Key.c beep.h beep. ...
- FPGA学习汇总(六)----数码管显示(1)
目录 概念 单个数码管显示单个数字 操作 代码 现象 分析 四个数码管定时单个显示数字 分析 代码 四个数码管同时显示 分析 代码 现象 四个数码管同时显示定时转换 分析 代码 概念 我们要搞懂数码管 ...
最新文章
- Exchange 2007 配置POP3
- 视频驱动V4L2子系统驱动架构 - ioctl
- Linux输入法的几点补充
- 再学 GDI+[60]: TGPGraphics.SetSmoothingMode - 绘图质量
- 使用Spring Security的多租户应用程序的无状态会话
- 上传书籍进度信息到服务器...,使用HttpWebRequest实现大文件上传资料.pdf
- python字符串startswith_Python 字符串 startswith() 使用方法及示例
- ClickHouse 源码阅读 —— SQL的前世今生
- python3 xlrd包的用法
- 提高网站打开速度的7大秘籍
- 中国各省份省会的坐标
- selenium模拟登录QQ空间
- sncr脱硝技术流程图_脱硝技术介绍(SCR和SNCR)
- ubuntu系统打开.chm文件方式
- 彻底搞清楚library cache lock的成因和解决方法(转)
- 物理层-计算机网络知识汇总(二)|Zam9036博客
- 程序员全职接单一个月的感触
- 微信如何设置延迟到账 | 微信到账时间设置在哪里设置 | 微信转账后24小时/2小时/立即到账怎么设置
- 成都百知教育:前4月阿拉山口口岸出口跨境电商包同比增长307%
- Kafka的生产者,消费者JavaApi操作实例
热门文章
- mysql操作 begin 命令_MySQL基础操作
- 百度地图矢量瓦片在线下载
- 黑马程序员 python 数据分析 代码_2020年最新版 5.0程序员 黑马python人工智能数据分析机器学习软件测试全栈开发...
- ug冲模标准件库_UG标准件库|标准件库下载|3DSource零件库|海量CAD模型
- node mysql 坑_菜鸟Node.js MySQL教程遇到的坑
- c语言所有逻辑符号大全,C语言中的逻辑取反是“~”符号吗逻辑或是“|”符号吗?...
- Android WebView优化
- 24张最新可视化大屏模板,各行业数据直接套用
- 阿里云发送短信验证码
- 点云数据实时在线浏览共享与逆向建模应用