![基于AT89S52的温度测量系统设计说明_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-2/7/8d1fa10c-5572-4f10-bfe7-c23198e79ad5/8d1fa10c-5572-4f10-bfe7-c23198e79ad51.gif)
![基于AT89S52的温度测量系统设计说明_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-2/7/8d1fa10c-5572-4f10-bfe7-c23198e79ad5/8d1fa10c-5572-4f10-bfe7-c23198e79ad52.gif)
![基于AT89S52的温度测量系统设计说明_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-2/7/8d1fa10c-5572-4f10-bfe7-c23198e79ad5/8d1fa10c-5572-4f10-bfe7-c23198e79ad53.gif)
![基于AT89S52的温度测量系统设计说明_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-2/7/8d1fa10c-5572-4f10-bfe7-c23198e79ad5/8d1fa10c-5572-4f10-bfe7-c23198e79ad54.gif)
![基于AT89S52的温度测量系统设计说明_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-2/7/8d1fa10c-5572-4f10-bfe7-c23198e79ad5/8d1fa10c-5572-4f10-bfe7-c23198e79ad55.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 . . . 信息工程学院课程设计报告书题目: 基于AT89S52的温度测量系统设计 专 业:班 级:学 号: 学生:指导教师:2010 年 9 月 30 日 摘要随着时代的进步和发展,单片机技术已经普与到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术。本设计以AT89S52单片机为核心的温度测量系统的工作原理和设计方法。该温度测量系统 ,可以设置上下报警温度,当温度不在设置围时,可以报警。为方便记录时间,还添加了时间显示单元。温度信号由温度芯片DS18B20采集,并以数字信号的方式传送给单片机。时钟模块采用DS1302时钟芯片实现。文中介绍了该测量系统的硬件部分,包括:温度检测电
2、路、温度显示电路、温度报警电路、实时时钟电路和一些接口电路 。单片机通过对信号进行相应处理,从而实现温度测量的目的。文中还着重介绍了软件设计部分,在这里采用模块化结构,主要模块有:液晶显示程序、键盘扫描与按键处理程序、温度信号处理程序、时间显示程序、超温报警程序。关键词:AT89S52单片机 DS18B20温度芯片 温度测量 DS1302 时钟芯片目 录摘要II1 引言12系统基本方案选择和论证22.1单片机芯片的选择方案和论证22.2 显示模块的选择方案和论证22.3时钟芯片的选择方案和论证22.4温度传感器的选择方案和论证22.5系统设计最终方案决定33系统的总体设计框图43.1 主控制器
3、43.2 显示电路63.3温度传感器73.4时钟电路93.5按键电路103.6超温报警114 系统整体硬件电路125系统软件算法分析135.1主程序135.2读出温度子程序145.3温度转换命令子程序145.4 计算温度子程序155.5 显示数据刷新子程序156 仿真结果167总结与体会17参考文献18附录A部分程序清单1926 / 301 引言随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度测量就是一个典型的例子。温度测量系统广泛应用于社会生活的各个领域 ,如家电、汽车、材料、电力电子等。但人们对它的要求越来越高,要为现代人工作、
4、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。本设计采用数字温度传感器DS18B20,因其部集成了A/D转换器,使得电路结构更加简单,而且减少了温度测量转换时的精度损失,使得测量温度更加精确。数字温度传感器DS18B20只用一个引脚即可与单片机进行通信,大大减少了接线的麻烦,使得单片机更加具有扩展性。由于DS18B20芯片的小型化,更加可以通过单跳数据线就可以和主电路连接,故可以把数字温度传感器DS18B20做成探头,探入到狭小的地方,增加了实用性。更能串接多个数字温度传感器DS18B20进行围的温度检测。本设计所介绍的数字温度测量与传统的
5、温度测量相比,具有读数方便,测温围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计控制器使用单片机AT89S52,测温传感器使用DS18B20,用液晶以并行方式传送数据,实现温度显示,能准确达到以上要求。为记录方便还增加了显示时间功能。2系统基本方案选择和论证2.1单片机芯片的选择方案和论证方案一 采用MSP430F449芯片作为硬件核心,采用Flash ROM,部具有4KB ROM 存储空间,能于1.8V-3.6V的超低压工作,适合手持设备。但是编程环境复杂,编程风格与MS-51相差很大。用MSP430编程较之MS-51繁琐,故不采用MSP430F
6、449。方案二采用AT89S52,片ROM全都采用Flash ROM;能在4V-5.5V电压工作;同时也与MCS-51系列单片机完全兼容。该芯片部存储器为8KB ROM 存储空间,同样具有89C51的功能。由于其与MS-51完全兼容,故编程简单。AT89S52的性能完全满足本设计对单片机的要求。所以选择采用AT89S52作为主控制系统。2.2 显示模块的选择方案和论证方案一采用LED数码管动态扫描,LED数码管价格适中,对于显示数字最合适,但是显示字母不合适。而且采用动态扫描法与单片机连接时,占用的单片机时间多。所以不采用此种作为显示。方案二采用点阵式数码管显示,点阵式数码管是由八行八列的发光
7、二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以也不用此种作为显示。方案三采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示大量字母,图形,显示多样,清晰可见,但是价格一般,需要的接口线较少,所以在此设计中采用LCD液晶显示屏作为显示。2.3时钟芯片的选择方案和论证方案一直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。所以不采用此方案。方案二采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以与闰
8、年补偿的年进行计数,而且精度高,位的RAM做为数据暂存区,工作电压2.5V5.5V围,2.5V时耗电小于300nA。2.4温度传感器的选择方案和论证方案一由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。方案二 进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要
9、求。从以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,故采用了方案二。2.5系统设计最终方案决定综上各方案所述,对此次作品的方案选定: 采用AT89S52作为主控制系统; DS1302提供时钟;DS18B20作为温度传感器;LCD显示屏作为显示。3系统的总体设计框图温度测量系统总体设计方框图如图3-1所示,温度传感器 DS18B20采集温度,单片机 AT89S52 获取采集的温度值,经处理后得到当前环境中一个比较稳定的温度值,再根据当前设定的温度上下限值,通过液晶显示当前的温度值。当采集的温度经处理后超过设定温度的上限时或者下限时,单片机通过三极管驱动扬声器鸣笛报警并且
10、LED灯闪烁。可通过按键切换时间和温度上下限的显示,也可通过按键修改温度上下限值和时间。图3-1 温度测量系统总体设计框图3.1主控制器AT89S52 是一个低功耗,高性能CMOS 8位单片机,片含8k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统与80C51引脚结构,芯片集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S52可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89S52具有如下特点:40
11、个引脚,4k Bytes Flash片程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片时钟振荡器。此外,AT89S52设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。由于系统控制方案简单 ,数据
12、量也不大 ,考虑到电路的简单和成本等因素 ,因此在本设计中选用 A TMEL 公司的 A T89S51单片机作为主控芯片。主控模块采用单片机最小系统是由于 A T89S51芯片含有4 kB的 E2PROM ,无需外扩存储器 ,电路简单可靠 ,其时钟频率为 024 MHz ,并且价格低廉 ,批量价在 10元以。其主要功能特性:兼容MCS-51指令系统4k可反复擦写(>1000次)ISP Flash ROM32个双向I/O口4.5-5.5V工作电压2个16位可编程定时/计数器时钟频率0-33MHz全双工UART串行中断口线128x8 bit部RAM2个外部中断源低功耗空闲和省电模式中断唤醒省
13、电模式3级加密位看门狗(WDT)电路软件设置空闲和省电功能灵活的ISP字节和分页编程双数据寄存器指针可以看出AT89S52提供以下标准功能:4K字节Flash闪速存储器,128字节部RAM,32个I/O口线,看门狗(WDT),两个数据指针,两个16位定时器/计数器,一个5向量两级中断结构,一个全双工串行通信口,片振荡器与时钟。同时, AT89S52可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口与中断系统继续工作。掉电方式何在RAM中的容,但振荡器停止工作并禁止其它所有部件工作直接到一个硬件复位。AT89S52单片机
14、部构造与功能:特殊功能寄存器:特殊功能寄存器的片空间分存如下图3-2所示。这些地址并没有全部占用,没有占用的地址不可使用,读这些地址将得到一个随意的数值。而写这些地址单元将不能得到预期的结果。电源空闲标志:电源空闲标志(POF)在特殊功能寄存储器SFR中PCON的第4位(PCON.4),电源打开时POF置“1”,它可由软件设置睡眠状态并不为复位所影响。存储器结构:MCS-51单片机核采用程序存储器和数据存储器空间分开的结构,均具有64KB外部程序和数据的寻址空间。程序存储器:如果EA引脚接地(GND),全部程序均执行外部存储器。在AT89S52,假如接至Vcc(电源),程序首先执行从地址000
15、0H0FFFH(4KB)部程序存储器,再执行地址为1000HFFFFH(60KB)的外部程序存储器。数据存储器:在AT89S52的具有128字节的部RAM,这128字节可利用直接或间接寻址方式访问,堆栈操作可利用间接寻址方式进行,128字节均可设置为堆栈区空间。看门狗定时器(WDT):WDT是为了解决CPU程序运行时可能进入混乱或死循环而设置,它由一个14bit计数器和看狗复位SFR(WDTRST)构成。外部复位时,WDT默认为关闭状态,要打开WDT,必按顺序将01H和0E1H写到WDTRST寄存器,当启动了WDT,它会随晶体振荡器在每个机器周期计数,除硬件复位或WDT溢出复位外没有其它方法关
16、闭WDT,当WDT溢出,将使RST引脚输出高电平的复位脉冲。3.2 显示电路1602液晶显示器以其微功耗、体积小、显示容丰富、超薄轻巧的诸多优点,在各类仪表和低功耗系统中得到广泛的应用。1602液晶为16字X2行的字符型液晶。该液晶与数码管相比有如下优点:1.位数多,可显示32位,32个数码管体积相当庞大了。2.显示容丰富,可显示所有数字和大、小写字母。3.程序简单,如果用数码管动态显示,会占用很多时间来刷新显示,而1602自动完成此功能。1602液晶模块部的字符发生存储器(CGROM)已经存储了不同的点阵字符图形,这些字符有,阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符
17、都有一个固定的代码,其中数字与字母同ASCII码兼容。其部还有自定义字符(CGRAM),可用于存储自已定义的字符。1602模块的设定,读写,与光标控制都是通过指令来完成,共有11条指令,如表3.2-1下:表3.2-1 1602液晶指令指令RSRWD7D6D5D4D3D2D1D01清屏00000000012光标返回000000001*3输入模式00000001I/DS4显示控制0000001DCB5光标/字符移位000001S/CR/L*6功能00001DLNF*7置字符发生器地址0001字符发生存贮器地址8置数据存贮器地址001显示数据存贮器地址9读忙标志和地址01BF计数器地址10写数据到指
18、令7.8所设地址10要写的数据11从指令7.8所设的地址读数据11读出的数据1602液晶显示模块可以和单片机AT89S52直接接口,电路如图3.2-1所示。图3.2-1 1602液晶与单片机接法液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,表3.2-2是1602的部显示地址。12345678910111213141516000102030405060708091A1B1C1D1E1F第一行404142434445464748495A5B5C5D5E5F第二行比如第二行
19、第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)3.3温度传感器DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现位的数字值读数方式。DS18B20的性能特点如下:独特的单线接口仅需要一个端口引脚进行通信;多个DS18B20可以并联在惟一的三线上,实现多点组网
20、功能;无须外部器件;可通过数据线供电,电压围为3.05.5;零待机功耗;温度以或位数字;用户可定义报警设置;报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作; DS18B20采用脚PR35封装或脚SOIC封装,其部结构框图如图3.3-1所示。C64 位ROM和单线接口高速缓存存储器与控制逻辑温度传感器高温触发器TH低温触发器TL配置寄存器8位CRC发生器VddI/O图3.3-1 DS18B20部结构64位ROM的结构开始位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后位是前面56位的CRC检验码,这
21、也是多个DS18B20可以采用一线进行通信的原因。温度报警触发器和,可通过软件写入户报警上下限。DS18B20温度传感器的部存储器还包括一个高速暂存和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为字节的存储器,结构如图3所示。头个字节包含测得的温度信息,第和第字节和的拷贝,是易失的,每次上电复位时被刷新。第个字节,为配置寄存器,它的容用于确定温度值的数字转换分辨率。DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。该字节各位的定义如图3.3-2所示。低位一直为,是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为,用户要去改动,
22、R1和0决定温度转换的精度位数,来设置分辨率。温度 LSB温度 MSBTH用户字节1TL用户字节2配置寄存器保留保留保留CRC图3.3-2 DS18B20字节定义由图3.3-2可见,DS18B20温度转换的时间比较长,而且分辨率越高,所需要的温度数据转换时间越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。高速暂存的第、字节保留未用,表现为全逻辑。第字节读出前面所有字节的CRC码,可用来检验数据,从而保证通信数据的正确性。当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第、字节。单片机可以通过单线接口读出该数据
23、,读数据时低位在先,高位在后,数据格式以0.0625LSB形式表示。当符号位时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。表3.3-1是一部分温度值对应的二进制温度数据。表3.3-1 DS18B20温度转换时间表R1R0分辨率/位温度最大转向时间/ms00993.750110187.510113751112750DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、T字节容作比较。若TH或TTL,则将该器件的报警标志位置位,并对主机发出的报警搜索命令作出响应。因此,可用多只DS18B20同时测量温
24、度并进行报警搜索。在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。主机ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到的ROM数据是否正确。DS18B20的测温原理是这这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器的脉冲输入。器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将55所对应的一个基数分别置入
25、减法计数器、温度寄存器中,计数器和温度寄存器被预置在55所对应的一个基数值。减法计数器对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器的预置值减到时,温度寄存器的值将加,减法计数器的预置将重新被装入,减法计数器重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。表3.3-2一部分温度对应值表温度/二进制表示十六进制表示+1250000 0111 1101 000007D0H+850000 0101
26、0101 00000550H+25.06250000 0001 1001 00000191H+10.1250000 0000 1010 000100A2H+0.50000 0000 0000 00100008H00000 0000 0000 10000000H-0.51111 1111 1111 0000FFF8H-10.1251111 1111 0101 1110FF5EH-25.06251111 1110 0110 1111FE6FH-551111 1100 1001 0000FC90H另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。系统对DS18
27、B20的各种操作按协议进行。操作协议为:初使化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。另一种是寄生电源供电方式,如图4 所示单片机端口接单线总线,为保证在有效的DS18B20时钟周期提供足够的电流,可用一个MOSFET管来完成对总线的上拉。当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。采用寄生电源供电方式时VDD端接地。由于单线制只有一根线,因此发送接口必须是三态的。图3.3-3 DS18
28、B20与单片机的接口电路3.4时钟电路图3.4-1示出DS1302的引脚排列,其中Vcc1为后备电源,Vcc2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.KHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时
29、,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RSTS置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电动行时,在Vcc大于等于2.5V之前,RST必须保持低电平。中有在SCLK 为低电平时,才能将RST置为高电平,I/O为串行数据输入端(双向)。SCLK始终是输入端。图3.4-1 DS1302与单片机的借口电路DS1302在每次进行读、写程序前都必须初始化,先把SCLK端置 “0”,接着把RST端置“1”,最后才给予SCLK脉冲;读/写时序如下图4所示。图5为DS1302的控制字,此控制字的位7必须置1,若为0则不能把对DS1302进行读写数据。对于位6,若
30、对程序进行读/写时RAM=1,对时间进行读/写时,CK=0。位1至位5指操作单元的地址。位0是读/写操作位,进行读操作时,该位为1;该位为0则表示进行的是写操作。控制字节总是从最低位开始输入/输出的。表6为DS1302的日历、时间寄存器容:“CH”是时钟暂停标志位,当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。“WP”是写保护位,在任何的对时钟和RAM的写操作之前,WP必须为0。当“WP”为1时,写保护位防止对任一寄存器的写操作。DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器与其控制字见表3.
31、4-1。表3.4-1 DS1302的日历、时间寄存器写寄存器读寄存器Bit7 Bit6Bit5Bit4Bit3Bit2Bit1Bit080H81HCH10秒秒82H83H10分分84H85H12/24010时时AM/PM86H87H0010日日88H89H00010月月8AH8BH00000星期8CH8DH 10年年8EH8FHWP00000003.5按键电路单片机应用系统中除了复位按键有专门的复位电路,以与专一的复位功能外,其它的按键或键盘都是以开关状态来设置控制功能或输入数据。 键开关状态的可靠输入 :为了去抖动我采用软件方法,它是在检测到有键按下时,执行一个10ms的延时程序后,再确认该
32、键电平是否仍保持闭合状态电平,如保持闭合状态电平则确认为真正键按下状态,从而消除了抖动影响为了方便切换温度上下限和时间的显示,以与温度上下限和时间的修改,共键设有6个按键。确认 , 设置的确认,修改设置温度时进行确认;显示切换 设置的显示切换,切换显示时间和稳定围;选择 设置的显示切换,选择修改时间和稳定围;加加1;减减1;复位复位单片机3.6超温报警当采集的温度经处理后超过规定温度上限时或者下线时,单片机通过 P2.3 输出控制信号驱动三极管 D1 ,使扬声器发出警笛声并且LED闪烁。图 3.6-1扬声器连接图4 系统整体硬件电路系统整体硬件电路包括,传感器数据采集电路,温度显示电路,上下限
33、报警调整电路,时钟芯片电路,时间显示电路,单片机主板电路等,如图4-1 所示。图4-1中有五个独立式按键可以分别调整温度计的上下限报警设置和时间,并且切换显示。图中蜂鸣器可以在被测温度不在上下限围时,发出报警鸣叫声音,同时LED灯闪烁。图4-1中的按健复位电路是上电复位加手动复位,使用比较方便,在程序跑飞时,可以手动复位,这样就不用在重起单片机电源,就可以实现复位。显示电路的液晶是使用的并行传输,这种显示最大的优点就是传输速度快,而且液晶显示比较清晰。图4-1 单片机整体电路5系统软件算法分析系统程序主要包括主程序,读出温度子程序,读出时间子程序,温度转换命令子程序,计算温度子程序,显示数据刷
34、新子程序等。5.1主程序主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。这样可以在一秒之测量一次被测温度,其程序流程见图5.1-1所示。Y发DS18B20复位命令发跳过ROM命令发读取温度命令读取操作,CRC校验9字节完?CRC校验正?确?移入温度暂存器结束NNY初始化调用显示子程序1S到?初次上电读出温度和时间数据,计算处理显示数据刷新转换温度和时间NYYN图5.1-1主程序流程图图5.1-2读温度流程图开始初始化读、写日期、时间和温度分离日期时间温度显示值显示子程序返回日期、时间修改子程序闰月子程图5.1-3 读时间流程图5.2读出
35、温度子程序读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图5.2-1示发DS18B20复位命令发跳过ROM命令发温度转换开始命令 结束图5.2-1 温度转换流程图5.3温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如上图,图5.2-1所示5.4 计算温度子程序计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图5.4-1所示。 开始温度零下?温度
36、值取补码置“”标志计算小数位温度BCD值 计算整数位温度BCD值 结束置“+”标志NY温度数据移入显示寄存器十位数0?百位数0?十位数显示符号百位数不显示百位数显示数据(不显示符号) 结束NNYY图5.4-1计算温度流程图 图5.4-2显示数据刷新流程图5.5 显示数据刷新子程序显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高显示位为0时将符号显示位移入下一位。程序流程图如图5.4-2。6 仿真结果显示温度上下限、时间和温度值显示日期时间和温度值调整温度上下限调整日期和时间超温报警7总结与体会经过将近四周的单片机课程设计,终于完成了我的数字测量系统的设计,在达到设计要求的同
37、时还增加了显示时间和日期的功能。从这次课程设计学到了很多,也增加了信心。虽然虽然系统设计圆满完成,但在本次设计的过程中,我还是发现很多的问题。虽然以前还做过这样的设计但这次设计真的让我长进了很多,单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法,虽然以前写过许多程序,但我觉的写好一个程序并不是一件简单的事,举个例子,以前写的那几次,数据加减时,我用的都是BCD码,这一次,我全部用的都是16进制的数直接加减,显示处理时在用除法去删分,感觉效果比较好,有好多的东西,只有我们去试着做了,才能真正的掌握,只学习理论有些东西是很难理解的,更谈不上掌握。从这次的课程设计中,我真真正正的意识到
38、,在以后的学习工作中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。参考文献1朝青.单片机原理与接口技术. :航空航天大学,19982广弟.单片机基础.:航空航天大学,19943阎石.数字电子技术基础(第三版). :高等教育,19894廖常初.现场总线概述J.电工技术,1999.附录A部分程序清单#include<reg51.h>#include<1602zq.h>#include<1302.h>#include<18b20zq.h>#inclu
39、de<key.h>#define uchar unsigned charsbit beer=P23;uchar date16=" 2008-10-15 MON "uchar time16=" 12:25:18 125.7C"uchar Temp_range16=" -20.0 to +20.0 "uchar swit=0;uchar temp_l=20;uchar temp_h=20;void Delay(uint del)uint i,j;for(i=0; i<del; i+)for(j=0; j<1827;
40、 j+) /这个是通过软件仿真得出的数 ;void main()uchar i,x=0,y=0;TMOD=0x20;SCON=0x50;PCON=0x00;TH1=0xfd;TL1=0xfd;TR1=1;beer=1;initlcd();while(1)SBUF='A'switch (y)case 1:date3=0x20;date4=0x20;break;case 2:date6=0x20;date7=0x20;break;case 3:date9=0x20;date10=0x20;break;case 4:date12=0x20;date13=0x20;date14=0x2
41、0;break;case 5:time1=0x20;time2=0x20;break;case 6:time4=0x20;time5=0x20;break;case 7:time7=0x20;time8=0x20;break;write_(0x80);for(i=0;i<16;i+) write_date(datei);delay_1602(10);write_(0xc0);for(i=0;i<16;i+)write_date(timei);delay_1602(10);delay_1602(1000);if(swit)date1='2'date2='0
42、39;date5='-'date8='-'date9=R1302(0x87)/16+0x30;/day hdate10=R1302(0x87)%16+0x30;/day ldate6=R1302(0x89)/16+0x30;/mouth hdate7=R1302(0x89)%16+0x30;/mouth lswitch (R1302(0x8b)case 1:date12='M' date13='O' date14='N'break;case 2:date12='T' date13='U
43、9; date14='S'break;case 3:date12='W' date13='E' date14='S'break;case 4:date12='T' date13='H' date14='I'break;case 5:date12='F' date13='R' date14='I'break;case 6:date12='S' date13='T' date14='A'bre
44、ak;case 7:date12='S' date13='U' date14='N'break;date3=R1302(READ_YEAR)/16+0x30;/year hdate4=R1302(READ_YEAR)%16+0x30;/year lelsedate1=' 'date2='-'date3=temp_l/10+0x30; /'2' temp_ldate4=temp_l%10+0x30; /'0' 温度下限date5=' 'date6='T'
45、date7=' 'date8='+'date9=temp_h/10+0x30; /'2'date10=temp_h%10+0x30; /'0' 温度上限date11=' 'date12=' 'date13=' 'date14=' 'date15=' 'if(tmp_f=0)&(temp_h<tmp)|(tmp=temp_h)&(tmpd>0) /报警 beer=0;Delay(10);beer=1;Delay(10); if
46、(tmp_f=1)&(temp_l<tmp)|(tmp=temp_l)&(tmpd>0) beer=0;Delay(10);beer=1;Delay(10); time1=R1302(0x85)/16+0x30;/hour htime2=R1302(0x85)%16+0x30;/hour ltime4=R1302(0x83)/16+0x30;/min htime5=R1302(0x83)%16+0x30;/min ltime7=(R1302(0x81)&0x7f)/16+0x30;/sec htime8=R1302(0x81)%16+0x30;/sec lg
47、et_temp();if(tmp>99)time10=0x30+tmp/100;time11=0x30+tmp%100/10;time12=0x30+tmp%100%10;elseif(tmp_f)if(tmp>9)time10=0x2d;time11=0x30+tmp/10;time12=0x30+tmp%10;elsetime10=0x20;time11=0x2d;time12=0x30+tmp;elseif(tmp>9)time10=0x20;time11=0x30+tmp/10;time12=0x30+tmp%10;elsetime10=0x20;time11=0x2
48、0;time12=0x30+tmp;/elsetime13=0x2e;time14=0x30+tmpd;/write_(0x80);for(i=0;i<16;i+)write_date(datei);delay_1602(10);write_(0xc0);for(i=0;i<16;i+)write_date(timei);delay_1602(10);/P1.4 P1.5P1.6 P1.7 switch (keyscan()/0xEE,0XDE,0XBE,0X7E,P1.0/0XED,0XDD,0XBD,0X7D,P1.1/0XEB,0XDB,0XBB,0X7B,P1.2/0XE7
49、,0XD7,0XB7,0X77 P1.3case 0xee:delay_1602(10);while(keyscan()=0xee);time0=0x37;/7break;case 0xde:time0=0x38;/8break;case 0xbe:time0=0x39;/9break;case 0x7e:time0='/'/break;case 0xed:time0=0x34;/4break;case 0xdd:time0=0x35;/5break;case 0xbd:time0=0x36;/6break;case 0x7d:time0='*'/*break;case 0xeb:time0=0x31;/1break;case 0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年金刚石膜-声表面波器件(SAW)项目规划申请报告模板
- 2025年绝缘材料:绝缘套管项目提案报告模范
- 2025年个体经营物流配送协议
- 2025年耐高温可加工陶瓷项目立项申请报告
- 2025年发泡消泡剂项目规划申请报告
- 2025年授权代理业务综合合同范本
- 2025年建筑器材租赁合同标杆
- 2025年仓储物流服务合作协议合同
- 2025年工业外包合同中的环境管理措施
- 2025年城市绿化养护服务合同文本
- 10以内除法口算练习题100套(十)
- 中医小儿常见皮肤病
- 《医疗机构环境表面清洁与消毒管理规范》-华西医院案例
- 第45届世界技能大赛餐厅服务项目全国选拔赛技术工作文件
- 个人保证无纠纷承诺保证书
- DB51T10009-2024DB50T10009-2024康养度假气候类型划分
- 九年级道德与法治下册时政热点专题新人教版
- 【压缩式落叶清扫机设计(论文)6900字】
- 生产安全重大事故隐患检查表(根据住建部房屋市政工程生产安全重大事故隐患判定标准(2022版)编制)
- 教育管理学教程褚宏启课后问题及补充完整版
- 水利水电工程工地试验室建设导则(征求意见稿)
评论
0/150
提交评论