




文档简介
西安工程大学本科毕业设计(论文)I摘要人类社会的发展与能源的开发和利用水平紧密相关,每一次新能源的开发都能使人类的经济发展产生一次飞跃。在自然界中,风能是分布广泛、用之不竭且无污染的巨大能源。在全球能源危机和环境危机日益严重的背景下,风能资源开始受到普遍关注,每个国家都加紧对风力的开发和利用,减少化石能源的利用,从而减少温室气体的排放,保护环境。本文介绍了用STC89C52系列单片机设计检测风向风力的数据采集处理系统以及显示模块。对于风力该系统采用单片机技术。光电传感器采集的数据交给单片机处理,再由LCD显示屏显示测量的风力值。对于风向该系统利用3轴数字罗盘HMC5883L,仅用地磁场在X方向和Y方向的两个分矢量值便可确定方位值,再由LCD显示屏显示测量的风向值。软件设计采用模块编程,方便今后的维护和改进。关键词风向,风力,单片机,HMC5883L西安工程大学本科毕业设计(论文)IIABSTRACTTHEDEVELOPMENTOFHUMANSOCIETYISCLOSELYRELATEDTOTHEDEVELOPMENTANDUTILIZATIONOFENERGYEVERYNEWENERGYDEVELOPMENTCANMAKETHEECONOMICDEVELOPMENTOFHUMANBEINGSALEAPINNATURE,WINDENERGYISHUGEANDWIDELYDISTRIBUTEDINEXHAUSTIBLEANDPOLLUTIONFREEUNDERTHEBACKGROUNDOFTHEINCREASINGLYSERIOUSGLOBALENERGYCRISISANDENVIRONMENTALCRISIS,WINDENERGYRESOURCESBEGANTOSUFFERTHEWIDESPREADCONCERN,EACHCOUNTRIESARESTEPPINGUPTHEWINDENERGYDEVELOPMENTANDUTILIZATION,REDUCETHEUSEOFFOSSILENERGY,THEREBYREDUCINGGREENHOUSEGASEMISSIONSANDPROTECTTHEENVIRONMENTTHISPAPERINTRODUCESTHEDESIGNOFDATAACQUISITIONANDPROCESSINGSYSTEMANDDISPLAYMODULEOFWINDDIRECTIONANDWINDWITHSTC89C52SERIESMCUFORWINDPOWER,THESYSTEMADOPTSSINGLECHIPMICROCOMPUTERTECHNOLOGYTHEDATACOLLECTEDBYTHEPHOTOELECTRICSENSORISHANDEDOVERTOTHESINGLECHIPMICROCOMPUTER,ANDTHENTHEMEASUREDVALUEOFWINDPOWERISDISPLAYEDBYTHELCDDISPLAYSCREENFORWINDDIRECTIONOFTHESYSTEMUSING3AXISDIGITALCOMPASSHMC5883L,ONLYTHEGEOMAGNETICFIELDINTHEXDIRECTIONANDYDIRECTIONOFTHETWOSUBVECTORVALUESCANDETERMINETHEAZIMUTHVALUE,ANDTHENBYTHELCDDISPLAYTODISPLAYTHEMEASUREDWINDDIRECTIONTHESOFTWAREDESIGNADOPTSMODULEPROGRAMMING,WHICHISCONVENIENTFORFUTUREMAINTENANCEANDIMPROVEMENTKEYWORDSWINDDIRECTION,WINDSPEED,SINGLECHIPMICROCOMPUTER,HMC5883L西安工程大学本科毕业设计(论文)III目录第1章绪论111问题的提出112研究的内容113风向风力自动测量仪的选用与发展2第2章系统组成方案与硬件电路321系统总体方案322风向测量原理523风力测量原理5第3章系统软件设计731主程序设计732风向子程序设计833风速子程序设计1134键盘子程序设计1235报警输出子程序设计1436时钟子程序设计1437显示子程序设计1738信号输出子程序设计21第4章软件仿真与调试2341软件环境的介绍23411KEILUVISION423412STC_ISP_V4802742KEIL软件及其调试功能简介30第5章总结与讨论33参考文献35附录36致谢47诚信声明西安工程大学本科毕业设计(论文)IV西安工程大学本科毕业设计(论文)1第1章绪论11问题的提出人类可利用的自然界风能为风能资源。风作为一种天然征象,本身又蕴藏着巨大的能量,并对人们的生产劳动有巨大的影响力。现在,每个国家都特别珍视风向风力的检测与研究。我国风力资源极为丰富离地10米高的风能资源总储量约3226亿千瓦,其中可开发和利用的陆地上风能储量有253亿KW,50米高度的风能资源比10米高度多1倍,约为5亿多KW。近海可开发和利用的风能储量有75亿KW。风力发电是很有出息的,尤其是现在能源紧缺,风力发电成为新潮发电要领的环境下,对风力风向的测量和控制尤为紧张。所以研究风向风力变化的意义巨大。风向风力自动测量仪可以广泛地应用于气象(为台风数据提供准确的数据)、新能源(为发电前期提供参数数据)、民航(为飞机起飞、降落供给准确的参数数据)、公路、桥梁(为建造公路、桥梁供给参数依据)等行业,具有广阔的前景。12研究的内容风力风向是经常需要采集的一个参数,由于机械式的风力传感器响应时间比较长,体积大,而且价格比较贵,要实现在一个不是很广阔的地方测量风力就会比较难,所以本课题研究的是设计一个小型的测量系统,这种测量风参数的系统要求电路简单,精度高,体积小,成本低,易实现。风力风向系统的主要功能是对当前的风力风向进行测量,并在显示器件上显示,而且测量系统要求具有一定的精度,在断电及其他不良情况下仍然准确的工作。本课题研究的是设计一个小型的测量系统,此自动测量系统电路简单,体积较小,精度较高,成本低,容易实现。在单片机的控制下,采用合适的测量方法对脉冲的变化进行测量,同时要求风力的测量达到一定的精度,误差不超过5并且对风力进行显示。对于风向在0360范围内进行测量,单片机处理测量风向能够显示并且达到一定的精度。西安工程大学本科毕业设计(论文)213风向风力自动测量仪的选用与发展目前的风向、风力测量方法无法满足所有理想测量的要求,它们有各自的特点和适用范围。要想选择一种合适的仪表,并非易事。选择测风力装置需要考虑测量装置的性能(包括可靠性、测量范围及精度的测量等)、现场安装以及日后的维护、使用寿命和费用等因素。使用者必须掌握测量仪的使用方法,并综合考虑相关影响因素,在工程测量的各个阶段选择最合适的测量手段。随着风向风力测量技术的趋于完美,其发展趋势可归纳为功能从简单到复杂;精确度由低到高,量程由小到大,装置由接触式测量到非接触式测量,安装由繁到简,可靠性由低到高,测量仪向智能化、人性化方向发展。西安工程大学本科毕业设计(论文)3第2章系统组成方案与硬件电路21系统总体方案本系统共有两部分组成硬件部分和软件部分。其中硬件部分是以STC89C52单片机为核心控制器,由LCD1602液晶显示模块、时钟模块、报警模块、键盘模块、光电传感器模块和指南针模块组成,通过光电传感器模块和指南针模块测得风向和风力的数据。显示模块用来显示时间、风向和风力信息。报警模块是在风力过大的情况下,进行报警提醒。键盘模块进行人机互动,通过按键来控制单片机的工作模式。软件部分对应的由主程序、初始化程序、LCD1602显示程序、脉冲(光电传感器输出脉冲)检测程序、风向检测程序、时间设置程序等组成。其总体框架如图21所示。系统硬件电路如图22所示。图21系统总体框图本系统总体思路如下风向标在风的作用下转动并停止,得到了当前风向。通过指南针模块测得风叶朝向就得到了当前的风向数据。光电传感器的测量原理为,在一定的测量时间内,读取光电传感器发生的脉冲个数(即频率),从而算出实际转速。设测量时间T(MIN),计数器计取的脉冲个数M,假定脉冲发生器每转一圈输出P个脉冲,对应被测转速为N(R/MIN),风叶半径为R(M),就可算出实际转速值N60M/PT,实际风速VNR。主控芯片显示模块指南针模块报警模块光电传感器模块时钟模块键盘模块西安工程大学本科毕业设计(论文)4图22系统硬件电路图西安工程大学本科毕业设计(论文)522风向测量原理风向测量是采用风带动风向标旋转进而带动主轴的,而风向测量的一般方法则是采用角度来确定风向,我选用指南针模块测量风向变化角度。三维电子罗盘由三维磁阻传感器、双轴倾角传感器和MCU构成。三维磁阻传感器用来测量地球磁场。该磁力仪是采用三个互相垂直的磁阻传感器,每个轴向上的传感器检测在该方向上的地磁场强度。向前的方向称为X方向的传感器检测地磁场在X方向的矢量值;向左或Y方向的传感器检测地磁场在Y方向的矢量值;向下或Z方向的传感器检测地磁场在Z方向的矢量值。仅用地磁场在X和Y的两个分矢量值便可确定方位值ARCTANXYA21该关系式是在测量仪与地面平行时才成立。当测量仪发生倾斜时,方位值的准确性就受到很大的影响,测量仪所处的位置和倾斜角的大小决定了误差的大小。23风力测量原理风力测量要将风力转换为脉冲信号从而确定其大小,我选择用光电传感器的方式获得脉冲信号。光电传感器是应用非常广泛的一种器件,其基本的原理就是当发射管光照射到接收管时,接收管导通,当发射管照射不到接收管时接收管关断。下满主要介绍我所使用的透射式光电传感器,如图23所示,当有物体挡在发射与接收管之间的间隙时,接收图23光电传感器的原理图管关断,如若发射与接收管的间隙之间没有遮挡物时开关管打开。根据此原理,制作一个遮光叶片如图24所示,将其安装在转轴上,当扇叶经过时,产生脉冲信号。当叶片数较多时,旋转一周可以获得多个脉冲信号。这里我们采用有20西安工程大学本科毕业设计(论文)6个孔的遮光片来获得脉冲信号。风叶的半径为002M,假如在一分钟的时间内,产生了2000脉冲,则风叶的转速就为100R/MIN即1002RAD/MIN,风速即为4M/MIN。本次毕设我选的是光电传感器,采用穿透法测量电机转速。光电传感器的原理上面有详细的介绍。图24遮光叶片西安工程大学本科毕业设计(论文)7第3章系统软件设计软件设计是基于硬件基础上的,首先必须对系统有充分的了解,熟悉各种所用的芯片的时序以及各管脚的具体功能,还有硬件要实现的具体功能。合理的分配单片机的硬件资源。然后给出程序的流程图,并通过他进行软件的设计和调试。为了充分发挥单片机的智能化作用及降低成本,对于那些可用软件完成又可用硬件完成的功能,尽量用软件来完成。同时软件设计要尽可能实现功能模块化,这样既方便于调试、链接,又便于移植和修改。本文设计的系统的初始化,数据的采集数据的处理都是靠软件来运行的,考虑到系统要对采集的数据进行处理时所用的方法,这里我们采用C语言编写软件。软件的开发工具我们用KEILC。KEILC软件是众多单片机应用开发的优秀软件之一,它支持汇编语言,C语言等,它集合了编辑,编译,仿真于一体。再利用KEILC进行编程时,先建立一个工程项目,然后在项目中新建空白文档,在空白文档处输入程序并保存,保存时后缀名为C。然后编译并生成HEX文件。将HEX文件导入到单片机里,用PROTEUS与KEILC联调,就完成了。31主程序设计本次软件设计实现功能模块化,主要用到的功能模块有风向子程序、风速子程序、键盘子程序、报警输出子程序、时钟子程序、显示子程序、信号输出子程序等。主程序流程图如图31所示。当系统上电后,风向子程序检测当前的风向数据,风速子程序检测当前的风力数据,信号输出子程序通过串口实时的将测得的风向风力数据传输给其它设备,当检测到的风力数据高于预先设定的风力值时,就会执行报警输出子程序,通过调用键盘子程序来检测当前的按键值,使系统回复相应的操作,时钟子程序主要是记录当前系统工作的时间,显示子程序就是将测得的风向风力数据和当前时间显示出来。为了能测得多个风向风力数据,整个系统处于一直循环检测数据的状态。西安工程大学本科毕业设计(论文)8图31主程序流程图32风向子程序设计本设计采用磁阻传感器HMC5883L芯片对风向进行检测,指南针模块通过端口P23和P24将地磁场在X和Y的两个分矢量值传给单片机,并通过公式AARCTANY/X计算出当前的角度。HMC5883L引脚位值如图32所示,HMC5883L管脚描述如表31所示。图32HMC5883L引脚位置西安工程大学本科毕业设计(论文)9表31HMC5883L管脚描述管脚号管脚名称功能1SCL串行时钟IIC主从时钟2VDD供电端216V36V3NC空引脚4S1与电源供电引脚相连5NC空引脚6NC空引脚7NC空引脚8SETP与S/R电容器C2相连,连驱动端9GND接地10C1与储能电容器C1相连11GND接地12SETC与S/R电容器C2相连驱动端13VDDIDI/O口供电14NC空引脚15DRDY数据准备中断引脚。内部拉高。可选的连接。保持250秒时,数据被放置在数据输出寄存器。16SDA串行数据IIC主从数据当主程序运行至此模块时,首先对风向子程序的各个变量进行初始化,然后给复位端一个高电平,使HMC5883L具有写入功能。然后向HMC5883L写入需要读取的数据的地址,延时一段时间后读取改地址的数据,地址增加并判断数据是否已经读取完成,对数据进行处理后,将角度信息返回给主函数。在程序中通过XBUF08|BUF1和YBUF48|BUF5语句,将HMC5883L测量得到的X和Y方向上力的分量传给X,Y寄存器,再通过ANGLEATAN2DOUBLEY,DOUBLEX180/314159265180(31)计算出角度,就得到了当前系统的风向数据。风向子程序流程图如图33。西安工程大学本科毕业设计(论文)10风向子程序入口变量初始化复位端产生一个高电平写HMC5883L地址读取该地址数据地址增加数据是否读完延时数据处理Y返回主程序N图33风向子程序流程图西安工程大学本科毕业设计(论文)1133风速子程序设计本设计采用光电传感器通过测速码盘就能得到一系列的脉冲信号,并从引脚P32中断INT0端输入,每20次中断代表车轮转动一圈,中断数N/20就得到风叶转动的圈数,风叶的角度/定时器时长就是风叶转动的速度,风叶角速度X风叶半径就得到风速。风叶的半径为002M,假如在一分钟的时间内,产生了2000脉冲,则风叶的转速就为100R/MIN即1002RAD/MIN,风速即为4M/MIN。风速子程序流程图如图34所示。图34风速子程序流程图西安工程大学本科毕业设计(论文)1234键盘子程序设计键盘子程序的运行结果将决定程序运行的下一个方向,决定程序的不同操作,所以此程序段在整个程序中显得尤为重要。由于键盘通常进行排列成矩阵格式,因此可以用硬件或软件方法对行列分别进行扫描查找按动的键。我选择线反转法进行按键检测。线反转法很简练,无论被按键处于第一列或是最后一列,均只需两步便能获得按键的行列值。第一步将行线编程为输入线,列线编程为输出线,并使输出线输出为全零电平,则行线中电平由高到低所在行为按键所在行。第二步与第一步相反,将行线编程为输出线,列线编程为输入线,并使输出线输出为全零电平,则列线中电平由高到低所在行为按键所在列。综合一、二两步的结果,可确定按键所0在行和列,从而识别所按的键。该方法的优点是非常简单适用。综上两种方法的介绍,选择线反转法。键盘子程序流程图如图35所示。键盘是使用排成3行2列的6点阵;把这两组3位和2位的行列线分别连到主机单片机的控制引脚上(其中行线接在P11P13上,列线接在P14P15上)。点阵上的键一旦被按动,该点行列的信号就可以被接通。首先向行送全1,再对列送全0。如果行线上有键按下的位置,原来的1被列送来的0所代替,记表32按键功能表按键功能描述KEY1设置时间按键。按一下设置年,按两下设置月,按三下设置日,按四下设置时,按五下设置分KEY2记录调取按键KEY3功能加按键KEY4功能减按键KEY5确认按键KEY6取消按键西安工程大学本科毕业设计(论文)13录下相对应信息的到行寄存器。反过来,把列送全1,再对行送全0,于是对应列上有键按下的线便变为0,再把列上的信息送到列寄存器并记录下来。此时我们就能得到具体是哪个按键按下,然后执行相应的功能。按键功能如表32。图35键盘子程序流程图西安工程大学本科毕业设计(论文)1435报警输出子程序设计本设计的主要功能是监控风速大小是否超过预定值,主控机P17端口外接蜂鸣器,P16端口外接LED灯,当风速过高时,蜂鸣器响起的同时LED灯也会发光,以提醒操作人员风速过高。报警输出子程序流程图如图36所示。图36报警输出子程序流程图36时钟子程序设计时钟子程序的记录了系统当前运行的时间,系统时钟的核心部分就是定时,通过DS1302完成定时。本方案采用DALLAS公司的专用时钟芯片DS1302。该芯片是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为25V55V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。该芯片内部有一个318的用于临时性存放数据的RAM寄存器。该芯片内部采用石英晶体振荡器,其芯片是一款高精度实时时钟芯片,24小时误差不超过2妙。D1302是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为25V55V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM寄存器,因此,可直接对其以用于显示或设置,使得软件编程相对简单。为保证时钟在电网电压不足或突然掉电等突发情况下,备用电源也能保持时钟的连续运行。西安工程大学本科毕业设计(论文)15当电网电压不足或突然掉电时,系统自动转换到备用电源供电系统。而且即使系统不上电,程序不执行时,备用电源也能保证芯片的正常运行,以备随时提供正确的时间。DS1302管脚描述如表33所示。时钟子程序流程图如图37所示。表33DS1302管脚描述管脚号管脚名称功能1VCC2双供电配置中的主电源供应管脚,VCC1连接到备用电源,在主电源失效时保持时间和日期数据。DS1302工作于VCC1和VCC2中较大者。当VCC2比VCC1高02V时,VCC2给DS1302供电。当VCC1比VCC2高时,VCC1给DS1302供电。2X1与标准的32768KHZ石英晶体相连。内部振荡器被设计与指定的6PF装载电容的晶体一起工作。3X24GND电源地5CE输入CE信号在读写时必须保持高电平。此管脚内部有一个40K(典型值)的下拉电阻连接到地。6I/O输入/推挽输出。I/O管脚是三线接口的双向数据管脚。此管脚内部有一个40K(典型值)的下拉电阻连接到地。7SCLK输入SCLK用来同步串行接口上的数据动作。此管脚内部有一个40K(典型值)的下拉电阻连接到地。8VCC1低功率工作在单电源和电池工作系统和低功率备用电池。在使用涓流充电的系统中,这个管脚连接到可再充能量源。UL认证在使用锂电池时确保避免反向充电电流。当系统上电运行时,时钟模块就开始运行,首先对时钟模块使用的变量进行初始化,给DS1302写数据DS1302WRITE(0X8E,0X00),使元器件不具备写保护,使复位端产生一个高电平,令RST1,传输开始,DS1302WRITEBYTE(CMD);向DS1302写入需要写入数据的地址,然后向该地址写入数据DS1302WRITEBYTE(DAT),地址增加并判断要写入的数据是否已经写入完成。使复位端产生一个高西安工程大学本科毕业设计(论文)16电平,令RST1,传输开始,DS1302WRITEBYTE(CMD);向DS1302写入需要读取数据的地址,然后读取该地址的数据DS1302WRITEBYTE(DAT),地址增加并判断要读出的数据是否已经读出完成。读出完成之后返回主程序。图37时钟子程序流程图西安工程大学本科毕业设计(论文)1737显示子程序设计本设计中采用LCD1602带字库的液晶屏进行显示。1602字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,分为上下2行,每行显示16个字符。而本功能也是本设计系统中的核心部分,在设计、调试是都是通过本模块的显示来判断所需的功能是否实现。同时本模块的时隙,指令都有特别的要求。所以在下面做详细的介绍,如表34所示为1602的引脚,在连接到单片机是特别要注意数据口的顺序以便操作。表34管脚功能说明引脚符号管脚功能说明1VSS一般接地2VDD接电源(5V)3V0液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。4RSRS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。5R/WR/W为读写信号线,高电平1时进行读操作,低电平0时进行写操作。6EE或EN端为使能ENABLE端,下降沿使能。7DB0底4位三态、双向数据总线0位(最低位)8DB1底4位三态、双向数据总线1位9DB2底4位三态、双向数据总线2位10DB3底4位三态、双向数据总线3位11DB4高4位三态、双向数据总线4位12DB5高4位三态、双向数据总线5位13DB6高4位三态、双向数据总线6位14DB7高4位三态、双向数据总线7位(最高位)(也是BUSYFLANG)15BLA背光电源正极16BLK背光电源负极西安工程大学本科毕业设计(论文)18如表35所示为不同指令的设置。即1602的主要11条指令对应的命令字。表351602液晶显示器内部共有11条控制指令序号指令RSR/WDB7DB6DB5DB4DB3DB2DB1DB01清显示00000000012光标返回0000000013置输入模式00000001I/DS4显示开/关控制0000001DCB5光标获字符移位000001S/CR/L6功能设置00001DLNF7设置字符发生存储器地址0001字符发生存储器地址8设置数据存储器地址001显示数据存储器地址9读忙标志或地址01BF计数器地址10写数据到CGROM或DDRAM10要写的数据内容11从CGROM或DDRAM读数据11读出的数据内容西安工程大学本科毕业设计(论文)191602液晶显示器的读写操作、屏幕和光标的操作都是通过指令编程来实现的,下面对表35中的一些包含不同位指令的说明指令3,光标和显示模式设置。I/D为光标移动方向,高电平右移,低电平左移;S为屏幕上所有文字是否左移或者右移标志,高电平表示有效,低电平则无效。指令4,显示开/关控制。D为控制整体显示的开与关设置,高电平表示开显示,低电平表示关显示;C为控制光标的开与关设置,高电平表示有光标,低电平表示无光标;B为控制光标是否闪烁设置,高电平闪烁,低电平不闪烁。指令5,光标或字符移位。S/C为高电平时移动显示的文字,低电平时移动光标。指令6,功能设置指令。D、L取高电平时为4位总线,低电平时为8位总线;N取低电平时为单行显示,高电平时双行显示;F为低电平时显示57的点阵字符,高电平时显示510的点阵字符。指令9,读忙信号和光标地址。BF为忙标志位,高电平表示忙,此时显示器不能接收指令或者数据,如果为低电平表示不忙。1602LCD的读写操作时序分别如图38和图39所示,根据这两个图归纳出的基本操作时序表,见寄存器选择控制表37。1602的内部显示地址如图310所示,图311为显示子程序流程图。图381602LCD的读操作时序西安工程大学本科毕业设计(论文)20图391602LCD的写操作时序如表36所示为引脚RS、RW不同的组合时对应的功能。表36寄存器选择控制表RSRW操作说明00写入指令寄存器(清除屏等)01读BUSYFLAG(DB7),以及读取位址计数器(DB0DB6)值10写入数据寄存器(显示各字型等)11从数据寄存器读取数据注关于EH脉冲开始时初始化E为0,然后置E为1,再清0。BUSYFLAG(DB7)在此位未被清除为0时,LCD将无法再处理其他的指令要求。注数据指针设置数据首地址为80H,所以数据地址为80H地址码027H,4067H。图3101602的内部显示地址LCD1602初始化过程如下LCDRS0;LCDEN0;WRITE_COM0X01显示清屏WRITE_COM0X38显示模式设置西安工程大学本科毕业设计(论文)21图311显示子程序流程图WRITE_COM0X0C显示开,开游标,不闪烁WRITE_COM0X06字符整体移动38信号输出子程序设计当风向风力数据通过单片机处理后,就需要及时的告知工作人员,使用串口可以将检测到的风向风力数据传输给外接设备。信号输出子程序流程图如图312所示。串口的初始化程序为SCON0X50;REN1,允许接收状态,串口工作模式1TMOD0X20;定时器1工作方式2PCON0X80;SMOD1,波特率加倍TH10XFD;波特率为19200TL10XFD;TR11;开定时器1中断西安工程大学本科毕业设计(论文)22图312信号输出子程序流程图ES1;开串口中断EA1;当串口中断打开时,先检测接收标志是否被拉高,将接收标志程序置零,主机读取之前存入SBUF中的数据,将数据保存到RDATA,将置REC拉高结束中断。西安工程大学本科毕业设计(论文)23第4章软件仿真与调试41软件环境的介绍411KEILUVISION42009年2月发布KEILUVISION4,KEILUVISION4引入灵活的窗口管理系统,使开发人员能够使用多台监视器。新的用户界面可以更好地利用屏幕空间和更有效地组织多个窗口,提供一个整洁,高效的环境来开发应用程序。新版本支持更多最新的ARM芯片,还添加了一些其他新功能。KEILUVISION4特征A系统浏览器窗口的显示设备外设寄存器信息。B多项目工作区简化与众多的项目。C调试还原视图创建并保存多个调试窗口布局。D多显示器和灵活的窗口管理系统。新建一个工程打开KEIL软件后,点击PROJECTNEWUVISIONPROJECT,出现一个新建工程界面,如图41。图41新建工程西安工程大学本科毕业设计(论文)24新建一个该工程的目录,然后给这个工程起一个名字,比如温湿度传感器,软件会自动添加扩展名UVPROJ,如图42。图42新建工程目录保存之后会弹出一个对话框,用来选择单片机型号。STC89C52选择ATMEL公司名下的AT89C52,如图43。图43芯片选择西安工程大学本科毕业设计(论文)25工程建立好之后,建立编写代码的文件,单击FILENEW,然后点击SAVE,可以保存文件,因为是采用C语言编写,因此这块文件名的后缀一定要加C,如图44。图44代码文件然后将创建的文件添加到所建立的工程中去,右击SOURCEGROUP1,单击ADDFILESTOGROUPSOURCEGROUP1,将刚刚创建的温湿度传感器C文件添加进去,如图45。图45工程添加西安工程大学本科毕业设计(论文)26程序编写好后,对其进行编译,生成HEX文件,就可以下载到单片机里了,首先点击如图46所示快捷按键。图46编译生产HEX在弹出的对话框中,单机OUTPUT选项,选中其中的CREATEHEXFILE,然后点击确认,如图47。图47HEX设置设置完成后,点击PROJECTREBUILDALLTARGETFILES,或者单击如图48所示快捷按键。西安工程大学本科毕业设计(论文)27图48编译编译完成后,在KEIL软件下方,会出现相应提示,DATA指的是程序使用了单片机内部256字节RAM的多少,CODE指的是使用了8K代码FLASH资源中的多少,当提示“0ERROR,0WARNING”表示程序无错误和警告,此时就会生成HEX文件,如图49所示。图49资源占用与警告412STC_ISP_V480将硬件与电脑连接好之后,查看设备管理器所使用的COM口,然后打开STC系列单片机下载软件STC_ISP_V480,如图410。西安工程大学本科毕业设计(论文)28图410下载软件STC_ISP_V480下载步骤第1步选择单片机型号,如图411。图411选择单片机型号第2步单机“打开程序文件”,找到刚才建立工程编译生成的HEX文件,西安工程大学本科毕业设计(论文)29如图412。图412打开程序文件第3步选择刚才查到的COM口,如图413。第4步由于STC单片机需要冷启动,先点下载,等待软件提示上电的时候,再上电,如图414和图415所示。图413选择COM口西安工程大学本科毕业设计(论文)30图414冷启动图415下载完成42KEIL软件及其调试功能简介成功编译/汇编、连接后,选择菜单DEBUGSTART/STOPDEBUGSESSION(或按CTRLF5键)进入程序调试状态,KEIL提供对程序的模拟调试功能,内建一个功能强大的仿真CPU以模拟执行程序,如图416所示。西安工程大学本科毕业设计(论文)31图416开始程序调试KEIL能以单步执行(按F11或选择DEBUGSTEP)、过程单步执行(按F10或选择DEBUGSTEPOVER)、全速执行等多种运行方式进行程序调试,如图417和418所示。图417单步执行图418过程单步执行如果发现程序有错,可采用在线汇编功能对程序进行在线修改(DEBUGINLINEASSAMBLY),不必执行先退出调试环境、修改源程序、对工程重新进行编译/汇编和连接、然后再次进入调试状态的步骤,如图419所示。西安工程大学本科毕业设计(论文)32图419在线修改对于一些必须满足一定条件(如按键被按下等)才能被执行的、难以用单步执行方式进行调试的程序行,可采用断点设置的方法处理(DEBUGINSERT/REMOVEBREAKPOINT或DEBUGBREAKPOINTS等),如图420所示。图420断点设置在模拟调试程序后,还须通过编程器将HEX目标文件烧写入单片机中才能观察目标样机真实的运行状况。西安工程大学本科毕业设计(论文)33第5章总结与讨论本次设计中,本人学习到了许多以前没有接触过的硬件、软件知识,毕业设计之前只是偶尔有机会能接触到电子制作,对电子制作相关的知识要求和电子制作的过程没有深刻的了解。两个多月的毕业设计,是一个学习电子制作的绝好机会。在本次设计中,首先学会了查阅资料和利用工具书。平时课堂上所学习的知识大多比较陈旧,作为一名电子专业的学生,由于本专业的特点自己更要积极查阅当前的最新动态资料及其应用技巧等等。当在设计过程中需要用一些不曾学过的东西时,就要去有针对性地查找资料,然后加以吸收利用,以提高自己的应用能力,而且还能增长自己见识,补充最新的专业知识。并且,在这次毕业设计中,在网络上的资料查阅也是很重要的环节,网络上的资源极其丰富,通过检索工具的使用,使得本人对本次设计中的各方面都有了清楚的了解,从而顺利的完成了本次毕业设计。不过由于对所采用的设计语言的不确定性,再加上对曾经学过的C语言和汇编语言的极少利用和对这两门语言掌握不是很精通,结果在设计的过程中出现了不少软件设计上的思路障碍,也出现了不少语法错误和程序代码的高冗杂度,为此吃了不少苦头。其中最大的教训就是语言嵌套程序思想的不精通带来的程序高度冗杂,由于所设计的程序中需要大量重复地多层调用同样的子函数,而开始对程序嵌套设计这部分的了解还相当肤浅,结果设计出来的程序是没有可读性的代码组合,不是可以完成目的功能的优良架构的程序。后来又花了大量时间重新阅读理解嵌套程序设计思想,重新设计系统程序,教训相当深刻。总之,本次设计使本人的实践能力得到了进一步提高,在调试过程中还积累了一些经验。特别是培养了做事要严谨、认真的作风,受苦耐劳的精神以及相对应的工程意识。还对以前学过的理论知识起到了回顾作用,并对其加以进一步的消化和巩固。本次设计具备的主要功能有1、带键盘输入,必要的参数设定,测量修正,记录的调取。2、带显示器件,显示当前时间、风向、风速等信息。西安工程大学本科毕业设计(论文)343、带有信号输出接口,实时输出风向数据和风速数据。西安工程大学本科毕业设计(论文)35参考文献1徐明,朱庆春风向风速测量仪设计J气象水文海洋仪器,2008,045102凌六一,伍龙基于软件模拟的51单片机IIC总线的实现J电子技术,2004,0513163葛磊蛟,毛一之,李歧,高婧嫱基于C语言的RS232串行接口通信实现J河北工业大学学报,2008,0611164胡宁博,李剑,赵榉云基于HMC5883的电子罗盘设计J传感器世界,2011,0635385刘静,王计元24C系列串行EEPROM与单片机的接口设计及应用J上海电力学院学报,2011,043533586宋德杰AT24C02在单片机中的应用J电子制作,2005,0417197卢旭锦基于KEILC的AT24C02串行E2PROM的编程J现代电子技术,2007,081541578KANGSHUNLI,YANCHEN,HEZUANLIUANEWMETHODOFEVOLVINGHARDWAREDESIGNBASEDONIICBUSANDAT24C02JINTELLIGENTCONTROLANDAUTOMATIONWCICA,201210THWORLDCONGRESSON20121041079冯大捷基于DS1302电子时钟的设计J科技视界,2012,0211812010崔惠柳串行实时时钟芯片DS1302及其应用J广西工学院学报,1998,01626611姚德法,张洪林串行时钟芯片DS1302的原理与使用J信息技术与信息化,2006,01929412张宁丹,金桂基于STC89C52单片机DS1302时钟芯片定时开关的设计与仿真J现代电子技术,2013,084613赵亮跟我学51单片机七LCD1602液晶显示模块J电子制作,2011,07747714张亚峰KEILC51软件使用方法J电子制作,2011,01616515邵子扬,黄保明,刘海涛KEIL软件仿真的串口调试技巧J单片机与嵌入式系统应用,2006,077678西安工程大学本科毕业设计(论文)36附录附录1风向子程序UCHARGE,SHI,BAI,QIAN,WAN;/显示变量UCHARCODETABLE0,1,2,3,4,5,6,7,8,9;INTX,Y,Z;BYTEBUF8;DOUBLEANGLE;VOIDCONVERSIONUINTTEMP_DATAWANTEMP_DATA/10000;TEMP_DATATEMP_DATA10000;/取余运算QIANTEMP_DATA/1000;TEMP_DATATEMP_DATA1000;/取余运算BAITEMP_DATA/100;TEMP_DATATEMP_DATA100;/取余运算SHITEMP_DATA/10;TEMP_DATATEMP_DATA10;/取余运算GETEMP_DATA;VOIDHMC5883_STARTF_SDA1;/拉高数据线F_SCL1;/拉高时钟线DELAY5US;/延时西安工程大学本科毕业设计(论文)37F_SDA0;/产生下降沿DELAY5US;/延时F_SCL0;/拉低时钟线VOIDHMC5883_STOPF_SDA0;/拉低数据线F_SCL1;/拉高时钟线DELAY5US;/延时F_SDA1;/产生上升沿DELAY5US;/延时VOIDHMC5883_SENDACKBITACKF_SDAACK;/写应答信号F_SCL1;/拉高时钟线DELAY5US;/延时F_SCL0;/拉低时钟线DELAY5US;/延时BITHMC5883_RECVACKF_SCL1;/拉高时钟线DELAY5US;/延时CYF_SDA;/读应答信号F_SCL0;/拉低时钟线西安工程大学本科毕业设计(论文)38DELAY5US;/延时RETURNCY;VOIDHMC5883_SENDBYTEBYTEDATBYTEI;FORI0;I8;I/8位计数器DAT1;/移出数据的最高位F_SDACY;/送数据口F_SCL1;/拉高时钟线DELAY5US;/延时F_SCL0;/拉低时钟线DELAY5US;/延时HMC5883_RECVACK;BYTEHMC5883_RECVBYTEBYTEI;BYTEDAT0;F_SDA1;/使能内部上拉,准备读取数据,FORI0;I8;I/8位计数器DAT1;F_SCL1;/拉高时钟线西安工程大学本科毕业设计(论文)39DELAY5US;/延时DAT|F_SDA;/读数据F_SCL0;/拉低时钟线DELAY5US;/延时RETURNDAT;VOIDSINGLE_WRITE_HMC5883UCHARREG_ADDRESS,UCHARREG_DATAHMC5883_START;/起始信号HMC5883_SENDBYTESLAVEADDRESS;/发送设备地址写信号HMC5883_SENDBYTEREG_ADDRESS;/内部寄存器地址,请参考中文PDFHMC5883_SENDBYTEREG_DATA;/内部寄存器数据,请参考中文PDFHMC5883_STOP;/发送停止信号VOIDMULTIPLE_READ_HMC5883VOIDUCHARI;BYTEBUF8;HMC5883_START;/起始信号HMC5883_SENDBYTESLAVEADDRESS;/发送设备地址写信号HMC5883_SENDBYTE0X03;/发送存储单元地址,从0X3开始HMC5883_START;/起始信号HMC5883_SENDBYTESLAVEADDRESS1;/发送设备地址读信号FORI0;I6;I/连续读取6个地址数据,存储中BUF西安工程大学本科毕业设计(论文)40BUFIHMC5883_RECVBYTE;/BUF0存储数据IFI5HMC5883_SENDACK1;/最后一个数据需要回NOACKELSEHMC5883_SENDACK0;/回应ACKHMC5883_STOP;/停止信号DELAY5;XBUF08|BUF1;/COMBINEMSBANDLSBOFXDATAOUTPUTREGISTERZBUF28|BUF3;/COMBINEMSBANDLSBOFZDATAOUTPUTREGISTERYBUF48|BUF5;/COMBINEMSBANDLSBOFYDATAOUTPUTREGISTERANGLEATAN2DOUBLEX,DOUBLEZ180/314159265180;/角度计算ANGLE10;CONVERSIONANGLE;VOIDINIT_HMC5883SINGLE_WRITE_HMC58830X02,0X00
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO 17987-1:2025 EN Road vehicles - Local Interconnect Network (LIN) - Part 1: General information and use case definition
- 【正版授权】 ISO 13094:2025 EN Composites and reinforcement fibres - Carbon fibre reinforced plastics (CFRPs) and metal assemblies - Combined stress test
- 【正版授权】 ISO 12219-12:2025 EN Interior air of road vehicles - Part 12: Test methods for the determination of fogging characteristics of trim materials made from polyvinyl chloride P
- 【正版授权】 IEC 60433:1998 FR-D Insulators for overhead lines with a nominal voltage above 1 000 V - Ceramic insulators for a.c. systems - Characteristics of insulator units of the long
- 【正版授权】 IEC 60079-19:2025 EN-FR Explosive atmospheres - Part 19: Equipment repair,overhaul and reclamation
- GB/T 3780.31-2025炭黑第31部分:总氢元素含量的测定
- GB 46031-2025可燃粉尘工艺系统防爆技术规范
- 校园消防知识培训课件流程图
- 残疾人专员考试试题及答案
- 一模日语试题及答案
- 2025-2030城市矿产开发利用政策支持与商业模式创新报告
- VDA6.3-2023版审核检查表
- 变频器日常保养及维修方法
- 普通地质学教材
- 酒店账单-水单-住宿
- 中医门诊病历(共7篇)
- GB/T 4372.1-2014直接法氧化锌化学分析方法第1部分:氧化锌量的测定Na2EDTA滴定法
- 日语动词分类课件 【高效课堂+备课精研】 高考日语一轮复习
- 妇产科学-第十二章-正常分娩课件
- 1【L】系列离心式冷水机组技术手册
- Q∕SY 1753-2014 炼化循环水用缓蚀阻垢剂技术规范
评论
0/150
提交评论