基于单片机的数字温度计的设计实验报告.docx
《基于单片机的数字温度计的设计实验报告.docx》由会员分享,可在线阅读,更多相关《基于单片机的数字温度计的设计实验报告.docx(25页珍藏版)》请在冰豆网上搜索。
基于单片机的数字温度计的设计实验报告
1、绪论
1.1实验内容
1.2实验目的
1.3实验原理
2、系统硬件组成及基本原理
2.1STC89C52单片机介绍
2.2花样流水灯的设计
2.3LED动态扫描显示
2.4定时计数器
2.54*4独立键盘的设
2.6串口通信的设计
2.7数字温度计的设计
3、单片机焊接与系统调试
4、总结
附录一整体原理图
1、绪论
1.1实验内容
本学期单片机实验包括六个,分别是花样流水灯实验、LED动态扫描显示实验、定时计数器实验、4*4键盘输入实验、单片机与PC机串口通信以及基于单片机的数字温度计的设计。
1.2实验目的
花样流水灯实验:
熟悉LED的显示特点,了解单片机系统实现花样流水灯实验的硬件电路和软件编程技巧;LED动态扫描显示实验:
掌握LED动态扫描显示原理,掌握LED动态扫描显示程序设计方法,熟悉LED动态扫描显示硬件设计方法;定时计数器实验:
学习单片机内部计数器的使用和编程方法,进一步掌握中断处理程序的编程方法;4*4键盘输入实验:
掌握键盘扫描的原理以及十/十六进制的转换,了解单片机输入和输出的过程,以及如何对数据进行采集的;单片机与PC机串口通信:
掌握串行口工作方式的程序设计,掌握单片机通讯的编程,了解实现串行口通讯的硬环境,数据格式的协议,数据交换的协议,了解PC机通讯的基本要求;基于单片机的数字温度计的设计:
通过对做的设计任务的实现,起到串起所学的数模技术、传感器技术、单片机技术及智能仪器等知识,通过理论联系实际,从题目分析、电路设计调试、程序编制调试到传感器的标定等这一完整的实验过程,培养学生正确的设计思想,使学生充分发挥主观能动性,去独立解决实际问题,以达到提升学生的综合能力、动手能力、文献资料查阅能力的作用。
1.3实验原理
LED动态扫描显示实验:
为了节省输出端口数,数码LED显示一班采用动态扫描的方法,将所有数码LED的共阴极接在一个位型输出口上,将所有数码管的相同段接在一起作为字型口,软件控制每个数码LED轮流显示,任一时刻只有一个数码亮,但扫描速度足够快时,视觉效果是8个数码LED同时亮;
定时计数器实验:
定时和计数的本质是相同的,它们都是对一个输入脉冲进行计数,如果输入脉冲的频率一定,则记录一定个数的脉冲,其所需的时间是一定的,对CLK信号进行“减1计数”。
首先CPU把“控制字”,写入“控制寄存器”,把“计数初始值”写入“初值寄存器”,然后, 定时/计数器按控制字要求计数。
计数从“计数初始值 开始,每当CLK信号出现一次,计数值减1,当计数值减为0时,从OUT端输出规定的信号(具体形式与工作模式有关)。
当CLK信号出现时,计数值是否减1(即是否计数),受到“门控信号”GATE的影响,一般,仅当GATE有效时,才减1.门控信号GATE如何影响计数操作,以及输出端OUT在各种情况下输出的信号形式与定时/计数器的工作模式有关。
4*4键盘输入实验:
行列式键盘的工作方式是先用列线发送扫描字,然后读取行线的状态,查看是否有按键按下。
键盘部分提供一种扫描的工作方式,可以和具有64个按键的矩阵键盘相连接,能对键盘不断扫描、自动消抖、自动识别按下的键,并给出编码,能对双键或n个键同时按下的情况实行保护。
键盘中有无按键按下是由列线送入全扫描字、行线读入行线状态来判断的,其方法是将列线的所有I/O线均置成低电平,然后将行线电平状态读入累加器A中,如果有键按下,总会有一根行线被拉至低电平,从而使行输入不全为1。
单片机与PC机串口通信实验:
单片机有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通讯。
进行串行通讯时要满足一定的条件,比如电脑的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,我们采用了专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。
我们采用了三线制连接串口,也就是说和电脑的9针串口只连接其中的3根线:
第5脚的GND、第2脚的RXD、第3脚的TXD。
这是最简单的连接方法,但是对我们来说已经足够使用了,电路如下图所示,MAX232的第10脚和单片机的11脚连接,第9脚和单片机的10脚连接,第15脚和单片机的20脚连接。
本网站的提供的实验板上已经装配好了全部硬件
基于单片机的数字温度计的设计:
DS18B20的测温原理是这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。
器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。
计数门的开启时间由高温度系数振荡器来决定,每次测量寄存器中,首先将-55℃所对应的一个基数分别设置减法计数器1、温度寄存器中,计数器1和温度寄存器被预置在-55℃所对应的一个基数值。
2、系统硬件组成及基本原理
2.1STC89C52单片机介绍
STC89C52是一种带8K字节闪烁可编程可檫除只读存储器(FPEROM-FlashProgramableandErasableReadOnlyMemory)的低电压,高性能COMOS8的微处理器,俗称单片机。
该器件采用ATMEL搞密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
1.时钟电路
STC89C52内部有一个用于构成振荡器的高增益反相放大器,引脚RXD和TXD分别是此放大器的输入端和输出端。
时钟可以由内部方式产生或外部方式产生。
内部方式的时钟电路如图4—2(a)所示,在RXD和TXD引脚上外接定时元件,内部振荡器就产生自激振荡。
定时元件通常采用石英晶体和电容组成的并联谐振回路。
晶体振荡频率可以在1.2~12MHz之间选择,电容值在5~30pF之间选择,电容值的大小可对频率起微调的作用。
外部方式的时钟电路如图4—2(b)所示,RXD接地,TXD接外部振荡器。
对外部振荡信号无特殊要求,只要求保证脉冲宽度,一般采用频率低于12MHz的方波信号。
片内时钟发生器把振荡频率两分频,产生一个两相时钟P1和P2,供单片机使用。
示,RXD接地,TXD接外部振荡器。
对外部振荡信号无特殊要求,只要求保证脉冲宽度,一般采用频率低于12MHz的方波信号。
片内时钟发生器把振荡频率两分频,产生一个两相时钟P1和P2,供单片机使用。
RXD接地,TXD接外部振荡器。
对外部振荡信号无特殊要求,只要求保证脉冲宽度,一般采用频率低于12MHz的方波信号。
片内时钟发生器把振荡频率两分频,产生一个两相时钟P1和P2,供单片机使用。
(a)内部方式时钟电路(b)外部方式时钟电路
图4—2时钟电路
2.复位及复位电路
(1)复位操作
复位是单片机的初始化操作。
其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。
除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键重新启动。
除PC之外,复位操作还对其他一些寄存器有影响,它们的复位状态如表一所示。
表一一些寄存器的复位状态
寄存器
复位状态
寄存器
复位状态
PC
0000H
TCON
00H
ACC
00H
TL0
00H
PSW
00H
TH0
00H
SP
07H
TL1
00H
DPTR
0000H
TH1
00H
P0-P3
FFH
SCON
00H
IP
XX000000B
SBUF
不定
IE
0X000000B
PCON
0XXX0000B
TMOD
00H
(2)复位信号及其产生
RST引脚是复位信号的输入端。
复位信号是高电平有效,其有效时间应持续24个振荡周期(即二个机器周期)以上。
若使用颇率为6MHz的晶振,则复位信号持续时间应超过4us才能完成复位操作。
产生复位信号的电路逻辑如图4—3所示:
图4—3复位信号的电路逻辑图
整个复位电路包括芯片内、外两部分。
外部电路产生的复位信号(RST)送至施密特触发器,再由片内复位电路在每个机器周期的S5P2时刻对施密特触发器的输出进行采样,然后才得到内部复位操作所需要的信号。
复位操作有上电自动复位相按键手动复位两种方式。
上电自动复位是通过外部复位电路的电容充电来实现的,其电路如图4—4(a)所示。
这佯,只要电源Vcc的上升时间不超过1ms,就可以实现自动上电复位,即接通电源就成了系统的复位初始化。
按键手动复位有电平方式和脉冲方式两种。
其中,按键电平复位是通过使复位端经电阻与Vcc电源接通而实现的,其电路如图4—4(b)所示;而按键脉冲复位则是利用RC微分电路产生的正脉冲来实现的,
其电路如图4—4(c)所示:
(a)上电复位(b)按键电平复位(c)按键脉冲复位
图4—4复位电路
上述电路图中的电阻、电容参数适用于6MHz晶振,能保证复位信号高电平持续时间大于2个机器周期。
本系统的复位电路采用图4—4(b)上电复位方式。
STC89C52具体介绍如下:
①主电源引脚(2根)
VCC(Pin40):
电源输入,接+5V电源
GND(Pin20):
接地线
②外接晶振引脚(2根)
XTAL1(Pin19):
片内振荡电路的输入端
XTAL2(Pin20):
片内振荡电路的输出端
③控制引脚(4根)
RST/VPP(Pin9):
复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。
ALE/PROG(Pin30):
地址锁存允许信号
PSEN(Pin29):
外部存储器读选通信号
EA/VPP(Pin31):
程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。
④可编程输入/输出引脚(32根)
STC89C52单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。
PO口(Pin39~Pin32):
8位双向I/O口线,名称为P0.0~P0.7
P1口(Pin1~Pin8):
8位准双向I/O口线,名称为P1.0~P1.7
P2口(Pin21~Pin28):
8位准双向I/O口线,名称为P2.0~P2.7
P3口(Pin10~Pin17):
8位准双向I/O口线,名称为P3.0~P3.7
STC89C52主要功能如表二所示。
表二STC89C52主要功能
主要功能特性
兼容MCS51指令系统
8K可反复擦写FlashROM
32个双向I/O口
256x8bit内部RAM
3个16位可编程定时/计数器中断
时钟频率0-24MHz
2个串行中断
可编程UART串行通道
2个外部中断源
共6个中断源
2个读写中断口线
3级加密位
低功耗空闲和掉电模式
软件设置睡眠和唤醒功能
2.2花样流水灯
原理图
2.3LED动态扫描显示:
原理图
七段LED显示器
使用LED显示器时,要注意区分这两种不同的接法。
为了显示数字或字符,必须对数字或字符进行编码。
七段数码管加上一个小数点,共计8段。
因此为LED显示器提供的编码正好是一个字节。
用共阴LED显示器显示16进制数的编码已列在下表。
2.4定时计数器:
80C51单片机内部设有两个16位的可编程定时器/计数器。
可编程的意思是指其功能(如工作方式、定时时间、量程、启动方式等)均可由指令来确定和改变。
在定时器/计数器中除了有两个16位的计数器之外,还有两个特殊功能寄存器(控制寄存器和方式寄存器)
2.4.1定时器/计数器的结构
2.4.2定时器/计数器方式寄存器TMOD:
定时器方式控制寄存器TMOD在特殊功能寄存器中,字节地址为89H,无位地址。
TMOD的格式如下图所示。
由图可见,TMOD的高4位用于T1,低4使用于T0,4种符号的含义如下:
GATE:
门控制位。
GATE和软件控制位TR、外部引脚信号INT的状态,共同控制定时器/计数器的打开或关闭。
C/T:
定时器/计数器选择位。
C/T=1,为计数器方式;C/T=0,为定时器方式。
M1M0:
工作方式选择位,定时器/计数器的4种工作方式由M1M0设定。
M0M1
工作方式
功能描述
0 0
0 1
1 0
11
工作方式0
工作方式1
工作方式2
工作方式3
13位计数器
16位计数器
自动再装入8位计数器
定时器0:
分成两个8位计数器
定时器1:
停止计数
定时器/计数器方式控制寄存器TMOD不能进行位寻址,只能用字节传送指令设置定时器工作方式,低半字节定义为定时器0,高半字节定义为定时器1。
复位时,TMOD所有位均为0。
定时器/计数器控制寄存器TCON:
TCON在特殊功能寄存器中,字节地址为88H,位地址(由低位到高位)为88H一8FH,由于有位地址,十分便于进行位操作。
2.4.3TCON的作用是控制定时器的启、停,标志定时器溢出和中断情况。
TCON的格式如下图所示。
其中,TFl,TRl,TF0和TR0位用于定时器/计数器;IEl,ITl,IE0和IT0位用于中断系统。
各位定义如下:
TF1:
定时器1溢出标志位。
当字时器1计满溢出时,由硬件使TF1置“1”,并且申请中断。
进入中断服务程序后,由硬件自动清“0”,在查询方式下用软件清“0”。
TR1:
定时器1运行控制位。
由软件清“0”关闭定时器1。
当GATE=1,且INT1为高电平时,TR1置“1”启动定时器1;当GATE=0,TR1置“1”启动定时器1。
TF0:
定时器0溢出标志。
其功能及操作情况同TF1。
TR0:
定时器0运行控制位。
其功能及操作情况同TR1。
IE1:
外部中断1请求标志。
IT1:
外部中断1触发方式选择位。
IE0:
外部中断0请求标志。
IT0:
外部中断0触发方式选择位。
TCON中低4位与中断有关,我们将在下节课讲中断时再给予讲解。
由于TCON是可以位寻址的,因而如果只清溢出或启动定时器工作,可以用位操作命令。
例如:
执行“CLRTF0”后则清定时器0的溢出;执行“SETBTR1”后可启动定时器1开始工作。
2.54*4键盘输入:
原理图如下
实验流程图
单片机键盘扫描法
扫描法是在判定有键按下后逐列果行(或列)的状态出现非全1状态,如果(或列)的状态出现非全1状态,这时0状态的行、列交点的键就是所按下的键。
2.6单片机与PC机串口通信:
原理图如下
流程图
2.7基于单片机的数字温度计的设计:
原理图如下
DS18B20介绍
DS18B20数字温度计提供9位温度读数,指示器件的温度。
信息经过单线接口送入DS18B20或从DS18B20送出,因此从中央处理器到DS18B20仅需连接一条线(和地)。
读、写和完成温度变换所需的电源可以由数据线本身提供,而不需要外部电源。
DS18B20具有独特的单线接口,只需1个接口引脚即可通信;多点能力使分布式温度检测应用得以简化;不需要外部元件;可用数据线供电,不需备份电源;测量范围从-55℃至+125℃,增量值为0.5℃。
等效的华氏温度范围是-67°F至257°F;以9位数字方式读出温度;在1秒(典型值)内把温度变换为数字;用户可定义的,非易失性的温度告警设置;告诫搜索命令识别和寻址温度在编定的极限之外的器件(温度告警情况);应用范围包括恒温控制,工业系统,消费类产品,温度计或任何热敏系统。
图2-5DS18B20封装图2-6DS18B20引脚图
DS18B20的性能特点如下:
●独特的单线接口仅需要一个端口引脚进行通信;
●多个DS18B20可以并联在惟一的三线上,实现多点组网功能;
●无须外部器件;
●可通过数据线供电,电压范围为3.0~5.5V;
●零待机功耗;
●温度以9或12位数字;
●用户可定义报警设置;
●报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;
●负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;
DS18B20采用3脚PR-35封装或8脚SOIC封装,其内部结构框图如图2所示。
图2DS18B20内部结构
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决定温度转换的精度位数,来设置分辨率
DS18B20的使用方法
DS18B20的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强。
一个工作周期可分为两个部分,即温度检测和数据处理。
DS18B20共有三种形态的存储器资源,它们分别是:
ROM只读存储器,用于存放DS18B20ID编码,其前8位是单线系列编码(DS18B20的编码是19H),后面48位是芯片唯一的序列号,最后8位是以上56的位的CRC码(冗余校验)。
数据在出产时设置不由用户更改。
DS18B20共64位ROM。
RAM数据暂存器,用于内部计算和数据存取,数据在掉电后丢失,DS18B20共9个字节RAM,每个字节为8位。
第1、2个字节是温度转换后的数据值信息,第3、4个字节是用户EEPROM(常用于温度报警值储存)的镜像。
在上电复位时其值将被刷新。
第5个字节则是用户第3个EEPROM的镜像。
第6、7、8个字节为计数寄存器,是为了让用户得到更高的温度分辨率而设计的,同样也是内部温度转换、计算的暂存单元。
第9个字节为前8个字节的CRC码。
EEPROM非易失性记忆体,用于存放长期需要保存的数据,上下限温度报警值和校验数据,DS18B20共3位EEPROM,并在RAM都存在镜像,以方便用户操作。
在每一次读温度之前都必须进行复杂的且精准时序的处理,因为DS18B20的硬件简单结果就会导致软件的巨大开消,也是尽力减少有形资产转化为无形资产的投入,是一种较好的节约之道。
主程序
主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。
这样可以在一秒之内测量一次被测温度,其程序流程
读出温度子程序
读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。
其程序流程图如图8示
图9温度转换流程图
温度转换命令子程序
温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。
温度转换命令子程序流程图如上图,图9所示
计算温度子程序
计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图10所示。
图10 计算温度流程图 图11 显示数据刷新流程图
显示数据刷新子程序
显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高显示位为0时将符号显示位移入下一位。
程序流程图如图11
3、单片机焊接与系统调试
3.1焊接问题
这次生产实习的焊接并不像想象中的那么容易,尽管我们之前有过一次认识实习的焊接,但单片机的开发焊接仍然是问题百出,我总结了三点:
第一,过焊和虚焊现象,可能是人为原因,也可能是电烙铁的生锈导致我们在焊接一些小部件的时候老是不如人所愿,不是过焊就是虚焊,每次还得用吸锡器洗掉再次重新弄;第二,注意电解电容、发光二极管、蜂鸣器的正负极性不能接反、三者均是长的管脚接正极、短的管脚接负极,如接反轻则烧毁元气件,重则发生轻微爆炸;ISP插槽应该注意方向。
缺口对应板子的外面、如果接反下载线将不能接好;数码管的焊接应该是有小数点的一侧在下面、接反影响数码管的显示;发光二极管要注意正负极性,长端为正极,短端为负极。
板子上面有相应的图形形状,按照那个图形焊接;焊接元气件的过程之中焊接时间应在2-4秒;第三,焊接时间不宜过长,否则不仅会烧毁元气件、而且易使焊点容易脆裂;电阻焊接过程中注意相应的阻值对应,不要焊错,否则影响相应的电流大小。
在焊接时也一定要注意焊接元件的顺序,基本上秉承着方便性原则,先焊接大部件,在焊接小部件,焊接元件管脚多时(双排40脚排针)要注意焊接工艺,尤其注意的是在焊接芯片插槽时切不可把芯片连到插槽上一同焊接,因为焊接时过热的温度会烧坏芯片,一定要把芯片插槽焊接完毕之后,再把芯片插到插槽中。
3.2系统调试
用基本测试仪器和自己编写的程序进行相关测试,来检查系统中的问题。
测试中的出现的问题:
1、LED灯焊接后检测有坏;2、4*4按键接法发生错误,应该接按键按下前未导通,按下后导通的两个脚;3、数码管部分接法错误
4、总结
这次试验让我得到很大的锻炼,不仅给了我动手锻炼的机会,而且巩固了我所学的理论知识单片机开发板的开发以及其外接扩展电路信号发生器的设计都是自主性的,相信这会对我以后会有很大的帮助。
附录一