单片机课程设计之多点温度测量系统的设计.docx

上传人:b****8 文档编号:11171657 上传时间:2023-02-25 格式:DOCX 页数:20 大小:489.91KB
下载 相关 举报
单片机课程设计之多点温度测量系统的设计.docx_第1页
第1页 / 共20页
单片机课程设计之多点温度测量系统的设计.docx_第2页
第2页 / 共20页
单片机课程设计之多点温度测量系统的设计.docx_第3页
第3页 / 共20页
单片机课程设计之多点温度测量系统的设计.docx_第4页
第4页 / 共20页
单片机课程设计之多点温度测量系统的设计.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

单片机课程设计之多点温度测量系统的设计.docx

《单片机课程设计之多点温度测量系统的设计.docx》由会员分享,可在线阅读,更多相关《单片机课程设计之多点温度测量系统的设计.docx(20页珍藏版)》请在冰豆网上搜索。

单片机课程设计之多点温度测量系统的设计.docx

单片机课程设计之多点温度测量系统的设计

单片机应用系统设计

 

课题:

多点温度测量系统的设计

姓名:

班级:

学号:

指导老师:

日期:

一、设计的背景和意义

温度测控技术在各个领域应用越来越广泛,同时温度测量也被人们所关注,人们对测试温度的仪器要求越来越高,要为人类工、科研、生活提供更好的设施,那就需要从单片机技术入手,一切向着数字化控制,智能化控制方向发展。

二、系统总体方案设计

因为要用到温度传感器,所以在单片机电路设计中,大多都是使用传感,我们使用的是DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,可以满足设计的要求。

1、原理:

(1)将AD590作为室温度传感器,当温度变化时,AD590会产生电流的变化,经OPA1将电流转换为电压,由OPA2作为零为调整,

最后由OPA3反相放大10倍。

(2)ADCO804输出最大转换值=FFH(255)。

OPA3为放大10倍时。

则本电路最大测量温度为;最大显示温度为5.1/10V=0.51V,即51°C(10为放大倍数)。

255X=51,知X=0.2,即先乘2再除10。

FF→255→255ⅹ2→510,R4=0.5R3=10。

即D4=0,D3=5,D2=1,

D1=0,本电路显示器只取D3、D2两位数。

(3)按下P2.1按钮,放开后立即进入温度设定模式,显示设定最高温度为34°C(建立在TABLE内)每按一次设定温度将减少1°C,直至最低温度20°C,再按一次回到34°C。

(4)当室温高于设定温度,压缩机(P3.0)运转,使室温降低,当室温低于设定值时,压缩机停止运行。

(5)当进入设定温度模式,如末按下设定按钮(P2.1)经数秒后自动解除设定模式,回到室温显示模式。

(6)本程序以计时中断,每50ms中断一次,比较室温一次,而令

压缩机运转和停止。

总体设计框图:

单片机复位

 

报警点按键调

 

时钟振荡

时钟振荡

 

温度传感器

控制

 

电路原理图:

三、硬件设计

1.复位操作

复位是单片机的初始化操作,其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。

除了进入系统的正常

初始化之外,当由于程序运行出错或者操作错误使系统处于死锁状态

时,为摆脱困境,也需按复位键以重新启动。

(1)复位操作还对单片机的个别引脚信号有影响,例如把ALE和PSEN非信号变为无效状态,即ALE=0,PSEN=1。

(2)复位信号及其产生

RST引脚是复位信号的输入端,复位信号是高电平有效,其有效时间持续24个振荡脉冲周期(即2个机器周期)以上,若使用频率为6MHz的晶振,则复位信号持续时间应超过4us才能完成复位操作。

产生复位信号的电路逻辑如图

 

(3)复位方式

复位操作有上电自动复位和按键手动复位两种方式。

上电自动复位是通过外部复位电路的电容充电来实现的,在单片机控制的数字显示温度计电路设计中的单片机复位就是这种方式,其中电容C为22uF,电阻R为1k欧姆。

这样,只要电源Vcc(+5V)的上升时间不超过1ms,就可以实现自动上电复位,即接通电源就完成了系统的复位初始化。

按键手动复位有电平方式和脉冲方式两种。

其中按键电平复位是通过使复位端经电阻与Vcc电源接通而实现的而按键复位脉冲复位则是利用RC微分电路产生的正脉冲来实现的。

显示温度值的LED显示器:

 

LED显示器是单片机应用系统中常用的廉价输出设备。

它是由若干个发光二极管组成的,当发光二极管导通时,相应一个笔画划发光,控制某段发光二极管导通,就能显示出某个数码或字符,常用八段LED显示器有两种结构,如图:

 

 

 

在静态显示系统中,每位显示器都应有各自的锁存器、译码器(若采用软件译码,译码器可省去)与驱动器,用以锁存各自待显示数字的BCD码或字段码。

因此,静态显示系统在每一次显示输出后能够保持显示不变,仅在待显示数字需要改变时,才更新其数字显示锁存器中的内容。

这种显示占用CPU的时间少,显示稳定可靠。

缺点是,当显示的位数较多时,占用的I/O口较多。

在动态显示的系统中,CPU需定时地对每位LED显示器进行扫描,每位LED显示器分时轮流工作,每次只能使一位LED显示,但由于人的视觉暂留现象,仍感觉所有的LED显示器都在同时显示。

这种显示的优点是使用硬件少,占用I/O口少。

缺点是占用CPU时间长,只要不执行显示程序,就立刻停止显示。

但随着大规模集成电路的发展,目前已有能自动对显示器进行扫描的专用显示芯片,使电路既简单又占用CPU时间。

在我们所设计的温度计中数码管显示就是利用的动态显示。

 

温度传感器DS1820

DS1820内部结构框图如图:

 

 

DS1820测温原理如图:

 

图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。

高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。

计数器1和温度寄存器被预置在-55℃所对应的一个基数值。

计数器1温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。

图2中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正。

 

四、系统软件设计

1温度控制流程图

 

2电路程序

;6M晶体89c51

tempheadequ40h

display_data1_regdata30h

display_data2_regdata31h

display_data3_regdata32h

display_long_regdata33h

led1_bitbitp3.0

led2_bitbitp3.1

led3_bitbitp3.2

time1sokbit01H

TEMPONE0KBIT02H

Wiredogcsbitp3.7

;TIAOSHI_LONGDATA21H

;TIAOSHI_DATADATA22H

templdata34h

temphdata35h

temphcdata36h

templcdata37h

tempdinbitp2.0

ORG0000H

LJMPSTART

ORG000BH

AJMPLED

ORG0030H

start:

MOVsp,#60H

movtmod,#21H

movpcon,#00H

movscon,#01010000b

movth1,#243

movtl1,#243

SETBET0

movdisplay_long_reg,#00h

SETBEA

MAIN:

CLRTEMPONE0KMAIN1:

LCALLDLY_1S

JNBTEMPONE0K,MAIN2

clrea

LCALLREADTEMP1

setbea

LCALLCONVTEMP

MAIN2:

clrea

LCALLREADTEMP

setbea

setbTEMPONE0K

AJMPMAIN1

;****************************************************

;DS1820复位

;****************************************************

INITDS1820:

SETBTEMPDIN

NOP

NOP

CLRTEMPDIN

MOVR6,#0A0H

DJNZR6,$

MOVR6,#0A0H

DJNZR6,$

SETBTEMPDIN

MOVR6,#32H

DJNZR6,$

MOVR6,#3CH

LOOP1820:

MOVC,TEMPDIN

JCINITDS1820OUT

DJNZR6,LOOP1820

INITDS1820OUT:

SETBTEMPDIN

RET

;****************************************************

;读DS1820的数据

;入口条件:

数据存放在ACC中

;****************************************************

READDS1820:

MOVR7,#08H

SETBTEMPDIN

NOP

NOP

READDS1820LOOP:

CLRTEMPDIN

NOP

NOP

NOP

SETBTEMPDIN

MOVR6,#07H

DJNZR6,$

MOVC,TEMPDIN

MOVR6,#3CH

DJNZR6,$

RRCA

SETBTEMPDIN

DJNZR7,READDS1820

LOOPMOVR6,#3CH

DJNZR6,$RET

****************************************************

;写DS1820的数据

;出口条件:

数据存放在ACC中

;****************************************************

WRITEDS1820:

MOVR7,#08H

SETBTEMPDIN

NOP

NOP

RRCA

MOVTEMPDIN,C

MOVR6,#34H

DJNZR6,$

SETBTEMPDIN

DJNZR7,WRITEDS1820LOP

RET

;***********************************************

;启动温度转换

;***********************************************

READTEMP:

LCALLINITDS1820

MOVA,#0CCH

LCALLWRITEDS1820

MOVR6,#34H

DJNZR6,$

MOVA,#44H

LCALLWRITEDS1820

MOVR6,#34H

DJNZR6,$

RET

;***********************************************

;读取转换后的温度值

;***********************************************

READTEMP1:

LCALLINITDS1820

MOVA,#0CCH

LCALLWRITEDS1820

MOVR6,#34H

DJNZR6,$

MOVA,#0BEH

LCALLWRITEDS1820

MOVR6,#34H

DJNZR6,$

MOVR5,#09H

MOVR0,#TEMPHEAD

INCR0

READTEMP21:

LCALLCRC8CALDJNZR5,READTEMP2

MOVA,B

JNZREADTEMPOUT

MOVR1,#TEMPHEAD

MOVA,@R1

MOVTEMPL,A

INCR1

MOVA,@R1

MOVTEMPH,AREADTEMPOUT:

RET

;**********************************************************

;处理温度BCD码程序

;**********************************************************

CONVTEMP:

MOVA,TEMPH

ANLA,#80H

JZTEMPC1;判断是否为负数

CLRC

MOVA,TEMPLCPLA

ADDA,#01HMOVTEMPL,AMOVA,TEMPHCPLA

ADDCA,#00H

MOVTEMPH,A

MOVTEMPHC,#0BH

SJMPTEMPC11

TEMPC1:

MOVTEMPHC,#0AH

TEMPC11:

MOVA,TEMPHC

SWAPA

MOVTEMPHC,A

MOVA,TEMPL

MOVTEMPLC,A

MOVA,TEMPL

ANLA,#0F0H

SWAPA

MOVTEMPL,A

MOVA,TEMPH

ANLA,#0FH

SWAPA

ORLA,TEMPL

LCALLHEX2BCD1

MOVTEMPL,A

ANLA,#0F0H

SWAPA

ORLA,TEMPHC

MOVTEMPHC,A

MOVA,TEMPL

ANLA,#0FH

SWAPA

ORLA,TEMPLC

MOVTEMPLC,A

MOVA,R7

JZTEMPC12

ANLA,#0FH

SWAPA

MOVR7,A

MOVA,TEMPHC

ANLA,#0FH

ORLA,R7

MOVTEMPHC,A

TEMPC12:

RET

TEMPDOTTAB:

DB00H,01H,01H,02H,03H,03H,04H,04H,05H,06HDB06H,07H,08H,08H,09H,09H

;*********************************************

CRC8LOOP1:

XRLA,B

RRCA

MOVA,B

JNCCRC8LOOP2

XRLA,#18HCRC8

LOOP2:

RRCA

MOVB,A

POPACC

RRA

PUSHACC

DJNZR7,CRC8LOOP1

POPACC

RET

;*********************************************

;单字节16进制转换BCD

;入口条件:

数据存放在ACC中

;出口条件:

数据存放在ACC中

;*********************************************

HEX2BCD1:

MOVB,#64H

DIVAB

MOVR7,A

MOVA,#0AH

XCHA,B

DIVAB

SWAPA

ORLA,B

RET

;*********************************************

;1S延时程序

;*********************************************

DLY_1S:

PUSHPSW

SETBRS0

MOVR7,#10

DLY_1S_1:

MOVR6,#200

DJNZR5,$

DJNZR6,DLY_1S_2

DJNZR7,DLY_1S_1

POPPSW

RET

;********************************************

;数码管显示程序

;********************************************

;**********************************************************

;LED

;入口条件:

输入数据放入ACC

;输出:

转换后的数据保存显示器缓冲区中中

;影响数据:

ACC

;**********************************************************

LED:

pushacc

pushdph

pushdpl

movth0,#0fch

movtl0,#66h

movdptr,#led_tab_1

mova,display_long_reg

incdisplay_long_reg

rla

jmp@a+dptrled_tab_1:

ajmpled1

ajmpled2

ajmpled3

led1:

setbled1_bit

setbled2_bit

setbled3_bit

mova,TEMPLC

anla,#0fh

movdptr,#led_tab_2

movca,@a+dptr

ajmpled_exit

led2:

setbled1_bit

setbled2_bit

setbled3_bit

mova,TEMPLC

anla,#0f0h

swapa

movdptr,#led_tab_2

movca,@a+dptr

clracc.7

movp1,a

clrled2_bit

ajmpled_exit

led3:

setbled1_bit

setbled2_bit

setbled3_bit

mova,TEMPHC

anla,#0fh

movdptr,#led_tab_2

movca,@a+dptr

movp1,a

clrled1_bit

movdisplay_long_reg,#0

ajmpled_exit

led_tab_2:

DB0C0H,0F9H,0A4H,0B0H,99HDB92H,82H,0F8H,80H,90H

DB88H,83H,0C6H,0A1H,86H,8EH,0ffH

led_exit:

popdpl

popdph

popacc

reti

;*********************************************

五设计总结

这个设计是参考了很多的材料才完成的,虽然设计的不是很完美,但是能够完成老师的要求,在做这个课程设计的时候,我的朋友帮我找了不少资料,在此,我要特别感谢他。

在做这个课程设计师遇到了许多的困难,但是因为有朋友的帮助,我还是克服了它们!

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 信息与通信

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1