基于单片机的智能温度控制器设计课程设计文档格式.docx
《基于单片机的智能温度控制器设计课程设计文档格式.docx》由会员分享,可在线阅读,更多相关《基于单片机的智能温度控制器设计课程设计文档格式.docx(43页珍藏版)》请在冰豆网上搜索。
许多情况下需要测量温度参数。
通常测温系统的主要器件是热敏电阻,由于它体积小、重复性好、测量方法简单,所以在测温系统中广泛应用。
但采用热敏电阻的测温系统需要A/D转换,而且测量精度不高。
本设计中采用Dallas公司生产的一种新型温度传感器DS18B20,它集温度测量、A/D转换于一体,其测量范围宽(-55℃~+125℃),精度高(0.0625℃),DS18B20是一款具有单总线结构的器件。
另外再搭配Dallas公司生产的另一种实时时钟芯片DS1302用以产生精确的时、分、秒信号来实现实时温度测量,显示电路采用1602液晶。
由DS18B20组建的温度测量单元体积小,便于携带、安装。
同时,DS18B20的输出为数字量,可以直接与单片机连接,无需后级A/D转换,控制简单。
由于DS18B20具有单总线特性,便于扩展,可在一根总线上挂接多个DS18B20来组建温度测量网络。
作为学习电子技术的我们,可以利用学习过的知识设计一个智能温度控制器
二、关键字
三、设计题目
四、课程设计的基本要求
任
务
与
要
求
五、设计方法
集温度测量、A/D转换于一体,其测量范围宽(-55℃~+125℃),精度高(0.0625℃),故选用方案二。
六、系统设计方案及框图
6.1智能温度控制器总体方案
6.2设计原理框图
如图6—1所示
外部扩展电路
LCD
温度传感器
微型控制器
(STC89C52)
键盘
系统电源
整个系统中前端的数字温度传感器负责测量温度的变化并将温度的变化转化为数字型号,数字温度传感器芯片负责把温度变化转换成微控制器可以识别的数字量,然后通过芯片内部的SPI总线上传给微控制器。
微控制器将表征当前温度值的数字量处理后通过直观的LCD进行方位显示,同时可以通过键盘控制微控制器进行相应的操作,如设定温度的上下限值等。
七、温度信号采集和处理
数字温度传感器(DS18B20)介绍
DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。
因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。
7.1、DS18B20产品的特点
(1)、只要求一个端口即可实现通信。
(2)、在DS18B20中的每个器件上都有独一无二的序列号。
(3)、实际应用中不需要外部任何元器件即可实现测温。
(4)、测量温度范围在-55。
C到+125。
C之间。
(5)、数字温度计的分辨率用户可以从9位到12位选择。
(6)、内部有温度上、下限告警设置。
7.2、DS18B20的引脚介绍
DS18B20的引脚为TO-92封装,其引脚功能描述见表1。
表1 DS18B20详细引脚功能描述
序号
名称
引脚功能描述
1
GND
地信号
2
DQ
数据输入/输出引脚。
开漏单总线接口引脚。
当被用着在寄生电源下,也可以向器件提供电源。
3
VDD
可选择的VDD引脚。
当工作于寄生电源时,此引脚必须接地。
图7.1DS18B20引脚说明
7.3.DS18B20的使用方法
由于DS18B20采用的是1-Wire总线协议方式,即在一根数据线实现数据的双向传输,而对STC89C52单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。
由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。
DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。
该协议定义了几种信号的时序:
初始化时序、读时序、写时序。
所有时序都是将主机作为主设备,单总线器件作为从设备。
而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。
数据和命令的传输都是低位在先。
DS18B20的复位时序
图7.2DS18B20复位时序图
DS18B20的读时序
对于DS18B20的读时序分为读0时序和读1时序两个过程。
对于DS18B20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。
DS18B20在完成一个读时序过程,至少需要60us才能完成。
图7.3DS18B20的读时序
DS18B20的写时序
对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。
对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。
图7.4DS18B20的写时序
图7.5DS18B20方框图
八、系统硬件电路
8.1控制器内部结构
图8.1STC89C52内部结构图
本次设计中采用了51内核MCU,具体型号为STC89C52,
图8.2DIP40单片机引脚图
兼容8051架构,为8位微处理器CPU。
拥有数据存储器RAM和特殊功能寄存器SFR和内部程序存储器ROM、两个定时/计数器,用以对外部事件进行计数,也可用作定时器;
四个8位可编程的I/O(输入/输出)并行端口,每个端口既可做输入,也可做输出。
一个串行端口,用于数据的串行通信。
8.2控制器具体电路
整个系统的控制部分主要完成对温度感应模块数据的读取和处理并将数据的处理结果通过控制人机界面显示出来,同时监控键盘的输入以便完成系统功能设定等操作。
图8.3复位及时钟振荡电路
控制部分电路如图所示,其中包含了微控制器、LCD接口电路、端口上拉电阻、温度传感器模块接口电路。
整个微控制系统中采用了无源晶振的形式发生MCU所需要的时钟信号。
具体电路如所示。
时钟电路中的两个电容用作补偿,使得晶振更容易起振,频率更加稳定。
系统的复位采用了上电复的形式,上电过程中微控制器复位引脚保证10ms以上的高电平就能可靠的将微控制器复位。
九、系统扩展电路
9.1数字温度感应模块接口电路
本次设计中采用了DS18B20数字温度感应模块。
DS18B20采用的是1-Wire总线协议方式,即在一根数据线实现数据的双向传输。
9.2液晶显示电路
本次设计采用了16×
2字符单色液晶显示屏(LCD)作为系统的显示界面,该LCM采用了HD44780控制芯片作为显示控制核心。
微控制器只需要对HD44780芯片进行操作便可以完成对LCD屏的相关操作,使用非常方便。
相关的技术参数及引脚说明如下:
整个LCM中HD44780负责对LCD行列驱动芯片的控制。
微控制器只需要按照HD44780给定的指令格式进行相应的操作即可,其数据和指令的读写时序如图所示。
图9.21602的读操作时序
图9.31602的写操作时序
9.3系统输入电路
系统采用了4键输入以实现系统功能的设定,如系统温度上下限的调整和菜单的选择。
由于系统中的其他模块对微控制器的端口占用较少还有很多没有使用的端口,键盘连接上直接采用了每个按键占用一个端口的形式,如图所示:
图9.4键盘输入电路
键盘的读取采用扫描的形式,当检测到有按键按下时,消抖动后进行键值判断。
十、系统总电路
图10.1系统总电路
10.1使用AltiumDesigner电路设计软件绘制出的系统总电路原理图:
10.2在经典的电路仿真软件PROTEUS下加载编译成功的HEX文件之后的系统实时仿真图:
图10.2系统在PROTEUS下的仿真效果
经过在Proteus下的仿真,与KEIL等编译系统进行联调并经过多次的修改之后最终将此智能温度控制器的软件程序确定。
10.3系统总电路PCB图的设计
系统总电路中包含了系统主控制电路、温度感应模块及其逻辑控制电路,扩展接口和相关辅助电路。
在进行系统PCB的器件方位布置和走线时,特别注意了通信电路和信号采集电路的隔离。
LCM内部的干扰比较大在进行器件放置时,将容易受到干扰的器件排布到其他区域,并采取一定的隔离措施。
使用AltiumDesigner电路设计软件绘制出的系统总电路PCB图:
图10.3使用AltiumDesigner电路设计软件设计的系统PCB图
十一、系统软件
开始
整监控系统中各个模块间存在一定的先后顺序且程序模块数量较少,为了减少系统的程序量,设计过程中系统的监控程序采用了传统的前后台方式。
整个监控程序主要由液晶显示驱动、温度采集和键盘扫描模块组成。
程序流程如图所示。
系统初始化
读取18B20数据
液晶显示当前温度
系统主程序部分:
;
****************主程序*******************
START:
CALLRESET
JNB70h,MAIN1
MOVP0,#0C0H;
写入显示起始地址(第二行第一个位置)
ACALLENABLE;
调用写入命令子程序
DS18B20_NOT_READY:
CALLDISPLAY_18B20_ERROR
LOOP1:
JMPLOOP1;
如果栓测不到18b20程序下面不执行
MAIN1:
MOVP0,#00000001B;
清屏并光标复位
ACALLENABLE;
CALLDISPLAY_WATING;
等待第一次结果.
CALLSKIP_ROM
CALLTEMP_CONV
CALLDELAY_600MS
MAIN:
CALLRECALL_EPROM;
调入温度限值.
MAIN_MAIN:
CALLREAD_TEMP;
读18b20的内部温度
JB70h,DS18B20_NOT_READY;
中途失败!
CALLDATA_CONV;
数据转换
CALLDISPLAY_18B20_TEMP
CALLDISPLAY_18B20_TEMP_XZ;
显示限值.
CALLCONTROL
JNBKEY_SET,S1
JMPMAIN_MAIN
CONTROL:
JNB03H,CONTROL1
LCALLDISPLAY_OFF
AJMPCONTROL_END
CONTROL1:
LCALLDISPLAY_ON
CONTROL_END:
RET
S1:
LCALLDELAY_2MS;
延时消抖
JBKEY_SET,MAIN
JNBKEY_SET,$
LCALLKEY;
有键输入
AJMPMAIN
当系统上电后,最先执行的就是对系统各个部件进行初始化的代码,其中主要包括对系统内部定时器、LCM驱动、温度感应模块的初始化。
系统初始化完成时对温度感应模块进行读取,此时温度感应模块将得到的数据上传至微控制器,微控制器根据得到的数据驱动LCM进行相应的显示,随后微控制器将对系统键盘端口进行扫描,并根据扫描得到的键值进行相应的处理。
统中将按键电路中按键
、
分别与单片机进行连接,此按键是低电平有效,当有键按下时,与按键相连接的单片机引脚检测到这个信号,然后进行相应的处理后再输出。
结论
设计的系统中包含了温度传感器、微控制器、显示部件、输入部件等部分,微控制器通过对温度传感器进行读取获得当前温度,通过一定的运算后由直观的人机界面显示出来,并可通过键盘对温度进行高温和低温的限值设定。
整个设计系统中充分掌握各模块电路的工作原理,对硬件电路进行设计。
本系统用于温度指示实测精度可以达到0.5°
、功耗小、显示直观。
由于个人在知识面和能力方面还有限,再加上条件的限制,温度采样精度和抗干扰能力等各项技术指标的提高、诸多功能的完善还需要进一步的研究和开发,此外在完成基本功能的基础上,还需要努力提高软件的效率、硬件系统的稳定性、进一步降低系统功耗等。
十二、总结与体会
通过这次的课程设计,让我对单片机有了进一步的了解、巩固和加深并且对所学知识的得以实际的应用。
与我们所学芯片再一次的零距离的接触,也使我们对各个芯片的功能和特性的认识进一步的了解。
在此次课程设计中我们同有一组人共同学习、共同设计、共同讨论,共同研究设计的出来的方案,一起动手去对我们设计出来的方案在AltiumDesiger和PROTEUS等电路设计软件上进行仿真,遇到困难大家都齐心协力的去解决它,有不懂的地方及时的去请教老师,以至能够更好、更快的去完成我们这次的课程设计。
在课程设计的同时也培养了每个人的独立思考问题的能力,也体现出了同学之间的团结精神。
在这次的课程设计中我们并不是一帆风顺的,其中也遇到了许多的困难和挫折,也受到了不少的打击,但是我们并没有放弃,我们坚信我们一定会成功的。
“失败乃是成功之母”在这次的课程设计让我对这句话有了更深刻的体会。
这句话说的很道理,每一次的成功的背后都会有失败在做铺垫。
虽然失败了但是我们不能放弃,我们事变了就说明我们有做的不够完善的地方。
就要对它进行分析,分析所存在的问题,这样才能够不断的接近的成功的宝塔。
在此次智能温度控制器的设计过程中,让我们了解到了现代电子产品的设计和工作原理。
以前在实际生活中看到的电子产品,例如:
彩灯、交通灯、电磁炉、电饭煲等等,就只是会用它们,并不知道它们的工作原理。
通过这次的课程设计就对它们的原理得以了解。
同时这次课程设计,让我们的动手能力有了大大的提高,为我们以后的工作和学习奠定的基础。
在以后的生活中我们自己也可以利用我们学过的知识和所了解的芯片功能来设计一些日常生活中所需要的电子产品。
这次我们能够顺利的完成设计,是由于同组人的齐心协力和老师的认真教导,但关键的是我们对这次课程设计有一个正确的认识、端正的态度和坚定的信心。
以一种设计者的身份投入到其中去设计它完成它。
十三、参考文献
[1]江晓安等编著《模拟电子技术》西安电子科技大学出版社
[2]雷思孝冯育长编著《单片机系统设计及工程应用》西安电子科技大学出版社
[3]求是科技编著《单片机典型模块设计实例导航》人民邮电出版社2008
[4]冯育长等编著《单片机系统设计与实例分析》西安电子科技大学出版社2007
[5]《精通PROTELDXP2004SP2电路设计》电子工业出版社2007
[6]JeanJ.Labrosse,邵贝贝等译.嵌入式实时操作系统uC/OS-II(第二版)[M].北京:
北京航空航天大学出版社,2003.
[7]周航慈,吴光文.基于嵌入式实时操作系统的程序设计技术[M].北京:
北京航空航天大学出版社,2006.
[8]任哲.嵌入式实时操作系统uC/OS-II原理及应用[M].北京:
[9]黄志伟编著.全国大学生电子设计竞赛系统设计[M].北京:
北京航空航天大学出版社,2006.
[10]常玉燕,吕光译.日本电子电路精选[M].北京:
电子工业出版社,1990.
[11]http//
[12]http//
作者简介
姓名:
白航飞性别:
男
出生年月:
1986-08民族:
汉
E-mail:
jasionben@
********************************************************
00H:
18B20存在标志位,0表示存在,1表示不存在*
01H:
温度设置标记位,1表示设定高温限值,0表示设定低温限值.*
02H:
暂未用,03H:
控制器开关标记,0:
表示温度低,1表示温度高
注:
每次读写应先reset,然后跳过rom检测,再之后才能向18b20发命令.
注;
MOVA,#4EH;
应该是先送此条命令然后马上传两个字节的温度数据,中间不能用reset!
.不然就出问题
*注:
程序编制中遇到2个主要错误:
子程序中少写了ret而出现未知错误,
标记位地址与字节地址重叠.
ORG00H
JMPINPORT
ORG0BH
ORG30H
INPORT:
TMP_HEQU29H;
温度高字节
TMP_LEQU28H
RSEQUP2.5;
确定具体硬件的连接方式
RWEQUP2.6;
EEQUP2.7;
KEY_SETEQUP2.0
KEY_UPEQUP2.1
KEY_DOWNEQUP2.2
DS18B20_FLAGEQU70h
SET_FLAGEQU01H
FLASH_FLAGEQU02H
K_ONEQU03H
MOV25H,#0FFH;
位00h-07h全部置1
MOVR4,#14
MOVTMOD,#01H
MOVTL0,#0B0H
MOVTH0,#3CH
MOVIE,#10000010B;
(8:
总控,2:
定时0溢出中断控制位)
LCD_INIT:
MOVR6,#30
CALLDELAY_BY_R6;
15ms
MOVP0,#38H;
写38h
ACALLWRITE_NOT_CHECK_BUSY
MOVR6,#10
CALLDELAY_BY_R6;
5ms
MOVP0,#38H
ACALLWRITE_NOT_CHECK_BUSY
5ms
-----设转初始值
SETBE
MOVP0,#00111000B;
8位2行5x7点阵
MOVP0,#00001110B;
显示器开、光标开、光标允许闪烁
MOVP0,#00000110B;
文字不动,光标自动右移
STORE_DEFINE_DATA:
;
把自定义字符存入CGRAM
MOVP0,#40H;
CGRAM起始地址
ACALLENABLE
MOVR2,#8
MOVDPTR,#DEFINE_DATA
MOVR3,#0
NEXTP:
MOVA,R3
MOVCA,@A+DPTR
MOVP0,A
CALLWRITE_DATA_TO_LCD
INCR3
DJNZR2,NEXTP
MAIN: