温度采集显示系统.doc
东 北 石 油 大 学课 程 设 计课 程 单片机原理及应用课程设计 题 目 温度采集显示系统 院 系 电子科学学院 专业班级 电信112班 学生姓名 魏孟德 学生学号 2 指导教师 2015年3月 9 日 东北石油大学课程设计任务书课程 单片机原理及应用课程设计题目 温度采集显示系统 专业班级 电信 11-2 姓名 魏孟德 学号 2一、设计目的:训练学生综合运用己学课程的基本知识,独立进行单片机应用技术开发工作,掌握单片机程序设计、调试,应用电路设计、分析及调试检测。二、设计要求:1. 应用MCS-51单片机设计一个温度采集显示系统;2. 以一定的时间间隔对8个温度通道进行巡回采集,温度检测范围为0+64摄氏度;并将检测的温度显示出来;3. 硬件设计根据设计的任务选定合适的单片机,根据控制对象设计接口电路。设计的单元电路必须有工作原理,器件的作用,分析和计算过程;4. 软件设计根据电路工作过程,画出软件流程图,根据流程图编写相应的程序,进行调试并打印程序清单;5. 原理图设计根据所确定的设计电路,利用Protel等有关工具软件绘制电路原理图、PCB板图、提供元器件清单。三、参考资料:1 单片微型计算机与接口技术,李群芳、黄建编著,电子工业出版社;2 单片机原理及应用,张毅刚编著,高等教育出版社;3 51系列单片机及C51程序设计,王建校,杨建国等编著,科学出版社;4 单片机原理及接口技术,李朝青编著,北京航空航天大学出版社;完成期限 2012.3.232012.5.27 指导教师 专业负责人 2015年 3 月 20 日第1章 概 述随着现代信息技术的飞速发展,温度测量显示系统在工业、农业及人们的日常生活扮演这一个越来越重要的角色,它对人们的生活具有很大的影响,所以温度采集显示系统的设计与研究有十分重要的意义。在实际生产、生活等各个领域中,温度是环境因素的不可或缺的一部分,对温度进行及时精确的控制和检测显得尤为重要。单片机具有处理能力强、运行速度快、功耗低等优点。应用在温度测量方面简单方便,测量范围广精度高,从而提高了生产效率。本次课程设计用AT89C51单片机做内核,选用电位器代替热敏电阻作为输入原件,利用ADC0809转换信号,送到显示器循环显示数值。并根据需要,设定了一定的报警值。在本次设计结束后,我们将得到一款能够同时检测显示八路温度的多点智能测温系统,当某一路或某几路温度值超过设定的上限值或者下限值时,报警电路中的蜂鸣器鸣响且提示闪亮,使操作者能够及时发现问题并控制温度回到额定温度范围内。该系统运行稳定,操作简便,应用灵活,能够在当代农业、工业、医疗以及日常生活中得到良好的应用。第二章温度采集显示系统总体方案设计1.1 温度采集显示系统方案论证1.1.1 单片机的选取采用AT89C51单片机为控制核心优点凸显,51系列微处理器基于简化的嵌入式控制系统结构,被广泛应用于从军事到自动控制再到PC机上的键盘上的各种应用系统上,仅次于Motorola 68HC11在8位微控制器市场上的销量,很多制造商都可提供51系列单片机,像Intel Philips Siemens等,这些制造商给51系列单片机加入了大量的性能和外部功能,像I2C总线接口,模拟量到数字量的转换,看门狗,PWM输出等,不少芯片的工作频率达到40M,工作电压下降到1.5V。综合考虑单片机的各部分资源,因此此次设计选用AT89C51单片机为核心处理器。1.1.2 温度传感器的选取传感器是信号输入通道的第一道环节,也是决定整个测试系统性能的关键环节之一。由于传感技术的发展非常迅速,各种各样的传感器应运而生,所以对传感器的正确选用显得尤为重要。而众多传感器对微机化测控系统有较大的影响。当今应用较多的传感器大致可以分为以下几种:1大信号输出传感器。为了与A/D输入要求相适应,传感器厂家设计制造一些专门与A/D相配套的大号输出传感器。通常是把放大电路与传感器做成一体,使传感器能直接输出05V、010V或02.5V要求的信号电压,把传感器与相应的变送器电路做成一体,构成能输出420mA直流标准信号的变送器。对于大电流输出,只要经过简单I/V转换即可变为打信号电压输出。对于大信号电压可以经A/D转换,也可以经V/F转换送入微机,但后者响应速度较慢。2集成传感器。集成传感器是将传感器与信号调理电路做成一体。例如,将应变片、应变电桥、线性化处理、电桥放大等做成一体,构成集成压力传感器。采用集成传感器可以减轻输入通道的信号调理任务,简化通道结构。3光纤传感器。这种传感器其信号拾取、变换、传输都是通过光导纤维实现的,避免了电路系统的电磁干扰。在信号输入通道中采用光纤传感器可以从根本上解决由现场通过传感器引入的干扰。4数字式传感器。数字式传感器一般都采用频率敏感效应器件构成,也可以是由敏感参数RLC构成的振荡器,或模拟电压输入经V/F转换等,因此,数字量传感器一般都是输出频率参量,具有测量精度高、抗干扰能力强,便于远距离传送等优点。此外,采用数字量传感器时,传感器输出如果满足TTL电平标准,则可直接接入计算机的I/O口或中断入口。如果测量目的是定性分析的,选用重复精度高的传感器即可,不宜选用绝对量值精度高的;如果是为了定量分析,必须获得精确的测量值,就需选用精度等级能满足要求的传感器。对某些特殊使用场合,无法选到合适的传感器,则需自行设计制造传感器。自制传感器的性能应满足使用要求。显而易见,数字式温度传感器在本设计中的应用优点突出,综合考虑以上选取注意事项,本设计采用DS18B20单总线数字式温度传感器对温度信号进行采集。1.1.3 显示器的选取显示系统是单片机控制系统的重要组成部分,主要用于显示各种参数的值,以便使现场工作人员能够及时掌握生产过程。工业控制系统中常用的显示器件有CRT、LED、LCD等,CRT不仅可以进行字符显示,而且可以进行画面显示,和计算机配合使用,可十分方便地实现生产过程的管理和监视,但由于CRT体积大,价格昂贵,所以只适用于大型微机控制系统。在中小型的控制过程中,为了使工作人员能够在现场直接看到生产情况和报警信号,经常选用LED和LCD作为显示器件。LED和LCD都具有体积小,功耗低,响应速度快,易于匹配,可靠性高和寿命高等优点。LCD是一种功耗极低的显示元件,在仪表和低功耗应用系统中的使用较多,而LED成本低廉,也用于单片机控制系统中。设计要求巡回采集温度,所以采用LED作为显示系统。从曲线中还可以看出,电池充满后,镍镉电池的电压下降幅度要比镍氢电池的大很多,镍氢电池的电压下降(负压)不是很明显。第二章 硬件电路设计2.1电路总体框架本设计的电路主要分为复位电路,采集电路、单片机、显示电路,温度传感电路组成,其功能模块连接如下图所示。 单片机复位电路采集电路数码管显示温度传感器图3.1 功能模块连接图2.2控制芯片AT89C2051简介本设计中,AT89C2051单片机是核心器件,它控制着电路各部分的工作,内部的精密比较器和定时器同时还是A/D转换电路的组成部分。电压数字量的运算比较、电路工作状态的判断与指示、快速充电放电与涓流充电的选择以及负压的检测等等都是在单片机控制下实现的。AT89C2051单片机的基本特点如下:AT89C2051是美国ATMEL公司生产的低电压,高性能CMOS 8位单片机,内含2k字节的可反复擦写的Flash只读程序存储器和128字节的随机存取数据存储器(RAM),其擦写周期约1000次。器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,内置通用8位中央处理器和Flash存储单元,功能强大。AT89C2051单片机的工作电压范围较宽,可在2.7V6V电压范围内工作。它的工作频率为0Hz24MHz,支持降至0Hz的静态逻辑操作,并支持两种可选的节电工作模式(低功耗空闲和掉电模式),空闲方式下停止CPU的工作,但允许RAM、定时/计数器、串行通信口及中断系统继续工作。掉电方式下保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。AT89C2051还具有两级加密程序存储器,使用者可以根据需要对程序进行加密,实现版权保护的目的。考虑到在单片机的很多应用中,需要使用发光二极管(LED)进行指示,AT89C2051的输出端口被设计成可直接驱动LED,可以省去外加的驱动电路,节省资源6。AT89C2051内部资源主要有:2k字节Flash闪速存储器,128字节内部RAM,15个I/O口线(其中P1是一个完整的8位双向I/O口),两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口(可编程串行UART通道),精密模拟比较器,片内振荡器以及时钟电路。AT89C2051引脚如图3.2所示。(RXD)P3.0(TXD)P3.1XTAL2RST/VPPXTAL1(INT0)P3.2(INT1)P3.3(T0)P3.4(T1)P3.5GNDVCCP1.7P1.6P1.5P1.4P1.3P1.2P1.1(AIN1)P1.0(AIN0)P3.71234567891011121314151617181920图3.2 AT89C2051引脚图AT89C2051I/O口功能说明:1P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。2P1口:P1口是一组8位双向I/0口,P1.2P1.7提供内部上拉电阻,由于P1.0和P1.1是内部精密比较器的同相输入端(AIN0)和反相输入端(AIN1),所以内部无上拉电阻,如果需要作为通用I/O口,应在外部接上拉电阻。Pl口输出缓冲器可灌入20mA电流并可直接驱动LED。当P1口引脚写入“1”时可作输入端,当引脚P1.2P1.7用作输入并被外部拉低时,它们因内部上拉电阻的作用而输出电流(IIL)。3P3口:P3口的P3.0P3.5、P3.7是带有内部上拉电阻的7个双向I/O口。P3.6没有引出管脚,它作为一个通用I/O口但不可访问,可作为片内比较器的输出信号,P3口缓冲器可吸收20mA电流。当P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。作输入端时,被外部拉低的P3口由于上拉电阻的存在而输出电流(IIL)。P3口还可以用于特殊的功能,如下表所示。表3-1 P3口引脚功能引脚功能特性P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2INT0)(),)(外中断0)P3.3INT1)(),)(外中断1)P3.4T0(定时器/计数器0外部输入)P3.5T1(定时器/计数器1外部输入)4ALE/:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲可用于锁存地址的低八位字节。即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对Flash存储器编程期间,该引脚还用于输入编程脉冲。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置置位后,只有一条MOVX和MOVC指令ALE才会被激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。5EA/VPP:外部访问允许。欲使CPU仅访问外部数据存储器(地址为0000HFFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编成,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。Flash存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件使用12V编程电压Vpp。6XTAL1:振荡器反相放大器及内部时钟发生器的输入端。7XTAL2:振荡器反相放大器的输出端。2.3温度采集模块设计DS18B20温度传感器是美国Dallas半导体公司生产的总线式智能数字温度传感器。DS18B20可根据实际要求通过简单的编程实现912位的分辨率数字值读数方式。其工作电源既可在远端引入,也可采用寄生电源方式产生。多个DS18B20可以并联到三根或者两根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。现场温度直接以单线的数字方式传输,大大提高了系统的抗干扰性,适合于恶劣环境的现场温度测量。DS18B20引脚排列及定义如图3.3所示。图3.3 DS18B20的TO-92封装DS18B20的三个引脚布局合理,结构简单,功能明确。DQ:数据输入输出;VCC:可选的电源电压脚;GND:接地。DS18B20内部主要由64位ROM、高温传感器、非易失性温度报警触发器TH和TL、高速缓存4个数据部分组成。64位ROM用于存储序列号。开始8位是产品类型编号。接着是每个器件唯一的序列号,共有6个字节48位,在出厂前已写入片内ROM中。最后8位是前面56位的CRC校验码。非易失性温度报警触发器TH和TL,可以由用户通过软件写入报警上下限值。高速缓存由9个字节组成。主机在进入操作程序前必须逐一读入DS18B20,用读ROM命令将该DS18B20序列号读出并登录该主机。需要对众多在线DS18B20的某一个进行操作时首先要发出匹配ROM命令,紧接着主机提供64位序列(包括该DS18B20的48位序列号)。DS18B20的存储器结构如表3.2所示。存储器由一个暂存RAM和一个存储高低位报警触发值TH和TL的非易失性电可擦除EERAM组成。当在单总线上通信时,暂存器帮助确保数据的完整性。数据先被写入暂存器,这里的数据可被读回。数据经过校验后,用一个拷贝暂存器命令把数据传到非易失性EERAM中。这一个过程确保更改存储器数据时的完整性。表3.2 存储器结构温度值低位字节LSB(50H)保留(FFH)温度值高位字节MSB(05H)保留TH用户字节1保留(10H)TH用户字节2CRC配置寄存器暂存器的结构为8个字节的存储器。头两个字节包含测得的温度信号。第3和第4字节的两个字节没有使用,但是在读回数据时,他们全部为逻辑1。还有一个第9字节,可以用读暂存器命令读出。这个字节是以上8个字节的CRC码。暂存器第5个字节是配置寄存器,用于确定温度值转换为数字值的分辨率。该配置寄存器字节各位的定义如表3.3所示。表3.3 配置寄存器各位的定义TMR1R011111TM是测试模式位。R0、R1决定温度转换的分辨率位数,其定义如表3.4所示。表3.4 DS18B20的分辨率R1R0分辨率温度最大转换时间009位93.75ms0110位187.5ms1011位375ms1112位750ms2.4系统流程图开始端口初始化数码管初始化设置显示格式设置通道模式图3.4 主程序流程图2.5主程序代码设计#include<reg52.h> #include<math.h>#include<INTRINS.H>#define uchar unsigned char#define uint unsigned int;sbit DQ0=P20;/ds18b20 端口1sbit DQ1=P21;/ds18b20 端口2sbit DQ2=P22;/ds18b20 端口3sbit DQ3=P23;/ds18b20 端口4sbit DQ4=P24;/ds18b20 端口5sbit DQ5=P25;/ds18b20 端口6sbit DQ6=P26;/ds18b20 端口7 sbit DQ7=P27;/ds18b20 端口8Uint ch=0,ms=0;uint temp;uchar flag_get,count,num,minute,second;uchar code tab=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98;uchar du=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;uchar menu=0;/uchar code tab=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;uchar str8;main()int i j;unsigned char TempH,TempL;P0=0xff; while(1) P1=0xff; switch (ch) case 0:temp=ReadTemperature0();break;case 1:temp=ReadTemperature1();break;case 2:temp=ReadTemperature2();break;case 3:temp=ReadTemperature3();break;case 4:temp=ReadTemperature4();break;case 5:temp=ReadTemperature5();break;case 6:temp=ReadTemperature6();break;case 7:temp=ReadTemperature7();break; TempH=temp>>4; TempL=temp&0x0F; TempL=TempL*6/10; /小数近似处理str0=0xc6; /显示C符号 str7=0xc6; /显示Cstr6=0x85; /显示Hstr5=tabch; /显示通道 str4=bf; /显示- str3=tab(TempH%100)/10; /十位温度str2=tab(TempH%100)%10&0x7f; /个位温度,带小数点str1=tabTempL; /显示格式 CHx-XX.XC for(i=0;i<8;i+) P1=0xff; P0=stri; P1=dui; delay(50); void itc_timer() interrupt 1 /控制定时时间为1s TH0=(65535-10000)/256; TL0=(65535-10000)%256; ms+; if(ms=5) ch+;ms=0;if(ch=8) ch=0; /5S换通道总 结经过系统调试,这个充电器工作正常,可对两节串联的镍镉镍氢充电电池进行快速充电。对单片机有了更深入的了解,更加熟练的掌握设计方案的提出,设计流程的规划以及各器件的硬件连和软件编程,并且能够更加熟练的操作Proteus仿真软件。本设计主要优点是利用单片机做主控芯片,电路功能容易扩展。它的硬件电路相对比较简单,因此成本并不算高。采用-V检测方法可以更加精确地对镍镉镍氢电池进行充电,效果比较理想。本设计需要改进之处有以下几个方面:第一,设计中用到了两个TL431,一个用作恒压源,另一个用作恒流源,考虑到它的成本等问题,可以只用一个TL431实现两者的不同功能。第二,本设计的A/D转换电路还可以进一步简化,用一个或两个普通的稳压管代替其中所用的TL431,这样虽然会使A/D转换的精度受到一些影响,不过这可在软件上得到补偿,另外充电器对A/D转换的精度要求也不是那么高。第三,本设计只能对两节串联电池进行充电,而且充电电路采用了5V电压供电,有很大一部分功率消耗在电阻上了,造成浪费。未来还会自己设计并试验,真正培养出科学的思维方式和灵活解决问题的能力,为以后实际工作奠定良好的基础。参考文献1 单片微型计算机与接口技术,李群芳、黄建编著,电子工业出版社;2 单片机原理及应用,张毅刚编著,高等教育出版社;3 51系列单片机及C51程序设计,王建校,杨建国等编著,科学出版社;4 单片机原理及接口技术,李朝青编著,北京航空航天大学出版社;5 IBM-PC汇编语言程序设计,沈美明、温冬婵,清华大学出版社;6 微机原理及接口技术,李顺增、吴国东、乔志伟,机械工业出版社;7 电子技术常用器件应用手册,陈汝全,机械工业出版社;8 单片机原理及接口技术,李朝青,北京航空航天大学出版社;9 单片机微型计算机及其应用,孙育才,东南大学出版社;10传感器原理及工程应用,郁有文、常健,西安电子科技大学出版社。附录1 系统电路图显示系统电路图采集系统和单片机最小系统附录2 主要源代码 void delay(uchar z) uchar x,y; for(x=10;x>0;x-)for(y=z;y>0;y-);void init_timer() TMOD=0x01; TH0=(65535-10000)/256; TL0=(65535-10000)%256; EA=1; ET0=1; TR0=1;void Init_DS18B20(void) unsigned char x=0;DQ0= 1; /DQ0复位 delay(8); /稍做延时 DQ0 = 0; /单片机将DQ0拉低 DQ0 = 1; /拉高总线 delay(10); x=DQ0; /稍做延时后 如果x=0则初始化成功 x=1则初始化失败 delay(5);/*/* 读一个字节 */*/unsigned char ReadOneChar(void)unsigned char i=0;unsigned char dat = 0;for (i=8;i>0;i-) DQ0 = 0; / 给脉冲信号 dat>>=1; DQ0 = 1; / 给脉冲信号 if(DQ0) dat|=0x80; delay(5); return(dat);/*/* 写一个字节 */*/void WriteOneChar(unsigned char dat) unsigned char i=0; for (i=8; i>0; i-) DQ0 = 0; DQ0 = dat&0x01; delay(5); DQ 0= 1; dat>>=1; delay(5);/*/* 读取温度 */*/unsigned int ReadTemperature0(void)unsigned char a=0;unsigned int b=0;unsigned int t=0;Init_DS18B20();WriteOneChar(0xCC); / 跳过读序号列号的操作WriteOneChar(0x44); / 启动温度转换delay(200);Init_DS18B20();WriteOneChar(0xCC); /跳过读序号列号的操作 WriteOneChar(0xBE); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度a=ReadOneChar(); /低位b=ReadOneChar(); /高位b<<=8;t=a+b;return(t);东北石油大学课程设计成绩评价表课程名称单片机原理及应用课程设计题目名称温度采集显示系统学生姓名学号指导教师姓名职称序号评价项目指 标满分评分1工作量、工作态度和出勤率按期圆满的完成了规定的任务,难易程度和工作量符合教学要求,工作努力,遵守纪律,出勤率高,工作作风严谨,善于与他人合作。202课程设计质量课程设计选题合理,计算过程简练准确,分析问题思路清晰,结构严谨,文理通顺,撰写规范,图表完备正确。453创新工作中有创新意识,对前人工作有一些改进或有一定应用价值。54答辩能正确回答指导教师所提出的问题。30总分评语:指导教师: 年 月 日