2006我的毕设315M和433M无线发射接收程序

合集下载

无线发射接收模块详细资料讲解

无线发射接收模块详细资料讲解

无线发射/接收模块1.微型无线发射/接收模块4.射频发射模块/射频接收模块射频发射模块F05A F05B F05C (声表稳频)性能说明FO5系列采用声表谐振器稳频,SMT树脂封装,频率一致性较好,免调试,特别适合多发一收无线遥控及数据传输系统。

而一般的LC振荡器频率稳定度及一致性较差,即使采用高品质微调电容,温差变化及振动也很难保证已调好的频点不会发生偏移。

F05具有较宽的工作电压范围及低功耗特性,当发射电压为3V时,发射电流约2mA,发射功率较小,12V为最佳工作电压,具有较好的发射效果,发射电流约5-8mA,大于l2V直流功耗增大,有效发射功率不再明显提高。

FO5系列采用AM方式调制以降低功耗,数据信号停止,发射电流降为零,数据信号与FO5用电阻而不能用电容耦合,否则FO5将不能正常工作。

数据电平应接近F05的实际工作电压以获得较高的调制效果,FO5对过宽的调制信号易引起调制效率下降,收发距离变近。

当高电平脉冲宽度在0.08-1ms时发射效果较好,大于1ms后效率开始下降;当低电平区大于10ms,接收到的数据第一位极易被干扰(即零电平干扰)而引起不解码。

如采用CPU编译码可在数据识别位前加一些乱码以抑制零电平干扰,若是通用编解码器,可调整振荡电阻使每组码中间的低电平区小于10ms。

FO5输入端平时应处于低电平状态,输入的数据信号应是正逻辑电平,幅度最高不应超过FO5的工作电压。

F05 天线长度可从0-250mm选用,也可无天线发射,但发射效率下降。

F05C 为改进型,体积更小,內含隔离调制电路消除输入信号对射频电路的影响,信号直接耦合,性能更加稳定。

FO5 应垂直安装在印板边部,应离开周围器件5mm以上,以免受分布参数影晌而停振。

FO5发射距离与调制信号頻率幅度,发射电压及电池容量,发射天线,接收机灵敏度及收发环境有关。

FO5用PT2262编码器加240mm 小拉杆天线在开阔区最大发射距离约250米,在障碍区相对要近,由于折射反射会形成一些死区及不稳定区域,不同的收发环境会有不同的收发距离。

315M无线模块数据传输

315M无线模块数据传输

315M无线模块数据传输常用的近距离无线传输有很多种方式:1)CC1100/NRF905433MHz无线收发模块;2)NRF24012.4GHz无线收发模块;3)蓝牙模块;4)Zigbee系列无线模块;以上1/2/3模块,一个大概要几十块钱,一套加起来要一百多块,4就更贵了,单个就要上百块钱。

而常用的315M遥控模块就便宜很多了,收发一套淘宝上才卖8块钱。

这种模块用途极其广泛,例如遥控开关/汽车/门禁/防盗等,大部分是配合2262/2272编解码芯片实现开关的功能。

如果能够利用315M模块实现数据传输,透明传输串口数据,那将是无线数据传输最廉价的方式。

就是这种模块,不带编码解码芯片的,淘宝价一套8块钱:发送电路图,使用声表,工作稳定:接收电路图,超外差接收,用了一片LM358:试验一:单片机串口发送端TX直接接315M发送模块的TXD,另外一个串口的接收端RX直接接315M 接收模块的DATE输出端:结果如上图所示,串口发送单字节0x50的时候,串口TX端的波形如上图上半部分所示,一个开始位,一个停止位,8个数据位(低位在前高位在后)。

下半部分是通过315M模块无线传输之后,在串口接收端RX收到的波形。

接收下来之后,发现数据传输错误,发送0x50,收到的是0x05,发0x40收到0x01,发送0x41收到0x50,发送0x42收到0x28。

传输错误的原因:在有数据时候,波形是正确的。

但是串口TX端在空闲的时候,是高电平状态,而通过315M无线传输之后,空闲时候却是低电平状态!结果就是接收电路读出的数据错开了一位,数据传输错误。

试验二:串口TX经过反相后,再通过315M模块传输,接收端再反相一下,电路图如下:这次数据传输成功了!1)在1200bps和2400bps速率下,在数据传输期间,数据是正确的,但是数据发送完成后,接收端会收到一大堆的乱码;2)在4800bps速率下,首字节丢失,其他字节传输正常,发送完成后仍然跟着一堆乱码。

关于无线遥控315模块的发射与接收

关于无线遥控315模块的发射与接收

关于无线遥控315模块的发射与接收最近为了开发无线数据传输项目,看了不少无线数据发送与接收的资料,其中无线遥控315模块比较便宜和应用比较广泛,以下是单片机模拟2272软件解码;在无线遥控领域,PT2262/2272是目前最常用的芯片之一,但由于芯片要求配对使用,在很大程度上影响了该芯片的使用,笔者从PT2262波形特征入手,结合应用实际,提出软件解码的方法和具体措施。

一、概述PT2262/2272是一种CMOS工艺制造的低功耗低价位通用编解码电路,是目前在无线通讯电路中作地址编码识别最常用的芯片之一。

PT2262/2272最多可有12位(A0-A11)三态地址端管脚(悬空,接高电平,接低电平),任意组合可提供531441地址码,PT2262最多可有6位(D0-D5)数据端管脚,设定的地址码和数据码从17脚串行输出。

PT2262/2272必须用相同地址码配对使用,当需要增加一个通讯机时,用户不得不求助于技术人员或厂家来设置相同地址码,客户自己设置相对比较麻烦,尤其对不懂电子的人来说。

随着人们对操作的要求越来越高,PT2262/2272的这种配对使用严重制约着使用的方便性,人们不断地要求使用一种无须请教专业人士,无须使用特殊工具,任何人都可以操作的方便的手段来弥补PT2262/2272的缺陷,这就是PT2262软件解码。

二、解码原理上面是PT2262的一段波形,可以看到一组一组的字码,每组字码之间有同步码隔开,所以我们如果用单片机软件解码时,程序只要判断出同步码,然后对后面的字码进行脉冲宽度识别即可。

2262每次发射时至少发射4组字码,2272只有在连续两次检测到相同的地址码加数据码时才会把数据码中的“1”驱动相应的数据输出端为高电平和驱动VT端同步为高电平。

因为无线发射的特点,第一组字码非常容易受零电平干扰,往往会产生误码,所以程序可以丢弃下面我们来仔细看一下PT2262的波形特征:振荡频率f=2*1000*16/Rosc(kΩ) kHz 其中Rosc为振荡电阻这里我们选用的是一种比较常用的频率f≈10 kHz, Rosc=3.3MΩ(以下同)。

基于Si4220的315、433、868、915无线发射系统设计(郝兴恒 南华大学)

基于Si4220的315、433、868、915无线发射系统设计(郝兴恒 南华大学)

符号
参数
最小值
最大值
单位
Vdd
供电电压
-0.5
6.0
V
Vid
任意引脚电压(除了集电极开路引
-0.5
Vdd+0.5
V
脚输出)
Vcc
开环输出电压
-0.5
6.0
V
Iin
任何引脚输入电流(除了 Vss 和
-25
25
mA
Vdd)
ESD
人体模型静电放电
1000
V
Tst
贮存温度
-55
125
°C
Tit
焊接温度(锡焊,最大 10m)
锁相环中的RF VCO(射频压强振荡器)仅仅需要数微秒就能完成自动校准功能。为了确 保在编程设定的频段进行合适的操作运行,射频压强振荡器通过激活合成器唤醒自动频率调 整。如果温度或者是电压变化不可忽略,VCO 重调整能够被很方便的调用,重调整能够通 过合成器开关的开合在任何时刻加入。
图(3)Si4220 芯片内部结构框图
为了尽可能减小待机电流,设备提供休眠模式,通过几个唤醒事件工作模式能够加入: 唤醒时钟超时,低电压侦测,按下四个输入按键的任意一个,或者是通过串行接口,输入按 钮能够被来自微处理器或者是微控制器的逻辑信号直接驱动通过正常打开开关。上拉电阻集 成在芯片里面。
如果有任何的唤醒事件产生,唤醒逻辑电路都会产生一个中断信号来用于唤醒微控制器, 有效的减少微控制器的激活时间。中断产生的原因能够被微控制器从 nIRQ 引脚读出。 ⑦接口
1.2.2 控制模块
由于该芯片需要对寄存器进行设置来控制芯片的各项性能参数,为了尽量做到匹配,本 设计采用 Silicon Labs 推荐的由其生产的小体积高性能微控制器 C8051F311 作为无线控制 核心。这样可以减少考虑引脚匹配,时延和速率计算等各个因素,减小硬、软件的设计难度。 同时也能使操作简单,并减小模块体积,增加其便携性。此方案显然是可行的并且是最佳的。

315M433M无线发射接收模块讲课稿

315M433M无线发射接收模块讲课稿

315M433M无线发射接收模块315M/433M无线发射接收模块一对模块10元左右,两块匹配主要参数1、通讯方式:调幅AM2、工作频率:315/433MHZ3、频率稳定度:±75KHZ4、发射功率:≤500MW5、静态电流:≤0.1UA6、发射电流:3~50MA7、工作电压:DC 3~12V接收模块等效电路图:该高频接收模块采用进口SMD器件, 6.5G高频三极管, 高Q值电感生产, 性能稳定可靠, 灵敏度高, 功耗低, 质优价廉, 广泛应用于各种防盗系统,遥控控制系统。

适用于各种低速率数字信号的接收;工业遥控、遥测、遥感;防盗报警器信号接收, 各种家用电器的遥控等。

超再生接收模块的中间两个引脚都是信号输出是连通的,超再生接收模块的等效电路图如下:主要技术指标1、通讯方式:调幅AM2、工作频率:315/433MHZ3、频率稳定度:±200KHZ4、接收灵敏度:-105dbm5、静态电流:≤3mA(DC5V)6、工作电流:≤5MA7、工作电压:DC3C-5V8、输出方式:TTL电平9、体积:30x13x8mm模块的工作电压为5伏,静态电流3毫安,它为超再生接收电路,接收灵敏度为-105dbm,接收天线最好为25~30厘米的导线,最好能竖立起来。

接收模块本身不带解码集成电路,因此接收电路仅是一种组件,只有应用在具体电路中进行二次开发才能发挥应有的作用,这种设计有很多优点,它可以和各种解码电路或者单片机配合,设计电路灵活方便。

DF数据发射模块的工作频率为315M,采用声表谐振器SAW稳频,频率稳定度极高,当环境温度在-25~+85度之间变化时,频飘仅为3ppm/度。

特别适合多发一收无线遥控及数据传输系统。

声表谐振器的频率稳定度仅次于晶体,而一般的LC振荡器频率稳定度及一致性较差,即使采用高品质微调电容,温差变化及振动也很难保证已调好的频点不会发生偏移。

DF发射模块未设编码集成电路,而增加了一只数据调制三极管Q1,这种结构使得它可以方便地和其它固定编码电路、滚动码电路及单片机接口,而不必考虑编码电路的工作电压和输出幅度信号值的大小。

315Mhz、433Mhz无线遥控信号的解码分析和模拟

315Mhz、433Mhz无线遥控信号的解码分析和模拟

315Mhz、433Mhz⽆线遥控信号的解码分析和模拟摘要前段时间学习⽆线电的同时了解到arduino是作为技能尚未成熟技术宅的我继树莓派⼜⼀个不错的选择。

于是花了200元购得3块arduino开发板(2*nano&1*uno)和其他传感器等,同时看到了315M超再⽣模块,因为玩⽆线电的都知道315M是汽车遥控器,防盗闸门,路桥系统等最常⽤的信号频率,所以我就毫不犹豫的下单了。

然后就有了今天的成果。

Freebuf也有不少此类⽂章,关于315,433的解码我已掌握很多⽅法(其实使⽤SDR是个不错的选择),对滚码我也有⼀定研究和破解,本⽂步骤详细,思路明确,希望对⼤家有⽤。

对arduino和315模块熟悉的可以直接进⼊第三步。

关键词:315M超再⽣模块、arduino。

引⾔:315MHz遥控器使⽤⼴泛,学习和深⼊了解其原理和实际操作,在获得⽆限乐趣的同时,可以学会防⽌⾃⼰的车被盗,并可以⾃⼰开发更安全的遥控锁设备,在做本项⽬的过程中我深刻体会到315M遥控系统的不安全性是个严重的问题,主要表现在315遥控系统解码简单,发射条件简单,易拷贝。

下⾯是我在此次学习研究中得到的⼀些浅陋知识,在此详细描述。

以下是本次学习的原理框架:框图说明:接收端接收信号,由arduino单⽚机解码,并将解码信息通过蓝⽛发送到⼿机,在⼿机蓝⽛串⼝监视器显⽰(解码过程);⼿机发送24位遥控码到单⽚机,单⽚机将24位遥控码通过发射端发出,⽤于遥控模拟接收端通过接收端PT2272芯⽚解码后在LED信号灯得到反馈,模拟接收端由单⽚机直接供电,发射端发出的信号也可直接有其他遥控接收端接收达到其他⽬的。

⼀、基础知识介绍:1、Arduino介绍:Arduino是⼀款便捷灵活、⽅便上⼿的开源电⼦原型平台,包含硬件(各种型号的Arduino板)和软件(Arduino IDE)。

由⼀个欧洲开发团队最早于2005年冬季开发。

其成员包括Massimo Banzi,David Cuartielles,Tom Igoe,Gianluca Martino,David Mellis和Nicholas Zambetti。

315m无线模块怎么接收程序?程序是什么?

315m无线模块怎么接收程序?程序是什么?

315m无线模块怎么接收程序?程序是什么?下面给大家整理下315M无线模块的接收程序#include AT89X52.H#include string.h//液晶块#define LCM_RW P3_6 //定义引脚#define LCM_RS P3_5#define LCM_E P3_7#define LCM_Data P1#define Busy 0x80 //用于检测LCM状态字中的Busy标识typedef int byte;typedef unsigned int word;void Read_Temp(void);void mychar(char,char);void WriteDataLCM(unsigned char WDLCM);void WriteCommandLCM(unsigned char WCLCM,BuysC);unsigned char ReadDataLCM(void);unsigned char ReadStatusLCM(void);void LCMInit(void);void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData); void Delay5Ms(void);void Delay400Ms(void);void delay(word useconds){for(;useconds0;useconds--);}void mychar(char xx,char yy){DisplayOneChar(0,0,0x54);DisplayOneChar(1,0,0x65);DisplayOneChar(2,0,0x6D); DisplayOneChar(3,0,0x70); DisplayOneChar(4,0,0x65); DisplayOneChar(5,0,0x72); DisplayOneChar(6,0,0x61); DisplayOneChar(7,0,0x74); DisplayOneChar(8,0,0x75); DisplayOneChar(9,0,0x72); DisplayOneChar(10,0,0x65); DisplayOneChar(11,0,0x3A);///////////////////////自定义字符WriteCommandLCM(0x48, 0); //第一行WriteDataLCM(0x06); WriteCommandLCM(0x49, 0); //第2行WriteDataLCM(0x09); WriteCommandLCM(0x4a, 0); //第3 WriteDataLCM(0x09); WriteCommandLCM(0x4b, 0); //第4 WriteDataLCM(0x06); WriteCommandLCM(0x4c, 0); //第5 WriteDataLCM(0x00); WriteCommandLCM(0x4d, 0); //第6 WriteDataLCM(0x00); WriteCommandLCM(0x4e, 0); //第7 WriteDataLCM(0x00); WriteCommandLCM(0x4f, 0); //第8 WriteDataLCM(0x00); DisplayOneChar(xx,yy,0x01); DisplayOneChar(xx+1,yy,0x43);}//写数据void WriteDataLCM(unsigned char WDLCM){ReadStatusLCM(); //检测忙LCM_Data = WDLCM;LCM_RS = 1;LCM_RW = 0;LCM_E = 0; //若晶振速度太高可以在这后加小的延时LCM_E = 0; //延时LCM_E = 1;}//写指令void WriteCommandLCM(unsigned char WCLCM,BuysC) //BuysC为0时忽略忙检测{if (BuysC) ReadStatusLCM(); //根据需要检测忙LCM_Data = WCLCM;LCM_RS = 0;LCM_RW = 0;LCM_E = 0;LCM_E = 0;LCM_E = 1;}//读状态unsigned char ReadStatusLCM(void){LCM_Data = 0xFF;LCM_RS = 0;LCM_RW = 1;LCM_E = 0;LCM_E = 0;LCM_E = 1;while (LCM_Data Busy); //检测忙信号return(LCM_Data);}void LCMInit(void) //LCM初始化{LCM_Data = 0;WriteCommandLCM(0x38,0); //三次显示模式设置,不检测忙信号Delay5Ms();WriteCommandLCM(0x38,0);Delay5Ms();WriteCommandLCM(0x38,0);Delay5Ms();WriteCommandLCM(0x38,1); //显示模式设置,开始要求每次检测忙信号WriteCommandLCM(0x08,1); //关闭显示WriteCommandLCM(0x01,1); //显示清屏WriteCommandLCM(0x06,1); // 显示光标移动设置WriteCommandLCM(0x0C,1); // 显示开及光标设置}//按指定位置显示一个字符void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData) {Y = 0x1;X = 0xF; //限制X不能大于15,Y不能大于1if (Y) X |= 0x40; //当要显示第二行时地址码+0x40;X |= 0x80; //算出指令码WriteCommandLCM(X, 0); //这里不检测忙信号,发送地址码WriteDataLCM(DData);}//按指定位置显示一串字符***原来的遇到空格0x20就不显示***void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData) {unsigned char ListLength,j;ListLength = strlen(DData);Y = 0x1;X = 0xF; //限制X不能大于15,Y不能大于1if (X = 0xF) //X坐标应小于0xF{for(j=0;jListLength;j++){DisplayOneChar(X, Y, DData[j]); //显示单个字符X++;}}}//5ms延时void Delay5Ms(void){unsigned int TempCyc = 5552;while(TempCyc--);}//400ms延时void Delay400Ms(void){unsigned char TempCycA = 5;unsigned int TempCycB;while(TempCycA--){TempCycB=7269;while(TempCycB--); };}sbit W_IN = P2 ; sbit W_OUT = P2。

433和315无线模块的软件编解码遥控程序

433和315无线模块的软件编解码遥控程序

433和315无线模块的软件编解码遥控程序1:单片机软件解码pt22402:选择PIC16F877A作为软件解码芯片3:选择外部4MHz晶体振荡器作为单片机的时钟频率4:选择外部中断引脚作为编码信号引脚的输入引脚5:可解pt2240芯片(8脚的学习型编码芯片编码地址位:2的20次方重复几率100万分之一)6:功能是:遥控学习(演示上的S9用作学习按钮)清除内存(长按演示上的S9以清除遥控地址的记忆)7:可设置学习遥控器数量(可根据EEPROM大小任意设置)8:输出功能(有三路是单击遥控器双稳,可以通过portc上的led可以看到结果.还有一路是双击远程控制(双稳态)9:可选用315mhz/433mhz的超再生/超外差接收模块/***************************************************************************** *//******************************遥控器接收程序********************************//***************************************************************************** */#include#包括#定义远程uGeshu10/***************************************************************************** */联合比特16{inttimer1_reg;unsignedcharreg[2];}联合比特u32{unsignedlongdata_temp_long;unsignedchardata_temp_byte[4];}/***************************************************************************** */staticunionbit_16timer1_temp;//16位定时器1staticunionbit_32data_temp;/***************************************************************************** */staticvolatileunsignedcharrec_status@97;staticunsignedchardata_uCout;//遥控器接收到的代码号为staticunsigned chardata//received 4位数据staticunsigned_uuUpulse;//高电平宽度静态无符号整数脉冲;//低电平宽度staticunsignedcharremote_cout;//遥控器数量staticunsignedcharremote_numb;//遥控器编号/***************************************************************************** */staticunsignedchartimer15s1;//清除学习码按键长按时间staticunsignedchartimer15s2;//学习等待时间staticunsignedchartimer15s3;//遥控器的数据缓冲时间为StaticUnsignedChartTimer15s4//LED显示时间staticunsignedcharttimer15s5//StaticUnsignedChartTimer15s6;//静态无符号图表15s7;//静态无符号图表15S8///***************************************************************************** */staticbithead@((未签名)(&rec_状态)*8+(0));//同步头标志位staticbitlearn@((无符号)(&rec_状态)*8+(1))//学习标志位staticbitrecieved@((unsigned)(&rec_status)*8+(2));//接收完成标志位staticbitremote按钮状态@((未签名)(&rec_状态)*8+(3));//远程控制键标志位staticbitfirst_uu单击状态@((未签名)(&rec_状态)*8+(4));//按遥控器上的键单击标志位/***************************************************************************** *//**********************************数据接收**********************************//***************************************************************************** */未签名字符数据读取(无效){if(h_pulse>l_pulse){如果((左脉冲>200)和&(左脉冲<1000)){if(h_pulse返回2;//无效数据}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
WriteCommandLCD(0x38,0);
YEJINGYANSHI(5);
WriteCommandLCD(0x38,1); //8bit数据传送,2行显示,5*7字型,检测忙信号
WriteCommandLCD(0x08,1); //关闭显示,检测忙信号
WriteCommandLCD(0x01,1); //清屏,检测忙信号
LCD_RS=0; //选中指令寄存器
LCD_RW=0;//写模式
LCD_EN=1;
_nop_();
_nop_();
_nop_();
LCD_EN=0;
}
/**********写数据到LCD子函数************/
void WriteDataLCD(unsigned char WDLCD)
{
lcd_wait( ); //检测忙信号
else YEJINGXIANSHIYIGEZIFU(9,1,0+'0');
if (ch2 == 1)YEJINGXIANSHIYIGEZIFU(10,1,1+'0');
else YEJINGXIANSHIYIGEZIFU(10,1,0+'0');
if (ch3 == 1)YEJINGXIANSHIYIGEZIFU(11,1,1+'0');
sbit key_2 = P2^1;
sbit key_3 = P2^2;
sbit key_4 = P2^3;
sbit key_5 = P2^4;
sbit key_6 = P3^5; //有问题
sbit FASONG_send = P3^7; //低电平发送
#define FASONG_Port P1
while(delay--)
delayus(149);
}
/**********写指令到LCD子函数************/
void WriteCommandLCD(unsigned char WCLCD,unsigned char BusyC)
{
if(BusyC)lcd_wait();
DATAPORT=WCLCD;
#include "reg51.h"
#include <intrins.h>
//sbit ch1 = P1^0;
//sbit ch2 = P1^1;
//sbit ch3 = P1^2;
//sbit ch4 = P1^3;
sbit JIESHOU = P3^2;
unsigned char recive = 0;
void YEJINGXIANSHIYICHUANZHIFU(unsigned char X,unsigned char Y,unsigned char code *DData)
{
unsigned char ListLength=0;
Y&=0x01;
X&=0x0f;
while(DData[ListLength] != '\0')
}
if (key_3 == 0)
{
YANSHIYIHAOMIAO(10);
if (key_3== 0)
{
FASONG( 3);//发送:2
XIANSHIYICHUANZHIFU(8,1,"003");
}
while (key_3 == 0);
}
if (key_4 == 0)
{
YANSHIYIHAOMIAO(10);
WriteCommandLCD(0x06,1); //显示光标右移设置,检测忙信号
WriteCommandLCD(0x0c,1); //显示屏打开,光标不显示,不闪烁,检测忙信号
}
/****************显示指定坐标的一个字符子函数*************/
void YEJINGXIANSHIYIGEZIFU(unsigned char X,unsigned char Y,unsigned char DData)
LCD_EN=1;
LCD_RS=0;
LCD_RW=1;
_nop_();
while(DATAPORT&BUSY)
{ LCD_EN=0;
_nop_();
_nop_();
LCD_EN=1;
_nop_();
_nop_();
}
LCD_EN=0;
}
/**********LCD初始化子函数***********/
}
while (key_1 == 0); //等待按键松手
}
if (key_2 == 0)
{
YANSHIYIHAOMIAO(10);
if (key_2 == 0)
{
FASONG( 2);//发送:10
XIANSHIYICHUANZHIFU(8,1,"002");
}
while (key_2 == 0);
void YEJINGCHUSHIHUA( )
{
DATAPORT=0;
YEJINGYANSHI(15);
WriteCommandLCD(0x38,0); //三次显示模式设置,不检测忙信号
YEJINGYANSHI(5);
WriteCommandLCD(0x38,0);
YEJINGYANSHI(5);
{
Y&=1;
X&=15;
if(Y)X|=0x40; //若y为1(显示第二行),地址码+0X40
X|=0x80; //指令码为地址码+0X80
WriteCommandLCD(X,0);
WriteDataLCD(DData);
}
/***********显示指定坐标的一串字符子函数***********/
{
YEJINGXIANSHIYIGEZIFU(X,Y,DData[ListLength]);
ListLength++;
X++;
}
}
/**************************主函数********************************************/
void main()
{
unsigned int temp = 0;
//CLK_DIV = 0X03; //单片机分频降低单片机工作速度
YEJINGYANSHI(50);//延时500ms启动
YEJINGCHUSHIHUA(); //LCD初始化
YEJINGXIANSHIYICHUANZHIFU(0,0," Graduate");//显示
void lcd_wait(void);//LCD检测忙子程序
void WriteCommandLCD(unsigned char WCLCD,unsigned char BusyC); //写指令到ICM子函数
void WriteDataLCD(unsigned char WDLCD); //写数据到LCD子函数
}
while (key_5 == 0);
}
if (key_6 == 0)
{
YANSHIYIHAOMIAO(10);
if (key_6 == 0)
{
FASONG( 6);
XIANSHIYICHUANZHIFU(8,1,"006");}
while (key_6 == 0);
}
}
}
接收:
//#include "12C5A60S2.h"
FASONG_send = 1; //关闭发送
}
/**************************主函数********************************************/
void main()
{
unsigned int i = 0;
//CLK_DIV = 0x03;
FASONG_send = 1; //开机时关闭发送数据
if (key_4 == 0)
{
FASONG( 4);;
XIANSHIYICHUANZHIFU(8,1,"004");
}
while (key_4 == 0);
}
if (key_5 == 0)
{
YANSHIYIHAOMIAO(10);
if (key_5 == 0)
{
FASONG( 5);
XIANSHIYICHUANZHIFU(8,1,"005");
void YEJINGXIANSHIYIGEZIFU(unsigned char X,unsigned char Y,unsigned char DData); //显示指定坐标的一个字符子函数
void YEJINGXIANSHIYICHUANZHIFU(unsigned char X,unsigned char Y,unsigned char code *DData); //显示指定坐标的一串字符子函数
while(1)
{
P1 = 0xff;
if (P1 != 0xff)
{
recive_temp = P1;
recive_temp &= 0x07;
YEJINGXIANSHIYIGEZIFU(9,1,recive_temp+'0');
}
/*if (ch1 == 1)YEJINGXIANSHIYIGEZIFU(9,1,1+'0');
相关文档
最新文档