北京市北方思源电子技术中心

商城首页
公司简介
产品中心
公司动态
应用案例
资料下载
诚聘英才
在线反馈
联系我们



  优势产品列表  
HP8130A 可编程高速脉冲信号发生器

双通道动态信号分析仪 HP 35665A

铷钟频率计 PM6685R/071

SDH/PDH数字传输分析仪 PCM-4

蜂窝基站测试仪/无线电综测仪

高频信号源 HP8648A

数字光波长计 TQ8325

视频信号图形产生器 Chroma 2316

2GHz高频信号源 HP8657B

二手失真/音频分析仪 UPA3

视频分析仪 UAF

CCVS电视信号发生器 SFF

无线综测仪

便携式频谱分析仪

任意波形发生器/函数发生器



  友情链接  
· 5117-我要仪器网

您现在的位置: 北京市北方思源电子技术中心  >  应用案例
  应用案例  
稳压输出与同步显示电路的单片机源程序
        浏览次数:2018    发布日期:06年04月17日     来源:无线电杂志
采用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取反一次,实现极性转换。




地址:大柳树路17号富海中心4号楼一层105室(北京交通大学西门外向北200米路西)
电话:010-62123258/59 传真:010-62123258 电子邮件:buy17@163.com 联系人:思源仪器
disign by:5117-我要仪器