基于单片机的温度控制器的设计说明.docx
《基于单片机的温度控制器的设计说明.docx》由会员分享,可在线阅读,更多相关《基于单片机的温度控制器的设计说明.docx(23页珍藏版)》请在冰豆网上搜索。
![基于单片机的温度控制器的设计说明.docx](https://file1.bdocx.com/fileroot1/2022-12/17/ec97394a-f5c2-4223-8ef9-35da4afcaa72/ec97394a-f5c2-4223-8ef9-35da4afcaa721.gif)
基于单片机的温度控制器的设计说明
《温度控制器》
课程设计
学生姓名:
胡云飞
学号:
6100310011
专业班级:
自动化101
指导老师:
万晓凤
2014年01月08日
第1章概述
1.1课题背景································2
1.2温度控制器的发展························3
第2章系统的硬件电路设计
2.1单片机的选择····························4
2.2温度传感器的选择·······················4
2.3显示模块的选择·························4
第3章系统软件设计
3.1主程序设计······························5
3.2LED显示程序设计························6
3.3键盘控制模块程序设计····················7
第四章仿真与结果
4.1仿真原理图·····························8
4.2结语···································8
第5章附录
5.1硬件原理图····························9
5.2程序加载项····························9
5.3系统仿真图···························10
5.4系统程序·····························10
基于单片机的温度控制器
摘要:
本设计介绍一种温度控制器,它是以AT89C52单片机为核心,用按键输入来设置控制温度上、下限,通过DS18B20数字温度传感器采集现场温度,并将其与设定的温度进行比较,来控制加热装置的通断,利用液晶显示器来显示温度,并设置温度越限报警。
利用单片机的开发环境,进行程序的编译、调试。
最后在PROTEUS中对温度控制器的温度设置、温度控制、温度报警、温度显示灯功能进行仿真。
系统的仿真结果验证了温度控制器的设计可行性。
关键词:
AT89C52,温度传感器DS18B20,液晶显示器,Proteus
Abstract:
ThedesigntakeAT89C52microcontrollerasthecore,anditusebuttonstosettheupperandlowerlimits,controltheheatingdevicebycomparingsettingtemperaturewithreal-timetemperature,whichiscollectedbyDS18B20,useLEDtodisplaytemperature,andsetthealarmoftemperaturewhichisoutofsettinglimits.Usethedevelopmentenvironmentofmicrocontrollertomakeprogramcompilesanddebugging.Attheend,usePROTEUStosimulatethefunctionsoftemperaturesetting,temperaturecontrolling,temperaturealarm,andtemperaturedisplayingoftemperaturecontroller.Theresultofsimulationhasverifiedthefeasibilityofthedesign.
Keywords:
AT89C52,DS18C20,LED,Proteus
第1章绪论
1.1课题背景
温度控制是一个非常常见的过程,无论是在我们的日常生活中,还是在农业生产中,甚至在现代化的工业生产中,对温度的控制都是非常必要的。
在寒冷的冬天,或者炎热的夏天,我们利用空调来创造一个舒适的环境。
种子的发芽、农作物的生长、果实的成熟等都需要适宜的温度。
在冶金工业、化工生产、电力工程、造纸行业、机械制造和食品加工等诸多领域中,人们都需要对各类加热炉、热处理炉、反应炉和锅炉中的温度进行检测和控制。
由此可见,温度控制是一个非常重要的过程。
AT89C52单片机设计的温度控制器,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而将温度准确地控制在设定温度值或设定的温度范围之内,这对我们的工业、工业生产都是很大帮助的。
以单片机为核心的应用技术已成为一项新的工程应用技术。
单片机以其集成度高、运算速度快、体积小、运行可靠、价格低廉等优势,在过程控制系统、数据采集、机电一体化、智能化仪表、家用电器以及网络技术等方面得到了广泛的应用。
由此可见,对温度控制器的研究是非常必要的,在科技日新月异的今天,温度控制将对各行各业产生很大的影响,如何才能研究出更高精度的温度控制器?
这是我们必须去思考并解决的问题。
1.2温度控制器的发展
温度控制器广泛应用于家用电器,主要为冰柜、冷柜、空调、饮水机、微波炉等制冷、制热产品配置。
目前国内温度控制器生产企业减少,仅广东、江苏、辽宁、江西等地有一些规模稍大一点的生产厂家,他们的生产能力远远不能满足电子温度控制器市场的需求。
温度控制器不仅在国内市场销售顺畅,而且在国际市场也十分看好。
由于日本、意大利、美国等国家对温度控制器产品的需求量很大,温度控制器出口前景十分乐观。
第2章系统的硬件电路设计
该硬件系统框图如图2-1所示。
控制器由AT89C52单片机、温度检测电路、控制电路等组成。
图2硬件系统框图
2.1单片机的选择
采用AT89C52单片机,属于C51单片机系列,其主要工作特性是:
(1)片内程序存储器内含4k字节的Flash程序存储器;
(2)片内数据存储器内含128字节的RAM;
(3)具有32根可编程I/O口线;
(4)2个16位定时/计数器;
(5)一个5向量两级中断结构;
(6)一个全双工串行通信口,片内振荡器及时钟电路;
(7)具有可编程串行URAR通道;
(8)低功耗工作模式有空闲模式和掉线模式;
(9)具有三级加密程序存储器;
(10)AT89C52工作电源电压为5v;
(11)AT89C52最高工作频率为33MHz;
图2-1AT89C52引脚图
2.2温度传感器的选择
采用数字温度传感器DS18B20,DS18B20数字温度传感器是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。
因此,由它组成的测温系统,具有线路简单,一根通信线可以挂很多这样的数字温度传感器,使用方便等特点。
2.3显示模块的选择
采用LED数码管显示,LED亮度高、可视角度高和刷新速率快,能提供宽达160°的视角,可以显示各种文字、数字、彩色图像及动画信息,也可以播放电视、录像、VCD、DVD等彩色视频信号,多幅显示屏还可以进行联网播出。
第三章系统软件设计
3.1主程序设计
AT89C52的具体软件程序流程图如图3.1所示。
Y
N
图3-1主程序流程图
3.2LED显示程序设计
LED显示的流程图如图3-2所示。
移位
显示字符
输出段选信号
输出位选信号
设字符表
N
Y
图3-2LED显示模块流程图
3.3键盘控制模块程序设计
键盘控制模块流程图如图3-3所示。
N
Y
N
Y
图3-3键盘模块流程图
第四章仿真与结果
采用绘制电路图软件PROTEUS和用于编写程序的KeilCI.LVision2实现系统设计的仿真。
图4为PROTEUS仿真环境下温度值为5°C时的硬件电路图。
在KeilCpVision2中创建一个新项目。
然后在PROTEUS中为该项目加入KeilC源程序。
调试后,结果和设计目标完全吻合。
图4proteusisis环境下温度值为5°C时的硬件仿真图
结语
该温度控制器以AT89C52单片机作为内核,采用DS18B20单线数字温度传感器采集温度,将采集到的温度直接以数字形式输出到单片机,无须经过变换电路,具有精度高、稳定性好和抗干扰性强等特点。
第五章附录
附录1硬件原理图
附录2程序加载项
附录3系统仿真图
附录4系统程序
DS18B20EQUP1.0
ALARMEQUP1.6
MOTOREQUP1.7
RLEDEQUP3.5
GLEDEQUP3.6
BLEDEQUP3.7
KEY1EQUP3.0
KEY2EQUP3.1
KEY3EQUP3.2
WENDU_LEQU50H
WENDU_HEQU51H
XIAOSHUEQU52H
ZHENGSHUEQU53H
DIS_RAM_HEQU54H
DIS_RAM_LEQU55H
SHEDING_HEQU56H
SHEDING_LEQU57H
SIGNEQU58H
ORG0000H
LJMPMAIN
ORG000BH
LJMPINT_T0
ORG0100H
MAIN:
MOVSP,#30H
CLRALARM
CLRMOTOR
CLRRLED
CLRBLED
MOVWENDU_L,#0
MOVWENDU_H,#0
MOVZHENGSHU,#0
MOVDIS_RAM_H,#0
MOVDIS_RAM_L,#0
MOVSHEDING_H,#0
MOVSHEDING_L,#0
MOVSIGN,#0
LCALLINI_CPU
LOOP:
LCALLKEY_TEST
LCALLCOMPARE
LCALLGET_TEMP
LCALLZHENGHE
LCALLDIS_DEAL
SJMPLOOP
COMPARE:
MOVA,ZHENGSHU
CLRC
CJNEA,SHEDING_H,COMPARE1
COMPARE1:
JCCLOSE_WIND
SETBMOTOR
AJMPCOMPARE_EXIT
CLOSE_WIND:
CLRMOTOR
CLRC
CJNEA,SHEDING_L,COMPARE2
COMPARE2:
JNCCLOSE_ALARM
SETBALARM
JMPCOMPARE_EXIT
CLOSE_ALARM:
CLRALARM
COMPARE_EXIT:
RET
KEY_TEST:
JBKEY1,KEY2_TEST
LCALLDELAY10MS
JBKEY1,KEY2_TEST
INCSIGN
MOVA,SIGN
CJNEA,#3,KEY1_EXIT
MOVSIGN,#0
KEY1__EXIT:
JNBKEY1,$
AJMPKEY_TEST_EXIT
KEY2_TEST:
JBKEY2,KEY_3TEST
LCALLDELAY10MS
JBKEY2,KEY3_TEST
MOVA,SIGN
CJNEA,#0,KEY2_DEAL1
AJMPKEY2_EXIT
KEY2_DEAL1:
CJNEA,#1,KEY2_DEAL2
INCSHEDING_H
JMPKEY2_EXIT
KEY2_DEAL2:
INCSHEDING_L
KEY2_EXIT
JNBKEY2,$
AJMPKEY_TEST_EXIT
KEY3_TEST:
JBKEY2,KEY_TEST_EXIT
LCALLDELAY10MS
JBKEY2,KEY_TEST_EXIT
MOVA,SIGN
CJNEA,#0,KEY3_DEAL1
AJMPKEY3_EXIT
KEY3_DEAL1:
CJNEA,#1,KEY3_DEAL3
DECSHEDING_H
JMPKEY3_EXIT
KEY3_DEAL3:
DECSHEDING_L
KEY3_EXIT:
JNBKEY3,$
KEY3_TEST_EXIT:
RET
INI_CPU:
MOVTMOD,#01H
MOVTH0,#0DCH
MOVTL0,#0B0H
SETBEA
SETBET0
SETBTR0
RET
Readtemperature
GET_TEMP:
SETBDS18B20
LCALLRESET_DS18B20
JCGET_TEMP_EXIT
MOVA,#0CCH
LCALLWR_DS18B20
MOVA,#44H
LCALLWR_DS18B20
LCALLDELAY1S
SETBDS18B20
LCALLRESET_DS18B20
JCGET_TEMP_EXIT
MOVA,#0CCH
LCALLWR_DS18B20
LCALLREAD_TEMP
CLRDS18B20
GET_TEMP_EXIT:
RET
READ_TEMP:
MOVR4,#2
MOVR1,#WENDU_L
RE:
MOVR2,#8
RE1:
CLRC
SETBDS18B20
NOP
NOP
CLRDS18B20
NOP
NOP
NOP
SETBDS18B20
MOVR3,#9
DJNZR3,$
MOVC,DS18B20
MOVR3,#23
NN:
DJNZR3,NN
RRCA
DJNZR2,RE1
MOV@R1,A
INCR1
DJNZR4,RE
RET
DODEALWITHTHEDATA
ZHENGHE:
MOVA,#0FH
ANLA,WENDU_L
MOVXIAOSHU,A
MOVA,WENDU_H
ANLA,#0FH
SWAPA
MOVB,A
MOVA,WENDU_L
ANLA,#0F0H
SWAPA
ADDA,B
MOVZHENGSHU,A
RET
DIS_DEAL:
MOVA,SIGN
CJNEA,#0,DIS_DEAL1
SETBGLED
CLRRLED
CLRBLED
MOVA,ZHENGSHU
MOVB,#10
DIVAB
MOVDIS_RAM_H,A
MOVDIS_RAM_L,B
AJMPDIS_DEAL_EXIT
DIS_DEAL1:
CJNEA,#1,DIS_DEAL2
CLRGLED
SETBRLED
CLRBLED
MOVA,SHEDING_H
MOVB,#10
DIVAB
MOVDIS_RAM_H,A
MOVDIS_RAM_L,B
AJMPDIS_DEAL_EXIT
DIS_DEAL2:
CLRGLED
CLRRLED
SETBBLED
MOVA,SHEDING_L
MOVB,#10
DIVAB
MOVDIS_RAM_H,A
MOVDIS_RAM_L,B
DIS_DEAL_EXIT:
RET
INT_T0:
PUSHPSW
PUSHACC
CLRTR0
MOVTH0,#0DCH
MOVTL0,#0B0H
DISPLAY:
MOVDPTR,#TABLE
MOVA,DIS_RAM_H
MOVCA,@A+DPTR
MOVP0,A
SETBP2.0
LCALLDELAY602US
CLRP2.0
MOVA,DIS_RAM_L
MOVCA,@A+DPTR
MOVP0,A
SETBP2.1
LCALLDELAY602US
CLRP2.1
SETBTR0
POPACC
POPPSW
RETI
ResettheDS18B20
RESET_DS18B20:
CLRDS18B20
LCALLDELAY602US
SETBDS18B20
LCALLDELAY92US
MOVC,DS18B20
LCALLDELAY300US
RET
WR_DS18B20:
MOVR7,#8
WR_18B20:
CLRDS18B20
NOP
NOP;5US
NOP
NOP
NOP
RRCA
MOVDS18B20,C
LCALLDELAY62US
SETBDS18B20
DJNZR7,WR_18B20
RET
RD_DS18B20:
MOVR7,#8
RD_18B20:
CLRDS18B20
NOP
NOP
SETBDS18B20
NOP
NOP
MOVC,DS18B20
NOP
NOP
RRCA
SETBDS18B20
NOP
NOP
DJNZR7,RD_18B20
RET
DELAY1S
DELAY1S:
PUSH00
PUSH01
PUSH02
MOVR0,#09
DLY1S1:
MOVR1,#0E0H
DLY1S2:
MOVR2,#0FFH
DJNZR1,$
DJNZR1,DLY1S2
DJNZR0,DLY1S1
POP02
POP01
POP00
RET
DELAY50MS
DELAY10MS:
PUSH00
PUSH01
MOVR0,#20
DLY10MS1:
MOVR1,#0FFH
DJNZR1,$
DJNZR0,DLY10MS1
POP01
POP00
RET
DELAY480US
DELAY602US:
PUSH00
PUSH01
MOVR0,#0FFH
DJNZR0,$
MOVR1,#40
DJNZR1,$
POP01
POP00
RET
DELAY300US
DELAY300US:
PUSH00
MOVR0,#8FH
DJNZR0,$
POP00
RET
DELAY60US
DELAY92US:
PUSH00
MOVR0,#2AH
DJNZR0,$
POP00
RET
DELAY62US
DELAY62US:
PUSH00
MOVR0,#27
DJNZR0,$
POP00
RET
TABLE:
DB40H,79H,24H,30H,19H,12H,02H,78H,00H,10H
END