物电学院课程设计报告Word文件下载.docx
《物电学院课程设计报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《物电学院课程设计报告Word文件下载.docx(26页珍藏版)》请在冰豆网上搜索。
4.可以任意设定温度的上下限并可实现过限报警功能
二、进度安排:
第1~3天:
查找资料,熟悉智能时钟温度计的设计原理,给出设计总体方案;
第4~5天:
各模块的详细设计;
第6~12天:
硬件连线,程序编写并进行调试;
第13~14天:
写课程设计报告。
三、主要参考文献:
1.谢自美.电子线路设计-实验-测试[M].武汉:
华中科技大学出版社,2000
2.楼然苗.单片机课程设计指导.北京;
航空航天大学出版社,2005
3.童诗白.模拟电子技术基础.北京:
高等教育出版社,2004
4.郭天祥.51单片机C语言教程——入门、提高、拓展全攻略.北京:
电子工艺出版社,2007
5.陆应华.电子系统设计教程.北京:
国防工业出版社,2008
6.苏家健.单片机原理及应用技术.北京:
高等教育出版社,2006
指导教师签字:
年月
目录
摘要………………………………………………………………………………………II
Abstract…………………………………………………………………………………...II
1绪论…………………….……………………………………..……………….………1
1.1引言…………………………………………………………………………………..1
2设计方案简述………………………………………..………………….………….2
2.1数字温度计设计方案论证……………………………..………………………….…2
2.2方案二的总体设计框图…………………………..………………………….………2
3详细设计……………………………………………………………..………………..3
3.1HCS08CPU简介……………………………………..………………………….…3
3.2温度传感器简介………………………………………..………………………….…5
4设计结果及分析………………………………………………..…….………………..8
4.1硬件设计………………………………….………………………………..….………8
4.2软件设计………………………………………………..………………………….…10
参考文献…….………………..………………………………..………………………….12
摘要
我们设计的LCD时钟温度系统是由中央控制器、温度检测器、时钟系统、存储器、显示器及键盘部分组成。
控制器采用单片机MC9S08QG8,温度检测部分采用DS18B20温度传感器,时钟系统用系统内部时钟产生,用LCD液晶1602作为显示器。
单片机通过时钟芯片DS1302获取时间数据,对数据处理后显示时间;
温度传感器DS18B20采集温度信号送该给单片机处理,存储器通过单片机对某些时间点的数据进行存储;
单片机再把时间数据和温度数据送液晶显示器1602显示,1602还可以显示图形;
键盘是用来调时和温度查询的。
Abstract
TheLCDclockandtemperaturesystemwedesignedismadeupwiththecentralcontroller,temperaturedetector,clocksystem,memorydevice,displaypartandkeyboardparts.BysinglechipmicrocomputercontrollerMC9S08QG8,thetemperaturemeasurementofthetemperaturesensorDS18B20,clocksystemwiththeclock,withLCD1602asdisplaypart.SinglechipmicrocomputerchipDS1302getthroughclocktimedata,tothedataprocessingshowtime;
TemperaturesensorDS18B20collectiontemperaturesignaltosendtheSCMprocessing,storagethroughthesinglechipforsometimepointofthedatastorage;
Single-chipmicrocomputerandtimedataandtemperaturedatatosend1602LCDdisplay,1602canalsodisplaycharacters;
Thekeyboardisusedtotuneinandthetemperatureinquires.
1绪论
1.1引言
随着人们生活水平的不断提高、时代的进步和发展,单片机控制无疑是人们追求的目标之一,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活,提供更好的更方便的设施就需要从嵌入式技术入手,一切向着数字化控制,智能化控制方向发展。
本文将介绍一种基于嵌入式系统控制的数字温度计,本温度计属于多功能温度计,不仅可以实现实时温度还可以显示日期与时间,此外还可以设置上下报警温度,当温度不在设置范围内时,可以及时报警。
本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用。
该设计控制器使用单片机MC9S08QG8,测温传感器使用DS18B20,用1602LCD液晶实现温度显示,能准确达到以上要求,精确测量温度。
2设计方案简述
2.1数字温度计设计方案论证
2.1.1方案一
由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用A/D转换电路,比较麻烦。
2.1.2方案二
进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。
从以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计也比较简单。
2.2方案二的总体设计框图
图1 总体设计方框图
温度计电路设计总体设计方框图如图1所示,控制器采用飞思卡尔单片机MC9S08QG8,温度传感器采用DS18B20,用1602液晶以实现温度显示。
3详细设计
3.1HCS08CPU简介
HCS08CPU与M68HC08CPU的指令系统完全相同,且目标代码与M68HC08完全兼容。
同时增加了一些指令和增强了寻址模式以增加C编译器效率,且支持一个新的背景调试系统,能够代替早期M68HC08微处理器的监测模式。
HCS08CPU的特点包括:
▪目标代码完全向上兼容M68HC05和M68HC08家族
▪所有寄存器和存储器映射在单块64Kbyte地址空间
▪16位堆栈指针SP(64Kbyte地址空间中的任意大小堆栈)
▪16位索引寄存器(H:
X)的强大的寻址索引模式
▪多种寻址模式
▪8位累加器(A)
▪支持存储器到存储器的数据传送
▪高效的位操作指令
▪快速的8位乘8位和16位除以8位指令
▪STOP和WAIT指令唤醒低功耗运行状态
CPU寄存器
3.1.1累加器(A)
累加器A是一个通用8位寄存器。
经常用于暂存一个输入到算术逻辑单元(ALU)的操作数,并且用于存放(ALU)的计算结果。
复位对累加器A的内容没有影响。
索引寄存器(H:
X)
这个16位寄存器实际上分为两个8位寄存器(H和X),它们作为一个16位的地址指针一起工作,H存放一个地址的高位字节和X存放地址的低位字节。
所有索引寻址模式指令利用H:
X中全部16位值作为一个索引参考指针;
然后,为了与早先M68HC05家族兼容,一些指令只在低8位(X)中运行,并且H在复位过程中强制为0x00。
复位对X的内容没有影响。
3.1.2堆栈指针(SP)
16位地址指针寄存器指向下一个有效的堆栈位置。
堆栈可以放置在包含RAM的64Kbyte地址空间的任意位置,其大小可以为任何RAM中的有效值。
堆栈用来自动保存子程序调用的返回地址、中断中CPU寄存器和局部变量的返回地址。
AIS(立即加堆栈指针,堆栈处理指令)指令对SP加上一个8位有符号立即数。
这经常用于对堆栈中的局部变量分配和取消分配空间。
向下生长型(飞思卡尔单片机)25F
特性:
先压后减,先加后弹
3.1.3程序计数器(PC)
程序计数器是个16位的寄存器,存放取出的下一个指令或操作数的地址。
正常的程序执行期间,每一次取出指令或者操作数时,程序计数器自动加一指向后续的存储器位置。
跳转、分支、中断和返回操作程序计数器加载地址不是下一个后续位置。
复位期间,程序计数器加载位于$FFFE和$FFFF的复位矢量(这点与51的差别很大,PC不是装载$FFFE,而是装载$FFFE和$FFFF中存放的内容)。
该处的矢量地址是退出复位状态后被执行的第一条指令的地址。
3.1.4条件代码寄存器(CCR)
8位条件代码寄存器存放中断屏蔽位(I)和5个指出刚执行指令结果的标志。
第5和第6位永远设置为1。
如图:
进/借标志—当一个加法操作产生一个对第7位累加需要进位或者一个减法操作要求一个借位,则置本位为1。
一些指令,如位测试和分支,移位和旋转也会影响进/借标志。
0第7位没有产生进/位
1第7位产生进/位
置零标志—当一个算术操作,逻辑操作或数据处理产生一个0x00或0x0000的结果,则将该位置1。
如果加载或存储的值为0,简单的加载或存储一个引起Z置1。
0NUMn-zeroresult
1Zeroresult
负数标志—当一个算术操作,逻辑操作或者数据处理产生一个负数结果,则会设置结果的第7位,并且CPU将负数标志位置1。
如果加载或存储的最高位为1,同样会将N置1。
0非负数结果
1负数结果
中断屏蔽位—当设置中断屏蔽,所有可屏蔽的CPU中断将被屏蔽.当中断屏蔽被清除时使能。
当产生一个CPU中断,中断屏蔽被保存到堆栈,但是在中断服务子程序第一条指令执行前自动置1。
这确保了CLI或TAP之后的下一条指令总会被执行,而不会出现如果I置1而发生插入中断的可能性。
0中断使能
1中断屏蔽
半进位标志—当在累加器第3位和第4位之间在不带进位加法(ADD)或者带进位加(ADC)操作时发生半进位,则CPU置该标志为1。
二进制编码的十进制(BCD)运算将用到半进位标志。
另外DAA指令也会根据条件代码位H和C的状态,自动加一个修正值到先前的ADD或ADC的BCD运算,以修正结果为一个正确的BCD值。
0第3位和第4位之间没有进位
1第3位和第4位之间有进位
二进制补码溢出标志—当发生一个二进制补码溢出,CPU置这位为1。
符号分支指令BGT,BGE,BLE和BLT将会用到溢出标志位。
0没有溢出
1有溢出
V=6C⊕7C
3.2温度传感器简介
3.2.1温度传感器
DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
DS18B20的性能特点如下:
●单总线即只有一根数据线,系统中的数据交换,控制都由这根线完成。
●单总线通常要求外接一个约为4.7K—10K的上拉电阻,这样,当总线闲置时其状态为高电平。
●独特的单线接口仅需要一个端口引脚进行通信;
●多个DS18B20可以并联在惟一的三线上,实现多点组网功能;
●无须外部器件;
●测量温度范围宽,测量精度高DS18B20的测量范围为-55℃~+125℃;
在-10~+85°
C范围内,精度为±
0.5°
C。
●可通过数据线供电,电压范围为3.0~5.5V;
●零待机功耗;
●温度以9或12位数字;
●用户可定义报警设置;
●负压特性电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。
●掉电保护功能DS18B20内部含有EEPROM,在系统掉电以后,它仍可保存分辨率及报警温度的设定值。
●报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;
●负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;
DS18B20采用3脚PR-35封装或8脚SOIC封装。
●DS18B20内部结构主要由四部分组成:
64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
●光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址码。
64位光刻ROM的排列是:
开始8位(地址:
28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,并且每个DS18B20的序列号都不相同,因此它可以看作是该DS18B20的地址码;
最后8位则是前面56位的循环冗余校验码。
由于每一个DS18B20的ROM数据都各不相同,因此微控制器就可以通过单总线对多个DS18B20进行寻址,从而一根总线上挂接多个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决定温度转换的精度位数,来设置分辨率。
温度LSB
温度MSB
TH用户字节1
TL用户字节2
配置寄存器
保留
CRC
图3 DS18B20字节定义
由表1可见,DS18B20温度转换的时间比较长,而且分辨率越高,所需要的温度数据转换时间越长。
因此,在实际应用中要将分辨率和转换时间权衡考虑。
高速暂存RAM的第6、7、8字节保留未用,表现为全逻辑1。
第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。
当DS18B20接收到温度转换命令后,开始启动转换。
转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。
单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625℃/LSB形式表示。
当符号位S=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;
当符号位S=1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。
表2是一部分温度值对应的二进制温度数据。
表1DS18B20温度转换时间表
DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、TL字节内容作比较。
若T>TH或T<TL,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令作出响应。
因此,可用多只DS18B20同时测量温度并进行报警搜索。
在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。
主机ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到的ROM数据是否正确。
DS18B20的测温原理是这这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;
高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。
器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。
计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的一个基数分别置入减法计数器1、温度寄存器中,计数器1和温度寄存器被预置在-55℃所对应的一个基数值。
减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时,温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到0时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。
其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。
表2 一部分温度对应值表
温度/℃
二进制表示
十六进制表示
+125
0000011111010000
07D0H
+85
0000010101010000
0550H
+25.0625
0000000110010000
0191H
+10.125
0000000010100001
00A2H
+0.5
0000000000000010
0008H
0000000000001000
0000H
-0.5
1111111111110000
FFF8H
-10.125
1111111101011110
FF5EH
-25.0625
1111111001101111
FE6FH
-55
1111110010010000
FC90H
另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。
系统对DS18B20的各种操作按协议进行。
操作协议为:
初使化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。
指定名称
指令代码
指令功能
读ROM
33H
读DS18B20ROM码
ROM匹配
55H
发出此命令后,接着发出64位ROM编码,访问单总线上与编码相对应DS18B20使之作出响应,为下一步对该DS18B20读写作准备
搜索ROM
0F0H
用于确定挂接在同一总线上DS18B20的个数和识别64位ROM地址,为操作各器件作好准备
跳过ROM
0CCH
忽略64ROM地址,直接向DS18B20发温度变换指令,适用于单片机工作
警报搜索
0CH
该指令执行后,只有温度超过设定上下限时作出响应
让DS18B20进行一次温度的转换,那具体的操作就是:
1、主机先作个复位操作,
2、主机再写跳过ROM的操作(CCH)命令,
3、然后主机接着写个转换温度的操作命令,后面释放总线至少一秒,让DS18B20完成
转换的操作。
在这里要注意的是每个命令字节在写的时候都是低字节先写。
读取RAM内的温度数据。
同样,这个操作也要接照三个步骤。
1、主机发出复位操作并接收DS18B20的应答(存在)脉冲。
2、主机发出跳过对ROM操作的命令(CCH)。
3、主机发出读取RAM的命令(BEH),随后主机依次读取DS18B20发出的从第0一第8,共九个字节的数据。
如果只想读取温度数据,那在读完第0和第1个数据后就不再理会后面DS18B20发出的数据即可。
同样读取数据也是低位在前的。
指令名称
温度变换
44H
启动DS18B20进行温度转换,转换时间最长为500ms,结果存入内部9字节RAM中
读暂存器
0BEH
读内部RAM中9字节的内容
写暂存器
4EH
发出内部RAM的第3,4字节上,下限温度数据指令,紧跟该命令之后,是传送两字节数据
复制暂存器
48H
将RAM中第3,4字节的内容复制到EEPROM中
重调EEPROM
0B8H
EEPROM中的内容恢复到RAM中的第3,4字节
读供电方式
0B4H
读DS18B20的供电模式,寄生供电时DS18B20发送"0",外接电源供电DS18B20发送“1”
4设计结果及分析
4.1硬件设计
4.1.1主板电路
系统整体硬件电路包括,传感器数据采集电路,背景调试电路、温度显示电路,上下限报警调整电路,单片机主板电路等,如图4所示。
图中蜂鸣器可以在被测温度不在上下限范围内时,发出报警鸣叫声音,同时LCD将没有被测温度值显示,这时可以调整报警上下限,从而测出被测的温度值。
按健复位电路是上电复位加手动复位,使用比较方便,在程序跑飞时,可以手动复位,这样就不用在重起单片机电源,就可以实现复位。
2.4.2显示电路
显示电路是使用的LCD1602液晶显示,这种显示最大的优点就是使用字符型显示,可以显示两行,第一行显示日期与当前时间,第二行显示当前温度,当DS18B20出现显示错误时第二行温度不显示会出现错误提示,此款液晶功耗低,操作方便,显示相当清晰。
图4嵌入式时钟温度计硬件设计电路图
4.2软件设计
图5主程序流程图
图6温度转换流程图
4.1.2温度转换命令子程序
温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。
温度转换命令子程序流程图如