数字温度计课程设计.docx
《数字温度计课程设计.docx》由会员分享,可在线阅读,更多相关《数字温度计课程设计.docx(28页珍藏版)》请在冰豆网上搜索。
数字温度计课程设计
湖南工程学院
课程设计
课程名称单片机原理与应用
课题名称数字温度计设计
专业测控技术与仪器
班级0801班
学号200801200102
姓名张银杰
指导教师赵葵银、汪超
2011年5月27日
湖南工程学院
课程设计任务书
课程名称单片机原理与应用
课题数字温度计的设计
专业班级测控技术0801班
学生姓名张银杰
学号200801200102
指导老师赵葵银、汪超等
审批
任务书下达日期2011年5月16日
任务完成日期2011年5月27日
设计内容与设计要求
设计内容:
以51系列单片机为核心,以开发板为平台;设计一个数字式温度计,要求使用温度传感器(可以采用DS18B20或采用AD590)测量温度,再经单片机处理后,由LED数码管显示测量的温度值。
测温范围为0~100℃,精度误差在0.5℃以内。
设计要求:
1)确定系统设计方案;
2)进行系统的硬件设计;
3)完成必要元器件选择;
4)系统软件设计及调试;
5)系统联调及操作说明
6)写说明书
主要设计条件
1、MCS-51单片机实验操作台1台;
2、PC机及单片机调试软件,仿真软件proteus;
3、系统设计所需的元器件。
说明书格式
目录
第1章、概述
第2章、系统总体方案设计
第3章硬件设计
第4章软件设计及调试
第5章系统联调及操作说明
第6章总结
参考文献
附录A系统硬件原理图
附录B程序清单
进度安排
设计时间分为二周
第一周
星期一、上午:
布置课题任务,课题介绍及讲课。
下午:
借阅有关资料,总体方案讨论。
星期二、确定总体方案,学习与设计相关内容。
星期三、各部分方案设计
星期四、软硬件部分设计。
星期五、设计及上机调试。
星期六、设计并调试
第二周
星期一:
设计及上机调试。
星期二:
调试,中期检查。
星期三:
调试、写说明书。
星期四--星期五上午:
写说明书、完成电子版并打印成稿。
星期五下午:
答辩。
参考文献
参考文献
1、王迎旭编.《单片机原理与应用》[M].机械工业出版社.2004.
2、楼然苗编.《51系列单片机设计实例》[M].北京航空航天大学出版社.
3、黄勤编.《计算机硬件技术基础实验教程》[M].重庆大学出版社
4、刘乐善编.《微型计算机接口技术及应用》[M].华中科技大学出版社.
5、陈光东编.《单片微型计算机原理及接口技术》[M].华中科技大学出版社.
目录
第1章、概述
1.1设计阐述……………………………………………………………8
1.2电路概述……………………………………………………………8
1.2.1单片机主控电路………………………………………………8
1.2.2测温控制电路…………………………………………………8
1.2.3温度显示电路…………………………………………………8
第2章、系统总体方案设计
2.1系统总体设计框图…………………………………………………9
2.2系统设计总体思路…………………………………………………9
第3章、硬件设计
3.1硬件设计……………………………………………………………10
3.1.1主控制模块………………………………………………………10
3.1.2显示模块…………………………………………………………11
3.1.3测温模块…………………………………………………………13
第4章、软件设计及调试
4.1软件设计介绍………………………………………………………15
4.2主程序设计…………………………………………………………15
4.3读出温度子函数程序设计…………………………………………16
4.4设计测试……………………………………………………………17
第5章系统联调及操作说明
5.1仿真与调试…………………………………………………………18
5.2硬件接线与调试……………………………………………………18
第6章总结………………………………………………………………19
参考文献……………………………………………………………………20
附录A系统硬件原理图……………………………………………21
附录B程序清单…………………………………………………………………22
第1章概述
1.1设计阐述
本次课程设计,是以设计一个具有数据温度显示器为最终的标。
他是由单片机,温度传感器和LED数码管显示器以及其他相关部件共同实现的。
其主要有一下三个功能:
1.精确度:
0.5摄氏度。
2.所测试的温度可由LED数码管显示器直接读出。
3.所测温度的范围为0~100℃。
1.2主要电路概述
这次设计主要是由AT89C52单片机主控制电路、DS18B20测温电路及LED数码管显示电路三部分组成。
1.2.1单片机主控制电路
单片机主电路由现在比较通用的AT89C52系列单片机及外围电路构成,主要功能是把温度传感器送来的数据经过处理再通过I/O口送达显示电路中。
1.2.2测温控制电路
温度测量电路主要由DS18B20温度传感器及其外围电路构成,把采集到的数据送入单片机中进行处理。
1.2.3温度显示电路
温度显示电路主要由4个8段LED数码管及其外围电路构成,主要功能是把单片机发送的数据以数字的形式显示出来。
第2章、系统总体方案设计
2.1系统总体设计框图
图2.1系统总体设计框图
2.2总体设计思路
首先确定课程设计的目的是设计一个温度计,由单片机,温度传感器和LED数码管显示器以及其他相关部件共同实现。
根据所要实现的功能,先在proteus软件上仿真,根据所选用的硬件可以将整个软件设计成若干个子程序,譬如初始化,复位,发送指令,读取数据,显示温度等构成,可以将以上子程序分别设计,实现各自功能,再在主程序中调用,实现预期功能。
在proteus软件中画出相应的电路图,将编好的程序编译后的文件下载到电路图中的单片机中,进行仿真,对温度传感器设置不同的参数,如若不能达到预期效果,则进行修改直至成功,于此同时,将编译好的程序下载到单片机开发板中,进行测试。
第3章硬件设计
3.1硬件设计
温度计电路设计总体设计方框图(如图2.1)所示,按照系统设计功能的要求,确定系统由3个模块组成,主控制模块,测温模块,温度显示模块。
对其分别说明如下。
3.1.1主控制模块
本设计采用AT89C52单片机,它有高可靠,抗干扰,低功耗的特点。
AT89C52单片机的RST端外部有两种操作方式:
上电自动复位和按键手动复位。
此处晶振采用12MHZ。
复位电路采用上电结合按钮复位。
图3.1.1a晶振电路
图3.1.1b复位电路
3.1.2显示模块
LED数码管是由八个发光二极管组成的显示器件,这种显示块有共阴极与共阳极两种LED显示器的驱动方式分静态和动态两种方式:
动态扫描方式静态方式是把LED的公共极接地(指共阴极)7段码,经锁存器给到各LED,数据更新时间无严格限制。
该方式硬件结构复杂,软件编程简单。
动态扫描方式是每个LED公共极分别由一根位选线控制,选通该位LED由并口给出7段码,则该位亮,延时一段时间,再选通下一位,给出下一位的7段码。
依此类推,反复进行。
此方式的数据更新频率应大于25HZ;当然越高越好。
此方案硬件结构简单但对编程要求高。
在应用中只要将一个8位并行输出口与显示块的发光二极管引脚相连即可8位并行输出口输出不同的7段码,即可显示不同的字符。
通常将控制发光二极管的8位数据称为段码,其公共端称位码。
本实验用P3口的低3位产生扫描线,作为LED的位选通信号,LED显示的数据(7段码)由P1口给出。
实验系统选用的是共阴极数码管,下表为7段LED数码管(共阴极)显示字符与7段码的对应关系。
LED共阴数码管对应图表
图3.1.2a显示模块图1
图3.1.2b显示模块图2
3.1.3测温模块
本次设计方案的测温模块,放弃了热电偶和热敏电阻以及铂电阻的方案,而采用了温度传感器DS18B20,这是因为前三者都存在着电路复杂亦或是热响应慢或者是成本高等缺点。
而后者则不存在上述问题,因为在单片机电路设计中,大多都是使用传感器,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。
(1)DS18B20的性能特点
DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
DS18B20的性能特点如下:
●独特的单线接口仅需要一个端口引脚进行通信;
●多个DS18B20可以并联在惟一的三线上,实现多点组网功能;
●无须外部器件;
●可通过数据线供电,电压范围为3.0~5.5V;
●零待机功耗;
●温度以9或12位数字;
●用户可定义报警设置;
●报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;
●负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。
(2)DS18B20的内部结构
DS18B20采用3脚PR-35封装或8脚SOIC封装,其内部结构框图如下图所示。
DS18B20内部结构
图3.1.3测温模块
第4章软件设计及调试
4.1软件设计介绍
整个系统的功能是由硬件电路配合软件来实现的,当硬件基本定型后,软件的功能也就基本定下来了。
根据软件的功能,可以将其分为主程序部分和子程序部分。
在运行主程序时,采用外部中断0和外部中断1来调用子程序。
另外,本设计的按键均采用软件消抖。
4.2主程序
主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。
这样可以在一秒之内测量一次被测温度。
ORG0000H
AJMPSTART
;初始化
ORG0050H
START:
MOVSP,#40H
;程主序
MAIN:
LCALLREAD_TEMP;调读温度程序
LCALLPROCESS;调数据处理程序
AJMPMAIN
其程序流程见图所示
主程序流程图读温度流程图
4.3读出温度子程序
读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。
;读温度程序
READ_TEMP:
LCALLRESET_PULSE;调用复位脉冲程序
MOVA,#0CCH;跳过ROM命令
LCALLWRITE
MOVA,#44H;读温度
LCALLWRITE
LCALLDISPLAY;显示温度
LCALLRESET_PULSE;调用复位脉冲程序
MOVA,#0CCH;跳过ROM命令
LCALLWRITE
MOVA,#0BEH;读缓存命令
LCALLWRITE
LCALLREAD
RET
其程序流程图如图示
温度转换流程图
4.4设计测试
在将程序下载到单片机开发板进行测试之前,先是就各个功能模块的设计和相应程序在keil软件上进行编写,再在Proteus软件上进行仿真,几经编写,修改,仿真。
最后由ISP下载软件下载到单片机开发板上进行测试,测试所显示的温度是否符合实际值。
第5章系统联调及操作说明
5.1仿真与调试
操作如下:
1)、在Proteus软件中绘制出硬件电路图。
根据系统设计要求,选择元器件,设计出硬件电路图,如2.4所示。
2)、编写系统程序。
根据系统要求,画流程图。
在WAVE(或keil)中编程,过程中先将各模块搞好,分别调试各模块,调试好后,编写主程序,将各系统结合,使成为系统软件。
各模块调试后,在调试主程序,看是否能实现系统功能。
3)、硬件和软件电路的联合模拟调试在Proteus软件中进行。
先将编译好的HEX文件加载到AT89C52中,在运行硬件电路。
通电后,对温度传感器实现加减控制,观察LED显示器显示的温度数值是否与温度传感器显示数据一致。
若一致,则电路设计成功。
若还是不同,继续检查调试,直到成功。
5.2硬件接线及调试
虽然软件模拟调试是非常重要的,但是还是纸上谈兵啊,真正要到了调试的时候,这又是一个比设计还头痛的事,我们说它令人头痛是有原因的,按理是通的,但调试不一定可以出来,甚至于设计是错误的,调试是设计的试金石啊!
单片机系统进行软件盒硬件调试成功后最后一步是进行硬件的连接和物制作,我们的硬件调试是在试验台上进行的,虽然与设计的电路不太相同,不过可以适当修改源程序,以适应实验台的要求。
1)根据情况和设计要求连接电路图。
2)行模块测试,就是用简单的程序进行调试以确定电路连接正确。
3)将修改后的程序下载到单片机里,可以用伟福仿真系统,进行单步和断点调试。
4)将运行结果和实验现象与预定值进行比较,再适当修改程序以达到要求。
第6章总结
设计之前,我首先确定目标,然后进行各个功能模块的设计和相应程序的编写,再在Proteus软件上进行仿真,几经编写,修改,仿真。
这次课程设计是我认为最难的一次,因为这次课程设计需要动脑动手,把自己课堂上学到的软件和硬件知识全部应用进来。
要想完成好这次课程设计,首先要弄懂数字温度计的工作原理,与外部电路的连接,单片机原理,汇编语言等。
这其中有以前课堂上学过的也有需要我们自学研究的,这不仅考察了自己原来的知识程度还加强了我们独立获取知识并加以运用的能力。
我想通过这次实验,我对数字温度计的了解扩宽了,对单片机和外围电路的认识也更为清晰了,这为我以后工作提供了坚实的基础。
并且我领悟到理论联系实践的重要性,如若没有实践,就如单纯的纸上谈兵,无丝毫实质内容可提。
程序只有在经常写与读的过程中才能提高。
通过这次学习,让我对各种电路都有了大概的了解,所以说,坐而言不如立而行,对于一些电路还是应该自己动手实际操作才会有深刻理解
两个星期很快过去了,尽管时间很短并不能很深入的去了解单片机和更多编程序的一些技巧,可我还是很感谢学校安排了这样的课。
这两周我最大的收获就是学会了keil和proteus两种软件,以前就听老师说功能是多么多么的强大,这次用了才算真的领悟了,不过最后还是要感谢老师和同学们的悉心指导和帮助,才能取得课程设计的成功。
附录A
附录8
程序如下:
DATA_BUSBITP3.3
FLAGBIT00H;标志位
TEMP_LEQU30H;温度值低字节
TEMP_HEQU31H;温度值高字节
TEMP_DPEQU32H;温度小数
TEMP_INTEQU33H;温度值整数
TEMP_BAIEQU34H;温度百位数
TEMP_SHIEQU35H;温度十位数
TEMP_GEEQU36H;温度个位数
DIS_BAIEQU37H;显示百位数
DIS_SHIEQU38H;显示十位数
DIS_GEEQU39H;显示个位数
DIS_DPEQU3AH;显示小数位
DIS_ADDEQU3BH;显示地址
ORG0000H
AJMPSTART
;初始化
ORG0050H
START:
MOVSP,#40H
;主程序
MAIN:
LCALLREAD_TEMP;调读温度程序
LCALLPROCESS;调数据处理程序
AJMPMAIN
;读温度程序
READ_TEMP:
LCALLRESET_PULSE;调用复位脉冲程序
MOVA,#0CCH;跳过ROM命令
LCALLWRITE
MOVA,#44H;读温度
LCALLWRITE
LCALLDISPLAY;显示温度
LCALLRESET_PULSE;调用复位脉冲程序
MOVA,#0CCH;跳过ROM命令
LCALLWRITE
MOVA,#0BEH;读缓存命令
LCALLWRITE
LCALLREAD
RET
;复位脉冲程序
RESET_PULSE:
RESET:
SETBDATA_BUS
NOP
NOP
CLRDATA_BUS
MOVR7,#255
DJNZR7,$
SETBDATA_BUS
MOVR7,#30
DJNZR7,$
JNBDATA_BUS,SETB_FLAG
CLRFLAG
AJMPNEXT
SETB_FLAG:
SETBFLAG
NEXT:
MOVR7,#120
DJNZR7,$
SETBDATA_BUS
JNBFLAG,RESET
RET
;写命令
WRITE:
SETBDATA_BUS
MOVR6,#8
CLRC
WRITING:
CLRDATA_BUS
MOVR7,#5
DJNZR7,$
RRCA
MOVDATA_BUS,C
MOVR7,#30H
DJNZR7,$
SETBDATA_BUS
NOP
DJNZR6,WRITING
RET
;循环显示段位
DISPLAY:
MOVR4,#200
DIS_LOOP:
MOVA,DIS_DP
MOVP2,#0FFH
MOVP0,A
CLRP2.7
LCALLDELAY2MS
MOVA,DIS_GE
MOVP2,#0FFH
MOVP0,A
SETBP0.7
CLRP2.6
LCALLDELAY2MS
MOVA,DIS_SHI
MOVP2,#0FFH
MOVP0,A
CLRP2.5
LCALLDELAY2MS
MOVA,DIS_BAI
MOVP2,#0FFH
MOVP0,A
MOVA,TEMP_BAI
CJNEA,#0,SKIP
AJMPNEXTT
SKIP:
CLRP2.4
LCALLDELAY2MS
NEXTT:
NOP
DJNZR4,DIS_LOOP
RET
;读命令
READ:
SETBDATA_BUS
MOVR0,#TEMP_L
MOVR6,#8
MOVR5,#2
CLRC
READING:
CLRDATA_BUS
NOP
NOP
SETBDATA_BUS
NOP
NOP
NOP
NOP
MOVC,DATA_BUS
RRCA
MOVR7,#30H
DJNZR7,$
SETBDATA_BUS
DJNZR6,READING
MOV@R0,A
INCR0
MOVR6,#8
SETBDATA_BUS
DJNZR5,READING
RET
;数据处理
PROCESS:
MOVR7,TEMP_L
MOVA,#0FH
ANLA,R7
MOVTEMP_DP,A
MOVR7,TEMP_L
MOVA,#0F0H
ANLA,R7
SWAPA
MOVTEMP_L,A
MOVR7,TEMP_H
MOVA,#0FH
ANLA,R7
SWAPA
ORLA,TEMP_L
MOVB,#64H
DIVAB
MOVTEMP_BAI,A
MOVA,#0AH
XCHA,B
DIVAB
MOVTEMP_SHI,A
MOVTEMP_GE,B
MOVA,TEMP_DP
MOVDPTR,#TABLE_DP
MOVCA,@A+DPTR
MOVDPTR,#TABLE_INTER
MOVCA,@A+DPTR
MOVDIS_DP,A
MOVA,TEMP_GE
MOVDPTR,#TABLE_INTER
MOVCA,@A+DPTR
MOVDIS_GE,A
MOVA,TEMP_SHI
MOVDPTR,#TABLE_INTER
MOVCA,@A+DPTR
MOVDIS_SHI,A
MOVA,TEMP_BAI
MOVDPTR,#TABLE_INTER
MOVCA,@A+DPTR
MOVDIS_BAI,A
RET
DELAY2MS:
MOVR6,#3
LOOP3:
MOVR5,#250
DJNZR5,$
DJNZR6,LOOP3
RET
TABLE_DP:
DB00H,01H,01H,02H,03H,03H,04H,04H,05H,06H
DB06H,07H,08H,08H,09H,09H
TABLE_INTER:
DB03FH,006H,05BH,04FH,066H
DB06DH,07DH,07H,07FH,06FH
电气信息学院课程设计评分表
项目
评价
优
良
中
及格
差
设计方案合理性与创造性(10%)
开发板焊接及其调试完成情况*(10%)
硬件设计或软件编程完成情况(20%)
硬件测试或软件调试结果*(10%)
设计说明书质量(20%)
答辩情况(10%)
完成任务情况(10%)
独立工作能力(10%)
出勤情况(10%)
综合评分
指导教师签名:
________________
日期:
________________
注:
表中标*号项目是硬件制作或软件编程类课题必填内容;
此表装订在课程设计说明书的最后一页。
课程设计说明书装订顺序:
封面、任务书、目录、正文、评分表、附件(非16K大小的图纸及程序清单)。