毕业设计论文-基于单片机at89c52的大棚温度控制系统内容摘要:

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