




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
大连理工大学 单片机课程设计单片机课程设计 题题 目 目 温度上下限可调报警器温度上下限可调报警器 专专 业 业 测控技术与仪器测控技术与仪器 姓姓 名 名 学学 号 号 指导教师 指导教师 2015 年年 1 月月 6 日日 大连理工大学 内容摘要内容摘要 随着时代的进步和发展 单片机技术已经普及 到我们生活 工作 科研 各个领域 已经成为一种比较成熟 的技术 单片机具有体积小 功耗低 控制功能强 扩展灵活 微型化和使用方便等优点 广泛应用于仪器仪表中 结合不同 种类的传感器 可实现诸如电压 湿度 温度 速度 硬度 压力等的物理量的测量 本文将介绍一种基于单片机控制理论 及其应用系统设计的数字温度计 本文主要介绍了一个基于 AT89C51 单片机的测温系统 详 细描述了利用数字温度传感器 DS18B20 开发测温系统的过程 重点对传感器在单片机喜爱的硬件连接 软件编程以及各模块 系统流程进行了详尽分析 对各部分的电路也进行一一介绍 该系统可以方便的是实现温度采集和显示 并可以根据需要任 意设定上下限报警温度 它使用起来方便 具有精度高 量程 宽 灵敏度高 体积小 功耗低等优点 适合我们日常生活和 工农业生产中的温度测量 也可以当做温度处理模块嵌入其他 系统中 作为其他主系统的辅助扩展 DS18B20 和 AT89C51 结合实现最简温度检测系统 该系统结构简单 抗干扰能力强 适合与恶劣环境下进行现场温度测量 有广泛的应用前景 本设计首先是确定目标 气候是各个功能模块的设计 再 在 Proteus 软件上进行仿真 修改 仿真 本温度计属于多功能温度计 可以设置上下报警温度 当 温度不在设置范围内时 可以报警 大连理工大学 引引 言言 单片机技术作为计算机技术的一个分支 广泛地应用于工 业控制 智能仪器仪表 机电一体化产品 家用电器等各个领域 学生在 课程设计 毕业设计 科研项目中会广泛应用到单片机知识 而且 进入 社会后也会广泛接触到单片机的工程项目 鉴于此 提高 单片机原理 及应用 课的教学效果 让学生参与课程设计实习甚为重要 单片机 应用技术涉及的内容十分广泛 如何使学生在有限的时间内掌握单片 机应用的基本原理及方法 是一个很有价值的教学项目 为此 我们 进行了 单片机的学习与应用 方面的课程设计 锻炼学生的动脑动手 以及协作能力 单片机课程设计是针对模拟电子技术 数字逻辑电路 电路 单片 机的原理及应用课程的要求 对我们进行综合性实践训练的实践学习 环节 它包括选择课设任务 软件设计 硬件设计 调试和编写课设 报告等实践内容 通过此次课程设计实现以下三个目标 第一 让学生初 步掌握单片机课程的试验 设计方法 即学生根据设计要求和性能约 束 查阅文献资料 收集 分析类似的相关题目 并通过元器件的组 装调试等实践环节 使最终硬件电路达到题目要求的性能指标 第二 课程设计为后续的毕业设计打好基础 毕业设计是系统的工程设计实 践 而课程设计的着眼点是让学生开始从理论学习的轨道上逐渐引向 实际运用 从已学过的定性分析 定量计算的方法 逐步掌握工程设 计的步骤和方法 了解科学实验的程序和实施方法 第三 培养学生 勤于思考乐于动手的习惯 同时通过设计并制作单片机类产品 使学生 能够自己不断地学习接受新知识 通过多人的合作解决现实中存在的问 大连理工大学 题 从而不断地增强学生在该方面的自信心及兴趣 也提高了学生的动 手 能力 对学生以后步入社会参加工作打下一定良好的实践基础 一 设计方案一 设计方案 1 设计务任和要求设计务任和要求 1 基本范围 1 50 2 精度误差小于 0 5 3 LCD 数码直读显示 4 可以任意设定温度的上下限报警功能 2 2 方案辩证方案辩证 1 温度计软件设计流程图 大连理工大学 设置堆栈指针 将温度转换为 BCD 码 发读存储器命令 读温度数据 复位 DS18B20 发跳过 ROM 命令 显示缓冲区初始化 更新数据缓冲区 延时 发温度转换命令 复位 DS18B20 发跳过 ROM 命令 开始 3 3 元器件的选取元器件的选取 a a 单片机芯片的选取 方案一 采用 89C51 芯片作为硬件核心 利用 Flash ROM 内部具 有 4KB ROM 存储空间 能于 3V 的超低压工作 而且与 MCS 51 系 大连理工大学 列单片机完全兼容 但是运用于电路设计中时由于不具备 ISP 在 线编程技术 当在对电路进行调试时 由于程序的错误修改或 对程序的新增功能需要烧入程序时 对芯片的多次拔插会对芯 片造成一定的损坏 方案二 采用 AT89C52 单片机作为硬件核心 该单片机指令代码完 全兼容传统的 8051 单片机 AT89C52 的工作电压为 5 5 3 4V 工作频率范围 0 80MHz 程序存储器 flash 容量为 8KB 随机存 储器 RAM 空间为 512 字节 完全满足设计温度控制系统的要求 综上所述 本课设中单片机芯片采用 AT89C52 温度传感器的选取 方案一 采用热敏电阻传感器 利用热敏电阻随温度变化而显著变 化 能直接将温度的变化转换为能量的变化 进而制成温度计 但是其测温传感器比较复杂 而且不易通过编制程序来控制测 温精度 增大系统设计的难度 方案二 采用 DS18B20 温度传感器 DS18B20 的内部 3 脚 或 8 脚 封装 使用特有的温度测量技术 将被测温度转换成数值信号 3 0 5 5V 的电源供电方式和寄生电源供电方式 ROM 由 64 位 大连理工大学 二进制数字组成 共分为 8 个字节 RAM 由 9 个字节的高速暂 存器和非易失性电擦写 ROM 组成 综上所述 温度传感器选取智能测温器件 DS18B20 本设计显示电路采用 1602 液晶显示模块芯片 protues 中用 LM016l 代替 3 系统最终设计方案 综上各方案所述 对此次课设的方案选定 采用 AT89C52 作为 主控制系统 LM016l 液晶显示模块芯片作为温度数据显示装置 而 智能温度传感器 DS18B20 器件作为测温电路主要组成部分 至 此 系统最终方案确定 二 设计方案的总体设计框图二 设计方案的总体设计框图 温度计电路设计总体设计方框图如图所示 控制器采用单片 机 AT89C52 温度传感器采用 DS18B20 用 1602 液晶显示屏以 串口传送数据实现温度显示 大连理工大学 2 1 硬件电路框图硬件电路框图 单片机芯片 STC89C52RC 复位电路 晶振控制1602 显示器 温度检测电路 DS18B20 报警温度调 整键 蜂鸣器 图 总体设计方框图 2 22 2 硬件电路概述硬件电路概述 系统由单片机最小系统 显示电路 按键 温度传感器等组 成 本电路是由 STC89C52RC 单片机为控制核心 具有与 8051 系 列单片机完全兼容 程序加密等功能 8KB 字节可编程闪存 工作电压范围为 2 7 6V 全静态工作频率为 0 24MHZ 显示 电路由 1602 液晶显示模块芯片 可以进行多行显示 温度报警 按键设为五个 可以显示华氏温度 调节高低报警温度 温度 传感器电路主要由 DS18B20 测温器件构成 该器件主要功能有 采用单总线技术 每只 DS18B20 具有一个独立的不可修改的 64 大连理工大学 位序列号 低压供电 电源范围为 3 5V 测温范围为 55 125 误差为 0 5 复位电路是 10K 电阻构成的上 电自动复位 2 32 3 主控电路主控电路 单片机 STC89C52RC 具有低电压供电和体积小等特点 四 个端口只需要两个口就能满足电路系统的设计需要 很适合便 携手持式产品的设计使用系统可用二节电池供电 晶振采用 12MHZ 主控芯片 8051 晶振电路 大连理工大学 2 4 显示电路显示电路 本设计显示电路采用 1602 液晶显示模块芯片 该芯片可现 实 16x2 个字符 比以前的七段数码管 LED 显示器在显示字符 的数量上要多得多 另外 由于 1602 芯片编程比较简单 界面 直观 因此更加易于使用者的操作和观测 显示器各个引脚说明 1602A 芯片的接口信号说明 图 液晶显示电路 大连理工大学 2 5 报警温度调节电路报警温度调节电路 本系统一共设置了四个按键 K1 键只是按一下上限报警温 度加 1 松开后恢复显示正常温度 K2 键按一下上限报警温度 减 1 松开后恢复显示正常温度 当调节的上限报警温度与环 境实际的温度相比 环境实际温度高于上限报警温度时系统会 出现声音报警及灯光警示 同理 K3 K4 的调节方法一样 当环境实际温度低于下限报警温度时 系统出现报警 图 报警点调节电路 大连理工大学 2 6 温度传感器测温原理及测温电路温度传感器测温原理及测温电路 DS18B20 测温原理 预置斜率累加器 比较低温度系数振荡器计数器 1 温度寄存器 Tx 预置 0高温度系数振荡器 0计数器 2 T1 加 1 停止 T2 64 位 ROM 的结构开始 8 位是产品类型的编号 接着是每个 器件的惟一的序号 共有 48 位 最后 8 位是前面 56 位的 CRC 检验码 这也是多个 DS18B20 可以采用一线进行通信的原因 温度报警触发器 TH 和 TL 可通过软件写入户报警上下限 DS18B20 温度传感器的内部存储器还包括一个高速暂存 RAM 和一个非易失性的可电擦除的 EERAM 高速暂存 RAM 的结构为 8 字节的存储器 结构如图 4 所示 头 2 个字节包含测得的温 度信息 第 3 和第 4 字节 TH 和 TL 的拷贝 是易失的 每次上 电复位时被刷新 第 5 个字节 为配置寄存器 它的内容用于 确定温度值的数字转换分辨率 DS18B20 工作时寄存器中的分 辨率转换为相应精度的温度数值 该字节各位的定义如图 5 所 大连理工大学 示 低 5 位一直为 1 TM 是工作模式位 用于设置 DS18B20 在 工作模式还是在测试模式 DS18B20 出厂时该位被设置为 0 用 户不要去改动 R1 和 R0 决定温度转换的精度位数 来设置分 辨率 DS18B20 的测温原理是这这样的 器件中低温度系数晶振的 振荡频率受温度的影响很小 用于产生固定频率的脉冲信号送 给减法计数器 1 高温度系数晶振随温度变化其振荡频率明显 改变 所产生的信号作为减法计数器 2 的脉冲输入 器件中还 有一个计数门 当计数门打开时 DS18B20 就对低温度系数振 荡器产生的时钟脉冲进行计数进而完成温度测量 计数门的开 启时间由高温度系数振荡器来决定 每次测量前 首先将最低 温所对应的一个基数分别置入减法计数器 1 温度寄存器中 计数器 1 和温度寄存器被预置在最低温所对应的一个基数值 减法计数器 1 对低温度系数晶振产生的脉冲信号进行减法计 数 当减法计数器 1 的预置值减到 0 时 温度寄存器的值将加 1 减法计数器 1 的预置将重新被装入 减法计数器 1 重新开始 对低温度系数晶振产生的脉冲信号进行计数 如此循环直到减 法计数器计数到 0 时 停止温度寄存器的累加 此时温度寄存 器中的数值就是所测温度值 其输出用于修正减法计数器的预 置值 只要计数器门仍未关闭就重复上述过程 直到温度寄存 器值大致被测温度值 大连理工大学 测温电路 三 系统软件算法设计三 系统软件算法设计 整个系统是由硬件配合软件来实现的 在硬件确定后 编 写的软件的功能也就基本定型了 所以软件的功能大致可分为 两个部分 一是监控 这也是系统的核心部分 二是执行部分 完成各个具体的功能 系统程序主要包括主程序 读出温度子 程序 温度转换命令子程序 计算温度子程序 显示数据刷新 子程序等 3 1 主程序主程序 主程序的主要功能是负责温度的实时显示 读出并处理 DS18B20 的测量的当前温度值 温度测量每 1s 进行一次 这样 可以在一秒之内测量一次被测温度 其程序流程见图所示 大连理工大学 图 主程序流程图 图 读温度流程图 3 23 2 读出温度子程序读出温度子程序 读出温度子程序的主要功能是读出 RAM 中的 9 字节 在读出 时需进行 CRC 校验 校验有错时不进行温度数据的改写 其程 序流程图如图示 初始化 调用显示子程序 1S 到 初次上电 读出温度值温度 计算处理显示数 据刷新 发温度转换开始命令 N Y N Y Y 发 DS18B20 复位命令 发跳过 ROM 命令 发读取温度命令 读取操作 CRC 校验 9 字节完 CRC 校验正 确 移入温度暂存器 结束 N N Y 大连理工大学 发 DS18B20 复位命 令 发跳过 ROM 命令 发温度转换开始命令 结束 图 温度转换流程图 3 3 温度转换命令子程序温度转换命令子程序 温度转换命令子程序主要是发温度转换开始命令 当采用 12 位分辨率时转换时间约为 750ms 在本程序设计中采用 1s 显 示程序延时法等待转换的完成 温度转换命令子程序流程图如 上图 3 4 计算温度子程序计算温度子程序 计算温度子程序将 RAM 中读取值进行 BCD 码的转换运算 并 进行温度值正负的判定 其程序流程图如图所示 大连理工大学 图 计算温度流程图 3 5 显示数据刷新子程序显示数据刷新子程序 显示数据刷新子程序主要是对显示缓冲器中的显示数据进行 刷新操作 当最高显示位为 0 时将符号显示位移入下一位 程 序流程图如图 开始 温度零下 温度值取补码置 标志 计算小数位温度 BCD 值 计算整数位温度 BCD 值 结束 置 标 志 N Y 温度数据移入显示寄存器 十位数 0 百位数 0 十位数显示符号百 位数不显示 百位数显示数据 不显示符号 结束 N N Y Y 大连理工大学 图 显示数据刷新流程图 3 6 1602 的液晶显示的液晶显示 1602 液晶显示流程图 大连理工大学 四 软件仿真四 软件仿真 4 14 1 系统仿真设计系统仿真设计 本设计是在 Proteus 环境下进行仿真的 仿真所用到的器件 有 单片机 AT89C51 DS1820 温度传感器 蜂鸣器 液晶显示 器 一些电阻 电容等 仿真结果如下 正常温度下 大连理工大学 超过高温报警 低于低温下限报警 大连理工大学 4 24 2 系统原理图系统原理图 大连理工大学 五 总结与体会五 总结与体会 这次的课程设计做的比较简单 主要是用到 1602 ds18d20 按键 和扬声器 1602 在接电阻排的时候少了 一个电源电路导致无法显示 在 15 脚上加高电压就可以解决这 点以后要注意 在蜂鸣器的按装的时候没有安装三极管导致蜂 鸣器无开关状态不能报警 在开发板上可以实现 导致在 PCB 版上无法实现 开发板上用的是 LM2003 要在 PCB 版上实现最 简单的是加一个达林顿晶体管 在写程序的过程中很多都用的是模块函数在用到 C 语言的 时候比较低级的错误还是会有的 例如在 if 语句中俩句的时候 没有加 导致程序无法编译 C 语言还需要加强学习 在写长 程序的时候在后面加上必要的标注是很重要的 如果不加等写 完后就很难读懂自己写的程序 再本设计中单片机用到了 P0 P1 2 P2 口 P1 口只用到 一个口还可以扩展几个报警灯 高温红灯报警低温绿灯报警这 个是完成后想到的 以后又机会会实现的 在 1602 显示电路的 时候要加一个 10K 的上拉电阻 在电路设计的时候总要先用仿真仿真成功之后才实际接 线的 但是最后的成品却不一定与仿真时完全一样 因为 再 实际接线中有着各种各样的条件制约着 而且 在仿真中无法 成功的电路接法 在实际中因为芯片本身的特性而能够成功 大连理工大学 所以 在设计时应考虑两者的差异 从中找出最适合的设计方 法 在电脑上仿真在开发板上成功但在 PCB 版上不一定能成功 要熟悉原理以后才能少走些弯路成功的完成作品从这次的课程 设计中 我真真正正的意识到 在以后的学习中 要理论联系 实际 把我们所学的理论知识用到实际当中 学习单机片机更 是如此 程序只有在经常的写与读的过程中才能提高 这就是 我在这次课程设计中的最大收获 通过这次对温度可调上下限 检测报警设计与制作 让我了解了设计电路的程序 也让我了 解了关于温度可调上下限检测报警的原理与设计理念 大连理工大学 附录附录 include include include 18b20 h include 1602 h include delay h define KeyPort P3 定义按键端口 sbit SPK P1 4 定义喇叭端口 bit ReadTempFlag 定义读时间标志 void Init Timer0 void 定时器初始化 unsigned char KeyScan void 键盘扫描 串口通讯初始化 void UART Init void SCON 0 x50 SCON 模式 1 8 bit UART 使能接收 TMOD 0 x20 TMOD timer 1 mode 2 8 bit 重装 TH1 0 xFD TH1 重装值 9600 波特率 晶振 11 0592MHz TR1 1 TR1 timer 1 打开 EA 1 打开总中断 ES 1 打开串口中断 TI 1 主函数 void delay unsigned int cnt while cnt void aaa unsigned int i for i 0 i 200 i 喇叭发声的时间循环 改变大小可以改变发声时间长 短 SPK 1 大连理工大学 delay TH 参数决定发声的频率 估算值 可以自行更改参数 并 SPK 0 delay TL SPK 1 喇叭停止工作 间歇的时间 可更改 delay 20000 void main void int temp tempH 50 tempL 1 float temperature char displaytemp 16 num 定义显示区域临时存储数组 LCD Init 初始化液晶 DelayMs 20 延时有助于稳定 LCD Clear 清屏 Init Timer0 UART Init Lcd User Chr 写入自定义字符 while 1 主循环 num KeyScan switch num case 1 if tempH 55 tempH break case 3 if tempL 55 tempL break default break sprintf displaytemp H 3d L 3d tempH tempL 输出温度上限下限 LCD Write String 0 1 displaytemp 显示第二行 if ReadTempFlag 1 ReadTempFlag 0 temp ReadTemperature if temp 变为负数 temperature temp 0 0625 temp 4 if temp tempH LCD Write String 0 1 over tempH 大连理工大学 aaa else if temp0 i DQ 0 给脉冲信号 dat 1 DQ 1 给脉冲信号 if DQ dat 0 x80 DelayUs2x 25 return dat 写入一个字节 void WriteOneChar unsigned char dat unsigned char i 0 for i 8 i 0 i DQ 0 DQ dat DelayUs2x 25 DQ 1 dat 1 DelayUs2x 25 大连理工大学 读取温度 unsigned int ReadTemperature void unsigned char a 0 unsigned int b 0 unsigned int t 0 Init DS18B20 WriteOneChar 0 xCC 跳过读序号列号的操作 WriteOneChar 0 x44 启动温度转换 DelayMs 10 Init DS18B20 WriteOneChar 0 xCC 跳过读序号列号的操作 WriteOneChar 0 xBE 读取温度寄存器等 共可读 9 个寄存器 前两个就是温 度 a ReadOneChar 低位 b ReadOneChar 高位 b 8 t a b return t 2 LCD1602 液晶显示器的子程序编写液晶显示器的子程序编写 include 1602 h include delay h define CHECK BUSY sbit RS P2 4 定义端口 sbit RW P2 5 sbit EN P2 6 define RS CLR RS 0 define RS SET RS 1 define RW CLR RW 0 define RW SET RW 1 define EN CLR EN 0 define EN SET EN 1 大连理工大学 define DataPort P0 判忙函数 bit LCD Check Busy void ifdef CHECK BUSY DataPort 0 xFF RS CLR RW SET EN CLR nop EN SET return bit DataPort else return 0 endif 写入命令函数 void LCD Write Com unsigned char com while LCD Check Busy 忙则等待 RS CLR RW CLR EN SET DataPort com nop EN CLR 写入数据函数 void LCD Write Data unsigned char Data while LCD Check Busy 忙则等待 RS SET RW CLR EN SET DataPort Data nop EN CLR 大连理工大学 清屏函数 void LCD Clear void LCD Write Com 0 x01 DelayMs 5 写入字符串函数 void LCD Write String unsigned char x unsigned char y unsigned char s if y 0 LCD Write Com 0 x80 x 表示第一行 else LCD Write Com 0 xC0 x 表示第二行 while s LCD Write Data s s 写入字符函数 void LCD Write Char unsigned char x unsigned char y unsigned char Data if y 0 LCD Write Com 0 x80 x else LCD Write Com 0 xC0 x LCD Write Data Data 大连理工大学 初始化函数 void LCD Init void LCD Write Com 0 x38 显示模式设置 DelayMs 5 LCD Write Com 0 x38 DelayMs 5 LCD Write Com 0 x38 DelayMs 5 LCD Write Com 0 x38 LCD Write Com 0 x08 显示关闭 LCD Write Com 0 x01 显示清屏 LCD Write Com 0 x06 显示光标移动设置 DelayMs 5 LCD Write Com 0 x0C 显示开及光标设置 void Lcd User Chr void LCD Write Com 0 x41 01 000 001 第 2 行地址 LCD Write Data 0 x04 XXX 10001 第 2 行数据 LCD Write Com 0 x42 01 000 010 第 3 行地址 LCD Write Data 0 x0e XXX 10101 第 3 行数据 LCD Write Com 0 x43 01 000 011 第 4 行地址 LCD Writ
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 职业性格考试题及答案
- 惜时教学课件
- 幼儿培训电梯安全课件
- Unit 6 Meet my family Part B Read and write大单元整体教学设计表格式-2024-2025学年人教PEP版英语四年级上册
- 幼儿园骨折安全培训计划课件
- 2023七年级数学上册 第2章 代数式2.4 整式说课稿 (新版)湘教版
- 网络安全和数据安全培训会课件
- 社工活动路演活动方案
- 文具店(教学设计)-2024-2025学年三年级上册数学北师大版
- 融媒教学课件下载
- 医院节前安全检查记录表范本
- 中科大现代环境生物技术课件第2章 酶工程
- catia考试题及答案
- 耳聋健康教育讲课件
- 新生儿常见症状评估及护理
- 学校反恐各种管理制度
- 聘请总裁协议书
- 管道监检协议书
- 2025年供热通风与空调工程师考试试卷及答案
- 跨界合作网络小说IP改编授权协议
- 学校物品捐赠协议书
评论
0/150
提交评论