单片机智能体温计课程设计_第1页
单片机智能体温计课程设计_第2页
单片机智能体温计课程设计_第3页
单片机智能体温计课程设计_第4页
单片机智能体温计课程设计_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

1、”槪注评紀犬曝ZHEJIANG NORMAL UNIVERSITY数理与信息工程学院单片机原理及应用期末课程设计题 目智能体温计专 业:电子信息工程班 级:电信061姓 名:学 号:指导老师:成 绩:(2008.12 )目录第1节引言 31.1智能体温计概述31.2 本次设计要求 41.3系统主要功能 4第2节系统主要硬件电路设计 52.1 主要模块的设计方案论证 52.1.1 温度传感器的选择 52.1.2 A/D 转换器的选择 52.1.3 语音提示模块 52.2总系统设计方案 62.2.1 系统设计框图 62.2.2 系统整体硬件电路 62.3系统硬件组成 82. 3. 1电源电路模块

2、82. 3.2温度检测和放大模块 82. 3.3A/D转换模块 92.3. 4温度设置、显示及报警电路模块 102. 3.5串行通信模块 102. 3.6语音播放模块11第3节系统软件设计 133.1 系统主程序设计 133.2 程序清单 14第4节结束语 24参考文献 25智能体温计数理与信息工程学院 06 电子信息工程 陶如红指导教师:余水宝第1节引 言随着人们生活水平的不断提高 , 单片机控制无疑是人们追求的目标之一,它在日 用电子产品中的应用越来越广泛, 给人带来的方便也是不可否定的, 其中智能体温计 就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、 提供更好

3、的更方便的设施就需要从单片机技术入手, 一切向着数字化控制, 智能化控 制方向发展。传统的温度计有反应速度慢、读数麻烦、测量精度不高、误差大等缺点,温度传 感器AD590具有线性优良、性能稳定、灵敏度高、抗干扰能力强、使用方便等优点, 广泛应用于冰箱、 空调器、粮仓等日常生活中温度的测量和控制。 本论文利用集成温 度传感器AD590设计并制作了一款基于AT89S52的 3位数码管显示的智能体温计,其 电路简单,软硬件结构模块化,易于实现。1.1 智能体温计概述随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领 域,已经成为一种比较成熟的技术 , 本文将介绍一种基于单片机控制

4、的智能体温。本智能体温计采用 AT89S52 作为核心器件实现对系统的自动控制,采用双单片 机串行处理结构。外界温度经 AD590 集成温度传感器采集,温度变化转换为线性电 压信号,再经由 OP07 构成高精度低温漂的放大电路处理后,作为 ADC0809 的模拟 输入信号,由 ADC0809完成A / D转换,得到8位的数字信号送入单片机1(AT89S52。单片机1将采集到温度值在LED数码管上显示出来, 也通过串口通 信将温度信号传到单片 2(AT89S52) 。此外温度预置, 报警电路模块功能也由单片机 1 完成。 单片机 2 完成温度值的语音播放功能。 通过系统的设计与实现说明本 设计方

5、案切实可以, 能够完成题目所要求的基本功能部分, 并留有相应的接口, 为完 成扩展功能打下基础。1.2 本次设计要求 单片机在日用电子产品中的应用越来越广泛, 温度则是人们日常生活中常常需要 测量和控制的一个量。本论文通过AT89S52单片机和温度传感器AD590从硬件和软件 两方面进行了设计。本次设计的设计要求:(1) 基本范围0C -50 C;(2) 精度误差小于0.1 C;(3) LED数码直读显示;扩展功能:( 1 )实现语音报温功能;( 2)实现报警功能;1.3 系统主要功能本设计完成了以下功能:(1) 温度信号的采集与归一化处理;(2) A/D 转换;(3) 温度值的显示,显示的误

6、差与实际的温度值误差在 0.1 C 内;( 4)语音播报温度与声音报警功能。第2节系统主要硬件电路设计2.1 主要模块的设计方案论证2.1.1 温度传感器的选择方案一 :采用热敏电阻。热敏电阻价格便宜,对温度灵敏,原理简单,但线性度 不好,如不进行线性补偿,对于本设计归一化输出的要求,难以达到设计精度;如要 对非线性进行补偿,则电路结构复杂,难以调整。故不采用。方案二 :采用热电偶。热电偶在测温范围内热电性质稳定, 不随时间变化而变化, 电阻温度系数小,导电率高,比热小,但热电偶一般体积较大,使用不方便,价格相 对较高。作为一个智能体温计的温度传感器,要求体积小,使用方便,便于携带,故 此方案

7、不合适。方案三 :采用集成温度传感器。集成温度传感器一般且有具有线性好、精度高、 灵敏度高、体积小、使用方便等优点。根据实验室现有材料可选取AD590。AD590的测温范围为-55 C+150C,能满足本设计的050度测量要求。根据相关技术资料: AD590线性电流输出为1卩A/K,正比于绝对温度;AD590的电源电压范围为4V 30V,并可承受44V正向电压和20V反向电压,因而器件反接也不会被损坏。 该方案 能完全满足此设计的要求,故采用此方案。2.1.2 A D 转换器的选择方案一:选用 AD574。 AD574 的数字量位数可设成 8 位也可以设为 12 位,且 无需外接CLOCK寸钟

8、,转换时间达到25卩s,输出模拟电压可以是单极性的0 10V 或0 20V,也可以是双极性的土 5V或土 10V之间。AD574精度高,但与8位的单片 机接口较复杂, 且价格昂贵,考虑到体温计是对温度的测量, 其响应时间的要求不高。 故不选用此方案。方案二:选用ICL7135。这类芯片比较适合于低速测量仪器,适用于精度高,速 度要求不高的系统设计中。ICL7135的输出为动态扫描BCD码,与单片机的接口较 复杂。且它的满量程输入为 2V 电压,如在本设计中使用要进行衰减,较难保证转换 精度。方案三:选用ADC0809 ADC0809数字量是8位,转换时间为100卩s,输入模 拟电压为单极性的0

9、 5V。由于本设计的要求精度不是很高,ADC0809可以达到要求, 故选用此方案。2.1.3 语音提示模块方案一:通过A/D转换器、单片机,存储器,DA转换器实现声音信号的采样、 处理、存储和实现。首先将声音信号放大,通过AD转换器采样将语音模拟信号转换成数字信号,并由单片机和处理存放到存储器中,实现录音操作。在录、放音过程中 由单片机控制 D/A 转换器,将存储器中的数据转化成声音信号。此方案安装调试复 杂,集成度低。方案二:采用ISD2560语音录放集成电路。该芯片采用多电平直接模拟量存储专利技术,每个采样值可直接存储在片内单个EEPROM单元中,因此能够非常真实、自然地再现语音、音乐、音

10、调和效果声。此外,ISD2560还省去了 A/D和D/A转换 器。其集成度较高,内部包括前置放大器、内部时钟、定时器、采样时钟、滤波器、 自动增益控制、逻辑控制、模拟收发器、解码器和480K 字节的EEPROM ISD2560可不分段,也可按最小段长为单位来任意组合分段。因此,选择方案二。2. 2总系统设计方案2.2.1系统设计框图根据设计要求,可将系统分为若干模块,以单片机为核心,完成多项功能。图2-1系统框图系统框图如图2- 1, AD590把采集的外部温度信号转换成相应的电压,再经过 OP07 运放放大后作为ADC0809的模拟输入信号,ADC0809将此模拟信号转换成数字信号, 通过并

11、口送入到单片机1。单片机1把这些信号处理后通过LED数码管显示出来。 同时单片机1还处理按键、报警模块。单片机1把温度值通过串行通信传送给单片 机2,控制语音芯片报出相对应的温度值。2.2.2系统整体硬件电路如图2-2所示,该电路主要由电源电路,温度检测、放大电路,A/D转换电路, 双单片机串行通信电路,按键输入、报警电路,数码管扫描显示电路以及语音芯片电 路组成。图2-2系统电路原理图2.3系统硬件组成2.3.1电源电路模块图2-3电源电压电路如图2-3所示,220V交流电经变压器市降压、桥式整流、电容滤波后经7812、7805、7905三端集成稳压管分别得到+ 12V、+5V、-5V电压,

12、给整个电路供电。2.3.2温度检测、放大模块图2-4 AD590 温度检测、放大电路图如图2-4所示,温度检测、放大电路主要器件的作用:OP1 OP2:电压跟随器;OP3差分放大电路;AD590温度传感器;SVR零位调整。(1) AD590 简介AD590是电流输出型的半导体温度感测组件,主要特性如下:1. 具有线性输出电流。2. 宽广的操作温度范围(-55 C 150C )。3. 宽广的工作电压范围(+4V+30V)。4. 良好的隔离性。AD590的包装与等效电路如图4所示,是TO-52型金属外壳包装。他是两端子 的半导体温度感测组件,另有一端子是外壳接脚,可接地以减少噪声干扰。AD590如

13、同一个随温度而改变输出电流的定电流源,输出电流与外壳的开氏 (K) 温度成正比。开氏温度与摄氏温度的单位相等,0C等于273.2K , 100C等于373.2K。 当温度为0 C时,AD590的输出电流是273.2卩A。而温度为100 C时,输出电流是 373.2卩A。温度每升高1 C,输出电流增加1卩A,其温度系数为1卩A/C。(2) 温度检测、放大电路原理AD590的温度系数为1卩A/C。所以在T( C)时的电流I1(T)为l1(T)=l1(0)+1 卩 A/C*T(2-1)而温度每变化1 C时,V2的电压变化是为1卩A/ C *10K=10mV/C,即温度每增加1C,V2会增加10mV,

14、在0 C时V2就已经有电压存在,其值为V2(0)=273.2 卩 A *10K?=2.732V(2-2)则T C时V2 (T) =V2 (0) +10mV/C *T(2-3)如图2-3所示,OP3组成差动放大器,电压增益为R2/R1=100K/20K=5(2-4)零位调整SVR1则用于抵补0 C的电压值,由差动放大器的公式V0=R2/R1*(V2-V1)(2-5)可得知,若调整SVR1使V1的电压为2.732V,则0 C时,差动放大器的输出VO为0V。 也就是说,若温度是在0 C至50C之间,则差动放大器的输出电压是在 0V至5V之 间,亦即每0.1V的输出代表温度上升1 C。与设计要求相符合

15、。2.3.3 A/D 转换模块如图2-6 : ADC0809把从放大电路传送过来的模拟信号转变成数字信号,并行传送给单片机的P0 口,让单片机处理。HIFK PH PI2 PI3 PMF15FKPI7vrcTlTOPHBPTdIHEPtI5PDiP -fptrP3D P2! P23 pa |*女P2Kifcaisu JtS IMC赳l; lI Ai-M ASMS aJ-BASUCJ4TUXIX2aNaM.TA&tn.二二匸D q_?pNH0REfTRD WRATWS5Z图2-9录音、放音电路图(1)录音、放音简介如图2-9所示,首先通过麦克风向语音ISD256录入“0,1,2,3,4,5,6,

16、7,8,9,10,点,度”等音符。当单片机2接收到单片机串行发送过来的温度值时,就会自动地 去寻找相对应音符的地址,并把这些音符通过扬声器播放出来。(2)硬件电路设计ISD器件选用录音时间为60s的ISD2560器件,以单片机为处理机,外接控制 每个语音段录音开始与停止按键,外部存储器EEPROM用于保存每个语音首地址。ISD 的外围电路及其与单片机连接的硬件电路如图 2-9所示。ISD2560与AT89S52的接口部分包含输入地址线 A0A9片选CE (CE=0选中 ISD芯片)、芯片低功耗状态控制PD、录放音控制选择P/R ( P/R=0为录音;P/R=1为 放音)、录放音结束信号输出EO

17、M,将它作为AT89S51外部中断0的输入信号,放音 时通过它告知本语音段结束,便于单片机立即播放另一个语音段。ISD2560引脚封装如图2-10所示.AIJMD 匚12B=|VCCDAIM匚227op/h羁M2匚326nxcutA3/M3CZ425=IRSflAWL匚524zipsA5M匚6=ia购幽匚?an OVFA7C&21 ANA ourM匸920二1 ANA制A9匚1014nAscAUXIN 匚11iaZIMCREFvsson1217TIMC畑匚131AZIVbCASF+匚14uZI5P-图2-10ISD2560 管脚图(3) 本方法的特点能进行在系统现场录音,随录随放,修改语音方便

18、。修改录音内容时,可以从其中任意一段开始,修改其后的所有录音内容,不必从 第一段开始全部修改。这对一些需要厂家固定一些语音段的系统很有好处,将固定的 语音段放置在前面的段落中,允许用户录制的放在后面, 用户修改录音内容时只需修改后面的语音段即可,不影响厂家录制的语音。 分段灵活。单片ISD2560可分1 600个段,若多片级联还可更多;各个录音段的长度任意,只要总录音时间在所用器 件的总时间之内即可。第3节系统的软件设计BCD码转换、串行发 秒钟就启动A/D转换、3. 1系统程序流程如图3-1 :单片机1为主机,负责温度显示、按键扫描、 送数据给单片机2。以定时器定时1ms,每定时100次即1

19、 BCD码转换,串行发送2进制数给单片机2。图3-1 单片机1程序主流程图如图3-2 , 3-3所示:单片机2为从机,只负责接收数据并播报温度,以TO定 时器定时,结合延时程序定时1分钟,使每1分钟更新一次语音音素地址, 即每1 分钟更新一次温度值,并在中断程序处理过程度中报一次温度。串口中断I入口 J更新温度数据返回图3-2 单片机2程序主流程图图3-33. 2程序清单单片机1程序#in elude #in elude #i nclude vintrin s.h #define uchar un sig ned char#define uint un sig ned intuchar cod

20、e dis_code10=0xc0,0xf9,0xa4,0xb0,/ 0, 1,2, 30x99,0x92,0x82,0xf8,0x80,0x90; uchar data set_data3=0x00,0x07,0x03; uchar data ad_data;/ADuchar data dis_buf3=0x00,0x00,0x00; uchar data bcd_buf3=0x00,0x00,0x00; uchar data TIMER0 NUM;/ 4, 5, 6, 7, 8, 9, off/预设37.0度转换结果/显示缓冲区/十进制BCD码转换存放bit TIMER0_flag;bit

21、 data set_flag=0;sbit ALE=P2A4;sbit OE=P2A5;sbit START=P2A6;sbit EOC=P2A7;sbit P30=P3A0;sbit select0=P3A7;sbit select1=P3A6;sbit select2=P3A5;sbit K1=P2A0;sbit K2=P2A1;sbit K3=P2A2;sbit K4=P2A3;sbit bep=P3A3;小数点sbit SET_IND=P3A4;sbit P17=P1A7;/uint data temp;/*/* 函数声明void delay1ms(uchar t);void adc(

22、void);void BCD(void);void keyscan(void);void send_str(void);void beep(void);void display(void);/* /* 按键蜂鸣函数void beep2(void) uchar data j,k;for(j=26;j0;j-)for(k=254;k0;k-); bep=!bep;bep=1;*/* 蜂鸣报警*void beep(void) uchar data j,k; for(j=100;j0;j-) for(k=254;k0;k-) bep=0; bep=1; /关蜂鸣器*/* 延时 1ms 函数*void

23、delay1ms(uchar t) uchar j,k;for(j=0;jt;j+) for(k=0;kset_data2)beep();else if(bcd_buf2=set_data2)if(bcd_buf1set_data1)beep();else if(bcd_buf1=set_data1)if(bcd_buf0set_data0)beep();/*/ /* 键盘扫描函数/*/ /等待转换结束读入转换数据十位个位小数位报警值检测void keyscan(void)uchar data m;if(K1=0)/K1设置键延时 11ms按键时响一声设置标志位取反若设置键按下 , 则检测 K

24、2-K4设置灯亮十位加 1延时 11ms按键时响一声个位加 1延时 11ms按键时响一声小数位加 1延时 11ms按键时响一声for(m=0;m100;m+) / display();if(K1=0) beep2(); / set_flag=!set_flag; / if(set_flag=1) /SET_IND=0; / if(K2=0)/K2:for(m=0;m100;m+) / display();if(K2=0)beep2(); /set_data2+;if(set_data2=5) set_data2=0;if(K3=0) /K3:for(m=0;m100;m+) / display

25、();if(K3=0) beep2(); /set_data1+; if(set_data1=10) set_data1=0;if(K4=0) /K4:for(m=0;m100;m+) / display();if(K4=0) beep2(); /设置键按下 , 则显示设置的数值否则显示温度值先关闭所有数码管小数显示代码传送到 P1 口位选延时 1ms个位显示代码传送到 P1 口延时 1ms十位显示代码传送到 P1 口延时 1msset_data0+;if(set_data0=10) set_data0=0;else SET_IND=1;/*/* 显示函数/*/ void display(vo

26、id) if(set_flag)dis_buf0=set_data0; dis_buf1=set_data1; dis_buf2=set_data2; else dis_buf0=bcd_buf0;dis_buf1=bcd_buf1; dis_buf2=bcd_buf2;/P1 = 0xff;P1 = dis_codedis_buf0;select2=1;select1=1;select0=0; delay1ms(1);/P1 = dis_codedis_buf1; select2=1;select1=0;select0=1;P17=0;/delay1ms(1);/P1 = dis_coded

27、is_buf2; select2=0;select1=1;select0=1;delay1ms(1); / /*/ /* 串口发送一个字符函数void send_str(void) SBUF = ad_data;while(TI=0);TI = 0;/串口发送 AD 转换温度值 等待数据传送 清除数据传送标志/* 主函数void main(void)TMOD = 0x21; /定时器 1 工作于方式 2,8位自动重载模式用于产生波特率/TH0=15536/256; TL0=15536%256;TH1 = 0xe1;TL1 = 0xe1;SCON = 0x50; PCON = 0x00; TI=

28、0;EA = 1; ET0 = 1;ET1=0;TR1 = 1;TR0 = 1; while(1) display();keyscan();if(TIMER0_flag)/ 启动 T1/ 启动 T0定时器 0 工作于方式 1, 产生 1s 的 AD 间隔时间 /T0 定时 50ms/ 波特率 1000/设定串行口工作方式 1/波特率不倍增/ 清除发送中断标志/ 开总中断/ 开 T0 中断 TIMER0_flag=0; adc();BCD();send_str();/*T0 中断服务程序/* 每秒钟 ADC 一次, 串口发送一次void timer0(void) interrupt 1TH0=1

29、5536/256; /TL0=15536%256;重装初值TIMER0_NUM+;if(TIMER0_NUM=20) TIMER0_NUM=0;TIMER0_flag=1;单片机 2 程序#include #include #include #define uchar unsigned char#define uint unsigned intuchar data bcd_buf3=0x00,0x00,0x00;/十进制 BCD 码转换存放区uchar code sound_add13=0x00,0x0a,0x14,0x1e,0x28,0x32,0x3c,0x46,0x50,0x5a,0x64

30、,0x6e,0x78; /0,1,2,3,4,5,/6,7,8,9,/X/1uchar data order6;uchar ad_data;uint TIMER_NUM;sbit EOM=P2A0;sbit PD=P2A1;sbit CE=P2A2;uchar i;uint data temp;/*/*十进制BCD码转换函数/* void BCD(void)bcd_buf2=(ad_data/51);/十, 点, 度 存放地址 十X点存放接收的 AD 转换数据分钟计时十位temp=(ad_data%51);temp=(temp*10);个位小数位节电控制端接低电平 , 正常工作开始播放bcd_

31、buf1=(temp/51); /temp=(temp%51);temp=temp*10;bcd_buf0=(temp/51); /*/* 语音芯片报温度函数/* 调用一次报告一次温度I*void sound_play(void) _nop_();_nop_();PD=0; / for(i=0;i6;i+) uchar data n=0;P0=sound_addorderi;/CE=0; / _nop_();_nop_();CE=1; while(EOM); while(EOM=0);_nop_();_nop_();/* /* 主函数I*void main(void) TMOD = 0x21;/定时器 1 工作于方式 2,8位自动重载模式 ,/用于产生波特率 . 定时器 0工作与方式 1, 用于 1s 定时TH1 =0x

温馨提示

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

评论

0/150

提交评论