资源描述
目 录
1 前言 2
2 系统整体设计 3
2.1硬件系统方案设计描述 3
2.2硬件主要模块的方案论证与比较 3
2.2.1温度传感器的选择 3
2.2.2A/D转换器的选择 4
2.2.3语音提示模块 4
2.3硬件系统终方案 5
2.4系统电路原理图 5
3 系统硬件设计 6
3.1 电源电路模块 6
3.2 温度检测、放大模块 7
3.2.1 AD590简介 7
3.2.2图5温度检测、放大电路原理 8
3.3 A/D转换模块 8
3.3.1 ADC0809芯片简介 9
3.4温度设制、显示及报警电路模块 11
3.5 串行通信模块 12
3.6 语音播放模块 13
3.6.1 录音、放音简介 14
3.6.2 ISD2560简介 14
3.6.3芯片工作原理 17
3.6.4硬件电路设计 18
3.6.5本方法的特点 18
4 系统软件设计 19
4.1 系统程序流程图 19
4.2 中断服务程序流程图 20
4.3 程序清单 20
5 系统测试 30
5.1 硬件测试 30
5.1.1单元模块的测试 30
5.1.2系统整体测试 30
5.2 软件测试 31
5.2.1数码管显示的测试 31
5.2.2双机串行通信的测试 31
5.3硬件与软件的联机测试 31
5.4 测试数据及实验结果 31
5.4.1 测试数据 31
5.4.2 测试结果分析 32
6 心得与体会 32
参考文献 33
致谢语 34
21
1 前言
临床最早使用体温计是在18世纪,荷兰科学家布尔哈韦设计了水银体温计, 1851年,德国人温德利希发现特定疾病具有特定体温变化。1867年,英国各医院把体温计用于常规测体温。目前除水银体温计外,还有根据各种原理研究出的如电子体温计、耳式体温计、红外线体温计和液晶体温计等。
水银体温计由玻璃制成,内装水银,根据水银在温度上升时膨胀的原理,水银柱随温度升高而上升。温度与水银柱升高呈直线关系。其优点是比较准确,价格比较便宜。成人用测试范围为35.0~42.O℃,早产儿为32.0~42.0℃。不足之处是看结果费事,易破碎,水银漏出后常温下即可蒸发,会引起神经中毒。目前美国已不再生产水银体温计。
电子体温计可通过数字观看,比较方便。分实测式电子温度计和预测式电子体温计两种,前者与水银体温计一样,要测5~10分钟,具有准确、安全的特点;后者有前面提到的缺点,不适合家庭使用。
红外线体温计此种温度计曾于“非典”流行期间广泛使用,分耳式红外线体温计或红外前额测温仪,测定时间为1~3秒,快速、安全,但鼓膜前下方有一狭窄部分,红外线难以到达,因此,测试值常有误差,年龄愈小误差愈大。
鉴于目前体温计的发展现状,本设计采用单片机来控制实现体温的测量、显示、语音播放及报警电路,与传统的体温计相比安全性高、携带使用方便、而且测量范围广,稍微修改就可以用于其它监测系统的温度测量。
2 系统整体设计方案
因传统的体温计反应不方便,而且在使用的过程中会有污染,引起水银中毒,故而设计本方案。智能体温计在使用时,只需将额头对准传感器,通过检测后不仅可以在显示温度的同时给出报警信号,提示温度已经超出预设值,表示人体已处于高烧状态,还可以告知人体此刻的实际体温值,比较方便,具有准确、安全的特点
2.1硬件系统方案设计描述
根据题目要求,将系统分为若干模块,以单片机为核心,完成多项功能。系统框图如图1,温度传感器把采集的外部温度信号转换成相应的电压,再经过放大电路放大后作为模数转换器的模拟输入信号,模数转换器将此模拟信号转换成数字信号,通过并口送入到单片机1。单片机1把这些信号处理后通过LED数码管显示出来。同时单片机1还处理按键、报警模块。单片机1把温度值通过串行通信传送给单片机2,控制语音芯片报出相对应的温度值。
温度传感器
放大电路
ADC0809
转换电路
单片机1
LED显示
按键预置与
报警模块
单片机2
语音芯片
图1 系统框图
2.2硬件主要模块的方案论证与比较
2.2.1温度传感器的选择
方案一:采用热敏电阻。热敏电阻价格便宜,对温度灵敏,原理简单,但线性度不好,如不进行线性补偿,设计归一化输出的要求,难于达到设计精度;如要对非线性进行补偿,则电路结构复杂,难于调整。故不采用。
方案二:采用热电偶。热电偶在测温范围内热电性质稳定,不随时间变化而变化,电阻温度系数小,导电率高,比热小,但热电偶一般体积较大,使用不方便,价格相对较高。作为一个智能便携式体温计的温度传感器,要求体积小,使用方便,便于携带,故此方案不合适。
方案三:采用集成温度传感器。集成温度传感器一般且有具有线性好、精度高、灵敏度高、体积小、使用方便等优点。AD590的测温范围为-55℃~+150℃,能满足本设计的0~50度测量要求。根据相关技术资料:AD590线性电流输出为1 A/K,正比于绝对温度;AD590的电源电压范围为4V~30V,并可承受44V正向电压和20V反向电压,因而器件反接也不会被损坏。该方案能完全满足此设计的要求,故采用此方案。
2.2.2A/D转换器的选择
方案一:选用AD574。AD574的数字量位数可设成8位也可以设为12位,且无需外接CLOCK时钟,转换时间达到25μs,输出模拟电压可以是单极性的0-10V或0-20V,也可以是双极性的±5V或±10V之间。AD574精度高,但与8位的单片机接口较复杂,且价格昂贵,考虑到体温计是对温度的测量,其响应时间的要求不高。故不选用此方案。
方案二:选用ICL7135。这类芯片比较适合于低速测量仪器,适用于精度高,速度要求不高的系统设计中。ICL7135的输出为动态扫描BCD码,与单片机的接口较复杂。且它的满量程输入为2V电压,如在本设计中使用要进行衰减,较难保证转换精度。
方案三:选用ADC0809。ADC0809数字量是8位,转换时间为100μs,输入模拟电压为单极性的0-5V。由于本设计的要求精度不是很高,ADC0809可以达到要求,故选用此方案。
2.2.3语音提示模块
方案一:通过A/D转换器、单片机,存储器,D\A转换器实现声音信号的采样、处理、存储和实现。首先将声音信号放大,通过AD转换器采样将语音模拟信号转换成数字信号,并由单片机和处理存放到存储器中,实现录音操作。在录、放音过程中由单片机控制D/A转换器,将存储器中的数据转化成声音信号。此方案安装调试复杂,集成度低。
方案二:采用ISD2560语音录放集成电路。这是一种永久记忆型语音录放电路,录音时间为60S,可重复录放10万次。该芯片采用多电平直接模拟量存储专利技术,每个采样值可直接存储在片内单个EEPROM单元中,因此能够非常真实、自然地再现语音、音乐、音调和效果声。此外,ISD2560还省去了A/D和D/A转换器。其集成度较高,内部包括前置放大器、内部时钟、定时器、采样时钟、滤波器、自动增益控制、逻辑控制、模拟收发器、解码器和480K 字节的EEPROM。ISD2560内部EEPROM存储单元均匀分为600行,有600个地址单元,每个地址单元指向其中一行,每一个地址单元的地址分辨率为100ms 。ISD2560可不分段,也可按最小段长为单位来任意组合分段。因此,选择方案二。
2.3硬件系统终方案
由上可知本设计采用AD590对温度进行采集,采集到的温度经放大电路放大后送入AD0809进行模数转换,将此数字量送入单片机1,由单片机1驱动LED进行温度显示,单片机1和单片机2进行串口通信,单片机2控制语音芯片ISD2560进行温度报音;可以通过键盘对单片机1进行按键预置,当温度超过这个预置的温度时由单片机1进行报警控制。经过方案论证的硬件系统终方案的框图如图2所示:
AD590
温度采集
放大电路
ADC0809
转换电路
单片机1
显示
按键预置与
报警模块
单片机2
语音芯片
图2 系统终框图
串口传送
2.4系统电路原理图
本智能体温计由桥式整流电源完成给整个系统的供电,其输出电压为正负5伏和正12伏,可满足整个系统的电源要求;采用AT89S52作为核心器件实现对系统的自动控制,采用双单片机串行处理结构。外界温度经AD590集成温度传感器采集,温度变化转换为线性电压信号,再经由OP07构成高精度低温漂的放大电路处理后,作为ADC0809的模拟输入信号,由ADC0809完成A/D转换,得到8位的数字信号送入单片机1(AT89S52)。单片机1将采集到温度值在LED数码管上显示出来,同时通过串口通信将温度信号传到单片2(AT89S52)。此外温度预制,报警电路模块功能也由单片机1完成。单片机1与单片机2进行串行通信,将温度值送入到单片机2,由单片机2完成温度值的语音播放功能。本电路图留有相应的接口,为完成扩展功能打下基础。
3 主要电路设计与参数计算
3.1 电源电路模块
图3 电源电路图
如图3所示,220V交流电经变压器市降压、桥式整流、电容滤波后由7812、7805、7905三端集成稳压管分别得到+12V、+5V、-5V电压。给整个电路供电。
3.2 温度检测、放大模块
图4 AD590温度检测、放大电路图
如图4所示,温度检测、放大电路主要器件的作用:OP1:电压跟随器;OP2:电压跟随器;OP3:差分放大电路;AD590:温度传感器;SVR:零位调整。
3.2.1 AD590简介
AD590是电流输出型的半导体温度感测组件,主要特性如下:
1.具有线性输出电流。
2.宽广的操作温度范围(-55℃~150℃)。
3.宽广的工作电压范围(+4V~+30V)。
4.良好的隔离性。
AD590的包装与等效电路如图5所示,是TO-52型金属外壳包装。他是两端子的半导体温度感测组件,另有一端子是外壳接脚,可接地以减少噪声干扰。
AD590如同一个随温度而改变输出电流的定电流源,输出电流与外壳的开氏(K)温度成正比。开氏温度与摄氏温度的单位相等,0℃等于273.2K,100℃等于373.2K。当温度为0℃时,AD590的输出电流是273.2μA。而温度为100℃时,输出电流是373.2μA。温度每升高1℃,输出电流增加1μA,及温度系数为1μA/℃。
图5 AD590包装与等效电路图
3.2.2、温度检测、放大电路原理
AD590当温度增加1℃时,其输出电流会增加1μA。即AD590的温度系数为1μA/℃。所以在T(℃)时的电流I1(T)为 ,而温度每变化1℃时,V2的电压变化是为 ,表示温度每增加1℃,V2会增加10mV。在0℃时V2就已经有电压存在,其值为 ,则T(℃)时,
如图4所示,OP3组成差动放大器,电压增益为 。零位调整SVR1则用于抵补0℃的电压值,由差动放大器的公式 可得知,若调整SVR1使V1的电压为2.732V,则0℃时,差动放大器的输出VO为0V。也就是说,若温度是在0℃至50℃之间,则差动放大器的输出电压是在0V至5V之间,亦即每0.1V的输出代表温度上升1℃。与设计要求相符合。
3.3 A/D转换模块
ADC0809把从放大电路传送过来的模拟信号转变成数字信号,并行传送给单片机的P0口,让单片机处理。由P2.4连接ALE对通道地址进行锁存,P2.5连接OE控制数据线的三态缓冲器从D0~D7数据线读取变换后的数据,P2.6连接START控制A/D转换的开始,P2.7控制转换结束标志EOC。AD转换的电路连接图如图6所示:
图6 A/D转换电路图
3.3.1ADC0809芯片简介
ADC0809是8位逐次比较式A/D转换芯片,具有8路模拟量输入通道。其内部与芯片引脚如图7所示。
图7中8路模拟开关用于选通8个模拟通道,允许8路模拟量分时输入,幷共用一个A/D转换器进行转换。IN0~IN7为8路模拟量输入端,模拟量输入电压的范围是0~5V,对应的数字量为00H~FFH,转换时间为100毫秒。ADDA、ADDB、ADDC为通道地址线,用于选择通道。其通道寻址如表1所示:
ADDA ADDB ADDC
选通的通道
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
IN0
IN1
IN2
IN3
IN4
IN5
IN6
IN7
表1 ADC0809通道地址选择表
ALE是通道地址锁存信号,其上出现脉冲上升沿时,把ADDA、ADDB、ADDC地址状态送入地址锁存器中。VREF(+)、VREF(-)接基准电源,在精度要求不太高的情况下,供电电源就可用作基准电源。START是启动引脚,其上脉冲的下降沿启动一次新的A/D转换。EOC是转换结束信号,可用于向单片机申请中断或供单片机查询。CLK是时钟端,典型的时钟频率为640KHZ。DB0~DB7是数字量输出。
(a)ADC0809的引脚图
8 路
模拟
开关
地址
锁存
与译码
8位
A/D
转换器
三态
输出
缓冲器
IN0
IN1
IN2
IN3
IN4
IN5
IN6
IN7
A
B
C
ALE
EOC
D0
D1
D2
D3
D4
D5
D6
D7
VCC
GND
VREF(+) VREF(-) OE
START CLK
(b)ADC0809的结构图
图7 ADC0809芯片的内部逻辑结构与引脚图
3.4温度设制、显示及报警电路模块
如图8:通过按键可以事先设定报警温度值(人体体温37℃),当显示的温度值超过设定的温度值时,单片机就会从INT0脚发出一连串脉冲,驱动蜂鸣器发出报警声。
图8 温度设制、显示及报警电路图
3.5 串行通信模块
如图9所示,单片机1把温度值发送数据到单片机2,单片机2接收数据并控制语音芯片报出当前的温度值。
图9 串行通信电路图
3.6 语音播放模块
语音播放模块如图10所示。主要由单片机AT89S51与语音芯片ISD2560组成。
图10 录音、放音电路图
3.6.1 录音、放音简介
如图9所示,首先通过麦克风向语音芯片ISD2560录入“0,1,2,3,4,5,6,7,8,9,10,点,度”等音符。当单片机2接收到单片机串行发送过来的温度值时,就会自动地去寻找相对应音符的地址,并把这些音符通过扬声器播放出来。
3.6.2 ISD2560简介
ISD2560为28脚的DIP器件封装,如图11
图11 ISD2560管脚图
各引脚功能如下:
1~7:A0/M0~A6/M6地址/模式选择;
8~10: A7~A9输入地址线 ;
11: AUX IN辅助输入 ;
12、13 :VSSD、VSSA数字地和模拟地
14、15 :SP 、SP-扬声器输出 .
16 :VCCA模拟信号电源正极
17、18:M IC、MIC REF 麦克风输入端和输入参考端
19 、AGC自动增益控制
20、21 ANA IN、ANA OUT 模拟信号输入和输出
22、 OUF 溢出
23 、CE 片选(低电平允许芯片工作)
24 、PD 芯片低功耗状态控制
25 、EOM 录放音结束信号输出
26、 XCLK 外部时钟
27、P/R 录/放控制选择
28 、VCCD 数字信号电源正极
3.6.3芯片工作原理
ISD2560有10个地址输入端A0~A9,录址能力可达1024位,地址空间为0~1023。其分配情况是:地址0~299作为分段用,地址600~767未使用,地址768~1023为工作模式选择(即A8、A9均为高)。2500系列的地址线有两种用途,一是作为工作模式控制,二是作为分段录放音的起始段地址。当最高位地址(MSB)A8、A9都为高电平时(即地址768~1023),地址端A0~A6就作为工作模式选择端M0~M6,对应7种工作模式。当A8、A9任一位为低或都为低时(即地址0~599),只要在分段录/放音操作前(不少于300ns)给地址A0~A9赋值,操作就从该地址开始。
ISD2560将480K的EEPROM分为600个信息段,每段800个字节。作为一个整体单位进行寻址和控制,应给每个信息段分配一个供外部控制的地址,而不是对每个字节进行寻址,否则至少需要19个地址端口。这样,大大减少了信息检索所需要的地址线。对较长的语音信号可以跨越多个信息段进行录音,不受内部存储信息段的限制,且内部的信息段址会自动增加。
在每个语音段的尾部自动增加一个结束标志EOM,组合放音时,通过检测EOM来控制各语音段的结束和下一段的开始。 每个信息段的录放音时间等于总时间除以600。如ISD2560的总时间为60s,则每个信息段的录放音时间为100ms;ISD25120的总时间为120s,则每个信息段的时间为200ms。
因此可以利用该时间长度作为一个段地址,通过单片机定时器的计时平行地映射信息段的地址,从而得到每段录音的起始地址。这样,就需要设置一个地址计数器。一般录音从0地址开始,首先通过CPU将它赋给A0~A9,然后通过单片机控制ISD启动录音,同时启动单片机的定时器开始计时,每到一个信息段的时间,就给地址计数加1。当单片机停止控制ISD录音时,同时停止定时器计时。
此时地址计数器的值即为该段语音的未地址,加1即为下一段语音的首地址,并将它存在EEPROM中,为下一将放音提供的地址信息。通过CPU将该地址赋给A0~A9,即可录制下一段语音。依次下去,即可在录制完所有语音段的同时得到各段的起始地址。如果不是从0地址开始的语音段,只需将初始地址赋给A0~A9,加上地址计数器的值,即可得到语音段的末地址。这里不用同时保存各语音段的起始地址和结束地址,因为各个段是相邻的,前一段的末地址加1即是本段的起始地址,且每个语音段的结尾均有EOM标志,并可发出中断。放音时利用它和保存在EEPROM中各语音段的起始地址即可按任意顺序组合各个语音段。
3.6.4硬件电路设计
ISD器件选用录音时间为60s的ISD2560器件,以单片机为处理机,外接控制每个语音段录音开始与停止按键,外部存储器EEPROM用于保存每个语音首地址。ISD的外围电路及其与单片机连接的硬件电路如图10所示。ISD2560与AT89S52的接口部分包含输入地址线A0~A9、片选CE(CE=0选中ISD芯片)、芯片低功耗状态控制PD、录放音控制选择P/R(P/R=0为录音;P/R=1为放音)、录放音结束信号输出EOM,将它作为AT89S51外部中断0的输入信号,放音时通过它告知本语音段结束,便于单片机立即播放另一个语音段。
3.6.5本方法的特点
能进行在系统现场录音,随录随放,修改语音方便。 修改录音内容时,可以从其中任意一段开始,修改其后的所有录音内容,不必从第一段开始全部修改。这对一些需要厂家固定一些语音段的系统很有好处,将固定的语音段放置在前面的段落中,允许用户录制的放在后面,用户修改录音内容时只需修改后面的语音段即可,不影响厂家录制的语音。分段灵活。单片ISD2560可分1~600个段,若多片级联还可更多;各个录音段的长度任意,只要总录音时间在所用器件的总时间之内即可。
3.7体统的整体硬件电路图:
图12整体硬件电路图
如图12所示该电路主要由电源电路,温度检测、放大电路,A/D转换电路,双单片机串行通信电路,按键输入、报警电路,数码管扫描显示电路以及语音芯片电路组成。
4 系统软件设计
4.1 系统主程序流程图
开始
初始化
显示温度
键盘扫描
1秒钟到否?
启动AD转换
BCD码转换
串行发送
N
Y
初始化
二进制转十进制BCD码
播报一次温度
开始
1分钟到否
图13单片机1程序主流程图 图14单片机2程序主流程图
如图13单片机1为主机,负责温度显示、按键扫描、BCD码转换、串行发送数据给单片机2。以定时器定时1ms,每定时100次即1秒钟就启动A/D转换、BCD码转换,串行发送2进制数给单片机2。
如图14、15所示:所示:单片机2为从机,只负责接收数据并播报温度,以T0定时器定时,结合延时程序定时1分钟,使每1分钟更新一次语音音素地址,即每1分钟更新一次温度值 ,并在中断程序处理过程度中报一次温度。
4.2 中断服务程序流程图如下:
返回
更新温度数据
串口中断入口
计数变量清零
播报一次温度
T0中断入口
1分钟到否
返回
图15 单片机2的T0中断程序流程图
5 系统测试
5.1 硬件测试
5.1.1单元模块的测试
(A)电源测试:用数字万用表电压档测量各三端稳压管输出的电压值是否正常。测试相关测试点,三路电压正常。电源设计成功。
(B) 温度采集模块的测试:调节温度变化,测试点的电压值是否有相对应的改变。当温度变化时,测试点的电压与温度之间的线性关系比较好,如表1所示,达到设计要求。
(C)A/D转换模块的测试:当输入为0V和5V以及中间若干电压输入时,测试A/D转换是否正常。测试发现当输入为0V时,ADC0809的输出为00H,为+5V时为0FFH,当输入为2.5V时,输出为0EFH,测试结果表明A/D转换的功能完全实现。
(D)语音播放模快的测试:通过拨码开关人工给语音芯片选地址,测试不同的地址是否有不同的发音,以检验语音是否正确录入及能否正常播放。根据设定,将12个语音信号分别放到指定的行地址上,当按相应的行地址拨开关给ISD2560时,能够正常播放设定的12个语音,说明语音芯片的录用存贮工作成功。接入系统,编程输出相应的行地址,ISD2560能够正常播放各个语音,说明语音播放模快的硬件设计可行。
5.1.2系统整体测试
测试方法——以水温代替人的体温,用一根水银温度计与所制作的体温计探头(捆绑)同时接触被测热水的同一点。
(A)准备一杯0摄氏度的冰水混合物和一杯热水。从0度开始记录测试点的电压值与温度计对比较。记完一个数后,往杯中加热水,这样,每测一次,记录一次数据,再加一次热水,这样使水温渐渐升高,一直测到水温为50摄氏度。测试结果如表1所示,说明数码管显示的数值是否与测试点所测值在误差允许范围内是成归一化关系的。
(B)检测水温高于50摄氏度时测试点的电压值。看是否为+5V。结果显示为+5V,说明保护电路可行。
5.2 软件测试
将各功能子程序进行KAIL C系统进行软件仿真,全部通过,再进行硬件仿真,也能全部实现所要求实现的功能。
5.2.1数码管显示的测试
把放大器的输出连接到ADC0809的输入端,ADC0809与单片机相连接,观察数码管显示的数值是否与测试点所测值成归一化关系。
5.2.2双机串行通信的测试
从主机发送一个8位的二进制数,用示波器观察从机是否接收到。
展开阅读全文