红外线解码心得和解码程序_第1页
红外线解码心得和解码程序_第2页
红外线解码心得和解码程序_第3页
红外线解码心得和解码程序_第4页
红外线解码心得和解码程序_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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=P3A3; 独立按键定义sbit key2=P3A4;sbit key3=P3A5;

5、sbit key4=P3A6;sbit key5=P3A7;sbit key6=P2A0;继电器端口定义 sbit key7=P2A1;sbit key8=P2A2;sbit key9=P2A3;sbit key10=P2A4;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=0 xff;key6=0; / 继电器1动作显示器显示第一屏画面 wh

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

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

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

9、=value;/把二进制的码存到一个数组中irprosok=1;数据从时间值处理到二进制值成功/*根据读取的二进制数据码判断哪一个继电器工作*/void irmove()(switch(ircode1)(case 0 x01:如果数据码是01H就显示第一屏P2=0 xff;key6=0;break;case 0 x09: /如果数据码是09H就显示第2屏P2=0 xff;key7=0;break;case 0 x05: /如果数据码是05H就显示第3屏P2=0 xff;key8=0;break;case 0 x0d: 如果数据码是0dH就显示第4屏if(n=1)break;/第二次进来就自动退

10、出P2=0 xff;key9=0;n=1;while(ircode1=0 x0d);delay(5);while(ircode1=0 x0d);break;if(ircode1=0 x0d&n=1) 如果数据码是0dH并且键按下了两次就四屏同时显示P2=0 xff;key10=0;n=0;while(n);delay(100);while(n);void main()(time0init();int0init();while(1) 使程序一直运行(keyskay(); /按键优先if(irreceok)/如果接收到红外并且16位接收成功就进入时间值 的处理转换成二进制(irpros(); /时

11、间值转换成二进制函数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(startflag=1)红外接收标志(irdatabitnum=irtime;/把每一个脉冲的时间用一个数组存储irtime=0;一个脉冲接收结束就对时间归零初始化bitnum+;数组单元往后计数if(bitnum=16)如果接收的码正好是16位的码就

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论