电子设计II课程报告.docx
《电子设计II课程报告.docx》由会员分享,可在线阅读,更多相关《电子设计II课程报告.docx(28页珍藏版)》请在冰豆网上搜索。
![电子设计II课程报告.docx](https://file1.bdocx.com/fileroot1/2023-7/21/0e1ac556-7a27-4b9b-b601-fb17a6010fd6/0e1ac556-7a27-4b9b-b601-fb17a6010fd61.gif)
电子设计II课程报告
中国矿业大学计算机学院
2013级本科生课程报告
课程名称电子设计II
报告时间2016.06.20
学生姓名张谊坤
学号08133367
专业电子信息科学与技术
任课教师王莉
任课教师评语
任课教师评语(①对课程基础理论的掌握;②对课程知识应用能力的评价;③对课程报告相关实验、作品、软件等成果的评价;④课程学习态度和上课纪律;⑤课程成果和报告工作量;⑥总体评价和成绩;⑦存在问题等):
成绩:
任课教师签字:
年月日
摘要
本设计是基于DS18B20的温度控制系统,以STC89C52为控制系统核心,通过单片机系统设计实现对温度的显示和控制功能。
本温度控制系统是一个闭环反馈调节系统,由温度传感器对外界温度进行检测,经过调理电路得到合适的电压信号。
经A/D转换芯片得到相应的温度值,将所得的温度值与设定温度值相比较得到偏差。
通过对偏差信号的处理获得控制信号,去调节,从而实现对温度的显示和控制。
本文主要介绍了温度控制系统的工作原理和设计方法,主要可以概括为四部分构成:
(一)系统整体方案设计。
(二)硬件设计,主要包括温度检测电路、显示电路、温度设计、控制电路和报警电路。
(三)系统软件设计,软件的设计采用模块化设计,主要包括显示模块、温度设置模块和恒温控制模块等。
(四)调试分析
关键词:
单片机,温度传感器,温度检测,DS18B20
目录
1绪论1
1.1选题的背景及意义1
1.2设计的要求及内容2
1.2.1功能要求2
1.2.2设计内容2
1.3实现的功能2
2理论基础3
2.1STC89C52单片机3
2.2温度传感器DS18B204
2.3DC5V散热风扇7
2.4加热片7
3硬件设计8
3.1电路原理图8
4软件设计9
4.1主程序流程图9
4.2子程序流程图11
4.2.1恒温控制子程序流程图11
4.2.2flag标志设置子程序流程图12
4.2.3温度设置子程序流程图13
4.2.4温度显示子程序流程图14
5调试分析14
5.1硬件调试14
5.2软件测试15
5.3功能实现分析15
6实验总结16
参考文献16
附录:
源代码17
1绪论
1.1选题的背景及意义
21世纪是科学技术高速发展的信息时代,电子技术、单片机技术的应用已经是非常广泛,伴随着科学技术和生产的不断发展,在生产生活中需要对各种参数进行温度测量。
因此温度一词在生产生活之中出现的频率日益增多,与之相对应的,温度控制和测量也成为了生活生产中频繁使用技术,同时它们在各行各业中也发挥着非常重要的作用。
如在日趋发达的工业领域之中,利用测量与控制温度来保证生产的正常运行;在农业生产中,用于保证蔬菜大棚的恒温保产等;在科学研究中,往往也需要一个恒温的环境作为实验的保障。
温度值是表征物体冷热程度的一个物理量,温度的测量则是工农和业生产过程中一个很重要也普遍的参数。
温度的测量及控制对保证产品的质量、提高生产的效率、节约能源、安全生产、促进经济的发展起到非常重要的作用。
因为温度测量的普遍性,使得温度传感器的数量在各种传感器中居首。
并且随着科学技术与生产的不断发展,温度传感器的种类仍然在不断增加和丰富以来满足生产生活中的各种需要。
在单片机温度控制系统中的关键是温度的测量、温度的控制和温度的保持,温度是工业控制对象中主要的被控参数之一。
因此,单片机要对温度的测量则是对温度进行有效及准确的测量,并且能够在工业生产中得广泛的应用,尤其在机械制造、电力工程化工生产、冶金工业等重要工业领域中,担负着重要的测量任务。
在日常工作和生活中,也被广泛应用于空调器、电加热器等各种室温测量及工业设备的温度测量。
但温度是一个模拟量,需要采用适当的技术和元件,将模拟的温度量转化为数字量,才生使用计算机或单片机进行相应的处理。
1.2设计的要求及内容
1.2.1功能要求
以单片机为核心,通过加热片来加热温度传感器,温度传感器检测的数值通过数码管显示出来。
并能够利用按键实现温度报警数值的设置,一旦温度超限,通过声光报警器发布报警信息。
1.2.2设计内容
恒温系统应用于各种工业或者民用领域,如何精确地控制温度成为一个非常重要的研究问题。
本系统需要利用单片机来控制各器件的工作情况,使传感器维持在一个固定的温度上。
本文所要研究的课题是基于单片机的恒温控制系统设计,主要是介绍了对温度的控制,实现了温度的实时显示与控制。
温度控制部分,提出了用DS18B20、STC89C52单片机和LED的硬件电路完成对室温的实时检测及显示,利用DS18B20与单片机连接由软件与硬件电路配合来实现对加热片和散热风扇的实时控制。
从DS18B20读出或写入DS18S20信息仅需要一根口线,其读写及其温度变换功率来源于数据线,该总线本身也可以向所挂接的DS18B20提供电源,不需要额外电源。
同时DS18S20能提供九位温度精度,它无需任何外围硬件便可方便地构成温度检测系统。
加热片通过带有继电器的电路驱动,由单片机的一根口线控制并供电,继电器需要单片机提供额外的电源。
DC5V散热风扇的实时控制也仅仅需要一根口线,由单片机供电,不需要外加电源。
而且本次的设计主要实现温度测试,温度显示,温度控制,超过设定的门限值时自动启动加热和散热装置等功能。
而且还要以单片机为主机,使温度传感器通过一根口线与单片机相连接,再加上温度控制部分和人机交互部分来共同实现温度的监测与控制。
1.3实现的功能
(1)能够连续测量环境的温度值,用十进制LED数码管来显示环境的实际温度。
(2)能够设定恒温的温度范围,初始范围是30℃~33℃。
(3)能够实现温度自动控制,如果设定温度在30℃~33℃,则能使温度保持恒定在30℃~33℃。
(4)使用单片机STC89C52控制,通过输入按键来控制恒温范围的设定值,数值采用LED数码管显示。
(5)温度超出范围时能够实现报警:
温度低在左四位数码管显示“L”字样,温度高在左四位数码管显示“H”字样,温度超出范围都会鸣笛报警。
2理论基础
2.1STC89C52单片机
STC89C52RC是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K字节系统可编程Flash存储器。
STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
标准功能:
8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。
另外STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
最高运作频率35MHz,6T/12T可选。
主要特性:
8K字节程序存储空间;512字节数据存储空间;内带4K字节EEPROM存储空间;可直接使用串口下载。
器件特性:
1.增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051.[1]
2.工作电压:
5.5V~3.3V(5V单片机)/3.8V~2.0V(3V单片机)
3.工作频率范围:
0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz
4.用户应用程序空间为8K字节
5.片上集成512字节RAM
6.通用I/O口(32个),复位后为:
P0/P1/P2/P3是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。
7.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片
8.具有EEPROM功能
9.共3个16位定时器/计数器。
即定时器T0、T1、T2
10.外部中断4路,下降沿中断或低电平触发电路,PowerDown模式可由外部中断低电平触发中断方式唤醒
11.通用异步串行口(UART),还可用定时器软件实现多个UART
12.工作温度范围:
-40~+85℃(工业级)/0~75℃(商业级)
13.PDIP封装
2.2温度传感器DS18B20
DS18B20是常用的温度传感器,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。
工作原理:
DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s减为750ms。
DS18B20测温原理如图2-1所示。
图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。
高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。
计数器1和温度寄存器被预置在-55℃所对应的一个基数值。
计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。
斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。
DS18B20的主要特性:
(1)适应电压范围更宽,电压范围:
3.0~5.5V,在寄生电源方式下可由数据线供电
(2)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯
(3)DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温
(4)DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内
(5)温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃
(6)可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温
(7)在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快
(8)测量结果直接输出数字温度信号,以"一线总线"串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力
(9)负压特性:
电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。
接线方法:
面对着扁平的那一面,左负右正,一旦接反就会立刻发热,有可能烧毁!
同时,接反也是导致该传感器总是显示85℃的原因。
实际操作中将正负反接,传感器立即发热,液晶屏不能显示读数,正负接好后显示85℃。
特点
独特的一线接口,只需要一条口线通信多点能力,简化了分布式温度传感应用无需外部元件可用数据总线供电,电压范围为3.0V至5.5V无需备用电源测量温度范围为-55℃至+125℃。
华氏相当于是-67华氏度到257华氏度-10℃至+85℃范围内精度为±0.5℃
温度传感器可编程的分辨率为9~12位,温度转换为12位数字格式最大值为750毫秒,用户可定义的非易失性温度报警设置,应用范围包括恒温控制、工业系统、消费电子产品温度计、或任何热敏感系统
描述该DS18B20的数字温度计提供9至12位(可编程设备温度读数)。
由于DS18B20是一条口线通信,所以中央微处理器与DS18B20只有一个一条口线连接。
为读写以及温度转换可以从数据线本身获得能量,不需要外接电源。
因为每一个DS18B20的包含一个独特的序号,多个ds18b20s可以同时存在于一条总线。
这使得温度传感器放置在许多不同的地方。
它的用途很多,包括空调环境控制,感测建筑物内温设备或机器,并进行过程监测和控制。
DS18B20采用一线通信接口。
因为一线通信接口,必须在先完成ROM设定,否则记忆和控制功能将无法使用。
主要首先提供以下功能命令之一:
1)读ROM,2)ROM匹配,3)搜索ROM,4)跳过ROM,5)报警检查。
这些指令操作作用在没有一个器件的64位光刻ROM序列号,可以在挂在一线上多个器件选定某一个器件,同时,总线也可以知道总线上挂有有多少,什么样的设备。
若指令成功地使DS18B20完成温度测量,数据存储在DS18B20的存储器。
一个控制功能指挥指示DS18B20的演出测温。
测量结果将被放置在DS18B20内存中,并可以让阅读发出记忆功能的指挥,阅读内容的片上存储器。
温度报警触发器TH和TL都有一字节EEPROM的数据。
如果DS18B20不使用报警检查指令,这些寄存器可作为一般的用户记忆用途。
在片上还载有配置字节以理想的解决温度数字转换。
写TH,TL指令以及配置字节利用一个记忆功能的指令完成。
通过缓存器读寄存器。
所有数据的读,写都是从最低位开始。
2.3DC5V散热风扇
散热风扇的驱动电路如图2-2所示:
风扇仅需要单片机的一根口线驱动,当I/O输出为低电平时,三极管导通,风扇启动;当I/O输出为高电平时,风扇停止。
2.4加热片
加热片驱动电路如图2-3所示:
加热片也仅仅需要单片机一根口线控制,I/O口为高电平时,继电器L与N_O端连通,加热片工作;I/O口为低电平时,继电器L与N_O端断开,加热片工作。
3硬件设计
3.1电路原理图
本设计硬件主要分单片机部分和恒温部分。
单片机部分继续使用上学期电子设计I的焊接好的板子,电路图这里就不详细说明了;下面详细地说明一下恒温部分的电路原理图。
恒温部分分为散热和加热两部分。
加热部分:
散热部分:
4软件设计
4.1主程序流程图
主程序流程图4-1如下所示:
进行初始化之后,进入一个while
(1)的死循环里,不断的根据flag的值来更新工作的状态。
当flag=0时,进入温度实时显示部分,在显示的同时还会进行恒温状态的控制;当flag=1时,进入恒温范围下限的设置的界面,利用按键设置目标值,并同时实现恒温控制;当flag=2时,进入恒温范围上限的设置的界面,利用按键设置目标值,并同时实现恒温控制。
flag标志通过按键更新,0—2循环,到3自动变为0。
4.2子程序流程图
4.2.1恒温控制子程序流程图
在恒温控制子程序中,通过对当前温度值的判断来决定要执行的动作:
温度过高时,执行高温时所对应的相关动作,即最左边4位数码管显示“H”字样,红色报警指示灯亮,同时风扇启动散热,加热片不工作;温度过低时,执行低温时所对应的相关动作,即最左边4位数码管显示“L”字样,蓝色报警指示灯亮,同时加热片启动加热,散热风扇不工作;在温度正常显示时,数码管左4位没有显示,绿色警报指示灯亮,加热片和风扇都不工作。
4.2.2flag标志设置子程序流程图
flag标志作为温度显示和温度设置之间的转换标志,其设置的过程必须清晰且正确:
flag初始值为0,即初始状态为温度显示与恒温控制状态;当K1按键按下时,延时100ms以消除抖动,防止误触,然后flag标志自加1;当flag=1时,进入恒温范围下限的设置的界面,并同时实现恒温控制;当flag=2时,进入恒温范围上限的设置的界面,并同时实现恒温控制;flag自加到3时,会自动重置为0。
4.2.3温度设置子程序流程图
温度设置子程序流程图如下所示:
恒温范围的设置主要由K2、K3l两个按键完成:
K2按下,延时100ms消除抖动,防止误触,然后相应的温度范围+0.1℃;K3按下,延时100ms消除抖动,防止误触,然后相应的温度范围-0.1℃;
4.2.4温度显示子程序流程图
温度显示时,主要是数码管的位选和段选的循环执行,来不断地更新当前温度的显示。
5调试分析
该设计硬件电路连接组装好以后,便可进入系统调试,其主要任务是排除存在硬件故障,并完善其硬件的结构,运行所设计的程序,排除程序存在错误,并优化程序结构,使系统达到期望的性能。
5.1硬件调试
单片机系统的硬件和软件调试应是相互进行的,但通常是先排除明显的硬件故障:
1.开路、短路:
由于焊接技术导致的开路、短路等故障。
解决方法:
对照原理图用万用表检测,补焊即可。
2.元器的件损坏:
由于对所使用的元器件不熟悉及制焊接过程中操作不当致使器件损坏。
解决方法:
仔细阅读元器件的应用环境,仔细焊接。
3.电源故障:
上电后造成元器件损坏、无法正常的供电,电路不能正的常工作。
电源故障包括:
电压值不符合设计要求,电源引出线与插座不对应,各档电源之间短路等。
解决方法:
电源必须单独的调试好以后才能加到系统各个部件中。
5.2软件测试
设计软件部分出问题的现象:
1. 以断点或连续方式运行时,目标没有按规定的功能进行操作或什么结果也没有,是由于程序转移到某处死循环所造成的。
解决方法:
这类错误的原因是程序中跳转的地址计算错误、堆栈的溢出、工作寄存器的冲突等,检查各处逻辑,更改之。
2. 对中断不相应。
CPU不响应中断的现象是连续运行时不执行中断任务程序的规定操作,当断点设在中断入口或中断服务程序中时碰不到断点。
解决方法:
更改中断控制寄存器(IE,IP)的设置。
3. 结果不准确确。
系统基本上可以正常操作,但控制会有误动作或者输出结果不正确。
这种错误大多是由于算法错误引起的。
错误原因没有查明,没有解决。
5.3功能实现分析
该设计基本上实现了计划的功能,能够实时显示并监控当前温度,当温度超出预设范围之后会有报警提示信息,能够通过键盘手动设置恒温的范围,在温度超出恒温范围时能够执行相关动作以保证在最短时间内回到恒温的温度范围。
该设计的一个不完善的地方是蓝、绿、红三种颜色的提示灯的规格不同,在焊接电路时没有考虑周全,没有加上上拉电路,结果就是三个提示灯的输入电压偏低,除了蓝色灯的亮度正常,其他灯亮度比较低。
6实验总结
在本次的设计中,所学的理论知识接受了实践的检验,增强了运用所学知识的能力及动手的能力,为以后的学习和工作打下了很好的基础。
本文以STC89C52单片机为核心,做为控制器件,温度信号通过数字式温度传感器DS18B20采集后直接转换为数字信号,单片机可以直接串行读取;温度的设定通过按键完成;能够通过加热片和风扇实现恒温控制。
在单片机应用的基础上,实现了STC89C52单片机控制传感器的自动化温度监控系统。
目前,测温控温系统快速发展,国外的测量控制系统已经相当成熟,产品也较多。
近两年,国内也出现了高精度的温度控制系统产品,但对于用户来说,价格还是偏高。
由于竞争的越来越激烈,现在企业发展的趋势是如何提高生产效率,降低生产成本。
寻求性能可靠、价格低廉,应用广泛的元器件是生产过程的首先要考虑的问题,因此像本设计这种控制简单、精度较高、价格比较低廉的控制系统将会有很好的发展前景,因此学好单片机技术以及自动自动控制理论是相当重要的。
参考文献
[1] 张毅刚.单片机原理与应用[M]高等教育出版社2005年1月,第2版
[2] 曹巧媛主编.单片机原理与应用 [M] 北京:
电子工业出版社,2003
[3] 何民编.单片机教程[M]北京:
北京大学出版社,2000
[4] 金发庆编 传感器技术与应用[M]北京机械工业出版社,2002
[5] 胡寿松.自动控制原理[M].北京:
国防工业出版社,2000
[6] 刘伯春.智能PID调节器的设计与应用[M].自动化,1995
[7] 周润景,张丽娜.基于PROTEUS 的电路与单片机系统设计及仿真[M].北京:
航空航天大学出版社 ,2006
附录:
源代码
#include
#defineucharunsignedchar
#defineuintunsignedint
ucharcodem1[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//位选
ucharcodem2[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,};//段选
uintt;
uintlow=320,high=330;
voidtempchage();
voiddisplay_temp();
voiddelay_ms(uintx);
voiddelay_us(uintx);
voidshow(uintx);
voidshowh(uinthigh);
voidshowl(uintlow);
voidsetflag();
voidAlarm();
uintget_temp();
sbitds=P1^3;//DS18B20端口
sbitalarm=P1^4;
sbitk1=P3^2;
sbitk2=P3^3;
sbitk3=P3^4;
sbitfan=P1^0;
sbitheat=P1^1;
sbitblue=P1^2;
sbitgreen=P1^5;
sbitred=P1^6;
ucharflag=0;
voidmain()
{heat=0;
fan=1;
blue=0;green=0;red=0;
while
(1)
{if(flag==0)
{
display_temp();
if(k1!
=1)setflag();
}
if(flag==1)
{
Alarm();
showl(low);
if(k2!
=1)
{delay_ms
(2);
if(k2!
=1)low++;
delay_ms
(2);
while(k2==0);
}
showl(low);
if(k3!
=1)
{delay_ms
(2);
if(k3!
=1)low--;
delay_ms
(2);
while(k3==0);
}
showl(low);
if(k1!
=1)setflag();
}
if(flag==2)
{
Alarm();
showh(high);
if(k2!
=1)
{delay_ms
(2);
if(k2!
=1)high++;
delay_ms
(2);
while(k2==0);
}
showh(high);
if(k3!
=1)
{delay_ms
(2);
if(k3!
=1)high--;
delay_ms(2