第六章 常用控制程序设计

更新时间:2023-05-30 17:58:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

常用单片机控制程序

第六章

常用控制程序设计

6.1 判断程序设计 6.2 数据采集程序设计

6.3 数字滤波程序设计6.4 标度变换程序设计

6.5 上下限报警处理程序设计6.6 LED数码管显示程序设计

6.7 定时程序设计6.8 键盘控制程序设计

常用单片机控制程序

6.1 判断程序设计 6.1.1 算术判断程序 6.1.2 逻辑判断程序 6.1.3 标志判断程序

返回本章首页

常用单片机控制程序

判断程序就是分支执行程序。例如:电机转速控制系统检测电机转速

电机输入电压降低输入电压

是否大于 给定转速

提高输入电压

图6-1 判断程序框图

常用单片机控制程序

6.1.1 算术判断程序 6.1.2 逻辑判断程序(1)读入数据(开关状态或阀门的位置); (2)屏蔽不需要的状态位; (3)与所要求的状态比较; (4)判断比较结果,选择程序入口。 例 6-1 A、B、C、 D4个开关,当四个开 关均闭合时,顺序执 行相应的程序,否则, 继续检测。R1 R2 R3 R4 A B C D

+5V

图6-5

开关位置检测图

.

P1.6

.

P1.4

.

P1.2

.

8031 P1.0

常用单片机控制程序

图 6 6 开 关 状 态 检 测 流 程 图

读入开关状态

屏蔽不需要的位

满足要求否? 是 继续执行

… … CHECK:MOV A,P1 ;读入开关状态 ANL A,#55H;屏蔽无用位 XRL A,#00H;判断A,B,C,D 是否全部闭合 JNZ CHECK;A,B,C,D没全 部闭合,继续检测 … ;否则顺序执 行相应程序 …

常用单片机控制程序

6.1.3 标志判断程序根据某一设定的标志单元(或标志位)的状态,决定程序的 执行方向。 FLAG BIT 00H ; 标志位判断 设定00H为电机旋转方向控制位 … 是 否 标志位为1否? JB FLAG RIGHT ;FLAG=1, 转RIGHT LEFT: … ;FLAG=0,顺时针 执行顺时针旋 执行逆时针旋 … 转控制程序 转控制程序 RIGHT: … ;逆时针图6-7 电机旋转方向控制程序流程图

常用单片机控制程序

6.2 数据采集程序设计对生产过程中的各个参数按照一定的周期进行检查和 测量,检测的数据经处理后进行显示、打印和报警等操作。P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.039 38 37 36 35 34 33 32

.. .

.. .

..

74LS3733 D7 4 D6 7 D5 8 D4 13 D3 14 D2 17 D1 18 D0

Q1 Q0 1 OE

_ R/C A0

8031AH

..12 28 17 16 1 2 3

..

AD574A27DB11 26 DB10 DB10 25 DB9 24 23 DB8 22 DB7 21 DB6 20 DB5 19 DB4 18 DB3 17 DB2 16 DB1 28 3 6

+Vs

11 7 13

+15V -15V

-Vs 10Vspn

模拟温度信号输入

REF IN REF OUT BIP OFF

10 8 12

.

100Ω

.

+15V 100K 100 Ω 100K -15V

INT0 P2.7 RD WR

DB0 STATUS Q0 CS CE

AN-GND 9 _ 12/8 2

.

7400

常用单片机控制程序

中断向量设置

关中断

AD574地址设置

读A/D转换数据高8位

数据存储首址设置

保存数据

外部中断0设置

改变存储地址

启动A/D转换

读A/D转换数据低4位

中断等待

开中断

返 回 (b) 中断服务程序

(a) 转换主程序

常用单片机控制程序

ORG AJMP ORG AJMP START: MOV SETB SETB

0000H START 0003H SAMPLE R0,#40H IT0 ;转至数据采样程序 ;设置数据存储初址 MOV DPTR,

#0000H;建立AD574A的地址 EX0 ;允许外部中断0 ;外部中断0请求信号方式为脉冲方式

SETBMOVX HERE:

EA

;中断允许;启动A/D转换

@DPTR,A

AJMP HERE;等待中断

常用单片机控制程序

中断服务程序清单: SAMPLE: MOV MOVX MOV INC INC MOVX SETB RETI CLR EA ;关中断 DPTR,#0002H; A,@DPTR ;读A/D转换数据的高8位 @R0,A ;保存数据 R0 DPTR A,@DPTR ;读A/D转换数据的低4位 EA ;开中断

返回本节

常用单片机控制程序

3.3 数字滤波程序设计 1. 程序判断滤波 2. 中值滤波 3. 算术平均滤波

返回本章首页

常用单片机控制程序

1. 程序判断滤波限幅滤波 │Yn-Yn-1│≤△y, 则Yn=Yn , 取本次采样值 │Yn-Yn-1│ >△y, 则Yn=Yn-1 ,取上次采样值

现场保护

读Yn-1,Yn

Yn-1 -Yn≥0 是

否 求 Yn -Yn-1

Yn-1 -Yn > Y 是 取上次采样值

取本次采样值

现场恢复

返 回

常用单片机控制程序

PUSH PUSH CLR MOV MOV SUBB JNC CPL INC

PSW ;保护现场 A C ;进位标志位清零 DATA,DATA2; A,DATA1 ; A,DATA ;求Yn-1 -Yn COMPARE ;如果Yn-1 -Yn≥0,转COMPARE A ;如果Yn-1 -Yn<0, 求补 A ;│Yn-Yn-1│和△y比较 ;│Yn-Yn-1│≤△y,DATA2→DATA ;│Yn-Yn-1│>△y,DATA1→DATA ;恢复现场 ; ;返回

COMPARE: CLR C SUBB A,LIMIT JC OVER MOV DATA,DATA1 OVER: POP A POP PSW RET

常用单片机控制程序

2. 中值滤波对某一被测参数开 始

连续采样n次(奇数),然后把n次 采样值按顺序排

现场保护 设置数据区首址 设置数据个数 读 数据排序 否

图 6 中 值 滤 波 程 序 流 程 框 图 7

列,取其中间值做为本次采样值。

排序 据 完成否? 是 是 取中值现场恢复 返 回

常用单片机控制程序

PUSH PSW PUSH SORT: MOV CLR LOOP: MOV INC MOV CLR SUBB JC MOV DEC MOV INC SETB

A MOV R0,DATA ;数据存储区单元首址 R7,TIME ;读比较次数 FLAG ;清交换标志位 MOV A,@R0 ;取第一个数 FIRST,A ;保存第一个数 R0 SECOND,@R0 ;保存第二个数 C A,@R0 ;两数比较 NEXT ;第一数小于第二数,不交换 @R0,FIRST R0 @R0,SECOND ;交换两数 R0 FLAG ;置交换标志位

常用单片机控制程序

NEXT:DJNZ JB DEC CLR MOV RRC MOV CONT:DEC DJNZ MOV POP POP RET

R7,LOOP ;进行下一次比较 FLAG,SORT ;进行下一轮比较 R0 C A,TIME A R7,A R0 R7,CONT SAMP,@R0 ;取中值 A PSW

常用单片机控制程序

现场保护

设置数据区首址

3. 算术平均滤波 把n个采样值相加,然后 取其算术平均值作为本次 有效的采样信号,即:否

设置循环次数

读数据

图 6 10 算 术 平 均 滤 波 程 序 流 程 图

-

累加求和

所有数据 加完否? 是 求平均值

恢复现场

常用单片机控制程序

PUSHPUSH MOV

PSW ;现场保护A FLAG,#00H ;进位位清零

MOVMOV CLR

R0,DATAR7,#08H A

;设置数据存储区首址;设置采样数据个数

;清累加器

LOOP:JNC INC NEXT: DJNZ MOV

ADD A,@R0

;两数相加

NEXT ;无进位,转NEXT FLAG ;有进位,进位位加1 INC R0 ;数据指针加1 ;未加完,继续加 ;设置循环次数 R7, LOOP R7,#03H

常用单片机控制程序

DIVIDE: MOV CLR RRC

MOV MOV RRC DJNZ

MOV TEMP,A A,FLAG C A FLAG,A A,TEMP A

;保存累加器中的内容

;累加结果除2

R7,DIVIDE ;未结束,继续执行

MOVPOP POP

SAMP,AA PSW

;保存结果至SAMP中

;恢复现场

RET

常用单片机控制程序

6.4 标度变换程序设计 一般的线性仪表,标度变换公式为:

为了简化程序设计,一般把被测参数的起点A0所对应的A/D 转换值设定为0,即N0=0:

返回本章首页

常用单片机控制程序

BD:Am-Ao

Nx-No

$

MOV SUB1_L,AM INC AM MOV SUB1_H,AM MOV SUB2_L,A0 INC A0 MOV SUB2_H,A0 ACALL SUB2 MOV MUL1_H,DIFF_H MOV MUL1_L,DIFF_L MOV SUB1_L,NX INC NX MOV SUB1_H,NX MOV SUB2_L,N0 INC N0 MOV SUB2_H,N0 ACALL SUB2 MOV MUL2_H,DIFF_H MOV MUL2_L,DIFF_L ACALL MULTD MOV DIV1_H,PR_H MOV DIV1_L,PR_L MOV SUB1_L,NM

INC MOV MOV INC MOV ACALL MOV MOV ACALL CLR MOV ADDC MOV INC A0 MOV ADDC MOV RET

NM SUB1_H,NM SUB2_L,N0 Nm-No N0 SUB2_H,N0 SUB2 DIV2_H,DIFF_H DIV2_L,DIFF_L DUBDIV $ C Nm-No A,DIV1_L A,A0 AX,A 结果+Ao A,DIV1_H A,A0 AX,A

本文来源:https://www.bwwdw.com/article/9b64.html

Top