多路温度采集及显示报告.docx
《多路温度采集及显示报告.docx》由会员分享,可在线阅读,更多相关《多路温度采集及显示报告.docx(33页珍藏版)》请在冰豆网上搜索。
多路温度采集及显示报告
湖北理工学院
课程设计报告
课程名称:
电子设计开放性试验
设计题目:
多路温度采集及显示系统
系别:
数理学院
专业:
应用物理学
班级:
学生姓名:
学号:
起止日期:
指导教师:
教研室主任:
指导教师评语:
指导教师签名:
年月日
成绩评定
项目
权重
成绩
1、设计过程中出勤、学习态度等方面
0.2
2、课程设计质量与答辩
0.5
3、设计报告书写及图纸规范程度
0.3
总成绩
教研室审核意见:
教研室主任签字:
年月日
教学系审核意见:
主任签字:
年月日
答辩记录
摘要
在工业控制领域中,温度是一个十分重要的参考量,准确而实时的控制温度对于我们的工作有事半功倍的效果。
而在一些传统的温度测控系统中,存在着数据显示方式单一、数据无法长期存储、调用以及系统接口过于复杂的问题,寻求这些问题的解决方案成为当前研究的焦点。
多路温度采集系统由主控制器、温度采集电路、温度显示电路、报警控制电路及键盘输入控制电路组成。
它利用单片机P87C51做控制及数据处理器、ADC0809N做温度检查器、LED数码显示管做温度显示输出设备。
硬件电路比较简单,成本较低,测温范围大,测量精度高,读数显示直观,使用方便。
近年来单线多点数字化测量技术的发展使温度检测技术实现了快速、可靠、低成本、数字化与网络化。
新型的温度采集系统能采用新型单线智能化温度传感器,能以数字形式直接输出被测点温度值,具有测温误差小、分辨率高、抗干扰能力强、成本低、能远程传输数据等优点。
关键词:
单片机控制;温度测量;模数转换电路;数码管显示器
目录
设计内容、要求及分工1
1实现方案及总体设计1
2原理图的设计3
2.1温度采集电路设计3
2.2显示电路设计4
3系统程序设计5
3.1主程序设计...............................................................................................................53.2子程序设计...............................................................................................................6
4详细仪器清单....................................................................................................................9
5总结与思考及致谢9
参考文献10
附录一:
原理图11
附录二:
PCB图12
附录三:
程序............................................................................................................................12
多路温度采集及显示系统
设计内容、要求及分工
温度是一种最基本的环境参数,人们的生活与环境温度息息相关,因此研究温度的测量方法和装置具有重要的意义。
温度测量装置的关键是温度传感器,温度传感器的发展经历了三个发展阶段:
(1)传统的分立式温度传感器,
(2)模拟集成温度传感器,(3)智能集成温度传感器。
目前,国际上新型温度传感器正从模拟式向数字式,从集成化向智能化、网络化的方向飞速发展。
本人选择多路温度采集系统设计。
系统主要技术指标:
(1)4路温度采集电路;
(2)A/D转换;
(3)电子开关;
(4)实时温度显示,采用LED数码管显示。
本次设计我们由五人为一组,朱其攀是我们小组的组长,负责实验报告部分;胡仲祥负责课程设计部分;黄治雄主要负责PPT部分,黄明负责原理图和PCB图的完成;胡永志则负责软件部分的设计及其调试。
1实现方案及总体设计
P87C51RA2/RB2/RC2/RD2单片8位微控制器采用先进的CMOS工艺制造,是80C51微控制器家族的派生品。
其指令集与80C51指令集完全相同。
该器件可通过并行编程的方法对一个OTP位进行编程,从而选择6时钟或12时钟模式。
此外,也可通过时钟控制寄存器CKCON中的X2位选择6时钟或12时钟模式。
该器件还包含有4个8位I/O口、个16位定时/计数器、多个中断-4中断优先级-嵌套的中断结构、1个型UART、片内振荡器及实序电路。
新增的特性使得P87C51RA2/RB2/RC2/RD2成为功能更强大的微控制器,更地支持应用于脉宽调制,高速I/O递增/递减计数能力如电机控制等场合。
图1数字式多路温度采集系统结构框图
采用智能温度传感器采集环境温度并进行简单的模数转换;单片机P87C51执行程序对温度传感器传输的数据进行进一步的分析处理,转换成环境对应的温度值,通过I/O口输出到数码显示管(LED)显示;由键盘输入控制选择某采集电路检测温度及显示;报警电路对设定的最高最低报警温度进行监控报警。
主要由温度传感器、P87C51单片机微控制器、以及数据传输显示三部分组成。
图2系统原理简易图
本系统采用的主要硬件元件分别为P87C51单片机作为微控制器,使用单总线温度传感器芯片ADC0809N作为温度传感器。
温度传感器采集温度数据,温度传感器采集完一次数据后,经过A/D转换后,再由微控制器根据现场对数据的不同要求可以选择LCD显示以及上机PC机显示两种方式来显示数据。
2原理图的设计
2.1温度采集电路设计
温度采样处理电路由温度传感器、放大电路、A/D转换电路等组成。
采用分块结构的温度采样处理电路,其硬件电路结构复杂,也不便于数据的处理。
采用智能温度传感器采样处理电路,能够方便的进行温度的采集及简单的数据处理。
并且可以达到设计的技术指标要求。
本系统选择智能温度传感器ADC0809N作为温度采集电路的核心器件。
图3芯片图
2.1.1温度采集电路结构
温度采集电路结构如图所示。
工作时,由程序控制读取某智能温度传感器ADC0809N采集的温度数据,送单片机处理。
单片机控制电路核心是单片机芯片,其加上工作基本电路,就可以展开控制工作。
图4单片机P87C51引脚图
2.2显示电路结构
显示电路由单片机P87C51的P1.0端作数据输出,连接到低位SN54F04J的数据输入引脚端。
单片机P87C51的P3.0、P3.1端分别接到一个与门电路的输入端。
显示电路结构图如图4所示。
图5温度显示部分
3系统程序设计
3.1主程序设计
主程序主要功能是控制调用子程序,实现温度的实时显示、读出并处理ADC0809N的测量温度值(温度测量每1s进行一次)。
其程序流程图如图6所示。
图6数字式多路温度采集系统主程序流程图
3.2子程序设计
(1)键盘扫描子程序
键盘扫描子程序对按下的键进行判断,并转到按下的相应键对应的程序段,执行相应的功能。
其程序流程图如图7所示。
(2)温度转换命令子程序
温度转换命令子程序主要是发送温度转换开始命令。
在发送匹配ROM命令后,紧跟着发送要进行测温的ADC0809N的64位ROM序列(这个序列号一般由厂方提供或通过实验的方式获得)。
采用12位分辨率,转换时间约为750ms。
其程序流程图如图8所示。
图7键盘扫描子程序流程图图8温度转换命令子程序流程图
(3)读出温度子程序
读出温度子程序主要功能是读出RAM中的9个字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。
其程序流程图如图9所示。
(4)计算温度子程序
从ADC0809N读取出的二进制值必须先转换成十进制值,才能用于字符的显示。
在系统采用12位转换精度,温度寄存器里的值是以0.0625为步进的,即温度值为温度寄存器里的二进制值乘以0.0625,就是实际的十进制温度值。
通过观察可以发现一个十进制值和二进制值之间有很明显的关系。
低字节的高半字节乘以0.0625恰好就是原整数。
因此,把二进制的高字节的低半字节和低字节的高半字节组成一个字节,这个字节的二进制值化为十进制值后,就恰好是温度值的百、十、个位值;剩下的低字节的低半字节化成十进制后,就是温度值的小数部分。
小数部分因为是半个字节,所以二进制值范围是0~F,转换成十进制小数值就是0.0625的倍数。
这样需要4位的数码管来显示小数部分,实际应用不必有这么高的精度,采用1位数码管来显示小数,可以精确到0.1℃。
表5就是二进制和十进制小数的近似对应关系。
其程序流程图如图10所示。
表1小数部分二进制和十进制的近似对应关系表
小数部分
二进制数
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
十进制数
0
0
1
1
2
3
3
4
5
5
6
6
7
8
8
9
图9读出温度子程序流程图图10计算温度子程序流程图
(5)显示数据刷新子程序
显示数据刷新子程序[9]主要是对显示缓冲区中的显示数据进行刷新操作,当最高显示位为0时将符号显示位移入下一位。
其程序流程图如图11所示。
图11显示数据刷新子程序流程图
4详细仪器清单
编号
元件名称
型号及规格
数量
1
单片机芯片
P87C1
1
2
移位寄存器
SN54ALS02J
2
3
七段数码显示器
LED
2
4
串转并芯片
SN54F04J
1
5
A/D转换器
ADC0809N
1
6
开关
--
4
7
逻辑电路
SN74ALS104N
3
8
电阻
10K
12
9
电阻
8.2K
1
10
可变电阻
--
8
11
电容
10UF
1
12
电容
30PF
2
5总结与思考及致谢
本文设计了一种以P87C51单片机为核心控制器、以SN54ALS02作为温度传感器的多路温度采集与显示系统,该系统结构简单、低功耗、方便实用,并且硬件实现简单,得到了比教理想的实验效果。
本系统能够通过单片机灵活编程进行各种功能的设定和修改。
特别适用于大中型企业生产过程中多点温度的巡回测量和监控。
本设计说明了集成化的优点及作用,也表明了科技发展的重要性,也让我们看到了单片机的未来生产控制中的地位,让我认识到了学习单片机的重要性。
在本次课程设计中朱其攀为我们组的组长,在他的带领下,我们各组员都积极配合,很好的完成了自己的任务。
我主要负责撰写课程设计报告,朱其攀开始绘制系统原理图和PCB图,在原理图和PCB图的绘制过程中胡永志也开始了软件部分的设计,黄志雄也很好的完成了他的PPT设计。
在本次设计的过程中确确实实遇到很多问题,从而发现自己的很多不足。
如何将自己所学在所用展现出来是自己在本次课程设计中得到的最大收获。
几人为一小组的分配方式也让同学之间深深体会到了团队的重要性,每人出一份力才能事半功倍。
很多问题在老师的指导下也迎刃而解。
在这里我们特别感谢余宏生老师对我们孜孜不倦的辅导以及同学们热心的帮助,同时也感谢学校给我们这样好的机会来学习单片机设计。
从本次设计中得到很多宝贵的经验,同时也学习了很多知识。
参考文献
[1]蔡明文,冯先成。
单片机课程设计.武汉:
华中科技大学出版社,2007.3。
[2]文哲雄,罗中良。
单总线多点分布式温度测控系统的设计[J].微计算机信息,2005,21。
[3]朱定华,戴汝平。
单片微机原理与应用.(M)北京:
清华大学出版社,2003。
[4]康华光.电子技术基础(模拟部分)[M].北京:
高等教育出版社,1999
[5]周航慈.单片机程序设计基础[M].北京:
北京航空航天大学出版社,2003.
附录一:
原理图
附录二:
PCB图
附录三:
多路温度采集系统控制源程序
BITSEQU20H
TIMEOKBITBITS.1;1秒定时到标志。
TEMPONBITBITS.2;第一次温度转换标志。
TEMPLEQU26H;从DS18B20中读取温度低位的存放处。
TEMPHEQU27H;从DS18B20中读取温度高位的存放处。
TEMPCLEQU28H;转换后温度的小数位与个位存放处。
TEMPCHEQU29H;转换后温度的十位与百位存放处,如果温度为负,则百位为符号位。
TEMPHEADEQU36H;从DS18B20高速缓存RAM中读出数据的存放处的第一位。
;*************************************************************
;常数定义。
K0EQUP2.0;按键K0定义。
K1EQUP2.1;按键K1定义。
DQEQUP1.7;数据传送脚定义。
;*************************************************************
;多路温度采集系统源程序。
;*************************************************************
ORG0000H
LJMPSTART
ORG000BH
LJMPDVTO;T0中断入口地址。
;*************************************************************
;系统初始化。
ORG0030H
START:
MOVSP,#60H;数据存储区20H—80H清“0”。
CLS:
MOVR0,#20H
MOVR1,#60H
CLS1:
MOV@R0,#00H
INCR0
DJNZR1,CLS1
CLRP1.4;关移位脉冲。
CLRP3.6;关闭报警器。
MOVTMOD,#21H;选择定时器0工作方式1;
MOVTH0,#0E0H;20ms定时初值。
MOVTL0,#0B1H
MOVSCON,#00H;选择串行口工作方式0;
NOP
NOP
SETBET0;开定时器T0。
计时开始。
SETBTR0
SETBEA
MOVPSW,#00H
CLRTEMPONE
LJMPMAIN
;*************************************************************
;主程序。
MAIN:
LCALLKEYBORD;调用键盘扫描子程序。
LOOP1:
LCALLDISP;调用显示子程序。
JNBTIMEOK,LOOP1;测温每1秒一次。
CLRTIMEOK
JNBTEMPONE,LOOP2;上电时先温度转换一次。
LCALLREADTEMP;读出温度值子程序。
LCALLTEMPBCD;温度BCD码计算处理子程序。
LCALLDISPBCD;显示区BCD码温度值刷新子程序。
LCALLALARM;最高温度报警子程序。
LOOP2:
LCALLTEMPCONV;温度开始转换子程序。
SETBTEMPONE
SJMPMAIN
;*************************************************************
;定时器T0中断服子程序。
DVT0:
PUSHPSW
MOVPSW,#10H
MOVTH0,#0E0H
MOVTL0,#0B1H
INCR7
CJNZR7,#32H,DVT01
MOVR7,#00H
SETBTIMEOK;1秒定时到标志。
DVT01:
POPPSW
RETI
;*************************************************************
;键盘扫描子程序。
KEYBORD:
JBK0,L1
JNBK0,$
LCALLFUNCTION
LJMPKEYBORD
L1:
JBK1,L2
JNBK1,$
LCALLFUNCTION1
LJMPKEYBORD
L2:
RET
FUNCTION0:
MOV40H,#28H;第一路SN54ALS02J的64位序列号装入存储单元40H——47H。
MOV41H,#0D6H
MOV42H,#0B1H
MOV43H,#8AH
MOV44H,#00H
MOV45H,#00H
MOV46H,#00H
MOV47H,#0E3H
RET
FUNCTION0:
MOV40H,#28H;第二路SN54ALS02J的64位序列号装入存储单元40H——47H。
MOV41H,#0D6H
MOV42H,#0B1H
MOV43H,#8AH
MOV44H,#00H
MOV45H,#00H
MOV46H,#01H
MOV47H,#0E3H
RET
;*************************************************************
;DS18B20复位子程序。
RETET:
SETBDQ
NOP
NOP
CLRDQ
MOVR6,#0A0H;延时480us
DJNZR6,$
MOVR6,#0A0H
DJNZR6,$
SETBDQ
MOVR6,#32H;延时70us
DJNZR6,$
MOVR6,#3CH
RESET1:
MOVC,DQ
JCRESET2
DJNZR6,RESET1
MOVR6,#64H;延时200us
DJNZR6,$
SJMPRESET
RET
RESET2:
SETBDQ
RET
;*************************************************************
;读SN54ALS02J子程序,从SN54ALS02J中读出一个字节的数据。
READ:
MOVR7,#08H
SETBDQ
NOP
NOP
READ1:
CLRDQ
NOP
NOP
NOP
SETBDQ
MOVR6,#07H;延时15us。
DJNZR6,$
MOVC,DQ
MOVR6,#3CH;延时120us。
DJNZR6,$
RRCA
SETBDQ
DJNZR7,READ1
MOVR6,#3CH;延时120us。
DJNZR6,$
RET
;*************************************************************
;写SN54ALS02J子程序,给SN54ALS02J中写入一个字节的数据。
WRITE:
MOVR7,#08H
SETBDQ
NOP
NOP
WRITE1:
CLRDQ
MOVR6,#07H;延时15us。
DJNZR6,$
RRCA
MOVDQ,C
MOVR6,#34H;延时104us。
DJNZR6,$
SETBDQ
DJNZR7,WRITE1
RET
;*************************************************************
;温度开始转换子程序。
TEMPCONV:
LCALLRESET
MOVA,#55H;发送匹配ROM命令。
LCALLWRITE
MOVR6,#34H;延时104us。
DJNZR6,$
MOVR7,#08H;发送64位ROM编码。
MOVR0,#40H
TEMPVONV1:
MOVA,@R0
LCALLWRITE
INCR0
DJNZR7,TEMPCONV1;64位ROM编码发送完没有?
MOVR6,#34H;延时104us。
DJNZR6,$
MOVA,#44H;发送启动温度转换命令。
LCALLWRITE
MOVR6,#34H;延时104us。
DJNZR6,$
RET
;*************************************************************
;读出温度值子程序。
READTEMP:
LCALLRESET
MOVA,#55H;发送匹配ROM命令。
LCALLWRITE
MOVR6,#34H;延时104us。
DJNZR6,$
MOVR7,#08H;发送64位ROM编码。
MOVR0,#40H
READTEMP1:
MOVA,@R0
LCALLWRITE
INCR0
DJNZR7,TEMPCONV1
MOVR6,#34H;延时104us。
DJNZR6,$
MOVA,#0BEH;发送读暂存器命令。
LCALLWRITE
MOVR6,#34H;延时104us。
DJNZR6,$
MOVR5,#09H
MOVR0,#TEMPHEAD
MOVB,#00H
TEADTEMP2:
LCALLREAD
MOV@R0,A
INCR0
READTEMP3:
LCALLCRC
DJNZR5,READTEMP2
MOVA,B
JNZREADTEMP4;校证码不正确,则反回,不读取转换的温度。
MOVR0,#TEMPHEDA
MOVTEMPL,@R0;读取转换后的温度低位到TEMPL中。
INCR0
MOVTEMPH,@R0;读取转换后的温度高位到TEMPH中。
READTEMP4:
RET
;*************************************************************
;温度BCD码计算处理子程序。
TEMPBCD:
MOVA,TEMPH
ANLA,#80H
JZTEMPBCD1;温度值为正。
CLRC;温度值为负时,求补码。
MOVA,TEMPL
CPLA
ADDA,#01H
MOVTEMPL,A
MOVA,TEMPH
CPLA
ADDCA,#00H
MOVTEMPH,A
MOVTEMPCH,#0BH;执符号位“-”。
SJMPTEMPBCD2
TEMPBCD1:
MOVTEMPCH,#0AH;执符号位“+”。
TEMPBCD2: