51单片机无线遥控应用教程

合集下载

51单片机编码控制315无线模块传送指令

51单片机编码控制315无线模块传送指令

无线电编码程序设计思想该项目利用单通道无线电实现了多路遥控功能。

遥控距离100m左右。

单通道无线电路若想实现多路遥控,必须对无线电进行编码,该项目利用单片机进行编解码,实现了16路无线电控制。

在进行无线电编码前必须先定义一个协议规则。

现定义如下:下降沿:1ms的高电平,随后500us的低电平。

v0起始位:4ms的高电平,随后4ms的低电平。

v2数据1:2ms的高电平,随后500us的低电平。

v1数据0:1ms的高电平,随后500us的低电平。

v3结束位:4ms的低电平。

以上就是通信协议规则,只要无线电收发双方都遵循该协议规则,则实现对小车的多路控制将非常容易。

//发射模块c程序#include<reg52.h>#define uchar unsigned charsbit key0=P3^4;sbit key1=P3^5;sbit key2=P3^6;sbit key3=P3^7;sbit TX=P2^0;uchar m;void v0();void v1();void v2();void v3();void delay_315();void main(){uchar i;bit dong=0; //开定时器0中断TMOD=0X01;TH0=(65536-100)/256;TL0=(65536-100)%256;EA=1;ET0=1;TR0=1;TX=0;while(1) //发送指令0{if(key0==0){delay_315();while(key0==0){v3();v2();v0();v0();v0();m=0;while(m<40);}dong=1;}if(key1==0) //发送指令1{delay_315();while(key1==0){v3();v2();v0();v0();v1();m=0;while(m<40);}dong=1;}if(key2==0){delay_315();while(key2==0){v3();v2();v0();v1();v0();m=0;while(m<40);}dong=1;}if(key3==0){delay_315();while(key3==0){v3();v2();v0();v1();v1();m=0;while(m<40);}dong=1;}if(dong==1){dong=0;for(i=0;i<5;i++){v3();v2();v1();v0();v0();m=0;while(m<40);} }}}void timer0() interrupt 1{TH0=(65536-100)/256;TL0=(65536-100)%256;m++;TF0=0;}void v0() // 1MS高电平500us低电平{m=0;while(m<10)TX=1;m=0;while(m<5)TX=0;}void v1() // 2MS高电平500us低电平{m=0;while(m<20)TX=1;m=0;while(m<5)TX=0;}void v2() // 4MS高电平4ms低电平{m=0;while(m<40)TX=1;m=0;while(m<40)TX=0;}void v3() // 1MS高电平500us低电平{m=0;while(m<10)TX=1;m=0;while(m<5)TX=0;}void delay_315(){uchar i,j;for(i=0;i<10;i++)for(j=0;j<110;j++);}//接收程序#include"reg52.h"#define uchar unsigned charsbit RX=P3^3;sbit red0=P0^0;sbit red1=P0^1;sbit red2=P0^2;sbit red3=P0^3;sbit red4=P0^4;uchar m;bit n;void main(){uchar a,b,c,p,x,y; //定义存取的数据TMOD=0X01;TH0=(65536-100)/256; //开定时器0TL0=(65536-100)%256;EA=1;ET0=1;TR0=1;EX1=1;IT1=1;P0=0XFF;p=5;x=0;while(1){if(n==1){while(RX==0); //读取协议下降沿m=0;EX1=0;while(RX==1);if(m>35&&m<45) //读取协议起始位高电平{m=0;while(RX==0);if(m>35&&m<45) //读取协议起始位低电平{m=0;while(RX==1); //读取数据1if(m>5&&m<15)a=0;if(m>15&&m<25)a=4;while(RX==0);m=0;while(RX==1); //读取数据2if(m>5&&m<15)b=0;if(m>15&&m<25)b=2;while(RX==0);m=0;while(RX==1); //读取数据3if(m>5&&m<15)c=0;if(m>15&&m<25)c=1;while(RX==0);m=0;p=a+b+c;x++;if(x==1)y=p;if(x==2) //连续收到两次数据才进入匹配{x=0;if(y==p){switch(p){case 0:red0=0;red1=1;red2=1;red3=1;red4=1;break;case 1:red0=1;red1=0;red2=1;red3=1;red4=1;break;case 2:red0=1;red1=1;red2=0;red3=1;red4=1;break;case 3:red0=1;red1=1;red2=1;red3=0;red4=1;break;case 4:red0=1;red1=1;red2=1;red3=1;red4=0;break;}}}}}}}}void INT_1() interrupt 2{n=1;}void timer0() interrupt 1{TH0=(65536-100)/256;TL0=(65536-100)%256;m++;TF0=0;}。

无线wifi模块-51单片机-C语言程序

无线wifi模块-51单片机-C语言程序
for(j=110;j>0;j--);
}
void us_delay(uchar t)
{
while(t--);
}
/********************************************************************
名称:波特率发生器函数
作用:波特率发生器可以是T1定时器实现,也可以是MCU内部独立的波特率发生器,
TL1=TH1;
EA=1;//总中断打开
ES=0;//关闭串口中断
TR1=1;//启动定时器1
}
/*
void Uart_Init()//使用独立的波特率发生器(STC12C560S2或带有独立波特率发生器//、//的单片机均可)
{
SCON=0x50;//设置为串行口以方式1工作,8位异步通讯,允许接收中断。
AUXR1=0x80;//切换到P1口
ES=1;//开启串口中断
EA=1;//开启总中断
}
*/
/********************************************************************
名称:串口发送函数
功能:MCU向其他与其连接的设备发送数据(此处是无线WIFI模块ESP8266)
//define RELOAD_COUNT (256-(((11520000/16)/12)/9600))也可以或波特率9600 //256-晶振频率/波特率x16=BRT
/*****************LED灯对应P0口的1个端口*************/
sbit LED0=P3^2;
/************波特率发生器相关功能寄存器的定义****************/

基于51单片机红外遥控电机课程设计说明书

基于51单片机红外遥控电机课程设计说明书

课程实训报告课程名称:单片机与接口技术实训题目:红外控制直流电机正反转任务书一、实训任务设计一款基于AT89C51单片机用红外遥控控制电机的正反转加减速。

二、设计要求1. 基本要求1).用无线模块控制电机的正反转加减速,实现自动化控制。

2).通过对AT89C51单片机的编程,实现直流电机的正反转,加减速。

3).写出详细的设计报告。

4).给出全部电路和源程序。

2. 发挥部分1).可通过PC机,对系统编程,实现直流电机转速的快慢。

摘要随着科技的不断进步,人们进入了无线电时代,它为我们的生活带来了极大的方便。

像现在的移动电话,无线网络,无线鼠标,无线键盘等都已经融入了我们的生活当中。

从我们身边的电子产品就可以看出我们已经进入了无线电时代。

本设计就是一款基于AT89C51的用无线模块控制的电机的正反转以及它的加减速。

这非常适应于在工厂使用,特别是在工业控制中。

可以想象,机器在工厂运转时,我们只需要用无线遥控来控制电机的转速以及它的转向,这样我们就可以在远处来控制了,用不着再跑到电机的旁边来控制开关,为工厂生产带来了极大的方便。

软件上采用C51编程,主要编写了主程序,直流电机驱动程序,中断程序延时程序等。

经过调试,实现了对电机的控制。

关键词:AT89C51 L298 PWM 直流电机无线模块目录第一章绪论 (5)1.1 概述 (5)1.2 设计目的 (5)1.3 设计任务和内容 (5)第二章总体设计及核心器件简介 (7)2.1总体设计 (7)2.2 AT89C51 (7)2.3 L298 (9)引脚介绍: (10)2.4 伺服电机介绍 (11)2.5 PT2262/PT2272 (12)第三章单元电路模块设计 (17)3.1 复位电路 (17)3.2时钟电路 (18)3.3电机驱动电路图 (18)3.4PWM调速系统设计 (19)第四章软件编程设计 (21)4.1 设计思想 (21)4.2 流程图 (21)4.3源程序 (22)第五章设计心得和存在问题 (26)第一章绪论1.1 概述近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。

基于51单片机的四驱无线遥控小车(附电路图,源代码)

基于51单片机的四驱无线遥控小车(附电路图,源代码)

基于51单片机的四驱无线遥控小车(附电路图,源代码)遥控小车大家都玩过,网上也有各种DIY小车的制作详解,本文介绍的这个遥控小车和其他的作品大同小异,但作为单片机设计,这次设计主要强调单片机控制,就是说,这个小车是由单片机控制的,把单片机按键发送程序、无线模块使用、电机驱动是本教程的核心内容。

一硬件组装1 小车运动部分所需工件:直流电机4个,L293D电机驱动模块,蓄电池一块,车身底盘说明:车身底盘大家根据自己的购买力自行购买,蓄电池也是,至于L293D模块,淘宝上卖的比较贵,不过我用的就是成品模块,效果非常好,钱不多的同学可以自己买芯片,自制模块,原理很简单,官方资料是很详细的;或者改为继电器控制都可以,具体看自己的实际购买力。

用模块的好处是,模块可以输出5V 电源给系统供电,详细请参考淘宝网。

如果你买的是现成的底盘,那就和我的一样了,组装实在是没啥可说的,把电机固定上去就是,不行?别开玩笑了,小学生都会的!至于想自己做底盘的,我想说,要搞结实点,咱这次的小车马力是很足的,因为有电机驱动,速度比较快(不带减速齿轮的底盘一定要小心,速度非常的快),后劲也足,不小心撞墙很正常,所以不好的底盘就得小心了!组装好后,就是电机和驱动模块的接线了,下面我就详细的说一下L293D模块的使用:L293D是专门的电机驱动芯片,工作电压5V,驱动电压输入可达36V,输出电流正负600ma,4个控制端,4个输出端,原理如图:其中A为输出控制端,Y为输出控制端,1A即控制1Y,以此类推。

1,2EN 3,4EN需要短接,芯片最大工作电压不得超过7V。

封装图:Vcc1接工作电压,5V,Vcc2接电机的驱动电源,一般来说,这个电压要比5V 高,我用的是12V蓄电池,就把12v的正极接到VCC2,要记住的是,芯片、单片机、蓄电池电源是需要共地的,不要觉得你电机是12V,单片机控制部分是5V就把电源完全独立开来,正极是完全独立的没错,但是GND(负极)都必须是接在一起的。

PT2262_PT2272讲解

PT2262_PT2272讲解

51单片机综合学习系统之无线遥控模块应用篇《电子制作》2008年6月站长原创,如需引用请注明出处大家好,通过以前的学习,我们已经对51单片机综合学习系统的使用方法及学习方式有所了解与熟悉,学会了数字温度传感器DS18B20的基本知识,体会到了综合学习系统的易用性与易学性,这一期我们将一起学习无线电遥控的基本原理与应用实例。

先看一下我们将要使用的51单片机综合学习系统能完成哪些实验与产品开发工作:分别有流水灯,数码管显示,液晶显示,按键开关,蜂鸣器奏乐,继电器控制,IIC总线,SPI总线,PS/2实验,AD模数转换,光耦实验,串口通信,红外线遥控,无线遥控,温度传感,步进电机控制等等。

图1 51单片机综合学习系统上图是我们将要使用的51单片机综合学习系统硬件平台,如图1所示,本期实验我们用到了综合系统主机、200米无线遥控器,无线接收板,综合系统其它功能模块原理与使用详见前几期《电子制作》杂志及后期连载教程介绍。

PT2262/PT2272无线模块工作原理PT2262/2272是台湾普城公司生产的一种CMOS工艺制造的低功耗低价位通用编/解码电路,是目前在无线通讯电路中作地址编码识别最常用的芯片之一。

PT2262/2272最多可有12位(A0-A11)三态(悬空,接高电平,接低电平)地址设定管脚,任意组合可提供531441个地址码。

PT2262最多可有6位(D0-D5)数据端管脚,设定的地址码和数据码从17脚(Dout)串行输出,可用于无线遥控发射电路。

PT2262和PT2272的引脚排列见图2。

对于编码器PT2262,A0~A5共6根线为地址线,而A6~A11共6根线可以作为地址线,也可以作为数据线,这要取决于所配合使用的解码器。

若解码器没有数据线,则A6~A11作为地址线使用,这种情况下,A0~A11共12根地址线,每线都可以设置成“1”、“O”、“开路”三种状态之一,因此共有编码数312=531441种;但若配对使用的解码器的A6~A11是数据线,例如PT2272,那么这时PT2262的A6~A11也作为数据线用,并只可设置为“1”和“0”两种状态之一,而地址线只剩下A0~A5共6根,编码数降为36=729种。

51单片机无线遥控小车设计

51单片机无线遥控小车设计

51单片机无线遥控小车设计一、引言无线遥控小车是一种基于51单片机的智能小车系统,它利用无线通信技术实现了对小车的遥控。

通过无线遥控,我们可以随时控制小车的方向,实现室内或者室外的移动。

本设计将详细介绍51单片机无线遥控小车的整体设计框架、电路连接和关键模块设计。

二、整体设计框架整个系统分为遥控器端和小车端两个部分。

遥控器端通过按键或者摇杆输入控制指令,经过编码和解码处理后,通过无线传输模块将指令发送给小车端。

小车端接收到指令后,通过解码和控制模块来控制小车的运动。

三、电路连接遥控器端由单片机、按键(或者摇杆)、编码芯片和无线传输模块组成。

按键用于输入控制指令,编码芯片用于将按键输入的模拟信号转换为数字信号,单片机将数字信号进行编码后发送给无线传输模块,最终通过无线通信将指令传输给小车端。

小车端由单片机、解码芯片、电机驱动、电机和无线接收模块组成。

无线接收模块用于接收遥控器端发送过来的指令,解码芯片将数字信号转换为控制信号,单片机根据控制信号来控制电机驱动,从而实现小车的运动。

四、关键模块设计1.编码和解码模块设计编码和解码模块是整个系统中的关键部分,它负责将模拟信号转换为数字信号,并将数字信号转换为控制信号。

2.无线传输模块选择无线传输模块是实现遥控通信的关键组件,我们可以选择使用蓝牙模块、无线射频模块等。

选择合适的无线传输模块需要考虑通信距离、通信速率、功耗等因素。

3.电机驱动模块设计电机驱动模块负责将控制信号转换为电机运动控制信号,驱动电机完成小车的移动。

在设计电机驱动模块时,需要考虑电机的类型和电机驱动电路的选型。

五、总结本设计详细介绍了51单片机无线遥控小车的整体设计框架,电路连接和关键模块设计。

通过对整个设计的理解和实现,我们可以实现对小车的远程遥控,从而实现室内或者室外的自动移动。

这种无线遥控小车系统在娱乐、智能家居、无人巡检等领域都有广泛的应用前景。

自己写的51单片机的红外线遥控接收程序(C语言)

自己写的51单片机的红外线遥控接收程序(C语言)

//51单片机做的红外遥控实验(C语言)#include<reg51.h>#define u8 unsigned char#define u16 unsigned int#define ID 0x00 //本遥控器的ID号sbit ir=P3^3;code u8 seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //0-9的段码code u8 s[]={1,0x40,0x48,0x04,0x02,0x05,0x54,0x0A,0x1E,0x0E}; u8 buf[4];bit ir_f=0;u8 nu;void delay(u16 x){while(x--);}void show(u16 x){u8 i=0,k=0;u8 s[4];kk:s[i]=x%10;if((x/10)>=1){x=x/10;i++;goto kk;}k=i+1;for(i=0;i<k;i++){P0=seg[s[i]];P2=~(8>>i);delay(300);P0=0XFF;P2=0XFF;}}void timer0_init(){TH0=0;TL0=0;TMOD|=0x01;TR0=0;}u16 low_test(){u16 t;TR0=1;while((ir==0)&&((TH0&0X80)!=0X80));TR0=0;t=TH0;t<<=8;t|=TL0;TH0=0;TL0=0; //t=(TH*256+TL0);//机器周期数return t;}u16 high_test(){u16 t;TR0=1;while((ir==1)&&((TH0&0X80)!=0X80));TR0=0;t=TH0;t<<=8;t|=TL0;TH0=0;TL0=0;return t;}/*u16 time_test(bit x){}*/u8 receive_8bit(){u8 d,i;u16 t;for(i=0;i<8;i++){t=low_test();t=high_test();d>>=1;if((t>=2750)&&(t<=3100)){d|=0x80;}}return d;}void ir_decode(){u16 t;u8 i;if(ir==0)//有遥控信号{t=low_test();//8295-9000us,倍频的是16590-18000if((t>=14500)&&(t<=18000))//检查引导码低电平时间{t=high_test();if((t>=8000)&&(t<=9000))//检查高电平{for(i=0;i<4;i++){buf[i]=receive_8bit();}if(buf[0]==(~buf[1]))//检查系统码是否正确{if(buf[0]==ID){if(buf[2]==(~buf[3])){//具体按键处理ir_f=1; //遥控有效}}}}}}}/*void key(){if(buf[2]==0x40){P1^=(1<<0);}if(buf[2]==0x48){P1^=(1<<1);}}*/void ir_execuse(){if(ir_f==1){switch(buf[2]){case 0x40:P1^=(1<<0);break;case 0x48:P1^=(1<<1);break;case 0x04:P1^=(1<<2);break;case 0x02:P1^=(1<<3);break;case 0x05:P1^=(1<<4);break;case 0x54:P1^=(1<<5);break;case 0x0A:P1^=(1<<6);break;case 0x1E:P1^=(1<<7);break;}ir_f=0;}}void show_d(){u8 j;for(j=0;j<10;j++){if(s[j]==buf[2]){nu=j;break;}}show(nu);}void isr_init(){EA=1;EX1=1;//外部中断,一直看3.3有没有下降沿。

基于51单片机的红外遥控课程设计

基于51单片机的红外遥控课程设计

目录第一章设计简介 (2)第二章系统方案 (2)一、设计方案对比 (2)二、方案设计 (4)第三章硬件设计 (4)一、红外遥控器 (4)二、红外接收模块部分 (6)第四章软件设计 (7)一、红外遥控器软件设计 (7)二、红外接收模块软件设计 (10)三、程序代码 (10)第五章测试及分析 (10)第六章结论 (10)第七章参考文献 (11)附录一(程序代码): (12)第一章设计简介本设计分为红外遥控器与红外接收模块两部分。

红外遥控器包括矩阵键盘、增强型51单片机(STC11L04E)、红外发射电路组成。

单片机扫描矩阵键盘后,将按键状态进行信源编码与信道编码,载波(38k脉冲)后由红外发射器发射。

红外接收模块部分由传统51单片机、数码管、一体化红外接收头组成。

一体化红外接收头将信号进行限幅放大、带通滤波、解调、积分、整形后输出解调信号至单片机,并由单片机输出解调信号。

第二章系统方案一、设计方案对比红外遥控器部分2.1.1 主控芯片方案一:HT6222方案二:STC11L04E分析:传统红外遥控器芯片HT6222具有性价比高、功能强大、稳定可靠、使用简单等特点,但该芯片难以零购。

STC11L04E为增强型51单片机,控制灵活(载波频率可调、通信协议可变更、用户码可变换)、价格较HT6222稍贵。

STC11L04E最大的特别是低功耗,功作电压低3.3V,易于应用于移动设备。

结论:由于STC11L04E单片机的灵活性以及学习性(可增强我们对一个完整通信系统的理解)。

因此我们采用方案二。

2.1.2 矩阵键盘方案一:3*6*2.5 贴片轻触开关方案二:6*6*6 直插轻触开关分析:3*6*2.5贴片轻触开关虽然体积小巧、美观,但与6*6*6直插轻触开关对比,在制板布线上较繁锁。

结论:综上,我们采用6*6*6直插轻触开关,使得整体布线简单,可布单面版,简化制板流程。

2.1.3电源模块方案一:钮扣电池CR2032方案二:可充电锂电池18650分析:可充电锂电池18650容量大,节能环保(可多次利用),但体积大。

STC单片机51简单的红外遥控发射程序C语言

STC单片机51简单的红外遥控发射程序C语言
for (j=0;j<43;j++) {s1=1;s1=1;Delay13us();} //高电平0.565ms无载波
}
void H(){ //红外1; 以低电平0.565ms,高电平1685表示1
uchar j;
for (j=0;j<43;j++) {s1=~s1;Delay13us();} //低电平0.565ms载波,模拟38KHZ
{
uint j;
while(1){
Delay3000ms();
//以下开始发送
for (j=0;j<692;j++) {s1=~s1;Delay13us();}//载波发送9ms的起始码
for (j=0;j<346;j++) {s1=1;Delay13us();} //无载波发送4.5ms的结果码
for (j=0;j<173;j++) {s1=1;Delay13us();} //2.25ms
for (j=0;j<44;j++) {s1=~s1;Delay13us();}//结束位
for (j=0;j<7400;j++) {s1=1;Delay13us();} //在延时96.2ms到108ms,在发送连发码
for (j=0;j<692;j++) {s1=~s1;Delay13us();}//载波发送9ms的起始码
for (j=0;j<173;j++) {s1=1;Delay13us();} //2.25ms
for (j=0;j<44;j++) {s1=~s1;Delay13us();}//结束位

基于51单片机315MHz无线收发模块调试程序

基于51单片机315MHz无线收发模块调试程序

^****************************315Mhz无线通信程序原理:第一块单片机pl.O 口输出脉冲方波提供给无线发射模块,无线发射模块将信号以电磁波的形式传到无线接收模块。

无线接收模块会根据这个电磁波还原出脉冲方波提供给第二块单片机,第二块单片机进行进一步的解算处理。

通信协议:根据这个原理和315模块的特性。

我决定以900us高电平和2000us底电平表示1 ;450us高电平和2000us低电平表示0。

而8个1或0组成一个字节。

为了防止误码,所以在每个字节的前面加一个2ms高电平和2ms低电平的起始码。

每个5S发送一个字符,一个字符发送20遍%A^ >A^ %A^ >A^vl^ /^Tw ^T^yT^ ^T^yr^yt^yr^yj% yr^yj% yr^yj% yj% yj% yj% yj% yj% /{ xLr >±^ vl^ ^2^>X^ vl^ vl^i yr% yr^ yr% yr% yr^ yj^ *r% *r% *r% 彳・"卜315Mhz无线通信程序发送程序11.0592M晶振1机器周期二1.0851US定时器产生2MS定时TH0=0XF8;TLO=OXCD;900us定时THO二OXFC;TLO二0XC3;450us定时THO二OXFE;TLO二0X61;vtx vtx vtx xtx /^T> #T^ #T^>r^ yrs yrs yis^w yrs yrs^w yrs yrs^w /#include<reg52.h>Sinclude "intrins・h"#define uint unsigned int#define uchar unsigned charsbit WXSEND二P「0;uchar timedata[8]二{Oxfe, 0x61, Oxfc, 0xc3, 0xf8, Oxcd, Oxea, 0x66} ;// 450us, 900us, 2MS, 6ms/ >1^/ yj%yj%11.0592MHZ下500毫秒延时,还准vtx vtx vtx xtx vtx /yj% >Jx #y% #y% yj% ^J> ^J> 吩・^J> / void delay500ms(uint i) uint j;uchar k;while (i--){for(j=0;j<750;j++)for(k=0;k<200;k++);}void timeOinit()(TMOD二0x01;//void sendset (uchar senddata) ;// 发送数据程序void sendstartbit () ;//数据发送起始信号2ms高电平和2ms低电平的起始码void sendlowbit() ;// 发送低电平void sendhighbit 0 ;// 发送高电平void main(){uchar senddata, i;timeOinit () ;//定时器初始化senddata二0x55;wh订e(l) {for(i=0;i<20;i++){sendset (senddata) ;// 发送数据程序)delay500ms (10);senddata++;}//发送数据程序void sendset(uchar senddata){uchar i,sendbit;sendstartbit () ;//发送开始信号for(i=0;i<8;i++){sendbit二senddata&0x80;if (sendbit==0) sendlowbit (); // 发送低电平else sendhighbit 0 ;// 发送高电平senddata=senddata<<l;//数据发送起始信号6ms高电平和2ms低电平的起始码void sendstartbit()(WXSEND=1;TH0=timedata[4];TLO二timedata[5];TRO=1;while (TF0==0);TRO二0;TFO二0;TH0=timedata[4];TLO二timedata[5];WXSEND=O;TRO二1;while (TFO==O);TRO二0;TFO=O;void sendlowbit () // 发送低电平WXSEND=1;THO=timedata[O]; TLO 二timeddta[l]; TRO 二1;while (TFO==O);TRO=O;TFO=O;TH0=timedata[4];TLO 二timeddta[5];WXSEND=O;TRO=1;while (TFO==O);TRO=O;TFO=O;WXSEND=1;TH0=timedata[2];TL0=timedata[3];TRO=1;while (TFO==O);TRO=O;TFO 二0; voidsendhighbi t ()//发送高电平TH0=timedata[4];TLO二timedata[5];WXSEND=O;TRO二1;while (TFO==O);TRO=O;TFO二0;315Mhz无线通信程序接收程序U.0592M晶振1机器周期二1.0851US用中断0边沿触发中断,开启接收程序由于接收模块平时大部分时间是低电平,有信号时是高电平,而中断以,°是负边沿触发,所硕件电路中接收模块的信号输出端经过非门后接到单片机P3. 2接收到数据,用串口传到上位机的串口调试软件显示#include<reg52.h>#include 〃inttins. h〃#define uint unsigned intSdefine uchar unsigned char sbit WXrecep=P3^2;//uchar code timedata[6]二{Oxfe, 0x61, Oxfc, 0xc3, Oxf&Oxcd};// 450us,900us, 2MS uchar wxrecepda;void timeOinit ()(TMOD二0x21;// 定时器0THO=O;TLO=O;//TM0D=0x20:/*TMOD:timer1, mode2, 8-bitreload*/TH1二OxFD;/*THl 11.0592MHz*/TL1=OXFD;EA=1;EXO=1;ETO=1;IE0=0;void uartinit()(SCON二0x50;/*SCON:模式1, 8-bitUART,使能接收 */ TR1=1;/*TR1:timerlrun*/void receivewxO ;// 接收子程序void main()timeOinit () ;//定时器初始化uartinit ();wh订e(l);void receivewx ()// 接收子程疗;{uint i;uchar j, recedata;while(WXrecep—0);TRO=O;i二TH0*256+TL0;THO=O;TLO=O;if((i>=1800)&&(i〈二1890)){ recedata二0;for(j=0;j<8;j++){while (WXrecep— 1);TRO二1;while(WXrecep—0);TRO二0;i二TH0*256+TL0;if ((i>二390)&&(iO450)) recedata=recedata&Oxfe;else if ((i>=800)&&(i<=860)) recedata=recedata 0x01;recedata二:recedata〈〈l;TH0=0;TL0=0;}wxrecepda=recedata»l ;SBUF=wxrecepda;while(TI==0);TI=0;}void wxrecint() interrupt 0(THO=O;TLO=O;TRO=1;EXO=O;receivewx ();EXO=1;。

基于51单片机的红外遥控

基于51单片机的红外遥控

基于51单片机的红外遥控红外遥控是无线遥控的一种方式,本文讲述的红外遥控,采用STC89C52单片机,1838红外接收头和38k红外遥控器。

1838红外接收头:红外遥控器:原理:红外接收的原理我不赘述,百度文库上不少,我推荐个网址,这篇文章写得比较清楚,也比较全面,我主要讲下程序的具体意思,在了解原理的基础上,我们知道,当我们在遥控器上每按下一个键,遥控器上的红外发射头都会发出一个32位的编码(32位编码分成4组8位二进制编码,前16位为用户码和用户反码,后16位为数据码和数据反码,用户码表示遥控器类型,数据码表示按键编码),不同的键对应不同的编码,红外接收头接收到这个编码后,发送给单片机,再进行相关操作。

源程序1:(这个程序的功能是将用户码和用户反码,数据码和数据反码显示在1602液晶上,因为遥控器买回来是不会说明按键对应什么码值,所以先自己测试,确定每个按键的码值)#include<reg52.h>#include<stdio.h>#include<intrins.h>#define uint unsigned int#define uchar unsigned char#define _Nop() _nop_()#define TURE 1#define FALSE 0/*端口定义*/sbit lcd_rs_port = P3^5; /*定义LCD控制端口*/sbit lcd_rw_port = P3^6;sbit lcd_en_port = P3^4;#define lcd_data_port P0///////////////////////////////////void delay1 (void)//关闭数码管延时程序{int k;for (k=0; k<1000; k++);}////////////////////////////////////uchar code line0[16]={" user: "};uchar code line1[16]={" data: "};uchar code lcd_mun_to_char[16]={"0123456789ABCDEF"};unsigned char irtime;//红外用全局变量bit irpro_ok,irok;unsigned char IRcord[4];//用来存放用户码、用户反码、数据码、数据反码unsigned char irdata[33];//用来存放32位码值void ShowString (unsigned char line,char *ptr);//////////////////////////////////////////////void Delay(unsigned char mS);void Ir_work(void);void Ircordpro(void);void tim0_isr (void) interrupt 1 using 1//定时器0中断服务函数{irtime++;}void ex0_isr (void) interrupt 0 using 0//外部中断0服务函数{static unsigned char i;static bit startflag;if(startflag){if(irtime<63&&irtime>=33)//引导码TC9012的头码i=0;irdata[i]=irtime;irtime=0;i++;if(i==33){irok=1;i=0;}}else{irtime=0;startflag=1;}}void TIM0init(void)//定时器0初始化{TMOD=0x02;//定时器0工作方式2,TH0是重装值,TL0是初值TH0=0x00;//reload valueTL0=0x00;//initial valueET0=1;//开中断TR0=1;}void EX0init(void){IT0 = 1; // Configure interrupt 0 for falling edge on /INT0 (P3.2)EX0 = 1; // Enable EX0 InterruptEA = 1;}void Ircordpro(void)//红外码值处理函数(关键函数){unsigned char i, j, k=1;unsigned char cord,value;for(i=0;i<4;i++){//处理4个字节for(j=1;j<=8;j++){ //处理1个字节8位cord=irdata[k];value=value>>1;if(cord>7) value=value|0x80; //大于某值为1k++;}IRcord[i]=value;value=0;}irpro_ok=1;//处理完毕标志位置1}///////////////////////////////////////////void lcd_delay(uchar ms) /*LCD1602 延时*/{uchar j;while(ms--){for(j=0;j<250;j++){;}}}//////////////////////////////////////////////void lcd_busy_wait() /*LCD1602 忙等待*/{lcd_rs_port = 0;lcd_rw_port = 1;lcd_en_port = 1;lcd_data_port = 0xff;_Nop();_Nop();_Nop();_Nop();while (lcd_data_port&0x80);lcd_en_port = 0;}///////////////////////////////////////////////void lcd_command_write(uchar command) /*LCD1602 命令字写入*/ {lcd_busy_wait();lcd_rs_port = 0;lcd_rw_port = 0;lcd_en_port = 0;lcd_data_port = command;_Nop();_Nop();_Nop();_Nop();_Nop();_Nop();lcd_en_port = 1;_Nop();_Nop();_Nop();_Nop();_Nop();_Nop();lcd_en_port = 0;}/////////////////////////////////////////void lcd_system_reset() /*LCD1602 初始化*/{lcd_delay(20);lcd_command_write(0x38);lcd_delay(100);lcd_command_write(0x38);lcd_delay(50);lcd_command_write(0x38);lcd_delay(10);lcd_command_write(0x08);lcd_command_write(0x01);lcd_command_write(0x06);lcd_command_write(0x0c);}//////////////////////////////////////////////////void lcd_char_write(uchar x_pos,y_pos,lcd_dat) /*LCD1602 字符写入*/ {x_pos &= 0x0f; /* X位置范围0~15 */y_pos &= 0x01; /* Y位置范围0~ 1 */if(y_pos==1) x_pos += 0x40;x_pos += 0x80;lcd_command_write(x_pos);lcd_busy_wait();lcd_rs_port = 1;lcd_rw_port = 0;lcd_en_port = 0;lcd_data_port = lcd_dat;_Nop();_Nop();_Nop();_Nop();_Nop();_Nop();lcd_en_port = 1;_Nop();_Nop();_Nop();_Nop();_Nop();_Nop();lcd_en_port = 0;}void main(void){uchar i;lcd_system_reset(); /* 初始化LCD1602 */lcd_data_port = 0xff;for(i=0;i<16;i++) lcd_char_write(i,0,line0[i]);for(i=0;i<16;i++) lcd_char_write(i,1,line1[i]);EX0init(); // Enable Global Interrupt FlagTIM0init();while(1){//主循环if(irok){Ircordpro();irok=0;}if(irpro_ok){ /*遥控成功接收*/lcd_char_write(8,0,lcd_mun_to_char[IRcord[0]/0x10]);lcd_char_write(9,0,lcd_mun_to_char[IRcord[0]%0x10]);lcd_char_write(11,0,lcd_mun_to_char[IRcord[1]/0x10]);lcd_char_write(12,0,lcd_mun_to_char[IRcord[1]%0x10]);lcd_char_write(8,1,lcd_mun_to_char[IRcord[2]/0x10]);lcd_char_write(9,1,lcd_mun_to_char[IRcord[2]%0x10]);lcd_char_write(11,1,lcd_mun_to_char[IRcord[3]/0x10]);lcd_char_write(12,1,lcd_mun_to_char[IRcord[3]%0x10]);}//将码值显示在液晶上}}源程序2:(在知道了按键编码的基础上,我们便可以加入判断,判断哪个键被按下,进而执行相关操作)我只修改main函数,其他与源程序1相同sbit led1=P1^0;sbit led2=P1^1;sbit led3=P1^2;sbit led4=P1^3;sbit led5=P1^4;//发光二极管控制端定义void main(void){uchar i;lcd_system_reset(); /* 初始化LCD1602 */lcd_data_port = 0xff;for(i=0;i<16;i++) lcd_char_write(i,0,line0[i]);for(i=0;i<16;i++) lcd_char_write(i,1,line1[i]);EX0init(); // Enable Global Interrupt FlagTIM0init();while(1){//主循环if(irok){Ircordpro();irok=0;}if(irpro_ok){ /*遥控成功接收*/switch(IRcord[2])//为什么判断IRcord[2],因为这个里面存放的是数据码{case 0x0c: led1=0;//按0键,灯1亮break;case 0x18: led2=0; //按1键,灯2亮break;case 0x5e: led3=0; //按2键,灯3亮break;case 0x08: led4=0; //按3键,灯4亮break;case 0x1c: led5=0; //按4键,灯5亮break;}}}}附连接图。

PT2262-PT2272无线遥控接收发送讲解

PT2262-PT2272无线遥控接收发送讲解

硬件原理图
图 8 无线遥控实验演示图
程序流程图
图 9 硬件原理图
图 10 软件流程图
软件代码
/******************************************************************** *******/
/*杭州晶控电子有限公司 */
/*
图 5 解码接收模块和电路原理图
图 6 无线遥控接收板
无线收发模块的地址码设定 在通常使用中,我们一般采用 8 位地址码和 4 位数据码,这时编码芯片 PT2262 和解
码芯片 PT2272 的第 1~8 脚为地址设定脚,有三种状态可供选择:悬空、接正电源、接地三 种状态,地址编码不重复度为 38=6561 组,只有发射端 PT2262 和接收端 PT2272 的地址编码 完全相同,才能配对使用,遥控模块的生产厂家为了便于生产管理,出厂时遥控模块的 PT2262 和 PT2272 的八位地址编码端全部悬空,这样用户可以很方便选择各种编码状态,用 户如果想改变地址编码,只要将 PT2262 和 PT2272 的 1~8 脚设置相同即可,例如将发射机
基于 PT2262 的无线编码模块 编码发射模块外形小巧、美观,与很多车辆防盗系统中的遥控器一样。根据功能的 多少按键数也不一样,我们本章所用的发射模块为 A、B、C、D 四个按键。编码发射模块主 要由 PT2262 编码 IC 和高频调制、功率放大电路组成,常用的编码发射模块实物和内部框图 如图 3 所示。 遥控发射器工作电压为 DC 12V(电池供电) ,尺寸(mm): 58*39*14 ,工作频率:315MHz , 工作电流(mA):13 编码类型: 固定码(板上焊盘跳接设置) 应用说明:与各类型带解码功能的 接收模块联合使用,解码输出后进行相应控制,如采用单片机进行读取接收并解码数据然后控制 相应的灯或电源开关。

PT2262_PT2272讲解要点

PT2262_PT2272讲解要点

51单片机综合学习系统之无线遥控模块应用篇《电子制作》2008年6月站长原创,如需引用请注明出处大家好,通过以前的学习,我们已经对51单片机综合学习系统的使用方法及学习方式有所了解与熟悉,学会了数字温度传感器DS18B20的基本知识,体会到了综合学习系统的易用性与易学性,这一期我们将一起学习无线电遥控的基本原理与应用实例。

先看一下我们将要使用的51单片机综合学习系统能完成哪些实验与产品开发工作:分别有流水灯,数码管显示,液晶显示,按键开关,蜂鸣器奏乐,继电器控制,IIC总线,SPI总线,PS/2实验,AD模数转换,光耦实验,串口通信,红外线遥控,无线遥控,温度传感,步进电机控制等等。

图1 51单片机综合学习系统上图是我们将要使用的51单片机综合学习系统硬件平台,如图1所示,本期实验我们用到了综合系统主机、200米无线遥控器,无线接收板,综合系统其它功能模块原理与使用详见前几期《电子制作》杂志及后期连载教程介绍。

PT2262/PT2272无线模块工作原理PT2262/2272是台湾普城公司生产的一种CMOS工艺制造的低功耗低价位通用编/解码电路,是目前在无线通讯电路中作地址编码识别最常用的芯片之一。

PT2262/2272最多可有12位(A0-A11)三态(悬空,接高电平,接低电平)地址设定管脚,任意组合可提供531441个地址码。

PT2262最多可有6位(D0-D5)数据端管脚,设定的地址码和数据码从17脚(Dout)串行输出,可用于无线遥控发射电路。

PT2262和PT2272的引脚排列见图2。

对于编码器PT2262,A0~A5共6根线为地址线,而A6~A11共6根线可以作为地址线,也可以作为数据线,这要取决于所配合使用的解码器。

若解码器没有数据线,则A6~A11作为地址线使用,这种情况下,A0~A11共12根地址线,每线都可以设置成“1”、“O”、“开路”三种状态之一,因此共有编码数312=531441种;但若配对使用的解码器的A6~A11是数据线,例如PT2272,那么这时PT2262的A6~A11也作为数据线用,并只可设置为“1”和“0”两种状态之一,而地址线只剩下A0~A5共6根,编码数降为36=729种。

基于51单片机的WIFI无线控制系统设计与实现

基于51单片机的WIFI无线控制系统设计与实现

基于51单片机的WIFI无线控制系统设计与实现发表时间:2018-10-08T15:36:52.577Z 来源:《新材料.新装饰》2018年5月下作者:赵金永[导读] 随着移动技术的不断发展,整个世界在走向移动化。

现阶段,通信技术正面临一场深刻的变革,传统的有线网络已不能满足日益增长的通信需要。

无线通信技术越来越受到关注,人们需要一种不受约束的通信技术,能够随时随地的获取信息。

随着互联网越来越深入的走进人们的生活,用户对能够随时随地上网的需求越来越迫切,WIFI 无线通信技术也得到了迅速发展。

本文研究了51单片机的WIFI无线控制系统。

(广州沣雷交通科技股份有限公司,广州市 510000)摘要:随着移动技术的不断发展,整个世界在走向移动化。

现阶段,通信技术正面临一场深刻的变革,传统的有线网络已不能满足日益增长的通信需要。

无线通信技术越来越受到关注,人们需要一种不受约束的通信技术,能够随时随地的获取信息。

随着互联网越来越深入的走进人们的生活,用户对能够随时随地上网的需求越来越迫切,WIFI 无线通信技术也得到了迅速发展。

本文研究了51单片机的WIFI无线控制系统。

WiFi(Wireless Fidelity)是无线局域网(WLAN)技术——IEEE 802.11系列标准的商用名称。

IEEE 802.11系列标准主要包括IEEE802.11a/b/g/n 5种。

WIFI是由AP ( Access Point)和无线网卡组成的无线网络。

AP一般称为网络桥接器或接入点, 它是当作传统的有线局域网络与无线局域网络之间的桥梁, 因此任何一台装有无线网卡的PC均可透过AP去分享有线局域网络甚至广域网络的资源。

WIFI主要技术优点是无线接入、高速传输以及传输距离远其中, 802.11n 可以将WLAN的传输速率由目前802.11a及802.11g提供的54Mbps,提高到300Mbps甚至高达600Mbps。

在开放性区域通讯距离可达305m,在封闭性区域通讯距离76 ~ 122m,方便与现有的有线以太网整合,组网的成本更低。

51单片机-毕业设计基于单片机设计的红外线遥控器

51单片机-毕业设计基于单片机设计的红外线遥控器
1。1红外概述
从光学的角度而言,红外光是频率低于红色光的不可见光,在无线光谱的整个频率中占有很小一个频率段,波长为0.75—100微秒之间,其中0。75—3微秒之间的红外光称为近红外,3—30微秒之间的红外光称为中红外,30—100微秒之间的称为远红外。红外光就其性质而言很简单,与普通光线的频率特性没有很大的区别,但是,由于任何有热量的物体均有能量产生,所以红外的利用非常广泛,而且不可取代,能否检测红外、能测到多少红外或者红外检测的技术是否可以应用于任何自然的或想象的场合是红外应用技术的关键.
四、主要参考文献:
[1]梅丽凤,王艳秋,张军等。单片机原理及接口技术,北京:清华大学出版社,2004年。
[2]戴峻峰,付丽辉。多功能红外线遥控器的设计,传感器世界。2002,8(12):16~18.
[3]李光飞,楼然苗,胡佳文等.单片机课程设计实例指导,北京:北京航空航天出版社,
2004年.
[4]苏长赞。红外线与超声波遥控,北京:人民邮电出版社.1995年.
3.4独立式按键结构……………………………………………………………10
3。5掉电保护与低功耗设计……………………………………………………10
3。5.1低功耗的实现方法……………………………………………………10
3。5.2掉电保护与低功耗设计………………………………………………11
3。6系统完整电路设计图………………………………………………………13
2010.6。26~2010。8.10
在老师指导下反复修改,完成设计
五、指导教师意见:
指导教师签名:2010年5月10日
六、系部意见:
系主任签名:2010年5月11日
基于单片机的红外线遥控器
摘要

PT2262-PT2272无线收发讲解

PT2262-PT2272无线收发讲解

51单片机综合学习系统之无线遥控模块应用篇《电子制作》2008年6月站长原创,如需引用请注明出处大家好,通过以前的学习,我们已经对51单片机综合学习系统的使用方法及学习方式有所了解与熟悉,学会了数字温度传感器DS18B20的基本知识,体会到了综合学习系统的易用性与易学性,这一期我们将一起学习无线电遥控的基本原理与应用实例。

先看一下我们将要使用的51单片机综合学习系统能完成哪些实验与产品开发工作:分别有流水灯,数码管显示,液晶显示,按键开关,蜂鸣器奏乐,继电器控制,IIC总线,SPI总线,PS/2实验,AD模数转换,光耦实验,串口通信,红外线遥控,无线遥控,温度传感,步进电机控制等等。

图1 51单片机综合学习系统上图是我们将要使用的51单片机综合学习系统硬件平台,如图1所示,本期实验我们用到了综合系统主机、200米无线遥控器,无线接收板,综合系统其它功能模块原理与使用详见前几期《电子制作》杂志及后期连载教程介绍。

PT2262/PT2272无线模块工作原理PT2262/2272是台湾普城公司生产的一种CMOS工艺制造的低功耗低价位通用编/解码电路,是目前在无线通讯电路中作地址编码识别最常用的芯片之一。

PT2262/2272最多可有12位(A0-A11)三态(悬空,接高电平,接低电平)地址设定管脚,任意组合可提供531441个地址码。

PT2262最多可有6位(D0-D5)数据端管脚,设定的地址码和数据码从17脚(Dout)串行输出,可用于无线遥控发射电路。

PT2262和PT2272的引脚排列见图2。

对于编码器PT2262,A0~A5共6根线为地址线,而A6~A11共6根线可以作为地址线,也可以作为数据线,这要取决于所配合使用的解码器。

若解码器没有数据线,则A6~A11作为地址线使用,这种情况下,A0~A11共12根地址线,每线都可以设置成“1”、“O”、“开路”三种状态之一,因此共有编码数312=531441种;但若配对使用的解码器的A6~A11是数据线,例如PT2272,那么这时PT2262的A6~A11也作为数据线用,并只可设置为“1”和“0”两种状态之一,而地址线只剩下A0~A5共6根,编码数降为36=729种。

51单片机对315M、443M无线遥控波形分析

51单片机对315M、443M无线遥控波形分析

最近想做无线遥控,在网上没有找到好的资料,要想做好无线遥控,就要清楚无线遥控的波形,最好用示波器,但太贵了,自己动手先做一简单的示波器,利用声卡当示波器,很好用,对红外遥控、315M/443M无线遥控、51单片机串口分析等足够用了。

下面是我做的图片:1、硬件(音频线1根,万用表表笔1付);2软件。

这就是硬件,一根音频线各和两只表笔。

(10元钱不到)双通示波器表笔接测式端,屏蔽线接地。

音频线插头插入“话筒输入端”这是软件CoolEdit2.0值得注意的是接收到的波形图是通过声卡后反了相的,可以通过软件编辑反相,能接收到发送的波形图,就好办了,对波形图分析,就可以解码,可以根据对波形图分析理解,找到你自己的解码方式。

这是用声卡示波器对315M/443M无线遥控接收到的波形图:通过对波形的分析,好像是很乱,这就是为什么很多初学者无线遥控解码失败的原因,在没有接收到无线遥控信号时,也有一些乱的波形,有些朋友想用315M/443M无线遥控模块做串口通信,结果发现接收到很多乱码,而且不停的接收到。

你会看到波形有突然的变化,放大后,你就会发现有一定的规律,首先有一段比较长的波形,通过软件可以看出有多少ms(大概13ms),这就是同步码,后面有25短的波形,这就是PT2262的编码格式。

首先要识别出同步码,这个很关键,我们在做发射编码时也要做这个,一般为10-20ms,这是区别于乱码的标志。

下面说说我是怎样解码的,利用51单片机,接收信号接到P3.2,用下降沿外部中断。

检测每2次下降沿中断的时间,用T1计时;每2次下降沿之间的高电平段的时间,用T0计时;这是常用的PT2262的格式,首先要检测到同步码,每两次中断的时间大于(T1计时)12ms;检测到同步码后才开始解码,如果接收到的高电平在450us左右为“0”;如果接收到的高电平在1300us左右为“1”;这样我们就能解码了。

这是我的解码程序:#include <STC12C5A60S2.h>#include <intrins.h>#include<stdlib.h>#include <stdio.h>#define uchar unsigned char#define uint unsigned intuint INT0_H_timer=0;//两个下降沿之间的高电平宽度uint INT0_L_timer=0;//两个下降沿总宽度bit DBM =0;//同步码标志long DATA=0;//取得24位数据(暂存);long DATAZ=0;//取得24位数据(比较暂存);long DATAX=0;//取数据uchar DATA_x=0;//取数据次数;//uint INT0_H[24]={0,};uchar TY=0;//连续取数标志void InitTimer0(void)//T0用于计两个下降沿之间的高电平宽度{TMOD |= 0x09;//T0加门控计高电平宽度TH0 = 0x00;TL0 = 0x00;ET0 = 0;//关T0定时中断TR0 = 1;TF0=0;//溢出清0}void InitTimer1(void)//T1用于计两个下降沿总宽度{TMOD |= 0x10;TH1 = 0x00;TL1 = 0x00;ET1 = 0;//关T1定时中断TR1 = 1;TF1=0;//溢出清0}void INT0_int()//外部中断初始化{IT0=1;//下降沿EX0=1;EA=1;}void main(void){uchar x=12,y=0;// AUXR &= 0x7F; //定时器时钟12T模式InitTimer0();InitTimer1();INT0_int();TH0=10;TL0=10;while (1){P0=DATAX;}}void INT0Interrupt(void) interrupt 0{INT0_L_timer=TH1*256+TL1;//两个下降沿总宽度INT0_H_timer=TH0*256+TL0;//两个下降沿之间的高电平宽度TH0 = 0x00;TL0 = 0x00;TH1 = 0x00;TL1 = 0x00;if (TF0)//有溢出不取值出错{INT0_L_timer=0;//两个下降沿总宽度INT0_H_timer=0;//两个下降沿之间的高电平宽度TF0=0;TF1=0;DBM=0;DATA_x=0;// P0=0xfe;}//晶振22.1184、12分频,13~15ms为同步码if (INT0_L_timer>24000&&INT0_L_timer<27000)//晶振22.1184、12分频{DBM=1;//P0=0;}if (DBM)//取第3次同步码后的数据{if ((INT0_H_timer>600)&&(INT0_H_timer<1000))//350~500us为0{DATA &= 0xfffffe;if (DATA_x<23){DATA_x++;DATA=DATA<<1;}else{if (TY>=1){TY=0;if (DATAZ==DATA)//如果2次取数一致,读出数{DATAX=DATA;}else{INT0_L_timer=0;//两个下降沿总宽度INT0_H_timer=0;//两个下降沿之间的高电平宽度TF0=0;TF1=0;DBM=0;DATA_x=0;}}else{DATAZ=DATA;TY++;}DATA=0;DBM=0;DATA_x=0;// P0=0x7f;}}else if ((INT0_H_timer>2200)&&(INT0_H_timer<2600))//1200~1400us为1 {DATA |= 0x000001;if (DATA_x<23){DATA_x++;DATA=DATA<<1;}else{if (TY>=1){TY=0;if (DATAZ==DATA)//如果2次取数一致,读出数{DATAX=DATA;}else{INT0_L_timer=0;//两个下降沿总宽度INT0_H_timer=0;//两个下降沿之间的高电平宽度TF0=0;TF1=0;DBM=0;DATA_x=0;}}else{DATAZ=DATA;TY++;}DATA=0;DBM=0;DATA_x=0;// P0=0x7f;}}else//出错{INT0_L_timer=0;//两个下降沿总宽度INT0_H_timer=0;//两个下降沿之间的高电平宽度TF0=0;TF1=0;DBM=0;DATA_x=0;//P0=0xfd;}}}。

51单片机简易红外线遥控开关

51单片机简易红外线遥控开关

24.2 简易红外线遥控开关
功能说明: 功能说明:按下遥控器1键,则继电器SSR将ON,蜂鸣器响一声,再 次按下遥控器上的1键,继电器将OFF。

程序设计

硬件设计
程序中,将接收到的红外线遥控器信号进 行解码,并与按键1码(01H)进行比较, 如果相同,则继电器才能工作,防止误动。
主要标号说明
● ● ● ● ● ● ● ●
第24章 红外线遥控应用实例 章
24.1 LED显示遥控器按键值 显示遥控器按键值
功能说明: 功能说明:选用一种电视机遥控器,再利用接收模块结合单片机解码,控 制P1端口所接的8个LED亮或灭。

单片机解码

接收端波形
单片机解码的关键是如何识别“0” 单片机解码的关键是如何识别“ 均以0.56ms的低 和“1”,“0”、“1”均以 , 、 均以 的低 电平开始, 电平开始,不同的是高电平的宽度 不同,所以, 不同,所以,可以直接通过判断高 电平的宽度的计数值, 电平的宽度的计数值,来决定接收 的原编码为0或 。 的原编码为 或1。
24.3 红外线遥控七色小彩灯
功能说明: 功能说明:利用红外线遥控系统,控制3个高亮度LED,其发光颜色分 别为红、绿、蓝。再根据三基色原理进行组合,使得彩灯呈件设计
利用红外遥控系统,控制3个LED,按照三基色原理进行组合发光。 红色 + 绿色 = 黄色 绿色 + 蓝色 = 青色 红色 + 蓝色 = 紫色 红色 + 绿色 + 蓝色 = 白色 主要标号说明 ● MAIN: 主程序。 ● IR_IN: 解码子程序。 ● IR_ZX: 遥控执行子程序。 ● FS_SPK: 发声子程序。 ● DE: 短暂延时子程序。 ● DELAY05_R5: ;延时子程序,总延时时间为0.5ms*R5。 ● DEL: 用于解码延时子程序,延时时间为0.093ms。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

硬件原理图
图 8 无线遥控实验演示图
程序流程图
图 9 硬件原理图
图 10 软件流程图
软件代码
/******************************************************************** *******/
/*杭州晶控电子有限公司 */
/*
接收板工作电压为 DC 5V,接收灵敏度: -103dBm ,尺寸(mm): 49*20*7 , 工作频率:315MHz,工作电流:5mA ,编码类型:固定码(板上焊盘跳接设置) 应 用说明:与各类型遥控器配合使用,解码输出后进行相应控制,如采用单片机进 行读取接收并解码数据然后控制相应的灯或电源开关。
PT2262 和 PT2272 的引脚排列见图 2。对于编码器 PT2262,A0~A5 共 6 根线 为地址线,而 A6~A11 共 6 根线可以作为地址线,也可以作为数据线,这要取决 于所配合使用的解码器。若解码器没有数据线,则 A6~A11 作为地址线使用,这
种情况下,A0~A11 共 12 根地址线,每线都可以设置成“1”、“O”、“开路” 三种状态之一,因此共有编码数 312=531441 种;但若配对使用的解码器的 A6~ A11 是数据线,例如 PT2272,那么这时 PT2262 的 A6~A11 也作为数据线用,并 只可设置为“1”和“0”两种状态之一,而地址线只剩下 A0~A5 共 6 根,编码 数降为 36=729 种。
PT2262 编码电路与 PT2272 解码电路一般配对使用,PT2262 的特点是在其内 部已经把编码信号调制在了一个较高的载频上。要把遥控编码信息用无线方式 (红外线或无线电等)传送出去,必须有载体(载波),把编码信息“装载”在载体 上(调制在载波上)才能传送出去,因此需要一个振荡电路和一个调制电路。 PT2262 编码器内部,已包含了这些电路,从 DOUT 端送出的是调制好了的约 38kHz 的高频已调波,因此使用起来非常方便,适用于红外线和超声波遥控电路。
置要完全一样。当两者地址编码完全一致时,接收机对应的 D1~D4 端输出约 4V
互锁高电平控制信号,同时 VT 端也输出解码有效高电平信号。
OOOOOOOO
L
--------
11111111
H
图 7 地址设置跳线图
无线模块的软硬件设计应用
在功能稍复杂的系统中仅靠一对无线收发模块往往达不到要求,很多情况下 都要借助于单片机扩展出更多的功能。本例通过一个简单的例子,实现单片机与 无线接收模块的组合应用。
编码芯片 PT2262 发出的编码信号由地址码、数据码、同步码组成一个完整 的码字。解码芯片 PT2272 接收到信号后,其地址码经过两次比较核对后,VT 脚 才输出高电平,与此同时相应的数据脚也输出高电平。PT2262 每次发射时至少 发射 4 组字码,因为无线发射的特点,第一组字码非常容易受零电平干扰,往往 会产生误码,所以 2272 只有在连续两次检测到相同的地址码加数据码才会把数 据码中的“1”驱动相应的数据输出端为高电平和驱动 VT 端同步为高电平。当发 射机没有按键按下时,PT2262 不接通电源,其 17 脚为低电平,所以 315MHz 的 高频发射电路不工作,当有按键按下时,PT2262 得电工作,其第 17 脚输出经调 制的串行数据信号,当 17 脚为高电平期间 315MHz 的高频发射电路起振并发射等 幅高频信号,当 17 脚为低平期间 315MHz 的高频发射电路停止振荡,所以高频发 射电路完全收控于 PT2262 的 17 脚输出的数字信号,从而对高频电路完成幅度键 控(ASK 调制)相当于调制度为 100%的调幅。
PT2272 解码芯片有不同的后缀,表示不同的功能,有 L4/M4/L6/M6 之分, 其中 L 表示锁存输出,数据只要成功接收就能一直保持对应的电平状态,直到下 次遥控数据发生变化时改变。M 表示非锁存输出,数据脚输出的电平是瞬时的而 且和发射端是否发射相对应,可以用于类似点动的控制。后缀的 6 和 4 表示有几 路并行的控制通道,当采用 4 路并行数据时(PT2272-M4),对应的地址编码应 该是 8 位,如果采用 6 路的并行数据时(PT2272-M6),对应的地址编码应该是 6 位。
unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
/*******************************定义全局变量 ********************************/
/*********************************端口定义 **********************************/
遥控发射器工作电压为 DC 12V(电池供电) ,尺寸(mm): 58*39*14 ,工作频率:315MHz , 工作电流(mA):13 编码类型: 固定码(板上焊盘跳接设置) 应用说明:与各类型带解码功能的 接收模块联合使用,解码输出后进行相应控制,如采用单片机进行读取接收并解码数据然后控制 相应的灯或电源开关。
*/
/*无线收发模块演示程序 */
/*目标器件:AT89S51 */
/*晶振:11.0592MHZ
*/
/*编译环境:Keil 7.50A */
/******************************************************************** *******/
据才能转换
Vcc
18
电源正端(+)
Vss
9
电源负端(-)
DIN
14
数据信号输入端,来自接收模块输出端
OSC1 16
振荡电阻输入端,与 OSC2 所接电阻决定振荡频率
OSC2 15
振荡电阻振荡器输出端
VT
17
解码有效确认输出端(常低)解码有效变成高电平(瞬 态)
表 2:解码电路 PT2272 脚管功能表
图 2 PT2262、PT2272 引脚排列图
该编解码器的编码信号格式是:用 2 个周期的占空比为 1:3(即高电平宽度 为 1,低电平宽度为 2,周期为 3)的波形来表示 1 个“0”,用 2 个周期的占空 比为 2:3(即高电平宽度为 2,低电平宽度为 1,周期为 3)的波形来表示 1 个“1”, 用 1 个周期的占空比为 1:3 的波形紧跟着 1 个周期的占空比为 2:3 的波形来表示 “开路”。地址码和数据码都用宽度不同的脉冲来表示,两个窄脉冲表示“0”; 两个宽脉冲表示“1”;一个窄脉冲和一个宽脉冲表示“F”也就是地址码的“悬 空”。
/*********************************包含头文件 ********************************/
#include <reg51.h>
/*******************************共阳 LED 段码表 *******************************/
图 5 解码接收模块和电路原理图
图 6 无线遥控接收板
无线收发模块的地址码设定
在通常使用中,我们一般采用 8 位地址码和 4 位数据码,这时编码芯片
PT2262 和解码芯片 PT2272 的第 1~8 脚为地址设定脚,有三种状态可供选择:
悬空、接正电源、接地三种状态,地址编码不重复度为 38=6561 组,只有发射端
无线遥控模块 先看一下我们将要使用的 51 单片机综合学习系统能完成哪些实验与产品开 发工作:分别有流水灯,数码管显示,液晶显示,按键开关,蜂鸣器奏乐,继电 器控制,IIC 总线,SPI 总线,PS/2 实验,AD 模数转换,光耦实验,串口通信, 红外线遥控,无线遥控,温度传感,步进电机控制等等。
图 1 51 单片机综合学习系统 上图是我们将要使用的 51 单片机综合学习系统硬件平台,如图 1 所示,本
图 3 编码发射模块实物图与原理框图 其中编码部分电路由 PT2262 编码 IC 来组成,具体电路见图 4 所示。
图 4 编码电路原理图
基于 PT2272 的无线解码模块
解码接收模块包括接收头和解码芯片 PT2272 两部分组成。接收头将收到的 信号输入 PT2272 的 14 脚(DIN),PT2272 再将收到的信号解码。解码接收模块 和电路原理图如图 5,接收板实物如图 6 所示。
名称 管脚
说明
D0-D5 7-8、10-13 数据输入端,有一个为“1”即有编码端(+)
Vss
9
电源负端(-)
TE
14
编码启动端,用于多数据的编码发射,低电平有效
OSC1 16
振荡电阻输入端,与 OSC2 所接电阻决定振荡频率
OSC2 15
振荡电阻振荡器输出端
Dout 17
期实验我们用到了综合系统主机、200 米无线遥控器,无线接收板,综合系统其 它功能模块原理与使用详见前几期《电子制作》杂志及后期连载教程介绍。
PT2262/PT2272 无线模块工作原理
PT2262/2272 是台湾普城公司生产的一种 CMOS 工艺制造的低功耗低价位通 用编/解码电路,是目前在无线通讯电路中作地址编码识别最常用的芯片之一。 PT2262/2272 最多可有 12 位(A0-A11)三态(悬空,接高电平,接低电平)地址设定 管脚,任意组合可提供 531441 个地址码。PT2262 最多可有 6 位(D0-D5)数据端管 脚,设定的地址码和数据码从 17 脚(Dout)串行输出,可用于无线遥控发射电路。
PT2262 和接收端 PT2272 的地址编码完全相同,才能配对使用,遥控模块的生产
厂家为了便于生产管理,出厂时遥控模块的 PT2262 和 PT2272 的八位地址编码端
全部悬空,这样用户可以很方便选择各种编码状态,用户如果想改变地址编码,
相关文档
最新文档