基于单片机at89c52的大棚温度控制系统_毕业设计(编辑修改稿)内容摘要:
4 D3 D2 D1 D0 1 清显示 0 0 0 0 0 0 0 0 0 1 2 光标返回 0 0 0 0 0 0 0 0 1 * 3 置输入模式 0 0 0 0 0 0 0 1 I/D S 4 显示开 /关控制 0 0 0 0 0 0 1 D C B 5 光标或字符移位 0 0 0 0 0 1 S/C R/L * * 6 置功能 0 0 0 0 1 DL N F * * 7 置字符发生存贮器地址 0 0 0 1 字符发生存贮器地址 8 置数据存贮器地址 0 0 1 显示数据存贮器地址 9 读忙标志或地址 0 1 BF 计数器地址 10 写数到 CGRAMDDRAM) 1 0 要写的数据内容 11 CGRAM 或 DDRAM 读数 1 1 读出的数据内容 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:写数据。 9 指令 11:读数据。 LCD1602 读写 时序 如 表 所示 : 表 基本操作时序表 读状态 输入 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=高脉冲 输出 无 直流马达 电动马达,又称为马达或电动机,是一种将电能转化成机械能,并可再使用机械能产生动能,用来驱动其他装置的电气设备。 电动机种类非常繁多,但可大致分为交流电动机及 直流电动机以用于不同的场合。 马达工作的原理 马达的旋转原理的依据为佛来明左手定则,当一导线置放于磁场内,若导线通上电流,则导线会切割磁场线使导线产生移动。 电流进入线圈产生磁场,利用 电流的磁效应 ,使电磁铁在固定的磁铁内连续转动的装置,可以将电能转换成力学能。 与永久磁铁或由另一组线圈所产生的磁场互相作用产生动力 直流马达的原理是定子不动,转子依相互作用所产生作用 力的方向运动 [7]。 电枢 :可以绕轴心转动的软铁芯缠绕多圈线圈。 场磁铁 :产生磁场的强力永久磁铁或电磁铁。 集电环 :线圈约两端接至两片半圆形的集电环,随线圈转动,可供改变电流方向的变向器。 每转动半圈,线圈上的电流方向就改变一次。 电刷 :通常使用碳制成,集电环接触固定位置的电刷,用以接至电源。 马达的基本构造 电动机的种类很多,以基本结构来说,其组成主要由定子和转子所构成。 定子在空间中静止不动,转子则可绕轴转动,由轴承支撑。 定子与转子之间会有一定空气间隙,以确保转子能自由转动。 定子与转子 绕上线圈,通上电流产生磁场,就成为电磁铁,定子和转子其中之一亦可为 永久磁铁 [8]。 蜂鸣器 蜂鸣器是一种一体化结构的电子讯响器。 蜂鸣器主要分为压电式蜂鸣器和电磁化蜂鸣器两种类型。 本系统采用的是电磁式蜂鸣器 [9]。 电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动腊片及外壳等组成。 接通电 10 源后,振荡器产生的音频信号电流通过电磁铁圈,使电磁铁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。 蜂鸣器发声原理是电流通过电磁铁圈,使电磁线圈产生磁场来驱动振动膜发声的。 程序中改变单片机引脚输出波形的 频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。 另外,改变输出电平的高低电平占空比,则可以控制蜂鸣器的声音大小。 11 第 3 章 系统的硬件组成电路设计 系统的硬件组成部分包括:主控制器 AT89C52单片机、温度传感器 DS18B显示电路 LCD160马达、报警装置等构成。 AT89C52连接各模块的主控制端口,初步选定将要运用到的电子元器件,再用 Protues绘制原理图,再根据原理图捍接电路板。 系统总硬件设计 首先对硬件系统 18B20 定义端口为 , 和 P0 口控制液晶LCM1602 的显示,定义端口 为马达控制端口, 为喇叭控制端口。 首先对温度采集,将采集到的温度转换数字,采集到的温度由 LCM 液晶显示屏显示。 再将采集到的温度所属软件设置的哪个范围,而控制 的电平输出。 电路原理图如 31 所示: 图 31 电路原理图 电路原理图用 Protues 软件绘制而成。 用 Protues 软件绘制电路原理图方便,快捷。 Protues 软件有丰富的元件库,智能的器件搜索,智能化的连线,可输 出高质量的图纸。 电路原理图清晰明了 [9]。 时钟电路 AT89C52 芯片内部有一个高增益反向放大器,用于构成震荡器。 反向放大 12 器的输入端为 XTAL1,输出端为 XTAL2。 在 TXAL1 和 XTAL2 两端跨接由石英晶体及两个电容构成的自激震荡器 [10],如图 32 所示。 电容器 C1 和 C2 取 22pF,选用不同的电容量对震荡频率有微调作用。 但石英晶体本身的标定频率才是单片机震荡频率的决定因素。 图 32 时钟电路 时钟电路中,两个电容都选择 22pF 的电容,电容各一端接与晶振相连,各一端接地。 选择 的晶振是频率为 12MHZ。 此模块 就是产生象时钟一样准确的振荡电路。 AT89C52 的复位电路 AT89C52 单片机通常采用上电自动复位和开关手动复位两种方式。 本系统采用上电复位电路,如图 33 所示,所谓上电复位,是指单片机只要一上电,便自动地进入复位状态。 在通电瞬间,电容 C 通过电阻 R 充电, RST 端出现正脉冲,用以复位 [10]。 图 33 复位电路 复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定 后,撤销复位信号。 为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关 或电源插头分 合过程中引起的抖动而影响复位。 RC 复位电路可以实现上述基本功能, 但解决不了电源毛刺和电源缓慢下降等问题,而其 调整 RC 常数改变延时会令驱动能力变差。 单总线数字温度传感器 DS18B20 检测电路 DQ 为数据输入 /输出引脚,连接。 开漏单总线接口引脚。 当被用着在寄生电源下,也可以向器件提供电源, GND 为地信号; VCC 为电源信号。 图 34为 DS18B20 检测电路。 13 图 34 DS18B20检测电路 LCD1602 显示模块 用 AT89C52 的 P0 口作为数据线,用 、 、 分别作为 LCD 的 E、R/W、 RS。 其中 E 是下降沿触发的片选信号,连接 , R/W 是读写信号,连接 , RS 是寄存器选择信号,连接。 图 35 为 LCD1602 的硬件连接。 图 35 LCD1602 的硬件连接 VEE 用连接一阻值为 10K 的电阻,主要用于调节对比度的调整。 接正电源时对比度最落,接地电源时,对比度最高。 对比度过高时,会产生“鬼影”。 因此连接一 10K 的电阻用以调整。 当 P0 口 作 为 I/O 用时需要上拉电阻 ,如图 接一排阻,用于上拉 [11]。 驱动电路 系统使用的是直流马达, 包含周围磁场、电刷、整流子等元件,电刷和整流子將外部所供应的直流电源,持续地供应给转子的线圈,並适时地改变电流的方向,使转子能以同一方向持续旋转。 直流马达的优点有速度调整容易,启动转矩较大等,但是电刷与整流子保养维修不易。 直流马达广泛的用在消费电子产品及玩具,如电动刮胡刀、录音机、 CD 唱机等,而大输出功率的直流电动机则是用在电车,快速电梯,工作母机等。 图 36 为硬件连接图。 14 图 36 驱动电路 图中三极管采用的是 S9012,用于放大电流。 基极接 口,用于控制输出信号。 集电极按电源正极,发射极接马达正极。 三极管 S9012 三极管最基本的作用是放大作用,它可以把微弱的电信号变成一定强度的信号,当然这种转换仍然遵循能量守恒,它只是把电源的能量转换成信号的能量罢了。 三极管有一个重要参数就是电流放大系数β。 当三极管的基极上加一个微小的电流时,在集电极上可以得到一个是注入电流β倍的电流,即集电极电流。 集电极电流随基极电流的变化而变化,并且基极电流很小的变化可以引起集电极电流很大的变化,这就是三极管在此 处的作用。 用于 口输出的微弱信号经过放大,输出到马达中,这样就可以很好的控制马达了。 报警电路 系统采用的报警器件是蜂鸣器,用引脚 控制。 如图 37 所示 图 报警电路 蜂鸣器和普通扬声器相比,最重要一个特点是只要按照极性要求加上合适的直流电压,就可以发出固有频率的声音,因此使用起来比扬声器简单。 由此可知,蜂鸣器的控制和 LED 的控制对单片机而言是没有区别的。 15 第 4 章 系统软件的设计 一个应用系统要完成各项功能,首先必须有较完善的硬件做保证。 同时 还必须得到相应设计合理的软件的支持,尤其是微机应用高速发展的今天,许多由硬件完成的工作,都可通过软件编程而代替。 甚至有些必须采用很复杂的硬件电路才能完成的工作,用软件编和有时会变得很简单。 因此充分利用其内部丰富的硬件资源和软件资源。 程序设计语言有三种:机器语言、汇编语言、高级语言。 本系统运用的是高级语言所编写,也就是 C 语言。 主程序设计 从软件的功能不同可分为四大类:一是检测软件,它是用来检测温度。 二是显示部分,用来显示所检测到的温度。 三是调控部分,用来控制马达的转速。 四是当温度大于 35℃,蜂鸣器发 出报警信号。 每一个执行软件也就是一个小的功能执行模块。 这里将各执行模块一一列出,并为每一个执行模块进行功能定义。 图 41 为软件设计流程图。 图 41 软件设计流程图 开 始 18B20 温度检测 初始化 马达带动风扇 LCD1602 显示温度 发出报 警信号 结 束 温度大于 20℃ 温度大于 35℃ 16 温度检测 读取温度设计 DSl8B20 可以从单总线获取电源,当信号线为高电平时,将能量贮存在内部电容器中;当单信号线为低电平时,将该电源断开,直到信号线变为高电平重新接上寄生电源为止。 此外,还可外接 5 V 电源,给 DS18B20 供电 [12]。 图 42 图 42 18B20读取温度流程图 读取温度子程序的主要功能是读出 RAM 中的 9 个字节,在读出时需进行CRC 校验,校验有错时不进行温度数据的改写。 DS18B20 的各个命令对时序的要求特别严格,所以必须按照所要求的时序才能达到预期的目的,同时,要注意读进来的是高低位在后,低位在前,共 12 位数,小数 4 位,整数 7 位,还有一位符号位。 读取温度的主程序如下: unsigned int ReadTemperature(void) { unsigned char a=0。 DS18B20 的初始化 跳过读序列号的操作 读取温度寄存器 启动温度转换 跳过读序列号的操作 开 始 DS18B20 的初始化 RET LOW低八位 HIGH高八位 17 unsigned int b=0。 unsigned int t=0。 Init_DS18B20()。 WriteOneChar(0xCC)。 // 跳过读序号列号的操作 WriteO。基于单片机at89c52的大棚温度控制系统_毕业设计(编辑修改稿)
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。