铂金属多路温度巡回检测仪东华大学单片机课程设计报告答案学号尾号为7

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

单片机课程设计多路温度检测1/25单片机课程设计——多路温度巡回检测仪的设计及单片机实验姓名:东京的樱花学号:10090####设计题目:7、多路温度巡回检测仪指导老师:潘#楼主造福东华学子啦,后面程序可以直接运行哦单片机课程设计多路温度检测2/25目录1、项目设计要求…………………………………………………………………………………………………………32、方案可行性分析………………………………………………..………………………………………………..…33、硬件电路设计………………………………………………..………………………………………………..……4(1)、铂电阻测量单元………………………………………………..…………………………4(2)、按键控制单元………………………………………………..………………………………5(3)、AD转换单元………………………………………………..…………………………………6(4)、LED数码管显示单元………………………………………………..……………………7(5)、数据传输上位机单元………………………………………………..……………………84、整体硬件设计连接图………………………………………………..……………………………………………95、软件设计………………………………………………..………………………………………………..………………10(1)、软件设计思想………………………………………………..……………………………………10(2)、程序流程图………………………………………………..…………………………………………11(3)、程序清单………………………………………………..……………………………………………125、电路pcb原理图及pcb图设计………………………………………………..………………………………136、系统protues仿真及调试………………………………………………..………………………………………157、结果与展望………………………………………………..………………………………………………..…………169、参考文献………………………………………………..………………………………………………..………………1610、附录:程序源代码+pcb3d模拟图…………………………………………………………………..16单片机课程设计多路温度检测3/251、项目设计要求题7多路温度巡回检测仪的设计设计一个多路温度检测仪,共有8个测温点,每个点连续检测8次,以平均值代表该点温度,并轮流在LED显示器上显示。测试检测元件为铂热电阻Pt1000,温度测量范围为100℃——+500℃,测量精度为±1℃。系统每隔10秒完成一个点的测量,测量值除在LED显示器上显示外,还必须通过串行口(RS485)发送到上位机。任何时刻,可以通过按键切换显示通道。2、方案可行性分析在测温系统中,用温度敏感元件通过电路的调整可以把温度信号转换为模拟电压信号,在将模拟电压信号远距离传输并通过A/D转换得到相应的数字信号,通过程序进行处理得到实时的温度数值。铂热电阻测量范围为-200~850℃,R0有10Ω、100Ω和1000Ω三种,分度号分别为Pt10、Pt100和Pt1000。铂热电阻的精度高,体积小,测温范围宽,稳定性好,再现性好,但是价格较贵。其电阻与温度的关系为:当T≥0℃时R(T)=R0(1+AT+BT²)当T0℃时R(T)=R0[1+AT+BT²+CT³(T-100)]式中:RT为被测温度T下的阻值,单位为ΩR0为0℃下的阻值T为实际温度值A为常数3.9083×10ˉ³/℃B为常数-5.775×10ˉ7/℃²C为常数-4.183×10ˉ12/℃4由于我们要测得温度是100-500,所以,不用考虑小于0的情况了。所以公式为:R(T)=R0(1+AT+BT²)由数学知识可以直接解出T=(-A-sqrt(A^2-4*B(1-R(t)/R0)))/2B…………(1)单片机课程设计多路温度检测4/25因为A、B、R(0)已知,所以只要测到R(t)就能够算出T。所以我们将测量电阻上的电压来算出电阻的阻值,进而得出他现在的温度。2、硬件电路设计(1)、铂电阻测量单元设计思想:铂金属的阻值会随着温度变化而变化,所以可以通过测量它的电阻来确定温度。我们可以通过串接另一个阻值已知的电阻通过电压的变化而确定铂金属的阻值。由电路知识求得:RV9=3*u/(5-u)………………………….(2)式单片机课程设计多路温度检测5/25(2)、按键控制单元设计思想:由于有八路信号,所以可以用3*3的矩阵键盘,或者用8各独立的键盘来控制八路信号。我这里由于简化设计就用了8个独立的键盘控制。低电平有效。单片机课程设计多路温度检测6/25(3)、AD转换单元设计思想:由于精度要求+-1度,从100-500所以有400个档位,所以要9位(512)或者9位以上的AD转换器才能实现这个精度。我这里使用了TLC1543,这个ad芯片的精度很高,为10位串行逐步逼近型AD转换器(1024)。所以能精确到0.4度。其工作过程分为两个周期:访问周期和采样周期。单片机课程设计多路温度检测7/25(4)、LED数码管显示单元设计思想:LED接收来自p0口的数据信号与地址信号,通过地址锁存,分时复用来实现LED数码管的动态显示,我这里用74ls373来作为锁存器,来锁住数据与地址信息。单片机课程设计多路温度检测8/25(5)、数据传输上位机单元设计思想:由于rs232传输的距离有限,所以我们这里使用传输距离更远的rs485。Max485位一款rs485。但是由于485电平和rs232电平不符,所以,当我们连接计算机的时候还是要接上max232用来转换电平。单片机课程设计多路温度检测9/254、整体硬件设计连接图单片机课程设计多路温度检测10/25软件设计(1)、软件设计思想在本次设计中,mcu主要的工作是将ad采集来的数据,通过一定的计算转化成为温度的值,并且将这个值通过p0口输出到led数码管上。在循环扫描八个检测点的时候,顺便扫描按键部分,看有没有按键被按下,按下则进入按键服务程序,执行按键指定的测量。并通过串口传输到上位机上。由于软件源代码过长,这里简略的写ad部分(详细软件部分见附录)uintADC(ucharchn1){uchari;ucharaddr8;uintADresult;AD_eoc=1;AD_cs=0;_nop_();addr8=chn1;addr8=4;for(i=0;i4;i++)//写地址{AD_add=(bit)(addr8&0x80);AD_clk=1;AD_clk=0;addr8=1;}for(i=0;i6;i++)//采样{AD_clk=1;AD_clk=0;}AD_cs=1;while(!AD_eoc);//查询_nop_();ADresult=0;AD_cs=0;//移位传数据for(i=0;i10;i++){AD_clk=1;ADresult=1;单片机课程设计多路温度检测11/25m=AD_dat;ADresult+=m;AD_clk=0;}AD_cs=1;return(ADresult);}(2)、程序流程图单片机课程设计多路温度检测12/25(3)、程序清单voiddelay(uintz)延时z毫秒voiddisplay(num)显示子程序,显示num和数据uintADC(ucharchn1)AD转换子程序,负责转化模拟信号位数字信号voidSend(unsignedchardat)串口发送子程序,负责将收集到的数据发送到上位机上voidjianpan(void)键盘检测子程序,负责不断地扫描键盘,看是否有键盘按下voidmain()主函数单片机课程设计多路温度检测13/255、电路pcb原理图及pcb图设计用altiumdesigner6.9设计并做出原理图单片机课程设计多路温度检测14/25pcb图设计画好原理图后电器检查通过后编译,并design-updatatopcb再布局布线覆铜。单片机课程设计多路温度检测15/256、系统protues仿真及调试通过protues仿真,可以了解自己的电路到底能不跑起来,大部分的原件还是找得到的,就是不知道叫什么名字,所以在百度里查查名字后再连线,之后就是通过keil来编译生成的hex文件烧到mcu中去。单片机课程设计多路温度检测16/258、结果与展望通过本次课程设计,我更深刻理解了单片机,特别是51系列的单片机。当然,我也了解了一点avr的知识。Avr价格上面还是有点高,所以现在51单片机还是有很大的市场的。但是51的引脚比较少,所以还是主要用于简单的控制上面。对于我们大自动化的学生,我们可不要认为会51就好了,至少得学个armcortex-m3吧。对于有追求,有理想的学生,我们更应该好好学习arm9的内容,以及linux系统。要是更高级的话,x86芯片也可以去研究。可是学校给我们做实验的机会太少了。就那几台设备,而且课内充满做一下,都不到在干什么。对于实验室,我只能说,粥少僧多啊。主要还是没有实验室地皮的问题。建议扩展地皮,要建一个自由实验室,以用来给买不起试验设备的学子一个做实验的平台。我们应该做的是扬长避短,发挥所长,为社会做贡献。9、参考文献《郭天祥10天学会单片机》视频《mcs-51单片机原理与应用》张毅刚刘杰哈尔滨工业大学出版社单片机课程设计多路温度检测17/25《郭天祥10天学会PCB教程》视频10、附录:程序源代码+pcb3d模拟图(见附录)附录#includereg52.h#includeintrins.h#includemath.h#defineucharunsignedchar#defineuintunsignedintuintnum;floatnum1;intkeyval;into;inti;intq;intrt;inttr;doublen2;ucharport,m;ucharge,shi,bai,qian;sbitwela=P2^7;intsy;sbitdula=P2^6;单片机课程设计多路温度检测18/25ucharled[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};sbitAD_eoc=P1^0;sbitAD_clk=P1^1;sbitAD_add=P1^2;sbitAD_dat=P1^3;sbitAD_cs=P1^4;sbitS1=P3^5;//将S1位定义为P1.4引脚sbitS2=P3^4;sbitS3=P2^0;sbitS4=P2^1;sbitS5=P2^2;sbitS6=P2^3;sbitS7=P2^4;sbitS8=P2^5;voiddelay(uintz){uintk;for(z;z0;z--)for(k=1000;k0;k--);}voiddisplay(num){n2=num;n2=n2*5/1024;n2=(3*n2)/(5-n2)*1000;//r1=3k电压求电阻n2=3383.8-8.658*(sqrt(175850-23.1*n2));sy=n2;bai=sy/100%10;shi=sy/10%10;ge=sy%10;P0=0xff;wela=1;wela=0;P0=led[bai];dula=1;dula=0;单片机课程设计多路温度检测19/25P0=0Xf7;wela=1;wela=0;delay(1);P0=0xff;wela=1;wela=0;P0=led[shi];dula=1;dula=0;P0=0xef;wela=1;wela=0;delay(1);P0=0xff;wela=1;wela=0;P0=led[ge];dula=1;dula=0;P0=0xdf;wela=1;wela=0;delay(1);P0=0xff;wela=1;wela=0;P0=o;dula=1;dula=0;P

1 / 25
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功