单片机数据采集、处理及显示程序设计方案.docVIP

  • 14
  • 0
  • 约4.87千字
  • 约 9页
  • 2017-11-14 发布于江苏
  • 举报

单片机数据采集、处理及显示程序设计方案.doc

单片机数据采集、处理及显示程序设计方案

单片机数据采集、处理及显示程序设计 总体设计方案: LED初始显示为0,采用查询的方式进行键盘扫描,以确定是否有输入,不停地扫描直到有输入为止:输入为1时,按键无效,继续扫描直到再次有输入,输入为0时,则开始进行数据的采集;采集一个周期,将采集后的数据进行滤波,再求出0、1/2Vmax、Vmax,送到LED显示,结束后进行键盘扫描,确定是否有按键1输入,有则停止,无则继续进行数据采集,如此循环。 硬件逻辑图: 下图为硬件逻辑图: 单片机及各外设参数选择: 单片机为8031/8051; 采用外部时钟,振荡频率为12MHz,则机器周期为1us; 由于本实验只需0、1两个按键就能实现控制(0实现启动,1实现关闭),所以采用简单的1×2非编码键盘; 由于已知输入信号为幅值5V的正弦信号,并要求A/D转换的误差小于0.02V,因此,选用ADC0809,其能处理的信号为0—5V,不需要进行信号放大;其分辨率为8位,转换的误差为0.0196V,能满足要求;其转换时间大约为100us; 为了保证转换精度,在信号源与ADC之间还需加一S/H,采用LF398,保持电容选择为1000PF; 由于要显示3个数据,且小数点后保留两位有效数据,所以需要3×4=12个LED,本实验选用7段LED;且从左到右,依次显示0、1/2Vmax、Vmax; 由于要求利用串行口扩展接口来显示数据,所以需连接一寄存器,本实验采用串行输入、并行输出的移位寄存器:74LS164。 软件编写: 流程图如下: 本实验采用查询的方式来实现键盘的控制;在采集的过程中由于可能会有随机干扰,信号本身会在某一数值范围附近上下波动,所以采用算术平均滤波的方式进行滤波;由于输入信号最大频率为0.2Hz,选择采样周期为2Hz,即采样周期为500ms。 采用汇编进行编程,具体的代码及其说明如下: ORG 0000H LJMP START ORG 0300H START: ACALL DSP1 ;初始化显示0.00、0.00、0.00 SCAN: ACALL KEXAM ;判断是否有按键 JNZ SCAN ;没按键就继续SCAN ACALL D10ms ;去抖 ACALL KEXAM JNZ SCAN KEY: SETB P1.1 ;检查键值 SETB P1.3 CLR P1.2 MOV A,P1 ANL A,#02H CJNE A,#02H,SCAN ;按键为1则返回继续查询是否有按键 ;按键为0,进入到数据采集、转换及显示 ADC: MOV R1,#40H MOV DPTR,#07FF8H MOV R2,#10 ;一个周期采集10个点 L9: MOV R0,#30H MOV R3,#4 L10: MOV A,#0 SETB P1.4 ;S/H保持 MOVX @DPTR,A ;启动ADC JNB P3.3 $ ;转换结束 CLR P1.4 ;S/H采样 MOVX A,@DPTR MOV @R0,A INC R0 ACALL D5ms DJNZ R3,L10 ACALL Filter ;滤波 INC R1 ACALL D500ms DJNZ R2,L9 ACALL ORDER ;计算要显示的值:最小值、最大值及中间值 ACALL DSP2 ;显示值 ;查询按键 ACALL KEXAM JNZ ADC ACALL D10ms ACALL KEXAM JNZ ADC SETB P1.1 SETB P1.3 CLR P1.2 MOV A,P1 ANL A,#02H CJNE A,#02H,START ;按键为1则返回开始,并显示0 AJMP ADC ;下面为子程序: ;判断是否有按键 KEXAM: SETB P1.1 CLR P1.2 CLR P1.3 MOV A,P1 ANL A,#02H ;0000 0010 RET ;初始化显示0.00、0.00、0.00 DSP1: MOV R0,#30H MOV R1,#40H MOV R2,#3 L0: MOV R1,#0 ACALL CHANGE0 ;将R1中的值转换为有物理意义的值,存入4个R0中 ACALL CHANGE1 ;将4个R0中的值转化为能显示的数模

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档