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

下载本文档

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

文档简介

1、 数理与信息工程学院 单片机原理及应用期末课程设计 题目:智能体温计 专业:电子信息工程 班 级: 电信 061 姓 名: 学 号: 指导老师: 成 绩: ( 2008.12 ) 目录 第 1 节 引 言 3 1.1 智能体温计概述 3 1.2 本次设计要求 4 1.3 系统主要功能 4 第 2 节 系统主要硬件电路设计 5 2.1 主要模块的设计方案论证 5 2.1.1 温度传感器的选择 5 2.1.2 A/D 转换器的选择 5 2.1.3 语音提示模块 5 2.2 总系统设计方案 6 2.2.1 系统设计框图 6 2.2.2 系统整体硬件电路 6 2.3 系统硬件组成 8 2.3.1 电源

2、电路模块 8 2.3.2 温度检测和放大模块 8 2.3.3 A/D 转换模块 9 2.3. 4 温度设置、显示及报警电路模块 10 2.3.5 串行通信模块 10 2.3.6 语音播放模块 11 第 3 节 系统软件设计 13 3.1 系统主程序设计 13 3.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) 。此外温度预置, 报警电路模块功能

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

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

7、体积较大,使用不方便,价格相 对较高。作为一个智能体温计的温度传感器,要求体积小,使用方便,便于携带,故 此方案不合适。 方案三 :采用集成温度传感器。集成温度传感器一般且有具有线性好、精度高、 灵敏度高、体积小、使用方便等优点。根据实验室现有材料可选取 AD590。AD590 的 测温范围为 -55 +150,能满足本设计的 0 50 度测量要求。根据相关技术资料: AD590线性电流输出为 1 A/K, 正比于绝对温度; AD590 的电源电压范围为 4V 30V,并可承受 44V 正向电压和 20V 反向电压, 因而器件反接也不会被损坏。 该方案 能完全满足此设计的要求,故采用此方案。

8、2.1.2 A D 转换器的选择 方案一 :选用 AD574。 AD574 的数字量位数可设成 8 位也可以设为 12 位,且 无需外接 CLOCK时钟,转换时间达到 25 s,输出模拟电压可以是单极性的 010V 或 020V,也可以是双极性的 5V或 10V之间。 AD574精度高,但与 8 位的单片 机接口较复杂, 且价格昂贵,考虑到体温计是对温度的测量, 其响应时间的要求不高。 故不选用此方案。 方案二:选用 ICL7135 。这类芯片比较适合于低速测量仪器,适用于精度高,速 度要求不高的系统设计中。 ICL7135 的输出为动态扫描 BCD 码,与单片机的接口较 复杂。且它的满量程输

9、入为 2V 电压,如在本设计中使用要进行衰减,较难保证转换 精度。 方案三 :选用 ADC0809。ADC0809数字量是 8 位,转换时间为 100 s,输入模 拟电压为单极性的 0 5V。由于本设计的要求精度不是很高, ADC0809可 以达到要求, 故选用此方案。 2.1.3 语音提示模块 方案一:通过 A/D 转换器、单片机,存储器, DA转换器实现声音信号的采样、 处理、存储和实现。首先将声音信号放大,通过 AD 转换器采样将语音模拟信号转换 成数字信号,并由单片机和处理存放到存储器中,实现录音操作。在录、放音过程中 由单片机控制 D/A 转换器,将存储器中的数据转化成声音信号。此方

10、案安装调试复 杂,集成度低。 方案二 :采用 ISD2560 语音录放集成电路。该芯片采用多电平直接模拟量存储 专利技术,每个采样值可直接存储在片内单个 EEPROM单元中,因此能够非常真实、 自然地再现语音、音乐、音调和效果声。此外, ISD2560 还省去了 A/D 和 D/A 转换 器。其集成度较高,内部包括前置放大器、内部时钟、定时器、采样时钟、滤波器、 自动增益控制、逻辑控制、模拟收发器、解码器和 480K 字节的 EEPROM。ISD2560 可不分段,也可按最小段长为单位来任意组合分段。因此,选择方案二。 22 总系统设计方案 2.2.1 系统设计框图 根据设计要求,可将系统分为

11、若干模块,以单片机为核心,完成多项功能。 图 2-1 系统框图 系统框图如图 2- 1,AD590 把采集的外部温度信号转换成相应的电压,再经过 OP07 运放放大后作为 ADC0809的模拟输入信号, ADC0809将 此模拟信号转换成数字信号, 通过并口送入到单片机 1。单片机 1 把这些信号处理后通过 LED 数码管显示出来。 同时单片机 1 还处理按键、报警模块。单片机 1 把温度值通过串行通信传送给单片 机 2 ,控制语音芯片报出相对应的温度值。 2.2.2 系统整体硬件电路 如图 2-2 所示,该电路主要由电源电路, 温度检测、 放大电路,AD转换电路, 双单片机串行通信电路, 按

12、键输入、报警电路, 数码管扫描显示电路以及语音芯片电 路组成。 图 2-2 系统电路原理图 2.3 系统硬件组成 2.3.1 电源电路模块 图 2-3 电源电压电路 如图 2-3 所示, 220V交流电经变压器市降压、桥式整流、电容滤波后经 7812、 7805、 7905 三端集成稳压管分别得到 12V、+5V、-5V 电压,给整个电路供电。 2.3.2 温度检测、放大模块 图 2-4 AD590 温度检测、放大电路图 如图 2-4 所示,温度检测、放大电路主要器件的作用: OP1、OP2:电压跟随器; OP3:差分放大电路; AD590:温度传感器; SVR:零位调整。 (1)AD590

13、简介 AD590 是电流输出型的半导体温度感测组件,主要特性如下: 1. 具有线性输出电流。 2. 宽广的操作温度范围 (-55 150 ) 。 3. 宽广的工作电压范围 (+4V+30V)。 4. 良好的隔离性。 AD590 的包装与等效电路如图 4 所示,是 TO-52 型金属外壳包装。 他是两端子 的半导体温度感测组件,另有一端子是外壳接脚,可接地以减少噪声干扰。 AD590 如同一个随温度而改变输出电流的定电流源,输出电流与外壳的开氏(K) 温度成正比。 开氏温度与摄氏温度的单位相等, 0等于 273.2K ,100等于 373.2K 。 当温度为 0 时, AD590 的输出电流是

14、273.2 A。而温度为 100 时,输出电流是 373.2 A。温度每升高 1 ,输出电流增加 1 A,其温度系数为 1 A/。 (2)温度检测、放大电路原理 AD590的温度系数为 1 A/。所以在 T( ) 时的电流 I1(T) 为 I1(T)=I1(0)+1 A/ *T(2-1) 而温度每变化 1 时, V2 的电压变化是为 1A/ *10K=10mV/,即温度每增加 1,V2 会增加 10mV。在 0时 V2 就已经有电压存在,其值为 V2(0)=273.2 A *10K? =2.732V(2-2) 则 T 时 V2(T)=V2(0)+10mV/*T(2-3 ) 如图 2-3 所示,

15、 OP3 组成差动放大器,电压增益为 R2/R1=100K/20K=5 (2-4) 零位调整 SVR1则用于抵补 0 的电压值,由差动放大器的公式 V0=R2/R1*(V2-V1) (2-5) 可得知,若调整 SVR1使 V1的电压为 2.732V,则 0 时,差动放大器的输出 VO为 0V。 也就是说,若温度是在 0至 50之间,则差动放大器的输出电压是在 0V至 5V之 间,亦即每 0.1V 的输出代表温度上升 1 。与设计要求相符合。 2.3.3 A/D 转换模块 如图 2-6 :ADC0809把 从放大电路传送过来的模拟信号转变成数字信号,并行 传送给单片机的 P0 口,让单片机处理。

16、 图 2-6 A/D 转换电路图 2.3.4 温度设制、显示及报警电路模块 如图 2-7 :通过按键可以事先设定报警温度值, 当显示的温度值超过设定的温度 值时,单片机就会从 INT0 脚发出一连串脉冲,驱动蜂鸣器发出报警声。 图 2-7 温度设制、显示及报警电路图 2.3.5 串行通信模块 如图 2-8 所示, 单片机 1 把温度值发送数据到单片机 2, 单片机 2 接收数据 并控制语音芯片报出当前的温度值。 图 2-8 串行通信电路图 2.3.6 语音播放模块 语音播放模块如图 2-9 所示。主要由单片机 AT89S51 与语音芯片 ISD2560 组 成。 图 2-9 录音、放音电路图

17、(1)录音、放音简介 如图 2-9 所示,首先通过麦克风向语音 ISD256 录入“0,1,2,3,4,5,6,7,8,9,10, 点,度”等音符。当单片机 2 接收到单片机串行发送过来的温度值时,就会自动地 去寻找相对应音符的地址,并把这些音符通过扬声器播放出来。 (2)硬件电路设计 ISD 器件选用录音时间为 60s 的 ISD2560 器件,以单片机为处理机, 外接控制 每个语音段录音开始与停止按键, 外部存储器 EEPROM用 于保存每个语音首地址。 ISD 的外围电路及其与单片机连接的硬件电路如图 2-9 所示。 ISD2560 与 AT89S52 的接口部分包含输入地址线 A0A9

18、、片选 CE(CE=0 选中 ISD芯片)、芯片低功耗状态控制 PD、录放音控制选择 P/R(P/R=0 为录音;P/R=1 为 放音)、录放音结束信号输出 EOM,将它作为 AT89S51外部中断 0 的输入信号, 放音 时通过它告知本语音段结束,便于单片机立即播放另一个语音段。 ISD2560 引脚封装如图 2-10 所示 . 图 2-10 ISD2560 管脚图 (3)本方法的特点 能进行在系统现场录音,随录随放,修改语音方便。 修改录音内容时, 可以从其中任意一段开始, 修改其后的所有录音内容, 不必从 第一段开始全部修改。 这对一些需要厂家固定一些语音段的系统很有好处, 将固定的 语

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

20、3-2 ,3-3 所示:单片机 2 为从机,只负责接收数据并播报温度, 以 T0 定 时器定时,结合延时程序定时 1分钟, 使每1分钟更新一次语音音素地址, 即每 1 分钟更新一次温度值,并在中断程序处理过程度中报一次温度。 串口中断 串入口口中断 更新温度数据 返回 图 3-2 单片机 2 程序主流程图 图 3-3 3 2 程序清单 单片机 1 程序 #include #include #include #define uchar unsigned char #define uint unsigned int uchar code dis_code10=0 xc0,0 xf9,0 xa4,0

21、 xb0, / 0, 1, 2, 3 0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90; uchar data set_data3=0 x00,0 x07,0 x03; uchar data ad_data; /AD uchar data dis_buf3=0 x00,0 x00,0 x00; uchar data bcd_buf3=0 x00,0 x00,0 x00; uchar data TIMER0_NUM; / 4, 5, 6, 7, 8, 9, off / 预设 37.0 度 转换结果 / 显示缓冲区 / 十进制 BCD码转换存放 bit TIMER0_flag

22、; bit data set_flag=0; sbit ALE=P24; sbit OE=P25; sbit START=P26; sbit EOC=P27; sbit P30=P30; sbit select0=P37; sbit select1=P36; sbit select2=P35; sbit K1=P20; sbit K2=P21; sbit K3=P22; sbit K4=P23; sbit bep=P33; sbit SET_IND=P34; 小数点 sbit P17=P17; / uint data temp; /* /* 函数声明 void delay1ms(uchar t

23、); void adc(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; be

24、p=1; /* 延时 1ms 函数 void 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

25、 m; if(K1=0) /K1 设置键 延时 11ms 按键时响一声 设置标志位取反 若设置键按下 , 则检测 K2-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

26、_data2+; if(set_data2=5) set_data2=0; if(K3=0) /K3: for(m=0;m100;m+) / display(); 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 十

27、位显示代码传送到 P1 口 延时 1ms set_data0+; if(set_data0=10) set_data0=0; else SET_IND=1; /*/ /* 显示函数 /*/ void display(void) 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 = 0 xff; P1 = dis_codedis_buf0; select2=1;sele

28、ct1=1;select0=0; delay1ms(1); / P1 = dis_codedis_buf1; select2=1; select1=0;select0=1; P17=0; / delay1ms(1); / P1 = dis_codedis_buf2; select2=0;select1=1;select0=1; delay1ms(1); / /*/ /* 串口发送一个字符函数 void send_str(void) SBUF = ad_data; while(TI=0); TI = 0; / / / 串口发送 AD 转换温度值 等待数据传送 清除数据传送标志 /* 主函数 vo

29、id main(void) TMOD = 0 x21; / 定时器 1 工作于方式 2,8 位自动重载模式 用于产生波特率 / TH0=15536/256; TL0=15536%256; TH1 = 0 xe1; TL1 = 0 xe1; SCON = 0 x50; PCON = 0 x00; TI=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 定时 50m

30、s / 波特率 1000 /设定串行口工作方式 1 /波特率不倍增 / 清除发送中断标志 / 开总中断 / 开 T0 中断 TIMER0_flag=0; adc(); BCD(); send_str(); /*T0 中断服务程序 /* 每秒钟 ADC 一次, 串口发送一次 void timer0(void) interrupt 1 TH0=15536/256; / TL0=15536%256; 重装初值 TIMER0_NUM+; if(TIMER0_NUM=20) TIMER0_NUM=0; TIMER0_flag=1; 单片机 2 程序 #include #include #include

31、#define uchar unsigned char #define uint unsigned int uchar data bcd_buf3=0 x00,0 x00,0 x00; /十进制 BCD码转换存放区 uchar code sound_add13=0 x00,0 x0a,0 x14,0 x1e,0 x28,0 x32,0 x3c, 0 x46,0 x50,0 x5a,0 x64,0 x6e,0 x78; /0,1,2,3,4,5, /6,7,8,9, /X / /1 uchar data order6; uchar ad_data; uint TIMER_NUM; sbit EO

32、M=P20; sbit PD=P21; sbit CE=P22; uchar i; uint data temp; /* /* 十进制 BCD码转换函数 /* void BCD(void) bcd_buf2=(ad_data/51); / 十, 点, 度 存放地址 十 X点 存放接收的 AD 转换数据 分钟计时 十位 temp=(ad_data%51); temp=(temp*10); 个位 小数位 节电控制端接低电平 , 正常工作 开始播放 bcd_buf1=(temp/51); / temp=(temp%51); temp=temp*10; bcd_buf0=(temp/51); / /*

33、 /* 语音芯片报温度函数 /* 调用一次报告一次温度 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_(); /* /* 主函数 void main(void) TMOD = 0 x21; / 定时器 1 工作于方式 2,8 位自动重载模式 , / 用于产生波特率 . 定时器 0 工作与方式 1, 用于 1s 定时 TH1 = 0

温馨提示

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

评论

0/150

提交评论