MCS51单片机数据采集与显示系统.docx

上传人:b****2 文档编号:2435028 上传时间:2022-10-29 格式:DOCX 页数:22 大小:120.11KB
下载 相关 举报
MCS51单片机数据采集与显示系统.docx_第1页
第1页 / 共22页
MCS51单片机数据采集与显示系统.docx_第2页
第2页 / 共22页
MCS51单片机数据采集与显示系统.docx_第3页
第3页 / 共22页
MCS51单片机数据采集与显示系统.docx_第4页
第4页 / 共22页
MCS51单片机数据采集与显示系统.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

MCS51单片机数据采集与显示系统.docx

《MCS51单片机数据采集与显示系统.docx》由会员分享,可在线阅读,更多相关《MCS51单片机数据采集与显示系统.docx(22页珍藏版)》请在冰豆网上搜索。

MCS51单片机数据采集与显示系统.docx

MCS51单片机数据采集与显示系统

数据采集与显示系统设计

说明与要求

一、本题目模拟一个数据采集和处理系统。

设原始信号为一个压力信号(压力范围为:

0~100kg),现在经过一定的模拟调理电路变为0~5V电压信号(该信号采用实验箱上的电位器模拟产生)。

现需要编程完成以下功能:

二、用实验箱上的分压电阻VR2或VR1,模拟测试信号。

信号电压的变化范围:

0~5V。

用手动调节分压值,来模拟信号的变化。

三、设计流程:

数码管显示(16进制数值)

电位器输出→ADC0809采集→数字量(二进制)→十进制→数码管显示

考虑键盘编程的完整设计任务:

a.参考硬件:

A\D转换模块,键盘接口8279及数码管显示模块。

b.设计要求:

原始信号为一个压力信号(压力范围为:

0~100kg),经过信号调理电路后输出给定可调直流电压为0~5V,经过A\D转换后,通过键盘控制在实验板的数码管上显示该压力信号的大小(十进制)。

程序设计时,要加入数字滤波程序:

即采集多个数据(可为18个,要求存放于外部的RAM中,从4100H开始存放),剔除最大值和最小值后剩下的数据求平均值。

假定:

信号值在0~1V(0~20kg)时,对象处于过低的非正常工作状态。

信号值在1~4V(20~80kg)时,对象处于正常工作状态。

信号值在4~5V(80~100kg)时,对象处于过高的非正常工作状态。

(用实验箱左下脚发光二极管分别表示)。

c.具体的要求如下:

1.程序全速运行后,数码管显示“P”字样,表示程序准备就绪。

2.按下实验板上的“0”键,数码管实时显示采样的电压值大小(小数点后两位),采样的时间自定。

例如:

如果可调的压力信号是24.6kg,在数码管上应该显示24.6G。

3.按下实验板上的“1”键,程序暂停并冻结显示的压力值。

4.如果再按下“0”键重新实时显示电压值。

5.按下其他的键,显示“error”。

6.撰写实验报告(打印)

四、实验报告包括的内容:

1、实验报告的格式和要求:

参见范本。

2、实验报告的内容:

实验目的和要求;实验原理(框)图;程序流程图(包括主程序和子程序);源程序清单。

仅供参考的程序流程图:

1.芯片8279初始化程序流程图:

保存现场

设置8279工作方式(左端输入,双键互锁)

设置8279分频系数为15,即设置了键盘扫描速率

写入清除命令字C1H或D1H用来清屏

恢复现场

开始

SP指针赋值

8279初始化

置中断状态SETBIT0;SETBEA;SETBEX0

是否有键输入

键值是否为0

启动A/D转换,同时LED显示输入电压

 

Y

N

Y

LED显示P

键值是否为1

AD转换停止

N

Y

LED显示EEROR

N

2.主程序流程图:

3.A\D转换子程序流程图:

4.LED显示子程序流程图:

AD转换程序:

A_DPORTEQU8100H;0809口地址

ORG0000H

LJMPSTART

ORG0003H

LJMPINT_0

ORG0040H

START:

MOVSP,#60H

MOVR7,#00H;初始化

SETBIT0

SETBEA

SETBEX0;INT0允许

A_D:

MOVR0,#00H;通道数

MOVA,R0

MOVDPTR,#A_DPORT

ORLDPL,A

MOVX@DPTR,A;启动A_D

CJNER7,#00H,$;等待A_D转换结束

MOVDPTR,#8300H

MOVA,B

MOVX@DPTR,A;数据输出

MOVR7,#0FFH;清读数标志

SJMPA_D

INT_0:

MOVXA,@DPTR;读A_D数据

MOVB,A

MOVR7,#00H;置读数标志

RETI

END

8279显示

;-------------------------------------------------------

Z8279EQU0FF82H;8279状态/命令口地址

D8279EQU0FF80H;8279数据口地址

LEDMODEQU00H;左边输入八位字符显示

;外部译码键扫描方式,双键互锁

LEDFEQEQU2FH;扫描速率

LEDCLSEQU0C1H;清除显示RAM

LEDWR0EQU80H;设定的将要写入的显示RAM地址

;-------------------------------------------------------

ORG0000H

AJMPSTART

ORG001BH;INTT1入口地址

AJMPINT_T1

ORG0040H

START:

MOVSP,#60H

LCALLINIT8279;初始化8279

MOVR3,#0H;时

MOVR2,#0H;分

MOVR1,#0H;秒

MOVR6,#0H;标志

MOVTMOD,#10H

MOVTL1,#00H;50mS的时间常数

MOVTH1,#04CH

MOVR0,#20

SETBTR1

SETBET1

SETBEA;允许中断

WAIT:

CJNER6,#0FFH,WAIT

LCALLDISPLAY

MOVR6,#0

SJMPWAIT

INIT8279:

;8279初始化子程序

PUSHDPH;保存现场

PUSHDPL

PUSHACC

LCALLDELAY;延时

MOVDPTR,#Z8279

MOVA,#LEDMOD;置8279工作方式

MOVX@DPTR,A

MOVA,#LEDFEQ;置键盘扫描速率

MOVX@DPTR,A

MOVA,#LEDCLS;清除LED显示

MOVX@DPTR,A

LCALLDELAY;延时

POPACC;恢复现场

POPDPL

POPDPH

RET

;显示字符子程序

;输入:

R4,位置R5,值

DISLED:

PUSHDPH;保存现场

PUSHDPL

PUSHACC

MOVA,#LEDWR0;置显示起始地址

ADDA,R4;加位置偏移量

MOVDPTR,#Z8279

MOVX@DPTR,A;设定显示位置

MOVDPTR,#LEDSEG;置显示常数表起始位置

MOVA,R5

MOVCA,@A+DPTR;查表

MOVDPTR,#D8279

MOVX@DPTR,A;显示数据

POPACC;恢复现场

POPDPL

POPDPH

RET

DELAY:

;延时子程序

PUSH0;保存现场

PUSH1

MOV0,#0H

DELAY1:

MOV1,#0H

DJNZ1,$

DJNZ0,DELAY1

POP1;恢复现场

POP0

RET

INT_T1:

;INT_T1中断服务子程序

PUSHDPH;保护现场

PUSHDPL

PUSHACC

PUSHPSW

CLRTR1

MOVTL1,#00H;50mS定时常数

MOVTH1,#4CH

SETBTR1

DJNZR0,EXIT;判断毫秒=0

MOVR0,#20;DELAY1SECOND

MOVR6,#0FFH;置秒标志

CJNER1,#59H,SECOND;判断秒=59

MOVR1,#99H

CJNER2,#59H,MINUTE;判断分=59

MOVR2,#99H

CJNER3,#23H,HOUR;判断时=23

MOVR3,#99H

HOUR:

MOVA,R3

ADDA,#1;时加1

DAA

MOVR3,A

MINUTE:

MOVA,R2

ADDA,#1;分加1

DAA

MOVR2,A

SECOND:

MOVA,R1

ADDA,#1;秒加1

DAA

MOVR1,A

EXIT:

POPPSW;恢复现场

POPACC

POPDPL

POPDPH

RETI;中断返回

DISPLAY:

MOVA,R3

ANLA,#0FH

MOVR5,A

MOVR4,#6

LCALLDISLED;显示小时低位

MOVA,R3

SWAPA

ANLA,#0FH

MOVR5,A

MOVR4,#7

LCALLDISLED;显示小时高位

MOVA,R2

ANLA,#0FH

MOVR5,A

MOVR4,#3

LCALLDISLED;显示分钟低位

MOVA,R2

SWAPA

ANLA,#0FH

MOVR5,A

MOVR4,#4

LCALLDISLED;显示分钟高位

MOVA,R1

ANLA,#0FH

MOVR5,A

MOVR4,#0

LCALLDISLED;显示秒低位

MOVA,R1

SWAPA

ANLA,#0FH

MOVR5,A

MOVR4,#1

LCALLDISLED;显示秒高位

RET

LEDSEG:

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H;'0,1,2,3,4,5,6,7'

DB7FH,6FH,77H,7CH,39H,5EH,79H,71H;'8,9,A,B,C,D,E,F'

DB6DH,02H,08H,00H,59H,0FH,76H;'U,-,_,,I,O,P,'

END

键盘显示(电子秒表)

;-------------------------------------------------------

Z8279EQU0FF82H;8279状态/命令口地址

D8279EQU0FF80H;8279数据口地址

LEDMODEQU00H;左边输入八位字符显示

;外部译码键扫描方式,双键互锁

LEDFEQEQU2FH;扫描速率

LEDCLSEQU0C1H;清除显示RAM

LEDWR0EQU80H;设定的将要写入的显示RAM地址

READKBEQU40H;读FIFORAM地址0的命令字

;-------------------------------------------------------

ORG0000H

AJMPSTART

ORG001BH;INTT1入口地址

AJMPINT_T1

ORG0040H

START:

MOVSP,#60H

LCALLINIT8279;初始化8279

MOVR3,#0H;时

MOVR2,#0H;分

MOVR1,#0H;秒

MOVR0,#0H;10毫秒

MOVR6,#0FFH;标志

MOVTMOD,#10H

MOVTL1,#00H;10毫秒的时间常数

MOVTH1,#0DCH

LCALLDIS_mS

SETBET1

SETBEA;允许中断

WAIT:

LCALLGETKEY

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

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

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