单片机数字温度计毕业课程设计报告.docx
《单片机数字温度计毕业课程设计报告.docx》由会员分享,可在线阅读,更多相关《单片机数字温度计毕业课程设计报告.docx(27页珍藏版)》请在冰豆网上搜索。
单片机数字温度计毕业课程设计报告
(此文档为word格式,下载后您可任意编辑修改!
)
目录
1.设计任务.................................................................................................................1
1.1设计目的.........................................................................................................1
1.2设计指标.............................................................................................................1
1.3设计要求............................................................................................................1
2.设计思路与总体框图...............................................................................................1
3.系统硬件电路的设计...............................................................................................2
3.1主控电路...........................................................................................................2
3.2液晶显示电路....................................................................................................3
3.3按键电路..........................................................................................................3
3.4报警电路..........................................................................................................4
4.系统仿真设计...........................................................................................................4
4.1仿真原理图......................................................................................................4
4.2各功能元件的分析.............................................................................................5
5.系统软件设计.........................................................................................................10
5.1主程序...............................................................................................................11
5.2读出温度子程序...............................................................................................11
5.3温度转换命令子程序.......................................................................................12
5.4设计温度子程序..............................................................................................12
5.51602的温度显示...............................................................................................13
6.总结与体会..........................................................................................................13
61总结..............................................................................................................13
6.2体会..............................................................................................................14
7.参考文献...............................................................................................................15
8.附录.........................................................................................................................16
1.设计任务
1.1设计目的
1.了解数数字温度计及工作原理。
2.进一步掌握数字温度计设计方法。
3.进一步掌握各芯片的逻辑功能及使用方法。
4.进一步掌握keil和仿真软件的应用。
5.进一步熟悉集成电路的引脚安排.。
1.2设计指标
1.显示温度。
2.可以显示大于零度的温度也可以显示小于零度的温度。
3.具有显示相应环境温度的功能,并且具有超出设定范围内温度时可以报警的功能,相应环境可以人为选择。
1.3设计要求
1. 画出总体设计框图,以说明数字温度计由哪些相对独立的功能模块组成,标出各个模块之间互相联系。
并以文字对原理作辅助说明。
2. 设计各个功能模块的电路图,加上原理说明。
3. 选择合适的元器件,在面包板上接线验证、调试各个功能模块的电路,在接线验证时设计、选择合适的输入信号和输出方式,在确定电路充分正确性同时,输入信号和输出方式要便于电路的测试和故障排除。
4. 在验证各个功能模块基础上,对整个电路的元器件和布线进行合理布局,进行整个数字温度电路的接线调试。
2.设计思路与总体框图.
数字温度计由主控制器(单片机)、温度传感器(DS18B20)、显示器(LCD1602)、独立按键和报警电路组成,温度传感器所感应的温度信号经过其数据传输引脚传送给单片机,单片机将所接收到的温度信号经过处理,将其送至显示器LCD1602显示,并且能够通过独立按键设置温度报警值,若温度处于报警上限和下限之外,报警电路工作。
图1所示为数字温度计的一般结构框图:
▲图1数字温度计结构框图
3.系统硬件电路的设计
3.1主控电路
单片机STC90C51具有低电压供电和体积小等特点,四个端口同时使用以满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。
晶振采用12MHZ。
▲图2主控电路
▲图3晶振电路
3.2温度显示电路
采用液晶显示屏LCD1602显示,第一行显示“18B20OKTL”和报警下限值,第二行显示实时温度以及报警上限值,并且能够显示负温度值。
用P0口进行LCD1602的数据写操作,P2.5~P2.7口进行LCD1602的命令控制端口。
电路图如下:
▲图4温度显示电路
3.3按键电路
本系统一共设置了四个按键,k1键设置温度下限加,k2键设置温度下限减k3键设置温度上限加,k4键设置温度上限减。
▲图5按键电路
3.4报警电路
本设计采用蜂鸣器和LED灯组成报警电路,电路图如下:
▲图6报警电路
4.系统设计仿真
4.1仿真原理图
根据数字温度计的一般结构框图,我们通过查阅资料书和上网查询,了解不同元件的功能和实用性,考虑性价比后,制作出的数字温度计的仿真电路原理图,如图7所示。
▲图7数字温度计仿真电路原理图
4.2各功能元件的分析[2]
设计原理图中各功能元件的引脚图的分析如下所示:
1.DS18B20:
DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9-12位的数字值读数方式。
DS18B20的性能特点如下:
(1)独特的单线接口仅需要一个端口引脚进行通信,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
(2)DS18B20支持多点组网功能,多个DS18B20可以并联在惟一的三线上,实现多点组网测温;
(3)无须外部器件,全部传感元件及转换电路集成在形如一只三极管的集成电路内;
(4)可通过数据线供电,电压范围为3.0-5.5V;
(5)零待机功耗;
(6)温度以9或12位数字,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温;
(7)用户可定义报警设置;
(8)报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;
(9)负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;
(10)测量结果直接输出数字温度信号,以"一线总线"串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力DS18B20采用3脚PR35封装或8脚SOIC封装,其引脚排列及内部结构框:
▲图8DS18B20引脚排列图
▲图9内部结构框图
▲图10DS18B20测温原理图
64位ROM的结构开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。
温度报警触发器TH和TL,可通过软件写入户报警上下限。
DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。
高速暂存RAM的结构为8字节的存储器,结构如图4所示。
头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。
第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。
DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。
该字节各位的定义如图5所示。
低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户不要去改动,R1和R0决定温度转换的精度位数,来设置分辨率。
温度LSB
温度MSB
TH用户字节1
TL用户字节2
配置寄存器
保留
保留
保留
CRC
TM
R1
R0
1
1
1
1
1
图11DS18B20的字节定义
DS18B20的分辨率定义如表1所示
表1分辨率设置表
R0
R1
分辨率
最大温度转移时间
0
0
9位
96.75ms
0
1
10位
187.5ms
1
0
11位
375ms
1
1
12位
750ms
由表1可见,DS18B20温度转换的时间比较长,而且分辨率越高,所需要的温度数据转换时间越长。
因此,在实际应用中要将分辨率和转换时间权衡考虑。
主机控制DS18B20完成温度转换过程是:
每一次读写之前都要对DS18B20进行复位,即将数据总线下拉500us,然后释放,DS18B20收到信号后等待16-60us左右,之后发出60-240us的存在低脉冲,主CPU收到此此信号表示复位成功;复位成功后发送一条ROM指令,然后发送RAM指令,这样才能对DS18B20进行预订的读写操作。
表2ROM指令集
指令
约定代码
功能
读ROM
33H
读DS18B20中的编码
符合ROM
55H
发出此命令后,接着发出64位ROM编码,访问单线总线上与该编辑相对应的DS18B20使之做出响应,为下一步对该DS18B20的读写作准备
搜索ROM
0F0H
用于确定挂接在同一总线上的DS18B20个数和识别64位ROM地址,为操作各器件作准备
跳过ROM
0CCH
忽略64位ROM地址,直接向DS18B20发送温度变换指令
告警搜索命令
0ECH
执行后,只有温度跳过设定值上限或下限的片子才能做出反应
表3RAM指令集
指令
约定代码
功能
温度转换
44H
启动DS18B20进行温度转换
读暂存器
0BEH
读暂存器9个字节内容
写暂存器
4EH
将数据写入暂存器的TH、TL字节
复制暂存器
48H
把暂存器的TH、TL字节写到E2RAM中
重调E2RAM
0B8H
把E2RAM中的TH、TL字节写到暂存器TH、TL字节
读供电方式
0B4H
启动DS18B20发送电源供电方式的信号给主CPU
DS18B20的测温原理是这这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。
器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。
计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将最低温所对应的一个基数分别置入减法计数器1、温度寄存器中,计数器1和温度寄存器被预置在最低温所对应的一个基数值。
减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时,温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到0时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。
其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。
▲图12测温电路图
2.LCD1602:
工业字符型液晶,能够同时显示16x02即32个字符(16列2行)。
1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。
它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。
1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。
1602芯片的接口信号说明如下表:
1602芯片的接口信号说明
5系统软件设计
整个系统是由硬件配合软件来实现的,在硬件确定后,编写的软件的功能也就基本定型了。
所以软件的功能大致可分为两个部分:
一是监控,这也是系统的核心部分,二是执行部分,完成各个具体的功能。
系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。
5.1主程序
主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。
这样可以在一秒之内测量一次被测温度,其程序流程见图13所示。
开始
液晶初始化
调用按键函数,
液晶显示函数
判断温度值与
设定报警值大小
大于TH或N
者小于TL
Y
报警
结束
▲图13主程序流程图▲图14读温度流程图
5.2读出温度子程序
读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。
其程序流程图如图15示:
▲图15温度转换流程图
5.3温度转换命令子程序
温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。
温度转换命令子程序流程图如上图,图13所示
5.4计算温度子程序
计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图16所示。
▲图16计算温度温度流程图
5.51602的液晶显示
▲图171602液晶显示流程图
6.总结与体会
6.1总结
1.根据原理和芯片引脚图,分功能设计原理图,并根据接线顺序分步骤验证。
2.容易出现故障为接触不良。
a) 集成块引脚方向预先弯好对准面包板的金属孔,再小心插入。
b) 导线的剥线长度与面包板的厚度相适应(比板的厚度稍短)。
c)导线的裸线部分不要露在板的上面,以防短路。
d) 导线要插入金属孔中央。
3.注意芯片的控制引脚必须正确接好
4.检查故障时除测试输入、输出信号外,要注意电源、接地和控制引脚。
5.要注意芯片引脚上的信号与面包板上插座上信号是否一致(集成块引脚与面包板常接触不良)。
6.接校时电路时可接模拟信号输入(如1Hz和2Hz)测试输出信号的切换正确后,再将秒进位和分进位信号接到校时电路,再接校时电路输出到分计数器和时计数器。
从较时电路接入信号时,必须将原进位信号拔掉。
6.2体会
经过将近两周的单片机课程设计,终于完成了我们的数字温度计课程设计,虽然课程设计做的不是特别好,但从心底里说,还是高兴的,因为我们收获了很多很多,这些在平常的学习当中是收获不到的,但高兴之余不得不静下来深思!
在本次课程设计的过程中,我们发现很多的问题,虽然以前还做过类似的课程设计,但这次设计真的让我学到了很多、长进了很多,单片机课程设计的重点就在于软件算法的设计,需要有很巧妙的程序算法,虽然以前写过一些程序,但觉的要写好一个程序并不是一件简单的事,所以我们只能不断的调试不断的修改才能把程写的更好。
所以得出结论是:
有好多的东西,只有我们去试着做了,才能真正的掌握,只学习理论有些东西是很难理解的,更谈不上掌握,实践才是硬道理,实践是检验真理的唯一标准。
通过这次的课程设计,我们真正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,这样我们才能更好的理解、掌握这些知识,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。
通过这次对数字温度计的设计与制作,让我们了解了设计电路的程序,也让我们了解了关于数字温度计的原理与设计理念,要设计一个电路总要先用仿真仿真成功之后才实际接线的。
但是最后的成品却不一定与仿真时完全一样,因为,在实际接线中有着各种各样的条件制约着。
并且,在仿真中无法成功的电路接法,在实际中因为芯片本身的特性而能够成功。
所以,在设计时应考虑两者的差异,从中找出最适合的设计方法。
通过这次学习,让我们对各种电路都有了大概的了解,所以说,坐而言不如立而行,对于这些电路还是应该自己动手实际操作才会有深刻理解。
当然在这个过程中我们还会遇到很多其它的问题,这些问题我们也不是那么轻易的就能够解决的,此时我们就会去翻阅相关资料,或者是问同学、问老师,我们的同学和老师那一个个真的事知无不答的,这样我们就能很快的把问题给决绝掉了,那种感觉真的让人很舒畅,这也让我们明白了一件事,在学习中我们缺少不了同学、老师的帮助,他们能够很快的解决一些问题。
从这次的课程设计中,我真正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识应用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。
7.参考文献
[1]《单片机原理及应用》杨恢先、黄辉光主编[M].湘潭大学出版社
[2]《电子技术基础》(第五版)华中科技大学电子技术课程组编[M].康华光主编,陈大钦、张林副主编,高等教育出版社
[3] 《单片机课程指导》楼然苗、李光飞编著,北京航空航天大学大学出版社
[4]《51单片机C语言教程》郭天祥编著
8.附录:
#includechara;
sbitk1=P1^0;
sbitk2=P1^1;
sbitk3=P1^2;
sbitk4=P1^3;
sbitLCD_RW=P2^5;
sbitlcdrs=P2^6;
sbitlcden=P2^7;
sbitBeep=P3^0;
sbitled=P3^1;
sbitDQ=P3^7;
*液晶显示屏的延时程序*
voiddelay(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
*温度传感器的延时程序*
voidDelay1(uinty)
{
uintx;
for(;y>0;y--)
{
for(x=110;x>0;x--);
}
}
*蜂鸣器,18b20写数据函数的延时程序*
voiddelay2(uinta)
{
while(--a);
}
*温度传感器初始化函数*
voidinit_18b20()
{
DQ=1;
delay2(8);
DQ=0;
delay2(90);
DQ=1;
_nop_();
_nop_();
delay2(100);
DQ=1;
}
*温度传感器写字节命令函数*
voidDs18b20xiezijie(uchardate)
{
uchari;
for(i=0;i<8;i++)
{
DQ=0;在写入一位数据之前先把总线拉低
DQ=date&0x