单片机数据采集控制系统.docx
- 文档编号:15616013
- 上传时间:2023-07-06
- 格式:DOCX
- 页数:17
- 大小:100.66KB
单片机数据采集控制系统.docx
《单片机数据采集控制系统.docx》由会员分享,可在线阅读,更多相关《单片机数据采集控制系统.docx(17页珍藏版)》请在冰点文库上搜索。
单片机数据采集控制系统
《单片机数据采集控制系统》课程设计报告
一、前言
通常是指有若干相互连接、相互作用的基本电路组成的具有特定功能的电路整体。
由于大规模集成电路和模拟-数字混合集成电路的大量出现,在单个芯片上可能集成许多种不同种类的电路。
二、课程设计的目的和要求
2.1、课程设计的目的
运用模拟电子技术、数字电子技术、单片机原理及其应用等课程知识,根据题目要求进行软硬件系统的设计和调试,从而加深对本课程知识的理解,把学过的比较零碎的知识系统化,比较系统的学习开发单片机应用系统的基本步骤和基本方法,使学生应用知识能力、设计能力、调试能力以及报告撰写能力等有一定的提高。
2.2、课程设计要求
用8051单片机设计数据采集控制系统,基本要求如下:
1、可实现8路数据的采集,假设8路信号均为0-5V的电压信号;
2、采集数据可通过数码管显示,显示格式为:
[通道号]电压值,如[01]4.5
3、可通过键盘设置采集方式;(单点采集、多路巡测、采集时间间隔*)
4、具有异常数据声音报警功能:
对第一路数据可设置正常数据的上限值和下限值,当采集的数据出现异常,发出报警信号。
(LED显示报警)
5、可输出8路顺序控制信号,设每路顺序控制信号为一位,顺序控制的流程为:
三、总体设计
实验原理:
从A/D转换器入手,通过编程,实现硬件上的八路数据采集、采集数据显示、通过键盘设计采集、实现上下限的报警功能、八路顺序控制信号。
四、硬件设计
4.1各种芯片的功能、引脚、相应的命令控制字格式的介绍
1、MCS-51
芯片介绍:
MCS-51系列单片机是美国Intel公司开发的8位单片机又可以分为多个子系列。
MCS-51系列单片机共有40条引脚,包括32条I/O接口引脚、4条控制引脚、2条电源引脚、2条时钟引脚。
引脚说明:
P0.0~P0.7:
P0口8位口线,第一功能作为通用I/O接口,第二功能作为存储器扩展时的地址/数据复用口。
P1.0~P1.7:
P1口8位口线,通用I/O接口无第二功能。
P2.0~P2.7:
P2口8位口线,第一功能作为通用I/O接口,第二功能作为存储器扩展时传送高8位地址。
P3.0~P3.7:
P3口8位口线,第一功能作为通用I/O接口,第二功能作为为单片机的控制信号。
ALE/PROG:
地址锁存允许/编程脉冲输入信号线(输出信号)
PSEN:
片外程序存储器开发信号引脚(输出信号)。
EA/Vpp:
片外程序存储器使用信号引脚/编程电源输入引脚
RST/VPD:
复位/备用电源引脚。
2、74LS373
芯片介绍:
74LS373是带有三态门的八D锁存器,当使能信号线OE为低电平时,三态门处于导通状态,允许1Q-8Q输出到OUT1-OUT8,当OE端为高电平时,输出三态门断开,输出线OUT1-OUT8处于浮空状态。
G称为数据打入线,当74LS373用作地址锁存器时,首先应使三态门的使能信号OE为低电平,这时,当G端输入端为高电平时,锁存器输出(1Q-8Q)状态和输入端(1D-8D)状态相同;当G端从高电平返回到低电平(下降沿)时,输入端(1D-8D)的数据锁入1Q-8Q的八位锁存器中。
当用74LS373作为地址锁存器时,它们的G端可直接与单片机的锁存控制信号端ALE相连,在ALE下降沿进行地址锁存。
引脚说明:
D0~D7:
锁存器8位数据输入线Q0~Q7:
锁存器8位数据输出线
GND:
接地引脚Vcc:
电源引脚,+5V有效OE:
片选信号引脚G:
锁存控制信号输入引脚
3、74LS138
芯片介绍:
74LS138是一个3-8译码器,共16个引脚。
引脚说明:
A、B、C:
选择端即信号输入端
E1、E2、E3:
使能端,其中E1、E2低电平有效,E3高电平有效
Y0~Y7:
译码输出信号,始终只有一个为低电平
Vcc:
电源端,+5V
GND:
线路地
4、ADC0809
芯片介绍:
ADC0809是一种比较典型的8位8通道逐次逼近式A/D转换器,CMOS工艺,可实现8路模拟信号的分时采集,片内有8路模拟选通开关,以及相应的通道地址锁存用译码电路,其转换时间为100μs左右,采用双排28引脚封装。
引脚说明:
IN0~IN7:
8路模拟量输入通道
ADDA~ADDC:
地址线用于选择模拟量输入通道
ALE:
地址锁存允许信号
START:
转换启动信号
D0~D7:
数据输出线
OE:
输出允许信号,低电平允许转换结果输出
CLOCK:
时钟信号输入引脚,通常使用500KHz
EOC:
转换结束信号,为0代表正在转换,1代表转换结束
Vcc:
+5V电压
VREF(+)、VREF(-):
参考电压
5、DAC0832
芯片介绍:
DAC0832是美国数据公司的8位D/A转化器,片内带数据锁存器,电流输出,输出电流稳定时间为1μm,功耗为20mW。
引脚说明:
D0~D7:
数据输入线,TTL电平
ILE:
数据锁存允许控制信号线
CS:
片选信号线,低电平有效
WR1:
数据锁存器写选通输入线,负脉冲有效
XFER:
数据传输控制信号输入线,低电平有效
WR2:
DAC寄存器写选通输入线,低电平有效
IOUT1:
电流输出线,当DAC寄存器为全1时电流最大
IOUT2:
电流输出线,其值与IOUT1之和为一常数
Vcc:
电源电压线,为+5V~+15范围
VREF:
基准电压输入线,范围为:
-10V~+10V
AGND:
模拟地
DGND:
数字地
Rfb:
反馈信号输入线,调整Rfb端外接电阻值可以调整转换满量程精度
4.2绘出硬件接线图
五、软件设计
5.1程序流程图
5.2主程序、子程序、中断服务程序
附录一
ORG0000H
LJMPSE11
ORG000BH
LJMPINTT0
ORG0100H
SE11:
MOVSP,#53H
MOV7EH,#10H
MOV7DH,#00H
MOV7CH,#01H
MOV7BH,#11H
MOV7AH,#10H
MOV79H,#10H;显示缓冲区初值
MOVR6,#00H
MOVR4,#00H
MOV60H,#00H
MOV30H,#30H
MOVTMOD,#01H
MOVTL0,#0DCH
MOVTH0,#0CH
SETBEA
SETBET0
LO18:
CALLDIS
MOVA,R4;ADC0809内部模拟开关(可以改读取通道)
MOVDPTR,#0FFE0H;A4A3A2000选通Y0
MOVX@DPTR,A;0809的0通道采样
L9:
CALLDIS;显示
MOV7CH,R4
MOVXA,@DPTR;取出采样值A=00-FF
MOVR0,#79H
CALLPTDS;采样值送显示缓冲区
CALLDIS
CALLGetKey
SJMPLO18;循环
PTDS:
MOVB,#33H
DIVAB
SWAPA
MOVR5,A
MOVA,B
MOVB,#05H
DIVAB
ORLA,R5
DAA
MOVR1,A;拆送显示缓冲区
JMPNO1
NO:
ADDA,R1;把电压值的整数位和小数位加起来
MOVR1,A
;-------------------------------;报警子程序
NO1:
CJNER1,#40H,MAX1;判断上线电压值,大于4V,LED1灯亮
MAX1:
JCMAX2
CLRP3.0
MAX2:
JNCNO2
SETBP3.0
NO2:
CJNER1,#10H,MIN1;判断下线电压值,小于1V,LED2灯亮
MIN1:
JNCMIN2
CLRP3.1
MIN2:
JCNO3
SETBP3.1
NO3:
ACALLPTDS1
MOVA,R1
SWAPA
PTDS1:
ANLA,#0FH
MOV@R0,A
INCR0
RET
DIS:
PUSHDPH
PUSHDPL
SETBRS1
MOVR0,#7EH
MOVR2,#20H
MOVR3,#00H
MOVDPTR,#LS0
LS2:
MOVA,@R0
MOVCA,@A+DPTR
CJNER0,#7AH,AA
ANLA,#7FH
AA:
MOVR1,#0DCH
MOVX@R1,A
MOVA,R2
incR1
MOVX@R1,A
LS1:
DJNZR3,LS1
CLRC
RRCA
MOVR2,A
DECR0
JNZLS2
movx@r0,a
decr0
cpla
movx@r0,a
CLRRS1
POPDPL
POPDPH
RET
GetKey:
callScanKey
MOVR5,A
CJNER5,#20H,BIAN;R5标志位用于判断前后值是否变化
SJMPXUAN;若R5无变化,则转至XUAN,保持原先的通道模式
BIAN:
CLRTR0
MOV40H,R5;R5有变化,选择变化后的通道
MOVR4,40H;R4为渠道的选通值
MOVR6,40H;R6用于判断选通
XUAN:
SETBC
CJNER6,#8,QING;判断选择的通道是0-7:
cy=1,还是8-F:
cy=0。
QING:
JCLO20;若通道为0-7,转至Lo20,保持原先的通道;
CJNER5,#20H,QING1;判断通道8-F的通道值是否有变化;若无变化,则原先的通道递增模式,继续执行
SJMPXUN
QING1:
MOVR4,#0FFH;用于清零。
SJMPXUN
XUN:
SETBTR0
MOVR4,60H
LO20:
ret;子程序返回
ScanKey:
setbRS1
movr2,#0feh;列扫描
movr3,#08h;列扫描的次数
movr0,#00h;扫描到的列号值
LoopS:
movr1,#0DDH;列扫描入口FFDDH
mova,r2
movx@r1,a;开始列扫描
rla
movr2,a
incr1;键入口地址FFDEH
movxa,@r1;读取行信息
cpla
anla,#0fh;无按键A=0,有按键A!
=0
jnzScan
incr0
djnzr3,LoopS
ReTKey3:
mova,#20h
TKey3:
movr2,a
clra
movr1,#0DDH
movx@r1,a
mova,r2
clrRS1
ret
Scan:
cpla
jbacc.0,TKey0
mova,#00h
sjmpEndLoop
TKey0:
jbacc.1,TKey1
mova,#08h
sjmpEndLoop
TKey1:
jbacc.2,TKey2
mova,#10h
sjmpEndLoop
TKey2:
jbacc.3,ReTKey3
mova,#18h
EndLoop:
adda,r0;a为行号值(头):
00,08,10,18
sjmpTKey3
INTT0:
PUSHACC
PUSHPSW
SETBPSW.3
MOVTL0,#0DCH
MOVTH0,#0CH
MOVA,30H
DECA
MOV30H,A
JNZRET0
MOVA,60H
INCA
CJNEA,#00H,D0
MOV30H,#30H
D0:
CJNEA,#01H,D1
MOV30H,#30H
D1:
CJNEA,#02H,D2
MOV30H,#60H
D2:
CJNEA,#03H,D3
MOV30H,#10H
D3:
CJNEA,#04H,D4
MOV30H,#10H
D4:
CJNEA,#05H,D5
MOV30H,#10H
D5:
CJNEA,#06H,D6
MOV30H,#10H
D6:
CJNEA,#07H,D7
MOV30H,#60H
D7:
MOV60H,A
CJNEA,#08H,RET0
MOVA,#00H
MOV60H,A
MOV30H,#30H
RET0:
POPPSW
POPACC
RETI
LS0:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0C6H,0F0H
END
六、实验数据
七、结束语
这次的课程设计是一次全面的综合性质的课程设计,让我们温习了前面所学的知识,并且能好好地实践。
我们从中也学会了很多,懂得了很多。
比如构思,一开始在做如何把显示的范围缩小到0到5。
我们的想到了先把要显示的数据除以51,再用余数去除以5.1,前后所得的数据分别是高位和地位要显示的数据。
可是除以5.1不容易做到,通过老师的提点,我们知道了可以通过把5.1近似看作5来处理,这样编写起来就容易多了。
这着实让我们增长了不少经验。
当8路循环实现之后,我们的显示又出现了一个小问题,那就是显示的时候,总会有一瞬间数码管全亮了,也就是意味着有一瞬间它们获得的信号都是低电平,说明程序里面有漏洞。
后来通过同学的帮助,检查出来是push和pop的时候,没有注意先进后出这一规则。
还有很多经验获得,比如我们的循环原来做出来是无法用延时,后来经过老师的提点,我们修改了程序,使得通过延时循环显示同一通道,这样也就不会跳的太快。
这次的课程设计真的让我们收获颇丰,比课堂上讲的内容丰富多了,好掌握多了。
其实实践课多点帮助比较大。
对于帮助我们对知识的理解和掌握起到了很大的效果。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 数据 采集 控制系统
![提示](https://static.bingdoc.com/images/bang_tan.gif)