电子产品设计论文.docx
《电子产品设计论文.docx》由会员分享,可在线阅读,更多相关《电子产品设计论文.docx(29页珍藏版)》请在冰豆网上搜索。
电子产品设计论文
子产品设计论文
电子产品设计
题目智能体温计
姓名xxx
学号xxx
专业班级xxx
所在学院信电分院
指导教师(职称)杨锆
二○一六年六月十九日
电子产品设计
——智能体温计
摘要
智能体温计采用AT89S52作为核心器件实现对系统的自动控制,采用双单片机串行处理结构。
外界温度经AD590集成温度传感器采集,温度变化转换为线性电压信号,再经由OP07构成高精度低温漂的放大电路处理后,作为ADC0809的模拟输入信号,由ADC0809完成A/D转换,得到8位的数字信号送入单片机1(AT89S52)。
单片机1将采集到温度值在LED数码管上显示出来,也通过串口通信将温度信号传到单片2(AT89S52)。
此外温度预制,报警电路模块功能也由单片机1完成。
单片机2完成温度值的语音播放功能。
通过系统的设计与实现说明本设计方案切实可以,能够完成题目所要求的基本功能部分,并留有相应的接口,为完成扩展功能打下基础。
关键字:
单片机AD590ADC0809ISD2560
Electronicproductdesign
——Electronicthermometer
Abstract
IntelligenttemperaturemeteradoptsAT89S52asthecoredevicetorealizetheautomaticcontrolofthesystem,usingtheserialprocessingstructure.OutsidetemperaturebyintegratedtemperaturesensorAD590acquisition,temperatureconversionintothelinearvoltagesignal,andthenthroughtheOP07constitutehighprecisionandlowtemperaturedriftofamplificationcircuits,asADC0809analoginputsignal,bytheADC0809completea/Dconversionandget8bitdigitalsignalintothemicrocontroller1(AT89S52).SCM1willbecollectedtothetemperaturevalueintheLEDdigitaltubedisplay,butalsothroughtheserialcommunicationtothetemperaturesignaltothemonolithic2(AT89S52).Inadditiontothetemperature,thealarmcircuitmodulefunctioniscompletedbytheMCU1.SCM2tocompletethetemperaturevalueofthevoiceplayer.Throughthedesignandimplementationofthesystem,thisdesigncanberealized,cancompletethebasicfunctionalrequirementsofthetitle,andleavethecorrespondinginterface,forthecompletionoftheextensionfunctiontolaythefoundation.
Keyword:
singlechipmicrocomputerADC0809ISD2560AD590
图目录
第1章绪论
1.1背景
温度是一个十分重要的物理量,对它的测量与控制有十分重要的意义。
随着现代工农业技术的发展及人们对生活环境要求的提高,人们也迫切需要检测与控制温度。
温度控制电路在工农业生产中有着广泛的应用。
日常生活中也可以见到,如电冰箱的自动制冷,空调器的自动控制等等。
利用热敏电阻器和惠斯通电桥制作一个电子体温计,也可以演示自动控制电路的工作原理。
现代信息技术的三大基础是信息采集(即传感器技术)、信息传输(通信技术)和信息处理(计算机技术)。
传感器属于信息技术的前沿尖端产品,尤其是温度传感器被广泛用于工农业生产、科学研究和生活等领域,数量高居各种传感器之首。
因此传感器在此电子体温计的制作中起了重要的作用。
1.2设计目的
传统的玻璃水银(汞)体温计不仅使用不便,而且还存在着安全隐患。
这种体温计依靠体温的传导使汞柱的热胀冷缩的影响下伸缩而发生长度变化,因此其惰性大,获取体温平衡值的等待时间较为长久。
婴幼儿好动,测量体温大多不愿默契配合,用玻璃水银体温计给婴幼儿测量体温具有一定的危险性。
体温计水银囊的玻壳薄脆易碎,一旦被不慎咬碎,极易导致汞的外泄污染与中毒。
一支普通水银体温计内的汞含量约为2g,足以污染800L的水;汞只需0.3g的微量便能对成人的身体赞成致命的伤害。
人体一旦吸入大量的甲基汞,将有丧命之虞,如果摄入遭到汞污染的水或食物,将严惩损害神经系统,孕妇也将因此而产下畸形儿……鉴于水银体温计破裂会危及人体健良乃至宝贵的生命,欧美各国从上世纪末就已纷纷宣布禁止使用与销售水银体温计,并换代升级为安全环保的电子体温计。
电子体温计在国内也正在逐渐成为水银体温计的升级替代品。
2003年以来流行的“非典”、“甲流”等呼吸系统传染性疾病给中国和世界带来了无尽的痛苦和灾难。
这类疾病的主要病征之一就是发烧。
为此,许多车站、码头、学校、企事业单位、医务点均以测量体温作为判断是否得了“甲流”等疾病的前提。
而数字体温计以使用方便、检测时间短、精确度高、显示清晰、直观、安全性好、价格合理等优点将会得到更广泛的应用。
第2章原理分析
2.1设计总原理
图1系统框图
2.1.1温度传感器的选择
采用集成温度传感器。
集成温度传感器一般且有具有线性好、精度高、灵敏度高、体积小、使用方便等优点。
根据实验室现有材料可选取AD590。
AD590的测温范围为-55℃~+150℃,能满足本设计的0~50度测量要求。
根据相关技术资料:
AD590线性电流输出为1
A/K,正比于绝对温度;AD590的电源电压范围为4V~30V,并可承受44V正向电压和20V反向电压,因而器件反接也不会被损坏。
该方案能完全满足此设计的要求,故采用此方案。
2.1.2A/D转换器的选择
选用ADC0809。
ADC0809数字量是8位,转换时间为100μs,输入模拟电压为单极性的0-5V。
由于本设计的要求精度不是很高,ADC0809可以达到要求,故选用此方案。
2.1.3语音提示模块
采用ISD2560语音录放集成电路。
这是一种永久记忆型语音录放电路,录音时间为60S,可重复录放10万次。
该芯片采用多电平直接模拟量存储专利技术,每个采样值可直接存储在片内单个EEPROM单元中,因此能够非常真实、自然地再现语音、音乐、音调和效果声。
此外,ISD2560还省去了A/D和D/A转换器。
其集成度较高,内部包括前置放大器、内部时钟、定时器、采样时钟、滤波器、自动增益控制、逻辑控制、模拟收发器、解码器和480K字节的EEPROM。
ISD2560内部EEPROM存储单元均匀分为600行,有600个地址单元,每个地址单元指向其中一行,每一个地址单元的地址分辨率为100ms。
ISD2560可不分段,也可按最小段长为单位来任意组合分段。
因此,选择方案二。
2.2原理分析
系统框图如图1,AD590把采集的外部温度信号转换成相应的电压,再经过OP07运放放大后作为ADC0809的模拟输入信号,ADC0809将此模拟信号转换成数字信号,通过并口送入到单片机1。
单片机1把这些信号处理后通过LED数码管显示出来。
同时单片机1还处理按键、报警模块。
单片机1把温度值通过串行通信传送给单片机2,控制语音芯片报出相对应的温度值。
2.3系统电路原理图
图2系统电路原理图
如图2所示,该电路主要由电源电路,温度检测、放大电路,A/D转换电路,双单片机串行通信电路,按键输入、报警电路,数码管扫描显示电路以及语音芯片电路组成。
第3章主要电路设计与参数计算
3.1电源电路模块
图3电源电路图
如图3所示,220V交流电经变压器市降压、桥式整流、电容滤波后由7812、7805、7905三端集成稳压管分别得到+12V、+5V、-5V电压。
给整个电路供电。
3.2温度检测、放大模块
图4AD590温度检测、放大电路图
3.2.1换成DS18B20温度模块怎么改
如图4所示,温度检测、放大电路主要器件的作用:
OP1:
电压跟随器;OP2:
电压跟随器;OP3:
差分放大电路;AD590:
温度传感器;SVR:
零位调整。
3.2.2AD590简介
AD590是电流输出型的半导体温度感测组件,主要特性如下:
1.具有线性输出电流。
2.宽广的操作温度范围(-55℃~150℃)。
3.宽广的工作电压范围(+4V~+30V)。
4.良好的隔离性。
AD590的包装与等效电路如图4所示,是TO-52型金属外壳包装。
他是两端子的半导体温度感测组件,另有一端子是外壳接脚,可接地以减少噪声干扰。
AD590如同一个随温度而改变输出电流的定电流源,输出电流与外壳的开氏(K)温度成正比。
开氏温度与摄氏温度的单位相等,0℃等于273.2K,100℃等于373.2K。
当温度为0℃时,AD590的输出电流是273.2μA。
而温度为100℃时,输出电流是373.2μA。
温度每升高1℃,输出电流增加1μA,及温度系数为1μA/℃。
图5AD590包装与等效电路图
3.2.3温度检测、放大电路原理
AD590当温度增加1℃时,其输出电流会增加1μA。
即AD590的温度系数为1μA/℃。
所以在T(℃)时的电流I1(T)为
,而温度每变化1℃时,V2的电压变化是为
,表示温度每增加1℃,V2会增加10mV。
在0℃时V2就已经有电压存在,其值为
,则T(℃)时
,
。
如图3所示,OP3组成差动放大器,电压增益为
。
零位调整SVR1则用于抵补0℃的电压值,由差动放大器的公式
可得知,若调整SVR1使V1的电压为2.732V,则0℃时,差动放大器的输出VO为0V。
也就是说,若温度是在0℃至50℃之间,则差动放大器的输出电压是在0V至5V之间,亦即每0.1V的输出代表温度上升1℃。
与设计要求相符合。
3.3A/D转换模块
如图6:
ADC0809把从放大电路传送过来的模拟信号转变成数字信号,并行传送给单片机的P0口,让单片机处理。
图6A/D转换电路图
3.4温度设制、显示及报警电路模块
如图7:
通过按键可以事先设定报警温度值,当显示的温度值超过设定的温度值时,单片机就会从INT0脚发出一连串脉冲,驱动蜂鸣器发出报警声。
图7温度设制、显示及报警电路图
加上LED报警,红色表示高温,绿色表示正常,黄色表示低温
3.5串行通信模块
如图8所示,单片机1把温度值发送数据到单片机2,单片机2接收数据并控制语音芯片报出当前的温度值。
图8串行通信电路图
3.6语音播放模块
语音播放模块如图9所示。
主要由单片机AT89S51与语音芯片ISD2560组成。
图9录音、放音电路图
3.6.1录音、放音简介
如图9所示,首先通过麦克风向语音芯片ISD2560录入“0,1,2,3,4,5,6,7,8,9,10,点,度”等音符。
当单片机2接收到单片机串行发送过来的温度值时,就会自动地去寻找相对应音符的地址,并把这些音符通过扬声器播放出来。
3.6.2ISD2560简介
ISD2560为28脚的DIP器件封装,如图10.
图10ISD2560管脚图
各引脚功能如下:
1~7:
A0/M0~A6/M6地址/模式选择;
8~10:
A7~A9输入地址线;
11:
AUXIN辅助输入;
12、13:
VSSD、VSSA数字地和模拟地
14、15:
SP、SP-扬声器输出.
16:
VCCA模拟信号电源正极
17、18:
MIC、MICREF麦克风输入端和输入参考端
19、AGC自动增益控制
20、21ANAIN、ANAOUT模拟信号输入和输出
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的外围电路及其与单片机连接的硬件电路如图9所示。
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个段,若多片级联还可更多;各个录音段的长度任意,只要总录音时间在所用器件的总时间之内即可。
第4章系统软件设计
4.1系统程序流程图
图11单片机1程序主流程图图12单片机2程序主流程图
如图11:
单片机1为主机,负责温度显示、按键扫描、BCD码转换、串行发送数据给单片机2。
以定时器定时1ms,每定时100次即1秒钟就启动A/D转换、BCD码转换,串行发送2进制数给单片机2。
如图12、13所示:
单片机2为从机,只负责接收数据并播报温度,以T0定时器定时,结合延时程序定时1分钟,使每1分钟更新一次语音音素地址,即每1分钟更新一次温度值,并在中断程序处理过程度中报一次温度。
图13单片机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.1.3软件测试
将各功能子程序进行KAILC系统进行软件仿真,全部通过,再进行硬件仿真,也能全部实现所要求实现的功能。
(1)数码管显示的测试:
把放大器的输出连接到ADC0809的输入端,ADC0809与单片机相连接,观察数码管显示的数值是否与测试点所测值成归一化关系。
(2)双机串行通信的测试:
从主机发送一个8位的二进制数,用示波器观察从机是否接收到。
5.1.4硬件与软件的联机测试
根据前面的测试,说明系统设计的软、硬件设计基本取得成功。
将把程序经编译、下载到相应的AT89S51芯片中,构建电路测试,比较数码管显示的数值与温度计的值和测试点的值。
第6章利用的程序:
#include
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
ucharcodedis_code[10]={0xc0,0xf9,0xa4,0xb0,//0,1,2,3
0x99,0x92,0x82,0xf8,0x80,0x90};//4,5,6,7,8,9,off
uchardataset_data[3]={0x00,0x07,0x03};//预设37.0度
uchardataad_data;//AD转换结果
uchardatadis_buf[3]={0x00,0x00,0x00};//显示缓冲区
uchardatabcd_buf[3]={0x00,0x00,0x00};//十进制BCD码转换存放区
uchardataTIMER0_NUM;
bitTIMER0_flag;
bitdataset_flag=0;
sbitALE=P2^4;
sbitOE=P2^5;
sbitSTART=P2^6;
sbitEOC=P2^7;
sbitP30=P3^0;
sbitselect0=P3^7;
sbitselect1=P3^6;
sbitselect2=P3^5;
sbitK1=P2^0;
sbitK2=P2^1;
sbitK3=P2^2;
sbitK4=P2^3;
sbitbep=P3^3;
sbitSET_IND=P3^4;
sbitP17=P1^7;//小数点
uintdatatemp;
/**********************************************/
/*函数声明
/**********************************************/
voiddelay1ms(uchart);
voidadc(void);
voidBCD(void);
voidkeyscan(void);
voidsend_str(void);
voidbeep(void);
voiddisplay(void);
/**********************************************/
/*按键蜂鸣函数
/**********************************************/
voidbeep2(void)
{
uchardataj,k;
for(j=26;j>0;j--)
{
for(k=254;k>0;k--);
bep=!
bep;
}
bep=1;
}
/**********************************************/
/*蜂鸣报警
/**********************************************/
voidbeep(void)
{
uchardataj,k;
for(j=100;j>0;j--)
{
for(k=254;k>0;k--)
bep=0;
}
bep=1;//关蜂鸣器
}
/*********