基于51单片机的温度控制系统的设计.pdf
《基于51单片机的温度控制系统的设计.pdf》由会员分享,可在线阅读,更多相关《基于51单片机的温度控制系统的设计.pdf(32页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、贵州大学课程设计 1 基于单片机的温度控制系统设计 1.设计要求 要求设计一个温度测量系统,在超过限制值的时候能进行声光报警。具体设计要求如下:数码管或液晶显示屏显示室内当前的温度;在不超过最高温度的情况下,能够通过按键设置想要的温度并显示;设有四个按键,分别是设置键、加 1 键、减 1 键和启动/复位键;DS18B20 温度采集;超过设置值的5时发出超限报警,采用声光报警,上限报警用红灯指示,下限报警用黄灯指示,正常用绿灯指示。2.方案论证 根据设计要求,本次设计是基于单片机的课程设计,由于实现功能比较简单,我们学习中接触到的 51 系列单片机完全可以实现上述功能,因此可以选用AT89C51
2、 单片机。温度采集直接可以用设计要求中所要求的 DS18B20。报警和指示模块中,可以选用 3 种不同颜色的 LED 灯作为指示灯,报警鸣笛采用蜂鸣器。显示模块有两种方案可供选择。方案一:使用 LED 数码管显示采集温度和设定温度;方案二:使用 LCD 液晶显示屏来显示采集温度和设定温度。LED 数码管结构简单,使用方便,但在使用时,若用动态显示则需要不断更改位选和段选信号,且显示时数码管不断闪动,使人眼容易疲劳;若采用静态显示则又需要更多硬件支持。LCD 显示屏可识别性较好,背光亮度可调,而且比 LED 数码管显示更多字符,但是编程要求比 LED 数码管要高。综合考虑之后,我选用了 LCD
3、显示屏作为温度显示器件,由于显示字符多,在进行上下限警戒值设定时同样可以采集并显示当前温度,可以直观的看到实际温度与警戒温度的对比。LCD 显示模块可以选用 RT1602C。贵州大学课程设计 2 3.硬件设计 根据设计要求,硬件系统主要包含 6 个部分,即单片机时钟电路、复位电路、键盘接口模块、温度采集模块、LCD 显示模块、报警与指示模块。其相互联系如下图 1 所示:图 1 硬件电路设计框图 3.1 单片机时钟电路 形成单片机时钟信号的方式有内部时钟方式和外部时钟方式。本次设计采用内部时钟方式,如图2 所示。单片机内部有一个用于构成振荡器的高增益反相放大器,引脚 XTAL1 和XTAL2 分
4、别为此放大器的输入端和输出端,其频率范围为 1.212MHz,经由片外晶体振荡器或陶瓷振荡器与两个匹配电容一起形成了一个自激振荡电路,为单片机提供时钟源。3.2复位电路 复位是单片机的初始化操作,其作用是使 CPU 和系统中的其他部件都处于一个确定的初始状态,并从这个状态开始工作,以防止电源系统不稳定造成 CPU 工作不正常。在系统中,有时会出现工作不正常的情况,为了从异常状态中恢复,同单片机时钟电路 复位电路 键盘接口模块 温度采集模块 单 片 机 LCD 显示模块 报警与指示模块 图 2 单片机内部时钟方式电路 图 3 单片机按键复位电路 贵州大学课程设计 3 时也为了系统调试方便,需要设
5、计一个复位电路。单片机的复位电路有上电复位和按键复位两种形式,因为本次设计要求需要有启动/复位键,因此本次设计采用按键复位,如图 3。复位电路主要完成系统的上电复位和系统在运行时用户的按键复位功能。3.3 键盘接口模块 本次设计需要的按键有 4 个,除去一个复位按键外,还有 3 个功能按键,因此选择独立式键盘。如图 4,将键盘直接与单片机 P1 口的 P1.0、P1.1、P1.2相连。3 个键设计思路如下:当按下 S1键时,系统进入上下限警戒值调整状态;当第一次按下S1 键时,进行上限警戒值设定,当第二次按下 S1 键时,进行下限警戒值设定,当第三次按下 S1 键时,回到正常工作状态。在警戒值
6、调整状态下,按下 S2 键,上下限警戒值加 1,按下 S3 键,上下限警戒值减 1,正常工作状态下,按下 S2 和 S3 键无作用。3.4 温度采集模块 本次设计中的温度传感器使用的是 DALLAS 公司的单总线数字温度传感器DS18B20,这是一种常用的温度传感器,具有体积小、硬件开销低、抗干扰能力强、精度高的特点。DS18B20 采用独特的一线接口,具有只需要一条口线通信多点的能力,简化了分布式温度传感应用,无需外部元件。可用数据总线供电,电压范围为 3.0 V至 5.5V,测量温度的范围为-55至+125,在-10至+85范围内精度为0.5。温度传感器可编程的分辨率为 912位,温度转换
7、为12 位数字格式最大值为750毫秒,用户可定义的非易失性温度报警设置,应用范围包括恒温控制、工业系统、消费电子产品温度计、或任何热敏感系统。由于 DS18B20 是一条口线通信,所以中央微处理器与 DS18B20 只有一个一条口线连接。因为每一个 DS18B20的包含一个独特的序号,多个 DS18B20 可以同时存在于一条总线,这使得温度图 4 键盘接口模块 贵州大学课程设计 4 传感器放置在许多不同的地方。它的用途很多,包括空调环境控制,感测建筑物内温设备或机器,并进行过程监测和控制。图 5 DS18B20 封装及引脚 DS18B20 的核心功能是它的直接读数字的温度传感器。温度传感器的精
8、度为用户可编程的 9、10、11 或 12 位,分别以 0.5,0.25,0.125和 0.0625增量递增。在上电状态下默认的精度为 12 位。DS18B20 启动后保持低功耗等待状态;当需要执行温度测量和 AD 转换时,总线控制器必须发出44h命令。在那之后,产生的温度数据以两个字节的形式被存储到高速暂存器的温度寄存器中,DS18B20 继续保持等待状态。当 DS18B20 由外部电源供电时,总线控制器在温度转换指令之后发起“读时序”,DS18B20 正在温度转换中返回 0,转换结束返回 1。如果 DS18B20 由寄生电源供电,除非在进入温度转换时总线被一个强上拉拉高,否则将不会由返回值
9、。在硬件上,DS18B20 与单片机的连接有两种方法:一种是 VDD 接外部电源,GND 接地,DQ 与单片机的 I/O 口相连;另一种是用寄生电源供电,此时,VDD、GND 接地,DQ 接单片机的 I/O 口。无论是接外部电源还是用内部寄生电源,I/O口线要接 5k 左右的上拉电阻。本次设计中,采用外部电源方式,其连接方式如图 6 所示。单总线 DQ 端接单片机的 P1.7 口,DQ 端接一个 4.7k 的上拉电阻,这样单总线 DQ 在闲置状态时为高电平。图 6 DS18B20 外部电源连接方式 贵州大学课程设计 5 3.5 LCD 显示模块 在本次设计中,使用 RT1602C 字符型液晶显
10、示模块(LCM)来设计当前温度和上下限警戒值的显示电路。RT1602C 字符型液晶显示模块是 16 字2 行的采用 57 点阵图形来显示字符的液晶显示器,采用标准的 16 脚接口,其引脚定义如图 7 所示。引脚号 引脚名 说 明 引脚号 引脚名 说 明 1 GND/Vss 电源地 7 D0 8 位双向数据线 2 Vdd+5V 电源 8 D1 3 VL 液晶显示偏压信号 9 D2 4 RS 数据/命令控制,H/L 10 D3 5 R/W 读/写控制,H/L 11 D4 6 E 使能端 12 D5 15 BLA 背光源正极 13 D6 16 BLK 背光源负极 14 D7 图 7 RT1602C
11、的引脚定义 RT1602C 的内部结构可以分为 3 个部分:LCD 控制器、LCD 驱动器、LCD显示器,其中 LCD 控制器采用的是 HD44780。RT1602C 与单片机的连线如图 8 所示。图 8 RT1602C 与单片机连线 贵州大学课程设计 6 LCM 的数据总线与单片机的 P0 口通过一个上拉电阻排相连,LCM 的三条控制线 RS、RW、EN 分别与单片机的 I/O 口 P2.0、P2.1、P2.2 相连,第 1、2 引脚分别与地、电源相连,第 3 引脚使用一个 10k 的可调电阻对显示屏的明亮进行调整。3.6 报警与指示模块 在本次设计中,采用LED 发光二极管作为系统指示灯,
12、采用蜂鸣器作为报警鸣笛。当温度高于上限警戒值时,点亮红色发光二极管,蜂鸣器发出响声;当温度低于下限警戒值时,点亮黄色发光二极管,蜂鸣器发出响声;温度在正常范围内时,点亮黄色发光二极管。整个报警与指示电路如图 9 所示,其中绿、红、黄色指示灯分别接单片机 P2.0、P2.1、P2.2 口,电平拉低时点亮 LED,蜂鸣器电路接单片机的 P2.7 口,电平拉高时蜂鸣器响。至此便完成了整个硬件电路的设计工作,整个系统的原理图见附录二,系统I/O 分配表如下:I/O 口 功能说明 I/O 口 功能说明 P0.0P0.7 LCM 数据口 P2.1 LCM 读/写控制 P1.0P1.3 键盘输入 P2.2
13、LCM 使能 P1.7 DS18B20 温度采集 P2.4P2.6 LED 信号输出 P2.0 LCM 数据/命令控制 P2.7 报警信号输出 图 9 报警与指示模块 贵州大学课程设计 7 4.软件设计 单片机应用系统的设计中,软件设计占有重要的位置。在本次设计中,根据功能要求,可以把系统程序划分为 5 个模块,即主程序模块、显示模块、温度测量模块、键盘扫描模块、其它子程序模块,如图 10 所示。图 10 软件设计框图 4.1 主程序设计 主程序的内容包括单片机初始化、相关部件初始化和一些其它子程序的调用等。主程序清单如下,程序流程图如图11 所示。/*主程序*/void main(void)
14、P1=0 xff;/初始化 P1 口以便读入 P2|=0 x70;P2&=0 x7f;Temp_set1=90;/上限报警温度初值 90 Temp_set2=10;/下限报警温度初值 10 Delay(500);/延时 500ms 启动 init_LCD();/LCD 初始化 init_18B20();/DS18B20 初始化 Display_str(0,0,str2);/开机界面 Display_str(0,1,str2);/开机界面 Delay(2000);主程序模块 显 示 模 块 温 度 测 量 模 块 键 盘 扫 描 模 块 其 它 子 程 序 开始 初始化温度传感器 初始化单片机
15、初始化显示模块 键盘扫描 读取温度 显示字形转换 显示 图 11 主程序流程图 贵州大学课程设计 8 Display_str(0,0,str0);Display_str(0,1,str1);while(1)Key_scan();/扫描键盘 Read_temp();/读取温度 Change();Display();/显示 Alarm();/指示灯与报警程序 Delay(1000);4.2 显示模块 显示程序主要完成的功能是模式、上下限警戒值和测量温度值的显示,模块中包含 LCD 初始化、显示单个字符子函数、显示一个字符串子函数。程序流程图如图 12 所示,LCD 初始化程序如下,其它子函数程序详
16、见附录一。/*LCD 初始化*/void init_LCD(void)P0=0;Delay(15);LCD_Command(0 x38,0);Delay(5);LCD_Command(0 x38,0);Delay(5);LCD_Command(0 x38,0);Delay(5);LCD_Command(0 x38,1);/8 位数据传送,2 行显示,5*7 字形 LCD_Command(0 x08,1);/关闭显示 开始 写显示命令 定位显示位置 写显示字符 结束显示 图 12 显示程序流程图 贵州大学课程设计 9 LCD_Command(0 x01,1);/清屏 LCD_Command(0
17、x06,1);/显示光标右移设置 LCD_Command(0 x0c,1);/显示屏打开,光标不显示不闪烁 4.3 温度测量模块 温度测量程序主要功能是读出数字温度传感器的温度值。要正确地读出温度值必须严格遵守单总线器件的命令序列,否则单总线器件不会响应主机。单总线器件的命令序列如图 13 所示。温度测量模块程序流程图如图14 所示,DS18B20 初始化程序如下,其它子程序详见附录一。/*DS18B20 初始化*/void init_18B20(void)uchar x=0;DQ=1;/DQ 复位 Delay_us(4);/延时 DQ=0;/将 DQ 拉低 Delay_us(250);/精确
18、延时大于 480us DQ=1;/拉高总线 Delay_us(40);x=DQ;Delay_us(20);开始 发 ROM 指令 初始化 发功能指令 结束 Y N 开始 读 DS18B20 序列号 初始化 DS18B20 DS18B20存在?温度转换 发跳过 ROM 指令 读取温度 返回 图 13 单总线命令序列 图 14 温度测量程序流程图 贵州大学课程设计 10 4.4 键盘扫描模块 本次设计中使用了 4 个按键,除了 1 个复位键还有 3 个功能键,具体功能前面已介绍。键盘扫描程序如下,其它子程序详见附录一,相关流程图如图15 所示。/*键盘扫描*/void Key_scan(void)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 温度 控制系统 设计
限制150内