单片机毕业设计论文_第1页
单片机毕业设计论文_第2页
单片机毕业设计论文_第3页
单片机毕业设计论文_第4页
单片机毕业设计论文_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、xx职业技术学院 课题名称:单片机设计数字温度计 院系:xxx系 班级:xx班 姓名:xx 学号:xx 201x 年 x月x日摘要温度是日常生活中无时不在的物理量,温度的控制在各个领域都有积极的意义。很多行业中都有大量的用电加热设备,如用于热处理的加热炉,用于融化金属的坩锅电阻炉及各种不同用途的温度箱等,采用单片机对它们进行控制不仅具有控制方便、简单、灵活性大等特点,而且还可以大幅度提高被控温度的技术指标,从而能够大大提高产品的质量。因此,智能化温度控制技术正被广泛地采用。随着现代信息化技术的飞速发展和传统工业改造的逐步实现,能独立工作的温度检测系统已广泛应用于各种不同的领域。本文介绍了一个基

2、于STC89C52单片机和数字温度传感器DS18B20的测温系统,并用LED数码管显示温度值,易于读数。系统电路简单、操作简便,能任意设定报警温度并可查询最近的10个温度值,系统具有可靠性高、成本低、功耗小等优点。本设计以STC89C52RC单片机为控制核心,由实时时钟芯片DS1302和数字温度传感器DS18B20构成了一个高温和低温时,分别对相应的器件进行控制的系统。详细地介绍了整个系统的硬件组成结构、工作原理和系统的软件程序设计,重点阐述了时钟模块、显示模块、温度检测模块及相关控制模块等的模块化设计思路与制作。系统采用液晶LCD1602作为显示器,具有实时时间显示、环境温度显示,显示系统连

3、续工作前24小时整点的温度值。在本设计中,软件程序均采用C语言编写,便于移植与升级。关键词:单片机 数字温度传感器 温度计11目录一、设计要求11.1基本要求11.2 扩展功能1二、 总体方案设计12.1 方案论证12.1.1 方案一12.1.2 方案二12.2 总体设计框图1三、 硬件设计23.1 单片机系统23.2 数字温度传感器模块33.2.1 DS18B20性能33.2.2 DS18B20外形及引脚说明43.2.3 DS18B20接线原理图43.2.4 DS18B20时序图43.2.5 数据处理63.3 显示电路73.4 声光报警电路73.5 键盘输入电路8四、软件设计84.1 主程序

4、模块84.2 读温度值模块94.3 中断模块114.4 温度查询模块124.5 温度设定、报警模块134.6 数码管驱动模块15五、总结16参考文献:171一、设计要求1.1基本要求实现实时温度显示,测温范围0500C,误差50C以内。1.2 扩展功能温度报警,能任意设定温度范围实现声光报警;每隔10分钟记录一次温度数据,至少能查询过去10个时刻的温度情况。二、 总体方案设计2.1 方案论证2.1.1 方案一由于本设计是测温电路,可以使用热敏电阻之类的器件,将随被测温度变化的电压或电流采样,进行A/D转换后就可以用单片机进行数据处理,实现温度显示。这种设计需要用到A/D转换电路,增大了电路的复

5、杂性,而且要做到高精度也比较困难。2.1.2 方案二考虑到在单片机属于数字系统,容易想到数字温度传感器,可选用DS18B20数字温度传感器,此传感器为单总线数字温度传感器,起体积小、构成的系统结构简单,它可直接将温度转化成串行数字信号给单片机处理,即可实现温度显示。另外DS18B20具有3引脚的小体积封装,测温范围为-55+125摄氏度,测温分辨率可达0.0625摄氏度,其测量范围与精度都能符合设计要求。以上两种方案相比较,第二种方案的电路、软件设计更简单,此方案设计的系统在功耗、测量精度、范围等方面都能很好地达到要求,故本设计采用方案二。2.2 总体设计框图本方案设计的系统由单片机系统、数字

6、温度传感器、LED显示模块、按键控制模块、温度报警模块组成,其总体架构如下图1。单片机报警电路显示电路驱动电路测温电路按键输入电路时钟、复位电路图1 系统总体方框图三、 硬件设计3.1 单片机系统1. 本设计采用STC89C52单片机作为控制器,完成所有功能的控制,包括:l DS18B20数字温度传感器的初始化和读取温度值l LED数码管显示驱动与控制l 按键识别和响应控制l 温度设置和报警l 温度值的存储和读取2. 单片机系统电路原理图:图2 单片机系统原理图3.2 数字温度传感器模块3.2.1 DS18B20性能l 独特的单线接口仅需一个端口引脚进行通信l 简单的多点分布应用l 无需外部器

7、件l 可通过数据线供电l 零待机功耗l 测温范围-55+125,以0.5递增l 可编程的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625l 温度数字量转换时间200ms,12位分辨率时最多在750ms内把温度转换为数字l 应用包括温度控制、工业系统、消费品、温度计和任何热感测系统l 负压特性:电源极性接反时,传感器不会因发热而烧毁,但不能正常工作3.2.2 DS18B20外形及引脚说明图3 DS18B20外形及引脚l GND:地l DQ:单线运用的数据输入/输出引脚l VD:可选的电源引脚3.2.3 DS18B20接线原理图单总线通常要求接一个约4.7K左右的

8、上拉电阻,这样,当总线空闲时,其状态为高电平。图4 DS18B20接线原理图3.2.4 DS18B20时序图主机使用时间隙来读写DS18B20的数据位和写命令字的位。1. 初始化时序如下图:图5 DS18B20初始化时序2. DS18B20读写时序:图6 DS18B20读写时序3.2.5 数据处理高速暂存存储器由9个字节组成,其分配如表5所示。当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在 高速暂存存储器的第0和第1个字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后。图7 字节分配下表为12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中

9、的前面5位是符号位,如果测得的温度大于0, 这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际 温度。 例如+125的数字输出为07D0H,实际温度=07D0H*0.0625=2000*0.0625=125。例如-55的数字输出为FC90H,则应先将11位数据位取反加1得370H(符号位不变,也不作运算),实际温度=370H*0.0625=880*0.0625=55。可见其中低四位为小数位。图8 DS18B20温度数据表3.3 显示电路LED数码管显示采用动态扫描方式,能简化电路布线,节约单片机I/O端

10、口。段码和位码由单片机P0送出,分别用74HC673N锁存。图9 数码管驱动显示电路3.4 声光报警电路当温度超过设定温度值时,实现声光报警,蜂鸣器鸣叫、8个发光二极管点亮。蜂鸣器由单片机P23口控制,用三极管驱动,发光二极管接单片机P1口,由74HC673N锁存。图10 声光报警电路3.5 键盘输入电路四个键分别连接单片机P34、P35、P36、P37构成独立式键盘,分别实现报警温度范围上下限的设定功能。图11 键盘输入电路四、软件设计4.1 主程序模块主程序需要调用3个子程序,分别为:l 实时温度显示子程序:驱动数码管把实时温度值送出在LED数码管显示l 查询记录温度值子程序:查询过去存储

11、的温度值,最多可查询10个值l 温度设定、报警子程序:设定报警温度值,当温度超过该值时产生报警,即驱动蜂鸣器鸣叫、8个发光二极管发光主程序流程图:开始定时器初始化、启动显示实时温度温度设定、报警查询记录温度值图12 主程序流程图4.2 读温度值模块读温度值模块需要调用4个子程序,分别为:l DS18B20初始化子程序:让单片机知道DS18B20在总线上且已准备好操作l DS18B20写字节子程序:对DS18B20发出命令l DS18B20读字节子程序:读取DS18B20存储器的数据l 延时子程序:对DS18B20操作时的时序控制1. 读温度值模块流程图:入口数据转换处理读取温度值高低位跳过读序

12、列号DS18B20初始化延时启动温度转换跳过读序列号DS18B20初始化返回图13 读温度值子程序流程图 2. DS18B20初始化子程序流程图:入口DQ为低电平?延时1560msDQ拉高电平延时>480msDQ复位0稍延时DQ置高电平N返回Y图14 DS18B20初始化子程序流程图3. DS18B20写字节和读字节子程序流程图: 图15 DS18B20写字节子程序流程图图16 DS18B20读字节子程序流程图4.3 中断模块中断采用T0方式1,初始值定时为50ms。中断模块需调用两个子程序:l 读温度值子程序:定时读取温度值,实时更新温度值l 记录温度值子程序:定时记录温度值,供查询使

13、用把这两个子程序放在中断的原因是,不会因为调整报警温度或查询历史温度值而停止更新温度值和记录温度值。中断模块流程图:1秒?计数值加1定时器重置初值中断入口读温度值Y中断返回记录温度值 N图17中断模块流程图4.4 温度查询模块温度查询模块需要接受按键输入,进入查询界面后,按加减键分别查询上一个和下一个历史温度值,并驱动数码管显示需要查询的温度值。温度查询模块流程图如下:入口功能键按下? N确认按下?延时消抖 YN显示温度值与位次 Y加键按下?N确认按下?延时消抖 Y查询下一个值Y减键按下? NN查询上一个值确认按下?延时消抖 YY退出功能键按下? NN返回 Y图18 温度查询模块流程图4.5

14、温度设定、报警模块此模块跟温度查询模块类似,需要接受按键输入,进入模块界面后,按加减键分别上调和下调设定报警温度值,当实时温度值超过设定值时驱动蜂鸣器发声,并点亮8位发光二极管,实现声光报警。温度设定、报警模块流程图如下:入口延时消抖减键按下?确认按下?延时消抖加键按下?显示设定温度值确认按下?延时消抖功能键按下?N YN YN Y上调设定值Y NN Y下调设定值确认按下?Y N声光报警温度超出设定值?Y N取消报警判断退出界面?N Y返回图19 温度设定、报警模块流程图4.6 数码管驱动模块本设计数码管通过锁存器接单片机P0口,采用动态扫描驱动7段LED数码管进行显示,需调用延时子程序以稳定

15、显示。模块流程图如下:P0清零关位选送位码开位选P0置高关段选入口开段选延时关段选送段码返回图20 数码管驱动模块流程图五、总结此次课程设计中,难点在于DS18B20的使用,即对它的时序控制、初始化以及字节读写方法,任何一个环节出错或是时序控制不到位的话就不能得到正确的数据。一旦学会了正确的使用方法,就能感觉到它带来的便利是热电偶不能比拟的,以后再次使用的话就能很快上手了。软件设计中,把程序按功能分模块的话能提高编程效率,把问题一一解决,同时画流程图能帮助理清思路,使问题简单化。定义变量时,尽量定义局部变量,在字符型变量能达到要求的情况下就不用定义成整形变量了,以节省内存空间。同时局部变量应避

16、免与全局变量取同名,否则全局变量将被屏蔽或与局部变量相冲突而达不到设计的效果。另一方面,取变量名时也要讲究技巧,应尽量使其见名知意,同样地,写程序时加注释确是非常必要的,否则隔一段时间后,想再改进或做扩展的话就比较困难了,因为即使是自己写的程序也变得难读难懂了。在做键盘消抖时,延时的时间比较重要,一般为10ms左右,延时太短就会使按键太过灵敏,按一下就使数字跳变几次;而延时过长则可能使按键按下了却无响应,在外部定义初始化一个延时函数的入口参量则能很方便地调整延时时间,以达到比较好的效果。另外,如果对按键进行释放判断的话就能解决长时间按键导致按键重复响应的问题。此设计中没有为温度的单位(摄氏度)准备专用的数码管来显示,若单独用一个数码管显示“C”来代替“”的话,看起来感觉很别扭。偶然想起如若用一个数码管的上半部显“0”,即a、b、f、g段点亮,来代替“”左上角的“度”的话,效果应该不错,便作了一试,发现这是确是一个很好的主意,便在此次设计中采用了这个办法来显示温度单位。另外此次设计也考虑了实时温度显示界面与报警温

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论