查看: 1079|回复: 0
打印 上一主题 下一主题

单片机处女作-315M单片机遥控发射电路(原理图+C程序)

[复制链接]
跳转到指定楼层
沙发
发表于 2016-4-23 22:28:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 zx_85 于 2012-8-6 22:09 编辑


我是做射频的,从来没有写过单片机,第一次写的单片机程序。

原理图是315M发射电路,类似PT2262,但和PT2262的发射时序不同。原理图上面有详细说明。

C程序的按键扫描没有加消抖,麻烦指导一下。

程序写的很傻瓜很傻瓜,希望大侠不要笑话我。

原理图:









以下为C程序:

#include<stdio.h>
#include<reg51.h>

#define uchar unsigned char
#define uint unsigned int

sbit TX_STATUS=P1^0;//定义P1.0口为发射状态指示
sbit PA_CNTL=P1^1;//定义P1.1口为功放电源控制信号
sbit data_out=P1^2;//定义P1.2口为数据输出

//初始化程序
void init()
{
        TX_STATUS=0;//初始化,灭发射状态指示灯
        PA_CNTL=0;//初始化,关功放电源使能
        data_out=0;//初始化,关数据输出
}
//初始化程序


//延时程序
void delayms(uint x)
{
        uchar i;
        while(x--)
        {
                for(i=0;i<120;i++);
        }
}
//延时程序


//功放电源开启
void PA_POWER_ON()
{
        PA_CNTL=1;//开功放电源
}
//功放电源开启



//功放电源关闭
void PA_POWER_OFF()
{
        PA_CNTL=0;//关功放电源
}
//功放电源关闭



//发射状态指示程序
void TX_LED()
{
        TX_STATUS=1;//点亮发射指示灯
        delayms(150);//延时150ms
        TX_STATUS=0;//灭发射指示灯
}
//发射状态指示程序



//产生1010        000000        0波形
void wave01()
{
        data_out=1;
        delayms(150);//第1位

        data_out=0;
        delayms(150);//第2位

        data_out=1;
        delayms(150);//第3位

        data_out=0;
        delayms(150);//第4位

        delayms(150);//第5位

        delayms(150);//第6位

        delayms(150);//第7位

        delayms(150);//第8位

        delayms(150);//第9位

        delayms(150);//第10位

        delayms(150);//第11位
}





//产生1010        000001        1波形
void wave02()
{
        data_out=1;
        delayms(150);//第1位

        data_out=0;
        delayms(150);//第2位

        data_out=1;
        delayms(150);//第3位

        data_out=0;
        delayms(150);//第4位

        delayms(150);//第5位

        delayms(150);//第6位

        delayms(150);//第7位

        delayms(150);//第8位

        delayms(150);//第9位

        data_out=1;
        delayms(150);//第10位

        delayms(150);//第11位
}



//产生1010        000010        1波形
void wave03()
{
        data_out=1;
        delayms(150);//第1位

        data_out=0;
        delayms(150);//第2位

        data_out=1;
        delayms(150);//第3位

        data_out=0;
        delayms(150);//第4位

        delayms(150);//第5位

        delayms(150);//第6位

        delayms(150);//第7位

        delayms(150);//第8位

        data_out=1;
        delayms(150);//第9位

        data_out=0;
        delayms(150);//第10位

        data_out=1;
        delayms(150);//第11位
}



//产生1010        000011        0波形
void wave04()
{
        data_out=1;
        delayms(150);//第1位

        data_out=0;
        delayms(150);//第2位

        data_out=1;
        delayms(150);//第3位

        data_out=0;
        delayms(150);//第4位

        delayms(150);//第5位

        delayms(150);//第6位

        delayms(150);//第7位

        delayms(150);//第8位

        data_out=1;
        delayms(150);//第9位

        delayms(150);//第10位

        data_out=0;
        delayms(150);//第11位
}



//产生1010        000100        1波形
void wave05()
{
        data_out=1;
        delayms(150);//第1位

        data_out=0;
        delayms(150);//第2位

        data_out=1;
        delayms(150);//第3位

        data_out=0;
        delayms(150);//第4位

        delayms(150);//第5位

        delayms(150);//第6位

        delayms(150);//第7位

        data_out=1;
        delayms(150);//第8位

        data_out=0;
        delayms(150);//第9位

        delayms(150);//第10位

        data_out=1;
        delayms(150);//第11位
}



//产生1010        000101        0波形
void wave06()
{
        data_out=1;
        delayms(150);//第1位

        data_out=0;
        delayms(150);//第2位

        data_out=1;
        delayms(150);//第3位

        data_out=0;
        delayms(150);//第4位

        delayms(150);//第5位

        delayms(150);//第6位

        delayms(150);//第7位

        data_out=1;
        delayms(150);//第8位

        data_out=0;
        delayms(150);//第9位
        
        data_out=1;
        delayms(150);//第10位

        data_out=0;
        delayms(150);//第11位
}




//产生1010        000110        0波形
void wave07()
{
        data_out=1;
        delayms(150);//第1位

        data_out=0;
        delayms(150);//第2位

        data_out=1;
        delayms(150);//第3位

        data_out=0;
        delayms(150);//第4位

        delayms(150);//第5位

        delayms(150);//第6位

        delayms(150);//第7位

        data_out=1;
        delayms(150);//第8位

        delayms(150);//第9位
        
        data_out=0;
        delayms(150);//第10位

        delayms(150);//第11位
}


//产生1010        000111        1波形
void wave08()
{
        data_out=1;
        delayms(150);//第1位

        data_out=0;
        delayms(150);//第2位

        data_out=1;
        delayms(150);//第3位

        data_out=0;
        delayms(150);//第4位

        delayms(150);//第5位

        delayms(150);//第6位

        delayms(150);//第7位

        data_out=1;
        delayms(150);//第8位

        delayms(150);//第9位
        
        delayms(150);//第10位

        delayms(150);//第11位
}



//产生1010        001000        1波形
void wave09()
{
        data_out=1;
        delayms(150);//第1位

        data_out=0;
        delayms(150);//第2位

        data_out=1;
        delayms(150);//第3位

        data_out=0;
        delayms(150);//第4位

        delayms(150);//第5位

        delayms(150);//第6位

        data_out=1;
        delayms(150);//第7位

        data_out=0;
        delayms(150);//第8位

        delayms(150);//第9位
        
        delayms(150);//第10位

        data_out=1;
        delayms(150);//第11位
}


//产生1010        001001        0波形
void wave10()
{
        data_out=1;
        delayms(150);//第1位

        data_out=0;
        delayms(150);//第2位

        data_out=1;
        delayms(150);//第3位

        data_out=0;
        delayms(150);//第4位

        delayms(150);//第5位

        delayms(150);//第6位

        data_out=1;
        delayms(150);//第7位

        data_out=0;
        delayms(150);//第8位

        delayms(150);//第9位
        
        data_out=1;
        delayms(150);//第10位

        data_out=0;
        delayms(150);//第11位
}



//产生1010        001010        0波形
void wave11()
{
        data_out=1;
        delayms(150);//第1位

        data_out=0;
        delayms(150);//第2位

        data_out=1;
        delayms(150);//第3位

        data_out=0;
        delayms(150);//第4位

        delayms(150);//第5位

        delayms(150);//第6位

        data_out=1;
        delayms(150);//第7位

        data_out=0;
        delayms(150);//第8位

        data_out=1;
        delayms(150);//第9位
        
        data_out=0;
        delayms(150);//第10位

        delayms(150);//第11位
}


//产生1010        001011        1波形
void wave12()
{
        data_out=1;
        delayms(150);//第1位

        data_out=0;
        delayms(150);//第2位

        data_out=1;
        delayms(150);//第3位

        data_out=0;
        delayms(150);//第4位

        delayms(150);//第5位

        delayms(150);//第6位

        data_out=1;
        delayms(150);//第7位

        data_out=0;
        delayms(150);//第8位

        data_out=1;
        delayms(150);//第9位
        
        delayms(150);//第10位

        delayms(150);//第11位
}



//产生1010        001100        0波形
void wave13()
{
        data_out=1;
        delayms(150);//第1位

        data_out=0;
        delayms(150);//第2位

        data_out=1;
        delayms(150);//第3位

        data_out=0;
        delayms(150);//第4位

        delayms(150);//第5位

        delayms(150);//第6位

        data_out=1;
        delayms(150);//第7位

        delayms(150);//第8位

        data_out=0;
        delayms(150);//第9位
        
        delayms(150);//第10位

        delayms(150);//第11位
}


//产生1010        001101        1波形
void wave14()
{
        data_out=1;
        delayms(150);//第1位

        data_out=0;
        delayms(150);//第2位

        data_out=1;
        delayms(150);//第3位

        data_out=0;
        delayms(150);//第4位

        delayms(150);//第5位

        delayms(150);//第6位

        data_out=1;
        delayms(150);//第7位

        delayms(150);//第8位

        data_out=0;
        delayms(150);//第9位
        
        data_out=1;
        delayms(150);//第10位

        delayms(150);//第11位
}


//产生1010        001110        1波形
void wave15()
{
        data_out=1;
        delayms(150);//第1位

        data_out=0;
        delayms(150);//第2位

        data_out=1;
        delayms(150);//第3位

        data_out=0;
        delayms(150);//第4位

        delayms(150);//第5位

        delayms(150);//第6位

        data_out=1;
        delayms(150);//第7位

        delayms(150);//第8位

        delayms(150);//第9位
        
        data_out=0;
        delayms(150);//第10位

        data_out=1;
        delayms(150);//第11位
}



//产生1010        001111        0波形
void wave16()
{
        data_out=1;
        delayms(150);//第1位

        data_out=0;
        delayms(150);//第2位

        data_out=1;
        delayms(150);//第3位

        data_out=0;
        delayms(150);//第4位

        delayms(150);//第5位

        delayms(150);//第6位

        data_out=1;
        delayms(150);//第7位

        delayms(150);//第8位

        delayms(150);//第9位
        
        delayms(150);//第10位

        data_out=0;
        delayms(150);//第11位
}


void key_scan()
{
                uchar x,y,z;
        P2=0x0f;
        x=P2&0x0f;
        P2=0xf0;
        y=P2&0xf0;
        z=x|y;
        
        switch(z)
        {
        case 0xeeA_POWER_ON();wave01()A_POWER_OFF();TX_LED();break;//按键01,输出波形01
        case 0xdeA_POWER_ON();wave02()A_POWER_OFF();TX_LED();break;//按键02,输出波形02
        case 0xbeA_POWER_ON();wave03()A_POWER_OFF();TX_LED();break;//按键03,输出波形03
        case 0x7eA_POWER_ON();wave04()A_POWER_OFF();TX_LED();break;//按键04,输出波形04
        case 0xedA_POWER_ON();wave05()A_POWER_OFF();TX_LED();break;//按键05,输出波形05
        case 0xddA_POWER_ON();wave06()A_POWER_OFF();TX_LED();break;//按键06,输出波形06
        case 0xbdA_POWER_ON();wave07()A_POWER_OFF();TX_LED();break;//按键07,输出波形07
        case 0x7dA_POWER_ON();wave08()A_POWER_OFF();TX_LED();break;//按键08,输出波形08
        case 0xebA_POWER_ON();wave09()A_POWER_OFF();TX_LED();break;//按键09,输出波形09
        case 0xdbA_POWER_ON();wave10()A_POWER_OFF();TX_LED();break;//按键10,输出波形10
        case 0xbb:PA_POWER_ON();wave11();PA_POWER_OFF();TX_LED();break;//按键11,输出波形11
        case 0x7b:PA_POWER_ON();wave12();PA_POWER_OFF();TX_LED();break;//按键12,输出波形12
        case 0xe7:PA_POWER_ON();wave13();PA_POWER_OFF();TX_LED();break;//按键13,输出波形13
        case 0xd7:PA_POWER_ON();wave14();PA_POWER_OFF();TX_LED();break;//按键14,输出波形14
        case 0xb7:PA_POWER_ON();wave15();PA_POWER_OFF();TX_LED();break;//按键15,输出波形15
        case 0x77:PA_POWER_ON();wave16();PA_POWER_OFF();TX_LED();break;//按键16,输出波形16
        default:;
        }
}               
        
        
        

void main()
{        init();//上电初始化
        key_scan();
}

详情见附件:










x








回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入因仑

本版积分规则

快速回复 返回顶部 返回列表