LS164串口显示


ORG    0000H
         LJMP  MAIN
         ORG   0100H
MAIN:    MOV   30H,#00H     ;给显示缓冲区赋初值
         MOV   31H,#00H
L0:      SETB  P1.0         ;164清零端‘CLR’置1(低电平有效)
         INC   30H      
         MOV   A,30H
         CJNE  A,#0AH,AA
         MOV   30H,#00H
         INC   31H
         MOV   A,31H
         CJNE  A,#0AH,AA
         MOV   30H,#00H
         MOV   31H,#00H      ;使31H,30H单元内容在00~99循环变化
AA:      MOV   SCON,#00H     ;设置串行口数据由RXD输入或输出,TXD用于输出移位时钟
         MOV   R7,#02H       ;设置要发送的字节个数
         MOV   R0,#30H       ;设置地址指针
         MOV   DPTR,#TAB
LOOP:    MOV   A,@R0
         MOVC  A,@A+DPTR     ;取出字型码
         MOV   SBUF,A        ;发送
WAIT:    JNB   TI,WAIT       ;等待一帧发关完毕
         CLR   TI
         INC   R0            ;指向下一个字形码
         DJNZ  R7,LOOP
         MOV R2,#30H         ;调用延时子程序
    LCALL DELYA
         CLR   P1.0          ;164清零端'CLR'置0(低电平有效)
         SJMP  L0
TAB:    DB 3FH,06H,5BH,04FH,66H,6DH,7DH,07H,7FH,6FH        ;七段LED段选码(共阴极)
    DB 77H,7CH,39H,5EH,86H,8EH,0FFH,0F1H,0C6H,092H,0BFH
DELYA: PUSH 02H                ;延时子程序
DELYB: PUSH 02H
DELYC: PUSH 02H
DELYD: DJNZ R2,DELYD
  POP 02H
  DJNZ R2,DELYC
  POP 02H
  DJNZ R2,DELYB
  POP 02H
  DJNZ R2,DELYA
  RET
       END

HC164显示.rar
(2008-09-22 10:26:23, Size: 17.5 KB, Downloads: 3)