【VB开源代码栏目提醒】:网学会员--在 VB开源代码编辑为广大网友搜集整理了:基于c51+DS18B20+lcd1602的温度检测系统 - 毕业设计绩等信息,祝愿广大网友取得需要的信息,参考学习。
单片机
课程设计
报告 一、选题的背景 1、说明选题的来源、意义和目的 题目 温度检测系统 设计者1 负责任务硬件与部分软件 专业班级/学号 07应用电子4班 设计者2 负责任务Protel画板与部分软件 专业班级/学号 07应用电子4班 指导教师1 指导教师2 答辩时间 2010-01-11 2 1.1、来源 在人类的生活环境中温度扮演着极其重要的角色。
无论你生活在哪里从事什么工作无时无刻不在与温度打着交道。
温度无时无刻不在同样也时时刻刻都在变化为了让人们能更直观的看出此时此刻此地的实时温度我就利用了单片机来完成这一功能。
1.2、意义 温度的检测与控制在现代经济与社会中有举足轻重的地位与我们的生活息息相关密不可分越发占有一席之地。
例如在储粮仓库、智能楼宇、空调控制及其他的工农业生产和科学研究中应用广泛。
在温度的检测与控制方面DS18B20小型温度检测系统及其数字温度传感器有许多突出的优点其通过单总线与单片机连接系统结构简单抗干扰能力强适合于恶劣环境下进行现场温度检测因此对于我们来设计并研究基于DS18B20的温度检测系统有主要的现实意义从一方面讲这不仅对于工农业的发展更对于国防的巩固与建设起到重要的作用另一方面本设计能够在一定程度上提高自己的单片机开发能力。
1.3、目的 1本实验要实现的是通过DS18B20温度传感器采集温度并在LCD上显示并学会使用单片机控制DS18B20此类单总线器件并对数字温度传感器DS18B0进行时序分析。
2更进一步了解LCD1602的应用。
3掌握单片机与PC的远程通信。
2、课题承担人员及分工说明 1主要负责电路板的制作、焊接与调试。
2电路的仿真。
3温度主要程序的编写与调试。
1Protel画板材料的收集。
2串口的调试与程序编写。
3
VB界面的设计和上位机程序的编写。
二、课题总体设计说明 1、说明总体开发计划和课题所达到的功能目标和技术指标 1.1、总体开发计划 1.1.1、基本功能 1以数字传感器DS1820作为前端采集温度经过单片机处理后将外部的温度显示在液晶屏上。
2可用通过独立式按键来设定温度的上限值和下限值当坏境温度超过上限值或低于下限值时蜂鸣器会自动报警并在液晶屏上提示温度大于上限值或温度小于下限值。
3当单片机检测到DS18B20存在时会在在LCD1602上显示“DS18B20 Succes”反之则显示“DS18B20 is WrongTEMP is No on”。
1.1.2、扩展功能 以数字传感器DS1820作为前端采集温度经过单片机处理后再通过串口通信把实 3 时温度值、上限值和下限值显示在用
VB语言编辑的计算机软件的界面上并显示出实时温度的变化曲线当实时温度超过所设定的上限值和下限值时会在用
VB语言编辑的计算机软件的界面上提示当前温度超过上限值或下限值模拟实现设备与计算机的通信通过计算机对设备的温度检测以及实时监控。
1.2、课题所达到的功能目标和技术指标 1能在LCD1602上准确的显示出实时温度 2独立式按键能设置报警温度的上限值、下限值和查看所设定的上限值、下限值 3当温度大于上限值或低于下限值时蜂鸣器会报警 4通过串口和PC机连接能够把实时温度值、上限值和下限值显示在用
VB语言编辑的计算机软件的界面上并显示出实时温度的变化曲线当实时温度超过所设定的上限值和下限值时会在用
VB语言编辑的
计算机软件的界面上提示当前温度超过上限值或下限值。
总之课题所达到的功能和技术指标与前期计划的一样。
2、计划课题总体设计方案比较几个备选方案确定最终方案 1本系统的温度检测有两套方案 方案一采用AD590使用AD590作为温度传感器需要进行电流电压变换电压放大以及A/D转换。
方案二采用DS18B20作为温度传感器进行温度测量。
DS18B20可以满足从-55摄氏度到125摄氏度测量范围在一秒内把温度转化成数字测得的温度值的存储在两个八位的RAM中单片机直接从中读出数据转换成十进制就是温度使用方便。
另外采用外加电源供电对DS18B20的VDD引脚供电。
它的好处是无须MOSFET而且在温度转换期间总线可自由搭载其它器件。
它试用于对性能要求不高成本严格控制的应用是
经济型产品。
它具有线性好、精度适中、灵敏度高、体积小和使用方便等优点得到广泛应用。
因为AD590需要模拟转数字电路精确度低测温点数少对线阻有要求电路繁多成本也较高故本系统采用方案二。
2本系统的显示有两套方案
方案一数码管显示 方案二液晶显示采用1602字符型LCD它是一种专门用于显示字母、数字、符号等点阵式LCD。
其有显示质量高、数字接口、功耗低、体积小等优点。
因为数码管只能显示数字和简单的字母LCD可以显示字符图形等并能更形象的体现出字符与图像。
故本系统采用方案二。
3按键的选择 方案一行列式按键 方案二独立式按键 独立式按键电路配置灵活硬件结构简单但每个按键必须占用一根I/O口线。
在按键数量较多时I/O口浪费较大。
故只在按键数量不多时采用这种按键。
因为本系统只用到4个按键且I/O口够用所以采用方案二。
4 4单片机的选择 本系统采用了51单片机其体积小巧携带方便价格便宜。
且USB接口通讯及供电通讯速度快无须外接电源。
51单片机有一个全双工的串通信口非常适合与电脑进行通信。
三、硬件设计说明 1、硬件总体设计方案 1.1、硬件设计目标 本
系统中通过温度传感器DS18B20的数据线DQ与主控芯片51单片机的P3.3相连接DS18B20将采集到的数据送给单片机经过单片机出来后显示在8位数据线与单片机P0口的液晶LCD上。
蜂鸣器经过三极管9012的驱动后接到单片机的P3.7来实现当实时温度大于下限或高于上限的报警。
4个按键K1K4接到单片机的P1.0P1.4来实现对上限值和下限值的查看与设定。
串口经过MAX232的电平转换后R1 OUT和T1 IN接到单片机的RXD与TXD来实现与用
VB语言编辑的计算机软件的界面间的
通信。
液晶LCD的RS、—W/R、E分别接到单片机的P2.0P2.2来实现单片机控制液晶的读写命令和数据的控制。
1.2、硬件功能模块划分 1AT89S51实现对整个系统的控制。
2DS18B20、LCD1602温度传感器DS18B20的数据线DQ与主控芯片51单片机的P3.3相连接DS18B20将采集到的数据送给单片机经过单片机处理后显示在8位数据线与单片机P0口的液晶LCD上。
3按键输入对报警温度上限值TH和下限值TL的设置。
4串口通信实现与与用
VB语言编辑的计算机软件的界面间的通信。
1.3、主控芯片和关键元器件的选型、接口和连接方式定义 1.3.1、主控芯片和关键元器件的选型 1主控芯片AT89S51 2温度采集DS18B20 3按键独立式按键K1K4 主控芯片 显示模块 控制模块 温度检测模块 通信模块 5 4显示LCD1602 5串口通过MAX232与单片机的10脚11脚相连 6报警蜂鸣器 1.3.2、接口和连接方式定义 1液晶LCD1602的数据和指令选择控制端RS接到单片机的P2.0读写控制—W/R接到单片节的P2.1数据读写控制位E接到单片机的P2.28位数据线DB0DB7接到单片机的P0口。
24个按键K1K4分别接到单片机的P1.0P1.3。
3蜂鸣器接到单片机的P3.7。
4DS18B20的DQ接到单片机的P3.3. 2、硬件单元设计 1主控电路实现对整个系统的控制 2串口通信电路串口经过MAX232的电平转换后R1 OUT和T1 IN接到单片机的RXD与TXD来实现与用
VB语言编辑的计算机软件的界面间的通信。
6 3液晶LCD1602、DS18B20电路温度传感器DS18B20的数据线DQ与主控芯片51单片机的P3.3相连接DS18B20将采集到的数据送给单片机经过单片机处理后显示在8位数据线与单片机P0口的液晶LCD上。
4按键、蜂鸣器电路按键K1用来查看所设置的上限温度TH、下限温度TL和设置上限温度TH、下限温度TL增加或减少的切换K2用来设置上限温度THK3用来设置下限温度TL和查看上限温度和下限温度的退出K4是设置好上限温度和上限温度的确定键蜂鸣器用来当实时温度大于TH或TL的报警。
7 四、软件设计说明 1、软件总体设计方案 1.1、
软件设计目标 1结构合理 程序应该采用结构模块化设计。
这不仅有利于程序的进一步扩充而且也有利于程序的修改和维护。
在程序编程时要尽量使得程序的层次分明。
易于阅读和理解同时还可以简化程序减小程序对于内存的使用量当程序中有经常需要加以修改或变化的参数时应该设计成独立的参数传递群序避免程序的频繁修改。
2操作性能好 操作性能好是指使用方便。
这点是、对数据采集系统来说是很重要的。
在开发程序时应该考虑如何降低对操作人员专业知识的要求。
3系统应设计一定的检测程序 例如状态检测利于诊断程序以便系统发生故障时容易确定故障部位对于重要的参数要定时存储以防止因掉电而丢失数据。
4提高程序的执行速度。
1.2、软件功能模块划分 子程序名 标号 参数 读取温度子程序 RE_TEMP 累加器A 温度数据处理子程序 SET_DATA 无 按键扫描子程序 P_KEY 无 设定报警值TH、TL子程序 SET_ALARM R5 菜单显示子程序 LCD_PRINT 无 8 显示信息区子程序 LOOK_ALARM 累加器A LCD的第二行显示高温度子程序 SHOW_LINE2H 30H LCD的第二行显示低温度子程序 SHOW_LINE2L 30H 温度值比较子程序 TEMP_COMP 无 显示高、温度及加热标记子程序 TEMP_BJ3 R0、R1 报警上下限写入暂存器子程序 WR_THL 无 报警值拷贝到EEROM子程序 WRITE_E2 无 报警值拷贝回暂存器子程序 RE_THL 无 处理温度BCD码子程序 CON_TEMP R4 显示区BCD码温B度刷新子程序 DISP_BCD 70H、71H、72H、73H DS18B20复位初始化子程序 RESET_1820 无 写入DS18B20子程序 WRITE_1820 A 读出DS18B20子程序 READ_1820 25H、26H、27H、28H LCD1602显示子程序 SET_LCD 无 LCD初始化子程序 INIT_LCD 无 LCD显示子程序 CONV 无 写指令子程序 WR_COMM 无 写数据子程序 WR_DATA 无 清楚LCD字符子程序 CLR_LINE 无 鸣响子程序 SPK_B2 无 延时子程序 DELAY 无 显示“OK”信息子程序 XS_S 无 显示“ERROR”信息子程序 XS_WRONG 无 显示温度标记“C”子程序 TEMP_BJ 无 自定义字符子程序 SECT_DATA R3 串口发送子
程序 SEND1 无 2、软件设计 2.1、主程序 主程序首先设置堆栈为5FH设置定时器
工作方式T1为方式2设置串口方式。
接着开始启动定时器调用LCD初始化子程序调用DS18B20复位子程序去判断DS18B20是否存在如果存在调用显示“success”子程序接着调用上下限写入暂存器子程序把EEROM里的温度报警值拷贝回暂存器调用读取温度子程序调用处理显示子程序调用实际温度值与标记温度值比较子程序调用按键扫描子程序后返回到调用读取温度子程序如果DS18B20不存在则调用显示“wrong”信息子程序后返回到调用DS18B20复位子程序。
9 1流程图 10 2重要
代码 2.2、键扫描子程序 按键扫描子程序首先判断按键K1是否按下如果按下就掉用鸣响子程序接着判断K1是否放开直到K1放开存M-ALAX表调用显示字符子程序然后去判断K3是否按下直到K3按下调用鸣响子程序调用显示“OK”信息子程序最后放回如果K1没有按下去判断K2是否按下如果没按下就跳到返回如果有按下就调用鸣响子程序然后去判断K3是否放开直到K3放开才存TA1表接着调用显示字符子程序调用设定报警TH、TL子程序调用报警上下限写入暂存器子程序调用报警值拷贝EEROM子程序最后跳到调用显示“OK”信息子程序。
11 1流程图 12 2重要
代码 2.3、LCD显示子程序 LCD显示子程序开始先让LCD初始化接着光标定位显示字符最后放回。
1流程图 开 始 LCD 初始化 光标定位 显示字符 结 束 13 2重要
代码 五、软硬件调试说明 1、硬件性能测试 1LCD 测试通过单片机小系统将所需要的字符送给LCDLCD能正常显示出所送内容且LCD的亮度可调。
2按键与蜂鸣器通过单片机小系统使蜂鸣器受按键的控制即按下按键蜂鸣器响放开即停。
3串口先用串口调试助手让单片机发出简单的字符串口调试助手能正常接收到数据即可。
再将串口与
VB相连接。
注意串口硬件电路图的连接关键所在首先串口是通过MAX232再与单片机连在这MAX232的外围电路就相当重要其外围要连接4个电解电容最好都用10UF的注意极性不要连反了。
其次串口的发送、接收要与MAX232的相对应。
当然单片机的发送、接收也同样要与MAX232的相对应。
最关键的是波特率的设置单片机的波特率一定要与计算机的串口一样。
4硬件调试时存在的问题串口的PC_RXD与PC_TXD接反芯片MXA232的16脚没有接5V的电源15脚没有接地。
5解决办法查阅串口原理图连接的相关资料修改电路板。
6硬件的最终调试结果如下图1、图2、图3、图4所示。
14 图1、当实时温度超大于限值时的报警 图2、用串口与用
VB语言编的界面相连接时当实时温度大于上限温度的报警 15 图3、当实时温度超小于限值时的报警 图4、用串口与用
VB语言编的界面相连接时当实时温度小于上限温度的报警 16 2、软件性能测试 1软件性能测试时用Proteus将画好的仿真图调人用Keil编译后的Temp.hex文件开始仿真测试每个按键的功能是否以及实时温度和上下限报警是否与预期计划的一致。
2软件性能测试结果如下图 3软件性能测试存在的问题实时温度的百位数字一致闪烁。
4解决办法由于考虑平时的室温根本不会超过100摄氏度做一将软件中的百位地址73H直接赋0。
六、课题开发总结 1、总结整个课题的任务完成情况是否与预期规划的相符合设计出来的作品性能如何、优缺点 本系统完成的与预期计划相吻合预期所有功能基本实现作品性能好突出的优点是本作品的硬件电路做的相当美观且电路相当稳定不仅实现了LCD的显示同样也很好的在
VB6.0人机界面上绘制出温度变化曲线根据我们设定的上限报警温度和下线报警温度判断当前温度有无高温报警或低温报警如果温度超限则给出相应的报警信息。
并达到了远程功能。
2、硬件宏观上的设计要点达到的性能指标存在的
问题 17 硬件的设计要点达到的性能指标与计划预期的一样没有存在什么问题可以说此硬件做的相当完美。
3、软件宏观上的设计要点达到的性能指标、开发编译工具和方法、存在的问题 1软件设计要点达到的性能指标几乎达到计划预期的在设计这个系统的过程还学会了串口调试工具。
2整个电路的设计仿真过程中除了运用了单片机相关软件外还利用了以下软件Multisim8用于电路的设计与仿真 串口调试助手与模拟串口用于串口的调试与仿真
VB6.0用于数据的显示与显示温度变化的曲线 Protel电路板的设计 七、用户操作说明 第一步将电路板上的串口与电脑的串口相连接 第二步将电路板接上5V的电源此时电源指示灯会点亮会在LCD1602上显示实时温度如图1所示 第三步在
VB界面上点击打开串口此时会在
VB界面上显示实时温度上限温度下限温度和实时温度变化的曲线如图2所示。
附本系统有四个控制按键功能如下 K1:用于查看上下限温度与温度加减切换 K2用于上限温度的调节 K3用于下限温度的调节并兼查看上下限温度时的返回 K4设定好上限温度与下限温度时的确定键 如当要调上限温度时首先按下K2再按K2时上限温度就加1如果要减1就按下切换按键K1再按K2即变为减。
八、参考资料 书名 出版社 编者 单片机初级教程 北京航空航天大学 何立民 单片机应用实训教程 清华大学出版社 张永枫 单片机典型外围器件及应用实例 电子工业学出版社 求是科技 单片机原理及应用 电子工业学出版社 张迎新 单片机应用实现教程 西安电子科技大学出版社 张永枫 九、附件 1、硬件设计的总电路原理图、PCB版图 18 1.1、原理图 19 1.2、PCB图 2、元器件清单器件名称、型号、在原理图中的编号 器件名称 型号 原理图中的编号 器件名称 型号 原理图中的编号 电阻 1K R1、R2 三级管 9012 Q10 4.7K R8、R9 晶振 12M Y1 10K R4R6 温度传感器 DS18B20 U3 200 R3 液晶 LCD1602 U2 电容 10uF C6C9 单片机 AT89S51 U1 20P C2、C3 MAX232 U2_MAX232 22uF C1、C4 串口 JP4 104 C5 蜂鸣器 BELL 排阻 103 P0_Pull 按键 RES、K1K4 20 3、硬件电路板外观图片、PROTEUS仿真效果图 3.1、硬件电路板外观图片 正面 背面 21 3.2、PROTEUS仿真效果图 数字温度计汇编语言源程序如下 温度值存放单元 TEMP_ZH EQU 24H 实时温度值存放单元 TEMPL EQU 25H 低温度值存放单元 TEMPH EQU 26H 高温度值存放单元 TEMP_TH EQU 27H 高温报警值存放单元 TEMP_TL EQU 28H 低温报警值存放单元 TEMPHC EQU 29H 存十位数的BCD码 TEMPLC EQU 2AH 存个位数的BCD码 按键输入引脚定义 K1 EQU P1.0 K2 EQU P1.1 K3 EQU P1.2 K4 EQU P1.3 SPK EQU P3.7 蜂鸣器 ZF EQU 22H.1 X EQU 2FH 设置显示位置 LCD控制引脚 RS EQU P2.0 RW EQU P2.1 E EQU P2.2 FLAG EQU 21H.0 温度传感器标志位 KEY_UD EQU 21H.1 DQ EQU P3.3 温度传感器数据采集口 主程序 22 ORG 0000H LJMP MAIN ORG 0023H ORG 30H MAIN: MOV SP5FH MOV TMOD 20H 定时器T1为方式2自动再装入8位计数器 MOV TH10F3H 设置定时器初值 MOV TL10F3H MOV PCON00H MOV SCON50H 串口工作方式110为为1帧REN1允许接收 SETB TR1 定时器启动 MOV TEMP_TH27 MOV TEMP_TL20 ACALL SET_LCD LCD初始化设置子程序 TOOP: ACALL RESET_1820 调用18B20复位子程序 JNB FLAGTOOP1 DS1820不存在则跳转 ACALL XS_S 调用显示quotSUCCESquot信息子程序 ACALL WR_THL 将报警上下限写入暂存寄存器子程序 ACALL RE_THL 把E2ROM里温度报警值拷贝回暂存器 JMP TOOP2 TOOP1: ACALL XS_WRONG 显示quotWRONGquot信息 SJMP TOOP 返回继续判断 TOOP2: ACALL RE_TEMP 调用读取温度数据子程序 ACALL SET_DATA 调用处理显示温度数据子程序 ACALL TEMP_COMP 实际温度值与标记温度值比较子程序 ACALL P_KEY 调用按键扫描子程序 JMP TOOP2 循环 读取温度数据子程序 RE_TEMP: JNB FLAGTOOP1 判断DS18B20是否存在 ACALL RESET_1820 18B20复位子程序 MOV A0CCH 跳过ROM匹配 ACALL WRITE_1820 MOV A44H 发出温度转换命令 ACALL WRITE_1820 ACALL RESET_1820 调用复位子程序 MOV A0CCH 跳过ROM匹配 ACALL WRITE_1820 MOV A0BEH 发出读温度命令 ACALL WRITE_1820 23 ACALL READ_1820 调用读取子程序 RET 温度数据处理显示子程序 SET_DATA: ACALL CONV_TEMP 处理温度BCD码子程序 ACALL DISP_BCD 显示区BCD码温度值刷新子程序 ACALL CONV LCD显示子程序 MOV A0CBH 设定第二行起始地址 ACALL TEMP_BJ 显示温度标记quot℃quot ACALL zhfu RET 按键扫描子程序 P_KEY: 按键K1处理 JB K1 PK1 K1键未按则跳转到PK1处 ACALL SPK_BZ K1键按下发出一声响声 JNB K1 等按键放开 MOV DPTR M_ALAX1 存M_ALAX1表 MOV A 1 ACALL LCD_PRINT 显示字符 ACALL LOOK_AL.