电子系统课程设计报告-基于单片机的数字温度计.doc_第1页
电子系统课程设计报告-基于单片机的数字温度计.doc_第2页
电子系统课程设计报告-基于单片机的数字温度计.doc_第3页
电子系统课程设计报告-基于单片机的数字温度计.doc_第4页
电子系统课程设计报告-基于单片机的数字温度计.doc_第5页
免费预览已结束,剩余12页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

电子系统课程设计报告 成员: 教师: 日期:11.12.1211.12.22一、 目的本课程的任务是以微机原理应用、数字电路,自动控制,模拟电路,单片机,测控电路等来组织教学内容,介绍信息输入和转换,信号输出和驱动,数据处理,人机接口和监控程序,系统总线,可靠性技术和电子系统设计实例。并对现阶段技术及今后发展趋向进行展望。为学生从事电子系统整机设计打下扎实的基础。学生通过课程设计学会电子系统设计方面的基本技能。 二、 任务设计任务:利用学习过的智能仪表原理与设计课程的内容和其他相关课程的内容,根据设计要求设计一个比较完整的智能仪器系统。 设计内容: 基于单片机的数字温度计以at89系列单片机为核心,设计一个数字式自动温度控制仪。设计要求:1、 测量温度范围:室温130,可通过键盘输入温度的上限和下限,超过或低于设定值报警亮灯;2、 温度测量的精度为1;3、应用实时显示当前的温度值,上限和下限值.4、应用绘图软件画出完整电路图;5、画出程序流程图,编写完整的应用程序;三、 硬件设计思想方案一由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行a/d转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到a/d转换电路,感温电路比较复杂。方案二 采用一只温度传感器ds18b20,此传感器易直接读取被测温度值,进行转换,就可以满足设计要求。采用数字温度芯片ds18b20 测量温度,输出信号全数字化。便于单片机处理及控制,省去传统的测温方法的很多外围电路。且该芯片的物理化学性很稳定,它能用做工业测温元件,此元件线形较好。在0100 摄氏度时,最大线形偏差小于1 摄氏度。ds18b20 的最大特点之一采用了单总线的数据传输,由数字温度计ds18b20和微控制器at89s52构成的温度测量装置,它直接输出温度的数字信号,可直接与计算机连接。这样,测温系统的结构就简单,体积不大。采用52单片机控制,软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制,而且体积小,硬件实现简单,安装方便。既可以单独对多ds18b20控制工作,还可以与pc 机通信上传数据,另外at89s52 在工业控制上也有着广泛的应用,编程技术及外围功能电路的配合使用都很成熟。该系统利用at89s52芯片控制温度传感器ds18b20进行实时温度检测并显示,能够实现快速测量环境温度,并可以根据需要设定上下限报警温度。该系统扩展性非常强,它可以在设计中加入时钟芯片ds1302以获取时间数据,在数据处理同时显示时间,并可以利用at24c16芯片作为存储器件,以此来对某些时间点的温度数据进行存储,利用键盘来进行调时和温度查询,获得的数据可以通过max232芯片与计算机的rs232接口进行串口通信,方便的采集和整理时间温度数据。以上两种方案,经小组讨论后,采用方案二,电路比较简单,软件设计也比较简单,故采用了方案二。方案二的总体设计框图温度计电路设计总体设计方框图如图1.1所示,控制器采用单片机at89s52,温度传感器采用ds18b20,用led液晶显示屏以串口传送数据实现温度显示: 工作原理:基于ds18b20的温度测量装置电路图如上所示:温度传感器ds18b20将被测环境温度转换成带符号的数字信号,传感器可置于150米以内的任何地方,输出脚i/o直接与单片机的p3.4相连, 传感器采用外部电源供电。89s52是整个装置的控制核心,显示器模块由四位一体的共阳数码管和四个9012组成。系统程序分为传感器控制程序和显示器程序两部分。显示结果精确到0.1。1ds18b20基本知识 ds18b20是dallas公司生产的1wire,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。 1、ds18b20产品的特点 (1)、只要求一个端口即可实现通信。 (2)、在ds18b20中的每个器件上都有独一无二的序列号。 (3)、实际应用中不需要外部任何元器件即可实现测温。 (4)、测量温度范围在55。c到125。c之间。 (5)、数字温度计的分辨率用户可以从9位到12位选择。 (6)、内部有温度上、下限告警设置。 2、ds18b20的引脚介绍 to92封装的ds18b20的引脚排列见图1,其引脚功能描述见表1。 (底视图)图1 表1ds18b20详细引脚功能描述 序号 名称 引脚功能描述 1 gnd 地信号 2 dq 数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源。 3 vdd 可选择的vdd引脚。当工作于寄生电源时,此引脚必须接地。 3 ds18b20的使用方法 由于ds18b20采用的是1wire总线协议方式,即在一根数据线实现数据的双向传输,而对at89s51单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对ds18b20芯片的访问。 由于ds18b20是在一根i/o线上读写数据,因此,对读写的数据位有着严格的时序要求。ds18b20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。 ds18b20的复位时序 ds18b20的读时序 (单片机读总线)对于ds18b20的读时序分为读0时序和读1时序两个过程。 对于ds18b20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让ds18b20把数据传输到单总线上。ds18b20在完成一个读时序过程,至少需要60us才能完成。 ds18b20的写时序 (单片机发数据)对于ds18b20的写时序仍然分为写0时序和写1时序两个过程。 对于ds18b20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证ds18b20能够在15us到45us之间能够正确地采样io总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。 2.数码管工作原理:数码管由7个发光二极管组成,行成一个日字形,它门可以共阴极,也可以共阳极.通过解码电路得到的数码接通相应的发光二极而液晶显示模块:显示模块主要用来显示是测得的当前的温度值,选用1602,该模块还配有3个按键,可设置温度控制值(mn,若温度超出此范围,则报警)。正常状态下,显示当前温度值,并显示报警系统是否开启,开启显示on,关闭显示off。见图1。图1按键功能如下所述(按钮至上而下依次a、b、c、d):(1) 按a按键第一次,则显示器进入设置状态,调节温度范围的指标值m,此时若按b按键,则对m进行加;按c键,则m值减小,步长均为1摄氏度。(2) 按a按键第二次,则调节温度范围的指标值n,同样此时若按第b键,则对n值增加;按c键,则对n值减小,步长均为1摄氏度。(3) 按a按键第三次,则退出设置状态,进入正常工作模块。报警模块:报警模块由光电二极管(红),蜂鸣器(直流驱动)和一个按键组成。当温度超出设计的范围时,则灯亮产生报警,同时蜂鸣器产生报警。当温度在设置范围内时,灯不亮,蜂鸣器不工作。正常情况下,系统的报警功能开启。产生报警后,若温度进入设置温度范围内,则灯自动熄灭,蜂鸣器停止发出声音。也可以手动按一次按键d,则系统报警系统关闭,同时在液晶上面显示off。需再次按下按钮,系统的报警功能才会被开启。整体电路图如图2:通过protues仿真得: 图2软件设计(一)、 概述整个系统的功能是由硬件电路配合软件来实现的,当硬件基本定型后,软件的功能也就基本定下来了。从软件的功能不同可分为两大类:一是监控软件(主程序),它是整个控制系统的核心,专门用来协调各执行模块和操作者的关系。二是执行软件(子程序),它是用来完成各种实质性的功能如测量、计算、显示、通讯等。每一个执行软件也就是一个小的功能执行模块。这里将各执行模块一一列出,并为每一个执行模块进行功能定义和接口定义。各执行模块规划好后,就可以规划监控程序了。首先要根据系统的总体功能选择一种最合适的监控程序结构,然后根据实时性的要求,合理地安排监控软件和各执行模块之间地调度关系。(二)、主程序模块主程序需要调用4 个子程序,分别为数码管显示程序,温度测试及处理子程序,报警子程序,中断设定子程序。各模块程序功能如下:数码管显示程序:向数码的显示送数,控制系统的显示部分。温度测试及处理程序:对温度芯片送过来的数据进行处理,进行判断和显示。报警子程序:进行温度上下限判断及报警输出。中断设定程序:实现设定上下限报警功能。 系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。3.1 主程序流程图主程序的主要功能是负责温度的实时显示、读出并处理ds18b20的测量的当前温度值,温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度,其程序流程见图3.1所示:初始化调用显示子程序1s到?初次上电读出温度值温度计算处理显示数据刷新发温度转换开始命令nyny图3.1 主程序流程图3.2 读出温度子程序流程图读出温度子程序的主要功能是读出ram中的9字节,在读出时需进行crc校验,校验有错时不进行温度数据的改写。其程序流程图如图3.2所示:y发ds18b20复位命令发跳过rom命令发读取温度命令读取操作,crc校验9字节完?crc校验正?确?移入温度暂存器结束nny图3.2 温度子程序流程图3.3 温度转换命令子程序流程图温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如上图,图3.3所示:发ds18b20复位命令发跳过rom命令发温度转换开始命令 结束图3.3 温度转换命令子程序流程图3.4 计算温度子程序流程图计算温度子程序将ram中读取值进行bcd码的转换运算,并进行温度值正负的判定,其程序流程图如图3.4所示: 开始温度零下?温度值取补码置“”标志计算小数位温度bcd值 计算整数位温度bcd值 结束置“+”标志ny图3.4 温度子程序流程图3.5 显示数据刷新子程序流程图显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高显示位为0时将符号显示位移入下一位。程序流程图如图3.5所示:温度数据移入显示寄存器十位数0?百位数0?十位数显示符号百位数不显示百位数显示数据(不显示符号) 结束nnyy图3.5 显示数据刷新子程序流程图程序:#include#include#includesbit led=p26;sbit button4=p27;uchar a,b;char templ,temph;int t;uchar t1;char temp1,temp2;bit flag2=1;/报警开关,1打开,0关闭uchar fnum=0;uchar code dis6=on ;uchar code dis7=off;void main() uchar s1num=0;bit flag1=0;led=1;temp1=10; temp2=25;templ=temp1; /将设置的值存入temph=temp2; lcd_init(); /液晶的初始化 lcd_init1(0);lcd_putchar(1,13,dis6); ds18b20_init();/启动传输delay(2200); while(1) if(button1=0) delay_ms(5); if(button1=0) s1num+;while(!button1);/释放确认flag1=1;/设置标志位,进入设置值的状态if(s1num=1)lcd_init(); /进入设置值状态液晶显示 lcd_putchar(1,3,dis3);lcd_init1(temp1);lcd_pos(1,8);/光标定位lcd_write_char(0,0x0f);/光标开始闪烁 if(s1num=2)lcd_putchar(1,3,dis4);lcd_write_number(1,5,temp2);lcd_pos(1,8);/光标定位lcd_write_char(0,0x0f);/光标开始闪烁 if(s1num=3) s1num=0; lcd_putchar(1,3,dis5); lcd_write_char(0,0x0c);/光标停止闪烁 flag1=0; if(flag2)lcd_putchar(1,13,dis6); else lcd_putchar(1,13,dis7); templ=temp1; /将设置的值存入 temph=temp2; if(s1num!=0) if(button2=0) delay_ms(5);if(button2=0)/增加键确认 while(!button2); /确认释放 if(s1num=1) temp1+; lcd_write_number(1,5,temp1); lcd_pos(1,8);/显示位置重新回到调节处 if(s1num=2) temp2+; lcd_write_number(1,5,temp2); lcd_pos(1,8);/显示位置重新回到调节处 if(button3=0) delay_ms(5);if(button3=0)/减小键确认 while(!button3); /确认释放 if(s1num=1) temp1-; lcd_write_number(1,5,temp1); lcd_pos(1,8);/显示位置重新回到调节处 if(s1num=2) temp2-; lcd_write_number(1,5,temp2); lcd_pos(1,8);/显示位置重新回到调节处 if(button4=0)/关闭报警 delay_ms(5); if(button4=0) while(!button4);/释放确认fnum+;if(fnum=1)flag2=0;led=1;lcd_putchar(1,13,dis7);if(fnum=2)flag2=1;fnum=0;lcd_putchar(1,13,dis6); /*ds18b20程序部分*/delay(120); while(init_ds18b20();ds18b20_write(0xcc); / 跳过读序号的操作ds18b20_write(0xbe); / 读取温度寄存器等a=ds18b20_read();/

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论