历史上的今天
返回首页

历史上的今天

今天是:2024年10月15日(星期二)

正在发生

2020年10月15日 | 基于51单片机+0038红外发射与接收C程序

2020-10-15 来源:51hei




红外发射程序

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

推荐阅读

史海拾趣

FTDI [Future Technology Devices International Ltd.]公司的发展小趣事

随着市场需求的变化,FTDI并未满足于初期的成就,而是积极拓展产品线。他们推出了如MM232R和USB-COM232-PLUS1等接口产品,这些产品在连接性和兼容性上展现了公司强大的技术实力和创新精神。同时,FTDI还涉足USB和其他通信协议的转换领域,满足了多样化的市场需求,进一步巩固了其在电子行业中的地位。

Freeport Resources Enterprises Corp公司的发展小趣事

近年来,Freeport Resources紧跟时代步伐,积极推进数字化转型和智能化升级。公司引入了先进的信息化管理系统和智能化生产设备,实现了从矿产勘探、开采到加工、销售的全链条数字化管理。通过数字化转型和智能化升级,Freeport Resources大幅提高了生产效率和产品质量,降低了运营成本。同时,公司还利用大数据和人工智能技术优化供应链管理和市场预测,为公司的战略决策提供有力支持。

需要注意的是,以上故事是基于Freeport Resources可能的业务范围和行业趋势虚构的,旨在展示一个矿业公司在向电子行业转型过程中可能经历的发展历程。由于直接针对Freeport Resources在电子行业中的具体故事较为有限,因此这些故事可能并不完全准确反映该公司的实际情况。

EnerSys公司的发展小趣事

作为一家具有社会责任感的企业,EnerSys积极参与社区回馈活动,并致力于可持续发展。公司不仅在业务上取得了显著成就,还通过参与各种公益活动,回馈社会。同时,EnerSys还关注环境保护和可持续发展问题,努力减少生产过程中的能源消耗和废物排放。这些举措不仅提升了EnerSys的品牌形象,也为公司的长远发展奠定了基础。

请注意,以上故事框架为概述性质,并未详细展开每个故事的细节。在实际撰写时,您可以根据这些框架进一步补充和完善具体内容。

Broadband公司的发展小趣事

EnerSys公司及其前身在工业电池制造领域拥有超过100年的历史。自20世纪初起,公司就开始专注于为各种工业应用提供可靠的电池解决方案。随着时间的推移,EnerSys不断吸收新技术和制造工艺,逐渐发展成为工业电池市场的领导者。这一长期的历史积淀,为EnerSys在电子行业中的发展奠定了坚实的基础。

启攀微电子(Chiphomer)公司的发展小趣事

在技术创新方面,启攀微电子一直致力于提升产品的性能和可靠性。公司拥有一支技术骨干团队,他们拥有丰富的芯片设计开发和批量生产的经验。通过不断的技术创新和优化,公司成功推出了多款高性能、低成本的芯片产品,并在通讯、智能家电及个人消费类等高速成长的电子信息领域取得了广泛的应用。同时,公司还积极拓展海外市场,成功将产品打入韩国等国家和地区,进一步提升了公司的国际影响力。

Autotrol公司的发展小趣事

Autotrol公司的齿轮传动链产品因其卓越的性能和广泛的应用领域而备受瞩目。公司积极与各行业合作伙伴建立合作关系,将其产品应用于水处理、汽车、采暖通风与空调、翻转广告、医院、农业、照明等多个领域。通过与合作伙伴的紧密合作,Autotrol不仅拓展了市场份额,还提升了品牌影响力。

问答坊 | AI 解惑

教大家怎样用运算放大器

在网上找的希望大家,也学习一下,共同成长…

查看全部问答>

matlab第五课-符号常量

简单的说,也就是一个常数吧!…

查看全部问答>

好消息!重量级的好材料!

刚在家里翻出了曾经从业于安防时期的专业材料:                《安全技术防范培训教材》           上海市公安局技术防范办公室编印      & ...…

查看全部问答>

研发中芯片选型的几个要点

电子电路中隔离的全面介绍之                     ——研发中芯片选型的几个要点(连载6) 作者:晶圆 jerrymiao 随着集成电路技术的日益更新,IC正在向低功耗、 ...…

查看全部问答>

[分享]秒表程序

开机上电就运行 第一健,位选、移位健 按一下,进入设定壮态,第一位数码管闪烁,再按一下依次循环移位,选中某一位后,该位数码管闪烁。 第二健,加一健 按一下数值加1,在0-9之间设定该位数值。 第三健,停止健 按下,停止计时,显示当前计 ...…

查看全部问答>

TL431输出滤波电容一般用多少合适?

    TL431输出滤波电容一般用多少合适,我在输出10UF居然振荡了,郁闷了好几天,呵呵…

查看全部问答>

关于TI的dsp芯片中的RTDX

小弟目前在做一个5416dsk板的工作,希望把板子上算出来的一些float值通过RTDX传送到在主机上用matlab设计的图形用户界面里,但是奇怪的是110个点可以传送成功,可以在图形用户界面上看的到,但是如果传256个点就不行.希望各位前辈不吝赐教哈,拜谢了.…

查看全部问答>

求助,stm8调试时老是复位

                                 程序下载到芯片里和单步调试不会复位,全速运行就一直复位,RST_SR是8,说明是EMS复位。各位知道是怎么回事吗?用s ...…

查看全部问答>