红外发射程序

#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;

[1] [2]
关键字:51单片机  红外发射  接收C程序 引用地址:基于51单片机+0038红外发射与接收C程序

上一篇:keil编译中所有编译的错误信息
下一篇:基于AT89c51单片机的音乐闹钟

推荐阅读

电视/显示屏幕、投影机与家庭影院音响三大类产品,是构建家用视听环境的主要元素。随着显示技术不断的提升,例如屏幕分辨率越来越高,消费者的焦点也从画面呈现的细致度转向到高水平的音质输出,以追求更好的影音体验。近年来影音规格趋于多元化,形成新的家庭影音生态链以及创新应用趋势,其中又以Dolby及DTS为环绕音效市场的主流。 以Dolby系统音效为例...
穿戴设备大牌 Fitbit 官方宣布,已经制定计划,将其所有智能手表、运动手环等穿戴设备的生产从中国迁走,2020 年 1 月起不会再有“中国制造”的产品。 Fitbit 表示,受中美贸易冲突影响,2018 年起公司开始在中国之外寻求其他的生产地,同时调整了供应链、制造工厂。 今后,Fitbit 的产品将不再受到美国“301 条款”的约束。 所谓 301 条款,是美...
CINNO Research 产业资讯,笔记本电脑形态革新项目正式开启,三星、英特尔、微软等全球 IT 企业都在推行折叠屏笔记本电脑商用。折叠屏电脑时代来临在即。 根据韩媒 Etnews 报道,三星显示、BOE 等面板厂正着手于开发折叠笔记本电脑 17 吋 OLED 面板,折叠后尺寸为 13 吋,计划搭载英特尔 Horseshoe bend 平台。Horseshoe bend 是今年初...
结构综述Figure 3. AVR 结构的方框图为了获得最高的性能以及并行性, AVR 采用了Harvard 结构,具有独立的数据和程序总线。程序存储器里的指令通过一级流水线运行。CPU 在执行一条指令的同时读取下一条指令( 在本文称为预取)。这个概念实现了指令的单时钟周期运行。程序存储器是可以在线编程的FLASH。 快速访问寄存器文件包括32 个8 位通用工作...

史海拾趣

问答坊 | AI 解惑

Stellaris单片机相关安装软件下载

[ 本帖最后由 chenzhufly 于 2010-3-15 18:35 编辑 ]…

查看全部问答∨

点阵电子显示屏

本帖最后由 paulhyde 于 2014-9-15 09:22 编辑  …

查看全部问答∨

菜鸟问题:隐式声明函数 copy_to_user。大家帮忙啊

#include <linux/module.h> #include <linux/init.h> #include <linux/fs.h>       /* everything... */ #define DEVICE_NAME                "demo" #define de ...…

查看全部问答∨

基于wm5的RFID读写驱动中间件开发

我最近参与了老师的一个实验室项目,其中有一项内容是在windows mobile5的平台上开发sirit公司产的RFID读写器的驱动,我开发的环境是c# .net cf2.0,使用vs2008,读写卡是sdio插口。如今我向各位大侠请教的是如何开发类似的驱动,模拟器能否模拟还 ...…

查看全部问答∨

求教wince下设置窗口刷新区域大小的API函数

本人在开发一个WINCE下的流媒体播放软件,在加入GUI后,出现一个比较头疼的问题,在播放流媒体,视频窗口是可变的,在播放界面退回主界面时,需要重画整个窗口,显示主界面贴图。但我发现winCE在窗口重画时,判断的更新区域不是全屏,而是视频窗大 ...…

查看全部问答∨

倾囊求助 s3c44B0x 板子问题

前一段时间买了个s3c44B0的板子,用了没几次就不行了,上电后串口没有任何打印信息 附带的资料说是正常情况上电后 应该 d1 d2 d3依次闪烁,我的板子是它们一齐全亮了,重烧系统也不行。 com1 下面就是那三个灯 <img src="http://p.blog.eewo ...…

查看全部问答∨

新手51串口接收的问题!!!!!

51串口每秒接收一组上位机数据,要求是如果这组数据是想要的就控制一个开关通断!想请教的是串口中断接收数据怎么才能很好的控制一个开关通断,开关平均500MS闭合一次!在接收中断函数里面写延时行不通!请教各位。。!…

查看全部问答∨

飞思卡尔SCI教程

SCI即UART这是我们的一个教程,当初是为nss08kit_r1开发板写的它应该使用与所有s08单片机,也适用于coldfire v1 mcu转载请注明出处…

查看全部问答∨

求助:signaltap II抓取波形问题

遇到这个问题:用signaltap来抓取波形分析,采样时钟用的200m,能抓到100m的时钟,但不能抓到通过100m时钟处理得信号数据波形,这是怎么回事呢? 还有,加入signaltap后,编译综合后出现一些警告,不知道怎么处理这类问题呢?望知道的朋友给点建议 ...…

查看全部问答∨

液晶UI设计

最近想把以前的做的项目的液晶显示做的好看一些,使用的控制芯片为F28027,原先使用的液晶为NOKIA5110.同样也考虑使用SPI总线的TFT来做,希望做过UI界面设计的仪器讨论一下。 上传的为我要显示的内容,有温湿度,海拔高度,GPS数据,UTC时间,计步 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved