微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 高手看看这个点阵程序有什么问题

高手看看这个点阵程序有什么问题

时间:10-02 整理:3721RD 点击:

;                ****************************************

;                 *                                      *

;                 *    单个16×16点阵电子屏字符显示器  *

;                 *        AT89C51      12 MHz晶振       *

;                 *           2007.4. 30     LRM        *

;                ****************************************

;显示字用查表法,不占内存,字符用16 × 16共阳LED点阵,

;效果:向上滚动显示20个字,再重复循环。

;Rl:查表偏址寄存器,B:查表首址,R2:扫描地址(从00~OFH)。

;R3:滚动显示时控制移动速度,单字显示可控制静止显示的时间。

;*****************;

;  中断入口程序   ;

;*****************;

ORG    0000H      ;复位地址

LJMP   START      ;跳到标号START执行

ORG    0003H      ;外中断0中断程序入口

RETI               ;外中断0中断返回

ORG    000BH      ;定时器T0中断程序入口

LJMP   INTT0      ;跳至INTT0执行   

ORG    0013H      ;外中断1中断程序入口

RETI               

ORG    001BH      ;定时器T1中断程序入口

RETI

ORG    0023H      ;串行中断程序入口地址

RETI

ORG    002BH      ;定时器T2中断入口地址

RETI

;*****************;

;   初始化程序    ;

*****************;

;*****************;

;     主程序      ;

;*****************;

START:     MOV   20H, #00H          ;清标志,OOH为第16行开始扫描标志,01 为1帧

                                     ;扫描结束标志

MOV   A, #0FFH           ;端口初始化

MOV   P1, A              

MOV   P2, A

MOV    P3, A

MOV   P0, A

CLR   P1.6               ;串行寄存器输入打入输出控制位

MOV   TMOD, #01H         ;使用TO作16位定时器,行扫描用。

MOV   TH0, 0FCH          ;1 ms初值(12 MHz)

MOV   TL0, #18H

MOV   SCON, #00H         ;串口0方式传送显示字节

MOV   IE, #82H           ;T0中断允许,总中断允许

MOV   SP, #70H

MAIN:      LCALL  DIS1               ;显示准备,黑屏,1.5s

MOV   DPTR, #TAB         

LCALL MOVDISP            ;向上滚动显示一页(8个字)

INC   DPH

LCALL MOVDISP            ;向上滚动显示一页(8个字)

INC   DPH

LCALL MOVDISP            ;向上滚动显示一页(8个字)

AJMP  MAIN

;********************;

;多字滚动显示子程序  ;

;********************;

;每次8个字,入口时定义好DPTR值

MOVDISP:   MOV     B, #00H            ;向上移动显示,查表偏址暂存(从00开始)

DISLOOP:  MOV   R3, #07H           ;移动速度

DISMOV:    MOV    R2, #00H           ;第0行开始

           MOV    R1, B

           SETB   TR0                ;开扫描(每次一帧)

WAITMOV:  JBC   01H, DISMOV1       ;标志为1扫描一帧结束(16 ms为1帧,每行1 ms)

           AJMP   WAITMOV

DISMOV1:  DJNZ  R3, DISMOV         ;l帧重复显示(控制移动速度)

           INC     B                 ;显示字的下一行(每行2字节)

           INC     B

           MOV    A,Rl             ;Rl为0,8个字显示完

           JZ      MOVOUT

           AJMP    DISLOOP

MOVOUT:   RET                       ;移动显示结束

;********************;

;   单字显示子程序   ;

;********************;

;显示表中某个字

DIS1:      MOV   R3, #5AH           ;静止显示时间控制(16 ms *#=1. 6 s)

DIS11:     MOV    R2, #00H           ;一帧扫描初始值(行地址从00~OFH)

MOV   DPTR, #TAB         ;取表首址

MOV   R1, #00H           ;查表偏址(显示第一个字)

SETB  TR0                ;开扫描(每次一帧)

WAIT11:    JBC    01H, DIS111        ;为1,扫描一帧结束

AJMP  WAIT11

DIS111:    DJNZ  R3, DIS11

RET

;************;

;  扫描程序  ;

;************;

;1ms刷新一次,每行显示1s

INTT0:     PUSH  ACC

MOV    TH0, #0FCH         ;l ms初值重装

MOV   TL0, #18H

JBC   00H, GOEND         ;16行扫描标志为1,结束

INC   R1                 ;取行右边字节偏址

MOV   A, R1

MOVC  A, @A+DPTR         ;查表

MOV   SBUF, A            ;串口0方式发送

WAIT:      JBC   T1, GO             ;等待发送完毕

AJMP   WAIT

GO:        DEC   R1                 ;取行左边字节偏址

MOV    A, R1

MOVC   A, @A+DPTR

MOV    SBUF, A

WAIT1:     JBC    T1, GO1

AJMP   WAIT1

GO1:       SETB  P1.7               ;关行显示,准备刷新

NOP                       ;串口寄存器数据稳定

SETB   P1.6               ;产生上升沿,行数据打人输出端

NOP

NOP

CLR    P1.6               ;恢复低电平

MOV    A, R2              ;修改显示行地址

ORL    A, #0F0H           ;修改显示行地址

MOV    R2, A              ;修改显示行地址

MOV    A, P1              ;修改显示行地址

ORL    A, #0FH            ;修改显示行地址

ANL    A, R2              ;修改显示行地址

MOV    P1, A              ;修改完成

CLR    P1.7               ;开行显示

INC    R2                 ;下一行扫描地址值

INC    R1      

INC    R1                 ;下一行数据地址

MOV    A, R2

ANL    A, #0FH

JNZ    GO2

SETB   00H                ;R2为10H,现为末行扫描,置标志

GO2:       POP    ACC

           RETI

GOEND:     CLR   TR0                ;一帧扫描完,关扫描

SETB   01H                ;一帧扫描完,置结束标志

           POP    ACC

           RETI                      ;退出

;****************;

;   扫描文字表   ;

;****************;

TAB:     DB            0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,

0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH   ;黑屏

            DB             0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,

0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH

            DB            0F7H,0DFH,0F9H,0CFH,0FBH,0BFH,0C0H,007H,

0DEH,0F7H,0C0H,007H,0DEH,0F7H,0DEH,0F7H   ;单

DB             0C0H,007H,0DEH,0F7H,0FEH,0FFH,000H,001H,

0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH

DB            0FFH,0BFH,0EFH,0BFH,0EFH,0BFH,0EFH,0BBH,

0E0H,001H,0EFH,0FFH,0EFH,0FFH,0EFH,0FFH   ;片

DB             0E0H,00FH,0EFH,0EFH,0EFH,0EFH,0EFH,0EFH,

0DFH,0EFH,0DFH,0EFH,0BFH,0EFH,07FH,0EFH

DB            0EFH,0FFH,0EFH,007H,0EFH,077H,001H,077H,

0EFH,077H,0EFH,077H,0C7H,077H,0CBH,077H   ;机

DB             0ABH,077H,0AFH,077H,06EH,0F7H,0EEH,0F5H,

0EDH,0F5H,0EDH,0F5H,0EBH,0F9H,0EFH,0FFH

DB            0FFH,0FFH,0F0H,00FH,0F7H,0EFH,0F0H,00FH,

0F7H,0EFH,0F0H,00FH,0FFH,0FFH,000H,001H   ;是

DB             0FEH,0FFH,0F6H,0FFH,0F6H,007H,0F6H,0FFH,

0EAH,0FFH,0DCH,0FFH,0BFH,001H,0FFH,0FFH

DB            0FFH,0FFH,0C0H,003H,0FEH,0FFH,0FEH,0FFH,

0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH   ;工

DB             0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,

0FEH,0FFH,000H,001H,0FFH,0FFH,0FFH,0FFH

DB            0FBH,0BFH,0FBH,0BFH,0FBH,0BFH,0FBH,0BBH,

0BBH,0B9H,0DBH,0B3H,0DBH,0B7H,0EBH,0AFH   ;业

DB             0E3H,0AFH,0EBH,09FH,0FBH,0BFH,0FBH,0BFH,

0FBH,0BBH,000H,001H,0FFH,0FFH,0FFH,0FFH

DB             0FEH,0FFH,0FEH,0FFH,0DEH,0F7H,0C0H,003H,

0DEH,0F7H,0DEH,0F7H,0DEH,0F7H,0DEH,0F7H   ;中

DB             0DEH,0F7H,0C0H,007H,0DEH,0F7H,0FEH,0FFH,

0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH

DB            0FEH,0FFH,0FEH,0FFH,0DEH,0F7H,0C0H,003H,

0DEH,0F7H,0DEH,0F7H,0DEH,0F7H,0DEH,0F7H   ;中

DB             0DEH,0F7H,0C0H,007H,0DEH,0F7H,0FEH,0FFH,

0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH

DB            0E0H,00FH,0EFH,0EFH,0E0H,00FH,0EFH,0EFH,

0E0H,00FH,0FFH,0FFH,000H,001H,0DDH,0FFH   ;最

DB             0C1H,003H,0DDH,077H,0C1H,0AFH,0DCH,0DFH,

0C1H,0AFH,01DH,071H,0FCH,0FBH,0FDH,0FFH

DB            0F7H,0DFH,0F1H,0DFH,080H,003H,0F7H,0DFH,

0F0H,01FH,0F7H,0DFH,0F0H,01FH,0F7H,0DFH   ;基

DB             000H,001H,0F7H,0DFH,0EEH,0E7H,0C0H,011H,

03EH,0FBH,0FEH,0FFH,080H,003H,0FFH,0FFH

DB             0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,000H,001H,

0FCH,07FH,0FCH,0BFH,0FAH,0BFH,0FAH,0DFH   ;本

DB             0F6H,0EFH,0EEH,0E7H,0D0H,011H,03EH,0FBH,

0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FFH,0FFH

DB            0EFH,07FH,0EFH,07FH,0DFH,07FH,083H,003H,

0BAH,0FBH,0BAH,0FBH,0B9H,0FBH,083H,07BH   ;的

DB             0BBH,0BBH,0BBH,09BH,0BBH,0DBH,0BBH,0FBH,

083H,0FBH,0BBH,0D7H,0BFH,0EFH,0FFH,0FFH

DB            0FEH,0FFH,0FFH,07FH,0C0H,003H,0DFH,0FFH,

0DDH,0FFH,0DEH,0F7H,0CFH,073H,0D7H,037H   ;应

DB             0DBH,06FH,0DBH,06FH,0D9H,0DFH,0BBH,0DFH,

0BFH,0BFH,0A0H,001H,07FH,0FFH,0FFH,0FFH

DB            0FFH,0FFH,0E0H,003H,0EFH,07BH,0EFH,07BH,

0EFH,07BH,0E0H,003H,0EFH,07BH,0EFH,07BH   ;用

DB              0EFH,07BH,0E0H,003H,0EFH,07BH,0EFH,07BH,

0DFH,07BH,0DFH,07BH,0BFH,06BH,07FH,077H

DB             0FDH,0FFH,0FEH,0FFH,0FFH,07FH,000H,001H,

0FDH,0FFH,0FDH,0FFH,0FCH,00FH,0FDH,0EFH   ;方

DB              0FBH,0EFH,0FBH,0EFH,0F7H,0EFH,0F7H,0EFH,

0EFH,0EFH,0DFH,06FH,03FH,09FH,0FFH,0FFH

DB             0FDH,0FFH,0FEH,0FFH,0FFH,07FH,000H,001H,

0FDH,0FFH,0FDH,0FFH,0FCH,00FH,0FDH,0EFH   ;方

DB              0FBH,0EFH,0FBH,0EFH,0F7H,0EFH,0F7H,0EFH,

0EFH,0EFH,0DFH,06FH,03FH,09FH,0FFH,0FFH

DB             0FFH,05FH,0FFH,067H,0FFH,06FH,080H,003H,

0FFH,07FH,0FFH,07FH,0FFH,07FH,0C1H,07FH   ;式

DB              0F7H,0BFH,0F7H,0BFH,0F7H,0BFH,0F4H,0DFH,

0E3H,0DDH,08FH,0EDH,0DFH,0F5H,0FFH,0FBH

DB             0F9H,0BFH,0C7H,0AFH,0F7H,0B7H,0F7H,0B7H,

0F7H,0BFH,000H,001H,0F7H,0BFH,0F7H,0B7H   ;我

DB              0F1H,0D7H,0C7H,0CFH,037H,0DFH,0F7H,0AFH,

0F6H,06DH,0F7H,0F5H,0D7H,0F9H,0EFH,0FDH

DB             0FFH,007H,0C0H,06FH,0EDH,0EFH,0F6H,0DFH,

0C0H,001H,0DDH,0FDH,0BDH,0FFH,000H,003H   ;爱

DB              0FBH,0FFH,0F8H,00FH,0F3H,0DFH,0F4H,0BFH,

0EFH,03FH,09CH,0CFH,073H,0F1H,0CFH,0FBH

DB              0F7H,0DFH,0F9H,0CFH,0FBH,0BFH,0C0H,007H,

0DEH,0F7H,000H,007H,0DEH,0F7H,0DEH,0F7H   ;单

DB              0C0H,007H,0DEH,0F7H,0FEH,0FFH,000H,001H,

0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH

DB             0FFH,0BFH,0EFH,0BFH,0EFH,0BFH,0EFH,0BBH,

0E0H,001H,0EFH,0FFH,0EFH,0FFH,0EFH,0FFH   ;片

DB              0E0H,00FH,0EFH,0EFH,0EFH,0EFH,0EFH,0EFH,

0DFH,0EFH,0DFH,0EFH,0BFH,0EFH,07FH,0EFH

DB             0EFH,0FFH,0EFH,007H,0EFH,077H,001H,077H,

0EFH,077H,0EFH,077H,0C7H,077H,0CBH,077H   ;机

DB              0ABH,077H,0AFH,0FFH,06EH,0F7H,0EEH,0F5H,

0EDH,0F5H,0EDH,0F5H,0EBH,0F9H,0EFH,0FFH

DB             0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,

0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH   ;黑屏

DB              0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,

0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH

END


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top