搜索
bottom↓
回复: 40

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

  [复制链接]

出0入54汤圆

发表于 2012-8-6 22:00:45 | 显示全部楼层 |阅读模式
本帖最后由 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 0xee:PA_POWER_ON();wave01();PA_POWER_OFF();TX_LED();break;//按键01,输出波形01
        case 0xde:PA_POWER_ON();wave02();PA_POWER_OFF();TX_LED();break;//按键02,输出波形02
        case 0xbe:PA_POWER_ON();wave03();PA_POWER_OFF();TX_LED();break;//按键03,输出波形03
        case 0x7e:PA_POWER_ON();wave04();PA_POWER_OFF();TX_LED();break;//按键04,输出波形04
        case 0xed:PA_POWER_ON();wave05();PA_POWER_OFF();TX_LED();break;//按键05,输出波形05
        case 0xdd:PA_POWER_ON();wave06();PA_POWER_OFF();TX_LED();break;//按键06,输出波形06
        case 0xbd:PA_POWER_ON();wave07();PA_POWER_OFF();TX_LED();break;//按键07,输出波形07
        case 0x7d:PA_POWER_ON();wave08();PA_POWER_OFF();TX_LED();break;//按键08,输出波形08
        case 0xeb:PA_POWER_ON();wave09();PA_POWER_OFF();TX_LED();break;//按键09,输出波形09
        case 0xdb:PA_POWER_ON();wave10();PA_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

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2012-8-6 22:27:13 | 显示全部楼层
比较长,“0”、“1”都是脉冲组合,固定的,那么就作为一个函数,另外配合数组,你的程序会简化很多,我以前是这么干的。

出0入0汤圆

发表于 2012-8-6 22:27:56 | 显示全部楼层
按键消抖,延长时间,

出0入0汤圆

发表于 2012-8-6 22:29:44 | 显示全部楼层
这无线模块很便宜

出0入54汤圆

 楼主| 发表于 2012-8-6 23:21:53 | 显示全部楼层
xsh2005105326 发表于 2012-8-6 22:27
比较长,“0”、“1”都是脉冲组合,固定的,那么就作为一个函数,另外配合数组,你的程序会简化很多,我以 ...

谢谢,呵呵!比较笨,没有什么好的习惯,想到怎么写就怎么写,所以写的程序比较啰嗦,呵呵!

最开始的时候处理PA_CNTL,我还是想用延时,即PA_CNTL=1,后延时,只要延时超过发射占用的时间就行,后来才想到发射前PA_CNTL=1,发射完PA_CTNL=0,就行了。

看来单片机也是需要多思考,才能写出比较简练的程序,呵呵!以后得多写了,呵呵!见多才能识广!

谢谢你的指点!

出0入54汤圆

 楼主| 发表于 2012-8-6 23:23:55 | 显示全部楼层
三氧化二砷 发表于 2012-8-6 22:27
按键消抖,延长时间,

谢谢!呵呵!我也知道用延时来消抖,但具体程序该怎么写,还没有理解透!看来得再仔细啃啃书了!

谢谢!

出0入54汤圆

 楼主| 发表于 2012-8-6 23:30:24 | 显示全部楼层
本帖最后由 zx_85 于 2012-8-6 23:32 编辑
BXAK 发表于 2012-8-6 22:29
这无线模块很便宜


无线模块确实比较便宜,但我想用编程来实现,而且也方便以后进行扩展。我要尝试扩展PT2262的按键数,发现如果要扩展到16键甚至是16+,需要加编码芯片,或者是一大堆二极管,呵呵,还是单片机方便。而且里面的波形完全可自定义,不像PT2262等,需要改地址码,相当麻烦。用单片机可以完全免除改地址的麻烦,完成一对多的遥控,甚至是无线数据传输。

另外公司正好有这些放大管,可以搭一下电路,看一下遥控距离。呵呵!

谢谢你的建议!

出0入0汤圆

发表于 2012-8-7 00:06:50 | 显示全部楼层
本帖最后由 BXAK 于 2012-8-7 00:10 编辑
zx_85 发表于 2012-8-6 23:30
无线模块确实比较便宜,但我想用编程来实现,而且也方便以后进行扩展。我要尝试扩展PT2262的按键数,发现 ...


我说的便宜就是指 那些不带编/解码IC的 现成315M、433M无线收/发模块,6元左右一对。

LZ想根据电路图仿制无线收/发模块?有难度,调试不易,有坛友仿制但收发距离不理想

出0入0汤圆

发表于 2012-8-7 11:42:39 | 显示全部楼层
按键消抖:简单加个电容吧,效果挺好,  软件上就参考D触发器吧,很简单  保险的话D触发器级联  程序上就是多采样几次IO数据,多点存储空间

出0入0汤圆

发表于 2013-2-17 10:22:22 | 显示全部楼层
谢谢楼主,最近正在研究这个

出0入0汤圆

发表于 2013-2-20 14:50:11 | 显示全部楼层
楼主试过那个收发效果怎么样~?>?,距离可以到几米???
头像被屏蔽

出0入0汤圆

发表于 2013-2-24 17:43:04 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2013-2-24 19:15:11 | 显示全部楼层
mark.............

出0入0汤圆

发表于 2013-2-24 19:34:28 | 显示全部楼层
不错的 电路和 不走寻常路

出0入0汤圆

发表于 2013-2-24 20:45:12 | 显示全部楼层
的确是处女作!鉴定完毕

出0入0汤圆

发表于 2013-2-24 22:55:23 | 显示全部楼层
谢谢分享最近也想做个这样的东西,向lz学习了。

出0入0汤圆

发表于 2013-2-25 13:30:05 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2013-2-25 13:57:53 来自手机 | 显示全部楼层
消抖延时10ms不就搞定了么

出0入0汤圆

发表于 2013-3-3 20:57:22 来自手机 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2013-3-4 00:05:31 | 显示全部楼层
先看看再说。。。

出0入0汤圆

发表于 2013-3-4 08:52:09 | 显示全部楼层
按键扫描的消抖,麻烦指导一下。
----------------------------------------------------
不是吧,315M射频都写得出,按键消抖不成问题吧。

出20入186汤圆

发表于 2013-3-4 09:20:35 | 显示全部楼层
我爱楼主,正需要这个,如果有接收原理图或仿真就更爽了~   

出20入186汤圆

发表于 2013-3-4 09:20:52 | 显示全部楼层
学习。。。。。。。。。。。。。。。。。。。。。。

出20入186汤圆

发表于 2013-3-4 09:23:23 | 显示全部楼层
哈,程序确实很新手~。。。。

出0入0汤圆

发表于 2013-3-4 09:34:05 | 显示全部楼层
谢谢楼主

出0入0汤圆

发表于 2013-3-4 10:59:36 | 显示全部楼层
俺做过类似的,但是发射距离不理想,用3个5号电池的
而且不能解决同频干扰的问题,不知道人家是怎么解决的

出0入0汤圆

发表于 2013-3-7 11:47:57 | 显示全部楼层
祝贺,敢于亮剑,就是高手

出0入0汤圆

发表于 2013-4-23 18:53:10 | 显示全部楼层
不错呀,学习了。

出0入0汤圆

发表于 2013-5-7 21:08:03 | 显示全部楼层
学习了。。。

出0入0汤圆

发表于 2013-5-7 21:13:03 | 显示全部楼层
不知道遥控距离能多远?

出0入0汤圆

发表于 2013-5-7 22:25:41 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2013-5-8 10:59:34 | 显示全部楼层
请教下楼主这个距离到达多少?我这边有15米,穿墙环境下

出0入0汤圆

发表于 2013-5-8 11:45:24 来自手机 | 显示全部楼层
学习了谢谢了

出0入0汤圆

发表于 2013-6-7 16:58:12 | 显示全部楼层
楼主强大

出0入0汤圆

发表于 2013-8-4 10:27:35 | 显示全部楼层
厉害,记号下

出0入0汤圆

发表于 2013-9-27 15:55:35 | 显示全部楼层
谢谢分享              

出0入0汤圆

发表于 2013-9-27 16:23:32 | 显示全部楼层
不错,哪天需要时下来学习一下.

出0入0汤圆

发表于 2013-9-27 16:29:38 | 显示全部楼层
不错,单片机你入门了!

出0入0汤圆

发表于 2013-9-27 16:48:58 | 显示全部楼层
LZ最好简化下。。。

出0入0汤圆

发表于 2013-9-27 16:55:37 | 显示全部楼层
值得鼓励!!

出0入0汤圆

发表于 2018-10-9 10:31:21 | 显示全部楼层
楼主,有接收电路吗,想参考一下!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-26 10:39

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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