ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:193.93KB ,
资源ID:11148796      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11148796.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于单片机温度测量装置的设计.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于单片机温度测量装置的设计.docx

1、基于单片机温度测量装置的设计1 引言.42 方案设计.53 单元电路设计.64 系统软件设计.125 课程设计总结.146 电路总原理图.157 电路仿真.168 参考文献.179 程序附录.181 引言在人类的生活环境中,温度扮演着极其重要的角色。温度是工业生产中常见的工艺参数之一,任何物理变化和化学反应过程都与温度密相关,因此温度控制是生产自动化的重要任务。随着社会的发展,科技的进步,以及测温仪器在各个领域的应用,智能化是现代温度控制系统发展的主流方向。特别是近几年来,温度控制系统早已应用到人们生活的各个方面,但温度控制一直是一个未开发的领域,却又与人们息息相关的一个世纪问题。针对这种实际

2、情况,设计一个温度测量系统具有广泛的应用前景与意义。在本设计中选用AT89C52型单片机作为主控制器件,采用热电阻作为测温元件,通过数码显示管并行传送数据,实现温度显示。本设计的内容主要分为两部分,一是对系统硬件部分的设计,包括温度采集电路和显示电路;二是对系统软件部分的设计,应用C语言实现温度的采集与显示。最终完成了数字温度计的总体设计。其系统构成简单,信号采集效果好,数据处理速度快,便于实际检测使用。2 方案设计基于单片机的温度测量装置方框图:图1 总体方案框图 2.1电路总体说明2.1.1 温度的测量用PT-100的热电阻来测量温度。因为随着温度的变化阻值也发生变化。2.1.2 运算放大

3、电路是可以把信号放大。2.1.3 A/D转化是将模拟量转化为数字量。2.1.4 选用AT89C51的单片机来控制温度的变化。2.1.5 在选用数码管将温度显示的数码管上面。3 单元电路设计3.1温度测量电路图一为热电阻的三线制测温电路,可以消除和减小引线电阻的影响。如图一,热电阻的三根导线接到测温电桥,其中两根引线的内阻分别串入测量电桥相邻两臂的电阻上。引线的长度变化不影响电桥的平衡,所以可以避免因连接导线电阻受环境影响而引起的测量误差。我们采用pt-100的热敏电阻,阻值会随着温度的变化而变化,测温的精度在1度左右。Pt-100的工作原理:当PT100在0摄氏度的时候他的阻值为100欧姆,它

4、的阻值会随着温度上升而成近似匀速的增长。但他们之间的关系并不是简单的正比的关系,而更应该趋近于一条抛物线。铂电阻的阻值随温度的变化而变化的计算公式:-200t0 Rt=R01+At+Bt*t+C(t-100)t*t*t (1)0t850 Rt=R0(1+At+Bt2) (2)Rt为t时的电阻值,R0为0时的阻值。公式中的A,B,系数为实验测定。这里给出标准的DIN IEC751系数:A=3.9083E-3、 B=-5.775E-7、 C=-4.183E-12根据韦达公式求得阻值大于等于100欧姆的Rt -t的换算公式:0t850 t=(sqrt(A*R0)2-4*B*R0*(R0-Rt)-A*

5、R0)/2/B/R0PT100温度感测器是一种以白金(Pt)作成的电阻式温度检测器,属于正电阻系数,其电阻和温度变化的关系式如下:R=Ro(1+T)其中=0.00392,Ro为100(在0的电阻值),T为摄氏温度因此白金作成的电阻式温度检测器,又称为PT100。金属热电阻的电阻值和温度一般可以用以下的近似关系式表示,即 Rt=Rt01+(t-t0)式中,Rt为温度t时的阻值;Rt0为温度t0(通常t0=0)时对应电阻值;为温度系数。半导体热敏电阻的阻值和温度关系为 Rt=AeB/t中Rt为温度为t时的阻值;A、B取决于半导体材料的结构的常数。图2 热电阻测温电路3.2 运算放大电路因为通过PT

6、-100热电阻测的温度的信号很小,所以我们采用具有一定抗共模抗干扰能力的减法差动放大器电路,所以我们才有LM244这个四运算放大器。减法差动放大电路只对U有放大作用。从图中可以看到U1、U2两个同相运放电路构成输入级,在与差分放大器U3串联组成三运放差分防大电路。电路中有关电阻保持严格对称,具有以下几个优点: (1)U1和U2提高了差模信号与共模信号之比,即提高了信噪比; (2)在保证有关电阻严格对称的条件下,各电阻阻值的误差对该电路的共模抑制比KCMRR没有影响; (3)电路对共模信号几乎没有放大作用,共模电压增益接近零。 因为电路中R1=R2、 R3=R4、 R5=R6 ,放大倍数是: A

7、vd=U0/Ui1-Ui2=-(Rp+2R1)/Rp*(R5/R3) 通常,第一级增益要尽量高,第二级增益一般为12倍,这里第一级选择100倍,第二级为1倍。则取R3=R4=R5=R6=10K,要求匹配性好,一般用金属膜精密电阻,阻值可在10K几百K间选择。则 Avd=(RP+2R1)/RP 先定RP,通常在1K10K内,这里取RP1K,则可由上式求得R1=99RP/2=49.5K 取标称值51K。通常RS1和RS2不要超过RP/2,这里选RS1 RS2510,用于保护运放输入级。 A1和A2应选用低温飘、高KCMRR的运放,性能一致性要好。 图3 运算放大电路3.3 A/D转化A/D转换的目

8、标是将模拟量转换成数字量,在本次课程设计中,选用ADC0804。ADC0804是一款8位、单通道、低价格A/D转换器,主要特点是:模数转换时间大约100us;方便TTL或CMOS标准接口;可以满足差分电压输入;具有参考电压输入端;内含时钟发生器;单电源工作时(05)V输入电压范围是05V;不需要调零等等。1.转换时序ADC0804控制信号的时序图如图所示,由图可见,各控制信号时序关系为:当CS与WR同为低电平时,A/D转换被启动而在WR上升沿后100s模数完成转换,转换结果存入数据锁存器,同时INTR自动变为低电平,表示本次转换已结束。如CS、RD同时来低电平,则数据锁存器三态门打开,数字信号

9、送出,而在RD高电平到来后三态门处于高阻状态。2.零点和满刻度调节ADC0804的零点无需调整。其中Vmax是输入电压的最大值,Vmin是输入电压的最小值。当输入电压与VIN+值相当时,调整VREF/2端电压值是输出码为FEH或FFH。3.参考电压的调节在使用A/D转换器时,为保证其转换精度,要求输入电压满量程使用,如输入电压动态范围较小,则可调节参考电压VREF,以保证小信号输入时ADC0804芯片8位的转换精度。4.接地模数、数模转换电路中要特别注意到地线的正确连接,否则干扰很严重,以致影响转换结果的正确性。A/D、D/A及取样-保持芯片上都提供了独立的模拟地(AGND)和数字地(DGND

10、)的引脚。在线路设计中,必须将所有的器件的模拟地和数字地分别相连,然后将模拟地与数字地仅在一点上相连接。地线的正确连接方法。转换数据的传送 A/D转换后得到的数据应及时传送给单片机进行处理。数据传送的关键问题是如何确认A/D转换的完成,因为只有确认完成后才能传送。模拟转换电压范围:0+5V,即0Vin+5V。分辨率:8位,即分辨率为1/28=1/256,转换值介于0255之间。放大倍数在ADC0804的精度之间。由于设计误差要求为1,1对应的输入电压为(1/100)*5=0.05V,8位A/D转换芯片的分辨率为1/256*5V=19.53mV转换精度-它是A/D转换器的最大量化误差和模拟精度的

11、共同体现。8位转换器的最大量化误差为9.765mV(80mV0.5=9.765mV,)全量程的相对误差为0.19%(9.765mV/5V100%)放大倍数满足A/D转换精度。图4 A/D转换电路3.4 单片机单片机在启动运行时都需要复位,使CPU和系统中的其他部件都处于一个确定的初始状态,并从这个状态开始工作。MCS-52单片机有一个复位引脚RST,采用施密特触发输入。单片机的复位方式可由手动复位方式完成。AT89C52单片机内部有一个高增益反相放大器,用于构成振荡器。引脚XTAL2和XTAL1分别是此放大器的输出端和输入端。作为反馈器件的片外晶体谐振器与该放大器一起构成一个自激振荡器。电容C

12、2和C1和外接晶体谐振器一起构成并联谐振电路,接在放大器的反馈回路中。虽然对外接电容的值没有非常严格的要求,但震荡器频率的高低、震荡器的稳定性、起振的快速性和温度的稳定性会由电容的大小影响。所以,此电路系统的晶体振荡器的值为12MHz,电容的种类应尽量选择陶瓷电容,电容值大概30F。在电路板焊接时,电容和晶体振荡器应尽可能安装得靠近单片机芯片,这样做是为了减少寄生电容,更好地保证震荡器可靠稳定地工作。 图5 单片机晶振电路3.5数码显示电路这是显示电路,我们使用的是LM020L这个LED显示管,这个显示管一共是16个引脚。第1脚:GND为电源地第2脚:VCC接5V电源正极第3脚:V0为液晶显示

13、器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会 产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。第6脚:E(或EN)端为使能(enable)端,高电平(1)时读取信息,负跳变时执行指令。第714脚:D0D7为8位双向数据端。第1516脚:空脚或背灯电源。15脚背光正极,16脚背光负极。当我们要读数据:输入RS=1,RW=1,E=高脉冲。输出:D0D7为数据。通过单片机将数据发送我们通过数码显示管来显示

14、我们此时的温度。(1)主要性能 :与MCS-52单片机产品兼容、8K字节的在系统可编程Flash存储器、一千次的擦写周期、全静态操作:0Hz24MHz、三级加密程序存储器、三十二个可编程I/O口线、三个16位定时器/计数器以及八个中断源、全双工UART串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符。(2)功能特性:AT89C52是一种低功率消耗、性能较高CMOS8位微控制器,具备8K在系统可编程Flash 存储器。使用Atmel公司高密度非易失性存储器高技术制作,可以与工业80C51产品指令和引脚全部兼容片上。Flash能够允许程序存储器在系统可编程执行

15、,亦适合于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 图6 数码显示电路4 系统软件设计 4.1 主程序设计主程序既把以上各子程序串连成一个整体,使整个程序循环运行。主程序一直调用显示电路,若温度改变,则会进入以下的主程序部分执行相应的A/D转换操作并作出相应的处理。通过转换后,显示的值也会同时发生改变。之后再返回到程序始端,如此反复运行,就构成了程序的整体。 图图7 主程序流程图4.2 A/D转换子程序设计这次课程设计采用的是ADC0804,每一个时钟信号下降沿开始,输出一位数据,直到8位数据

16、全部输完为止,输出的顺序是从最高位到最低位。A/D转换子程序的工作原理:开启A/D转换芯片,将A/D转换结果送进位C,然后左移A寄存器,直到8位数全部送到A寄存器,关闭A/D转换,最后将A/D转换结果存储到30H单元.图8 A/D转化程序流程图4.2 显示子程序的设计将AD转换的结果送A寄存器,将100送B寄存器,然后A除以B,得到的商存到百位存储单元。再将B寄存器里的数送A寄存器,把10送B寄存器,再A除以B,得到的商存十位存储单元,余数存个位单元。 图9 显示子程序流程图5 课程设计总结 通过此次课程设计,使我更加扎实的掌握了有关单片机方面的知识,在设计过程中虽然遇到了一些问题,但经过一次

17、又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。过而能改,善莫大焉。在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断提高。最终这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的指导下,终于游逆而解。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你

18、的认可!回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。6 电路总原理图图10 总电路图7 电路仿真我们将设计号的程序通过Keli写入,编译,然后通过Proteus这个软件来进行仿真示意。我们能很清楚的从仿真来看我们的原理图和程序对不对。 图11 电路仿真图8

19、参考文献1张鑫. 单片机原理及应用(第2版)M. 电子工业出版社,2010年.2张毅刚. 单片机原理与应用设计M. 电子工业出版社,2008年.3胡汉才. 单片机原理及其接口技术学习辅导与实践教程M. 清华大学出版社,2010年.4张义和. 例说51 单片机(C 语言版)M. 人民邮电出版社,2008年.5张培仁等. 基于C语言编程MCS-51 单片机原理与应用M9 程序附录#includeat89X52.hsbit LCD_RS =P20;sbit LCD_RW =P21;sbit LCD_E =P22;sbit ADC_CS =P23;sbit ADC_WR =P36;sbit ADC_R

20、D =P37;#define LCD_DATA P0unsigned char LcdBuf110=;unsigned char code Bmp0018= 0x06,0x09,0x09,0x06,0x00,0x00,0x00,0x00, 0x06,0x09,0x10,0x10,0x10,0x09,0x06,0x00;void dellay(unsigned int h) while(h-); /0.01MSvoid WriteDataLcd(unsigned char wdata) LCD_DATA=wdata; LCD_RS=1; LCD_RW=0; LCD_E=0; dellay(100

21、0); LCD_E=1;void WriteCommandLcd(unsigned char wdata) LCD_DATA=wdata; LCD_RS=0; LCD_RW=0; LCD_E=0; dellay(1000); LCD_E=1;void lcd_init(void) LCD_DATA=0; WriteCommandLcd(0x38); dellay(1000); WriteCommandLcd(0x38); dellay(1000); WriteCommandLcd(0x01); WriteCommandLcd(0x0c);void display_xy(unsigned cha

22、r x,unsigned char y) if(y=1) x+=0x40; x+=0x80; WriteCommandLcd(x);void display_string(unsigned char x,unsigned char y,unsigned char *s) display_xy(x,y); while(*s) WriteDataLcd(*s); s+; void Write_CGRAM(unsigned char add,unsigned char *char_num) unsigned i; add=add3; WriteCommandLcd(0x40|add+8); for(

23、i=0;i0;i-);void delay1s() int i,j; for(i=1000;i0;i-); for(j=110;j0;j-);void convert() unsigned long value; char i; unsigned long res; int temp,temp2; int w; P1=0xff; ADC_RD=0; for(i=0;i= 0) for(i=6;temp0;i-) LcdBuf1i=temp%10+48; temp/=10; if(temp 0;i-) LcdBuf1i=w%10+48; w/=10; if(i=0&temp -10) LcdBu

24、f1i = 0; i-; LcdBuf1i = -; i-; /* if(i=5) LcdBuf15 = 0; i -; LcdBuf14 = -; i-; */ for(;i=0;i-) LcdBuf1i= ; for(i=0;i5;i+) LcdBuf1i=LcdBuf1i+1; if(LcdBuf14= )LcdBuf14=0; LcdBuf15=.; LcdBuf17=1; LcdBuf18=C; WriteCommandLcd(0x84); display_string(3,0,LcdBuf1); ADC_RD=1; ADC_WR=0; for(i=0;i10;i+) ADC_WR=1; delayms();main() unsigned char i; lcd_init(); for(i=0;i2;i+) Write_CGRAM(i,Bmp001i); ADC_CS=0; ADC_WR=0; for(i=0;i10;i+); ADC_WR=1; while(1) convert(); delay1s();

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1