微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 求一个红外发射接收单片机程序

求一个红外发射接收单片机程序

时间:10-02 整理:3721RD 点击:
急求高手、大师、大神们帮帮小弟了。
用单片机STC15F104E
38KHZ红外发射,两路红外接收(用0038红外接收管)2路输出(连续高或低电平都行)
单片机有,下载软件有,下载硬件有,单片机程序等待中………………………………………………

怎么没人帮忙呢? 如果可以帮我写好程序 会有一定的报酬!1

RMB200有没有人写

RMB500有没有人写?

#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit key1=P1^0;
sbit key2=P1^1;
sbit key3=P1^2;
sbit key4=P1^3;
sbit LED=P1^4; //发射指示灯
sbit out=P3^1;
uchar i,a,num1;
void init()//初始化作用
{
        key1=1;
        key2=1;
        key3=1;
        key4=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();
                }
        }
        if(key4==0)
        {
                _nop_();_nop_();_nop_();_nop_();
                _nop_();_nop_();_nop_();_nop_();
                if(key3==0)
                {
                        while(!key3);
                        fashu(0x5f);//开关机
                        tishi();
                }
        }               
}
void main()
{
        init();
        while(1)
        {
                keyscan();
        }
}
你参考下

进来学习一下也不错的

多少吧,我可以试下                          

这个很简单 加Q1925276216详谈

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top