欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    《基于单片机的ad590测温系统》课程设计报告.doc

    • 资源ID:4015584       资源大小:275.50KB        全文页数:17页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《基于单片机的ad590测温系统》课程设计报告.doc

    基于单片机的ad590测温系统课程设计报告专业班级: 电子信息工程 07 姓 名: 指导教师: 2010 年 11 月 5 日信息与电子工程学院目 录1、前言12、设计方案比较13、硬件设计34、软件设计75、调试86、总结97、附录10前言近年来随着科技的飞速发展,为使生活更加便捷,单片机技术正在不断地走向日常应用,同时带动传统检测技术日新月异。在人们生活环境中,温度扮演着举足轻重的角色,人们无时无刻在与温度打交道。可以说几乎80%的工业部门都不得不考虑温度的因素。目前测量温度一般使用的温度计,除了常用的水银或酒精制成的温度计外,还有用其他材料制成的温度计。本次课程设计是基于单片机的测温系统,此系统的传感器是热敏电阻,利用热敏电阻负温度系数的特性构建出测量电路,再通过STC12C5608AD单片机,单片机内部有10位8路的AD转换,可把测量电路输出的电压值转化为AD值,然后通过四位数码管显示出温度,本次设计使用键盘设置温度报警点,这样可在不同场合使用,当超过温度时显体管就会闪烁。使用电脑上USB接口的5V电压即可让这个系统工作。经过keil软件编辑,编译,链接,调试以及仿真,写出满足控制要求的程序,通过下载线把写好的程序下载单片机内。 单片机即可自主反复执行程序,从而完成测温过程。这种设计方案实现了温度实时测量和显示。该系统抗干扰能力强,具有较高的测量精度,安装简单方便,性价比高,可维护性好。这种测温系统可广泛应用于各种场合,实现对的实时测量,是一种比较智能、经济的方案,适于大力推广,可带来很好的经济效益和社会效益。设计方案比较方案一:(晶体管3DG6作为温度传感器) 在现代工农业生产过程中,环境温度的测量和控制是极为普遍和重要的。为了提高生产效率,降低生产成本,寻求性能可靠价格低廉,且应用广泛的元器件是生产过程的首选。本测量仪就是采用极为普遍的晶体管3DG6作为温度传感器,廉价的电压/频率转换器(V/F)LM331与AT89C51单片机组成的温度测量仪。它具有成本低,调校简便,自动补偿,测量精度高的特点。 半导体理论和实验证明,在 -50+150 的范围内,当发射结正偏时,不管集电结反偏还是零偏,在一定的集电极电流形式下,NPN硅晶体管的基极-发射极正向电压UBE随温度T的增加而减小。并有良好的线性关系,其电压温度系数约-2.1mv/。因此,晶体管3DG6不但可以作为通常的电子器件使用,而且也是一种价格低廉,取材方便,性能良好的温度传感器,但是此方案抗干扰性差,数据处理复杂,数据存放空间大,且受市场限制。方案二:(DS18B20作为温度传感器)DS18B20是DALLAS公司生产的一线式数字温度传感器,具有3引脚TO92小体积封装形式;温度测量范围为55125,可编程为9位12位A/D转换精度,测温分辨率可达0.0625,被测温度用符号扩展的16位数字量方式串行输出;其工作电源既可在远端引入,也可采用寄生电源方式产生;多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。以上特点使DS18B20非常适用于远距离多点温度检测系统。 方案三:(AD590作为温度传感器)AD590是单片集成感温电流源。它的主要特性如下:流过器件的电流(uA)等于器件所处环境的热力学温度是线性关系, 方便编程人员对电压转化为温度的计算,测温范围为-55+150。电源电压范围为4V30V,可以承受44V正向电压和20V反向电压,输出电阻为710M 欧姆。共有I、J、K、L、M五档,其中M档精度最高,在-55+150范围内非线性误差为±0.3。利用热敏电阻负温度系数的特性构建出测量电路,再通过STC12C5410AD单片机,单片机内部有10位8路的AD转换,可把测量电路输出的电压值转化为AD值,然后通过四位数码管显示出温度,本次设计使用键盘设置温度报警点,这样可在不同场合使用,当超过温度时蜂鸣器就会发出声音。使用电脑上USB接口的5V电压即可让这个系统工作。经过keil软件编辑,编译,链接,调试以及仿真,写出满足控制要求的程序,通过下载线把写好的程序下载单片机内。 单片机即可自主反复执行程序,从而完成测温过程。 总结:与方案一相比,方案三可行性好,便于标定,好调节,精度高,线性好,便于计算,电路有较好的平衡性与灵敏性,测量范围为从55150。与方案二相比,方案三的测量范围大,而且价格便宜,而且更适应生活的温度测量要求。而且方案三的电路简单,软硬件结构模块化,可根据外界温度的变化,直接在数码管上显示温度值,易于观察。综上所述选方案三最适合.硬件设计 硬件电路设计是课程设计的一大组成,软件设计也需在硬件设计的基础上才能完成。电路图的设计也是系统设计的一大助力,设计的时候通过protel将电路图连接好,此时清晰明了,为后面的焊接提供方便。图1 STC12C5410AD与RS232的连接电路图如图1所示,这是单片机STC12C5410AD与RS232的管脚连接图,当单片机通过RxD和TxD与RS232的R1OUT和T1IN的连接时即可通信,而RS232通过串口又与电脑连接,即可将电脑中程序下载到单片机中,完成所需要的功能,并可以 按照所需修改便能完成不同的功能。图2 AD590 电路连接方式如图2所示,是AD590的温度测量电路,此电路运用了AD590对周过环境温度进行测量,AD590随着环境温度变化改变AD590输出的电流值,它们的关系是i= T+273。差动运算放大器的正端连接AD590,获得电压值为(273+T)*10Kv,而差动运算放大器的负端连接的是2.73*10kv,通过运算放大器的减法运算,以及放大器的放大倍数是5.6倍。最后的电压值输出 V=5.6/100。再将随温度变化的电压值输入到单片机进行处理。图3 74HC164的连接电路图4 四位数码管如图3、4所示,单片机的P1.0,,P1.1控制74HC164的DA和CK,通过164可使串行数据转化为并行数据,用以缓解I/O口太少的问题。164输出口连接数码管,用于选择输出的数字。图5 报警电路如图5所示可知,单片机的P2.4控制发光二极管,当提示温度超过限制温度时,p2.4为高电平,发光二极管闪烁,提示温度超过限制温度。图6 USB供源电路如图6所示为USB供源电路,当USB插在电脑上时,可为整个系统提供5V的电压,电路中的电感可防止电脑和电路之间相互干扰,当电路接通时发光二极管会接通发光。图7 按键电路如图7所示,本测温系统有三个按键接有三个上拉电阻分别连接脚p3.2,p3.3,p3.4。这三个脚用来实现设置温度上限。其中p3.2脚用来改变十位的温度,p3.3脚用来改变个位的温度,p3.4脚用来切换设置温度和测量温度的界面显示。图8 测温系统完整的电路图如图8所示,这便是完整的基于单片机的热敏电阻测温系统的电路图,所能完成的功能如下:1、单片机通过AD590进行AD采样计算温度。 2、温度能4位显示。 3、能通过键盘进行温度报警点设置。 4、温度超限时通过发光二极管闪烁报警。软件设计如图是主函数流程图。 开始时端口,定时器初始化,eeprom初始化并读取储存值。在while(1)循环里取的10个温度值取平均,扫描键盘是否进入限制温度的显示。若否,显示测量温度值,若是,显示限制温度值。对四个晶体管的引脚分别选中,显示相应位上的值,并判断P脚是否选中,若选中相应晶体管的数值加一。最后判断测量温度是否大于显示温度,若是报警。图 主函数流程图 本系统的显求部分使用了定时器中断,通用这个方法数码管显示比较稳定,不会受到其它代码影响,到了定时的时间,定时器溢出,立刻就去执行显示动作。调试一、 软件调试过程1、 用keil软件编写C语言程序,实现相应功能;2、 用单步运行和断点运行方法调试步骤;3、 调试显示的过程中,在watch窗口中显示需要观察的温度的十、个、小数点后一位的值。4、 每块实现功能程序单独调试。排除其它干扰。5、 把程序烧入单片机运行结果观察,然后修改,目标达到最佳效果。二、 软件调试遇到的问题 在调试的过程中,遇到各种各样的问题,使结果不理想。问题总结如下:1、 最开始时,程序烧进单片机显示的温度全是乱码。考虑是否是显示数字程序编码错误。给显示程序一个特定的值,显示的结果正确,排除是显示问题。如法炮制,排除温度计算问题。得到是传感器得到采样值经过转化出现错误。解决方法:给单片机端口初始化,P1M0=0x10,P1M1=0x00,使口只为输入端。2、 温度显示画面抖动很快,数字模糊。解决方法:取多个温度值组成数组,如数组溢出,温度值平移一位。最后取的平均值显示输出。显示界面清晰,温度值准确。3、 按键按下去时,晶体管显示抖动一下,给人感觉非常不舒服。解决方法:用延时,判断有键按下,暂时不执行,程序继续往下走,过了一段时间再执行。4、 限制温度无法储存。每次重新上电需再次设置。解决方法:使用STC12C2608单片机里的eeprom功能,把每次设置的温度存储进去,下次上电时再读取。 5、在接AD590温度采集电路前,无输入状态或固定电压输入下的 显示不正确。 解决方法:由于AD转换子函数所得结果为数字量,因此要把转换值乘以基准电压后再乘1024。总结这次课程设计是我们第一次接触完整的系统设计,在这次设计中学到了很多,虽然在软件设计编程过程中遇到了很多以前没注意或者容易出错的问题,经过每一次改正都是学习的一次突破,非常感谢老师给我们的这次机会,让我们从理论学习转为真正的实际操作,了解到了理论学习与实际操作其实有很大的区别,只有在不断调试才能进步,而有时调试通过,将程序烧到板子上的时候就会发现又一次区别,有可能出现板子不能实现你所需要的功能,或者执行错了功能,这都是我们在调试中需要改正的,调试在我们整个设计过程中占了很大的比重,当基本功能调试成功了,我们才能考虑实现更多功能,使系统更加完善。最后感谢张磊老师对我们的悉心指导。附录1、#include <STC12C5410AD.H>code unsigned char seg_tab10=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F; /共阴断码表unsigned int TM0=10000,count; /中断时间设置unsigned char led_buff3; /* 存放3位数码管的段笔画 */unsigned char shi_w,ge_w; sbit contr_0=P32;sbit contr_1=P33;sbit contr=P34;sbit DA=P27;sbit CK=P26;sbit LED=P25;void delay(unsigned int i) for(;i>0;i-); /*延时*/void init_ISP(void)ISP_ADDRH=0x28;ISP_ADDRL=0x00;/送地址ISP_CONTR=0x87;ISP_CMD=0x01; /读操作ISP_TRIG=0x46; /触发ISP_TRIG=0xb9;shi_w=ISP_DATA;ISP_ADDRH=0x28;ISP_ADDRL=0x01;/送地址ISP_CONTR=0x87;ISP_CMD=0x01; /读操作ISP_TRIG=0x46; /触发ISP_TRIG=0xb9;ge_w=ISP_DATA;void write_ISP(void) ISP_ADDRH=0x28; ISP_ADDRL=0x00;/送地址 ISP_CONTR=0x87; ISP_CMD=0x03; /擦除操作ISP_TRIG=0x46; /触发ISP_TRIG=0xb9;ISP_DATA=shi_w;ISP_ADDRH=0x28;ISP_ADDRL=0x00;/送地址ISP_CONTR=0x87;ISP_CMD=0x02; /写操作ISP_TRIG=0x46; /触发ISP_TRIG=0xb9; ISP_DATA=ge_w;ISP_ADDRH=0x28;ISP_ADDRL=0x01;/送地址ISP_CONTR=0x87;ISP_CMD=0x02; /写操作ISP_TRIG=0x46; /触发ISP_TRIG=0xb9; unsigned int GetAdData(unsigned char ch) /*A/D转换*/unsigned char Lo2; unsigned int Hi8;ADC_CONTR=0xE8+ch;while(!(ADC_CONTR&0x10);ADC_CONTR = 0x80;Lo2 =ADC_LOW2;Lo2&=0x03;Hi8 =ADC_DATA;Hi8<<=2;Hi8+=Lo2; return(Hi8);void show_1LED(unsigned char b) /*串转并*/ unsigned int i; unsigned char a; a=led_buffb; if(b=1) a=a+0x80; for(i=0;i<8;i+) DA=a&0x80; CK=1; a=a<<1; CK=0; void Init_Timer0(void) P1M0=0x10; /设置P1.4仅为输入口 LED=0; EA=0; TR0=0; TMOD |= 0x01; /使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受 影响 TH0=(65536-TM0)/256; /给定初值 TL0=(65536-TM0)%256; ET0=1; /定时器中断打开 TR0=1; /定时器开关打开 EA=1; /总中断打开void timer0(void) interrupt 1 /*10ms中断*/ TR0=0; TH0=(65536-TM0)/256; /*初值设置*/ TL0=(65536-TM0)%256; TR0=1; P1=0xbf; /十位显示 show_1LED(0); delay(1000); P1=0xff; P1=0x7f; /个位显示 show_1LED(1); delay(1000); P1=0xff; P1=0xfe; /小数位显示 show_1LED(2); delay(1000); P1=0xff; void led_fill_d(unsigned int n) led_buff2=seg_tab(unsigned char)(n%10); / 小数位 n=n/10; led_buff1=seg_tab(unsigned char)(n%10); / 个位 n=n/10; led_buff0=seg_tab(unsigned char)(n%10); / 十位void keypress_0(void) /*十位设置*/ if(!contr_0) delay(1000); if(!contr_0) shi_w+; if(shi_w=10) shi_w=0; while(!contr_0); write_ISP(); void keypress_1(void) /*个位设置*/ if(!contr_1) delay(1000); if(!contr_1) ge_w+; if(ge_w=10) ge_w=0; while(!contr_1); write_ISP(); void main() unsigned int alarmtemp,memorycount,temp,T; unsigned char ch=0x04; float v0,sum,T0; Init_Timer0(); init_ISP(); while(1) if(!contr) /*切换设置*/ delay(1000); if(!contr) count+;while(!contr); v0=GetAdData(ch); /*温度获取*/ T0=v0*5/1024+0.05 ; T=T0*1000*10/(4.84*10); sum+=T; memorycount+; if(memorycount=150) temp=sum/150; sum=0; memorycount=0; if(count%2=0) led_fill_d(temp); if(count%2=1) keypress_0(); led_buff0=seg_tabshi_w; keypress_1(); led_buff1=seg_tabge_w; led_buff2=seg_tab0; alarmtemp=shi_w*10+ge_w; alarmtemp=alarmtemp*10; if(alarmtemp<temp) LED=1; else LED=0;

    注意事项

    本文(《基于单片机的ad590测温系统》课程设计报告.doc)为本站会员(文库蛋蛋多)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开