当前位置:文档之家› 单片机数据采集控制系统

单片机数据采集控制系统

《单片机数据采集控制系统》课程设计报告一、前言通常是指有若干相互连接、相互作用的基本电路组成的具有特定功能的电路整体。

由于大规模集成电路和模拟-数字混合集成电路的大量出现,在单个芯片上可能集成许多种不同种类的电路。

二、课程设计的目的和要求2.1、课程设计的目的运用模拟电子技术、数字电子技术、单片机原理及其应用等课程知识,根据题目要求进行软硬件系统的设计和调试,从而加深对本课程知识的理解, 把学过的比较零碎的知识系统化,比较系统的学习开发单片机应用系统的基本步骤和基本方法,使学生应用知识能力、设计能力、调试能力以及报告撰写能力等有一定的提高。

2.2、课程设计要求用8051单片机设计数据采集控制系统,基本要求如下:1、可实现8路数据的采集,假设8路信号均为0-5V的电压信号;2、采集数据可通过数码管显示,显示格式为:[通道号] 电压值,如[01]4.53、可通过键盘设置采集方式;(单点采集、多路巡测、采集时间间隔*)4、具有异常数据声音报警功能:对第一路数据可设置正常数据的上限值和下限值,当采集的数据出现异常,发出报警信号。

(LED显示报警)5、可输出8路顺序控制信号,设每路顺序控制信号为一位,顺序控制的流程为:三、总体设计实验原理:从A/D 转换器入手,通过编程,实现硬件上的八路数据采集、采集数据显示、通过键盘设计采集、实现上下限的报警功能、八路顺序控制信号。

四、硬件设计4.1各种芯片的功能、引脚、相应的命令控制字格式的介绍1、MCS-51芯片介绍:MCS-51系列单片机是美国Intel 公司开发的8位单片机又可以分为多个子系列。

MCS-51123456789101112131415403938373635343332313029282726P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7RST INT0/P3.2INT1/P3.3V CCP0.0/AD 0P0.1/AD 1P0.2/AD 2P0.3/AD 3P0.4/AD 4P0.5/AD 5P0.6/AD 6P0.7/AD 7EA/V PPALE/PROG PSEN P2.7/A 15P2.6/A 14P2.5/A 13803180518751八路数据采集模块显示模块键盘模块报警模块八路顺序控制模块8051单片机系列单片机共有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:电源端,+5VGND:线路地4、ADC0809芯片介绍:ADC0809是一种比较典型的8位8通道逐次逼近式A/D转换器,CMOS工艺,可实现8路模拟信号的分时采集,片内有8路模拟选通开关,以及相应的通道地址锁存用译码电路,其转换时间为100μs左右,采用双排28引脚封装。

引脚说明:IN0~IN7:8路模拟量输入通道ADDA~ADDC:地址线用于选择模拟量输入通道ALE:地址锁存允许信号START:转换启动信号D0~D7:数据输出线OE:输出允许信号,低电平允许转换结果输出CLOCK:时钟信号输入引脚,通常使用500KHzEOC:转换结束信号,为0代表正在转换,1代表转换结束Vcc:+5V电压V REF(+)、V REF(-):参考电压5、DAC0832芯片介绍:DAC0832是美国数据公司的8位D/A转化器,片内带数据锁存器,电流输出,输出电流稳定时间为1μm,功耗为20mW。

引脚说明:D0~D7:数据输入线,TTL电平ILE:数据锁存允许控制信号线CS:片选信号线,低电平有效WR1:数据锁存器写选通输入线,负脉冲有效XFER:数据传输控制信号输入线,低电平有效WR2:DAC寄存器写选通输入线,低电平有效IOUT1:电流输出线,当DAC寄存器为全1时电流最大IOUT2:电流输出线,其值与I OUT1之和为一常数Vcc:电源电压线,为+5V~+15范围VREF:基准电压输入线,范围为:-10V~+10VAGND:模拟地DGND:数字地Rfb:反馈信号输入线,调整Rfb端外接电阻值可以调整转换满量程精度4.2绘出硬件接线图五、软件设计5.1程序流程图附录一ORG 0000HLJMP SE11ORG 000BHLJMP INTT0ORG 0100HSE11: MOV SP,#53HMOV 7EH,#10HMOV 7DH,#00HMOV 7CH,#01HMOV 7BH,#11HMOV 7AH,#10HMOV 79H,#10H ;显示缓冲区初值MOV R6,#00HMOV R4,#00HMOV 60H,#00HMOV 30H,#30HMOV TMOD,#01HMOV TL0,#0DCHMOV TH0,#0CHSETB EASETB ET0LO18: CALL DISMOV A,R4 ;ADC0809内部模拟开关(可以改读取通道)MOV DPTR,#0FFE0H ;A4A3A2 000 选通Y0MOVX @DPTR,A ;0809的0通道采样L9:CALL DIS ;显示MOV 7CH,R4MOVX A,@DPTR ;取出采样值 A = 00-FFMOV R0,#79HCALL PTDS ;采样值送显示缓冲区CALL DISCALL GetKeySJMP LO18 ;循环PTDS: MOV B,#33HDIV ABSWAP AMOV R5,AMOV A,BMOV B,#05HDIV ABORL A,R5DA AMOV R1,A ;拆送显示缓冲区JMP NO1NO: ADD A,R1 ;把电压值的整数位和小数位加起来MOV R1,A;------------------------------- ;报警子程序NO1: CJNE R1,#40H,MAX1 ;判断上线电压值,大于4V,LED1灯亮MAX1: JC MAX2CLR P3.0MAX2: JNC NO2SETB P3.0NO2: CJNE R1,#10H,MIN1 ;判断下线电压值,小于1V,LED2灯亮MIN1: JNC MIN2CLR P3.1MIN2: JC NO3SETB P3.1NO3: ACALL PTDS1MOV A,R1SWAP APTDS1: ANL A,#0FHMOV @R0,AINC R0RETDIS: PUSH DPHPUSH DPLSETB RS1MOV R0,#7EHMOV R2,#20HMOV R3,#00HMOV DPTR,#LS0LS2: MOV A,@R0MOVC A,@A+DPTRCJNE R0,#7AH,AA。

ANL A,#7FHAA: MOV R1,#0DCHMOVX @R1,AMOV A,R2inc R1MOVX @R1,ALS1: DJNZ R3,LS1CLR CRRC AMOV R2,ADEC R0JNZ LS2movx @r0,adec r0cpl amovx @r0,aCLR RS1POP DPLPOP DPHRETGetKey: call ScanKeyMOV R5,ACJNE R5,#20H,BIAN ;R5标志位用于判断前后值是否变化SJMP XUAN ;若R5无变化,则转至XUAN,保持原先的通道模式BIAN: CLR TR0MOV 40H,R5 ;R5有变化,选择变化后的通道MOV R4,40H ;R4为渠道的选通值MOV R6,40H ;R6用于判断选通XUAN: SETB CCJNE R6,#8,QING ;判断选择的通道是0-7:cy = 1,还是8-F:cy = 0。

QING: JC LO20 ;若通道为0-7,转至Lo20,保持原先的通道;CJNE R5,#20H,QING1 ;判断通道8-F的通道值是否有变化;若无变化,则原先的通道递增模式,继续执行SJMP XUNQING1: MOV R4,#0FFH ;用于清零。

SJMP XUNXUN: SETB TR0MOV R4,60HLO20: ret ;子程序返回ScanKey:setb RS1mov r2,#0feh ;列扫描mov r3,#08h ;列扫描的次数mov r0,#00h ;扫描到的列号值LoopS: mov r1,#0DDH ;列扫描入口FFDDHmov a,r2movx @r1,a ;开始列扫描rl amov r2,ainc r1 ;键入口地址FFDEHmovx a,@r1 ;读取行信息cpl aanl a,#0fh ;无按键A=0,有按键A!=0jnz Scaninc r0djnz r3,LoopSReTKey3:mov a,#20hTKey3: mov r2,aclr amov r1,#0DDHmovx @r1,amov a,r2clr RS1retScan: cpl ajb acc.0,TKey0mov a,#00hsjmp EndLoopTKey0: jb acc.1,TKey1mov a,#08hsjmp EndLoopTKey1: jb acc.2,TKey2mov a,#10hsjmp EndLoopTKey2: jb acc.3,ReTKey3mov a,#18hEndLoop:add a,r0 ;a为行号值(头):00,08,10,18 sjmp TKey3INTT0: PUSH ACCPUSH PSWSETB PSW.3MOV TL0,#0DCHMOV TH0,#0CHMOV A,30HDEC AMOV 30H,AJNZ RET0。

相关主题