采用普通集成电路制作轻触式步进调整控制电路时,外围电路相对较复杂;本文介绍用单片机AT89C2051来编程制作轻触式步进调整控制电路,则外围电路较简单,微型继电器的驱动电路容易制作,实际运行效果也不错。适合初学者仿制。
一、电路结构
轻触式步进调整控制电路主要由AT89C2051与微型继电器构成,电路如图二所示。P3.0和P3.1作输入端口,分别接上拉电阻R1、R2和轻触开关S1、S2,S1做步进调整开关,S2做退步调整开关。P1.7~P1.0和P3.2~P3.7共13个口作输出端口,每一个端口用一颗发光二极管与PNP型三极管基极相连接,输出信号经过三极管放大后驱动微型继电器工作,发光二极管起到连接输出信号和显示输出信号的作用。微型继电器的常开或常闭触点与外围电路联接,通过控制微型继电器的触点闭合或断开来达到控制外围电路作步进调整工作。
图二 轻触式步进调整控制电路图
图三 轻触式步进调整控制直流稳压输出电路图
二、工作原理
接通电源后,AT89C2051内部程序首先将P1.7~P1.0和P3.2~P3.7输出端口置成高电位,使联接在每个输出端口上的微型继电器驱动电路均停止工作,其次将P3.0和P3.1输入端口也置成高电位,使输入端口处于准备接收信号的状态。然后程序开始单独循环检测P3.0端口是否为低电位,即检测轻触开关S1是否被按下,如果S1是第一次被按下,则P1.7端口由高电位变为低电位,LED1导通,使微型继电器J1触点闭合,LED1对应发光显示该端有信号输出;此后,程序除了循环检测接在P3.0端口的轻触开关S1是否被按下以外,还要增加循环检测接在P3.1端口的轻触开关S2是否被按下;如果S1是连续第二次被按下,则P1.6端口由高电位变为低电位,LED2导通,使微型继电器J2触点闭合,LED2对应发光显示该端有信号输出,同时P1.7端口从低电位变为高电位,LED1熄灭,微型继电器J1触点断开。依此原理,每按下一次S1时,J1~J13触点顺序步进闭合,LED随步进对应发光显示该端有信号输出,外围电路也随之作步进调整工作;反之,每按下一次S2时,J1~J13触点顺序退步闭合,LED随退步发光显示该端有信号输出,外围电路同样也随之作退步调整工作。图三是该电路的一个应用实例。适当剪短程序,用其中五个输出端口可轻触式步进调整控制直流稳压输出电压,控制J1~J5的触点闭合或断开,就能分别为LM317的调整端接入不同阻值的电阻,使LM317输出大小不同的电压。电阻R*8~R*12的值可以根据需要输出电压大小不同通过实验测得。在LM317输入为18V时,分别测得电阻值为 2K、1.4K、865Ω、704Ω、 和 327Ω,可对应输出12V、9V、6V、5V和3V五组常用直流稳压电压。
三、轻触式步进控制电路的流程图
图一是用89C2051制作轻触式步进控制电路的程序流程图中的一部分。其余部分原理相同,依次类推。
四、轻触式步进控制电路的源程序
ORG 0000H
MOV P1 ,#0FFH
MOV P3 ,#0FFH
L0 :JB P3.0 ,L0 ;按键1是否被按下,不是转L0
L1 :JNB P3.0 ,L1 ;按键1是否被抬起,不是转L1
CLR P1.7 ;开第1个端口
Q0 :JB P3.1 ,L2 ;按键2是否被按下,不是转Q0
Q1 :JNB P3.1 ,Q1 ;按键2是否被抬起,不是转Q1
SETB P1.7 ;关第1个端口
LJMP L0 ;转L0
L2 :JB P3.0 ,Q0 ;按键1是否被按下,不是转Q0
L3 :JNB P3.0 ,L3 ;按键1是否被抬起,不是转L3
SETB P1.7 ;关第1个端口
CLR P1.6 ;开第2个端口
Q2 :JB P3.1 ,L4
Q3 :JNB P3.1 ,Q3
SETB P1.6
CLR P1.7
LJMP L2
L4 :JB P3.0 ,Q2 ;
L5 :JNB P3.0 ,L5
SETB P1.6 ;关第2个端口
CLR P1.5 ;开第3个端口
Q4 :JB P3.1 ,L6
Q5 :JNB P3.1 ,Q5
SETB P1.5
CLR P1.6
LJMP L4
L6 :JB P3.0 ,Q4
L7 :JNB P3.0 ,L7
SETB P1.5 ;关第3个端口
CLR P1.4 ;开第4个端口
Q6 :JB P3.1 ,L8
Q7 :JNB P3.1 ,Q7
SETB P1.4
CLR P1.5
LJMP L6
L8 :JB P3.0 ,Q6
L9 :JNB P3.0 ,L9
SETB P1.4 ;关第4个端口
CLR P1.3 ;开第5个端口
Q8 :JB P3.1 ,L10
Q9 :JNB P3.1 ,Q9
SETB P1.3
CLR P1.4
LJMP L8
L10 :JB P3.0 ,Q8
L11 :JNB P3.0 ,L11
SETB P1.3 ;关第5个端口
CLR P1.2 ;开第6个端口
Q10 :JB P3.1 ,L12
Q11 :JNB P3.1 ,Q11
SETB P1.2
CLR P1.3
LJMP L10
L12 :JB P3.0 ,Q10
L13 :JNB P3.0 ,L13
SETB P1.2 ;关第6个端口
CLR P1.1 ;开第7个端口
Q12 :JB P3.1 ,L14
Q13 :JNB P3.1 ,Q13
SETB P1.1
CLR P1.2
LJMP L12
L14 :JB P3.0 ,Q12
L15 :JNB P3.0 ,L15
SETB P1.1 ;关第7个端口
CLR P1.0 ;开第8个端口
Q14 :JB P3.1 ,L16
Q15 :JNB P3.1 ,Q15
SETB P1.0
CLR P1.1
LJMP L14
L16 :JB P3.0 ,Q14
L17 :JNB P3.0 ,L17
SETB P1.0 ;关第8个端口
CLR P3.2 ;开第9个端口
Q16 :JB P3.1 ,L18
Q17 :JNB P3.1 ,Q17
SETB P3.2
CLR P1.0
LJMP L16
L18 :JB P3.0 ,Q16
L19 :JNB P3.0 ,L19
SETB P3.2 ;关第9个端口
CLR P3.3 ;开第10个端口
Q18 :JB P3.1 ,L20
Q19 :JNB P3.1 ,Q19
SETB P3.3
CLR P3.2
LJMP L18
L20 :JB P3.0 ,Q18
L21 :JNB P3.0 ,L21
SETB P3.3 ;关第10个端口
CLR P3.4 ;开第11个端口
Q20 :JB P3.1 ,L22
Q21 :JNB P3.1 ,Q21
SETB P3.4
CLR P3.3
LJMP L20
L22 :JB P3.0 ,Q20
L23 :JNB P3.0 ,L23
SETB P3.4 ;关第11个端口
CLR P3.5 ;开第12个端口
Q22 :JB P3.1 ,L24
Q23 :JNB P3.1 ,Q23
SETB P3.5
CLR P3.4
LJMP L22
L24 :JB P3.0 ,Q22
L25 :JNB P3.0 ,L25
SETB P3.5 ;关第12个端口
CLR P3.7 ;开第13个端口
Q24 :JB P3.1 ,L26
Q25 :JNB P3.1 ,Q25
SETB P3.7
CLR P3.5
LJMP L24
L26 :JB P3.0 ,Q24
L27 :JNB P3.0 ,L27
SETB P3.7 ;关第13个端口
LJMP L0 ;转L0
END