单片机课程设计数字温度计的设计.docx
- 文档编号:28779909
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:18
- 大小:364.69KB
单片机课程设计数字温度计的设计.docx
《单片机课程设计数字温度计的设计.docx》由会员分享,可在线阅读,更多相关《单片机课程设计数字温度计的设计.docx(18页珍藏版)》请在冰豆网上搜索。
单片机课程设计数字温度计的设计
单片机课程设计-数字温度计的设计
湖南工业大学
课程设计任务书
2013—2014学年第1学期
电气与信息工程学院学院(系、部)自动化专业1101班级
课程名称:
单片机应用系统
设计题目:
数字温度计的设计
完成期限:
自2013年11月11日至2013年11月22日共2周
内
容
及
任
务
利用DS18B20(熟悉它的工作原理和性能并熟练掌握它)智能温度传感器、DS1302时间基准电路和单片机AT89S51小系统,键盘采用独立按键,显示器采用HD7279驱动4位LED显示以串口传送数据,实现温度显示,设计一个数字温度采集系统(温度显示为0℃—100℃,精度误差在0.5℃以内)其中有温度上下线的报警措施。
进
度
安
排
起止日期
工作内容
2013.11.——2013.13.
讲述设计内容及基本原理
2013.14.——2013.20.
进行单片机系统的设计
2013.21.——2013.22.
进行系统的调试
主
要
参
考
资
料
中国知网《数字温度计的国外动态及建议》
《数字温度传感器DS18B20介绍》
指导教师(签字):
年月日
系(教研室)主任(签字):
年月日
(单片机应用系统)
设计说明书
数字温度计的设计
起止日期:
2013年11月11日至2013年11月22日
学生姓名
肖慧芝孟敏华
班级
自动化1101
学号
11401700225
11401700238
成绩
指导教师(签字)
电气与信息工程学院
2013年11月22日
一、设计任务:
本次单片机课程设计将以51系列单片机为核心,以开发板为平台;设计一个数字式温度计,要求使用温度传感器(可以采用DS18B20或采用AD590)测量温度,再经单片机处理后,由LED数码管显示测量的温度值。
测温范围为0~100℃,精度误差在0.5℃以内。
二、单片机最小系统硬件资源介绍:
DS18B20温度传感器:
DALLAS最新单线数字温度传感器DS18B20是一种新型的“一线器件”,其体积更小、更适用于多种场合、且适用电压更宽、更经济。
DALLAS半导体公司的数字化温度传感器DS18B20是世界上第一片支持“一线总线”接口的温度传感器。
温度测量范围为-55~+125摄氏度,可编程为9位~12位转换精度,测温分辨率可达0.0625摄氏度,分辨率设定参数以及用户设定的报警温度存储在EEPROM中,掉电后依然保存。
被测温度用符号扩展的16位数字量方式串行输出;多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。
因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。
DS18B20温度转换的时间比较长,而且设定的分辩率越高,所需要的温度数据转换时间就越长。
因此,在实际应用中要将分辩率和转换时间权衡考虑。
DS18B20内部结构主要由四部分组成:
64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
DS18B20的管脚排列、各种封装形式,DQ为数据输入/输出引脚。
开漏单总线接口引脚。
当被用着在寄生电源下,也可以向器件提供电源;GND为地信号;VDD为可选择的VDD引脚。
当工作于寄生电源时,此引脚必须接地,如下图所示。
图1.1DS18B20管脚图
DS18B20的初始化:
(1)先将数据线置高电平“1”。
(2)延时(该时间要求的不是很严格,但是尽可能的短一点)
(3)数据线拉到低电平“0”。
(4)延时750微秒(该时间的时间范围可以从480到960微秒)。
(5)数据线拉到高电平“1”。
(6)延时等待(如果初始化成功则在15到60毫秒时间之内产生一个DS18B20所返回的低电平“0”。
据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时控制)。
(7)若CPU读到了数据线上的低电平“0”后,还要做延时,其延时的时间从发出的高电平算起(第(5)步的时间算起)最少要480微秒。
(8)将数据线再次拉高到高电平“1”后结束。
DS18B20的写操作:
(1)数据线先置低电平“0”。
(2)延时确定的时间为15微秒。
(3)按从低位到高位的顺序发送字节(一次只发送一位)。
(4)延时时间为45微秒。
(5)将数据线拉到高电平。
(6)重复上
(1)到(6)的操作直到所有的字节全部发送完为止。
(7)最后将数据线拉高。
三、设计原理及思路
1.主程序:
主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。
这样可以在一秒之内测量一次被测温度。
图1.2主程序流程
2.读出温度子程序
读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,检验有错时不进行温度数据的改写。
其程序流程图如图1.3所示。
图1.3读出温度子程序流程图
3.温度转换命令子程序
温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。
4.计算温度子程序
计算温度子程序将RAM值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图1.4所示。
N
Y
图1.4计算温度子程序流程图
四、源程序
汇编:
DQBITP3.0;从DS18B20向8051传送的数据端口
FLAGBIT00H
FLAG_NEGBIT01H;温度正负值标志位
TEMP_LEQU30H;所设报警最低值温度值
TEMP_HEQU31H;所设报警最高值温度值
TEMP_INTEQU32H
TEMP_DPEQU33H
TEMP_100EQU34H;
TEMP_10EQU35H
TEMP_1EQU36H
C0BITP3.1;负温度标志位
C1BITP3.2;超过100标志位
C2BITP3.3;超过10标志位
C3BITP3.4;超过1标志位
C4BITP3.5;超过0标志位
;*******************************
;************主函数*************
ORG0000H
LJMPSTART
ORG1000H
START:
MOVSP,#60H
MAIN:
LCALLREAD_TEMP;调用函数读DS18B20所示温度
LCALLPROC_TEMP;调用函数对温度进行处理
LJMPMAIN
;*********************************
;*********************************
READ_TEMP:
LCALLINI_DQ
JBFLAG,RE_0
RET
RE_0:
MOVA,#0CCH
LCALLWRITE_DQ;读出传感器所示温度
MOVA,#44H
LCALLWRITE_DQ
LCALLDISP_LED;调用LED显示程序
LCALLINI_DQ
MOVA,#0CCH
LCALLWRITE_DQ
MOVA,#0BEH
LCALLWRITE_DQ
LCALLREAD_DQ
RET
;************DS18B20初始化程序***************
INI_DQ:
SETBDQ
NOP;
NOP;空操作PC值加2
CLRDQ
MOVR1,#3
INI_0:
MOVR0,#80
DJNZR0,$
DJNZR1,INI_0
SETBDQ
NOP;
NOP;
NOP;空操作PC值加3
MOVR7,#25
INI_1:
JNBDQ,INI_2;DQ为0则转
DJNZR7,INI_1;延时
LJMPINI_3
INI_2:
SETBFLAG;标志位
LJMPINI_4
INI_3:
CLRFLAG
LJMPINI_5
INI_4:
MOVR0,#80
DJNZR0,$;时序要求延时一段时间
INI_5:
SETBDQ
RET
;**************DS18B20写命令******************
WRITE_DQ:
MOVR6,#8
CLRC
Tloop:
CLRDQ
MOVR2,#6
DJNZR2,$
RRCA;最低位移到C中
MOVDQ,C
MOVR2,#23
DJNZR2,$
SETBDQ
NOP
DJNZR6,Tloop
SETBDQ
RET
;**************读DS18B20数据函数*************
READ_DQ:
MOVR5,#2
MOVR0,#30H
READ_0:
MOVR6,#8
READ_1:
CLRC
SETBDQ
NOP
NOP
CLRDQ
NOP
NOP
NOP
NOP
SETBDQ
MOVR2,#9
DJNZR2,$
MOVC,DQ
MOVR3,#23
DJNZR3,$
RRCA
DJNZR6,READ_1
MOV@R0,A
INCR0
DJNZR5,READ_0
SETBDQ
RET
;***************温度数据处理程序*****************
PROC_TEMP:
CLRFLAG_NEG
MOVA,TEMP_L
SWAPA;A中高低四位互换
ORLA,#0F0H
MOVTEMP_INT,A
MOVA,TEMP_H
SWAPA
ORLA,#0FH
ANLTEMP_INT,A
MOVA,TEMP_H
CLRP3.6
CLRP3.7
JBACC.7,BAOJING1;低于零度亮红灯报警
;JBACC.7,NEGTIVE
MOVA,TEMP_L
ANLA,#0FH
MOVDPTR,#TAB3
MOVCA,@A+DPTR
MOVTEMP_DP,A
LJMPPRO_0
;***********报警函数********************
BAOJING1:
SETBP3.6
RET
;NEGTIVE:
;温度值为负时处理程序,按实际情况,处理过程比较复杂
;SETBFLAG_NEG
;MOVA,TEMP_L
;CPLA
;ANLA,#0FH
;MOVR1,A
;CJNER1,#0FH,PRO_1
;;低于0°则调用报警函数
;PUSHACC
;MOVA,TEMP_INT
;SUBBA,#1
;MOVTEMP_INT,A
;POPACC
;MOVTEMP_DP,#00H
;LJMPPRO_2
PRO_1:
ADDA,#1
MOVDPTR,#TAB3
MOVCA,@A+DPTR
MOVTEMP_DP,A
PRO_2:
MOVA,TEMP_INT
CPLA
MOVTEMP_INT,A
PRO_0:
MOVA,TEMP_INT
MOVB,#100
DIVAB
MOVTEMP_100,A
MOVA,B
MOVB,#10
DIVAB
MOVTEMP_10,A
MOVTEMP_1,B
RET
;**************LED初始化********************
CLR_LED:
CLRC0
CLRC1
CLRC2
CLRC3
CLRC4
RET
;**************LED显示***********************
DISP_LED:
LCALLCLR_LED
SETBC0
JNBFLAG_NEG,DL_0
MOVP1,#0BFH
LCALLDELAY_10MS
LJMPDL_1
DL_0:
MOVP1,#0FFH
LCALLDELAY_10MS
DL_1:
LCALLCLR_LED
SETBC1;显示百位
MOVA,TEMP_100
MOVDPTR,#TAB4
MOVCA,@A+DPTR
MOVP1,A
CJNEA,#0F9H,CESHI
LCALLBAOJING2;超过一百启动扬声器报警
CESHI:
LCALLDELAY_10MS
LCALLCLR_LED
SETBC2;显示十位
MOVA,TEMP_10
MOVDPTR,#TAB4
MOVCA,@A+DPTR
MOVP1,A
LCALLDELAY_10MS
LCALLCLR_LED
SETBC3
MOVA,TEMP_1;显示个位
MOVDPTR,#TAB5
MOVCA,@A+DPTR
MOVP1,A
LCALLDELAY_10MS
LCALLCLR_LED
SETBC4;显示小数点后的数
MOVA,TEMP_DP
MOVDPTR,#TAB4
MOVCA,@A+DPTR
MOVP1,A
RET
;******************
BAOJING2:
SETBP3.7
RET
;*********延时函数*************
DELAY_10MS:
MOVR3,#20
DEL_1:
MOVR4,#248
DJNZR4,$
DJNZR3,DEL_1
RET
;**********小数位转换********************
TAB3:
DB00H,01H,01H,02H
DB02H,03H,04H,04H
DB05H,06H,06H,07H
DB07H,08H,09H,09H
;************无小数点位的段码******************
TAB4:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
;*****************有小数点**********************
TAB5:
DB40H,79H,24H,30H,19H,12H,02H,78H,00H,10H
END
系统硬件原理图
五、心得体会
本次课程设计我们进行了两个课程设计:
一是单片机的学习与应用;二是新器件的学习。
单片机的学习与应用相关的总结与体会。
在课设过程中,我们不仅巩固了平时所学习的单片机知识,而且通过不断查阅相关资料,学习新的知识,可以说,通过这次单片机的实践学习,我们学到了很多,而且对单片机的有关知识以及其在现实生活中的多方面应用有了更深层次的认识,这对于我们以后的学习和步入社会后参加工作都有很大的帮助。
在此次课程设计的进程中,我们遇到了很多问题,例如,一开始我们在确定课程时间的题目后,在编写程序时,由于思路不太清晰,而且设计要求中需要使用新器件DS18B20智能测温,而其相关知识我们很模糊甚至可以说一无所知,不过后来,我们通过查找一些相关的资料书以及寻求辅导老师的帮助,对改传感器有了比较深刻的了解,对特的工作原理及其的运用还有在使用过程中的连线方式都有了一定的掌握,经过我们的主动思考,理清思路,终于将程序修改正确。
在仿真时,由于我们有了之前的单片机实验设仿真的经验,所以此时我们课设进行的很顺利,但是对于有的总线的使用还是有一些不大了解,最后通过问同学网上学习最后并没有受到什么大的阻碍。
通过此次单片机课程设计,我们明白了很多,理论指导实践,但是理论也需要实践给予证明,不能盲目的相信书本,凡事都要通过自己的思考推敲,否则自己不会取的大的进步。
而且在平时的学习生活中应该多和周围的同学相互学习,交流经验,遇到不会的东西时,切忌焦躁,首先要经过自己的独立思考,有了一定想法后,可以去查找相关的资料书刊或者找同学讨论,如果实在解释不了,再去找辅导老师,在这个遇到问题解决问题的过程中,不断加强自我的动脑能力,进而去指导动手能力,也只有这样,在思路清晰,条理顺畅的时候,再去进行软件编写和硬件操作工作,才有可能起到事半功倍的效果。
参考文献
1、王迎旭编.《单片机原理与应用》[M].机械工业出版社.2004.
2、楼然苗编.《51系列单片机设计实例》[M].北京航空航天大学出版社.
3、黄勤编.《计算机硬件技术基础实验教程》[M].重庆大学出版社.
4、刘乐善编.《微型计算机接口技术及应用》[M].华中科技大学出版社.
5、陈光东编.《单片微型计算机原理及接口技术》[M].华中科技大学出版社
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 数字 温度计 设计