• 311.00 KB
  • 2022-04-22 13:49:09 发布

粮库温度监测报警毕业论文.doc

  • 39页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'目录粮库温度监测报警系统毕业设计目录摘要IABSTRACTII前言IV1绪论11.1单片机简介11.2单片机的结构11.3单片机的主要性能和工作模式22系统结构原理42.1系统基本结构42.2系统结构概述42.3STC89C52单片机最小系统42.4本章小结73硬件电路设计部分83.1主控制器83.2报警模块83.3显示模块83.4温度采集电路设计103.5按键电路设计113.6电源电路设计123.7本章小结124软件设计部分134.1主程序134.2LCD1602液晶显示程序设计144.3温度传感器程序设计164.4蜂鸣器程序设计174.5本章小结17结论18参考文献19 目录致谢20附录21 前言前言随着微型计算机和传感器技术的迅速发展,自动检测领域发生了巨大变化,仓库温度自动监测控制方面的研究有了明显的进展。当前粮食仓储过程中,保证温度适宜是实现储粮安全最重要的条件之一。因此,粮仓的温度是粮仓的重要控制指标。在理论研究和实地考察实验的基础上,进行了粮库温度实时在线巡回监测与控制系统的设计和研制,基本消灭了粮食霉变事故,同时也节省了大量人力和物力,减轻了粮库管理的工作强度,提高了粮库管理效率,使粮食管理得到了安全可靠的保障。本设计采用数字温度传感器DS18B20,因其内部集成了A/D转换器,使得电路结构更加简单,而且减少了温度测量转换时的精度损失,使得测量温度更加精确。数字温度传感器DS18B20只用一个引脚即可与单片机进行通信,大大减少了接线的麻烦,使得单片机更加具有扩展性。在此基础上本设计又采用单片机芯片STC89C52作为主控制器的核心,形成成熟的温度控制系统,结合DS18B20芯片的小型化,通过单跳数据线就可以和主电路连接,把数字温度传感器DS18B20做成探头,探入到仓库中的各个地方,不但增加其实用性,更能串接多个数字温度传感器DS18B20进行范围的温度检测。前言黑龙江八一农垦大学毕业设计(论文)—38— 黑龙江八一农垦大学毕业设计(论文)1绪论1.1单片机简介随着人们对智能化产品需求的提高,单片机的应用范围越来越广泛,前景越来越广阔。因为您只需要一块几厘米见方的单片机,写入简单的程序,就可实现您所需要的功能,而不是一块大而复杂的模拟电路花费了您巨大的精力,繁多的元器件增加了您的成本。单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。由于单片机的重要领域为智能化电子产品,一般需要嵌入仪器设备内,故又称嵌入式微型控制器。单片机控制系统能够取代以前利用复杂电子线路或数字电路构成的控制系统,可以以软件控制来实现,并能够实现智能化,由于其具有可靠性较高,便于扩展,体积小,成本低等等特点。现在,这种单片机的使用领域已十分广泛,单片机已经广泛的应用于民用电子产品,智能仪表,工业测控、军工等等领域。单片机诞生于1971年,经历了SCM、MCU、SoC三大阶段。自单片机出现至今,单片机技术已走过了近20年的发展路程。纵观20年来单片机发展历程可以看出,单片机技术的发展以微处理器(MPU)技术及超大规模集成电路技术的发展为先导,以广泛的应用领域拉动,表现出较微处理器更具个性的发展趋势。随着半导体技术的飞速发展,MPU更新换代的速度越来越快小巧灵活、成本低、易于产品化。这样产品的体积变小了,成本也降低了,长期使用也不会担心精度达不到了。所以,它的魔力不仅是在现在,在将来将会有更多的人来接受它、使用它;它能方便地组装成各种智能式控制设备以及各种智能仪表。面向控制,能针对性地解决从简单到复杂的各类控制任务,从而获得最佳性价比。抗干扰能力强,适应温度范围宽,在各种恶劣条件下都能可靠地工作,这是其它机型所无法比拟的。可以很方便地实现多机和分布式控制,使整个系统的效率和可靠性大为提高。据统计,我国的单片机年容量已达1-3亿片,且每年以大约16%的速度增长,但相对于世界市场我国的占有率还不到1%。特别是沿海地区的玩具厂等生产产品多数用到单片机,并不断地辐射向内地。所以,学习单片机在我国是有着广阔前景的。1.2单片机的结构单片机是微型机的一个主要分支,在结构上—38— 黑龙江八一农垦大学毕业设计(论文)一个典型单片机的基本结构由:CPU系统、CPU外围单元、基本功能单元和外围扩展单元组成。就其组成和功能而言,一块单片机芯片就是一台计算机。其主要基本结构如图1所示。CPU外围单元RAM数据存储器ROM程序存储器I/O输入/输出口I/O输入/输出口CPU外围单元元总线控制逻辑CPU时钟复位CPU系统外围扩展单元基本功能单元图1单片机的典型结构STC89C52是一种带8K字节的闪存,256字节内存,32个输入/输出线,看门狗定时器,两个数据指针,三个16位定时器/计数器,6矢量两个级别的中断结构,一个全双工串行口,片内振荡器和时钟电路。此外,STC89C52设计与静态逻辑操作下降到零频率,并支持两种软件可选的省电模式:闲置模式和断电模式。该器件采用ATMEL搞密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。1.3单片机的主要性能和工作模式STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。主要特性如下:Ø增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051。Ø工作电压:5.5V~3.3V(5V单片机)/3.8V~2.0V(3V单片机)。Ø工作频率范围:0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz。Ø用户应用程序空间为8K字节。Ø片上集成512字节RAM。Ø通用I/O口(32个),复位后为:P1/P2/P3/P4是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。ØISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片。—38— 黑龙江八一农垦大学毕业设计(论文)Ø具有EEPROM功能。Ø具有看门狗功能。Ø共3个16位定时器/计数器。即定时器T0、T1、T2。Ø外部中断4路,下降沿中断或低电平触发电路,PowerDown模式可由外部中断低电平触发中断方式唤醒。Ø通用异步串行口(UART),还可用定时器软件实现多个UART。Ø工作温度范围:-40~+85℃(工业级)/0~75℃(商业级)。ØPDIP封装。STC89C52RC单片机的工作模式:Ø掉电模式:典型功耗<0.1μA,可由外部中断唤醒,中断返回后,继续执行原程序。Ø空闲模式:典型功耗2mA。Ø正常工作模式:典型功耗4Ma~7mA。Ø掉电模式可由外部中断唤醒,适用于水表、气表等电池供电系统及便携设备。—38— 黑龙江八一农垦大学毕业设计(论文)2系统结构原理2.1系统基本结构本系统主要由单片机最小系统、驱动电路、显示电路、报警电路和测温电路。系统的原理框图如图2所示。报警电路按键输入电路时钟电路复位电路单片机驱动电路测温电路显示电路图2系统原理框图2.2系统结构概述本系统采用STC89C52单片机及外围电路完成。最重要的部分即测温电路将采用数字温度芯片(DS18B20)测量温度,这样输出的信号为数字信号,可以直接由单片机来处理;按键输入电路用于进行调时和温度查询,以方便对系统各项参数的修改;时钟及复位电路将提供给单片机必不可少的时钟信号和复位信号以使单片机正常工作。报警电路用于当仓库温度超过额定范围时,及时报警通知。显示电路则是显示仓库温度。2.3STC89C52单片机最小系统STC89C52单片机是最小系统的核心控制器件。STC89C52单片机为40管脚双列直插芯片,它是一种高性能,低功耗的8位CMOS微处理器芯片,便于应用有4个I/O口分别为P1,P2,P3,P4。其中每一个管脚都能做独立的输入输出管脚,它的第9脚位复位管脚,接上电容和上拉电阻再带个开关构成复位电路。18,—38— 黑龙江八一农垦大学毕业设计(论文)19管脚接外部晶振和两个微调电容构成外部晶振电路。单片机,复位电路,晶振,5V电源构成单片机最小系统。图3引脚功能图1.电源及时钟引脚VCC:电源电压。正常操作时接+5V电压。VSS:接地。XTAL1和XTAL2:时钟引脚,外接晶体引线端。当使用芯片内部时钟时,此两引脚端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。XTAL1振荡器反相放大器和内部时钟发生电路的输入端;XTAL2是振荡器反相放大器的输入端。2.I/O口引脚功能说明P0端口(P0.0~P0.7,39~32引脚):P0口是一个漏极开路的8位双向I/O口。作为输出端口,每个引脚能驱动8个TTL负载,对端口P0写入“1”时,可以作为高阻抗输入。在访问外部程序和数据存储器时,P0口也可以提供低8位地址和8位数据的复用总线。此时,P0口内部上拉电阻有效。在FlashROM编程时,P0端口接收指令字节;而在校验程序时,则输出指令字节。验证时,要求外接上拉电阻。P1端口(P1.0~P1.7,1~8引脚):P1口是一个带内部上拉电阻的8位双向I/O口。P1的输出缓冲器可驱动(吸收或者输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这是可用作输入口。P1—38— 黑龙江八一农垦大学毕业设计(论文)口作输入口使用时,因为有内部上拉电阻,那些被外部拉低的引脚会输出一个电流。此外,P1.0和P1.1还可以作为定时器/计数器2的外部技术输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX),具体参见下表:在对FlashROM编程和程序校验时,P1接收低8位地址。表1P1.0和P1.1引脚复用功能引脚号功能特性P1.0T2(定时器/计数器2外部计数输入),时钟输出P1.1T2EX(定时器/计数器2捕获/重装触发和方向控制)P2端口(P2.0~P2.7,21~28引脚):P2口是一个带内部上拉电阻的8位双向I/O端口。P2的输出缓冲器可以驱动(吸收或输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电平,这时可用作输入口。P2作为输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。P3端口(P3.0~P3.7,10~17引脚):P3是一个带内部上拉电阻的8位双向I/O端口。P3的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P3做输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输入一个电流。在对FlashROM编程或程序校验时,P3还接收一些控制信号。P3口除作为一般I/O口外,还有其他一些复用功能,如下表所示:表2P3口引脚复用功能引脚号复用功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2(外部中断0)P3.3(外部中断1)P3.4T0(定时器0的外部输入)P3.5T1(定时器1的外部输入)P3.6(外部数据存储器写选通)P3.7(外部数据存储器读选通)3.控制引脚RST:复位输入。当输入连续两个机器周期以上高电平时为有效,用来完成单片机单片机的复位初始化操作。看门狗计时完成后,RST引脚输出96个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。在Flash编程时,此引脚也用作编程输入脉冲。在一般情况下,ALE—38— 黑龙江八一农垦大学毕业设计(论文)以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密位是方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。2.4本章小结本章主要介绍了本设计的系统原理,首先介绍了系统主要结构是由单片机最小系统、驱动电路、显示电路、报警电路和测温电路组成;然手对系统结构进行了概述,最后对单片机的最小系统深入的了解。为较好的实现各模块的功能,我们在实际设计过程中对一些方案进行比较论证,下面对硬件和软件分别阐述。—38— 黑龙江八一农垦大学毕业设计(论文)3硬件电路设计部分3.1主控制器STC89C52的复位电路由C1、R1组成,触动开关k1即可可靠复位。时钟电路由C3、C4及12MHz的石英晶振组成,提供12MHz的时钟信号。P3.0控制DS18B20完成温度测量,用P3.6/P3.7控制声光报警电路,用P1口控制显示电路。主机控制DS18B20完成温度转换必须经过三个步骤:初始化、ROM操作指令、存储器操作指令。必须先启动DS18B20开始转换,再读出温度转换值。3.2报警模块报警模块具备两项功能,即为报警灯和声音报警。报警灯模块是完成LED有规律的闪烁,以便从视觉上提醒用户。报警主要是由三极管8550驱动蜂鸣器发出响声,单片机只要检查温度是否是警报温度即可。超过警报温度自动报警。其原理图如图4所示:图4报警模块3.3显示模块液晶显示模块以其体积小、形状薄、重量轻、耗能少(1~10微瓦/平方厘米)、低发热、工作电压低(1.5~6伏)、无污染,无辐射、无静电感应,尤其是视域宽、显示信息量大、无闪烁,并能直接与CMOS集成电路相匹配等诸多优点得到广泛应用。液晶显示模块分字符型和点阵型两种,前者只能显示常用的字符,点阵型液晶显示模块除显示字符外还能显示各种图形和汉字。由于本设计要求的显示内容较少且简单以及降低成本,故显示部分采用的是不带字库的LCD1602液晶显示模块。下面介绍LCD1602的特点和应用。—38— 黑龙江八一农垦大学毕业设计(论文)1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,LCD1602是一种字符型点阵液晶显示器,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔每行之间也有也有间隔起到了字符间距和行间距的作用,正因为如此,所以他不能显示图形,它主要由行驱动器/列驱动器及16×2个字符液晶显示组成。字符点阵系列模块是一类专门用于显示字母、数字、符号等的点阵型液晶显示模块。分4位和8位数据传输方式。提供5X7点阵+光标和5X10点阵+光标的显示模式。提供显示数据缓冲区DDRAM、字符发生器CGROM和字符发生器CGRAM,可以使用CGRAM来存储自己定义的最多8个5X8点阵的图形字符的字模数据。提供了丰富的指令设置:清显示;光标回原点;显示开/关;光标开/关;显示字符闪烁;光标移位;显示移位等。提供内部上电自动复位电路,当外加电源电压超过+4.5v时,自动对模块进行初始化操作,将模块设置为默认的显示工作状态。主要技术参数和性能如下:1.+5V电压,对比度可调。2.提供各种控制命令如:清屏、字符闪烁、光标闪烁、显示移位等多种功能。3.有80字节显示数据存储器DDRAM。4.内建有160个5X7点阵的字型的字符发生器CGROM。5.8个可由用户自定义的5X7的字符发生器CGRAM。6.与CPU接口采用8位数据总线并行输入输出和3条控制线(具体连接参见表3);表3外部接口信号线引脚名称方向说明1VSS--电源地(0V)2VDD--电源电压(+5V)3Vo--V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。4RSIRS=0,当MPU进行读模块操作,指向地址计数器;当MPU进行写模块操作,指向指令寄存器;RS=1,无论MPU读操作还是写操作,均指向数据寄存器(数据/命令选择)。5R/WIR/W=0写操作;R/W=1读操作6ENI读操作时,信号下降沿有效;写操作时,高电平有效7~14DB0~DB7I/OMPU与模块之间的数据传送通道,4位总线模式下D0~D3脚断开15LED+--背光电源正(+5V)16LED---背光电源地(0V)—38— 黑龙江八一农垦大学毕业设计(论文)本设计用的背光的LCD1602,它硬件电路连接如下(图5)。由于它的液晶显示对比调整端接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”),所以使用时通过一个10K的电位器调整对比度,其中R1为对比度调节电阻:图5LCD16023.4温度采集电路设计1.DS18B20简介温度传感器DS18B20是一种新型的“一线器件”,其体积更小、更适用于多种场合、且适用电压更宽、更经济。温度测量范围为-55~+125摄氏度,可编程为9位~12位转换精度,测温分辨率可达0.0625摄氏度,分辨率设定参数以及用户设定的报警温度存储在EEPROM中,掉电后依然保存。被测温度用符号扩展的16位数字量方式串行输出;其工作电源既可以在远端引入,也可以采用寄生电源方式产生;多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。详细引脚功能描述如表4:表4 DS18B20详细引脚功能描述序号名称引脚功能描述1GND地信号2DQ数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源。3VDD可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。—38— 黑龙江八一农垦大学毕业设计(论文)DS18B20最大的特点是单总线数据传输方式,DS18B20的数据I/O均由同一条线来完成。DS18B20的电源供电方式有2种:外部供电方式和寄生电源方式。这里用的是外部供电方式。DS18B20的测温电路如图6所示。图6温度传感器电路2.DS18B20的性能特点DS18B20非常适用与多点、远距离温度检测系统,其性能特点如下:Ø独特的单线接口方式:DS18B20与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。Ø在使用中不需要任何外围元件。Ø可用数据线供电,电压范围:+3.0~+5.5V。Ø测温范围:-55~+125℃。固有测温分辨率为0.5℃。Ø通过编程可实现9~12位的数字读数方式。Ø用户可自设定非易失性的报警上下限值。Ø支持多点组网功能,多个DS18B20可以并联在惟一的三线上,实现多点测温。Ø负压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。3.5按键电路设计单片机的按键输入一般可分为简单的独立式按键输入及行列式键盘输入两种。独立式键盘输入适合于按键输入不多的情况,具有占用口线较少、软件编写简单容易等特点。通常所用的按键为轻触机械开关,正常情况下按键的接点是断开的,当我们按压按钮时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而机械触点在闭合及断开的瞬间均伴随有一连串的抖动,抖动时间的长短由按键的机械特性及操作人员按键动作决定,一般为5ms~20ms;按键稳定闭合时间的长短是由操作人员的按键按压时间长短决定的,一般为零点几秒至数秒不等。本设计中输入按键只有3个,一个为“输入使能键”,一个为“减法键”,另一个为“加法键”。欲输入设定值时,按一下“输入使能键”,程序进入设定状态,再按“加减法键”,可选择对预设温度高低进行调整,按一下“—38— 黑龙江八一农垦大学毕业设计(论文)输入使能键”进入设定状态,再按一下换下一个粮库;长按“输入使能键”程序即退出设定状态,进入工作运行。图7按键电路3.6电源电路设计电源电路是给电子设备提供必要的电源能力的电路,就输入和输出而言,在集成电路中的主要采用的是交流220V,50Hz的市电转换为直流电。该部分电路由降压、整流、滤波、稳压四部分组成。应当说明的是,尽管有很多型号的7805三端稳压集成芯片,其标称最大输出电流均为1.5A,但是在实际应用中,该最大输出电流值往往取决于两个方面:(1)足够的散热面积;(2)不同的生产厂家。按照许多开发者的经验,ST公司的7805三端稳压块能接近标准称值。在设计中,必须保证7805的输入电压和输出电压的压差大于2.5V。否则会失去稳压能力。同时考虑到功耗,增加芯片的温升,不利于安全。因此,选用9V。当交流电源失电或撤消试销时,电压为6V的直流电源通过二极管投入作用,硅二极管的导通电压降约为0.2V,因此满足系统电源要求。图8电源电路3.7本章小结本章介绍了系统的各个硬件部分,其中对报警电路、显示电路、温度采集电路、按键电路和电源电路进行了逐一介绍,明白了各电路与单片机是怎样连接的,还有各电路的自身的电路结构和特点。下面对本设计的软件部分进行介绍,实现软硬件的结合。—38— 黑龙江八一农垦大学毕业设计(论文)4软件设计部分4.1主程序主程序的主要功能是负责对系统的温度检测、显示温度、检测报警等,主程序流程见下图(图9)。开始初始化DS18B20设定温度上限显示当前温度判断当前温度值否超过设定温度上限是分析数据启动声光报警人工介入并记录数据图9主程序流程图软件采用C语言编程,现在C语言可移植性比较好,通用性强,便于理解,操作简单,比较受欢迎的。—38— 黑龙江八一农垦大学毕业设计(论文)4.2LCD1602液晶显示程序设计1602液晶模块内部的控制器共有11条控制指令,如表5所示:表5控制命令表序号指令RSR/WD7D6D5D4D3D2D1D01清显示00000000012光标返回000000001*3置输入模式00000001I/DS4显示开/关控制0000001DCB5光标或字符移位000001S/CR/L**6置功能00001DLNF**7置字符发生存贮器地址0001字符发生存贮器地址8置数据存贮器地址001显示数据存贮器地址9读忙标志或地址01BF计数器地址10写数到CGRAM或DDRAM)10要写的数据内容11从CGRAM或DDRAM读数11读出的数据内容1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)Ø指令1:清显示,指令码01H,光标复位到地址00H位置。Ø指令2:光标复位,光标返回到地址00H。Ø指令3:光标和显示模式设置I/D:光标移动方向,高电平右移,低电平左移S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。Ø指令4:显示开关控制。D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示C:控制光标的开与关,高电平表示有光标,低电平表示无光标B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。Ø指令5:光标或显示移位S/C:高电平时移动显示的文字,低电平时移动光标。Ø指令6:功能设置命令DL:高电平时为4位总线,低电平时为8位总线N:低电平时为单行显示,高电平时双行显示F:低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。Ø指令7:字符发生器RAM地址设置。Ø指令8:DDRAM地址设置。Ø指令9:读忙信号和光标地址BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。Ø指令10:写数据。Ø指令11:读数据。—38— 黑龙江八一农垦大学毕业设计(论文)与HD44780相兼容的芯片时序表(表6):表6基本操作时序表读状态输入RS=L,R/W=H,E=H输出D0—D7=状态字写指令输入RS=L,R/W=L,D0—D7=指令码,E=高脉冲输出无读数据输入RS=H,R/W=H,E=H输出D0—D7=数据写数据输入RS=H,R/W=L,D0—D7=数据,E=高脉冲输出无读写操作时序如图10和图11所示:图10读操作时序图11写操作时序—38— 黑龙江八一农垦大学毕业设计(论文)4.3温度传感器程序设计数字温度传感器DS18B20是系统设计的主要环节,它实时监测环境的温度,由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20内部的低温度系数振荡器是一个振荡频率随温度变化很小的振荡器,为计数器1提供一频率稳定的计数脉冲。高温度系数振荡器是一个振荡频率对温度很敏感的振荡器,为计数器2提供一个频率随温度变化的计数脉冲。DS18B20内部的比较器以四舍五入的量化方式确定温度寄存器的最低有效位。在计数器2停止计数后,比较器将计数器1中的计数剩余值转换为温度值后与0.25℃进行比较,若低于0.25℃,温度寄存器的最低位就置0;若高于0.25℃,最低位就置1;若高于0.75℃时,温度寄存器的最低位就进位然后置0。这样,经过比较后所得的温度寄存器的值就是最终读取的温度值了,其最后位代表0.5℃,四舍五入最大量化误差为±1/2LSB,即0.25℃。温度寄存器中的温度值以9位数据格式表示,最高位为符号位,其余8位以二进制补码形式表示温度值。测温结束时,这9位数据转存到暂存存储器的前两个字节中,符号位占用第一字节,8位温度数据占据第二字节。DS18B20工作过程一般遵循以下协议:初始化-ROM操作命令-存储器操作命令-处理数据。开始DS18B20初始化读温度子程序读出温度格式化,并转为压缩BCD码显示温度图12主程序流程图—38— 黑龙江八一农垦大学毕业设计(论文)DS18B20测量温度时使用特有的温度测量技术。DS18B20内部的低温度系数振荡器能产生稳定的频率信号;同样的,高温度系数振荡器则将被测温度转换成频率信号。当计数门打开时,DS18B20进行计数,计数门开通时间由高温度系数振荡器决定。芯片内部还有斜率累加器,可对频率的非线性度加以补偿。测量结果存入温度寄存器中。一般情况下的温度值应该为9位,但因符号位扩展成高8位,所以最后以16位补码形式读出。4.4蜂鸣器程序设计设计采用有源蜂鸣器,当蜂鸣器通电时就会引发振荡源震动,从而发出报警的尖叫声,为了使蜂鸣器发出的声音更大,本设计采用PNP三极管8550驱动蜂鸣器。具体程序代码详见附录程序。4.5本章小结本章介绍了设计的主要软件流程,首先主要对LCD1602液晶显示模块、DS18B20温度传感器、蜂鸣器等各个模块的流程及编程进行了介绍,然后对各个模块进行了流程图的说明,通过流程图可以了解到本设计的编程思想,并且学出具体的代码程序,最后实现了软硬件的结合,显示本设计的要求,完成最终的设计。—38— 结论结论通过几个月的学习和研究,最终完成了粮库温度检测报警系统,并且做出了实物。温度和我们的生活息息相关,本设计利用STC89C52芯片控制温度传感器DS18B20,再辅之以部分外围电路实现对环境温度的测控,性能稳定,精度教高,而且扩展性能很强大。由于DS18B20支持单总线协议,我们还可以将多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用较少的微处理器的端口就可以实现多点测温监控系统。由于DS18B20的测量精度只有±0.5度,往往很多场合需要更加精确的温度,在所测温度精度不变的基础上必须对数据进行校正。由于DS18B20是基于带隙结构的数字式温度传感器,PN结增量电压正比于IC绝对温度(PTAT),它的测温精度较高,但存在着一定的误差。不过,其误差在时间和外部环境变化的条件下,保持相当高的稳定性。在本次设计的过程中,我发现很多的问题,这次设计真的让我长进了很多,针对温度传感器DS18B20芯片的原理我通过网络资料对其有了更深刻的理解,还有单片机STC89C52的原理应用以及与周边系统的连接融合环节有了实质性的突破。由于时间和个人能力的关系,本设计也存在着一些不足和缺陷,需要进一步完善。对于本设计中的一些缺陷和不足之处,希望各位老师给予指正,并提出宝贵意见。—38— 参考文献参考文献[1]孙育才.单片微型计算机及其应用[M].东南大学出版社,2004[2]沈德金,陈粤初.单片机接口电路与应用程序实例[M].北京:北京航天航空大学出版社,1990[3]李克,吴伟力。智能化温度检测及控温系统,集美大学学报(自然科学版)1994年01期[4]陈雪波,杨东伟。《粮库粮温监测系统开发与应用》仪器仪表学报 2002年S1期[5]何金田.传感器原理与应用课程设计指南.哈尔滨工业大学出版社[6]田勇利,李仲平。《粮食仓库计算机测温中的通讯技术》郑州工程学院学报1996年03期[7]姜忠良,陈秀云.温度的测量与控制[M].北京:清华大学出版社,2005[8]赵继文,何玉彬.传感器与应用电路设计[M].北京:科学出版社,2001[9]吕泉.现代传感器原理与应用[M].北京:清华大学出版社,2002.[10]张迎新.单片机初级教程.北京.北京航空航天大学出版社,2001[11]李朝青.单片机原理及接口技术(简明修订版)[M].北京:北京航空航天大学出版社,1998[12]阎石.数字电子技术基础(第三版)[M].北京:高等教育出版社,1989.[13]AtmelCorporation.8-bitMicrocontrollerwith8KBytesIn-SystemProgrammableFlash-AT89S52[14]Maximcorp.DS18B20http://www.maxim-ic.com.2005[15]Motorolacorp.TemperatureSensorDeviceData.1994[16]DS18B20.PDF.MAXIMINTEGRATEDPRODUCTS.1997[17]NationnalSemiconductorsCorp.DataAcquisitionDatabookSupplement.1992[18]DanSuciu,.GottfriedVosen.TheWorldWideWebanddatabasesSpringer.2001[19]DavidKarlins.BuildYourOwnWebSite[M].McGraw-HillOsborneMedia.2003[20]AT89S51-24PC.PDF.ATMELCORPORATION.2004—38—致谢—38— 致谢致谢毕业设计是对我们知识运用能力的一次全面的考核,也是对我们进行科学研究基本功的训练,培养我们综合运用所学知识独立地分析问题和解决问题的能力,为以后撰写专业学术论文和工作打下良好的基础。本次设计能够顺利完成,首先我要感谢我的母校-黑龙江八一农垦大学,是她为我们提供了学习知识的土壤,使我们在这里茁壮成长。其次我要感谢信息技术学院的老师们,他们不仅教会我们专业方面的知识,而且教会我们做人做事的道理;尤其要感谢本次设计中给我大力支持和帮助的韩静老师,也就是我的指导老师,每有问题韩静老师总是耐心的解答,使我能够充满热情的投入到毕业设计中去,还要感谢我的同学们他们热心的帮助,最后还要感谢相关资料的编著和给予我们支持的社会各界人士,感谢你们为我们提供一个良好的环境,使本次设计圆满完成。—38—附录—38— 附录附录1.主原理图—38— 附录2.主程序#include#include#defineucharunsignedchar#defineuintunsignedintsbitRS=P2^0;sbitRW=P2^1;sbitEN=P2^2;sbitDQ=P3^0;sbitkey1=P3^3;sbitkey2=P3^4;sbitkey3=P3^5;sbitbeep=P3^6;sbitled=P3^7;ucharcodestr1[]={0x28,0x16,0x50,0x06,0x04,0x00,0x00,0xF5};//ROM1ucharcodestr2[]={0x28,0xA6,0x5D,0x06,0x04,0x00,0x00,0x1E};//ROM2ucharcodestr3[]={0x28,0x2E,0x6C,0x06,0x04,0x00,0x00,0x1C};//rom3ucharcodestr4[]={0x28,0x04,0x23,0x06,0x04,0x00,0x00,0xE3};//rom4ucharcodetable[8]={0x0c,0x12,0x12,0x0c,0x00,0x00,0x00,0x00};//摄氏温度符号ucharcodeeyn[]="0123456789";ucharnum1,num,num2;uintzhengchang[4];uchardatadisdata[5];uinttvalue;//温度值uchartflag;//温度正负标志intyushe;ucharge,shi,baoj;/*************************lcd1602程序**************************/voiddelay1ms(uintms)//延时1毫秒(不够精确的)—38— 附录{uinti,j;for(i=0;i>=1;DQ=1;//给脉冲信号if(DQ)dat|=0x80;delay_18B20(10);}return(dat);}voidds1820wr(uchardat)/*写数据*/{uchari=0;for(i=0;i<8;i++){DQ=0;DQ=dat&0x01;delay_18B20(10);DQ=1;dat>>=1;}}voidb20_Matchrom(uchara)//匹配ROM{charj;ds1820wr(0x55);//发送匹配ROM命令if(a==1)—38— 附录{for(j=0;j<8;j++)ds1820wr(str1[j]);//发送18B20的序列号,先发送低字节}if(a==2){for(j=0;j<8;j++)ds1820wr(str2[j]);//发送18B20的序列号,先发送低字节}if(a==3){for(j=0;j<8;j++)ds1820wr(str3[j]);//发送18B20的序列号,先发送低字节}if(a==4){for(j=0;j<8;j++)ds1820wr(str4[j]);//发送18B20的序列号,先发送低字节}}uintread_temp(ucharz)/*读取温度值并转换*/{uchara,b;floattt;ds1820rst();ds1820wr(0xcc);//读序列号ds1820rst();if(z==1){b20_Matchrom(1);//匹配ROM1}if(z==2){b20_Matchrom(2);//匹配ROM2}if(z==3){b20_Matchrom(3);//匹配ROM3}—38— 附录if(z==4){b20_Matchrom(4);//匹配ROM4}ds1820wr(0x44);//*启动温度转换*/delay1ms(5);ds1820rst();ds1820wr(0xcc);//读序列号ds1820rst();if(z==1){b20_Matchrom(1);//匹配ROM1}if(z==2){b20_Matchrom(2);//匹配ROM2}if(z==3){b20_Matchrom(3);//匹配ROM3}if(z==4){b20_Matchrom(4);//匹配ROM4}ds1820wr(0xbe);//*读取温度*/a=ds1820rd();b=ds1820rd();tvalue=b;tvalue<<=8;tvalue=tvalue|a;if(tvalue<0x0fff)tflag=0;else{tvalue=~tvalue+1;tflag=1;}tt=tvalue*0.625;—38— 附录//tvalue=tt*10;tvalue=tt;return(tvalue);}voidbaojing(){TMOD=0x11;TH0=(65536-500)/256;//装初值TL0=(65536-500)%256;EA=1;ET0=1;TR0=1;}voidkey_itre(){TMOD=0x11;TH1=(65536-50000)/256;TL1=(65536-50000)%256;EA=1;ET1=1;TR1=1;}ucharkey_zhi(){ucharkey_num=0;if(!key1){num2=0;num=0;delay1ms(10);if(!key1){key_itre();while(!key1){if(num>1){key_num=1;while(!key1);}}if(key_num!=1){EA=0;ET1=0;TR1=0;—38— 附录key_num=2;}}}if(!key2){delay1ms(10);if(!key2){delay1ms(10);if(!key2){while(!key2);key_num=3;}}}if(!key3){delay1ms(10);if(!key3){delay1ms(10);if(!key3){while(!key3);key_num=4;}}}returnkey_num;}voidkey(){ucharkey_val,j;uchari=0;uchara[3];key_val=key_zhi();if(1==key_val){key_val=0;}elseif(2==key_val){key_val=0;wr_com(0x01);while(1){—38— 附录wr_com(0x80);wr_dat(eyn[i+1]);wr_dat(":");//upperwr_dat("u");wr_dat("p");wr_dat("p");wr_dat("e");wr_dat("r");wr_dat("");wr_dat("T");wr_dat("=");//zhengchang[4]//if(zhengchang[i]>99){a[0]=zhengchang[i]/100;a[1]=zhengchang[i]%100/10;a[2]=zhengchang[i]%10;for(j=0;j<3;j++){if(a[j]!=0){for(;j<3;j++){wr_dat(eyn[a[j]]);}break;}}key_val=key_zhi();if(1==key_val){key_val=0;wr_com(0x01);return;}if(2==key_val){key_val=0;i++;if(i>3)i=0;}if(3==key_val){zhengchang[i]=zhengchang[i]-1;}if(4==key_val){zhengchang[i]=zhengchang[i]+1;}}—38— 附录}}voidmain(){ucharbj_flag=0;uinttemp[4];ucharxs_flag=0;ucharflag[4];uchardisdata[5];uchari;lcd_init();//初始化显示wr_com(0x80);wr_dat(eyn[1]);wr_com(0x89);wr_dat(eyn[2]);wr_com(0x80+0x40);wr_dat(eyn[3]);wr_com(0x80+0x49);wr_dat(eyn[4]);for(i=0;i<4;i++){temp[i]=read_temp(i+1);zhengchang[i]=30;flag[i]=0;}delay1ms(800);while(1){key();for(i=0;i<4;i++){flag[i]=0;}temp[0]=read_temp(1);//tvalue;temp[1]=read_temp(2);//temp[1]=tvalue;temp[2]=read_temp(3);//temp[2]=tvalue;temp[3]=read_temp(4);//temp[3]=tvalue;for(i=0;i<4;i++){if(temp[i]>(zhengchang[i]*10)){flag[i]=1;xs_flag=1;—38— 附录if(0==bj_flag){baojing();bj_flag++;}}if(0==xs_flag){EA=0;ET0=0;TR0=0;led=1;beep=1;bj_flag=0;}}xs_flag=0;for(i=0;i<4;i++){if(flag[i]==1){xs_flag=1;break;}}if(xs_flag==0){for(i=0;i<4;i++){flag[i]=1;}}elsexs_flag=0;disdata[0]=temp[0]/1000;//百位数disdata[1]=temp[0]%1000/100;//十位数disdata[2]=temp[0]%100/10;//个位数disdata[3]=temp[0]%10;//小数位if(flag[0]==1){wr_com(0x80);wr_dat(eyn[1]);wr_dat(":");for(i=0;i<3;i++){if(0==disdata[i]){wr_dat("");—38— 附录}else{wr_dat(eyn[disdata[i++]]);for(;i<3;i++){wr_dat(eyn[disdata[i]]);}break;}}if(0==disdata[3]){wr_dat("");wr_dat("");}else{wr_dat(".");wr_dat(eyn[disdata[3]]);}}else{wr_com(0x80);for(i=0;i<8;i++){wr_dat("");}}disdata[0]=temp[1]/1000;//百位数disdata[1]=temp[1]%1000/100;//十位数disdata[2]=temp[1]%100/10;//个位数disdata[3]=temp[1]%10;//小数位if(flag[1]==1){wr_com(0x80+0x09);wr_dat(eyn[2]);wr_dat(":");for(i=0;i<3;i++){if(0==disdata[i]){wr_dat("");}else{wr_dat(eyn[disdata[i++]]);for(;i<3;i++){wr_dat(eyn[disdata[i]]);}break;—38— 附录}}if(0==disdata[3]){wr_dat("");wr_dat("");}else{wr_dat(".");wr_dat(eyn[disdata[3]]);}}else{wr_com(0x89);for(i=0;i<8;i++){wr_dat("");}}disdata[0]=temp[2]/1000;//百位数disdata[1]=temp[2]%1000/100;//十位数disdata[2]=temp[2]%100/10;//个位数disdata[3]=temp[2]%10;//小数位if(flag[2]==1){wr_com(0x80+0x40);wr_dat(eyn[3]);wr_dat(":");for(i=0;i<3;i++){if(0==disdata[i]){wr_dat("");}else{wr_dat(eyn[disdata[i++]]);for(;i<3;i++){wr_dat(eyn[disdata[i]]);}break;}}if(0==disdata[3]){wr_dat("");wr_dat("");}else{—38— 附录wr_dat(".");wr_dat(eyn[disdata[3]]);}}else{wr_com(0x80+0x40);for(i=0;i<8;i++){wr_dat("");}}disdata[0]=temp[3]/1000;//百位数disdata[1]=temp[3]%1000/100;//十位数disdata[2]=temp[3]%100/10;//个位数disdata[3]=temp[3]%10;//小数位if(flag[3]==1){wr_com(0x80+0x49);wr_dat(eyn[4]);wr_dat(":");for(i=0;i<3;i++){if(0==disdata[i]){wr_dat("");}else{wr_dat(eyn[disdata[i++]]);for(;i<3;i++){wr_dat(eyn[disdata[i]]);}break;}}if(0==disdata[3]){wr_dat("");wr_dat("");}else{wr_dat(".");wr_dat(eyn[disdata[3]]);}}else{wr_com(0x80+0x49);for(i=0;i<8;i++){—38— 附录wr_dat("");}}}}voidt0t()interrupt1{TH0=(65536-500)/256;TL0=(65536-500)%256;num1++;beep=~beep;if(num1>200){led=~led;num1=0;}}voidt1t()interrupt3{TH1=(65536-50000)/256;TL1=(65536-50000)%256;num2++;if(num2>=20){num2=0;num++;}}—38— 黑龙江八一农垦大学毕业论文(设计)成绩单院系信息技术学院专业电气工程及其自动化入学时间2008年9月学号200840学生姓名范班级08电气周数16起止日期2011.12.15—2011.05.21指导教师职称副教授论文(设计)题目粮库温度检测报警设计指导教师评语指导教师签名年月日评阅人评语评阅人签名年月日答辩小组评语答辩小组负责人签名年月日评分指导教师评阅人答辩小组平均分五级制等级备注:本成绩单一式二份,一份装订在毕业论文(设计)中,一份入学生学籍档案。'