智能仪表基础学习知识原理与设计综合训练报告.doc
-!智能仪表原理与设计综合训练报告题 目: 温度采集仪的设计 班 级: 姓 名: 学 号: 指导教师: 成 绩: 江苏理工学院电气信息工程学院2015 年 11 月 13 日目 录前言1第1章 课程设计任务和要求21.1 设计任务21.2 技术指标2第2章 系统设计方案32.1 温度采集仪总体设计方案32.2 各模块设计方案3第3章 系统硬件电路设计53.1 单片机STC89C52简介和最小系统53.1.1 STC89C52单片机简介53.1.2 STC89C52单片机最小系统53.2 数字温度传感模块设计73.2.1 数字温度传感器DS18B20简介73.3 显示模块设计93.3.1 LCD1602液晶显示器的工作原理93.3.2 LCD1602液晶显示器的设计103.4 报警模块设计113.4.1 蜂鸣器简介113.5 温度上下限值电路设计123.6 串口输出电路的设计133.6.1 波特率的计算133.6.2 MAX232芯片实现串行通信的电平转换13第4章 系统软件电路设计154.1 LCD液晶显示软件设计154.2 主控模块软件设计174.3 温度采集软件设计194.4 报警电路软件设计24第5章 系统软硬件调试结果分析265.1 软硬件联调结果如表1-3所示265.2 VB界面显示如图2.7所示265.3 软硬件联调结果分析27参考文献28致 谢29附录A 硬件原理图30附录B 实物图32附录C 元器件清单34前言在日常生活及工农业生产中经常要用到温度的检测及控制,目前使用最广泛的温度测量系统一般由温度测量元件、温度变送器和温度指示仪表三个部分组成。这种结构存在两个方面的缺点:一是三个部分相互分离,不便于随身携带和进行临时性的测量;二是整个系统不易取得较高的性能价格比。传统的测温元件有热电偶和热电阻。而热电偶和热电阻测出的一般都是电压,再转换成对应的温度,需要比较多的外部硬件支持,硬件电路复杂,软件调试复杂,制作成本高。本文提出的一种由单片集成电路构成的温度传感器的种类多,测量的精度高,响应时间短,使用方便无需变换电路等。该测温仪本身就是一个完整的温度测量系统,它不仅可以将代表被测温度值的电信号转换成温度值并显示出来,而且还将处理后的温度数值转换成电流或电压信号输出,以供计算机或其他仪表使用,即完成温度变送器的功能。近年来,美国DALLAS公司生产DSI8B20为代表的新型单总线数字式温度传感器以其突出优点广泛使用于仓储管理、工农业生产制造、气象观测、科学研究以及日常生活中。DSI8B20集温度测量和A/D转换于一体,直接输出数字量,传输距离远,可以很方便地实现多点测量。温度采集仪增加PC机与单片机之间的通信,可以对实时温度进行远程监测与存储,此仪器可用于蔬菜大棚的监控或者工厂中的锅炉温度的采集等场合应用广泛。 第1章 课程设计任务和要求 1.1 设计任务本次课程设计要求设计出智能化温度测量仪表,要求该测量仪表能够通过温度传感器采集温度,并将温度传到单片机进行处理,并通过液晶显示,同时以单片机为核心的主控单元通过对按键的操作,设定上下限报警温度与实测温度进行比较,并判断是否报警,且与PC机通信将监测的温度发送到PC机。温度监测界面可用VB进行编程设计实现上位机人机界面的设计,要求上位机发送的命令下位机能及时的给与响应,并且上位机能够实时准确的显示下位机所上传数据以及电机设备的运行状态;使用汇编语言完成下位机程序驱动,并且要尽量保证系统的稳定性和可靠性以及使用性。1.2 技术指标1.可以对0125温度进行实时采集并能(通过液晶)显示; 2.可以通过按键人工设定上下限报警温度并判断是否报警(蜂鸣器发出响声); 3.实现下位机与PC机之间的串行通信(在PC机上用VB所编写界面显示实测温度值)。 第2章 系统设计方案2.1 温度采集仪总体设计方案单片机控制电路中使用STC89C52。温度采集电路中采用数字温度传感器DS18B20(该传感器具有测温范围广、测温准确的优点,其精确度可达到0.1摄氏度,可测量的温度范围从-55125摄氏度)。将采集到的温度数据送到单片机,通过单片机控制的温度报警模块判断是否报警,最终将实测温度发送到液晶显示器LCD1602显示,同时很方便的完成单片机与PC机之间的串行通信(利用MAX232芯片实现电平转换功能,在VB程序编写的界面上显示监测温度)。温度采集仪设计如图1.1所示。图1.1 图温度采集仪设计2.2 各模块设计方案本设计是一个基于单片机的温度采集仪,利用单片机的功能强大且体积小、价格低、抗干扰性好等特点,根据需要完成的功能需要在本设计中实现温度的采集、显示、上下限报警温度值设定、报警和与PC机的串行通信等功能。本设计中主要分硬件与软件的设计,硬件包括:主控模块 、温度传感模块、显示模块、按键模块、报警模块、通信模块等,软件包括:温度采集、按键与报警、显示、PC机上的温度界面等。(1) 主控模块:可以选用STC89C系列的单片机,这里采用的STC89C52单片机,价格便宜,使用方便,STC89C52的片内RAM已能满足存放要求。(2) 温度传感模块:由于本设计中单片机除了要完成数据采集、处理、控制和显示任务外,还要完成按键值的采集、处理。如果用常规的数字加模拟电路实现就会相对困难一些。本设计选用的数字式集成温度传感器DS18B20。DS18B20是DALLAS半导体公司(现属MAXIM公司)设计生产的单总线数字温度传感器,其测量温度范围为55125,在-10+85时精度为0.5。这个传感器最大的特点就是能够从一根总线直接输出二进制的温度信号,不需要A/D转换和信号放大。这样的选择使得整个电路的硬件设计更为简化,节省了单片机的资源。 (3) 显示模块:可以使用数码管或者液晶显示,两者皆可。在本设计中,主要使用液晶,焊接简单且程序调用方便。(4) 按键模块:本设计采用三个按键分别用来设定上限、下限温度。 (5) 报警模块:就是当设定的温度在门限温度之外,就会报警,蜂鸣器发出响声。 (6) 通信模块:RS-232电平与单片机TTL电平之间的转换方式,可以使用分立元件焊接而成,也可以直接使用集成芯片MAX232芯片。从电路使用方便的角度来看直接采用集成芯片,适应性更强,加之其价格适中,硬件接口简单。 第3章 系统硬件电路设计3.1 单片机STC89C52简介和最小系统3.1.1 STC89C52单片机简介本设计采用的是STC公司的STC89C52单片机。其特性如下: (1) 工作频率:080MHz; (2) 3个标准16位定时/计数器; (3) 可编程I/O口线32条,中断源5个; (4) 8K字节快闪ROM,128字节RAM; (5) 工作电压:35V; (6) 40引脚,DIP封装; STC89C52引脚图如图1.2所示。图1.2 STC89C52引脚图3.1.2 STC89C52单片机最小系统最小系统包括单片机的电源、时钟电路和复位电路。 1.时钟电路 STC89C52单片允许的时钟频率的典型值12MHz或11.0592MHz,也可以是6MHz。本设计要使用串行通信,所以应采用11.0592MHz。 接到晶振两端的瓷片电容作用是使振荡器起振和对f 微调补偿,典型值为30PF,本设计中选用30PF瓷片电容。当单片机加电以后延迟约10ms的时间振荡器产生时钟,不受软件控制(XTAL2输出幅度为3V左右的正弦波)。单片机时钟电路如图1.3所示。图1.3 单片机时钟电路2.复位电路 计算机在启动运行时都需要复位,使中央处理器CPU和系统中的其它部件都处于一个确定的初始状态,并从这个状态开始工作。单片机的复位引脚是RST,当振荡器起振后,该引脚上出现2个周期的高电平,是器件复位,只要RST保持高电平,单片机保持复位状态。单片机复位方式有二种:上电复位(如图1.4所示)、人工复位(如图1.5所示)。本设计中两种方法都采用。 图1.4 上电复位电路 图1.5 上电复位和开关复位注:RST与Vss之间的那个电阻在NMOS型单片机中需要接,但是在CMOS型单片机中不接,本设计电路中就可以不接。3.2 数字温度传感模块设计3.2.1 数字温度传感器DS18B20简介 美国Dallas半导体公司的数字化温度传感器DS1820是世界上第一片支持“一线总线”接口的温度传感器,在其内部使用了在板(ON-B0ARD)专利技术。全部传感元件及转换电路集成在形如一只三极管的集成电路内。1. DS18B20的主要特性 (1) 适应电压范围更宽,电压范围:3.0V5.5V,在寄生电源方式下可由数据线供电。 (2) 独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。 (3) DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内。 (4) 温度范围55125,在-10+85时精度为0.5。 (5) 可编程的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温。 (6) 在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快。 (7) 测量结果直接输出数字温度信号,以“一线总线”串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。 (8) 负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。2. DS18B20的外形、内部结构及引脚定义 (1) DS18B20的外形及管脚排列如图1.6所示。a. DQ为数字信号输入/输出端; b. GND为地线; c. VDD为外界供电电源输入端(在寄生电源接线方式时接地)。 图1.6 DS18B20的外形及管脚排列 (2) DS18B20的内部结构图如图1.7所示。图1.7 DS18B20的内部结构图3. DS18B20与单片机连接电路 DS18B20与单片机连接电路如图1.8所示。图1.8 DS18B20与单片机连接电路3.3 显示模块设计显示模块部分主要采用LCD1602液晶显示。主要实现的功能是通过单片机读取温度传感器转换的温度值,再将其所读取的十六进制数转换成十制数,通过静态显示,最后在LCD显示出温度数值。本设计液晶显示器选用LCD1602,将单片机输出的数据进行动态显示。将采集的温度以直观化的形象显示,与能显示作报警温度的上下范围,这样方便与实际温度进行比较,实用价值更高。3.3.1 LCD1602液晶显示器的工作原理 字符型液晶显示模块是专门用于显示字母、数字、符号等的点阵式的LCD,目前常用的是16*1、16*2,20*2和40*2行等。本次设计中采用的1602字符型液晶显示器,一行是用来实测温度,另一行是用来显示报警温度的上下限。 1. 1602的引脚功能 1602采用标准14脚(无背光)或16脚(带背光)接口,各引脚功能如表1-1所示。表1-1 1602引脚功能介绍编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极(1) VL为液晶显示器对比度调整端, 接正电源时对比度最弱, 接地时对比度最强。若对比度过高会产生“ 鬼影”, 使用时可以通过一只10K电阻来调整对比度。 (2) RS为寄存器选择端, RS为高电平时选择数据寄存器, 为低电平时选择指令寄存器。 R/W为读写信号线, 为高电平时进行读操作, 为低电平时为写操作。当R/W和RS同为低电平时可以写人指令或者显示地址;当RS为低电平、R/W为高电平时,可以读忙信号。当RS为高电平、R/W为低电平时,可以读写数据。 (3) E为使能端, 当E端由高电平跳变成低电平时, 液晶模块执行命令。 (4) D0D7为8位双向数据线。3.3.2 LCD1602液晶显示器的设计本设计中RS,R/W,E/N分别接单片机的P2.5,P2.6,P2.7口,8个数据口接单片机的P0口,如图1.9所示。 图1.9 DS18B20与单片机连接电路3.4 报警模块设计报警模块由一个自我震荡型的蜂鸣器(只要在蜂鸣器两端加上超过3 V的电压,蜂鸣器就会一直响)组成,在这次设计中蜂鸣器是通过三极管放大信号在所要求的温度达到一定的上界或者下界时(在文中设置的初始上界温度10,下界温度为20),通过三个按钮可改变上下界温度的范围,一个按钮是用来加,一个按钮是用来减,最后一个按钮是用来确定。只要温度不在其设置范围内,蜂鸣器就会发出响声。3.4.1 蜂鸣器简介1. 蜂鸣器的工作原理 在本设计中主要是用于超过规定温度的范围进行报警。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。蜂鸣器在电路中用字母“H”或“HA”。压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。有的压电式蜂鸣器外壳上还装有发光二极管。多谐振荡器由晶体管或集成电路构成。当接通电源后(1.5V15V直流工作电压),多谐振荡器起振,输出1.52.5KHz的音频信号,阻抗匹配器推动压电蜂鸣片发声。在本设计中采用的是压电式蜂鸣器。2. 蜂鸣器连接电路 当P3.2输出高电平时,三极管截止,没有电流流过线圈,蜂鸣器不发声;当P3.2输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。因此,可以通过程序控制P3.2脚的电平来使蜂鸣器发出声音和关闭。 蜂鸣器与单片机连接电路如图2.0所示。图2.0 蜂鸣器与单片机连接电路 3.5 温度上下限值电路设计在本设计中主要选用了单片机的P1.0,P1.1,P1.2口进行上限温度、下限温度及温度的确定。本设计中的温度上下值按键控制电路如图2.1所示。图2.1 温度上下值按键控制电路3.6 串口输出电路的设计串口输出电路部分主要是利用MAX232实现RS232的串行协议的电平转换,以保证采样参数的设置和温度向PC机正常发送。主要实现的功能是利用STC89C52的UART串行通信口和上位PC机实现串行通信。 3.6.1 波特率的计算 单片机或计算机在串口通信时的速率用波特率表示,它定义为每秒传输二进制代码的位数,即1位秒表1位/秒,单位是bps(位/秒)。如每秒传送240个字符,而每个字符格式包含10位(1个起始位、1个停止位、8个数据位),这是的波特率为10位*240个/秒=2400bps. 如数据传送的波特率为1200 波特,采用N.8.1 帧格式(10 位),则每秒传送字节为120 个,而字节中每一位传送时间即为波特率的倒数:T=I/1200=0.833ms。同样,如数据传送的波特率为9600 波特,则字节中每一位传送时间为T=1/9600=0.104 ms。根据数据传送的波特率即字节中每一位的传送时间,我们便可用普通I/O 口来模拟实现串行通信的时序。 3.6.2 MAX232芯片实现串行通信的电平转换 MAX232芯片引脚如图2.2所示。图2.2 MAX232芯片引脚图MAX232的相关参数如表1-2所示。表1-2 MAX232引脚功能介绍脚号引脚名称引脚功能描述脚号引脚名称引脚功能描述1C1+泵电容1正极9R2OUT第二组TTL/CMOS电平输出2V+正电源滤波10T2IN第二组TTL/CMOS电平输入3C1-泵电容1负极11T1IN第一组TTL/CMOS电平输入4C2+泵电容2正极12R1OUT第一组TTL/CMOS电平输出5C2-泵电容2负极13R1IN第一组RS-232电平输入6V-负电源滤波14T1OUT第一组RS-232电平输出7T2OUT第二组RS-232电平输出15GND地8R2IN第二组RS-232电平输入16VCC电源+5V 第4章 系统软件电路设计本设计单片机软件采用C51语言编写,C51语言是ANSI C的扩展集,其语法结构、关键字等与ANSIC绝大部分是相同的。 系统程序包括主程序、读出温度子程序、温度转换命令子程序、计算温度子程序、显示程序、报警程序、PC机串行通信程序等。在编写PC机与单片机进行串行通信时采用VB语言编写程序。从有利于实现较复杂的算法(显示效果处理)和有利于程序结构化考虑,程序适宜采用C51语言编写。4.1 LCD液晶显示软件设计 液晶显示主要实现的功能就是对实测温度,报警温度上下限值进行显示。液晶显示子程序流程图如图2.3所示。图2.3 液晶显示子程序流程图液晶显示子程序void write_com(uchar com) /液晶写命令程序 / while(BusyTest()=1); /如果忙就等待 rs=0; /等0输入命令 rw=0; en=0; /液晶使能信号初始化 P0=com; /把com参数,液晶的命令值送到P0口 en=1; /使能信号,0到1表示上升沿打开可以写命令数据到液晶里 delay(100); /延时,按照液晶的时序图的要求 en=0; /使能信号回复 delay(100); void write_data(uchar date) /液晶写数据程序 / while(BusyTest()=1); /如果忙就等待 rs=1; /等1表示输入数据 rw=0; en=0; P0=date; /把date参数,液晶的数据送到P0口 en=1; delay(100); en=0; delay(100); void init() /液晶初始化程序 en=0; write_com(0x38); /设置16X2显示,5X7点阵,8位数据口 write_com(0x0c); /设置开显示,不显示光标 write_com(0x06); /写一个字符后地址指针加1 write_com(0x01); /显示清0,数据指针清0 void writeString(uchar *str, uchar length) uchar i; for(i = 0; i length; i+) write_data(stri); 4.2 主控模块软件设计主程序的功能是负责温度的实时显示、读出并处理DS18B20测量的当前温度值,温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度,其主程序流程图如图2.4所示。图2.4 主程序流程图/获取当前温度值int getTmpValue() unsigned int tmpvalue; int value; /存放温度数值 float t; unsigned char low, high; sendReadCmd(); /连续读取两个字节数据 low = readByte(); high = readByte(); /将高低两个字节合成一个整形变量 /计算机中对于负数是利用补码来表示的 /若是负值, 读取出来的数值是用补码表示的, 可直接赋值给int型的value tmpvalue = high; tmpvalue 0 ? 0.5 : -0.5); /大于0加0.5, 小于0减0.5 return value;4.3 温度采集软件设计1. 读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。2. 温度转换命令子程序主要是法温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换完成。温度转换命令子程序流程图如图2.5所示。图2.5 子程序流程图温度采集仪的子程序/让DS18B20一段相对长时间低电平, 然后一段相对非常短时间高电平, 即可启动 void dsInit() /对于11.0592MHz时钟, unsigned int型的i, 作一个i+操作的时间大于us unsigned int i; ds = 0; i = 100; /拉低约800us, 符合协议要求的480us以上 while(i0) i-; ds = 1; /产生一个上升沿, 进入等待应答状态 i = 4; while(i0) i-; void dsWait() unsigned int i; while(ds); while(ds); /检测到应答脉冲 i = 4; while(i 0) i-;/向DS18B20读取一位数据/读一位, 让DS18B20一小周期低电平, 然后两小周期高电平,/之后DS18B20则会输出持续一段时间的一位数据bit readBit() unsigned int i; bit b; ds = 0; i+; /延时约8us, 符合协议要求至少保持1us ds = 1; i+; i+; /延时约16us, 符合协议要求的至少延时15us以上 b = ds; i = 8; while(i0) i-; /延时约64us, 符合读时隙不低于60us要求 return b;/读取一字节数据, 通过调用readBit()来实现unsigned char readByte() unsigned int i; unsigned char j, dat; dat = 0; for(i=0; i8; i+) j = readBit(); /最先读出的是最低位数据 dat = (j 1); return dat;/向DS18B20写入一字节数据void writeByte(unsigned char dat) unsigned int i; unsigned char j; bit b; for(j = 0; j = 1; /写1, 将DQ拉低15us后, 在15us60us内将DQ拉高, 即完成写1 if(b) ds = 0; i+; i+; /拉低约16us, 符号要求1560us内 ds = 1; i = 8; while(i0) i-; /延时约64us, 符合写时隙不低于60us要求 else /写0, 将DQ拉低60us120us ds = 0; i = 8; while(i0) i-; /拉低约64us, 符号要求 ds = 1; i+; i+; /整个写0时隙过程已经超过60us, 这里就不用像写1那样, 再延时64us了 /向DS18B20发送温度转换命令void sendChangeCmd() dsInit(); /初始化DS18B20, 无论什么命令, 首先都要发起初始化 dsWait(); /等待DS18B20应答 delay(1); /延时1ms, 因为DS18B20会拉低DQ 60240us作为应答信号 writeByte(0xcc); /写入跳过序列号命令字 Skip Rom writeByte(0x44); /写入温度转换命令字 Convert T/向DS18B20发送读取数据命令void sendReadCmd() dsInit(); dsWait(); delay1(1); writeByte(0xcc); /写入跳过序列号命令字 Skip Rom writeByte(0xbe); /写入读取数据令字 Read Scratchpad4.4 报警电路软件设计报警电路软件主要实现的功能主要是对温度的上下限值可自由的进行设定,如实测温度不在此范围内,蜂鸣器就会发出响声。温度上下值范围初始状态为:1020。报警电路程序流程图如图2.6所示。图2.6 报警电路程序流程图报警电路程序/*void warn(uint tempwarn)/温度报警程序 if(tempwarn24)/如果温度大于24度并且启动报警 Alam=0; delay1(500); Alam=1; delay1(500); */void main() unsigned char i; uchar table = Now Temperature:; uchar User= C;/自定义字符 sendChangeCmd(); /启动温度转换 init(); /初始化LCD write_com(0x80); /第一行 writeString(table, 16); write_com(0xc0); /第二行 writeString(User, 1); / warn(getTmpValue(); while(1) sendChangeCmd(); /启动温度转换 /显示5次 for(i = 0; i 40; i+) write_com(0xc0); display( getTmpValue(); 第5章 系统软硬件调试结果分析5.1 软硬件联调结果如表1-3所示表1-3 测量结果统计表测量次数液晶显示结果VB界面显示报警情况1第一行:fact:23.63第二行:down:16 up:2423.63未报警2第一行:fact:25.56第二行:down:16 up:2425.56报警3第一行:fact:24.42第二行:down:16 up:2824.42未报警5.2 VB界面显示如图2.7所示1.当VB界面显示温度为23.63时2.当VB界面显示温度为25.56时图2.7 PC机上显示的温度值5.3 软硬件联调结果分析本设计中所要求的温度采集的数据在液晶显示器1602第一行显示,第二行能显示温度上下限的范围,同时通过单片机控制的按键来改变温度上下限范围值。MAX232电路工作正常,单片机与PC机能正常实现串行通信并在VB程序编写的界面显示实时温度并且显示状态稳定。在设定的范围内判定是否报警,蜂鸣器会发出响声,告知现在所测温度不在其设定温度范围内,因此三个技术指标都能实现。参考文献1 张元良,王建军智能仪表开发技术实例解析M北京:机械工业出版社,2009. 2 史健芳智能仪表设计基础(第2版)M北京:电子工业出版社,20123 徐爱钧,徐阳.智能化测量控制仪表原理与设计(第3版)M北京:北京航空航天大学出版社,20124 马忠梅,籍顺心,张凯.单片机的C语言应用程序设计(第4版).北京:北京航天航空大学出版社,2007.5 谭浩强.程序设计与开发技术.北京:清华大学出版社,1991.致 谢通过本次对数字温度仪的设计与制作,让我了解了设计电路的程序,也了解了关于数字温度仪的原理与设计理念,要设计一个电路首先要用仿真,仿真成功之后才能实际接线。但实际的和仿真的是有差别的,因为实际接线中会有各种条件限制,所以,设计时应考虑两者的差异,从中找出最合适的设计方法。通过此次综合训练,使我对之前所学的专业课程有了进一步的学习,并且加强了课程之间的联系。此次训练更重要的意义就是增强了我们自己动手设计电路和编写程序的能力,这对即将进入工作阶段的我们尤为重要,在此次综合训练中我们小组每个人都认真对待完成分配给自己的实验项目,当遇到问题时首先组员积极讨论思考,发现问题,解决问题。如果遇解决不了的问题再请教指导老师,感谢指导老师认真的讲解使我们在此次综合训练中受益匪浅,掌握了常见问题的解决方法。遇到问题并不可怕,可怕的是不敢面对,我们要不怕失败,在不断的改进中和调试中收获更多知识。在不断的问题中总结自己在日常学习中的不足之处,在理论知识的基础上把自己的实践能力提高,做到学以致用。附录A 硬件原理图附录B 实物图附录C 元器件清单元件名称规格数目杜邦线30导线红1排针单排方针2电解电容10uF/25V5电解电容10uF/50V1瓷片电容30pF2电阻1K6电阻4.7K1温度传感器DS18B201发光二极管红4单片机STC89C52RC1晶体振荡器11.0592MHz1排阻10K(即103) 9脚1按钮6*6*6四脚轻触按键开关49针串口接口DB-91电平转换器MAX2321三极管90121蜂鸣器5V有源压电蜂鸣器140脚底座DIP40116脚底座DIP161电位器10K(即103)1
收藏
编号:2610563
类型:共享资源
大小:10.03MB
格式:DOC
上传时间:2020-04-24
10
金币
- 关 键 词:
-
智能仪表
基础
学习
知识
原理
设计
综合
训练
报告
讲演
呈文
- 资源描述:
-
-!
智能仪表原理与设计
综合训练报告
题 目: 温度采集仪的设计
班 级:
姓 名:
学 号:
指导教师:
成 绩:
江苏理工学院
电气信息工程学院
2015 年 11 月 13 日
目 录
前言 1
第1章 课程设计任务和要求 2
1.1 设计任务 2
1.2 技术指标 2
第2章 系统设计方案 3
2.1 温度采集仪总体设计方案 3
2.2 各模块设计方案 3
第3章 系统硬件电路设计 5
3.1 单片机STC89C52简介和最小系统 5
3.1.1 STC89C52单片机简介 5
3.1.2 STC89C52单片机最小系统 5
3.2 数字温度传感模块设计 7
3.2.1 数字温度传感器DS18B20简介 7
3.3 显示模块设计 9
3.3.1 LCD1602液晶显示器的工作原理 9
3.3.2 LCD1602液晶显示器的设计 10
3.4 报警模块设计 11
3.4.1 蜂鸣器简介 11
3.5 温度上下限值电路设计 12
3.6 串口输出电路的设计 13
3.6.1 波特率的计算 13
3.6.2 MAX232芯片实现串行通信的电平转换 13
第4章 系统软件电路设计 15
4.1 LCD液晶显示软件设计 15
4.2 主控模块软件设计 17
4.3 温度采集软件设计 19
4.4 报警电路软件设计 24
第5章 系统软硬件调试结果分析 26
5.1 软硬件联调结果如表1-3所示 26
5.2 VB界面显示如图2.7所示 26
5.3 软硬件联调结果分析 27
参考文献 28
致 谢 29
附录A 硬件原理图 30
附录B 实物图 32
附录C 元器件清单 34
前言
在日常生活及工农业生产中经常要用到温度的检测及控制,目前使用最广泛的温度测量系统一般由温度测量元件、温度变送器和温度指示仪表三个部分组成。这种结构存在两个方面的缺点:一是三个部分相互分离,不便于随身携带和进行临时性的测量;二是整个系统不易取得较高的性能价格比。传统的测温元件有热电偶和热电阻。而热电偶和热电阻测出的一般都是电压,再转换成对应的温度,需要比较多的外部硬件支持,硬件电路复杂,软件调试复杂,制作成本高。
本文提出的一种由单片集成电路构成的温度传感器的种类多,测量的精度高,响应时间短,使用方便无需变换电路等。该测温仪本身就是一个完整的温度测量系统,它不仅可以将代表被测温度值的电信号转换成温度值并显示出来,而且还将处理后的温度数值转换成电流或电压信号输出,以供计算机或其他仪表使用,即完成温度变送器的功能。
近年来,美国DALLAS公司生产DSI8B20为代表的新型单总线数字式温度传感器以其突出优点广泛使用于仓储管理、工农业生产制造、气象观测、科学研究以及日常生活中。DSI8B20集温度测量和A/D转换于一体,直接输出数字量,传输距离远,可以很方便地实现多点测量。温度采集仪增加PC机与单片机之间的通信,可以对实时温度进行远程监测与存储,此仪器可用于蔬菜大棚的监控或者工厂中的锅炉温度的采集等场合应用广泛。
第1章 课程设计任务和要求
1.1 设计任务
本次课程设计要求设计出智能化温度测量仪表,要求该测量仪表能够通过温度传感器采集温度,并将温度传到单片机进行处理,并通过液晶显示,同时以单片机为核心的主控单元通过对按键的操作,设定上下限报警温度与实测温度进行比较,并判断是否报警,且与PC机通信将监测的温度发送到PC机。
温度监测界面可用VB进行编程设计实现上位机人机界面的设计,要求上位机发送的命令下位机能及时的给与响应,并且上位机能够实时准确的显示下位机所上传数据以及电机设备的运行状态;使用汇编语言完成下位机程序驱动,并且要尽量保证系统的稳定性和可靠性以及使用性。
1.2 技术指标
1.可以对0℃~+125℃温度进行实时采集并能(通过液晶)显示;
2.可以通过按键人工设定上下限报警温度并判断是否报警(蜂鸣器发出响声);
3.实现下位机与PC机之间的串行通信(在PC机上用VB所编写界面显示实测温度值)。
第2章 系统设计方案
2.1 温度采集仪总体设计方案
单片机控制电路中使用STC89C52。温度采集电路中采用数字温度传感器DS18B20(该传感器具有测温范围广、测温准确的优点,其精确度可达到0.1摄氏度,可测量的温度范围从-55~125摄氏度)。将采集到的温度数据送到单片机,通过单片机控制的温度报警模块判断是否报警,最终将实测温度发送到液晶显示器LCD1602显示,同时很方便的完成单片机与PC机之间的串行通信(利用MAX232芯片实现电平转换功能,在VB程序编写的界面上显示监测温度)。
温度采集仪设计如图1.1所示。
图1.1 图温度采集仪设计
2.2 各模块设计方案
本设计是一个基于单片机的温度采集仪,利用单片机的功能强大且体积小、价格低、抗干扰性好等特点,根据需要完成的功能需要在本设计中实现温度的采集、显示、上下限报警温度值设定、报警和与PC机的串行通信等功能。本设计中主要分硬件与软件的设计,硬件包括:主控模块 、温度传感模块、显示模块、按键模块、报警模块、通信模块等,软件包括:温度采集、按键与报警、显示、PC机上的温度界面等。
(1) 主控模块:可以选用STC89C系列的单片机,这里采用的STC89C52单片机,价格便宜,使用方便,STC89C52的片内RAM已能满足存放要求。
(2) 温度传感模块:由于本设计中单片机除了要完成数据采集、处理、控制和显示任务外,还要完成按键值的采集、处理。如果用常规的数字加模拟电路实现就会相对困难一些。本设计选用的数字式集成温度传感器DS18B20。DS18B20是DALLAS半导体公司(现属MAXIM公司)设计生产的单总线数字温度传感器,其测量温度范围为-55℃~+125℃,在-10~+85℃时精度为0.5℃。这个传感器最大的特点就是能够从一根总线直接输出二进制的温度信号,不需要A/D转换和信号放大。这样的选择使得整个电路的硬件设计更为简化,节省了单片机的资源。
(3) 显示模块:可以使用数码管或者液晶显示,两者皆可。在本设计中,主要使用液晶,焊接简单且程序调用方便。
(4) 按键模块:本设计采用三个按键分别用来设定上限、下限温度。
(5) 报警模块:就是当设定的温度在门限温度之外,就会报警,蜂鸣器发出响声。
(6) 通信模块:RS-232电平与单片机TTL电平之间的转换方式,可以使用分立元件焊接而成,也可以直接使用集成芯片MAX232芯片。从电路使用方便的角度来看直接采用集成芯片,适应性更强,加之其价格适中,硬件接口简单。
第3章 系统硬件电路设计
3.1 单片机STC89C52简介和最小系统
3.1.1 STC89C52单片机简介
本设计采用的是STC公司的STC89C52单片机。其特性如下:
(1) 工作频率:0~80MHz;
(2) 3个标准16位定时/计数器;
(3) 可编程I/O口线32条,中断源5个;
(4) 8K字节快闪ROM,128字节RAM;
(5) 工作电压:3~5V;
(6) 40引脚,DIP封装;
STC89C52引脚图如图1.2所示。
图1.2 STC89C52引脚图
3.1.2 STC89C52单片机最小系统
最小系统包括单片机的电源、时钟电路和复位电路。
1.时钟电路
STC89C52单片允许的时钟频率的典型值12MHz或11.0592MHz,也可以是6MHz。本设计要使用串行通信,所以应采用11.0592MHz。
接到晶振两端的瓷片电容作用是使振荡器起振和对f 微调补偿,典型值为30PF,本设计中选用30PF瓷片电容。当单片机加电以后延迟约10ms的时间振荡器产生时钟,不受软件控制(XTAL2输出幅度为3V左右的正弦波)。
单片机时钟电路如图1.3所示。
图1.3 单片机时钟电路
2.复位电路
计算机在启动运行时都需要复位,使中央处理器CPU和系统中的其它部件都处于一个确定的初始状态,并从这个状态开始工作。单片机的复位引脚是RST,当振荡器起振后,该引脚上出现2个周期的高电平,是器件复位,只要RST保持高电平,单片机保持复位状态。单片机复位方式有二种:上电复位(如图1.4所示)、人工复位(如图1.5所示)。本设计中两种方法都采用。
图1.4 上电复位电路 图1.5 上电复位和开关复位
注:RST与Vss之间的那个电阻在NMOS型单片机中需要接,但是在CMOS型单片机中不接,本设计电路中就可以不接。
3.2 数字温度传感模块设计
3.2.1 数字温度传感器DS18B20简介
美国Dallas半导体公司的数字化温度传感器DS1820是世界上第一片支持“一线总线”接口的温度传感器,在其内部使用了在板(ON-B0ARD)专利技术。全部传感元件及转换电路集成在形如一只三极管的集成电路内。
1. DS18B20的主要特性
(1) 适应电压范围更宽,电压范围:3.0V~5.5V,在寄生电源方式下可由数据线供电。
(2) 独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
(3) DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内。
(4) 温度范围-55℃~+125℃,在-10~+85℃时精度为0.5℃。
(5) 可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温。
(6) 在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快。
(7) 测量结果直接输出数字温度信号,以“一线总线”串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。
(8) 负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。
2. DS18B20的外形、内部结构及引脚定义
(1) DS18B20的外形及管脚排列如图1.6所示。
a. DQ为数字信号输入/输出端;
b. GND为地线;
c. VDD为外界供电电源输入端(在寄生电源接线方式时接地)。
图1.6 DS18B20的外形及管脚排列
(2) DS18B20的内部结构图如图1.7所示。
图1.7 DS18B20的内部结构图
3. DS18B20与单片机连接电路
DS18B20与单片机连接电路如图1.8所示。
图1.8 DS18B20与单片机连接电路
3.3 显示模块设计
显示模块部分主要采用LCD1602液晶显示。主要实现的功能是通过单片机读取温度传感器转换的温度值,再将其所读取的十六进制数转换成十制数,通过静态显示,最后在LCD显示出温度数值。本设计液晶显示器选用LCD1602,将单片机输出的数据进行动态显示。将采集的温度以直观化的形象显示,与能显示作报警温度的上下范围,这样方便与实际温度进行比较,实用价值更高。
3.3.1 LCD1602液晶显示器的工作原理
字符型液晶显示模块是专门用于显示字母、数字、符号等的点阵式的LCD,目前常用的是16*1、16*2,20*2和40*2行等。本次设计中采用的1602字符型液晶显示器,一行是用来实测温度,另一行是用来显示报警温度的上下限。
1. 1602的引脚功能
1602采用标准14脚(无背光)或16脚(带背光)接口,各引脚功能如表1-1所示。
表1-1 1602引脚功能介绍
编号
符号
引脚说明
编号
符号
引脚说明
1
VSS
电源地
9
D2
数据
2
VDD
电源正极
10
D3
数据
3
VL
液晶显示偏压
11
D4
数据
4
RS
数据/命令选择
12
D5
数据
5
R/W
读/写选择
13
D6
数据
6
E
使能信号
14
D7
数据
7
D0
数据
15
BLA
背光源正极
8
D1
数据
16
BLK
背光源负极
(1) VL为液晶显示器对比度调整端, 接正电源时对比度最弱, 接地时对比度最强。若对比度过高会产生“ 鬼影”, 使用时可以通过一只10K电阻来调整对比度。
(2) RS为寄存器选择端, RS为高电平时选择数据寄存器, 为低电平时选择指令寄存器。 R/W为读写信号线, 为高电平时进行读操作, 为低电平时为写操作。当R/W和RS同为低电平时可以写人指令或者显示地址;当RS为低电平、R/W为高电平时,可以读忙信号。当RS为高电平、R/W为低电平时,可以读写数据。
(3) E为使能端, 当E端由高电平跳变成低电平时, 液晶模块执行命令。
(4) D0~D7为8位双向数据线。
3.3.2 LCD1602液晶显示器的设计
本设计中RS,R/W,E/N分别接单片机的P2.5,P2.6,P2.7口,8个数据口接单片机的P0口,如图1.9所示。
图1.9 DS18B20与单片机连接电路
3.4 报警模块设计
报警模块由一个自我震荡型的蜂鸣器(只要在蜂鸣器两端加上超过3 V的电压,蜂鸣器就会一直响)组成,在这次设计中蜂鸣器是通过三极管放大信号.在所要求的温度达到一定的上界或者下界时(在文中设置的初始上界温度10℃,下界温度为20℃),通过三个按钮可改变上下界温度的范围,一个按钮是用来加,一个按钮是用来减,最后一个按钮是用来确定。只要温度不在其设置范围内,蜂鸣器就会发出响声。
3.4.1 蜂鸣器简介
1. 蜂鸣器的工作原理
在本设计中主要是用于超过规定温度的范围进行报警。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。蜂鸣器在电路中用字母“H”或“HA”。压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。有的压电式蜂鸣器外壳上还装有发光二极管。多谐振荡器由晶体管或集成电路构成。当接通电源后(1.5V~15V直流工作电压),多谐振荡器起振,输出1.5~2.5KHz的音频信号,阻抗匹配器推动压电蜂鸣片发声。在本设计中采用的是压电式蜂鸣器。
2. 蜂鸣器连接电路
当P3.2输出高电平时,三极管截止,没有电流流过线圈,蜂鸣器不发声;当P3.2输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。因此,可以通过程序控制P3.2脚的电平来使蜂鸣器发出声音和关闭。
蜂鸣器与单片机连接电路如图2.0所示。
图2.0 蜂鸣器与单片机连接电路
3.5 温度上下限值电路设计
在本设计中主要选用了单片机的P1.0,P1.1,P1.2口进行上限温度、下限温度及温度的确定。本设计中的温度上下值按键控制电路如图2.1所示。
图2.1 温度上下值按键控制电路
3.6 串口输出电路的设计
串口输出电路部分主要是利用MAX232实现RS232的串行协议的电平转换,以保证采样参数的设置和温度向PC机正常发送。主要实现的功能是利用STC89C52的UART串行通信口和上位PC机实现串行通信。
3.6.1 波特率的计算
单片机或计算机在串口通信时的速率用波特率表示,它定义为每秒传输二进制代码的位数,即1位秒表1位/秒,单位是bps(位/秒)。如每秒传送240个字符,而每个字符格式包含10位(1个起始位、1个停止位、8个数据位),这是的波特率为10位*240个/秒=2400bps. 如数据传送的波特率为1200 波特,采用N.8.1 帧格式(10 位),则每秒传送字节为120 个,而字节中每一位传送时间即为波特率的倒数:T=I/1200=0.833ms。同样,如数据传送的波特率为9600 波特,则字节中每一位传送时间为T=1/9600=0.104 ms。根据数据传送的波特率即字节中每一位的传送时间,我们便可用普通I/O 口来模拟实现串行通信的时序。
3.6.2 MAX232芯片实现串行通信的电平转换
MAX232芯片引脚如图2.2所示。
图2.2 MAX232芯片引脚图
MAX232的相关参数如表1-2所示。
表1-2 MAX232引脚功能介绍
脚号
引脚名称
引脚功能描述
脚号
引脚名称
引脚功能描述
1
C1+
泵电容1正极
9
R2OUT
第二组TTL/CMOS电平输出
2
V+
正电源滤波
10
T2IN
第二组TTL/CMOS电平输入
3
C1-
泵电容1负极
11
T1IN
第一组TTL/CMOS电平输入
4
C2+
泵电容2正极
12
R1OUT
第一组TTL/CMOS电平输出
5
C2-
泵电容2负极
13
R1IN
第一组RS-232电平输入
6
V-
负电源滤波
14
T1OUT
第一组RS-232电平输出
7
T2OUT
第二组RS-232电平输出
15
GND
地
8
R2IN
第二组RS-232电平输入
16
VCC
电源+5V
第4章 系统软件电路设计
本设计单片机软件采用C51语言编写,C51语言是ANSI C的扩展集,其语法结构、关键字等与ANSIC绝大部分是相同的。
系统程序包括主程序、读出温度子程序、温度转换命令子程序、计算温度子程序、显示程序、报警程序、PC机串行通信程序等。在编写PC机与单片机进行串行通信时采用VB语言编写程序。
从有利于实现较复杂的算法(显示效果处理)和有利于程序结构化考虑,程序适宜采用C51语言编写。
4.1 LCD液晶显示软件设计
液晶显示主要实现的功能就是对实测温度,报警温度上下限值进行显示。
液晶显示子程序流程图如图2.3所示。
图2.3 液晶显示子程序流程图
液晶显示子程序
void write_com(uchar com) //液晶写命令程序
{ // while(BusyTest()==1); //如果忙就等待
rs=0; //等0输入命令
rw=0;
en=0; //液晶使能信号初始化
P0=com; //把com参数,液晶的命令值送到P0口
en=1; //使能信号,0到1表示上升沿打开可以写命令数据到液晶里
delay(100); //延时,按照液晶的时序图的要求
en=0; //使能信号回复
delay(100);
}
void write_data(uchar date) //液晶写数据程序
{ // while(BusyTest()==1); //如果忙就等待
rs=1; //等1表示输入数据
rw=0;
en=0;
P0=date; //把date参数,液晶的数据送到P0口
en=1;
delay(100);
en=0;
delay(100);
}
void init() //液晶初始化程序
{ en=0;
write_com(0x38); //设置16X2显示,5X7点阵,8位数据口
write_com(0x0c); //设置开显示,不显示光标
write_com(0x06); //写一个字符后地址指针加1
write_com(0x01); //显示清0,数据指针清0
}
void writeString(uchar *str, uchar length)
{
uchar i;
for(i = 0; i < length; i++)
{
write_data(str[i]);
}
}
4.2 主控模块软件设计
主程序的功能是负责温度的实时显示、读出并处理DS18B20测量的当前温度值,温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度,其主程序流程图如图2.4所示。
图2.4 主程序流程图
//获取当前温度值
int getTmpValue()
{
unsigned int tmpvalue;
int value; //存放温度数值
float t;
unsigned char low, high;
sendReadCmd();
//连续读取两个字节数据
low = readByte();
high = readByte();
//将高低两个字节合成一个整形变量
//计算机中对于负数是利用补码来表示的
//若是负值, 读取出来的数值是用补码表示的, 可直接赋值给int型的value
tmpvalue = high;
tmpvalue <<= 8;
tmpvalue |= low;
value = tmpvalue;
//使用DS18B20的默认分辨率12位, 精确度为0.0625度, 即读回数据的最低位代表0.0625度
t = value * 0.0625;
//将它放大100倍, 使显示时可显示小数点后两位, 并对小数点后第三进行4舍5入
//如t=11.0625, 进行计数后, 得到value = 1106, 即11.06 度
//如t=-11.0625, 进行计数后, 得到value = -1106, 即-11.06 度
value = t * 100 + (value > 0 ? 0.5 : -0.5); //大于0加0.5, 小于0减0.5
return value;
}
4.3 温度采集软件设计
1. 读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。
2. 温度转换命令子程序主要是法温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换完成。温度转换命令子程序流程图如图2.5所示。
图2.5 子程序流程图
温度采集仪的子程序
//让DS18B20一段相对长时间低电平, 然后一段相对非常短时间高电平, 即可启动
void dsInit()
{
//对于11.0592MHz时钟, unsigned int型的i, 作一个i++操作的时间大于us
unsigned int i;
ds = 0;
i = 100; //拉低约800us, 符合协议要求的480us以上
while(i>0) i--;
ds = 1; //产生一个上升沿, 进入等待应答状态
i = 4;
while(i>0) i--;
}
void dsWait()
{
unsigned int i;
while(ds);
while(~ds); //检测到应答脉冲
i = 4;
while(i > 0) i--;
}
//向DS18B20读取一位数据
//读一位, 让DS18B20一小周期低电平, 然后两小周期高电平,
//之后DS18B20则会输出持续一段时间的一位数据
bit readBit()
{
unsigned int i;
bit b;
ds = 0;
i++; //延时约8us, 符合协议要求至少保持1us
ds = 1;
i++; i++; //延时约16us, 符合协议要求的至少延时15us以上
b = ds;
i = 8;
while(i>0) i--; //延时约64us, 符合读时隙不低于60us要求
return b;
}
//读取一字节数据, 通过调用readBit()来实现
unsigned char readByte()
{
unsigned int i;
unsigned char j, dat;
dat = 0;
for(i=0; i<8; i++)
{
j = readBit();
//最先读出的是最低位数据
dat = (j << 7) | (dat >> 1);
}
return dat;
}
//向DS18B20写入一字节数据
void writeByte(unsigned char dat)
{
unsigned int i;
unsigned char j;
bit b;
for(j = 0; j < 8; j++)
{
b = dat & 0x01;
dat >>= 1;
//写"1", 将DQ拉低15us后, 在15us~60us内将DQ拉高, 即完成写1
if(b)
{
ds = 0;
i++; i++; //拉低约16us, 符号要求15~60us内
ds = 1;
i = 8; while(i>0) i--; //延时约64us, 符合写时隙不低于60us要求
}
else //写"0", 将DQ拉低60us~120us
ds = 0;
i = 8; while(i>0) i--; //拉低约64us, 符号要求
ds = 1;
i++; i++; //整个写0时隙过程已经超过60us, 这里就不用像写1那样, 再延时64us了
}
}
//向DS18B20发送温度转换命令
void sendChangeCmd()
{
dsInit(); //初始化DS18B20, 无论什么命令, 首先都要发起初始化
dsWait(); //等待DS18B20应答
delay(1); //延时1ms, 因为DS18B20会拉低DQ 60~240us作为应答信号
writeByte(0xcc); //写入跳过序列号命令字 Skip Rom
writeByte(0x44); //写入温度转换命令字 Convert T
}
//向DS18B20发送读取数据命令
void sendReadCmd()
{
dsInit();
dsWait();
delay1(1);
writeByte(0xcc); //写入跳过序列号命令字 Skip Rom
writeByte(0xbe); //写入读取数据令字 Read Scratchpad
}
4.4 报警电路软件设计
报警电路软件主要实现的功能主要是对温度的上下限值可自由的进行设定,如实测温度不在此范围内,蜂鸣器就会发出响声。温度上下值范围初始状态为:10~20℃。
报警电路程序流程图如图2.6所示。
图2.6 报警电路程序流程图
报警电路程序
/*void warn(uint tempwarn)//温度报警程序
{ if(tempwarn<16) //返回的值是温度的值,如果温度小于16度就报警
{ Alam=0;
delay1(500);//蜂鸣器的声音响的时间
Alam=1;
delay1(500); //蜂鸣器的声音不响的时间
}
else if(tempwarn>24)//如果温度大于24度并且启动报警
{ Alam=0;
delay1(500);
Alam=1;
delay1(500);
}
} */
void main()
{
unsigned char i;
uchar table[] = "Now Temperature:";
uchar User[]=" C";//自定义字符℃
sendChangeCmd(); //启动温度转换
init(); //初始化LCD
write_com(0x80); //第一行
writeString(table, 16);
write_com(0xc0); //第二行
writeString(User, 1);
// warn(getTmpValue());
while(1)
{
sendChangeCmd(); //启动温度转换
//显示5次
for(i = 0; i < 40; i++)
{
write_com(0xc0);
display( getTmpValue());
}
}
}
第5章 系统软硬件调试结果分析
5.1 软硬件联调结果如表1-3所示
表1-3 测量结果统计表
测量次数
液晶显示结果
VB界面显示
报警情况
1
第一行:fact:23.63
第二行:down:16 up:24
23.63
未报警
2
第一行:fact:25.56
第二行:down:16 up:24
25.56
报警
3
第一行:fact:24.42
第二行:down:16 up:28
24.42
未报警
5.2 VB界面显示如图2.7所示
1.
当VB界面显示温度为23.63时
2.
当VB界面显示温度为25.56时
图2.7 PC机上显示的温度值
5.3 软硬件联调结果分析
本设计中所要求的温度采集的数据在液晶显示器1602第一行显示,第二行能显示温度上下限的范围,同时通过单片机控制的按键来改变温度上下限范围值。MAX232电路工作正常,单片机与PC机能正常实现串行通信并在VB程序编写的界面显示实时温度并且显示状态稳定。在设定的范围内判定是否报警,蜂鸣器会发出响声,告知现在所测温度不在其设定温度范围内,因此三个技术指标都能实现。
参考文献
[1] 张元良,王建军.智能仪表开发技术实例解析[M].北京:机械工业出版社,2009.
[2] 史健芳.智能仪表设计基础(第2版)[M].北京:电子工业出版社,2012.
[3] 徐爱钧,徐阳.智能化测量控制仪表原理与设计(第3版)[M].北京:北京航空航天大学出版社,2012.
[4] 马忠梅,籍顺心,张凯.单片机的C语言应用程序设计(第4版).北京:北京航天航空大学出版社,2007.
[5] 谭浩强.程序设计与开发技术.北京:清华大学出版社,1991.
致 谢
通过本次对数字温度仪的设计与制作,让我了解了设计电路的程序,也了解了关于数字温度仪的原理与设计理念,要设计一个电路首先要用仿真,仿真成功之后才能实际接线。但实际的和仿真的是有差别的,因为实际接线中会有各种条件限制,所以,设计时应考虑两者的差异,从中找出最合适的设计方法。通过此次综合训练,使我对之前所学的专业课程有了进一步的学习,并且加强了课程之间的联系。
此次训练更重要的意义就是增强了我们自己动手设计电路和编写程序的能力,这对即将进入工作阶段的我们尤为重要,在此次综合训练中我们小组每个人都认真对待完成分配给自己的实验项目,当遇到问题时首先组员积极讨论思考,发现问题,解决问题。如果遇解决不了的问题再请教指导老师,感谢指导老师认真的讲解使我们在此次综合训练中受益匪浅,掌握了常见问题的解决方法。遇到问题并不可怕,可怕的是不敢面对,我们要不怕失败,在不断的改进中和调试中收获更多知识。在不断的问题中总结自己在日常学习中的不足之处,在理论知识的基础上把自己的实践能力提高,做到学以致用。
附录A 硬件原理图
附录B 实物图
附录C 元器件清单
元件名称
规格
数目
杜邦线
30
导线
红
1
排针
单排方针
2
电解电容
10uF/25V
5
电解电容
10uF/50V
1
瓷片电容
30pF
2
电阻
1K
6
电阻
4.7K
1
温度传感器
DS18B20
1
发光二极管
红
4
单片机
STC89C52RC
1
晶体振荡器
11.0592MHz
1
排阻
10K(即103) 9脚
1
按钮
6*6*6四脚轻触按键开关
4
9针串口接口
DB-9
1
电平转换器
MAX232
1
三极管
9012
1
蜂鸣器
5V有源压电蜂鸣器
1
40脚底座
DIP40
1
16脚底座
DIP16
1
电位器
10K(即103)
1
展开阅读全文
淘文阁 - 分享文档赚钱的网站所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。