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

下载本文档

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

文档简介

试用期小结 尊敬的江苏三恒科技集团领导 您好 我叫程克辉 毕业于西北师范大学知行学院 电子信息工程专业 在试用期的两个多月里 我在工程中心软件项目部实习工作 我很 荣幸 能跟着 副总经理学习与专业相关的电子知识 收获不少 这两个多月在任总的指导下 我成功的了解 计算了 BT151 可 控硅 LM2940 1 安恒流调节器 LM317 三端可调正稳压器集成 电路 LM2674 电源高效降压稳压转换器 13F 11 网络隔离变压器 光耦开关 继电器 SC50462 红外遥控发射模块 SM3XX0 3XX1 红外接收头等电子元器件 在任总的指导下和上面的学习我跟着任 总学习 煤矿防爆显示系统 的电路设计 模块学习 也成功的用 c 语言成功的编写控制该系统的 c 程序 由于公司没有人用 c 对红外 解码程序的编写 故在任总的悉心指导下 几经努力终于编写成功并 且能稳定的通过硬件的测试 硬件部分 1 外部 12V 电源转换成 5V 模块 由 LM2674 器件实现 2 外部 1A 恒流源模块 由 LM317 和 LM2940 实现 3 五个独立按键控制继电器模块 由光耦开关实现 4 继电器动作模块 5 红外接收模块 由 SM3XX0 3XX1 红外接收头实现 6 外部的四路光端机 视频转换器 光缆传输 摄像头 画面 分割器 网络视频等模块 试用期的期间 由于刚来啥器件都没有 每每遇到困难的时候我 就及时向 主任汇报 在张主任积极帮助下我的问题往往能很快的 得到解决 特别感谢张主任的无私支持和关怀 在红外线解码的 c 程序设计上 我面临着很大的困难 在学校根 本就没有接触过红外线的解码 因为红外线是一种看不到摸不着的 东西 且我们公司的红外线发射器用的是杭州士兰电子的器件很特 殊 它没有引导码只有 16 位的用户码和按键的数据码 这样写出来 的 c 解码程序就很容易受到外部红外线的干扰 在程序初始化和有 红外脉冲时能接收 16 位的 0 脉冲 即使解码出错也能有 00H 的码 进入 还好最后在我用数码管把红外线解出来的码显示出来 这样 一切问题就迎刃而解了 程序能成功调试并通过硬件测试 以上是我的试用期小结 在试用期中不足的地方望领导同事及时 指出 以便于本人及时改正 两个月体会到三恒的精神 知道了集 团的发展潜力 万分幸运 我能成为三恒的一员 此致 敬礼 二零一一年九月七日 红外线解码程序和公司具体项目要求程序 include include define uint unsigned int 宏定义 define uchar unsigned char uchar num uchar irtime startflag bitnum irreceok uchar irdata 16 ircode 2 uchar irprosok uchar n sbit key1 P3 3 独立按键定义 sbit key2 P3 4 sbit key3 P3 5 sbit key4 P3 6 sbit key5 P3 7 sbit key6 P2 0 继电器端口定义 sbit key7 P2 1 sbit key8 P2 2 sbit key9 P2 3 sbit key10 P2 4 void irmove 动作函数的申明 void delay uint z 延时子函数 uint x y for x z x 0 x for y 110 y 0 y void keyskay if key1 0 delay 5 消抖 if key1 0 如果键 1 确实按下 P2 0 xff key6 0 继电器 1 动作显示器显示第一屏画面 while 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 如果键 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 初始化 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 j 2 j 因为是 16 位的码 顾只需要用两个字节保存用 户码和数据码 for i 0 i 1 因为是从高位读取遥控器发送的数据 顾要右移吧第一次读的数据位送到最低位 if irdata k 6 每进来一次进行判断读取的时间值是不是 1 value value 0 x80 是 1 就用或运算把读取数置 1 k 往下读取下一个时间值 ircode j value 把二进制的码存到一个数组中 irprosok 1 数据从时间值处理到二进制值成功 根据读取的二进制数据码判断哪一个继电器工作 void irmove switch ircode 1 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 第二次进来就自动退出 P2 0 xff key9 0 n 1 while ircode 1 0 x0d delay 5 while ircode 1 0 x0d break if ircode 1 0 x0d key10 0 n 0 while n delay 100 while n void main time0init int0init while 1 使程序一直运行 keyskay 按键优先 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 startflag 1 红外接收标志 irdata bitnum 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

提交评论