ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:17.89KB ,
资源ID:4767651      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4767651.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(红外线解码心得和解码程序.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

红外线解码心得和解码程序.docx

1、红外线解码心得和解码程序试用期小结尊敬的江苏三恒科技集团领导: 您好! 我叫程克辉,毕业于西北师范大学知行学院,电子信息工程专业。在试用期的两个多月里,我在工程中心软件项目部实习工作,我很荣幸,能跟着*副总经理学习与专业相关的电子知识,收获不少!这两个多月在任总的指导下,我成功的了解、计算了:BT151可控硅、LM2940(1安恒流调节器)、LM317三端可调正稳压器集成电路、LM2674电源高效降压稳压转换器、13F-11网络隔离变压器、光耦开关、继电器、SC50462红外遥控发射模块、SM3XX0/3XX1红外接收头等电子元器件。在任总的指导下和上面的学习我跟着任总学习“煤矿防爆显示系统”

2、的电路设计、模块学习,也成功的用c语言成功的编写控制该系统的c程序,由于公司没有人用c对红外解码程序的编写,故在任总的悉心指导下,几经努力终于编写成功并且能稳定的通过硬件的测试。硬件部分:1、 外部12V电源转换成5V模块。由LM2674器件实现2、 外部1A恒流源模块。由LM317和LM2940实现3、 五个独立按键控制继电器模块。由光耦开关实现4、 继电器动作模块。5、 红外接收模块。由SM3XX0/3XX1红外接收头实现6、 外部的四路光端机、视频转换器、光缆传输、摄像头、画面分割器、网络视频等模块试用期的期间,由于刚来啥器件都没有,每每遇到困难的时候我就及时向*主任汇报,在张主任积极帮

3、助下我的问题往往能很快的得到解决。特别感谢张主任的无私支持和关怀!在红外线解码的c程序设计上,我面临着很大的困难,在学校根本就没有接触过红外线的解码,因为红外线是一种看不到摸不着的东西,且我们公司的红外线发射器用的是杭州士兰电子的器件很特殊。它没有引导码只有16位的用户码和按键的数据码,这样写出来的c解码程序就很容易受到外部红外线的干扰。在程序初始化和有红外脉冲时能接收16位的0脉冲,即使解码出错也能有00H的码进入。还好最后在我用数码管把红外线解出来的码显示出来,这样一切问题就迎刃而解了!程序能成功调试并通过硬件测试。以上是我的试用期小结,在试用期中不足的地方望领导同事及时指出,以便于本人及

4、时改正!两个月体会到三恒的精神,知道了集团的发展潜力!万分幸运,我能成为三恒的一员!此致!敬礼! 二零一一年九月七日红外线解码程序和公司具体项目要求程序:#include/#include#define uint unsigned int /宏定义#define uchar unsigned charuchar num;uchar irtime,startflag,bitnum,irreceok;uchar irdata16,ircode2;uchar irprosok;uchar n;sbit key1=P33; /独立按键定义sbit key2=P34;sbit key3=P35;sbit

5、 key4=P36;sbit key5=P37;sbit key6=P20; /继电器端口定义sbit key7=P21;sbit key8=P22;sbit key9=P23;sbit key10=P24;void irmove(); /动作函数的申明void delay(uint z) /延时子函数 uint x,y; for(x=z;x0;x-) for(y=110;y0;y-);void keyskay() if(key1=0) delay(5); /消抖 if(key1=0) /如果键1确实按下 P2=0xff; key6=0; / 继电器1动作显示器显示第一屏画面 while(!k

6、ey1); delay(5); while(!key1); else if(key2=0) delay(5); if(key2=0) / 如果键2确实按下 P2=0xff; key7=0; / 继电器2动作显示器显示第二屏画面 while(!key2); delay(5); while(!key2); else if(key3=0) delay(5); if(key3=0) /如果键3确实按下 P2=0xff; key8=0; / 继电器3动作显示器显示第三屏画面 while(!key3); delay(5); while(!key3); else if(key4=0) delay(5); i

7、f(key4=0) / 如果键4确实按下 P2=0xff; key9=0; / 继电器4动作显示器显示第四屏画面 while(!key4); delay(5); while(!key4); else if(key5=0) delay(5); if(key5=0) / 如果键5确实按下 P2=0xff; key10=0; / 继电器5动作显示器四路画面同时显示 while(!key5); delay(5); while(!key5); /*选择定时器模式、启动定时器、开中断的初始化*/void time0init(void) TMOD=0x02; TH0=0x00; TL0=0x00; ET0=

8、1; EA=1; TR0=1;/*外部中断0初始化*/void int0init() IT0=1; EX0=1; EA=1;/*读取用户码、数据码并且判断0、1*/void irpros() uchar k,i,j;/变量定义 uchar value; k=0; /从第一个读取的时间开始判断0、1 for(j=0;j2;j+) /因为是16位的码,顾只需要用两个字节保存用户码和数据码 for(i=0;i1;/因为是从高位读取遥控器发送的数据,顾要右移吧第一次读的数据位送到最低位 if(irdatak6)/每进来一次进行判断读取的时间值是不是1 value=value | 0x80; /是1就用

9、或运算把读取数置1 k+; /往下读取下一个时间值 ircodej=value;/把二进制的码存到一个数组中 irprosok=1; /数据从时间值处理到二进制值成功/*根据读取的二进制数据码判断哪一个继电器工作*/void irmove() switch(ircode1) case 0x01: /如果数据码是01H就显示第一屏 P2=0xff; key6=0; break; case 0x09: /如果数据码是09H就显示第2屏 P2=0xff; key7=0; break; case 0x05: /如果数据码是05H就显示第3屏 P2=0xff; key8=0; break; case 0

10、x0d: /如果数据码是0dH就显示第4屏 if(n=1) break;/第二次进来就自动退出 P2=0xff; key9=0; n=1; while(ircode1=0x0d); delay(5); while(ircode1=0x0d); break; if(ircode1=0x0d&n=1) /如果数据码是0dH并且键按下了两次就四屏同时显示 P2=0xff; key10=0; n=0; while(n); delay(100); while(n); void main() time0init(); int0init(); while(1) /使程序一直运行 keyskay(); /按键

11、优先 if(irreceok)/如果接收到红外并且16位接收成功就进入时间值的处理转换成二进制 irpros(); /时间值转换成二进制函数 irreceok=0; if(irprosok) /如果时间值转化成二进制成功处理就进入才开中断、定时 irprosok=0; TR0=1; EX0=1; irmove();/成功判断数据码并且相关的继电器动作 delay(100); /延时200ms进行红外判断并且避开外部红外干扰 void timer0() interrupt 1 irtime+;/255字符型最大、对每一个脉冲自动计时void int0() interrupt 0 if(start

12、flag=1) /红外接收标志 irdatabitnum=irtime; /把每一个脉冲的时间用一个数组存储 irtime=0; /一个脉冲接收结束就对时间归零初始化 bitnum+; /数组单元往后计数 if(bitnum=16) /如果接收的码正好是16位的码就执行下面的操作 bitnum=0; /为下一个脉冲准备,对数组初始化 irreceok=1; /红外接收OK EX0=0; / 关闭外部中断避免外部干扰 TR0=0;/停止计时不再读取遥控器发来的脉冲,到这个脉冲解码完成才开启进行下一个脉冲计时 else /如果有下降延进来红外接收标志位不是1就进入 startflag=1; /置1 irtime=0;/脉冲时间计时归零

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1