数字温度计设计单片机设计报告文档格式.docx
- 文档编号:21858456
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:25
- 大小:126.29KB
数字温度计设计单片机设计报告文档格式.docx
《数字温度计设计单片机设计报告文档格式.docx》由会员分享,可在线阅读,更多相关《数字温度计设计单片机设计报告文档格式.docx(25页珍藏版)》请在冰豆网上搜索。
v将12位的温度值转换为数字量所需时间不超过750ms;
v用户定义的,非易失性的温度告警设置,用用户可以自行设定告警的上下限温度。
(4)DS18B20内部结构
64位ROM的结构开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。
温度报警触发器TH和TL,可通过软件写入户报警上下限。
DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。
高速暂存RAM的结构为8字节的存储器,结构如图3所示。
头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。
第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。
DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。
该字节各位的定义如图3所示。
低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分辨率
图1DS18B20内部结构
3、ZLG7290芯片
ZLG7290的核心是一块ZLG7290B芯片,它采用I2C接口,能直接驱动8位共阴式数码管,同时可扫描管理多达64只按键,实现人机对话的功能资源十分丰富。
除具有自动消除抖动功能外,它还具有段闪烁、段点亮、段熄灭、功能键、连击键计数等强大功能,并可提供10种数字和21种字母的译码显示功能,用户可以直接向显示缓存写入显示数据,而且无需外接元件即可直接驱动数码管,还可扩展驱动电压和电流。
此外,ZLG7290B的电路简单,使用也很方便。
用户按下某个键时,ZLG7290的INT引脚会产生一个低电平的中断请求信号,读取键值后,中断信号就会自动撤销。
正常情况下,微控制器只需要判断INT引脚就可以得到键盘输入的信息。
微控制器可通过两种方式得到用户的键盘输入信息。
其一是中断方式,该方式的优点是抗干扰能力强,缺点是要占用微控制器的一个外部中断源。
其二是查询方式,即通过不断查询INT引脚来判断是否有键按下,该方式可以节省微控制器的一根I/O口线,但是代价是I2C总线处于频繁的活动状态,消耗电流多并且不利于抗干扰。
ZLG7290能够直接驱动8位共阴式数码管(或64只独立的LED),同时还可以扫描管理多达64只按键。
其中有8只按键还可以作为功能键使用,就像电脑键盘上的Ctrl、Shift、Alt键一样。
另外ZLG7290B内部还设置有连击计数器,能够使某键按下后不松手而连续有效。
采用I2C总线方式,与微控制器的接口仅需两根信号线。
可控扫描位数,可控任一数码管闪烁。
二、系统软件设计
系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序,按键扫描子程序等。
在参考程序的基础上,我对数值的显示方式进行了改进。
在数值前有“+”、“—”符号,小数部分改为显示两位小数,提高了精度。
且百位为零时,显示符号。
(一)软件算法分析
1、主程序
主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,其程序流程见图2所示。
图2主程序流程图图3读温度流程图
2、读出温度子程序
读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。
其程序流程图如图3示
3、温度转换命令子程序
温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。
温度转换命令子程序流程图如图4所示
图4温度转换流程图
4、计算温度子程序
计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图5所示。
图5 计算温度流程图 图6 显示数据刷新流程图
5、显示数据刷新子程序
显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高显示位为0时将符号显示位移入下一位。
程序流程图如图6。
(二)仿真与调试
1、软件调试,在Keil软件上输入程序,进行编译、连接。
2、在DP-51PRO.NET单片机仿真器、编程器、实验仪三合一综合开发平台上,连接硬件。
DQ连P3.3,DAT连P1.7,SCL连P1.6,REST连1.5,INTT0连P3.2。
3、进行硬件仿真。
4、仿真结果:
运行程序,LED首先显示六个P:
“PPPPPP”;
按下S1键,显示当时测量的室内温度:
“+31.81”.;
重复按下S1键,LED刷新测量的温度值。
三、总结与体会
在为期一周的电子方向课程设计中,我们要设计一个温度测量系统。
软件使用Keil软件进行仿真调试。
硬件使用DP-51PRO.NET单片机仿真器、编程器、实验仪三合一综合开发平台上的DS18B20数字温度采集模块和ZLG7290显示模块。
张老师首先给我们详细讲解了芯片的功能和工作原理,并给了一份参考程序。
在机房进行实验时,我先将参考程序进行仿真,结果正确。
然后,我思考显示两位小数怎么改程序,初次修改没有成功,我询问了张老师,张老师给我讲解了思路,并知道我修改了程序。
后来我又思考,怎样能百位为零时不显示而显示符号位,而百位不为零则显示。
我修改程序,反复调试,最后成功了,心里非常高兴,这次是我独自思考,独立完成的,也使我对整个程序有了更深的理解。
通过这次的课程设计作品的制作让我对单片机的理论有了更加深入的了解,同时在具体的制作过程中我们发现现在书本上的知识与实际的应用存在着不小的差距,书本上的知识很多都是理想化后的结论,忽略了很多实际的因素,或者涉及的不全面,可在实际的应用时这些是不能被忽略的,我们不得不考虑这方的问题,这让我们无法根据书上的理论就轻易得到预想中的结果,有时结果甚至很差别很大。
通过这次实践使我更深刻的体会到了理论联系实际的重要性,我们在今后的学习工作中会更加的注重实际,避免称为只会纸上谈兵的赵括。
程序清单:
;
*****************************
WDCLXSPROGRAM
****************************
THERMLEQU30H
THERMHEQU31H
**************************
DQBITP3.3
DATBITP1.7
CLKBITP1.6
RESTBITP1.5
INTT0BITP3.2
FLAG0BIT0
FLAG1BIT1
FLAG2BIT2
ORG0
NOP
SJMPMAIN
ORG0003H
LJMPINNT0
ORG0030H
MAIN:
LCALLDL750MS
MOVSP,#6FH
MOVR0,#127
CLRA
MAIN1:
MOV@R0,A
DJNZR0,MAIN1
MOVP3,#255
CLRREST
SETBREST
CLRCLK
CLRDAT
MOVTCON,#0
SETBIT0
MOVIE,#81H
MOVR0,#60H
MOV@R0,#5;
DISP6BIT
MOVR5,#0DH
MOVR6,#1
LCALLW7290;
设置72906位显示位
MOVR0,#40H
MOVR2,#6
MOVA,#12H;
P
MAIN2:
INCR0
DJNZR2,MAIN2
LCALLDISP;
DISP"
PPPPPP"
CLRFLAG2
MAIN3:
LCALLPS1820
LCALLTECOV
JNBFLAG2,MAIN3
LCALLDISP0
SJMPMAIN3
**********************************
PS1820:
SETBDQ
PS18201:
LCALLIN1820;
1820RESET
JNBFLAG0,PS1820
MOVA,#0CCH;
跳过ROM
LCALLW1820
MOVA,#44H
LCALLW1820;
发温度转换命令
TO18201:
SETBDQ
LCALLIN1820;
JNBFLAG0,TO18201
LCALLDL60US
MOVA,#0CCH
MOVA,#0BEH;
发读温度命令
LCALLRE1820
RET
************************************
读DS18209字节子程序
************************************
RE1820:
MOVR0,#30H
MOVR2,#9
RE18201:
MOVR3,#8
RE18202:
CLRC
CLRDQ
MOVR4,#6
DJNZR4,$
MOVC,DQ
MOVR4,#23
RRCA
DJNZR3,RE18202
DJNZR2,RE18201
写一字节到1820
W1820:
MOVR3,#8
CLRC
W18201:
MOVDQ,C
MOVR4,#29
DJNZR3,W18201
1820初始化子程序
IN1820:
MOVR4,#245;
延时490US
MOVR4,#32;
延时70US
JNBDQ,IN18201
CLRFLAG0
IN18201:
SETBFLAG0
MOVR4,#210
DJNZR4,$;
延时420US
;
延时60US子程序
DL60US:
MOVR5,#30
DJNZR5,$
延时750MS子程序
DL750MS:
MOVR7,#75
DL750MS1:
MOVR6,#10
DL750MS2:
MOVR5,#250
DL750MS3:
NOP
DJNZR5,DL750MS3
DJNZR6,DL750MS2
DJNZR7,DL750MS1
写7290子程序
w7290:
CLRCLK;
##EWR##
MOVR3,#10;
controlbyte
DJNZR3,$
SETBDAT
SETBCLK
MOVR3,#10
MOVA,#70H;
start
MOVR1,#8
W24R1:
RLCA
MOVR3,#4
MOVDAT,C
DJNZR1,W24R1
SETBCLK;
ACK
MOVA,R5;
address
W24R2:
DJNZR3,$
DJNZR1,W24R2
W24R4:
MOVA,@R0
INCR0;
data
W24R5:
DJNZR1,W24R5
DJNZR6,W24R4
SETBDAT;
STOP
读7290子程序
R7290:
##ERD##
CLRDAT;
EEPROMread
SARTt
READ1:
DJNZR1,READ1
READ2:
DJNZR1,READ2
st
MOVA,#71H;
R244:
READ3:
DJNZR1,READ3
READ6:
READ4:
MOVC,DAT
DJNZR1,READ4
DJNZR6,READ5
READ5:
SJMPREAD6
计算温度值子程序
TECOV:
MOVA,31H;
取高4位测温值
JNBACC.7,TECOV1
SUBBA,30H
MOV30H,A
SUBBA,31H
MOV31H,A;
取补
SETBFLAG1;
温度为负值
SJMPTECOV2
TECOV1:
CLRFLAG1;
温度为正值
TECOV2:
MOVA,31H
ANLA,#07H
SWAPA
MOV31H,A
MOVA,30H
ANLA,#0F0H
ORLA,31H
31H中存放二进制温度值,单位为度
MOV40H,#11H;
设温度为正值
JNBFLAG1,TECOV3
MOV40H,#10;
实际温度值为负值
TECOV3:
MOVB,#100
DIVAB
MOV41H,A存放百位温度值
MOVA,B
MOVB,#10
MOV42H,A;
存放十位温度值
MOV43H,B;
存放个位温度值
MOVDPTR,#TABLE1
MOVCA,@A+DPTR
MOVB,A
ANLA,#0FH
MOV44H,A;
存放小数位温度值
MOV45H,A
显示子程序
DISP0:
MOVR1,#41H
CJNE@R1,#0,DISP
MOVR0,#65H
MOV@R0,#0
DECR0
MOVR1,#40H
MOVDPTR,#TABLE2
MOVA,@R1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 温度计 设计 单片机 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)