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

智能体温计

2018-04-03 35页 doc 245KB 48阅读

用户头像

is_083599

暂无简介

举报
智能体温计智能体温计 数理与信息工程学院《单片机原理及应用》期末课程设计——单片机控制的节水灌溉系统 智能体温计 电子信息工程 电信061 陶 如 红 06220107 余 水 宝 ( 2008.12 ) 1 数理与信息工程学院《单片机原理及应用》期末课程设计——单片机控制的节水灌溉系统 „„„„„„„„„„„„„„„„„„„„„„„„„„„„„3 1.1 智能体温计概述 „„„„„„„„„„„„„„„„„„„„„„„„3 1.2 本次设计要求 „„„„„„„„„„„„„„„„„„„„„„„„„4 1.3 系...
智能体温计
智能体温计 数理与信息工程学院《单片机原理及应用》期末课程——单片机控制的节水灌溉系统 智能体温计 电子信息工程 电信061 陶 如 红 06220107 余 水 宝 ( 2008.12 ) 1 数理与信息工程学院《单片机原理及应用》期末课程设计——单片机控制的节水灌溉系统 „„„„„„„„„„„„„„„„„„„„„„„„„„„„„3 1.1 智能体温计概述 „„„„„„„„„„„„„„„„„„„„„„„„3 1.2 本次设计要求 „„„„„„„„„„„„„„„„„„„„„„„„„4 1.3 系统主要功能 „„„„„„„„„„„„„„„„„„„„„„„„„4 „„„„„„„„„„„„„„„„„„„„„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 电源电路模块„„„„„„„„„„„„„„„„„„„„„„8 2.3.2 温度检测和放大模块„„„„„„„„„„„„„„„„„„„8 2.3.3 A/D转换模块„„„„„„„„„„„„„„„„„„„„„„9 2.3. 4 温度设置、显示及报警电路模块 „„„„„„„„„„„„„10 2.3.5 串行通信模块 „„„„„„„„„„„„„„„„„„„„„10 2.3.6 语音播放模块 „„„„„„„„„„„„„„„„„„„„„11 „„„„„„„„„„„„„„„„„„„„„„„„„13 3.1 系统主程序设计„„„„„„„„„„„„„„„„„„„„„„„„13 3.2 程序清单„„„„„„„„„„„„„„„„„„„„„„„„„„„14 „„„„„„„„„„„„„„„„„„„„„„„„„„„„24 „„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„25 2 数理与信息工程学院《单片机原理及应用》期末课程设计——单片机控制的节水灌溉系统 数理与信息工程学院 06电子信息工程 陶如红 指导教师:余水宝 1 随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它在日 用电子产品中的应用越来越广泛,给人带来的方便也是不可否定的,其中智能体温计 就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、 提供更好的更方便的设施就需要从单片机技术入手,一切向着数字化控制,智能化控 制方向发展。 传统的温度计有反应速度慢、读数麻烦、测量精度不高、误差大等缺点,温度传 感器AD590具有线性优良、性能稳定、灵敏度高、抗干扰能力强、使用方便等优点, 广泛应用于冰箱、空调器、粮仓等日常生活中温度的测量和控制。本利用集成温 度传感器AD590设计并制作了一款基于AT89S52的3位数码管显示的智能体温计,其 电路简单,软硬件结构模块化,易于实现。 随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领 域,已经成为一种比较成熟的技术,本文将介绍一种基于单片机控制的智能体温。 本智能体温计采用 AT89S52作为核心器件实现对系统的自动控制,采用双单片 机串行处理结构。外界温度经 AD590 集成温度传感器采集,温度变化转换为线性电 压信号,再经由 OP07 构成高精度低温漂的放大电路处理后,作为 ADC0809 的模拟输入信号,由ADC0809 完成 A/D转换,得到 8位的数字信号送入单片机 1(AT89S52)。单片机 1 将采集到温度值在 LED数码管上显示出来, 也通过串口通信将温度信号传到单片 2 (AT89S52) 。此外温度预置, 报警电路模块功能也由单片机 1完成。 单片机2 完成温度值的语音播放功能。通过系统的设计与实现本 设计方案切实可以,能够完成题目所要求的基本功能部分,并留有相应的接口,为完 成扩展功能打下基础。 3 数理与信息工程学院《单片机原理及应用》期末课程设计——单片机控制的节水灌溉系统 单片机在日用电子产品中的应用越来越广泛,温度则是人们日常生活中常常需要 测量和控制的一个量。本论文通过AT89S52单片机和温度传感器AD590从硬件和软件 两方面进行了设计。 本次设计的设计要求: (1)基本范围0?-50?; (2)精度误差小于0.1?; (3)LED数码直读显示; 扩展功能: (1)实现语音报温功能; (2)实现报警功能; 本设计完成了以下功能: (1)温度信号的采集与归一化处理; (2)A/D转换; (3)温度值的显示,显示的误差与实际的温度值误差在?0.1? 内; (4)语音播报温度与声音报警功能。 4 数理与信息工程学院《单片机原理及应用》期末课程设计——单片机控制的节水灌溉系统 :采用热敏电阻。热敏电阻价格便宜,对温度灵敏,原理简单,但线性度 不好,如不进行线性补偿,对于本设计归一化输出的要求,难以达到设计精度;如要 对非线性进行补偿,则电路结构复杂,难以调整。故不采用。 :采用热电偶。热电偶在测温范围内热电性质稳定,不随时间变化而变化, 电阻温度系数小,导电率高,比热小,但热电偶一般体积较大,使用不方便,价格相 对较高。作为一个智能体温计的温度传感器,要求体积小,使用方便,便于携带,故 此方案不合适。 :采用集成温度传感器。集成温度传感器一般且有具有线性好、精度高、 灵敏度高、体积小、使用方便等优点。根据实验室现有材料可选取 AD590。AD590 的测温范围为-55?~+150?,能满足本设计的 0~50 度测量要求。根据相关技术资料: AD590线性电流输出为 1 µ A/K,正比于绝对温度;AD590 的电源电压范围为 4V~30V,并可承受 44V正向电压和 20V反向电压,因而器件反接也不会被损坏。该方案 能完全满足此设计的要求,故采用此方案。 :选用 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 可以达到要求,故选用此方案。 :通过 A/D转换器、单片机,存储器,D\A转换器实现声音信号的采样、 处理、存储和实现。首先将声音信号放大,通过 AD转换器采样将语音模拟信号转换 成数字信号,并由单片机和处理存放到存储器中,实现录音操作。在录、放音过程中 由单片机控制 D/A转换器,将存储器中的数据转化成声音信号。此方案安装调试复 杂,集成度低。 5 数理与信息工程学院《单片机原理及应用》期末课程设计——单片机控制的节水灌溉系统 :采用 ISD2560语音录放集成电路。该芯片采用多电平直接模拟量存储 专利技术,每个采样值可直接存储在片内单个 EEPROM单元中,因此能够非常真实、 自然地再现语音、音乐、音调和效果声。此外,ISD2560 还省去了 A/D和 D/A转换器。其集成度较高,内部包括前置放大器、内部时钟、定时器、采样时钟、滤波器、 自动增益控制、逻辑控制、模拟收发器、解码器和 480K 字节的 EEPROM。ISD2560可不分段,也可按最小段长为单位来任意组合分段。因此,选择方案二。 根据设计要求,可将系统分为若干模块,以单片机为核心,完成多项功能。 AD590语音芯片LED显示温度采集ISD2560 串口传送 放大电路单片机1单片机2 ADC0809按键预置与 转换电路报警模块图2-1 系统框图 系统框图如图2- 1,AD590 把采集的外部温度信号转换成相应的电压,再经过 OP07 运放放大后作为 ADC0809的模拟输入信号,ADC0809 将此模拟信号转换成数字信号, 通过并口送入到单片机1。单片机1把这些信号处理后通过 LED 数码管显示出来。同时单片机1还处理按键、报警模块。单片机 1把温度值通过串行通信传送给单片 机 2,控制语音芯片报出相对应的温度值。 如图 2-2 所示,该电路主要由电源电路,温度检测、放大电路,A/D转换电路,双单片机串行通信电路,按键输入、报警电路,数码管扫描显示电路以及语音芯片电 路组成。 6 数理与信息工程学院《单片机原理及应用》期末课程设计——单片机控制的节水灌溉系统 图2-2 系统电路原理图 7 数理与信息工程学院《单片机原理及应用》期末课程设计——单片机控制的节水灌溉系统 图2-3 电源电压电路 如图 2-3 所示,220V交流电经变压器市降压、桥式整流、电容滤波后经7812、7805、7905 三端集成稳压管分别得到+12V、+5V、-5V电压,给整个电路供电。 图2-4 AD590 温度检测、放大电路图 如图2-4 所示,温度检测、放大电路主要器件的作用:OP1、OP2:电压跟随器; OP3:差分放大电路;AD590:温度传感器;SVR:零位调整。 AD590 是电流输出型的半导体温度感测组件,主要特性如下: 1.具有线性输出电流。 2.宽广的操作温度范围(-55?~150?)。 3.宽广的工作电压范围(+4V~+30V)。 8 数理与信息工程学院《单片机原理及应用》期末课程设计——单片机控制的节水灌溉系统 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/?。 图2-5 AD590 包装与等效电路图 AD590的温度系数为 1μA/?。所以在 T(?)时的电流I1(T)为 I1(T)=I1(0)+1μA/?*T (2-1) 而温度每变化 1?时,V2 的电压变化是为1μA/?*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 所示,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-6:ADC0809 把从放大电路传送过来的模拟信号转变成数字信号,并行 传送给单片机的 P0 口,让单片机处理。 9 数理与信息工程学院《单片机原理及应用》期末课程设计——单片机控制的节水灌溉系统 图2-6 A/D转换电路图 如图 2-7:通过按键可以事先设定报警温度值,当显示的温度值超过设定的温度 值时,单片机就会从 INT0 脚发出一连串脉冲,驱动蜂鸣器发出报警声。 图2-7 温度设制、显示及报警电路图 如图 2-8 所示, 单片机 1 把温度值发送数据到单片机 2,单片机2 接收数据并控制语音芯片报出当前的温度值。 10 数理与信息工程学院《单片机原理及应用》期末课程设计——单片机控制的节水灌溉系统 图2-8 串行通信电路图 语音播放模块如图 2-9所示。主要由单片机 AT89S51 与语音芯片 ISD2560 组成。 图2-9 录音、放音电路图 如图2-9 所示,首先通过麦克风向语音ISD256录入“0,1,2,3,4,5,6,7,8,9,10,点,度”等音符。当单片机 2 接收到单片机串行发送过来的温度值时,就会自动地 去寻找相对应音符的地址,并把这些音符通过扬声器播放出来。 ISD 器件选用录音时间为 60s 的 ISD2560 器件,以单片机为处理机,外接控制 每个语音段录音开始与停止按键,外部存储器 EEPROM 用于保存每个语音首地址。ISD 的外围电路及其与单片机连接的硬件电路如图 2-9 所示。 ISD2560 与 AT89S52 的接口部分包含输入地址线 A0~A9、片选 CE(CE=0 选中 ISD芯片)、芯片低功耗状态控制 PD、录放音控制选择 P/R(P/R=0 为录音;P/R=1 为放音)、录放音结束信号输出 EOM,将它作为 AT89S51外部中断 0的输入信号,放音时通过它告知本语音段结束,便于单片机立即播放另一个语音段。 11 数理与信息工程学院《单片机原理及应用》期末课程设计——单片机控制的节水灌溉系统 ISD2560引脚封装如图 2-10所示. 图2-10 ISD2560管脚图 能进行在系统现场录音,随录随放,修改语音方便。 修改录音内容时,可以从其中任意一段开始,修改其后的所有录音内容,不必从 第一段开始全部修改。这对一些需要厂家固定一些语音段的系统很有好处,将固定的 语音段放置在前面的段落中, 允许用户录制的放在后面, 用户修改录音内容时只需修改后面的语音段即可,不影响厂家录制的语音。 分段灵活。单片 ISD2560 可分1~600 个段,若多片级联还可更多;各个录音段的长度任意,只要总录音时间在所用器 件的总时间之内即可。 12 数理与信息工程学院《单片机原理及应用》期末课程设计——单片机控制的节水灌溉系统 3 如图 3-1:单片机 1 为主机,负责温度显示、按键扫描、BCD码转换、串行发送数据给单片机 2。以定时器定时 1ms,每定时 100 次即1 秒钟就启动 A/D转换、BCD码转换,串行发送 2 进制数给单片机 2。 开始 初始化 显示温度 按键扫描 N1秒钟到否? Y 启动A/D转换 BCD码转换图3-1 单片机1 程序主流程图 串行发送 13 数理与信息工程学院《单片机原理及应用》期末课程设计——单片机控制的节水灌溉系统 如图 3-2,3-3所示:单片机 2 为从机,只负责接收数据并播报温度,以 T0 定时器定时,结合延时程序定时1分钟, 使每1分钟更新一次语音音素地址, 即每1分钟更新一次温度值,并在中断程序处理过程度中报一次温度。 T0中断串口中断开始入口入口 初始化N更新温度数据1分钟到否 Y二进制转 返回十进制BCD码 计数变量清零 N 1分钟到否播报一次温度 Y 播报一次温度返回 图3-2 单片机2程序主流程图 图3-3 单片机 2的T0中断程序流程图 /**********单片机1程序*********************/ #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; 14 数理与信息工程学院《单片机原理及应用》期末课程设计——单片机控制的节水灌溉系统 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; } 15 数理与信息工程学院《单片机原理及应用》期末课程设计——单片机控制的节水灌溉系统 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 设置键 17 数理与信息工程学院《单片机原理及应用》期末课程设计——单片机控制的节水灌溉系统 { 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(); //按键时响一声 18 数理与信息工程学院《单片机原理及应用》期末课程设计——单片机控制的节水灌溉系统 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 } /**********************************************/ /*串口发送一个字符函数 19 数理与信息工程学院《单片机原理及应用》期末课程设计——单片机控制的节水灌溉系统 /**********************************************/ 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 中断服务程序 20 数理与信息工程学院《单片机原理及应用》期末课程设计——单片机控制的节水灌溉系统 /*每秒钟 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 #define uchar unsigned char #define uint unsigned int uchar data bcd_buf[3]={0x00,0x00,0x00}; //十进制 BCD码转换存放区 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点 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); 21 数理与信息工程学院《单片机原理及应用》期末课程设计——单片机控制的节水灌溉系统 bcd_buf[1]=(temp/51); //个位 temp=(temp%51); temp=temp*10; bcd_buf[0]=(temp/51); //小数位 } /**********************************************/ /*语音芯片报温度函数 /*调用一次报告一次温度 /**********************************************/ void sound_play(void) { _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; // 开总中断 22 数理与信息工程学院《单片机原理及应用》期末课程设计——单片机控制的节水灌溉系统 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(); } } 23 数理与信息工程学院《单片机原理及应用》期末课程设计——单片机控制的节水灌溉系统 在学习单片机课程时,很多知识点虽然能理解,但到具体的电路设计与实现中, 会出现很多一时无法理解的现象,只有通过不断的对自身实践动手能力的培养,才能 用理论来指导实践,通过实践来进一步深入理解理论。 从这次的课程设计中,我真真正正的意识到,在以后的学习中,要理论联系实际, 把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写 与读的过程中才能提高。 对于本次设计,采用2片单片机虽然能完成设计要求,但显然单片机2还有很多I/O口没有充分利用,对此,可以考虑通过单片机1进行并行I/O口扩展,如连接可编程并行口8255芯片,这样既能省去一片单片机,减少成本,降低功耗,还能减少 因2片单片机串行通信而可能出现的错误,以及因2个晶振频率误差而可能产生串行 通信波特率的不同,因此我希望在下次的设计中能对此有所改进。 24 数理与信息工程学院《单片机原理及应用》期末课程设计——单片机控制的节水灌溉系统 [1] 李朝青单片机原理及接口技术(简明修订版)杭州:北京航空航天大学出版社,1998 [2] 胡汉才.单片机原理及系统设计. 北京:清华大学出版社。2001.01 [3] 王港元.电工电子实践指导.南昌:江西科学技术出版社.2005.03 [4] 由集成温度传感器 AD590 构成的多温度测试系统.北京:电子技术应用.1998 25
/
本文档为【智能体温计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索