为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

基于51单片机红外发射与接收C程序

2011-07-28 7页 doc 187KB 134阅读

用户头像

is_976577

暂无简介

举报
基于51单片机红外发射与接收C程序基于51单片机红外发射与接收程序 实验证明,效果非常好。 红外发射程序 #include #include #define uchar unsigned char #define uint unsigned int sbit key1=P3^3; sbit key2=P3^4; sbit key3=P3^5; sbit LED=P1^0; //发射指示灯 sbit out=P3^7; uchar i,a,num1; void init()//初始化作用 { key1=1; key2=1; key3=1; } void dela...
基于51单片机红外发射与接收C程序
基于51单片机红外发射与接收程序 实验证明,效果非常好。 红外发射程序 #include #include #define uchar unsigned char #define uint unsigned int sbit key1=P3^3; sbit key2=P3^4; sbit key3=P3^5; sbit LED=P1^0; //发射指示灯 sbit out=P3^7; uchar i,a,num1; void init()//初始化作用 { key1=1; key2=1; key3=1; } void delay(uchar aa) { uchar bb,cc; for(bb=aa;bb>0;bb--) for(cc=200;cc>0;cc--); } void delayms(uchar aa)//延时程序 { for(a=aa;a>0;a--) { _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); } } void khz(uchar aa)//是发射38KHZ的程序 { for(a=aa;a>0;a--) //这个for语句可以得到准确的26.3波特率 { out=0; i=7; //低了17us while(i>0)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.5ms void fashu(uchar num) { khz(116);//发射3ms 38khz delayms(125); for(num1=8;num1>0;num1--) //原来用的是a 后来出错,肯定在这里! { khz(40); if(num&0x01) delayms(93);//delay 1.5ms else delayms(65);//delay 1ms num=num>>1; } 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 int sbit led1=P1^0; sbit led2=P1^1; sbit led3=P1^2; sbit in=P3^2; 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;i>0;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.446ms while(1); } void sieasdf() interrupt 0 { EX0=0; for(a=5;a>0;a--) { delayms(35);//延时0.5ms 判断5次 5*0.5=2.5ms if(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;a>0;a--) { while(!in); delayms(86);//延时1.188ms 判断IO高低,从而得0或1 num=num>>1; if(in) { num=num|0x80; delayms(31);//延时0.6ms 因为上面延时1.2ms+0.6 刚好跳过1.5ms } } P2=num; } } fleg=1; EX0=1; }
/
本文档为【基于51单片机红外发射与接收C程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索