版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
河南工业职业技术学院机电工程系毕业设计(论文)页第一章元器件说明1.1元器件说明1.1.180C51单片机 80C51单片机是指MCS-51系列单片机中的一款,它内部有4KB掩膜ROM,对于MCS-51系列单片机来说,其基本功能是完全兼容;8051单片机主要由如下功能部件组成,即CPU(微处理器)、数据存储器(RAM)、片内为128个字节(52子系列的为256个字节)、程序存储器(ROM/EPROM)、4个并行8位I/O口(P1口、P2口、P3口、P0口)、串行口、定时器/计数器、中断系统、特殊功能寄存器(SFR)。1.1.212864液晶 12864液晶带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64,内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示8×4行16×16点阵的汉字.也可完成图形显示.低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。1.1.3nRF905无线收发模块 nRF905片内集成了电源管理、晶体振荡器、低噪声放大器、频率合成器功率放大器等模块,曼彻斯特编码/解码由片内硬件完成,无需用户对数据进行曼彻斯特编码,因此使用非常方便。1.1.4E18-D50NK光电开关 E18-D50NK光电开关这是一种集发射与接收于一体的光电传感器。检测距离可以根据要求进行调节1。该传感器具有探测距离远、受可见光干扰小、价格便宜、易于装配、使用方便等特点,可以广泛应用于机器人避障、流水线计件等众多场合。1.2引脚说明1.2.180C51单片机引脚介绍所用单片机如图1-1所示,引脚功能如下介绍。图1-1单片机图P0口:8为双向I/O口,占32~39脚。其第一功能为通用的输入/输出口线;第二功能是在系统扩展时,P0口可作为8位数据总线和低8位地址总线,通过分时操作达到复用的目的。CPU在外部扩展操作时,P0口先用作地址总线,在ALE信号的作用下将地址锁存,然后再将P0口转作数据总线使用。在做通用的输入/输出口使用时,P0口线的输出驱动电路是开漏的,所以,驱动集电极开路电路或漏极开路电路时需要外接上拉电阻。当作为地址/数据复用总线使用时,口线不是开漏的,无需外接上拉电阻。P0口线的每一位能驱动8个LSTTL负载。P1口:8位双向I/O口,占1~8脚。P1口一般做通用I/O口使用,用于完成8位数据的并行输入/输出。准双向口是指该口内设有上拉电阻,所以可以方便地由集电极开路电路或漏极开路所驱动,无需外接上拉电阻,其每一位口线能驱动4个LSTTL负载。P2口:8位双向I/O口,占21~28脚。其第一功能为基本的输入/输出口线;第二功能是在系统扩展时作高8位地址总线使用。同P1口,P2口的每一位口线能驱动4个LSTTL负载。P3口:8位双向I/O口,占10~17脚。P3口是一个双功能端口,即P3口除可作为通用I/O口使用外,其每一条口线都具有第二功能,同P1口,P3口每一位口线能驱动4个LSTTL负载。其中P3口具有第二功能:P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INT0(外部中断0)P3.3/INT1(外部中断1)P3.4T0(记时器0外部输入)P3.5T1(记时器1外部输入)P3.6/WR(外部数据存储器写选通)P3.7/RD(外部数据存储器读选通)PSEN:(29脚)外部程序存储器读选通信号,在单片机访问外部扩展程序存储器ROM时,PSEN作为外部扩展程序存储器读选通信号,定时输出脉冲。在单片机访问内部存储器时,PSEN无效。ALE/PROG(30脚):地址锁存准许/片内EPROM编程脉冲输入信号。在单片机访问外存储器时,该引脚是地址锁存信号,用于锁存低8位地址。在ALE为高电时,P0口上的信息为低8位地址,在ALE的下降沿时将P0口上的低8位地址送锁存器所存起来。在ALE为低电平期间,P0口上的信息为志林或数据信息,从而实现低位地址与数据的分离。在单片机不访问片内存储器时,ALE引脚能按主振频率的1/6固定的输出正脉冲,此脉冲可以用作外部的时钟或定时脉冲使用。而当对单片机内部的程序存储器编程时,此引脚为编程脉冲的输入端。RST/VPD:复位/备用电源,RST功能,复位信号输入端,VPD功能,在Vcc掉电情况下,接备用电源。ALE/PROG:地址锁存允许/片内EPROM编程脉冲;ALE功能,用来锁存P0口送出的低8位地址;PROG功能,片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲EA/Vpp:内外ROM选择/片内EPROM编程电源;EA功能,内外ROM选择端;Vpp功能,片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。VCC:芯片电源,接+5V,引入单片机工作电源。VSS:接地端;XTAL1、XTAL2:晶体振荡电路反相输入端和输出端。1.2.212864液晶VSS0V电源地VCC3.0+5V电源正V0对比度(亮度)调整RS(CS)H/LRS=“H”,表示DB7——DB0为显示数据RS=“L”,表示DB7——DB0为显示指令数据R/W(SID)H/LR/W=“H”,E=“H”,数据被读到DB7——DB0R/W=“L”,E=“H→L”,DB7——DB0的数据被写到IR或DRE(SCLK)H/L使能信号DB0-DB7H/L三态数据线PSBH/LH:8位或4位并口方式,L:串口方式(见注释1)NC空脚RESETH/L复位端,低电平有效(见注释2)VOUT-LCD驱动电压输出端BLA背光源正端(+5V)(见注释3)BLKVSS背光源负端(见注释3)1.2.3nRF905无线收发模块nRF905有14个管脚,管脚作用如下;vcc电源电源+3.3-3.6vDCTX_EN数字输入TX_EN=1TX模式;TX_EN=0RX模式;TRX_CE数字输入使能芯片发射或接收PWR_UP数字输入芯片上电uCLK时钟输出本模块该管脚不用CD数字输出载波检测AM数字输出地址匹配DR数字输出接受或发送数据完成MISOSPI接口SPI输出MOSISPI接口SPI输入SCKSPI时钟SPI时钟CSNSPI使能SPI使能GND接地GND接地1.2.4E18-D50NK光电开关vcc:电源输入out:检测信号输出端gnd:接地1.3相关参数1.3.112864液晶相关参数1、显示容量:128x64 2、芯片电压:3.3-5.5v 3、模块最佳工作状态:5.0v4、与MCU接口:8位或4位并行/3位串行 5、工作温度:-10~60度1.3.2nRF905无线收发模块相关参数1、工作电压范围:DC1.9V‐DC3.6V2、采用GFSK调制,433Mhz开放ISM频段免许可证使用3、170个频道,满足多点通讯和跳频通讯需求,实现组网通讯,TDMA‐CDMA‐FDMA4、内置硬件8/16位CRC校验,开发更简单,数据传输可靠稳定5、接收灵敏度达‐100dBm6、收发模式切换时间<650us7、最大发射功率10毫瓦,发射模式:最大电流<30mA;接收模式:电流12.2mA8、内置SPI接口,也可通过I/O口模拟SPI实现。最高SPI时钟可达10M9、发射速率50Kbps,外置433MHz天线,空旷通讯距离可达300米左右.11、低功耗,休眠电流2.5uA1.3.3E18-D50NK光电开关1、输出电流DC/SCR/继电器Controloutput:100mA/5V供电2、消耗电流DC<25mA3、响应时间<2ms4、指向角:≤15°,有效距离3-50CM可调5、检测物体:透明或不透明体6、工作环境温度:-25℃~+55℃7、标准检测物体:太阳光10000LX以下白炽灯3000LX以下第二章电路图设计2.1单片机2.1.18051单片机复位电路图2-1-1图2-1-1复位电路按键复位是通过RST经过电阻与电源相连接或利用RC微分电路产生的正脉冲来实现按键复位的。且这个电路具备自动复位的功能。2.1.28051单片机外部晶振电路图2-1-2时钟电路如图引脚XTAL1和XTAL2之间跨接晶体振荡器和微调电容,可以和芯片内部的振荡器构成一个稳定的自激振荡器,这就是单片机的时钟电路,这种方式称之为内部时钟源方式,电容器主要的作用是帮助振荡器起振,且电容器大小对振荡频率有微调作用,典型值C1=C2=30PF.2.2检测及发射电路图设计2.2.1电路图设计单片机E18-D50NKnRF905 单片机E18-D50NKnRF905图2-2-1检测机发射电路图 2.2.2电路图介绍如图P1口与P2口接有漫反射式光电开关,P0口接有nRF905无线收发模块,在使用P0口时一定要外接上拉电阻,当漫反射式光电开关检测到有物体靠近时漫反射式光电开关会把信号传给单片机,单片机接收到信号时进行处理,然后用nRF905无线模块将信号发送出去。2.3接收及显示电路图设计2.3.1电路图设计单片机nRF905 图2-3-1接受信息并显示电路图单片机nRF9052.3.2电路图介绍如图P1口接有nRF905无线收发模块,P0口接有12864液晶信号输入端,P2.0口-P2.3口接有12864液晶控制端,P2.4口接有蜂鸣器控制端。当接收到有信号传来时,nRF905无线收发模块将信号发送到单片机中,一旦有信号进入蜂鸣器就会报警,此时单片机也会对信号进行处理,判断报警地点,然后进行液晶显示。第三章程序设计3.1中断介绍3.1.1实现中断响应和中断返回当CPU收到中断请求后,能根据具体情况决定是否响应中断,如果CPU没有更急、更重要的工作,则在执行完当前指令后响应这一中断请求。CPU中断响应过程如下:首先,将断点处的PC值(即下一条应执行指令的地址)推入堆栈保留下来,这称为保护断点,由硬件自动执行。然后,将有关的寄存器内容和标志位状态推入堆栈保留下来,这称为保护现场,由用户自己编程完成。保护断点和现场后即可执行中断服务程序,执行完毕,CPU由中断服务程序返回主程序,中断返回过程如下:首先恢复原保留寄存器的内容和标志位的状态,这称为恢复现场,由用户编程完成。然后,再加返回指令RETI,RETI指令的功能是恢复PC值,使CPU返回断点,这称为恢复断点。恢复现场和断点后,CPU将继续执行原主程序,中断响应过程到此为止。3.1.2实现优先权排队通常,系统中有多个中断源,当有多个中断源同时发出中断请求时,要求计算机能确定哪个中断更紧迫,以便首先响应。为此,计算机给每个中断源规定了优先级别,称为优先权。这样,当多个中断源同时发出中断请求时,优先权高的中断能先被响应,只有优先权高的中断处理结束后才能响应优先权低的中断。计算机按中断源优先权高低逐次响应的过程称优先权排队,这个过程可通过硬件电路来实现,亦可通过软件查询来实现。定时器初值与中断周期时钟中断无需过于频繁,一般取20mS(50Hz)即可。如需要百分之一秒的时基信号,可取10mS(100Hz)。这里取20mS,用定时器T0工作于16位定时器方式(方式1)。T0的工作方式为:每过一个机器周期自动加1,当计满0FFFFh,要溢出时,便会产生中断,并由硬件设置相应的标志位供软件查询。即中断时比启动时经过了N+1个机器周期。所以,我们只要在T0中预先存入一个比满值0FFFFh小N的数,然后启动定时器,便会在N个机器周期后产生中断。这个值便是所谓的“初值”。下面计算我们需要的初值:时钟为6MHz,12个时钟周期为一个机器周期,20mS中有10000个机器周期。(10000)10=(2710)16,则0FFFFh-2710h+1=0D8F0h。由于响应中断、保护现场及重装初值还需要7~8个机器周期,把这个值再加上7,即T0应装入的初值是0D8F7h。每次中断进入后,先把A及W的值压入堆栈,然后即把0D8F7h装入T0。设置一个单元,每次中断加1我们可以取内部RAM中一个单元,取名为INCPI(IncreasePerInterrupt),在中断中,装完T0初值后,用INCINCPI指令将其加一。从这个单元中,无论中断程序还是主程序,都可以从中获得20mS的1~256之间任意整数倍的信号。例如:有一段向数码管送显的程序,需要每0.5秒执行一次以便刷新显示器,便可以设一单元(称为等待单元)W_DI,用/MOVA,INCPI/ADDA,#25/MOVW_DI,A/语句让其比当前的INCPI值大25,然后在每次中断中检查是否于INCPI值相等。若相等,说明已过了25个中断周期,便执行送显程序,并且让W_DI再加上25,等待下个0.5秒。我们可以设置多个等待单元,以便取出多个不同的时基信号。让中断程序在每次中断时依次查询各个等待单元是否与INCPI相等,若相等,则执行相应的处理,并重新设置该等待单元的值,否则跳过。例如:用0.5秒信号刷新或闪烁显示器,用1秒信号产生实时时钟,或输出一定频率的方波,以一定间隔查询输入设备等。3.1.3中断的使用1、开全局中断51是EA=12、对应中断使能比如定时器1ET1=1、定时器0ET0=13、定时器工作方式配置:有三种方式双8位定时16位定时还有捕捉方式定时器2有4种,具体不介绍了TMOD是定时器0和定时器1方式配置的寄存器TMOD=0x01,定时器0工作在方式1(16位计数)4、打开定时器TR0=1;定时器1打开是TR1=1;5、中断服务程序:就是定时时间到,你要处理的事务3.212864应用说明使用前的准备先给模块加上工作电压,再按照下图的连接方法调节LCD的对比度,使其显示出黑色的底影。此过程亦可以初步检测LCD有无缺段现象。字符显示带中文字库的128X64-0402B每屏可显示4行8列共32个16×16点阵的汉字,每个显示RAM可显示1个中文字符或2个16×8点阵全高ASCII码字符,即每屏最多可实现32个中文字符或64个ASCII码字符的显示。带中文字库的128X64-0402B内部提供128×2字节的字符显示RAM缓冲区(DDRAM)。字符显示是通过将字符显示编码写入该字符显示RAM实现的。根据写入内容的不同,可分别在液晶屏上显示CGROM(中文字库)、HCGROM(ASCII码字库)及CGRAM(自定义字形)的内容。三种不同字符/字型的选择编码范围为:0000~0006H(其代码分别是0000、0002、0004、0006共4个)显示自定义字型,02H~7FH显示半宽ASCII码字符,A1A0H~F7FFH显示8192种GB2312中文字库字形。字符显示RAM在液晶模块中的地址80H~9FH。字符显示的RAM的地址与32个字符显示区域有着一一对应的关系,其对应关系如下表所示。80H81H82H83H84H85H86H87H90H91H92H93H94H95H96H97H88H89H8AH8BH8CH8DH8EH8FH98H99H9AH9BH9CH9DH9EH9FH3、图形显示先设垂直地址再设水平地址(连续写入两个字节的资料来完成垂直与水平的坐标地址)垂直地址范围AC5...AC0水平地址范围AC3…AC0绘图RAM的地址计数器(AC)只会对水平地址(X轴)自动加一,当水平地址=0FH时会重新设为00H但并不会对垂直地址做进位自动加一,故当连续写入多笔资料时,程序需自行判断垂直地址是否需重新设定。GDRAM的坐标地址与资料排列顺序如下图:4、应用说明用带中文字库的128X64显示模块时应注意以下几点:①欲在某一个位置显示中文字符时,应先设定显示字符位置,即先设定显示地址,再写入中文字符编码。②显示ASCII字符过程与显示中文字符过程相同。不过在显示连续字符时,只须设定一次显示地址,由模块自动对地址加1指向下一个字符位置,否则,显示的字符中将会有一个空ASCII字符位置。③当字符编码为2字节时,应先写入高位字节,再写入低位字节。④模块在接收指令前,向处理器必须先确认模块内部处于非忙状态,即读取BF标志时BF需为“0”,方可接受新的指令。如果在送出一个指令前不检查BF标志,则在前一个指令和这个指令中间必须延迟一段较长的时间,即等待前一个指令确定执行完成。指令执行的时间请参考指令表中的指令执行时间说明。⑤“RE”为基本指令集与扩充指令集的选择控制位。当变更“RE”后,以后的指令集将维持在最后的状态,除非再次变更“RE”位,否则使用相同指令集时,无需每次均重设“RE”位.3.3nRF905时序说明3.3.1发送流程1.当微控制器有数据要发送时,通过SPI接口,按时序把接收机的地址和要发送的数据送传给nRF905,SPI接口的速率在通信协议和器件配置时确定;2.微控制器置高TRX_CE和TX_EN,激发nRF905的ShockBurstTM发送模式;3.nRF905的ShockBurstTM发送:l射频寄存器自动开启;l数据打包(加字头和CRC校验码);l发送数据包;l当数据发送完成,数据准备好引脚被置高;4.AUTO_RETRAN被置高,nRF905不断重发,直到TRX_CE被置低;5.当TRX_CE被置低,nRF905发送过程完成,自动进入空闲模式。ShockBurstTM工作模式保证,一旦发送数据的过程开始,无论TRX_EN和TX_EN引脚是高或低,发送过程都会被处理完。只有在前一个数据包被发送完毕,nRF905才能接受下一个发送数据包。3.3.2接收流程1.当TRX_CE为高、TX_EN为低时,nRF905进入ShockBurstTM接收模式;2.650us后,nRF905不断监测,等待接收数据;3.当nRF905检测到同一频段的载波时,载波检测引脚被置高;4.当接收到一个相匹配的地址,地址匹配引脚被置高;5.当一个正确的数据包接收完毕,nRF905自动移去字头、地址和CRC校验位,然后把数据准备好引脚置高6.微控制器把TRX_CE置低,nRF905进入空闲模式;7.微控制器通过SPI口,以一定的速率把数据移到微控制器内;8.当所有的数据接收完毕,nRF905把数据准备好引脚和地址匹配引脚置低;9.nRF905此时可以进入ShockBurstTM接收模式、ShockBurstTM发送模式或关机模式。当正在接收一个数据包时,TRX_CE或TX_EN引脚的状态发生改变,nRF905立即把其工作模式改变,数据包则丢失。当微处理器接到地址匹配引脚的信号之后,其就知道nRF905正在接收数据包,其可以决定是让nRF905继续接收该数据包还是进入另一个工作模式。3.3.3节能模式 nRF905的节能模式包括关机模式和节能模式。在关机模式,nRF905的工作电流最小,一般为2.5uA。进入关机模式后,nRF905保持配置字中的内容,但不会接收或发送任何数据。空闲模式有利于减小工作电流,其从空闲模式到发送模式或接收模式的启动时间也比较短。在空闲模式下,nRF905内部的部分晶体振荡器处于工作状态。nRF905在空闲模式下的工作电流跟外部晶体振荡器的频率有关。3.3.4器件配置所有配置字都是通过SPI接口送给nRF905。SIP接口的工作方式可通过SPI指令进行设置。当nRF905处于空闲模式或关机模式时,SPI接口可以保持在工作状态。3.3.5SPI接口配置SPI接口由状态寄存器、射频配置寄存器、发送地址寄存器、发送数据寄存器和接收数据寄存器5个寄存器组成。状态寄存器包含数据准备好引脚状态信息和地址匹配引脚状态信息;射频配置寄存器包含收发器配置信息,如频率和输出功能等;发送地址寄存器包含接收机的地址和数据的字节数;发送数据寄存器包含待发送的数据包的信息,如字节数等;接收数据寄存器包含要接收的数据的字节数等信息。3.4检测及发送信号程序#include<reg51.h>#defineucharunsignedchar#defineuintunsignedint#defineWC0x00 //写配置寄存器命令#defineWTP0x20 //写发送数据命令#defineWTA0x22 //写发送地址命令sbitTX_EN=P0^6;//选择模式sbitTRX_CE=P0^5;//使能芯片发送或接收sbitPWR_UP=P0^4;//芯片上电sbitMOSI=P0^2;//SPI输入sbitMISO=P0^3;//SPI输出sbitCSN=P0^0;//SPI使能sbitSCK=P0^1;//SPI时钟sbitCD=P0^7;//载波检测sbitAM=P3^0;//地址匹配sbitDR=P3^1;//接受或发送数据完成ucharshu[16];//检测到的数据暂时放在此数组内ucharcodecanshu[]={//nRF905参数设置0x01,0x0c,0x44,0x20,0x20,0xe7,0xe7,0xe7,0xe7,0x58};voidmiao(uintx)//延时{ uinti,j; for(i=x;i>0;i--) for(j=110;j>0;j--);}voidinit()//nRF905初始化{ CSN=1;//SPI使能禁用 SCK=0;//在输入数据或命令时要将时钟拉低 DR=1;//接受或发送数据完成 AM=1;//地址匹配 PWR_UP=1;//芯片上电 TRX_CE=0;//使能芯片接收 TX_EN=1;//选择模式}voidpeizhi()//寄存器设置{ uchari; CSN=0;//往nRF905输入数据或指令时,要将使能端用低电平 write(WC);//写配置寄存器命令 for(i=0;i<10;i++) { write(canshu[i]); } CSN=1;//SPI使能禁用}voidwrite(uchara)//往nRF905中写数据或指令{ uchari,j; j=a; for(i=0;i<8;i++) { miao(1); SCK=0; MOSI=(j&0x80);//将要输入的数据或 j=j<<1; //命令从高之低依次输入nRF905 miao(1); SCK=1; miao(1); SCK=0; }}voidfasong()//发送数据{ uchari; CSN=0; write(WTP); //写发送数据命令 for(i=0;i<16;i++) { write(shu[i]);//将数组发送出去 } CSN=1; miao(1); CSN=0; write(WTA);//写发送地址命令 for(i=0;i<4;i++) { write(canshu[i+5]); } //将地址输入 CSN=1; TRX_CE=1;//发送数据 miao(1); TRX_CE=0;//停止发送 TR0=0;}voidjiance()//光电传感器检测{ uchari,a,temp; P1=0x00; temp=P1; if(temp!=0x00) { for(i=0;i<8;i++) { a=temp&0x80;//判断检测数据是否大于0 if(a>0) { shu[i]=1; } else { shu[i]=0; } temp=temp<<1; } //数据输完后向左移一位 } P2=0x00; temp=P2; if(temp!=0x00) { for(i=8;i<16;i++) { a=temp&0x80; if(a>0)//判断检测数据是否大于0 { shu[i]=1; } else { shu[i]=0; } temp=temp<<1; }//数据输完后向左移一位 }}voidmain(){ TMOD=0x01;//检测时需要用到中断 TH0=0x00;//给初值 TL0=0x01; EA=1;//全局中断打开 ET0=1;//定时器计数器0 init();//nRF905初始化 peizhi();//nRF905寄存器配置 while(1)//进入大循环,直至中断开始 { uchara,b; P1=0x00; P2=0x00; a=P1; b=P2; if(a!=0x00||b!=0x00) TR0=1; }}voidtime()interrupt1{ TH0=0x00; TL0=0x01; jiance();//报警检测 fasong();//发送数据 miao(1);}3.5接收及显示信号程序#include<reg51.h>#defineucharunsignedchar#defineuintunsignedint#defineRC0x10 //读配置寄存器命令#defineRTP0x21//读发送数据命令#defineRTA0x23//读发送地址命令#defineRRP0x24//读接收数据命令sbitCSN=P1^0;//SPI使能sbitMOSI=P1^1;//SPI输入sbitMISO=P1^2;//SPI输出sbitPWR_UP=P1^3;//芯片上电sbitTRX_CE=P1^4;//使能芯片发送或接收sbitTX_EN=P1^5;//选择模式sbitCD=P1^6;//载波检测sbitAM=P1^7;//地址匹配sbitSCK=P3^0;//SPI时钟sbitDR=P3^1;//接受或发送数据完成sbitPSB=P2^0;//选择串并口输入方式sbitRS=P2^1;//数据与命令选择端sbitRW=P2^2;//读写端口sbitEN=P2^3;//LCD是能sbitxiang=P2^4;//蜂鸣器ucharshu[16];//将接收到的数据放在此数组中ucharcodedisplay1[]={"无线多点报警系统"};//LCD第一行显示ucharcodedisplay2[]={"报警地点:"};//LCD第二行显示uchardisplay3[]={"A区报警"};//LCD第三行显示uchardisplay4[]={"B区报警"};//LCD第四行显示ucharcodecanshu[]={0x01,0x0c,0x44,0x20,0x20,0xe7,0xe7,0xe7,0xe7,0x58};//nRF905设置参数voidmiao(uintx)//延时{ uinti,j; for(i=x;i>0;i--) for(j=110;j>0;j--);}voidinit()//nRF905初始化设置{ CSN=1;//SPI使能禁用 SCK=0;//在输入数据或命令时要将时钟拉低 DR=1;//接受或发送数据完成 AM=1;//地址匹配 PWR_UP=1;//芯片上电 TRX_CE=0;//使能芯片接收 TX_EN=0;//选择模式}voidpeizhi()//配置寄存器{ uchari; CSN=0;//往nRF905输入数据或指令时,要将使能端用低电平 write(RC);//输入读配置寄存器指令 for(i=0;i<10;i++)//将数据输入nRF905 { write(peizhi[i]); } CSN=1;//SPI使能禁用}voidwrite(uchara)//往nRF905中写数据或指令{ uchari,j; j=a; for(i=0;i<8;i++) { miao(1); SCK=0; MOSI=(j&0x80);//将要输入的数据或 j<<=1; //命令从高之低依次输入nRF905 miao(1); SCK=1 miao(1); SCK=0; }}voidread()//将接收到的数据放入数组中{ uchari; for(i=15;i>=0;i--) { SCK=1; if(MISO)//判断输入数据是0是1 { shu[i]=1; } else { shu[i]=0; } }}voidjieshou()//接收数据{ uchari,x; TRX_CE=0; CSN=0; write(RRP);//读写入接收数据命令 read(); CSN=1; while(DR||AM);//如果DR与AM有一个为1 TRX_CE=1; //则进入接收模式}voidzhiling(uchars)//往LCD内写指令{ RS=0;//RS为0时为指令 RW=0;//RW为0时为写 EN=0;//LCD使能关闭 P0=s;miao(5);//将指令给P0口 EN=1;miao(5);//使能打开,输入指令 EN=0;}voidxianshi(ucharr)//LCD显示{ RS=1;//RS为1时为数据 RW=0;//写数据 EN=0; P0=r;miao(5);//将要写数据给P0口 EN=1;miao(5);//使能打开,写数据 EN=0; }voidlcd_init()//LCD初始化设置{ PSB=1;//设置并口输入 zhiling(0x30);miao(5);//基本指令操作 zhiling(0x0c);miao(5);//开显示,关光标 zhiling(0x01);miao(5);//显示清零}voidlcd1()//LCD前两行显示{ uchari; zhiling(0x80);//在LCD第一行左边第一格显示 i=0; while(display1[i]!='\0')//进入循环,从左到右直至“\0”结束 { xianshi(display1[i]); i++; } zhiling(0x90);//在LCD第二行左边第一格显示 i=0; while(display2[i]!='\0')//进入循环,从左到右直至“\0”结束 { xianshi(display2[i]); i++; }}voidlcd2()//LCD后两行显示{ uchari; if(shu[0]==1||shu[1]==1||shu[2]==1||shu[3]==1|| shu[4]==1||shu[5]==1||shu[6]==1||shu[7]==1) {//判断是高8位还是低8位报警 zhiling(0x88);//在LCD第三行左边第一格显示 i=0; while(display3[i]!='\0')//进入循环,从左到右直至“\0”结束 { xianshi(display3[i]); i++; } } else { zhiling(0x98);//在LCD第四行左边第一格显示 i=0; while(display4[i]!='\0')//进入循环,从左到右直至“\0”结束 { xianshi(display4[i]); i++; } } TR0=0;//中断停止 xiang=1;//蜂鸣器停止}voidmain(){ TMOD=0x01;//当有数据接收到时要用到中断 TH0=0x00;//給初值 TL0=0x01; EA=1;//全局中断中断打开 ET0=1;//定时器计数器0 init();//nRF905初始化 peizhi();//nRF905配置寄存器 lcd_init();//LCD初始化 lcd1(); //LCD显示前两行 while(1)//进入循环直至中断打开 { if(MISO) {TR0=1;//中断打开 xiang=0;}//蜂鸣器响 }}voidtime()interrupt1//进入中断{ TH0=0x00; TL0=0x01; jieshou();//接收数据 lcd2();//显示LCD后两行}
第四章总结通过此次毕业设计让我学到了很多,我趁着做毕业设计的同时也对课本知识有了巩固和加强,由于课本上的知识太多,平时课间的学习并不能很好的理解和运用各个元件的功能,而且设计内容有限,所以在这次毕业设计过程中,我了解了很多元件的功能,并且对于其在电路中的使用有了更多的认识。通过这次毕业设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,以后会更加的努力。经过五个星期的设计里,过程曲折可谓一语难尽。在此期间我们也失落过,也曾一度热情高涨。从开始时的满富激情到后来汗水背后的复杂心情,点点滴滴无不令我回味无长。
第五章致谢本设计是在韩全立教授的悉心指导下完成的,导师渊博的知识,严谨的治学态度,一丝不苟的工作作风,平易近人的性格都是我学习的楷模。在论文的研究及整理期间,又有高功臣老师的指导,并且对我的设计提出宝贵的建议,才使得论文得以顺利的完成,在此谨向韩教授、高老师表示忠心的感谢和崇高的敬意。
参考文献【1】新概念51单片机C语言教程 电子工业出版社 郭天祥【2】微机控制技术及应用 机械工业出版社 韩全立赵德申【3】51单片机典型模块开发查询手册 电子工业出版社 程国钢陈跃琴催荔蒙【4】C语言程序设计清华大学出版社 谭浩强【5】从零开始学单片机C语言国防工业出版社 刘建清基于C8051F单片机直流电动机反馈控制系统的设计与研究基于单片机的嵌入式Web服务器的研究MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究基于模糊控制的电阻钎焊单片机温度控制系统的研制基于MCS-51系列单片机的通用控制模块的研究基于单片机实现的供暖系统最佳启停自校正(STR)调节器单片机控制的二级倒立摆系统的研究基于增强型51系列单片机的TCP/IP协议栈的实现基于单片机的蓄电池自动监测系统基于32位嵌入式单片机系统的图像采集与处理技术的研究基于单片机的作物营养诊断专家系统的研究基于单片机的交流伺服电机运动控制系统研究与开发基于单片机的泵管内壁硬度测试仪的研制基于单片机的自动找平控制系统研究基于C8051F040单片机的嵌入式系统开发基于单片机的液压动力系统状态监测仪开发模糊Smith智能控制方法的研究及其单片机实现一种基于单片机的轴快流CO〈,2〉激光器的手持控制面板的研制基于双单片机冲床数控系统的研究基于CYGNAL单片机的在线间歇式浊度仪的研制基于单片机的喷油泵试验台控制器的研制基于单片机的软起动器的研究和设计基于单片机控制的高速快走丝电火花线切割机床短循环走丝方式研究基于单片机的机电产品控制系统开发基于PIC单片机的智能手机充电器基于单片机的实时内核设计及其应用研究基于单片机的远程抄表系统的设计与研究基于单片机的烟气二氧化硫浓度检测仪的研制基于微型光谱仪的单片机系统单片机系统软件构件开发的技术研究基于单片机的液体点滴速度自动检测仪的研制基于单片机系统的多功能温度测量仪的研制基于PIC单片机的电能采集终端的设计和应用基于单片机的光纤光栅解调仪的研制气压式线性摩擦焊机单片机控制系统的研制基于单片机的数字磁通门传感器基于单片机的旋转变压器-数字转换器的研究基于单片机的光纤Bragg光栅解调系统的研究单片机控制的便携式多功能乳腺治疗仪的研制基于C8051F020单片机的多生理信号检测仪基于单片机的电机运动控制系统设计Pico专用单片机核的可测性设计研究基于MCS-51单片机的热量计基于双单片机的智能遥测微型气象站MCS-51单片机构建机器人的实践研究基于单片机的轮轨力检测基于单片机的GPS定位仪的研究与实现基于单片机的电液伺服控制系统用于单片机系统的MMC卡文件系统研制基于单片机的时控和计数系统性能优化的研究基于单片机和CPLD的粗光栅位移测量系统研究单片机控制的后备式方波UPS提升高职学生单片机应用能力的探究基于单片机控制的自动低频减载装置研究基于单片机控制的水下焊接电源的研究基于单片机的多通道数据采集系统基于uPSD3234单片机的氚表面污染测量仪的研制基于单片机的红外测油仪的研究96系列单片机仿真器研究与设计基于单片机的单晶金刚石刀具刃磨设备的数控改造基于单片机的温度智能控制系统的设计与实现基于MSP430单片机的电梯门机控制器的研制基于单片机的气体测漏仪的研究基于三菱M16C/6N系列单片机的CAN/USB协议转换器基于单片机和DSP的变压器油色谱在线监测技术研究基于单片机的膛壁温度报警系统设计基于AVR单片机的低压无功补偿控制器的设计基于单片机船舶电力推进电机监测系统基于单片机网络的振动信号的采集系统基于单片机的大容量数据存储技术的应用研究基于单片机的叠图机研究与教学方法实践基于单片机嵌入式Web服务器技术的研究及实现基于AT89S52单片机的通用数据采集系统基于单片机的多道脉冲幅度分析仪研究机器人旋转电弧传感角焊缝跟踪单片机控制系统基于单片机的控制系统在PLC虚拟教学实验中的应用研究基于单片机系统的网络通信研究与应用基于PIC16F877单片机的莫尔斯码自动译码系统设计与研究基于单片机的模糊控制器在工业电阻炉上的应用研究基于双单片机冲床数控系统的研究与开发基于Cygnal单片机的μC/OS-Ⅱ的研究基于单片机的一体化智能差示扫描量热仪系统研究基于TCP/IP协议的单片机与Internet互联的研究与实现变频调速液压电梯单片机控制器的研究
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五版生物质发电监理服务合同三方协议3篇
- 二零二五版企业安全风险评估与安保服务合同3篇
- 二零二五年度高品质钢结构装配式建筑安装服务合同3篇
- 二零二五版电影投资融资代理合同样本3篇
- 二零二五版初级农产品电商平台入驻合同2篇
- 二零二五年度电商平台安全实验报告安全防护方案合同3篇
- 二零二五年度白酒销售区域保护与竞业禁止合同3篇
- 二零二五版建筑工程专用防水材料招投标合同范本3篇
- 二零二五年研发合作与成果共享合同2篇
- 二零二五版钢结构工程节能合同范本下载3篇
- 2024年四川省德阳市中考道德与法治试卷(含答案逐题解析)
- 施工现场水电费协议
- SH/T 3046-2024 石油化工立式圆筒形钢制焊接储罐设计规范(正式版)
- 六年级数学质量分析及改进措施
- 一年级下册数学口算题卡打印
- 真人cs基于信号发射的激光武器设计
- 【阅读提升】部编版语文五年级下册第三单元阅读要素解析 类文阅读课外阅读过关(含答案)
- 四年级上册递等式计算练习200题及答案
- 法院后勤部门述职报告
- 2024年国信证券招聘笔试参考题库附带答案详解
- 道医馆可行性报告
评论
0/150
提交评论