欢迎来到天天文库
浏览记录
ID:1191402
大小:187.00 KB
页数:7页
时间:2017-11-08
《基于51单片机红外发射与接收c程序》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、基于51单片机红外发射与接收程序实验证明,效果非常好。红外发射程序#include#include#defineucharunsignedchar#defineuintunsignedintsbitkey1=P3^3;sbitkey2=P3^4;sbitkey3=P3^5;sbitLED=P1^0;//发射指示灯sbitout=P3^7;uchari,a,num1;voidinit()//初始化作用{key1=1;key2=1;key3=1;}voiddelay(ucharaa){ucharbb
2、,cc;for(bb=aa;bb>0;bb--)for(cc=200;cc>0;cc--);}voiddelayms(ucharaa)//延时程序{for(a=aa;a>0;a--){_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}}voidkhz(ucharaa)//是发射38KHZ的程序{for(a=aa;a>0;a--)//这个for语句可以得到准确的26.3波特率{out=0;i=7;//低了17uswhile(i>0)i--;//38kHZou
3、t=1;//高了9us17+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.5msvoidfashu(ucharnum){khz(116);//发射3ms38khzdelayms(125);for(num1=8;num1>0;num1--)//原来用的是a后来出错,肯定在这里!
4、{khz(40);if(num&0x01)delayms(93);//delay1.5mselsedelayms(65);//delay1msnum=num>>1;}khz(20);}voidtishi(){LED=0;delay(50);LED=1;delay(50);LED=0;delay(50);LED=1;}voidkeyscan()//按键扫描{if(key1==0){_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();if(key1==0){whi
5、le(!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);ti
6、shi();}}}voidmain(){init();while(1){keyscan();}}红外接收程序#include#include#defineucharunsignedchar#defineuintunsignedintsbitled1=P1^0;sbitled2=P1^1;sbitled3=P1^2;sbitin=P3^2;uchari,a,num;bitfleg;voidinit(){fleg=1;in=1;EA=1;EX0=1;IT0=1;}voiddelayms(uchara
7、a){for(i=aa;i>0;i--){_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}}voidmain(){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);}voidsieasdf()interrupt0{EX0=0;for
8、(a=5;a>0;a--){delayms(35);//延时0.5ms判断5次5*0.5=2.5msif(in)fleg=0;}if(fleg){delayms(72);//延时1ms判断是不是高电平了if(in){de
此文档下载收益归作者所有