《智能温度计的设计.doc》由会员分享,可在线阅读,更多相关《智能温度计的设计.doc(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、引言随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用。1. 方案论证1.1方案一由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据
2、的处理,在显示电路上,就可以将被测温度显示出来。1.2方案二进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。1.3最终方案的选择 可以发现方案一虽然比较复杂但成本便宜,编译简单。2.方案总体设计与论证智能温度计的基本组成方框如图1所示。主要由温度传感器(温敏二极管),信号调理电路,A/D转换器(A/D574),单片机(80C51),8279键盘输入,LED显示器以及74164,发光二极管(指示工作状态)等组成。温度传感器热敏二极管是把温度转换成
3、电压的器件,温度传感器输出电压的大小随温度的高低变化而变化,热敏二极管在0100温度变化范围内,电压值的变化范围从1个毫伏到200个毫伏。信号调理电路的主要功能是把微弱的温度电压信号放大到(02.44)伏的范围内,以适应AD574单极性输入的要求。A/D转换器把放大后的模拟电压信号转换成对应的数字信号。单片机8051是智能温度计的核心部分,一方面控制A/D转换器实现模拟信号到数字信号的转换,另一方面将采集到温度的数字信号,经过计算处理,得到相应的温度值的BCD码,送到74164,由它驱动LED数码管显示器以数字形式显示测量的温度。通过键盘输入要报警的温度上限值,由单片机检测哪一位设定的键盘被按
4、下,单片机可以直接将该位寄存器中的内容自动加一,即可实现相应值的设定。通过缓冲器可以预留出微型打印机的接口和单片机与其他设备的通信接口,由相关的键盘控制打印机与单片机是否连接,并且由相应的键盘控制单片机否是把数据送74164进行显示还是把数据发送至数据端口,与其他设备进行通信。温敏二极管信号调理电路A/D转换器单片机工作状态指示打印接口74164键盘LED显示图1 系统框图由上图可知系统硬件基本上由传感器信号调理模块,A/D模块,键盘模块,显示模块,工作状态指示模块,以及接口模块组成。而软件设计是紧紧围绕系统的硬件结构展开的,软件主要是配合控制硬件完成预期的设计要求,软件的基本模块也是针对上述
5、硬件结构进行相应操作的。下面具体阐述系统各功能模块的设计。3 硬件电路设计3.1 传感器调理电路模块测温传感器选用热敏二极管传感器。这种传感器是利用半导体的温度特性来实现对温度的检测功能。硅二极管的结电压在温度每升高1时,电压下降2mV,它属于PN结型温度传感器,它在0100温度范围内表现出良好的线性,尺寸小,热时间常数为0.22s,灵敏度高,测温范围是-50150。信号调理电路中包括电桥和放大部分。将测温二极管放入电桥的一个桥臂,可直接输出传感器相对0时的电压输出,再将桥路输出送给AD620的差分输入端,进行50倍的放大,在经过OP07组成的100倍的反相放大电路,使得传感器感受0100的温
6、度时,信号调理电路对应输出02.44V的电压值,这个电压值正好是AD574的010V单端输入电压的范围。图2 传感器调理电路模块图图2是传感器调理电路图。该电路的分分辨率为0.1,在0100范围内精度可达到0.5。该电路的调节,先将传感器放入冰水混合物中,调节W1是调理电路的输出为0;再将传感器放入沸水中,调节W2使调理电路的输出为2.44V。2.44V正好对应AD574输出为999的输入电压(单极性10V输入),这样实现了AD574的输出,正好为外界温度的情况。这样就实现了这样就实现了对温度的有效测量信号的拾获和放大。3.2 A/D转换模块设计AD574是12 位逐次逼近型的 A/D 转换芯
7、片。转换时间为 25 35s。片内有数据输出寄存器,并有三态输出的控制逻辑。其运行方式灵活,可进行 12 位转换,也可作 8 位转换;转换结果可直接 12 位输出,也可先输出高 8 位,后输出低 4 位。可直接与 8 位或 16 位的 CPU 接口。输入可设置为单极性,也可设成双极性。片内有时钟电路,无需外部时钟。图3 A/D转换模块图图3是AD574与单片机接口电路以,它分两次将单极性电压的12位转换结果送给单片机。具体先由单片机发出控制信号,使A/D转换器启动转换,等待转换结束,单片机再分两次将转换数据读到内存中。按上图接法AD574是单极性输入,接成0+10V的接法,按上图向FF7C写数
8、据,就启动AD574转换器开始转换,检测P1.0口即可查看AD574是否转换结束,从FF7D端口即可读出转换结果的高八位,从FF7F端口中即可读出转换结果的低四位。3.3 显示模块设计利用串口和74164驱动LED显示器工作,采用静态显示方式。这种方式可避免采用并行I/O接口占用资源较多的缺点。采用共阳极数码管,因而各位的COM接口接+5V电源,若要显示某字段,则相应的移位寄存器74164输出必须为低电平,由于74164在低电平输出时,允许通过的电流为8mA左右,故不用再加驱动电路了,只需向串口发送要显示三位数的显示控制代码(段码),即可在LED显示器上显示出所要的字符,只需将各位的小数点控制
9、位接低电平,使其显示,其他位的小数点控制位均接高电平即可,注意加限流电阻。如图4所示。图4 显示模块原理图3.4 键盘模块设计因为本设计中需要的按键不多,故设计采用独立式按键,分别占用P1.4,P1.5,P1.6和P1.7口。它们分别实现选择是正常运行还是设置模式的功能键,温度上限十位的设置键,温度上限个位的设置键以及温度上限的十分位的设置键。键盘的防抖动可有软件来实现,每个引脚上都引入上拉电阻。原理如图5所示。图5 键盘模块原理图3.5 状态指示与接口模块设计当测量温度达到了上限温度时,P2.0口输出高电平,驱动报警二极管发光,指示温度已经超过上限值,当温度下降到设定值以下是,P2.0变成低
10、电平,报警解除。当按下打印摁键时,单片机响应外部中断0,进而要打印的数码发送至打印机的数据口,进行打印。打印时,需要先将要打印的字符转换为其ASCII码,将此ASCII送入打印机数据口进行打印。需要注意要将小数点也打印出来,打印完十位和个位再将小数点打印出来,再把十分位进行打印。而扩展接口采用简单的三线式接口,一线为接收数据,一线为发送数据,还有一线为查询状态。由P2.6控制其导通,还是高阻的状态。原理如图6和7所示。图6 打印接口原理图图7 扩展口及工作状态原理图3.6 硬件电路总体设计将上述功能模块合理有序连接即构成整体图,电路图参见图8。图8 硬件电路总体设计原理图4.软件设计4.1主程
11、序设计 主程序流程图如下图9。开始在LED上显示8和全关做自检初始值设上限为50.0显示缓存清零打开外部中断 设置触发方式设置定时器0的工作方式代开外部中断0和定时器T1中断等待外部中断0和定时器T1中断图9 主程序流程图4.2 定时中断服务程序设计定时中断服务程序流程图如下图10。关定时中断重置定时器初值设置状态?调用显示温度调用显示温度调用显示测量调用设置键处理子程序开中断,中断返回图10 定时中断服务程序流程图4.3 外部中断0服务程序设计 外部中断0程序流程图如下图11。关外部中断0依次打印十位个位打印小数点打印十分位开外部中断0,中断返回图11 外部中断0服务程序流程图4.4 设置键
12、处理程序设计设置键处理子程序流程图如下12。开始十分位延时十分位个位?延迟个位?个位?延迟个位?值满9值满9值满9清零加1图12 设置键处理子程序流程图5.课程设计体会 经过将近两周的单片机课程设计,终于完成了我的数字温度计的设计,虽然没有完全达到设计要求,但从心底里说,还是高兴的,毕竟这次设计把实物都做了出来,高兴之余不得不深思呀!在本次设计的过程中,我发现很多的问题,虽然以前还做过这样的设计但这次设计真的让我长进了很多,单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法,虽然以前写过几次程序,但我觉的写好一个程序并不是一件简单的事,举个例子,以前写的那几次,数据加减时,我用的都
13、是BCD码,这一次,我全部用的都是16进制的数直接加减,显示处理时在用除法去删分,感觉效果比较好,有好多的东西,只有我们去试着做了,才能真正的掌握,只学习理论有些东西是很难理解的,更谈不上掌握。从这次的课程设计中,我真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。参考文献1 石晓晶 智能仪器设计讲义,南京: 南京理工大学机械学院, 2009 2 石晓晶 智能仪器设计实验指导书,南京: 南京理工大学机械学院, 2009 3 张迎新 单片机初级教程,北京: 北京航空
14、航天大学出版社, 20064 周杏鹏 仇国富 现代检测技术,北京: 高等教育出版社, 20035 朱蕴璞 孔德仁 传感器原理及应用,北京: 国防工业出版社, 20056 周 严 测控系统电子技术,北京: 科学出版社, 20077 赵新民 智能仪器设计基础,哈尔滨: 哈尔滨工业大学出版社, 20098 张国雄 测控电路,北京: 机械工业出版社, 20089 寇 戈 蒋立平 模拟电路与数字电路,北京: 电子工业出版社, 2006附录 程序清单:Org 0000H ;主程序入口地址KS: LJMP START ORG 0003H ;外部中断0服务程序入口地址LJMP INT_0 ORG 000BH
15、;定时器0中断服务程序入口地址LJMP INT_T0 ORG 100H TAB1: ;字符段码表格DB 0C0H,0F9H,0A4H,0B0H,99H DB 92H,82H,0F8H,80H,90H,88H DB 83H, 0C6H, 0A1H, 86H, 0FFH START: MOV SP,#60H CLR EAMOV R0,#3EH ;运行/设置状态寄存器清零MOV R0,#0H DEC R0 MOV R0,#0H DEC R0 MOV R0,#0H MOV R0,#20H ;20H-22H放初始温度设置上限值50.0MOV R,#05H INC R0 MOV R0,#0H INC R0
16、 MOV R0,#00H SETB P1.4 ;设置P1.4P1.7为输入端口SETB P1.5 SETB P1.6 SETB P1.7 MOV R2,#03H ;在LED上显示888DL0: MOV A,#80H ;把字符“8”的段码送给累加器AMOV SBUF,A ;累加器A循环三次把段码发送到串口,显示DL1: JNB TI,DL1 CLR TI DJNZ R2 ,DLO LCALL DELAY ;延时MOV R2,#03H ;关断所有LEDDL0: MOV A,#80H ;把关断的段码送给累加器AMOV SBUF,A ;累加器A循环三次把段码发送到串口,关断LEDDL1: JNB TI
17、,DL1 CLR TI DJNZ R2 ,DLO ;以上完成了自检MOV THOD,#21H ;设置定时器工作方式MOV TL0,#77H ;设置定时器初值MOV THO,#OECH SETB TRO ;开定时器中断SETB ETO SETB IT ;开外部中断0SETB EX0 SETB EA ;开总中断STA0: LJMP STA0 ;等待中断;*STA2 : LCALL COMP LCALL CL0 LCALL ZH0 STA3: LCALL SET0 JNB F0,STA4 LCALL CHENG STA4 : RET;*CHENG:JB P1.7,CHE1 LCALL DELAY2
18、JB P1.7,CHE1 MOV RO,#22H CJNE R0,#09H,CHE4MOV R0,#0HAJMP CHE5 CHE1: JB P1.6,CH2 LCALL DELAY2 JB P1.6,CHE2 MOV R0,#21H CJNE R0,#09,CHE4MOV RO,#OH AJMP CHE5CHE2: JB P1.5,CHE5 LCALL DELAY2 JB P1.5,CHE5 MOV R0,#20H CJNE R0,#09H, CHE4 MOV R0,#0H AJMP CHE5CHE4 : INC RO AJMP CHE5 CHE5: MOV R0,#3DH MOV R0,#
19、55H MOV R0,#3EH MOV R0,#0H RET ;*SET0 : JNB P1.4, SET1 LCALL DELAY0 JNB P1.4,SET1 SETB F0 RET SET1: CLR F0 MOV R0,#3DH MOV R0,#0H MOV R0,#3EH MOV R0,#55H RET;*INT_T0: CLR EA ;关中断 CLR TR0 MOV TL0, #77H ;重置定时器初值MOV TH0, #0E0H MOV R0, #3DH CJNE R0, 55H, INT_T01 LCALL DISP2 MOV R6, #20H LCALL DELAY LCAL
20、L STA3 LJMP INT_T04INT_T01: MOV R0, #3EH LCALL DISP1 MOV R6, #40H LCALL DELAY LJMP INT_T03INT_T02 : LCALL DISP0 MOV R6, #20H LCALL DELAY CJNE R2, #3CH, INT_T04 MOV R0, #3CH MOV R0, #55H INT_T03 : LCALL STA2 INT_T04 : SETB TR0 SETB ET0 SETB EA RETI;*CL0: MOV R0, #40H CLR A CLR C MOV R0, AINC R0 MOV R
21、0, AMOV R0, #40H CLR P3.7 CLR P3.6 MOV DPTR, #FF7CH MOV A, #0H MOVX DPTR,A HD: JB P1.0, HD MOV DPTR, #0FF7DH MOVX A, DPTR MOV R7, A MOV DPTR, #0FF7FH MOVX A, DPTR ANL A, #0F0H MOV R6, A SWAP A MOV R6, A MOV A, R7 SWAP A MOV R7, A ANL A, #F0H ANL A, R6 ;低八位 MOV R6, A MOV A, R7 ANL A, #0FH ;高八位(最高四位为0
22、) MOV R7, AMOV A, R6MOV R0,40HMOV A, R6MOV R0, AINC R0 MOV A, R7MOV R0, ACLR C LCALL BIJIAOCL3: JB F1 CL4 CLR P2.0 AJMP CL2 CL4: SETB P2.0 AJMP CL2CL2: RET BIJIAO:CLR C CLR F1 MOV A,5BH SUBB A,41H JC BIG1 CLR C MOV A,5AH SUBB A,40H JC BIG1 CLR F1 RETBIG1: SET F1 RET;*COMP : MOV R0,#20H MOV A ,R0 MOV
23、 B ,#64H MUL AB MOV RO,#5AH MOV R0,A INC R0 MOV R0,B MOV A,21H MOV B,#0AH MUL AB CLR C ADD A,5AH MOV 5AH,A MOV A, #0H ADDC A,5BH MOV 5BH,A CLR C MOV A,22H ADD A,5AH MOV 5AH,A MOV A, #0H ADDC A,5BH MOV 5BH,AZH0: CLR A MOV R7,40H MOV R6,41HMOV R3,A MOV R4,A MOV R5,A MOV R2,#10H HB3: MOV A,R7 RLC A MOV
24、 R7,A MOV A,R6 RLC A MOV R6,A MOV A,R5 ADDC A,R5 DA A MOV R5,A MOV A,R4 ADDC A,R4 DA A MOV R4,A MOV A,R3 ADDC A,R3 MOV R3,A DJNZ R2,HB3 MOV A,R5ANL A,#0FHMOV 6AH,AMOV A,R5ANL A,#F0HSWAP AMOV 6BH,AMOV A,R4ANL A,#0FHMOV 6CH,ARET;*DISP1:SETB RS0 PUSH ACC PUSH DPH PUSH DPL MOV R2,#03H MOV R0,#6AH;(若显示设置
25、值则上一条语句改为MOV R0,#22H)DL0: MOV A, R0 MOV DPTR, #TAB1 MOVC A, A +DPTR MOV SBUF,A DL1: JNB TI,DLI CLR TI INC RO ;(若显示设置值则此处改为DEC R0) DJNZ R2 ,DLO CLR RS0 POP DPL POP DPH POP ACC RET;*INT_0: CLR EX0 MOV DPTR ,#7FFFH LOOP:MOVX A, DPTR JB ACC.7, LOOP MOV R1,#60H MOV A, R1 ADD A, #30H MOVX DPTR, A INC R1 M
26、OV A, R1 ADD A, #30H MOVX DPTR, A INC R1 MOV A, #27H MOVX DPTR, A MOV A, R1 ADD A, #30H MOVX DPTR, A SETB EX0 RETI;*DISP2:SETB RS0 PUSH ACC PUSH DPH PUSH DPL MOV R2,#03H MOV R0,#22H;DL0: MOV A, R0 MOV DPTR, #TAB1 MOVC A, A +DPTR MOV SBUF,A DL1: JNB TI,DLI CLR TI DEC RO DJNZ R2 ,DLO CLR RS0 POP DPL POP DPH POP ACC RET;*DELAY0 : MOV R7,#80H DJNZ R7, $ RET DELAY2:MOV R6,#5 0H DELAY20:LCALL DELAY0 DJNZ R6,DELAY20 RET DELAY: PUSH 06H DELAY6 : PUSH 06H DELAY5 : PUSH 06H DELAY4: DJNZ R6,DELAY4 POP 06H DJNZ R6,DELAY5 P0P 06H DJNZ R6,DELAY6 POP 06H DJNZ R6 , DELAY RETEND