最新单片机课程设计基于MCS51单片机的数据采集系统Word下载.docx
《最新单片机课程设计基于MCS51单片机的数据采集系统Word下载.docx》由会员分享,可在线阅读,更多相关《最新单片机课程设计基于MCS51单片机的数据采集系统Word下载.docx(34页珍藏版)》请在冰豆网上搜索。
(3)系统设计方案的提出、分析
(4)系统中典型电路的分析
(5)系统软件结构框图
(6)系统电路原理图
(7)源程序
(8)课设字数不少于2000字
成绩
评语
摘要
本文是以MCS-51单片机系统为基础的,通过热电阻PT100的阻值随温度的变化的特性,通过采集得到的模拟信号,并通过A/D转换器ADC0809对模拟信号进行模数转换,把转换得到的数字信号按照顺序分别送入单片机,通过单片机进行均值滤波,并通过查表得到温度值。
LED数码管显示。
本系统设计简单,性能稳定,能够通过单片机灵活编程进行各种功能的设定和修改。
并且为以后温度控制系统的扩展提供了方便,提供了键盘可以进行温度设定和模式选择。
并且提供了利用VisualStdio2010编写的温度调节上位机进行温度监控和调试。
为以后的系统扩展调试提供了方便。
关键词:
A/D转换器;
热电阻;
MCS-51,上位机
第二章系统总体设计1
2.1系统概述1
2.2系统工作原理分析1
第一章前言
温度是一个非常重要的物理量,因为它直接影响燃烧、化学反应、烘烤、煅烧、蒸馏、结晶、空气流动以及温度漂移等物理和化学过程。
温度控制失误就可能引起生产安全、产品质量、产品产量以及生活安全等一系列问题。
因此对温度的检测的意义就越来越大。
温度采集控制系统在工业生产、科学研究和人们的生活领域中,得到了广泛应用。
在工业生产过程中,很多时候都需要对温度进行严格的监控,以使得生产能够顺利的进行,产品的质量才能够得到充分的保证。
使用自动温度控制系统可以对生产环境的温度进行自动控制,保证生产的自动化、智能化能够顺利、安全进行,从而提高企业的生产效率。
并且温度控制是一个大惯性控制,控制难度比较大。
温度采集任务在温度控制中是比较重要的一个环节,因此本文来研究温度采集系统,意义重大。
第二章系统总体设计
2.1系统概述
根据课程设计要求的性能指标,本系统要满足一定精度的温度采集的基本功能,同时系统还具有动态显示当前的测量温度值的功能和键盘操作的功能。
2.2系统原理分析
本文以MCS-51单片机系统为基础,通过温度传感器PT100随温度的变化而得到的模拟信号进行采集,连接ADC0809实现单路路模拟信号的采集,并通过A/D转换器对模拟信号进行数模转换,把转换得到的数字信号送入单片机,通过LED显示。
根据本课题的设计目标以及硬件的特点,本系统的总体设计框图如图所示。
图一系统框图
第三章硬件部分
3.1单片机最小系统及键盘模块
单片机选用AT89C51,该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
本系统包括晶振电路,复位电路,地址锁存器电路,3-8译码器,键盘电路等。
图如下,其中译码器输为P2.7,P2.6,P2.5,译码产生8个片选信号,分别来选通8155,外部RAM,ADC0809等芯片工作。
保证了地址的扩展和单片机的基本运行。
图二单片机最小系统原理图
3.2数据采集通道模块
ADC0809是八通道的八位逐次逼近式A/D转换器。
由单一的5V电源供电,片内带有锁存功能的8选1的模拟开关。
由C、B、A的编码来决定所选的模拟通道。
转换时间为100us。
转换误差为1/2LSB。
它的引脚的排列及其功能,其引脚图见下
图三ADC0809的引脚图
IN7~IN0:
八个通道的模拟输入量。
ADDA、ADDB、ADDC:
模拟通道地址线。
当CBA=000时,IN0输入,当CBA=111时,IN7输入。
ALE:
地址锁存信号。
START:
转换启动信号,高电平有效。
D7~D0:
数据输出线。
三态输出,D7是最高位,D0是最低位。
OE:
输出允许信号,高电平有效。
CLK:
时钟信号,最高频率为640KHZ。
EOC:
转换结束状态信号。
上升沿后高电平有效。
VCC:
+5V电源。
VREF:
参考电压。
利用它可直接输入8个单端的模拟信号分时进行A/D转换,在多点巡回检测和过程控制、运动控制中应用十分广泛。
本次设计配置0809芯片作为数据采集通道。
连接如图
图四数据采集通道原理图
3.3串行口的选择
该串行口选用了标准RS-232C接口,它是电平与TTL电平转换驱动电路。
常用的芯片是MAX232,MAX232的优点是:
(1)一片芯片可以完成发送转换和接收转换的双重功能。
(2)单一电源+5V供电
(3)它的电路设计与连接比较简单而且功能齐全。
电路图如下
图五串行口原理图
3.4并行I/O芯片及显示模块
8155芯片内包含有256字节RAM,2个8位、1个6位的可编程并行I/O口,和1个14位定时器/计数器。
由于8155既具有RAM又具有I/O口,因而是单片机系统中最常用的外围接口芯片之一。
LED数码显示管是一种由LED发光二极管组合显示字符的显示器件。
它使用了8个LED显示管,其中7个用于显示字符,1个用来显示小数点,故通常称之为八段发光二极管数码显示器。
对LED数码显示器的控制可以采用按时间向它提供具有一定驱动能力的位选和段选信号。
原理图如下
图六并行I/O芯片及显示模块
3.5温度传感器模块
题目要求,采集温度范围为-20℃-70℃。
经过比较我们选择PT100作为温度传感器,pt100是铂热电阻,它的阻值跟温度的变化成正比,铂电阻的特点是精度高,稳定性好,性能可靠。
铂在氧化性气氛中,甚至在高温下的物理、化学性质都非常稳定。
因此铂被公认为是目前制造热电阻的最好材料。
铂电阻主要作为标准电阻温度计使用,也常被用在工业测量中。
PT100的阻值与温度变化关系为:
当PT100温度为0℃时它的阻值为100欧姆,在100℃时它的阻值约为138.5欧姆。
它的工业原理:
当PT100在0摄氏度的时候他的阻值为100欧姆,它的阻值会随着温度上升而成匀速增长的。
图七PT100桥式电路图
根据电桥的运算关系得出桥式电路输出压差为
————①
查PT100分度表得出,-20℃-70℃对应的电阻为92.16Ω-127.08Ω,为了提高采集的精度,我们把-20℃-70℃对应的电压变化利用惠斯通电桥和运放,变换到MCS-51可以最大程度识别和测量的范围,所以当-20℃的时候,对应输出电压为0V。
因此,
—————,②
把R3=510Ω,R1=200Ω,RPT=92.16Ω,带入上式得出R9=1106.8Ω;
所以应该调节滑动变阻器R9=1106.8Ω接入电路。
当测量温度为70℃时,对应的RPT=127.08Ω,R3=510Ω,R1=200Ω,R9=1106.8Ω,带入①式得到U=0.366V。
为了输入单片机MCS-51的电压为0-5V,应该设计运算放大器的放大倍数为
为了留有一定的余量和现有电阻大小,选择运算放大器的倍数为12倍。
采集电压范围为0V-4.392V。
最终我们,我们为了防止AD输入阻抗不够大,而对采集电路的电压造成影响,从而对电压采集造成误差。
所以采用两级运放。
第一级为查分比例运算电路,放大倍数为4被。
后面一级为比例运算放大电路,放大倍数为3倍。
最终放大倍数为12倍。
运算放大电路的电路电阻匹配为
——————③
我们取,R4=R5=20K,R6=R7=80K;
——————④
我们取,R8=12K,R11=24K;
且为匹配电阻,R12=8K;
图八主电路原理图
3.6外部储存器模块
本系统扩展32KROM,RAM,分别用了四片2764和6264,其P2.7,P2.6,P2.5通过3-8译码器,编译成Y0-Y7,作为片选信号。
其余地址线作为连接8K的13根地址线。
Eg.U8:
0x0000-0x1fffU9:
0x2000-0x3fff
U10:
0x4000-0x5fffU11:
0x6000-0x7fff
图九外部储存器的连接原理图
设计思路:
主程序主要执行LCD显示和键盘的扫描,AD的采集在外部中断中执行,采样数据处理以及LCD显示数据的更新均在定时器中断中完成。
主程序开始时首先定义相关的指针,并对定时器T0,外部中断INT0,ADC0809进行初始化设置。
ADC0809转换完成时,单片机将收到低电平,所以将INT0设为下降沿触发。
题目要求每隔1s更新一次显示温度,这里选用定时方式1,方式1的最大定时时间为:
=
×
1us=65.536ms
这里每次溢出时设为50ms,每溢出20次进行一次数据更新。
重装值的计算公式为:
TC=
-50ms/1us=15536=3CB0H
51单片机的中断优先级默认为,INT0高于T0,当在定时器中断执行数据处理程序时应避免外部中断的打断,因此设为TO中断为高优先级。
循环,等待中断。
流程图:
图十主程序流程图
定时中断函数主要进行采样数据的处理以及温度的转换。
为了减小误差,取最近十次的采样值相加求取平均值,然后转换为相应的温度。
求平均值时,16位的除法操作比较困难,对于高八位可以看做是n个255,用高八位乘以25.5,即除以10之后的值,在与低八位除以10之后的数据相加,就是最后的平均值。
对于ADC0809来说,它的采集电压范围为0-5V,电路设计时留有余量,参考值为4.09V,因此采集的最大值为208。
进行温度转换时,-20℃对应0,70℃对应208,按照对应关系可以用查表进行。
查出相应温度后转为十位、个位BCD码,为后面的LCD显示做准备。
图十一定时器流程图
求平均值时的代码:
DATA_Explose:
PUSHACC
PUSHDPL
PUSHDPH
/*把寄存器切换到1区*/
CLRRS1
SETBRS0
CLRA
MOVR4,#00H
MOVR5,#00H
MOVR3,#10
CLRC
MOVR1,#32H
LOOP_ADD:
ADDCA,@R1
JCADD_High_8
SJMPADD_Continue
ADD_High_8:
INCR4
ADD_Continue:
INCR1
DJNZR3,LOOP_ADD
MOVR5,A
AD_AVE:
MOVA,R4
MOVB,#25
MULAB
MOVR2,A
MOVB,#2
DIVAB
ADDA,R2
MOVR4,A
MOVA,R5
MOVB,#10
ADDA,R4
MOV2AH,A//把最终的数据送入2AH中
温度转换代码:
AD_DATA_USing:
MOVDPTR,#TEM_DATAB;
//温度转换表格地址
MOVCA,@A+DPTR;
//查表得相应温度
MOVB,#0AH;
//被除数10给B
DIVAB
MOV2FH,B
MOV30H,A
CJNEA,#57,TREAT1;
//将采样数值与57比较,若不相等则TREAT1
MOV31H,#0AH;
//若相等,幅值FUHAOWEI,57,即正数
LJMPDOWN_AD
TREAT1:
JCTREAT2;
//若Cy=1,则TREAT2
MOV31H,#0AH;
LJMPDOWN_AD
TREAT2:
MOV31H,#0BH;
//因Cy为0,为负温度
DOWN_AD:
POPDPH
POPDPL
POPACC
RET
设计思路:
本设计程序中,由ADC0809转换完成信号触发外部中断进行数据的采集,并预留十个地址暂存采样数据,末位地址存入数据之后重新从首地址开始存入,进行数据处理时便可以取最近十次的值进行计算,提高精度。
图十二A/D转换和数据采样程序
相关代码:
ADC_Finish:
PUSHDPL
PUSHACC
CJNER7,#00H,DUAL_MODE
LJMPCH1_1
DUAL_MODE:
SETBRS1
CLRRS0
CJNER6,#00H,CH1
MOVR6,#01H
MOVDPTR,#ADR_ADC0809_CH0_MIN
CH1:
MOVR6,00H
LJMPCHANLE_1_CONVENT
CH1_1:
MOVDPTR,#ADR_ADC0809_CH1_MIN
SING_CONVENT:
//MOVDPTR,#ADR_ADC0809_CH0_MIN
MOVXA,@DPTR;
//取值
MOV@R0,A;
//将采样值送到存储地址
MOVX@DPTR,A;
//重新启动ADC0809
INCR0;
//存储地址加一
DJNZR1,INTLOOP;
//判断是否存满十个数据,否,返回主函数
MOVR0,#32H//填满十个采样值后,更新采样首地址
MOVR1,#10
LJMPINTLOOP
CHANLE_1_CONVENT:
MOVR0,#42H//填满十个采样值后,更新采样首地址
MOVR2,#10
INTLOOP:
POPDPH
RETI
本次课设中用到的键盘为单排八个按键,程序设计比较简单,只要给一个高电平,再检测相应按键接口即可,在此无需赘述。
实际思路:
本次课设采用三个数码管,共阴极设计,控制信号分为位选信号和段选信号。
先由8155的C口输出片选信号选通将要显示的数码管,然后由A口输出段选信号,使数码管显示相应数字。
图十三显示程序流程图
/*LED数码管显示子程序*/
LED_DIP:
MOVR3,#10H
CJNER7,#0,NEXT1_Mode
LJMPDDOOP
NEXT1_Mode:
CJNER7,#1,NEXT2_Mode
LJMPDDOOP1
NEXT2_Mode:
CLRRS0
CJNEA,#00H,DD1
DD1:
MOVR5,#01H
DDOOP:
MOVDPTR,#ADR_PC_MIN;
//指向C口
MOVA,#11111110B
MOVX@DPTR,A;
//选中个位数码管
MOVDPTR,#DTATAB;
//数据表格起始地址送DPTR
MOVA,02FH;
MOVCA,@A+DPTR;
//查得个位数码管输出信号
MOVDPTR,#ADR_PA_MIN;
//指向A口
//数码管输出个位数
ACALLDELAY;
//延时5ms
MOVDPTR,#ADR_PC_MIN
MOVA,#11111101B
MOVX@DPTR,A//选中十位数码管
MOVA,30H
//查得十位数码管输出信号
//指向A口
//数码管输出十位数
MOVA,#11111011B
//选中符号位数码管
MOVA,31H
//查得符号位数码管输出信号
//数码管输出符号位
DJNZR3,DDOOP;
//循环显示十次
DDOOP1:
//指向C口
MOVDPTR,#DTATAB;
MOVA,032H;
MOVDPTR,#ADR_PA_MIN;
//指向A口
//数码管输出个位数
ACALLDELAY;
//延时5ms
MOVDPTR,#ADR_PC_MIN
MOVA,#11111101B
MOVX@DPTR,A//选中十位数码管
MOVA,33H
//数码管输出十位数
MOVA,#11111011B
MOVA,34H
//数码管输出符号位
DJNZR3,DDOOP;
//循环显示十次
POPACC
RET
DTATAB:
DB3FH,06H,5BH,4FH,66H,6DH,7DH
DB07H,7FH,6FH,00H,40H
第五章辅助调试工具
使用VisualStdio2010编写的温度调节上位机进行温度监控和调试系统,利用串口实现PC机和单片机的通讯,该调试系统具有温度设定,PID参数调整,温度保存文件,温度变化曲线显示等功能,为以后系统的扩展提供了方便。
系统效果图如下:
图十四温度调节工具效果图
总结:
通过本次课程设计使我们学到了怎样去查找翻阅有关理论资料和技术手册,把书本上知识总结起来去应用于实践,初步学到了研究、开发,设计单片微型计算机对工业过程控制的一套完整的方法,受益很大。
作为自动化111班1组课程设计的组长,我平时定期给组员开会,督促组员设计进度,在整个设计过程中我不断鼓励队员,让他们在整个设计过程中真正的学到东西,首先冲整体上把握本次设计的目的,从而达到巩固课本知识的目的。
然后再根据每个人的特点合理分配每个人的任务,最终每个人都很好的完成了分配的任务。
达到了很好的合作效果。
我在本次设计过程中,主要负责的任务如下:
一,作为组长,掌握课程设计的总进度。
二、督促队员,给他们设计的积极性和战斗力。
三、完成了系统的硬件设计并给队员们真正的讲明白。
四、进行软件的最终汇总和加入了附加部分的功能,思考设计出,解决16为数据求平均值的算法。
五、使用C#语言编写了上位机系统,为以后扩展提供方便。
六、制作PPT,为最终答辩提供方便。
在这个过程中我不仅仅学到了课本中的知识,把课本知识掌握的更加熟练,并且将之用于实际,并在此过程中体会到了团队合作的重要性,每个人身上都有优点。
作为组长,我应该学会善于发现别人的长处,并给队员合理安排合适的任务。
这样会达到极佳的效果。
最后感谢老师给我们这次锻炼的机会。
这种课设的模式真的不多,不仅让学生参与的积极性有很大提高,能够保质保量完成任务,并且还可以提高同学们的团队合作能力。
在此,感谢老师对我的经心指导和队友们的大力支持。
参考文献:
《单片机原理及其接口技术》(第三版)胡汉才主编
《数字电子技术基础》(第五版)清华大学电子学教研室组编阎石主编
《模拟电子技术基础》(第四版)清华大学电子学教研室组编华成英童诗白主编
《自动检测技术及仪表控制系统》(第三版)张毅张宝芬曹丽彭黎辉编
附录:
附录一原理图及PCB图
图十五总原理图
图十六PCB效果图
附录二部分程序代码
/