51红外的一些小程序..docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
红外专题讲解 昵 称: 一个人行走 制作日期:2011-7-12 制作目的: 由于我刚开始学红外的时候,什么都不懂,在网上到处找资料,可是在这些找到的资料中,很多都是没有用的,找到的程序,大多都是拷贝的某某公司提供的示例源程序,大多都是千篇一律,看过很多的百度提问,可是基本上都没有从根本上解决问题,也上过豆丁之类的,看看东西还要积分,我郁闷了,当时我就立志等我学会红外红一定做个红外的专题,免费的分享给大家,以方便苦苦探索的莘莘学子。 苦恼了好一阵后,幸好认识一位嵌入的大哥,给我了帮助,给我资料,功夫不负有心人,今天我终于学了红外的一些知识,为了谢谢帮助过我的大哥,我只能将他交给我的分享给大家,以此回报他,因此在这里将我所学到的免费的分享给大家,供大家交流学习。 至于程序,它是灵活多变,大家不要习惯性的CTRl+A,CTRL+C,要读懂它的意思,根据程序的思想,然后自己发挥,从而真正掌握它的原理。 大家如有疑问的可以和我交流,我的QQ:925171906,在此祝福所有在学习道路上孜孜不倦的可敬可佩的学子们,学业大成!对于经济窘迫的我来说,习惯了拿不收费的资料,并对变相收费有一种深恶痛绝的感觉;让更多的人来(更容易)了解红外,贡献自己的一点力 量。也希望大家有好资料的多分享一下,不要那么小气,还要什么积分什么的。 1硬件连接:P0口为数码管的段选段,P2口的高四位为数码管的位选端,红外接连在P3.2端,即连接在外部中断0处 2.主要功能:用数码管显示接收到的红外按键的键码 3.程序如下: //硬件连接 #include reg51.h #include intrins.h #define uchar unsigned char #define uint unsigned int sbit hongwai = P3^2;//此表为 数码管的字模, 共阴数码管 0-9 - uchar code table[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71}; uchar recieve[3];//储存用户码、用户反码与键数据码、键数据反码 uchar a[]={0,0,0,0}; void delay(uint i) { char j; for(i; i 0; i--) for(j = 200; j 0; j--); } void IRdelay(uchar x) //x*0.14MS { uchar i; while(x--) { for (i = 0; i13; i++); } } void display(uchar keyno) { uchar i,j; a[0]=keyno%10000/1000; a[1]=keyno%1000/100; a[2]=keyno%100/10; //十位 a[3]=keyno%10; //个位 j=0xfe; //对数码管进行逐位扫描显示 for(i=0; i=3; i++) { j=_cror_(j,1); P2=j; P0 = table[a[i]]; delay(50); } P0 = 0; } void IR_IN(void) interrupt 0 //外部中断0,即红外接收P3.2 { uchar j,k,count=0; EX0 = 0; //关闭外部中断0,即停止接收红外 IRdelay(5); if (hongwai==1) { EX0 =1; return; } //确认IR信号出现 while (!hongwai) //等IR变为高电平,跳过9ms的前导低电平信号。 { IRdelay(1); } for (j=0;j4;j++) //收集四组数据 { for (k=0;k8;k++) //每组数据有8位 { while (hongwai) //等 IR 变为低电平,跳过4.5ms的前导高电平 信号。 { IRdela

文档评论(0)

dbtx + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档