为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

智能电子体温计论文

2013-04-27 14页 doc 311KB 77阅读

用户头像

is_640396

暂无简介

举报
智能电子体温计论文 智能体温计 本智能体温计采用AT89S52作为核心器件实现对系统的自动控制,采用双单片机串行处理结构。外界温度经AD590集成温度传感器采集,温度变化转换为线性电压信号,再经由OP07构成高精度低温漂的放大电路处理后,作为ADC0809的模拟输入信号,由ADC0809完成A/D转换,得到8位的数字信号送入单片机1(AT89S52)。单片机1将采集到温度值在LED数码管上显示出来,也通过串口通信将温度信号传到单片2(AT89S52)。此外温度预制,报警电路模块功能也由单片机1完成。单片机2完成温度值的语音播放功能。...
智能电子体温计论文
智能体温计 本智能体温计采用AT89S52作为核心器件实现对系统的自动控制,采用双单片机串行处理结构。外界温度经AD590集成温度传感器采集,温度变化转换为线性电压信号,再经由OP07构成高精度低温漂的放大电路处理后,作为ADC0809的模拟输入信号,由ADC0809完成A/D转换,得到8位的数字信号送入单片机1(AT89S52)。单片机1将采集到温度值在LED数码管上显示出来,也通过串口通信将温度信号传到单片2(AT89S52)。此外温度预制,报警电路模块功能也由单片机1完成。单片机2完成温度值的语音播放功能。通过系统的设计与实现说明本设计切实可以,能够完成题目所要求的基本功能部分,并留有相应的接口,为完成扩展功能打下基础。 关键字:单片机 AD590 ADC0809 ISD2560 一、主要模块的方案论证与比较 1、温度传感器的选择 采用集成温度传感器。集成温度传感器一般且有具有线性好、精度高、灵敏度高、体积小、使用方便等优点。根据实验室现有材料可选取AD590。AD590的测温范围为-55℃~+150℃,能满足本设计的0~50度测量要求。根据相关技术资料:AD590线性电流输出为1 A/K,正比于绝对温度;AD590的电源电压范围为4V~30V,并可承受44V正向电压和20V反向电压,因而器件反接也不会被损坏。该方案能完全满足此设计的要求,故采用此方案。 2、A/D转换器的选择 选用ADC0809。ADC0809数字量是8位,转换时间为100μs,输入模拟电压为单极性的0-5V。由于本设计的要求精度不是很高,ADC0809可以达到要求,故选用此方案。 3、语音提示模块 采用ISD2560语音录放集成电路。这是一种永久记忆型语音录放电路,录音时间为60S,可重复录放10万次。该芯片采用多电平直接模拟量存储专利技术,每个采样值可直接存储在片内单个EEPROM单元中,因此能够非常真实、自然地再现语音、音乐、音调和效果声。此外,ISD2560还省去了A/D和D/A转换器。其集成度较高,内部包括前置放大器、内部时钟、定时器、采样时钟、滤波器、自动增益控制、逻辑控制、模拟收发器、解码器和480K 字节的EEPROM。ISD2560内部EEPROM存储单元均匀分为600行,有600个地址单元,每个地址单元指向其中一行,每一个地址单元的地址分辨率为100ms 。ISD2560可不分段,也可按最小段长为单位来任意组合分段。因此,选择方案二。 二、总系统设计方案 1、总系统方案设计描述: 根据题目要求,将系统分为若干模块,以单片机为核心,完成多项功能。 图1 系统框图 系统框图如图1,AD590把采集的外部温度信号转换成相应的电压,再经过OP07运放放大后作为ADC0809的模拟输入信号,ADC0809将此模拟信号转换成数字信号,通过并口送入到单片机1。单片机1把这些信号处理后通过LED数码管显示出来。同时单片机1还处理按键、报警模块。单片机1把温度值通过串行通信传送给单片机2,控制语音芯片报出相对应的温度值。 2、系统电路原理图 图2 系统电路原理图 如图2所示,该电路主要由电源电路,温度检测、放大电路,A/D转换电路,双单片机串行通信电路,按键输入、报警电路,数码管扫描显示电路以及语音芯片电路组成。 三、主要电路设计与参数计算 1、电源电路模块 图3 电源电路图 如图3所示,220V交流电经变压器市降压、桥式整流、电容滤波后由7812、7805、7905三端集成稳压管分别得到+12V、+5V、-5V电压。给整个电路供电。 2、温度检测、放大模块 图4 AD590温度检测、放大电路图 换成DS18B20温度模块怎么改 如图4所示,温度检测、放大电路主要器件的作用:OP1:电压跟随器;OP2:电压跟随器;OP3:差分放大电路;AD590:温度传感器;SVR:零位调整。 (1)AD590简介 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/℃。 图5 AD590包装与等效电路图 (2)、图2温度检测、放大电路原理 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、A/D转换模块 如图6:ADC0809把从放大电路传送过来的模拟信号转变成数字信号,并行传送给单片机的P0口,让单片机处理。 图6 A/D转换电路图 4、温度设制、显示及报警电路模块 如图7:通过按键可以事先设定报警温度值,当显示的温度值超过设定的温度值时,单片机就会从INT0脚发出一连串脉冲,驱动蜂鸣器发出报警声。 图7 温度设制、显示及报警电路图 加上LED报警,红色表示高温,绿色表示正常,黄色表示低温 5、串行通信模块 如图8所示,单片机1把温度值发送数据到单片机2,单片机2接收数据并控制语音芯片报出当前的温度值。 图8 串行通信电路图 6、语音播放模块 语音播放模块如图9所示。主要由单片机AT89S51与语音芯片ISD2560组成。 图9 录音、放音电路图 (1)录音、放音简介 如图9所示,首先通过麦克风向语音芯片ISD2560录入“0,1,2,3,4,5,6,7,8,9,10,点,度”等音符。当单片机2接收到单片机串行发送过来的温度值时,就会自动地去寻找相对应音符的地址,并把这些音符通过扬声器播放出来。 (2)ISD2560简介 ISD2560为28脚的DIP器件封装,如图10. 图10 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)芯片工作原理 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中各语音段的起始地址即可按任意顺序组合各个语音段。 (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的输入信号,放音时通过它告知本语音段结束,便于单片机立即播放另一个语音段。 (5)本方法的特点 能进行在系统现场录音,随录随放,修改语音方便。 修改录音内容时,可以从其中任意一段开始,修改其后的所有录音内容,不必从第一段开始全部修改。这对一些需要厂家固定一些语音段的系统很有好处,将固定的语音段放置在前面的段落中,允许用户录制的放在后面,用户修改录音内容时只需修改后面的语音段即可,不影响厂家录制的语音。 分段灵活。单片ISD2560可分1~600个段,若多片级联还可更多;各个录音段的长度任意,只要总录音时间在所用器件的总时间之内即可。 四、系统软件设计 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中断程序流程图 五、系统测试 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能够正常播放各个语音,说明语音播放模快的硬件设计可行。 (2)系统整体测试 测试方法——以水温代替人的体温,用一根水银温度计与所制作的体温计探头(捆绑)同时接触被测热水的同一点。 (A)准备一杯0摄氏度的冰水混合物和一杯热水。从0度开始记录测试点的电压值与温度计对比较。记完一个数后,往杯中加热水,这样,每测一次,记录一次数据,再加一次热水,这样使水温渐渐升高,一直测到水温为50摄氏度。测试结果如表1所示,说明数码管显示的数值是否与测试点所测值在误差允许范围内是成归一化关系的。 (B)检测水温高于50摄氏度时测试点的电压值。看是否为+5V。结果显示为+5V,说明保护电路可行。 2、软件测试 将各功能子程序进行KAIL C系统进行软件仿真,全部通过,再进行硬件仿真,也能全部实现所要求实现的功能。 (1)数码管显示的测试:把放大器的输出连接到ADC0809的输入端,ADC0809与单片机相连接,观察数码管显示的数值是否与测试点所测值成归一化关系。 (2)双机串行通信的测试:从主机发送一个8位的二进制数,用示波器观察从机是否接收到。 3、硬件与软件的联机测试 根据前面的测试,说明系统设计的软、硬件设计基本取得成功。将把程序经编译、下载到相应的AT89S51芯片中,构建电路测试,比较数码管显示的数值与温度计的值和测试点的值。整体测试结果如表1所示。 六、测试数据及实验结果 1 测试数据 按照前述的测试方法,取得到测试结果如表1所示。 如表1 数码显示与测试点电压随温度变化的关系 温度值(摄氏度) 数码管显示值 测试点电压值(V) 0 00.0 0.0 10.0 10.0 1.001 19.0 19.0 1.902 38.2 38.2 3.821 48.0 48.0 4.802 60.5 50.0 5.001 2 测试结果 根据上述测试结果,此系统的设计基本取得成功。智能体温计在测试温度方面有一定的成效,测试误差较小,显示的误差与实际的温度值误差在 内,在功能上达到了赛题的要求。 3 心得与体会 通过本次设计,深深感到理论与实践之间的差距。在学习单片课程时,很多知识点在理论完全理解了,但到具体的电路设计与实现中,会出现很多一时无法理解的现象,要通过不断的通过强化自身的实践动手能力的培养,才能用理论来指导实践,通过实践来进一步深入理解理论。 七 结束语 本设计完成了以下功能: (1)温度信号的采集与归一化处理; (2)A/D转换; (3)温度值的显示,显示的误差与实际的温度值误差在 内; (4)语音播报温度与声音报警功能。 参考文献 1 全国大学生电子设计竞赛组委会.第五届全国大学生电子设计竞获奖作品选编.北京:北京理工大学出版社,2003年第1版. 2 王港元.电工电子实践指导.南昌:江西科学技术出版社.2005.03第一版 3 谢自美.电子线路设计·实验·测试.武汉:华中科技大学出版社.2000.5第二版. 4 胡汉才.单片机原理及系统设计. 北京:清华大学出版社。2001.01第一版. 5 由集成温度传感器AD590构成的多温度测试系统.北京:电子技术应用.1998年第6期. 程序: #include #include #include #define uchar unsigned char #define uint unsigned int uchar code dis_code[10]={0xc0,0xf9,0xa4,0xb0, // 0, 1, 2, 3 0x99,0x92,0x82,0xf8,0x80,0x90}; // 4, 5, 6, 7, 8, 9, off uchar data set_data[3]={0x00,0x07,0x03}; //预设37.0度 uchar data ad_data; //AD转换结果 uchar data dis_buf[3]={0x00,0x00,0x00}; // 显示缓冲区 uchar data bcd_buf[3]={0x00,0x00,0x00}; //十进制BCD码转换存放区 uchar data TIMER0_NUM; bit TIMER0_flag; bit data set_flag=0; sbit ALE=P2^4; sbit OE=P2^5; sbit START=P2^6; sbit EOC=P2^7; sbit P30=P3^0; sbit select0=P3^7; sbit select1=P3^6; sbit select2=P3^5; sbit K1=P2^0; sbit K2=P2^1; sbit K3=P2^2; sbit K4=P2^3; sbit bep=P3^3; sbit SET_IND=P3^4; sbit P17=P1^7; //小数点 uint data temp; /**********************************************/ /*函数声明 /**********************************************/ void delay1ms(uchar t); 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;j>0;j--) { for(k=254;k>0;k--); bep=!bep; } bep=1; } /**********************************************/ /*蜂鸣报警 /**********************************************/ void beep(void) { uchar data j,k; for(j=100;j>0;j--) { for(k=254;k>0;k--) bep=0; } bep=1; //关蜂鸣器 } /**********************************************/ /*延时1ms函数 /**********************************************/ void delay1ms(uchar t) { uchar j,k; for(j=0;jset_data[2]) //报警值检测 beep(); else if(bcd_buf[2]==set_data[2]) { if(bcd_buf[1]>set_data[1]) beep(); else if(bcd_buf[1]==set_data[1]) { if(bcd_buf[0]>set_data[0]) beep(); } } } /**********************************************/ /*键盘扫描函数 /**********************************************/ void keyscan(void) { uchar data m; if(K1==0) //K1设置键 { for(m=0;m<100;m++) //延时11ms display(); if(K1==0) { beep2(); //按键时响一声 set_flag=!set_flag; //设置标志位取反 } } if(set_flag==1) //若设置键按下,则检测K2-K4 { SET_IND=0; //设置灯亮 if(K2==0) //K2:十位加1 { for(m=0;m<100;m++) //延时11ms display(); if(K2==0) { beep2(); //按键时响一声 set_data[2]++; if(set_data[2]==5) set_data[2]=0; } } if(K3==0) //K3:个位加1 { for(m=0;m<100;m++) //延时11ms display(); if(K3==0) { beep2(); //按键时响一声 set_data[1]++; if(set_data[1]==10) set_data[1]=0; } } if(K4==0) //K4:小数位加1 { for(m=0;m<100;m++) //延时11ms display(); if(K4==0) { beep2(); //按键时响一声 set_data[0]++; if(set_data[0]==10) set_data[0]=0; } } } else SET_IND=1; } /**********************************************/ /*显示函数 /**********************************************/ void display(void) { if(set_flag) //设置键按下,则显示设置的数值 { dis_buf[0]=set_data[0]; dis_buf[1]=set_data[1]; dis_buf[2]=set_data[2]; } else { //否则显示温度值 dis_buf[0]=bcd_buf[0]; dis_buf[1]=bcd_buf[1]; dis_buf[2]=bcd_buf[2]; } P1 = 0xff; // 先关闭所有数码管 P1 = dis_code[dis_buf[0]]; // 小数显示代码传送到P1口 select2=1;select1=1;select0=0; // 位选 delay1ms(1); //延时1ms P1 = dis_code[dis_buf[1]]; // 个位显示代码传送到P1口 select2=1; select1=0;select0=1; // P17=0; delay1ms(1); //延时1ms P1 = dis_code[dis_buf[2]]; // 十位显示代码传送到P1口 select2=0;select1=1;select0=1; // delay1ms(1); //延时1ms } /**********************************************/ /*串口发送一个字符函数 /**********************************************/ void send_str(void) { SBUF = ad_data; //串口发送AD转换温度值 while(TI==0); // 等待数据传送 TI = 0; // 清除数据传送标志 } /**********************************************/ /*主函数 /**********************************************/ void main(void) { TMOD = 0x21; // 定时器1工作于方式2,8位自动重载模式, 用于产生波特率 // 定时器0工作于方式1,产生1s的AD间隔时间 TH0=15536/256; //T0定时50ms TL0=15536%256; TH1 = 0xe1; // 波特率1000 TL1 = 0xe1; SCON = 0x50; // 设定串行口工作方式1 PCON = 0x00; // 波特率不倍增 TI=0; //清除发送中断标志 EA = 1; // 开总中断 ET0 = 1; //开T0中断 ET1=0; TR1 = 1; // 启动T1 TR0 = 1; //启动T0 while(1) { display(); keyscan(); if(TIMER0_flag) { 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; } } /********************************************** Project Name : 智能体温计程序_从机 Designed By : sc.Dai Date : 2007.5.30 **********************************************/ #include #include #include #define uchar unsigned char #define uint unsigned int uchar data bcd_buf[3]={0x00,0x00,0x00}; //十进制BCD码转换存放区 //uchar code sound_add[13]={0x00,0x14,0x28,0x3c,0x50,0x64,0x78, //0x8c,0xa0,0xb4,0xc8,0xdc,0xf0}; //0,1,2,3,4,5, //6,7,8,9,十,点,度 存放地址 uchar code sound_add[13]={0x00,0x0a,0x14,0x1e,0x28,0x32,0x3c, 0x46,0x50,0x5a,0x64,0x6e,0x78}; //0,1,2,3,4,5, //6,7,8,9,十,点,度 存放地址 uchar data order[6]; //"X十X点X度" uchar ad_data; //存放接收的AD转换数据 uint TIMER_NUM; //1分钟计时 sbit EOM=P2^0; sbit PD=P2^1; sbit CE=P2^2; uchar i; uint data temp; /********************************************** /*十进制BCD码转换函数 /**********************************************/ void BCD(void) { bcd_buf[2]=(ad_data/51); //十位 temp=(ad_data%51); temp=(temp*10); bcd_buf[1]=(temp/51); //个位 temp=(temp%51); temp=temp*10; bcd_buf[0]=(temp/51); //小数位 } /**********************************************/ /*语音芯片报温度函数 /*调用一次一次温度 /**********************************************/ void sound_play(void) { //PD=1; _nop_(); _nop_(); PD=0; //节电控制端接低电平,正常工作 for(i=0;i<6;i++) { uchar data n=0; P0=sound_add[order[i]];// CE=0; //开始播放 _nop_(); _nop_(); CE=1; while(EOM); while(EOM==0); _nop_(); _nop_(); } } /**********************************************/ /*主函数 /**********************************************/ void main(void) { TMOD = 0x21; // 定时器1工作于方式2,8位自动重载模式, //用于产生波特率.定时器0工作与方式1,用于1s定时 TH1 = 0xe1; // 波特率为1000 TL1 = 0xe1; SCON = 0x50; // 设定串行口工作方式 PCON = 0x00; // 波特率不倍增 RI=0; //清除接收中断标志 EA = 1; // 开总中断 ET0=1; //开T0中断 ES=1; //开串口中断 PT0=1; //T0高优先级 TR0=1; //启动T0 TR1 = 1; // 启动定时器1 while(1) { BCD(); order[0]=bcd_buf[2]; order[1]=0x0a; order[2]=bcd_buf[1]; order[3]=0x0b; order[4]=bcd_buf[0]; order[5]=0x0c; } } /**********************************************/ /*串口中断服务程序 /**********************************************/ void serial(void) interrupt 4 { RI=0; ad_data=SBUF; RI=0; } /**********************************************/ /*T0中断服务程序 /**********************************************/ void timer0(void) interrupt 1 { TH0=0xec; //10ms定时 TL0=0x78; TIMER_NUM++; if(TIMER_NUM==12000) //一分钟 { TIMER_NUM=0; sound_play(); } } 5 _1234567893.unknown _1234567895.unknown _1234567897.unknown _1234567898.unknown _1234567899.unknown _1234567896.unknown _1234567894.unknown _1234567891.unknown _1234567892.unknown _1234567890.unknown
/
本文档为【智能电子体温计论文】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索