收藏 分销(赏)

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

上传人:w****g 文档编号:1655050 上传时间:2024-05-07 格式:DOC 页数:9 大小:147.51KB
下载 相关 举报
单片机数据采集、处理及显示程序设计.doc_第1页
第1页 / 共9页
单片机数据采集、处理及显示程序设计.doc_第2页
第2页 / 共9页
单片机数据采集、处理及显示程序设计.doc_第3页
第3页 / 共9页
单片机数据采集、处理及显示程序设计.doc_第4页
第4页 / 共9页
单片机数据采集、处理及显示程序设计.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

1、单片机数据采集、处理及显示程序设计一 总体设计方案:LED初始显示为0,采用查询的方式进行键盘扫描,以确定是否有输入,不停地扫描直到有输入为止:输入为1时,按键无效,继续扫描直到再次有输入,输入为0时,则开始进行数据的采集;采集一个周期,将采集后的数据进行滤波,再求出0、1/2Vmax、Vmax,送到LED显示,结束后进行键盘扫描,确定是否有按键1输入,有则停止,无则继续进行数据采集,如此循环。二 硬件逻辑图:1 下图为硬件逻辑图:2 单片机及各外设参数选择:A 单片机为8031/8051;B 采用外部时钟,振荡频率为12MHz,则机器周期为1us;C 由于本实验只需0、1两个按键就能实现控制

2、(0实现启动,1实现关闭),所以采用简单的12非编码键盘;D 由于已知输入信号为幅值5V的正弦信号,并要求A/D转换的误差小于0.02V,因此,选用ADC0809,其能处理的信号为05V,不需要进行信号放大;其分辨率为8位,转换的误差为0.0196V,能满足要求;其转换时间大约为100us;E 为了保证转换精度,在信号源与ADC之间还需加一S/H,采用LF398,保持电容选择为1000PF;F 由于要显示3个数据,且小数点后保留两位有效数据,所以需要34=12个LED,本实验选用7段LED;且从左到右,依次显示0、1/2Vmax、Vmax;G 由于要求利用串行口扩展接口来显示数据,所以需连接一

3、寄存器,本实验采用串行输入、并行输出的移位寄存器:74LS164。三 软件编写:1 流程图如下:本实验采用查询的方式来实现键盘的控制;在采集的过程中由于可能会有随机干扰,信号本身会在某一数值范围附近上下波动,所以采用算术平均滤波的方式进行滤波;由于输入信号最大频率为0.2Hz,选择采样周期为2Hz,即采样周期为500ms。键0YNN键1Y键0键1YNYNLED初始显示为0是否有按键?延时10ms去抖仍有按键?键0?键1?启动ADC 数据采集一个周期算术平均值滤波计算采集到的数值的最小值、中间值及最大值显示在LED上是否仍有按键?键0?键1?是否有按键?延时10ms去抖2 采用汇编进行编程,具体

4、的代码及其说明如下: ORG 0000H LJMP START ORG 0300HSTART: ACALL DSP1 ;初始化显示0.00、0.00、0.00SCAN: ACALL KEXAM ;判断是否有按键 JNZ SCAN ;没按键就继续SCAN ACALL D10ms ;去抖 ACALL KEXAM JNZ SCANKEY: 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 DPT

5、R,#07FF8H MOV R2,#10 ;一个周期采集10个点L9: MOV R0,#30H MOV R3,#4L10: 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,L10ACALL Filter ;滤波 INC R1 ACALL D500ms DJNZ R2,L9 ACALL ORDER ;计算要显示的值:最小值、最大值及中间值 ACALL DSP2 ;显示值 ;查询按键 ACALL K

6、EXAM 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.00DSP1: MOV R0,#30H MOV R1,#40H MOV R2,#3L0: MOV R1,#0 ACALL

7、CHANGE0 ;将R1中的值转换为有物理意义的值,存入4个R0中 ACALL CHANGE1 ;将4个R0中的值转化为能显示的数模 ACALL DPLED ;显示4个R0中的值 INC R1 DJNZ R2,L0 RET;输出显示一个LEDDPLED: MOV R0,#30H MOV R4,#4L1: MOV R3,#8 MOV A,R0L2: RLC A MOV P3.0,C CLR P3.1 SETB P3.1 DJNZ R3,L2 INC R0 DJNZ R4,L1 RET;将R0中要显示的转换为字模,然后覆盖R0CHANGE1: MOV R0,#30H MOV R4,#4L3: PU

8、SH ACC MOV DPTR,#TABLE MOV A,R0 MOV A,A+DPTR MOV R0,A INC R0 DJNZ R4,L3 RET;标度变换:将R1中的值转换为有物理意义的值,并存入4个R0中(如将125转换为2.45V)CHANGE0: PUSH ACC PUSH B ;除17 MOV A,R1 MOV B,#11H ;除以17 DIV AB MOV R0,A INC R0 MOV A,B MOV B,#0AH MUL AB MOV A,B MOV B,#11H ;除以17 DIV AB MOV R0,A INC R0 MOV A,B MOV B,#0AH MUL AB

9、MOV A,B MOV B,#11H ;除以17 DIV AB MOV R0,A ;除3 DEC R0 DEC R0 DEC R0 MOV A,R0 MOV B,#03H ;除以3 DIV AB MOV R0,A INC R0 MOV A,B MOV B,#0AH MUL AB MOV A,B ADD A,R0 MOV B,#03H ;除以3 DIV AB MOV R0,A INC R0 MOV A,B MOV B,#0AH MUL AB MOV A,B ADD A,R0 MOV B,#03H ;除以3 DIV AB ;将小数点10加上 INC R0 MOV R0,A DEC R0 DEC R

10、0 MOV A,R0 INC R0 MOV R0,A DEC R0 MOV R0,#10H POP B POP ACC RET;延时5msD5ms: MOV R2,#0AH ;10L4:MOV R3,#F8H ;248L5:DJNZ R3,L5 ;248*2=496 DJNZ R2,L4 ;500*10=5000us=5ms RET;延时10msD10ms: MOV R2,#14H ;20L4:MOV R3,#F8H ;248L5:DJNZ R3,L5 ;248*2=496 DJNZ R2,L4 ;500*20=10000us=10ms RET;延时500msD500ms: MOV R2,#1

11、00L6:MOV R3,#4L7:MOV R4,#249L8:NOP NOP NOP DJNZ R4,L8 ;125*5=1245 DJNZ R3,L7 ;1249*4=4996 DJNZ R2,L6 ;5000*100=500000us=500ms RET;算术平均滤波,将得到的值存入R1中Filter: PUSH PSW PUSH A PUSH B MOV FLAG,#00H MOV R4,#4 MOV R0,#30H CLR AL11: ADD A,R0 JNC NEXT INC FLAGNEXT: INC R0 DJNZ R4,L11 MOV R5,#4DIVIDE: MOV B,A

12、MOV A,FLAG CLR C RRC A MOV FLAG A MOV A,B RRC A DJNZ R5,DIVIDE MOV R1,A POP B POP A POP PSW RET;将采集到的R1中的10个值进行排序,采用冒泡法ORDER: MOV R3,#9L12: MOV A,R3 MOV R4,A MOV R1,#40HL13: MOV A,R1 INC R1 CLR C SUBB A,R1 JC DONE MOV A,R1 DEC R1 XCH A,R1 INC R1 MOV R1,ADONE: DJNZ R4,L13 DJNZ R3,L12 RET;显示R1中的值DSP2:

13、 MOV R1,#40H ACALL CHANGE0 ;将R1中的值转换为有物理意义的值,存入4个R0中 ACALL CHANGE1 ;将4个R0中的值转化为能显示的数模 ACALL DPLED ;显示4个R0中的值 INC R1 MOV R3,#2L14: MOV R4,#4 INC R1 DJNZ R4,L14 ACALL CHANGE0 ;将R1中的值转换为有物理意义的值,存入4个R0中 ACALL CHANGE1 ;将4个R0中的值转化为能显示的数模 ACALL DPLED ;显示4个R0中的值 DJNZ R3,L14 RET;数模表TABLE: DB 3FH,06H,5BH;0,1,2 DB 4FH,66H,6DH;3,4,5 DB 7DH,07H,7FH;6,7,8 DB 6FH,77H,7CH;9,10,11 DB 39H,5EH,7BH;12,13,14 DB 71H,80H ;15,.

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服