--------学院
《单片机原理与应用》 课程设计
班级: 姓名: 学号: 成绩: 教师:
2012 级通信工程 xxx 11111111
摘要
温度采集系统
【摘要】 本文介绍了一个基于单片机的、能够显示时钟和温度的系统,他能显示实时 温度,并在低于下限温度和高于上限温度时蜂鸣器发出报警,还能显示 24 小时 制的实时时钟, 并且可对时、 分、 秒进行调整。 MCU 采用基于 51 内核的 STC89C52RC 单片机,温度传感器采用单总线的、数字式的 DS18B20;时钟由 MCU 内部的高精 度定时器产生,并将结果显示在 LCD1602 液晶屏上。本设计还包含 EEPROM 芯片 AT24C02 用来存储需要保存的数据;以及 5 个按键,可以对温度的阈值和时间进 行调整,为节约资源降低成本,每个按键均有复用功能。 【关键字】 :单片机;DS18B20;实时温度;LCD1602;上下限阈值
Ⅰ
目录
第一章 设计要求与设计任务..................................................................................................1 1.1 设计内容及功能要求 ......................................................................................................1 1.2 设计任务....................................................................................................................... 1 第二章主要功能及工作流程 ............................................................................................... 2 2.1 系统主要功能 .............................................................................................................. 2 2.2 系统的工作流程 ...............................................................................................................2 2.2.1 2.2.2 2.2.3 主界面 ............................................................................................................... 2 调整温度阈值界面 ......................................................................................... 3 历史温度查看界面 ......................................................................................... 4
第三章硬件电路原理描述 ........................................................................................................5 3.1 硬件电路原理图.......................................................................................................... 5 3.2 电路原理说明 ....................................................................................................................6 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 MCU 最小系统 ................................................................................................. 6 温度采集 ........................................................................................................... 7 界面显示 ........................................................................................................... 7 I2C 串行 E2PROM.............................................................................................. 7 人机交互 ........................................................................................................... 7 编程接口 ........................................................................................................... 7 电源电路 ........................................................................................................... 7
第四章 软件设计流程及描述............................................................................................. 8 4.1 软件设计思路 .............................................................................................................. 8 4.2 软件设计流程 .............................................................................................................. 8 心得体会................................................................................................................................ 10 参考文献................................................................................................................................ 11
第一章设计内容及功能要求
第一章设计内容及功能要求
1.1 设计功能要求 利用 STC89C52、DS18B20、LCD1602、AT24C02 等芯片/元器件设计一个数据 采集与显示系统。系统具有以下功能:
1.1.1 基本功能要求 (1) 能实时采集温度,显示在 1602 上; (2) 能实时显示时钟,在 1602 上; (3) 按键 1 按下,将当前的温度值保存到 AT24C02 (4) 按键 2 按下,可逐个显示之前采集到的温度值; (5) 当温度超过设定值,则蜂鸣器报警。 1.1.2 扩展功能: 自行设定,如按键调整温度报警阈值、调整时间等 1.2 设计任务 (1) 根据设计内容与要求,查找资料,进行硬件设计,包括原理图的设计和 PCB 的绘制,元器件的焊接。 (2) 根据设计内容与要求,弄清系统及各个模块的工作流程,完成系统的软 件设计,包括系统主程序、温度读取子程序、LCD 显示子程序、存储子程 序等,可使用汇编语言或是 C 语言编写,建议使用 C 语言编写。 (3) 建议首先使用 Proteus 进行仿真和调试,在仿真通过后,再程序下载到 单片机应用系统中,最终使得系统在脱机情况下,能稳定可靠地工作。 (4) 编写课程设计报告。
1
二章 主要功能及工作流程
第二章主要功能及工作流程
2.1 系统主要功能 本设计采用 STC89S52RC 作为主控器,负责控制整个系统的运转和数据的输 入输出。包含 1 个 LCD1602 显示屏,在主界面显示实时温度和实时时钟,温度通 过 MCU 模拟单总线时序从 DS18B20 读取经过数字化的温度,经过转换后以 2 位 整数和 1 位小数的形式呈现出来;实时时钟由定时器产生精准稳定的计数脉冲, 在显示屏上显示 24 小时制的时、分、秒。 为了能够更好的检测温度的变化,系统设置了两个温度阈值,同时配备了一 个有源蜂鸣器, 当低于下限阈值时蜂鸣器将发出间歇的蜂鸣声,当超过上限温度 阈值时将发出持续的蜂鸣声。 同时系统带有一块 2kbit 的 EEPROM 芯片 AT24C02, 可以保存这两个阈值,系统每次上电时从芯片读取阈值,使系统的可用性更佳。 系统还包含 5 个按键,通过操作按键可以方便的调整温度上下限阈值和校准 时钟,以及将需要保存的温度保存在 AT24C02 中和读取保存的历史温度。 2.2 系统的工作流程 在接受各种流程之前先介绍一下按键,系统挂载有 5 个按键,分上、下、左、右、和设置/退出键,布局如右。 由于 LCD1602 只能显示 2 行,每行显示 16 个字符,因此
2
二章 主要功能及工作流程
同时显示的内容有限, 所以依据不同功能分成 3 个屏幕内容显示分开, 分别如下: 2.2.1 主界面 该界面显示实时温度和时间,按固定时间刷新屏幕内容,其显示效果如下
2
二章 主要功能及工作流程
同时可以在该界面调整时钟,通过按下“设置/退出”键即可进入,此时光
标将开启, 通过按下 “左” 、 “右” 键可以选择对时、 分、 秒中的某一项进行调整, 默认是选择上一次操作过的项,通过按下“上” 、 “下”键对选中的项加或者减, 长按将持续累加或者减小。按下“设置/退出”键将进入下一个界面。操作效果 如下:
2.2.2 调整温度阈值界面 由于在不同场合下对温度的感知范围不同,所以需要对温度阈值做调整。本 系统基于这一点在做软件设计是加入了温度阈值调整的功能, 温度阈值分为上限 阈值和下限阈值,温度过低或者过高都将报警,以提醒用户。 该界面进入方法为:在主界面下按两下“设置/退出”键,或者在上述的时 间调整时再次按下“设置/退出”键。在该界面下,将显示之前保存的两个阈值, 通过按下左、右键可以选择对上限或者下限进行调整,通过按下上、下键对选中 的项加或者减, 长按将持续累加或者减小。但是这里对数据的合理性做了一些规
3
二章 主要功能及工作流程
范, 即温度下限阈值增加到比上限小一时将不再增加,同样上限阈值减小到比下 限大一时将不再减小。按下“设置/退出”键退出该界面,同时将设置好的阈值 将写入 EEPROM 中,保证系统掉电后不会重置该值。该界面效果如下
3
二章 主要功能及工作流程
2.2.3 历史温度查看界面 我想首先介绍一下温度保存的过程,在主界面下,通过按“上”键可以将此 刻的温度保存到 EEPROM 中, 一共只保存近三次的数据。 保存成功后屏幕右上角 将显示字符“S”以提示保存成功,下次刷新屏幕时会将其清除。其显示时间较 短,不容易捕获,所以在此不展示效果图。 现在介绍一下该界面的进入方式,在主界面下通过按下“下”键即可进入该 界面,默认显示第一次保存的温度数据,通过“左” 、 “右”键可以切换前一次或 者后一次保存的数据, 同时程序从 EEPROM 中读取对应的数据进行显示。 第一行 显示当前的显示是第几次保存的温度数据, 第二行显示温度数据。 再次按下 “下” 键可以退回到主界面。效果如下
4
第三章硬件电路原理描述
第三章硬件电路原理描述
3.1 硬件电路原理图
5
3.2 电路原理说明
本设计采用的控制器STC89C52RC是我国宏晶科技(STC)生产的一种低功耗、高性能CMOS8位微控制器。其内部包含8k的FLASH和512B的RAM。STC89C52RC采用经典的MCS-51内核,完全兼容MCS-51的指令集。但又具备传统51单片机所不具备的功能。STC89C52RC可使用串口在系统编程(ISP),是得硬件设计得以到达简化。同时搭配合适的外围构成一个完整的温度采集系统。
3.2.1 MCU最小系统
单片机的最小系统采用经典的参数和结构,保证MCU温度可靠的运行。晶振频率为11.0592MHz,以使得处理器可以获得精准的波特率,方便系统的调试。同时P1口接有8个LED,在系统运行间隙,改变点亮数量和位置,可以形成跑马灯,一方面获得较好的观赏性,另外一方面可以监测系统是否正常运行。
3.2.2 温度采集
温度采集采用美国DALLAS半导体公司推出支持“一线总线”接口的温度传感器DS18B20,它具有微型化、低功耗、高性能、抗干扰能力强、易配微处理器等优点,可直接将温度转化成数字信号处理器处理。测量范围为-25℃~+125℃,测量误差为±0。5℃。可程序控制调整分辨率9~12位,可实现较高的测量精度。DS18B20采用单总线与控制器相连,采用开漏输出,因此要接上拉电阻以实现数据双向传输。
3.2.3 界面显示
人机界面采用字符液晶LCD1602,可以显示16*2个字符。内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,我们常用的数字和英文字符其代码与ASCII码一致,所以在传送数据时可以直接传送字符,不需要查找对应的代码。
3.2.4 I2C串行E2PROM
E2PROM用来存储温度上下限等需要掉电保持的数据,本设计采用的
E2PROM是Ateml公司的2KB的电可擦除存储芯片。该芯片采用两线串行的I2C总线和单片机通信,电压最低可以到2.5V,额定电流为1mA,静态电流10uA(5.5V),芯片内的数据可以在断电的情况下保存40年以上。由于MCU没有带I2C的硬件控制器,所以需要利用I/O口模拟,因为I2C是双向通信的总线,因此需要接上拉电阻,典型值为10KΩ。
3.2.5 人机交互
为了让使用者更好的操作该系统,所以给系统设计了5个按键,为使用者提供了良好的人机交互平台。另外蜂鸣器可以让用户更直观和方便的感知处理结果。
3.2.6 编程接口
为了系统在开发期间可以方便的进行调试与修改,基于MAX232设计了
RS-232转TTL的串口转换电路,可以方便的通过ISP程序为系统编程。另外也留了4针的串口接口,可以方便使用笔记本的开发者利用USB转串口的下载器为系统编程,极大的提高了系统的灵活性。
3.2.7 电源电路
电源接口采用DC-005型直流电源插座,供电电压为5V±10%。为防止供电用的适配器电压参数的分散性,致使器件因过压而损坏。因此硬件设计时为系统加了LDO,以保证供电电压偏高时不会损坏电路,然而在可以确保供电电压为标准的5V电压时可以去掉LDO,并将LDO的输入输出焊盘短接。
第四章软件设计流程及描述
4.1 软件设计思路
由于本次设计的外围较多,任务量偏大,虽然采用以往的大循环式的编程结构可以实现整个功能。但是在这里使用这种软件结构将使软件的设计难度提高,开发周期同时不便调试和功能扩展。所以本设计采用状态机式的软件结构。所谓状态机就是将系统功能分成多个任务,根据不同触发条件来执行相应的任务。
在本设计中的任务可大致分为温度读取、刷新显示、温度保存、温度越限监测、按键扫描、时钟更新等多个任务,每个任务的执行时间相差很远,而且有些任务并不需要每次都执行。例如温度保存,其只在有相应的按键触发后执行,这样将导致每次的大循环时间摇摆不定,从而使系统的可控性降低,甚至诱发系统崩溃。所以软件只设定了5个状态,每个状态执行一个或多个任务,并保证每个状态的执行时间大致相当,再留出一定的余量。这样就可以利用定时器来定时切换状态,使之逐个状态执行下去。虽然看取来和大循环式的结构差不多,但是该方式非常便于功能扩展,可以在完全不影响任务执行的同时添加一些小任务,如果这些任务没有呈现如何结果给用户,那么用户根本不会察觉。
4.2 软件设计流程图
主函数
中断服务函数
心得体会
纸上得来终觉浅,绝知此事要躬行。经过一个学期的单片机课程学习,怎么把“纸上”的东西转化为实物,本次课设就是最好的途径,他不光可以检测你学到了什么,更重要的是在过程中培养出来的实践能力。
对我而言,由于很早就自学了单片机,对51的软硬件均有一定了解。但之前做的都是小东西,复杂度远没有这次课设的高,因此也花了不少时间。相对硬件花的时间较短,一天半的时间就做完了,主要的时间花在软件的编写和调试。软件结构一开始采用的是大循环式的,从最简单的温度显示开始一点一点往上加,渐渐发现程序结构变得越来越乱,且增加功能也变得困难。然后果断采用了状态机式,才使得程序设计得以快速实现。
最后要感谢林峰老师的悉心指导,引导我们学习单片机课程,帮助我解决在学习过程中遇到问题和困难。本次课设成功的完成离不开林老师及同学们的帮助和指导,在此衷心感谢帮助过我的老师和同学!
参考文献
[1] 徐敏. 单片机原理及应用[M]. 北京:机械工业出版社,2012.
[2] 庹先国. 电子系统设计——基础篇(第三版)[M].北京:北京航空航天大学出版社,2014.
[3] 郭天祥. 新概念51单片机C语言教程[M]:北京: 电子工业出版社,2009.
[4] 童师白,华成英. 模拟电子技术基础[M]. 北京:高等教育出版社,1980.
2[5] 何立民.IC总线应用系统设计[M].北京:北航出版社,1995.
[6] 王辉堂,颜自勇,陈文芗.一种基于C51的多任务机制及应用[J].电子设计应用,2006,(06):45-48.
[7] 钱宜平. 基于单片机应用系统的多任务程序结构设计[J]. 无锡职业技术学院学报,2014,13(2):31-35.
--------学院
《单片机原理与应用》 课程设计
班级: 姓名: 学号: 成绩: 教师:
2012 级通信工程 xxx 11111111
摘要
温度采集系统
【摘要】 本文介绍了一个基于单片机的、能够显示时钟和温度的系统,他能显示实时 温度,并在低于下限温度和高于上限温度时蜂鸣器发出报警,还能显示 24 小时 制的实时时钟, 并且可对时、 分、 秒进行调整。 MCU 采用基于 51 内核的 STC89C52RC 单片机,温度传感器采用单总线的、数字式的 DS18B20;时钟由 MCU 内部的高精 度定时器产生,并将结果显示在 LCD1602 液晶屏上。本设计还包含 EEPROM 芯片 AT24C02 用来存储需要保存的数据;以及 5 个按键,可以对温度的阈值和时间进 行调整,为节约资源降低成本,每个按键均有复用功能。 【关键字】 :单片机;DS18B20;实时温度;LCD1602;上下限阈值
Ⅰ
目录
第一章 设计要求与设计任务..................................................................................................1 1.1 设计内容及功能要求 ......................................................................................................1 1.2 设计任务....................................................................................................................... 1 第二章主要功能及工作流程 ............................................................................................... 2 2.1 系统主要功能 .............................................................................................................. 2 2.2 系统的工作流程 ...............................................................................................................2 2.2.1 2.2.2 2.2.3 主界面 ............................................................................................................... 2 调整温度阈值界面 ......................................................................................... 3 历史温度查看界面 ......................................................................................... 4
第三章硬件电路原理描述 ........................................................................................................5 3.1 硬件电路原理图.......................................................................................................... 5 3.2 电路原理说明 ....................................................................................................................6 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 MCU 最小系统 ................................................................................................. 6 温度采集 ........................................................................................................... 7 界面显示 ........................................................................................................... 7 I2C 串行 E2PROM.............................................................................................. 7 人机交互 ........................................................................................................... 7 编程接口 ........................................................................................................... 7 电源电路 ........................................................................................................... 7
第四章 软件设计流程及描述............................................................................................. 8 4.1 软件设计思路 .............................................................................................................. 8 4.2 软件设计流程 .............................................................................................................. 8 心得体会................................................................................................................................ 10 参考文献................................................................................................................................ 11
第一章设计内容及功能要求
第一章设计内容及功能要求
1.1 设计功能要求 利用 STC89C52、DS18B20、LCD1602、AT24C02 等芯片/元器件设计一个数据 采集与显示系统。系统具有以下功能:
1.1.1 基本功能要求 (1) 能实时采集温度,显示在 1602 上; (2) 能实时显示时钟,在 1602 上; (3) 按键 1 按下,将当前的温度值保存到 AT24C02 (4) 按键 2 按下,可逐个显示之前采集到的温度值; (5) 当温度超过设定值,则蜂鸣器报警。 1.1.2 扩展功能: 自行设定,如按键调整温度报警阈值、调整时间等 1.2 设计任务 (1) 根据设计内容与要求,查找资料,进行硬件设计,包括原理图的设计和 PCB 的绘制,元器件的焊接。 (2) 根据设计内容与要求,弄清系统及各个模块的工作流程,完成系统的软 件设计,包括系统主程序、温度读取子程序、LCD 显示子程序、存储子程 序等,可使用汇编语言或是 C 语言编写,建议使用 C 语言编写。 (3) 建议首先使用 Proteus 进行仿真和调试,在仿真通过后,再程序下载到 单片机应用系统中,最终使得系统在脱机情况下,能稳定可靠地工作。 (4) 编写课程设计报告。
1
二章 主要功能及工作流程
第二章主要功能及工作流程
2.1 系统主要功能 本设计采用 STC89S52RC 作为主控器,负责控制整个系统的运转和数据的输 入输出。包含 1 个 LCD1602 显示屏,在主界面显示实时温度和实时时钟,温度通 过 MCU 模拟单总线时序从 DS18B20 读取经过数字化的温度,经过转换后以 2 位 整数和 1 位小数的形式呈现出来;实时时钟由定时器产生精准稳定的计数脉冲, 在显示屏上显示 24 小时制的时、分、秒。 为了能够更好的检测温度的变化,系统设置了两个温度阈值,同时配备了一 个有源蜂鸣器, 当低于下限阈值时蜂鸣器将发出间歇的蜂鸣声,当超过上限温度 阈值时将发出持续的蜂鸣声。 同时系统带有一块 2kbit 的 EEPROM 芯片 AT24C02, 可以保存这两个阈值,系统每次上电时从芯片读取阈值,使系统的可用性更佳。 系统还包含 5 个按键,通过操作按键可以方便的调整温度上下限阈值和校准 时钟,以及将需要保存的温度保存在 AT24C02 中和读取保存的历史温度。 2.2 系统的工作流程 在接受各种流程之前先介绍一下按键,系统挂载有 5 个按键,分上、下、左、右、和设置/退出键,布局如右。 由于 LCD1602 只能显示 2 行,每行显示 16 个字符,因此
2
二章 主要功能及工作流程
同时显示的内容有限, 所以依据不同功能分成 3 个屏幕内容显示分开, 分别如下: 2.2.1 主界面 该界面显示实时温度和时间,按固定时间刷新屏幕内容,其显示效果如下
2
二章 主要功能及工作流程
同时可以在该界面调整时钟,通过按下“设置/退出”键即可进入,此时光
标将开启, 通过按下 “左” 、 “右” 键可以选择对时、 分、 秒中的某一项进行调整, 默认是选择上一次操作过的项,通过按下“上” 、 “下”键对选中的项加或者减, 长按将持续累加或者减小。按下“设置/退出”键将进入下一个界面。操作效果 如下:
2.2.2 调整温度阈值界面 由于在不同场合下对温度的感知范围不同,所以需要对温度阈值做调整。本 系统基于这一点在做软件设计是加入了温度阈值调整的功能, 温度阈值分为上限 阈值和下限阈值,温度过低或者过高都将报警,以提醒用户。 该界面进入方法为:在主界面下按两下“设置/退出”键,或者在上述的时 间调整时再次按下“设置/退出”键。在该界面下,将显示之前保存的两个阈值, 通过按下左、右键可以选择对上限或者下限进行调整,通过按下上、下键对选中 的项加或者减, 长按将持续累加或者减小。但是这里对数据的合理性做了一些规
3
二章 主要功能及工作流程
范, 即温度下限阈值增加到比上限小一时将不再增加,同样上限阈值减小到比下 限大一时将不再减小。按下“设置/退出”键退出该界面,同时将设置好的阈值 将写入 EEPROM 中,保证系统掉电后不会重置该值。该界面效果如下
3
二章 主要功能及工作流程
2.2.3 历史温度查看界面 我想首先介绍一下温度保存的过程,在主界面下,通过按“上”键可以将此 刻的温度保存到 EEPROM 中, 一共只保存近三次的数据。 保存成功后屏幕右上角 将显示字符“S”以提示保存成功,下次刷新屏幕时会将其清除。其显示时间较 短,不容易捕获,所以在此不展示效果图。 现在介绍一下该界面的进入方式,在主界面下通过按下“下”键即可进入该 界面,默认显示第一次保存的温度数据,通过“左” 、 “右”键可以切换前一次或 者后一次保存的数据, 同时程序从 EEPROM 中读取对应的数据进行显示。 第一行 显示当前的显示是第几次保存的温度数据, 第二行显示温度数据。 再次按下 “下” 键可以退回到主界面。效果如下
4
第三章硬件电路原理描述
第三章硬件电路原理描述
3.1 硬件电路原理图
5
3.2 电路原理说明
本设计采用的控制器STC89C52RC是我国宏晶科技(STC)生产的一种低功耗、高性能CMOS8位微控制器。其内部包含8k的FLASH和512B的RAM。STC89C52RC采用经典的MCS-51内核,完全兼容MCS-51的指令集。但又具备传统51单片机所不具备的功能。STC89C52RC可使用串口在系统编程(ISP),是得硬件设计得以到达简化。同时搭配合适的外围构成一个完整的温度采集系统。
3.2.1 MCU最小系统
单片机的最小系统采用经典的参数和结构,保证MCU温度可靠的运行。晶振频率为11.0592MHz,以使得处理器可以获得精准的波特率,方便系统的调试。同时P1口接有8个LED,在系统运行间隙,改变点亮数量和位置,可以形成跑马灯,一方面获得较好的观赏性,另外一方面可以监测系统是否正常运行。
3.2.2 温度采集
温度采集采用美国DALLAS半导体公司推出支持“一线总线”接口的温度传感器DS18B20,它具有微型化、低功耗、高性能、抗干扰能力强、易配微处理器等优点,可直接将温度转化成数字信号处理器处理。测量范围为-25℃~+125℃,测量误差为±0。5℃。可程序控制调整分辨率9~12位,可实现较高的测量精度。DS18B20采用单总线与控制器相连,采用开漏输出,因此要接上拉电阻以实现数据双向传输。
3.2.3 界面显示
人机界面采用字符液晶LCD1602,可以显示16*2个字符。内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,我们常用的数字和英文字符其代码与ASCII码一致,所以在传送数据时可以直接传送字符,不需要查找对应的代码。
3.2.4 I2C串行E2PROM
E2PROM用来存储温度上下限等需要掉电保持的数据,本设计采用的
E2PROM是Ateml公司的2KB的电可擦除存储芯片。该芯片采用两线串行的I2C总线和单片机通信,电压最低可以到2.5V,额定电流为1mA,静态电流10uA(5.5V),芯片内的数据可以在断电的情况下保存40年以上。由于MCU没有带I2C的硬件控制器,所以需要利用I/O口模拟,因为I2C是双向通信的总线,因此需要接上拉电阻,典型值为10KΩ。
3.2.5 人机交互
为了让使用者更好的操作该系统,所以给系统设计了5个按键,为使用者提供了良好的人机交互平台。另外蜂鸣器可以让用户更直观和方便的感知处理结果。
3.2.6 编程接口
为了系统在开发期间可以方便的进行调试与修改,基于MAX232设计了
RS-232转TTL的串口转换电路,可以方便的通过ISP程序为系统编程。另外也留了4针的串口接口,可以方便使用笔记本的开发者利用USB转串口的下载器为系统编程,极大的提高了系统的灵活性。
3.2.7 电源电路
电源接口采用DC-005型直流电源插座,供电电压为5V±10%。为防止供电用的适配器电压参数的分散性,致使器件因过压而损坏。因此硬件设计时为系统加了LDO,以保证供电电压偏高时不会损坏电路,然而在可以确保供电电压为标准的5V电压时可以去掉LDO,并将LDO的输入输出焊盘短接。
第四章软件设计流程及描述
4.1 软件设计思路
由于本次设计的外围较多,任务量偏大,虽然采用以往的大循环式的编程结构可以实现整个功能。但是在这里使用这种软件结构将使软件的设计难度提高,开发周期同时不便调试和功能扩展。所以本设计采用状态机式的软件结构。所谓状态机就是将系统功能分成多个任务,根据不同触发条件来执行相应的任务。
在本设计中的任务可大致分为温度读取、刷新显示、温度保存、温度越限监测、按键扫描、时钟更新等多个任务,每个任务的执行时间相差很远,而且有些任务并不需要每次都执行。例如温度保存,其只在有相应的按键触发后执行,这样将导致每次的大循环时间摇摆不定,从而使系统的可控性降低,甚至诱发系统崩溃。所以软件只设定了5个状态,每个状态执行一个或多个任务,并保证每个状态的执行时间大致相当,再留出一定的余量。这样就可以利用定时器来定时切换状态,使之逐个状态执行下去。虽然看取来和大循环式的结构差不多,但是该方式非常便于功能扩展,可以在完全不影响任务执行的同时添加一些小任务,如果这些任务没有呈现如何结果给用户,那么用户根本不会察觉。
4.2 软件设计流程图
主函数
中断服务函数
心得体会
纸上得来终觉浅,绝知此事要躬行。经过一个学期的单片机课程学习,怎么把“纸上”的东西转化为实物,本次课设就是最好的途径,他不光可以检测你学到了什么,更重要的是在过程中培养出来的实践能力。
对我而言,由于很早就自学了单片机,对51的软硬件均有一定了解。但之前做的都是小东西,复杂度远没有这次课设的高,因此也花了不少时间。相对硬件花的时间较短,一天半的时间就做完了,主要的时间花在软件的编写和调试。软件结构一开始采用的是大循环式的,从最简单的温度显示开始一点一点往上加,渐渐发现程序结构变得越来越乱,且增加功能也变得困难。然后果断采用了状态机式,才使得程序设计得以快速实现。
最后要感谢林峰老师的悉心指导,引导我们学习单片机课程,帮助我解决在学习过程中遇到问题和困难。本次课设成功的完成离不开林老师及同学们的帮助和指导,在此衷心感谢帮助过我的老师和同学!
参考文献
[1] 徐敏. 单片机原理及应用[M]. 北京:机械工业出版社,2012.
[2] 庹先国. 电子系统设计——基础篇(第三版)[M].北京:北京航空航天大学出版社,2014.
[3] 郭天祥. 新概念51单片机C语言教程[M]:北京: 电子工业出版社,2009.
[4] 童师白,华成英. 模拟电子技术基础[M]. 北京:高等教育出版社,1980.
2[5] 何立民.IC总线应用系统设计[M].北京:北航出版社,1995.
[6] 王辉堂,颜自勇,陈文芗.一种基于C51的多任务机制及应用[J].电子设计应用,2006,(06):45-48.
[7] 钱宜平. 基于单片机应用系统的多任务程序结构设计[J]. 无锡职业技术学院学报,2014,13(2):31-35.