稳压输出与同步显示电路的单片机源程序

来源:本站
导读:目前正在解读《稳压输出与同步显示电路的单片机源程序》的相关信息,《稳压输出与同步显示电路的单片机源程序》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《稳压输出与同步显示电路的单片机源程序》的详细说明。
简介:本文主要介绍采用AT89C2051控制稳压输出与同步显示的电路源程序,并有详细的程序说明。

采用AT89C2051控制稳压输出与同步显示的电路源程序

ORG 0000H

START: AJMP MAIN

TAB1: DB 128,64,32,16 ;Dn值表格

TAB2: DB 0C0H,92H,0C0H,0C0H ;数字0.5.0.0字段代码表

TAB3: DB 0B0H,99H,82H,90H ;数字3.4.6.9字段代码表

MAIN: MOV SCON,#0 ;设串行口模式0

SETB P3.7 ;接继电器实现极性状态改变,开始置P3.7=1

SETB P3.4 ;电压及显示控制按钮

SETB P3.5 ;极性转换按钮

BEGIN: MOV SP, #60H

MOV 23H,#0 ;送输出P1.7=1的Dn值指针

MOV 20H,#0 ;小数点一位指针指向“0”字符(20H是小数点的指针)

MOV 21H,#0 ;个位指针指向“3”字符(21H是个位数点的指针)

ACALL DSP ;调用显示、输出子程序

NOP

JNB P3.4,$

ACALL DEL200

;

KEY1: JB P3.4, KEY2 ;电压及显示键是否有键?

ACALL DEL10

JB P3.4, KEY2

ACALL K1

;

KEY2: JB P3.5, KEY1 ;极性转换键是否有键?

ACALL DEL10

JB P3.5, KEY1

ACALL K2

AJMP KEY1

;

DEL10: MOV R6,#0DH ;10ms延时子程序

D1MS1: MOV R7,#0FFH

DLL1: DJNZ R7, DLL1

DJNZ R6, D1MS1

RET

;

DEL200: MOV R3, #0FFH ;200ms延时子程序

D1MS2: MOV R4, #0FFH

DLL2: DJNZ R4, DLL2

DJNZ R3, D1MS2

RET

;

K1: MOV A,23H ;电压及显示键处理子程序

CJNE A, #03H, REL1

AJMP BEGIN

REL1: INC 23H

INC 20H

INC 21H

ACALL DSP

NOP

JNB P3.4,$

ACALL DEL200

NOP

RET

;

K2: CPL P3.7 ;极性转换键处理子程序

JNB P3.5,$

ACALL DEL200

NOP

RET

;

DSP: MOV R7, #02 ;显示、输出子程序

MOV R0, #20H

MOV R1, #21H

MOV DPTR, #TAB2

MOV A, @R0

DSP1: MOVC A, @A+DPTR

MOV SBUF, A

DSP2: JNB TI, DSP2

CLR TI

MOV A, @R1

MOV DPTR, #TAB3

DJNZ R7, DSP1

MOV DPTR, #TAB1

MOV A, 23H

MOVC A, @A+DPTR

MOV P1, A

RET

;

END

源程序说明

程序中定义了三个表TAB1、TAB2、TAB3,分别存放P1口的数据、小数点后一位字符、个位字符。并且用23H、20H、21H分别作为P1口的数据、小数点后一位字符、个位字符的指针,指针开始时均指向“0”,即分别对应着128、0C0H、0B0H。

程序运行后,调用“显示/输出子程序”,在“显示/输出子程序”中依次执行:将字符“0”对应的代码“0C0H”发送、将字符“3”对应的代码“0B0H”发送、将P1口置为“128”(即表示P1.7—P1.0为10000000)。显然在“显示/输出子程序”中输出字符和置P1口的数据等,用的是查表指令MOVC A,@A+DPTR,DPTR是数据指针,查表时采用DPTR作为基址寄存器,在该指令执行前,DPTR中存放表的起始地址(例如MOV DPTR,#TAB2),A的内容(用MOV R0,#20H和MOV A,@R0两条指令完成)作为无符号数与DPTR的内容相加得到一个16位地址,由该地址指出的程序存储器的单元的内容送到累加器A中,再由MOV SBUF,A指令将字符对应的代码发送出往,同样对P1口数据的传送用指令MOV A,23H和MOVC A,@A+DPTR以及MOV P1,A完成。

程序在结束此次调用“显示/输出子程序”后,就反复扫描P3.4口和P3.5口,随时响应按键S1和S2的操纵,如S1按下,则进进“S1处理子程序”,即“电压及显示键处理子程序”;如S2按下,则进进“S2处理子程序”即“极性转换键处理子程序”。

在“电压及显示键处理子程序”中,每执行一次该子程序,都是先将三个指针23H、20H、21H加1,然后调用“显示/输出子程

序”,下面的过程是与开始一样的,只不过,由于指针改变而改变了相应代码,实现显示、稳压输出为“4.5、4.5V”→“6.0、6.0V” →“9.0、9.0V”→“3.0、3.0V”的循环过程。留意,当23H指针加到03H后,表明电路应回到起始状态,重新以“3.0、3.0V”开始,程序用CJNE A,#03H,ACTION1指令来控制,即当A中内容即是03H后,程序不会执行标号ACTION1开始的程序段,而是转到执行标号FW的程序段,回到起始状态。

在“极性转换键处理子程序”中,每执行一次该子程序,就对P3.7取反一次,实现极性转换。

提醒:《稳压输出与同步显示电路的单片机源程序》最后刷新时间 2024-03-14 01:16:32,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《稳压输出与同步显示电路的单片机源程序》该内容的真实性请自行鉴别。