基于51单片机红外发射与接收C程序.doc_第1页
基于51单片机红外发射与接收C程序.doc_第2页
基于51单片机红外发射与接收C程序.doc_第3页
基于51单片机红外发射与接收C程序.doc_第4页
基于51单片机红外发射与接收C程序.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

基于51单片机红外发射与接收程序实验证明,效果非常好。红外发射程序#include#include#define uchar unsigned char#define uint unsigned intsbit key1=P33;sbit key2=P34;sbit key3=P35;sbit LED=P10; /发射指示灯sbit out=P37;uchar i,a,num1;void init()/初始化作用key1=1;key2=1;key3=1;void delay(uchar aa)uchar bb,cc;for(bb=aa;bb0;bb-)for(cc=200;cc0;cc-);void delayms(uchar aa)/延时程序for(a=aa;a0;a-)_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();void khz(uchar aa)/是发射38KHZ的程序for(a=aa;a0;a-) /这个for语句可以得到准确的26.3波特率out=0;i=7;/低了17uswhile(i0)i-;/ 38kHZ out=1;/高了9us 17+9=26us 比26.3快一点点/khz(116);/3.028ms 精确的时间/khz(64);/2.006ms/khz(40); /1.052ms/delayms(125);/2.012ms 这里是一些时间的介绍/delayms(65);/1.054ms/delayms(93);/1.5msvoid fashu(uchar num)khz(116);/发射3ms 38khzdelayms(125);for(num1=8;num10;num1-) /原来用的是a 后来出错,肯定在这里!khz(40);if(num&0x01)delayms(93);/delay 1.5mselsedelayms(65);/delay 1msnum=num1;khz(20);void tishi() LED=0;delay(50);LED=1;delay(50);LED=0;delay(50);LED=1;void keyscan()/按键扫描if(key1=0)_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();if(key1=0)while(!key1);fashu(0xf3);tishi();if(key2=0)_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();if(key2=0)while(!key2);fashu(0x3f);tishi();if(key3=0)_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();if(key3=0)while(!key3);fashu(0xf5);tishi();void main()init();while(1)keyscan();红外接收程序#include#include#define uchar unsigned char#define uint unsigned intsbit led1=P10;sbit led2=P11;sbit led3=P12;sbit in=P32;uchar i,a,num;bit fleg;void init()fleg=1;in=1;EA=1;EX0=1;IT0=1;void delayms(uchar aa)for(i=aa;i0;i-)_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();void main()init();/delayms(45);/0.642ms/delayms(35);/0.502ms/delayms(115);/1.623ms/delayms(72);/1.02ms/delayms(84);/1.188ms/delayms(31);/0.446mswhile(1);void sieasdf() interrupt 0EX0=0;for(a=5;a0;a-)delayms(35);/延时0.5ms 判断5次 5*0.52.5msif(in)fleg=0;if(fleg)delayms(72);/延时1ms 判断是不是高电平了if(in)delayms(115);/延时让它超过2ms; 2.5+1+1.623=5.123ms 开始读数据delayms(118);/若偏移一位,可以去掉。for(a=8;a0;a-)while(!in);delayms(86);/延时1.188ms 判

温馨提示

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

评论

0/150

提交评论