版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机控制的鸡舍光环境控制系统的硬件和软件设计案例目录TOC\o"1-3"\h\u30046单片机控制的鸡舍光环境控制系统的硬件和软件设计案例 126221硬件电路设计 164191.1显示屏设计 1202601.2数据采集模块 3257191.3按键模块 582851.4警报模块 5209262.1软件技术 7174842.1.1功能设计 8303992.1.2程序设计 998622.2显示代码设计 10208642.2.1液晶屏初始化 10129462.2.2引脚说明 11303442.2.3数据显示 1234762.3光照检测代码设计 1357202.1.1IIC双向通信 13282332.4警报设计 14153412.2.1报警功能 1435932.1.2光照检测 15297742.5按键代码设计 16170602.5.1按键功能 16203232.6延时功能设计 1741792.6.1延时函数 17278192.7调试与下载 181硬件电路设计1.1显示屏设计本设计最终采用1602显示屏硬件作为该显示器模块。能够在屏上显示2行英文字符,每行16个英文字符可以在屏上显示清晰的英文字符和数据并且具有4位串行接口的方式,其中所显示的内容一般为英文字母和数码字符,而且它正常的工作频率为3-5v。其中"lcd1602"1号引脚接地,lcd2号引脚接vcc,lcd3引号脚是基于lcd的灰度调节。3脚与地之间的阻止为200欧~5K,LCD4~14连接到单片机相对应的I/O端口。15脚(A)为背光的电源,16脚(K)为背光的地。其与STC89C52连线图和引脚说明如图1.1,1.2所示:图1.2液晶“LCD1602”连接图图1.3引脚说明图在对显示屏进行读写操作时,有一定的时间和操作上的顺序,在进行都指令操作时,使能端信号为高电平有效所以在进行代码的编写需要先设置指令选择控制端和读写控制线的状态,再将E端变为高电平才可以进行数据的读。读操作完成后将使能端为低电平最后将控制先和指令选择端变成原来状态。在写指令时,E为低电平时有效同样的需要先进行控制线的状态。选择数据产生E端的信号脉冲最后还原读写控制线和指令选择端的的状态。显示屏指令顺序如图1.4,1.5所示:图1.4读指令时序图图1.5写指令时序图1.2数据采集模块本系统最后采用gy-30该感光模块作为检测外界光照的传感器,该模块内部加有转换模块比如AD模数转换模,电流电压的转换经过它内部的这些信号的相互转换最终达到我们所需要的光照检测数据其整体电路如图1.6所示。图1.6gy-30原理图在对光照数据采集上采用GY-30数字光模块它内置传感器BH1750FVI芯片包含了16bit模数转换器,GY-30是一个五针脚模块,包含VCC、SCL、SDA、ADDR、GND五个引脚。SCL为时钟线;SDA为数据线。图中C表示为串联在电路中的两个滤波电容,addr为寄存器的地址。该模块不仅仅可以有效地完成设计所需要的功能并拥有很好的运行又节省空间。其1750芯片内部如图1.7所示。图1.71750内部图该芯片内部的电路主要包括:pd二极管,它的作用是内部流过的电流会随着外部光强的变化而改变并发生相应的大小变化;amp运算放大器将随光变化的电流信号转换成为电压信号;数模转换:将电压信号转换成16位数字信号到其中的光照强度计算接口,osc是里面的振荡器时钟频率为320khz。GY-30与单片机的连接相对简单,vcc连接到供电电源电路,寄存器的地址和地相连。在设计系统中将SDA、SCL引脚与对应的的P10与P11相连具体连线图如1.8所示图1.8GY-30连线图1.3按键模块四个按键供电电压5V。和控制器的引脚连接来实现触摸按钮内部的金属部件,受到力弹动,实现开和关。设计中将四个按键分别对应的连接到1.3~1.6接口。按键另一端传连接到电源端。四个按键分别作为设计中人为设定的上下最值进行修改具体的硬件连线图如1.9所示:图1.9按键连线图1.4警报模块考虑到前面的设计和方案选择后本系统最后一次采用了电压式讯响器,他采用的是一种以电子式为一体的报警器它用直流点进行供电,工作时间为1.5~15v,它的工作原简单(一个振荡器震动时可以输出1.5-2.5赫兹的音频信号),电流传递到其内部的一个电磁信号,使得这个电磁信号线圈能够产生较大的强磁场,振荡器薄膜能够产生较大的声音。电磁线圈在工作时产生一个磁场所必须大于微控制器电流的输入,因此这里我加了一个三极管电流放大器放大之后来驱动警报模块来达到发声警报的效果。在该设计中将其连到2.0引脚利用翻转电来让其工作。警报模块连线图如图1.10示:图1.10警报模块连线图通过以上各个系统模块的连线之后,形成了一张总体的连线电路图,核心为单片机控制芯片,将外面的lcd显示系统模块,感光传感器模块,以及警报系统模块一一的连到对应的接口中完成总体的硬件电路图绘制,根据设计图进行各个器件的连线焊接,同时在代码上也需要根据该连线进行定义。如图1.11所示:图1.11总体连线图
2软件设计2.1软件技术在本文设计的过程中,在软件方面通过采用vc语言编程来直接实现对各个模块的初始化与其所需功能的设计在实现过程中使用到了keil5软件,该项目的软件采用了美国keilsoftware公司的一种可以直接开发51单片机的一款软件,在实际上所使用的语言上,可以用C来编程与本专业知识基本上很契合该软件使用相对于其他开发软件更容易上手并且可以进行生成16进制码的hex文件。该软件出现时间长久如果在编程过程中遇到一些版权或者其他的软件驱动的问题可以通过一些成熟的资料与经验去更好的解决。选择它的原因主要还是在校学习期间对其使用过并进行了一些开发工程,有一些亲和感相对比较熟悉。同时软件功能强大,款集成的开发环境不仅仅可以对51系列也对ARM进行开发,开发界面使用也比较方便使用,结构上、性能上都能满足本设计的需求。同时在软件中也含有强大的软件仿真在进行软件代码编程的时候更为方便。此软件需先进行破解相关的开发系列包,在设计中用51单片机进行所以破解时是采用相对应的破解包才可以正常使用,下图2.1为软件开发界面:图2.1软件界面图除了开发软件,在代码设计完成后。如何将其烧写到控制芯片内也需要用到一款编程器。因为设计中单片机支持在线编程。所以通过对应的ISP软件就可以在电脑上通连线进行程序烧写,烧写前必须在开发软件中生成16进制的hex文件。双击ISP软件,软件界面如下图2.2示:图2.2isp界面2.1.1功能设计本设计是实现的是检测鸡舍的光照强度,并通过显示器显示出传感器检测的光照数据与人为事先设定的上下限值同时也可以显示实时修改后的值。当传感器检测到的实际光照数据值超过人为设定的上限值,警报模块便会进行视觉和听觉的报警。同时如果当测的值比下限值还低也会进行报警。当系统出现异常现象可以重新刷新复位让整个设计比较完整。如图2.3:图2.3所需功能图2.1.2程序设计在软件的总功能上,本设计首先进行核心控制芯片的初始化,其次在芯片之后对各个小系统模块进行初始化如:显示器和传感器的这里简称为硬件的初始化。最终在初始化完成之后首先会在液晶屏上显示设定值的数据和传感器采集的外界光照数据和固定的单位字符信息。本设计中警报有两种情况:当感光模块检测到的光照信息高过人为设定的MAX值或小于设定的MIN值便会通过控制芯片的输入输出引脚定时翻转的高电平信号使得led和讯响器电路中流过电流才形成回路进行工作产生警报。如果外界光照处于上下设定的极值范围内系统便会处于正常工作状态。修改极值的大小也有可能不在阈值范围内来使得报警器工作。作为设计的核心所有的模块都需要将所获得的信号经过单片机的分析处理来进行反馈和控制具体流程如图2.4:图2.4程序流程图2.2显示代码设计2.2.1液晶屏初始化数据显示功能通过LCD1602液晶屏幕实现,在LCD接通电源时,LCD的工作模式、显示状态、清除画面、输入方式、光标移动等设定会在一定的时间初始化LCD。以下使用命令字初始化LCD602的流程如图2.5所示:LCD初始化LCD初始化工作方式设置工作方式设置显示状态设置显示状态设置清屏清屏输入方式设置输入方式设置返回返回图2.5LCD初始流程图01DLNF命令字与处理器设定LCD接口数据位DL、显示行数N、字型F。DL=1:8位数据接口(D7-D0)。DL=0:4位数据接口(D7-D4)N=1:2行,N=0:1显示1行。F=1:5x10,F=0:5x8。例:00111000B(0x38)设置数据位数8位、2行显示。00001DCB命令字设定整体显示开关D、光标开关C、光标位置的文字闪烁B。D=1:打开显示,C=0.光标不显示。B=0:光标位不闪烁。示例00001100B(0x0C)打开LCD显示器,光标不显示,光标位不闪烁。清空命令字0x01界面重新加载。000001I/D命令字设定光标移动方向,判断整体显示是否移动。I/D=1:增量方式向右偏移,I/D=0:减量方式向左偏移。S=1:位移,S=0:不位移。例:00000110B(0x06)将光标增量向右移动,设定为显示字符不移动。在本设计中用LCD_Write_Com(0x38)函数设定屏幕显示数据位数8位,两行显示。并通过延时函数进行延时。同样将0x08命令字通过写入函数完成显示关闭的功能,把命令字换成0x01进行清屏命令。同时也需要延时,将命令字0x0c完成LCD开和光标。2.2.2引脚说明在软件代码中用2.5引脚为数据和命令选择控制端,端口为0表示命令和数据;端口等于1为数据。用2.6引脚为读取/写入控制线,该控制线为0是写入操作;该控制线等于1为读取操作。用2.7引脚作为始能端执行命令的使能引脚,接单片机的任意输入输出。显示屏幕1602的基本操作分为以下四种:读状态时当输入命令选择控制端为0控制线等于1始能为高功率输出状态字。读数据输入命令选择控制端为1控制线等于1始能为高功率输出为数据。写命令输入命令选择控制端为0控制线等于0始能为高功率。写数据输入命令选择控制端为1控制线等于0始能为高功率。在执行写指令、写数据、读三个命令操作之前,必须先执行读状态操作来查询占用标志,当占用标志为0时,可以执行以上的操作,判忙函数:bitLCD_mang(void){ifdefCheck_bDataPort=0xFF;//端口为输入RS_CLR;//RS=0:命令RW_SET;//RW=1:读EN_CLR;//EN=0_nop_();EN_SET;//EN=1:高脉冲return(bit)(DataPort&0x80);//采用“与”操作屏蔽掉低7位elsereturn0;}2.2.3数据显示清屏函数“voidLCD_Clear(void);”就是将清屏命令字0x01,将光标设置为第一行第一列来达到清屏的效果。代码中将初值固化在主函数中因此清屏函数在该系统中也起到复位的功能“LCD_Write_Com(0x01)”函数将清屏命令写到LCD。变量数据显示代码用来显示当前外界的光照强度因为外界光照强度会随时变化,即显示HB1750传感器测量的数据,把随时改变的数据写到屏幕中去。其中,输入参数x第四象限的正半轴,y表示第四象限的负半轴,Data表示所要输出的字符。代码如下:voidLCD_display(unsignedcharx,unsignedchary,unsignedcharData){ unsignedcharbai,shi,ge;//定义无符号字符型变量 bai=Data/100; shi=Data%100/10; ge=Data%10;if(y==0)//判断在LCD显示在第几行 { LCD_Write_Com(0x80+x); }else { LCD_Write_Com(0xC0+x); }LCD_Write_Data(bai+0x30);LCD_Write_Data(shi+0x30);LCD_Write_Data(ge+0x30);}2.3光照检测代码设计在感光模块中用到了I2C通讯协议在进行光数据采集时需要先对控制芯片和传感器之间完成数据通信才能够将数据传给单片机进行处理和显示。需要进行初始信号的开始和应答确认标志才可以从其中读取数据的值最后有最终结束标志才算完成。具体流程如图2.6所示:图2.6通讯流程图2.1.1IIC双向通信IIC是一种将多个设备连接到同一总线上的集成电路串行通信总线,每个设备都用作实时数据传输的控制源,该总线的两个主要接口,一个数据线。时钟线该模块既可以做主设备也可以做为从设备在本系统中将控制芯片作为主设备传感器作为从设备。在数据传输过程中有三种类型的信号,它们是:初始信号:当时钟线处于高电平时,数据线从高电平跳到低电平,产生初始信号传输数据。最终标志:当时钟线处于高电平时,数据线从低电平跳到高电平,产生最终信号终止数据传输。应答确认标志:主要用于在数据通信过程中,在接收结束和上传结束时确认发送控制字符发送的数据没有错误。主机和从机之间的响应信号代码如下:发送应答信号首先写应答信号并拉高时钟线进行函数延时,同时拉低时钟线bitBH1750_RecvACK(bitack){SCL=1;//拉高时钟线Delay5us();//延时CY=SDA;//读应答信号SCL=0;//拉低时钟线Delay5us();//延时returnCY;}2.4警报设计2.2.1报警功能报警功能通过led灯和讯响器实现,当检测到光照强度高于最大阈值报;当前光照强度低于最小阈值讯响器工作。蜂鸣器是低电平触发,即控制端给它一个低电平,蜂鸣器发声,在外界光照超过最大阈值或低于最小阈值蜂鸣器持续发出类似警报的声音,使用条件语句判断符合条件是给引脚一个低电报警器发声。具体代码如下:voidjudge()//判断{ if(Nlight>=Gmax||Nlight<Gmin) { beef=0; } else { beef=1; } }2.1.2光照检测照的检测使用了BH1750.c文件首先通过初始化代码BH1750芯片光设定采用高-分辨率模式。通过连续读取内部数据代码。在此函数中先调用IIC通信函数的初始代码用于发送一个起始信号再通过“BH1750_SendByte(SlaveAddress);”向IIC总线发送一个设备地址和写入信号,通过for循环语句连续读取两个地址数据,并存储在BUF中。最后的数据必须返回。最后形成停止信号来连续读取BH1500内部数据的功能程序。代码如下: return(guang);}在主函数中,显示变化数据的函数,定位之后,一位位的显示在LCD界面上。在主函数中有一个界面显示函数,他主要是定位并显示固定在界面中不经常变化的指示说明单位。2.5按键代码设计2.5.1按键功能在本设计中除去单片机系统中自带的复位按键。在进行设定的最大值最小值上也采用按键来进行修改。在程序的设计中先用key函数来完成按钮的功能,其中用判断语句判断此时各个按钮的一端是不是低电平如果是的话就进行一个延后。并完成各个按钮的功能操作。并在单片机的控制下显示在屏幕中。以下为各个按键的功能:第一个按键用于设定最大阈值的,设置报警的阈值,开机系统默认在第一个界面,当按下按键s1,引脚给一个低电平在界面的最大阈值会增加100.判断按键1是否被按下,同时增加数据,调用显示写入函数,显示阈值设置界面;第二个按键用于设定最大阈值的减数据,设置报警的阈值,默认一个阈值,当按下按键s2,引脚给一个低电平在界面的最大阈值会减少100.判断按键1是否被按下,同时增加数据,调用显示写入函数,显示阈值设置界面。第三个按键用于最小阈值加数,每按一次在主界面上都会显示最小阈值增加10个单位同时判断是否有效给予显示器写入新的数据第四个按键在第一个界面用于最小阈值减数,每按一次在min阈值减少10个单位同时判断是否有效给予显示器写入新的数据代码如下:voidkey(){ if(s1==0) DelayMs(20); if(s1==0) { Gmax+=100;//光强度 } if(s2==0) DelayMs(20); if(s2==0) { Gmax-=100;//光强度 } if(s3==0) DelayMs(20); if(s3==0) { Gmin+=10;//光强度 } if(s4==0) DelayMs(20); if(s4==0) { Gmin-=10;//光强度 }}2.6延时功能设计2.6.1延时函数系统中对显示屏的读写操作要符合它的时间顺序,设计中处理器的运算速度是远远大
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年西安电力高等专科学校马克思主义基本原理概论期末考试模拟试卷
- 2025年岳阳学院马克思主义基本原理概论期末考试模拟试卷
- 2024年湖南食品药品职业学院马克思主义基本原理概论期末考试模拟试卷
- 金融合规智能识别系统
- 2024年西华大学马克思主义基本原理概论期末考试真题汇编
- 2025年怀化职业技术学院马克思主义基本原理概论期末考试真题汇编
- 2025年山东华宇工学院马克思主义基本原理概论期末考试笔试真题汇编
- 基于自然语言处理的校园AI社团活动智能问答考勤系统设计课题报告教学研究课题报告
- 高中生利用气相色谱-质谱联用技术测定欧洲与南美咖啡豆的酮类化合物课题报告教学研究课题报告
- 甲状腺细针穿刺活检的超声引导应用
- 第16课 祖国我为您自豪(教学课件)小学二年级上册 统编版《道德与法治》新教材
- 小学科学新教科版三年级上册全册教案(2025秋新版)
- 2025北京朝阳八年级(下)期末历史试卷及答案
- 教练技术一阶段课件
- 国企跟投管理办法
- 无人机教学 课件
- 电表移交协议书
- 【《高纯氧化镁生产工艺计算以及设备选型计算案例》6100字】
- 环保设备搬迁方案
- 2025至2030中国环境控制系统行业发展趋势分析与未来投资战略咨询研究报告
- 医院信息与图书管理制度
评论
0/150
提交评论