jstu 发表于 2009-4-14 14:45:57

请各位前辈指点,我做的4个16*16的LED汉字显示.但就是不能显示 . 请前辈指点!!!!!!

请各位前辈指点,我做的4个16*16的LED汉字显示.但就是不能显示 . 请前辈指点!!!!!!
我把proteus仿真和hex.和原理图程序上传上来了!!!!ourdev_436332.rar(文件大小:635K) (原文件名:aaa.rar)

jstu 发表于 2009-4-14 16:01:03

请大家看了给指点指点啊!!!!现在是想学无门啊!!!   我要拜师!!

sukexi 发表于 2009-4-14 16:50:10

建议楼主把原理图图片直接上传,主要程序直接发在帖子里。这样大家才更方便帮你。

jstu 发表于 2009-4-14 16:52:36

恩谢谢楼上提醒!!!!

jstu 发表于 2009-4-14 16:55:03

;                   **********************************
;                   *                                 *
;                   *四字16*16点阵电子屏字符显示器*
;                   *   AT89C52   12MHZ晶振         *
;                   *       2005.5.10   LRM         *
;                   **********************************
;显示字用查表法,不占内存,用四个16*16共阳LED点阵显示,
;效果:向上滚动显示字,每次四个,重复循环。
;R2:行扫描地址(从00-0FH)。
;R3:滚动显示时控制移动速度,也可控制静止显示的时间。
;************;
;中断入口程序;
;************;
;
ORG   0000H
LJMP    START
ORG   0003H
RETI
ORG   000BH
LJMP    INTT0
ORG   0013H
RETI
ORG   001BH
RETI
ORG   0023H
RETI
ORG   002BH
RETI
;
;************;
; 初始化程序 ;
;************;
;
;
;************;
;   主程序   ;
;************;
;
START:          MOV   20H,#00H             ;清标志,00H为1帧扫描结束标志
                MOV   A,#0FFH            ;端口初始化
                MOV   P1,A
                MOV   P2,A
                MOV   P3,A
                MOV   P0,A
                CLR   P1.6            ;串行寄存器打入输出端控制位
                MOV   TMOD,#01H       ;使用T0作16位定时器,行扫描用。
                MOV   TH0,#0FCH       ;1ms初值(12MHZ)
                MOV   TL0,#18H
                MOV   SCON,#00H       ;串口0方式传送显示字节
                MOV   IE,#82H         ;T0中断允许,总中断允许
                MOV   SP,#70H
                LCALL   DIS1            ;显示准备,黑屏,1.5秒
MAIN:         MOV   DPTR,#TAB
                LCALL   MOVDISP         ;逐排显示,每次四字)
                MOV   DPTR,#TAB
                LCALL   MOVDISP1      ;滚动显示,每排四字)
                AJMP    MAIN
;
;
;********************;
; 四字逐排显示子程序 ;
;********************;
;每次四字移入移出显示方式,入口时定义好DPTR值
;
MOVDISP:      MOV   R1,#6         ;显示6排字,每排四字(R1=排数)
DISLOOP:      MOV   R3,#100         ;每排显示时间1.6*100=1.6S
DISMOV:         MOV   R2,#00H         ;第0行开始
                SETB    TR0             ;开扫描(每次一帧)
WAITMOV:      JBC   00H,DISMOV1   ;标志为1扫描一帧结束(16毫秒为1帧,每行1毫秒)
                AJMP    WAITMOV
DISMOV1:      DJNZ    R3,DISMOV       ;1帧重复显示(控制显示时间)
                MOV   A,#128          ;显示字指针移一排(每排4字*32=128)
                ADD   A,DPL         ;
                MOV   DPL,A
                MOV   A,#0
                ADDC    A,DPH
                MOV   DPH,A
                DEC   R1            ;R1为0,显示完
                MOV   A,R1
                JZ      MOVOUT          ;
                AJMP    DISLOOP         ;
MOVOUT:         RET                     ;移动显示结束
;
;********************;
; 四字滚动显示子程序 ;
;********************;
;每排四字向上移出显示方式,入口时定义好DPTR值
;
MOVDISP1:      MOV   R1,#255          ;向上移动显示6排字,每排四字(R1=排数*16)
DISLOOP1:      MOV   R3,#10          ;移动速度1.6*10=0.16S
DISMOV2:         MOV   R2,#00H         ;第0行开始
               SETB    TR0             ;开扫描(每次一帧)
WAITMOV1:      JBC   00H,DISMOV3   ;标志为1扫描一帧结束(16毫秒为1帧,每行1毫秒)
               AJMP    WAITMOV1
DISMOV3:         DJNZ    R3,DISMOV2      ;1帧重复显示(控制移动速度)
               INC   DPTR            ;显示字指针移一行(二字节位置)
               INC   DPTR
               DEC   R1            ;R1为0,显示完
               MOV   A,R1
               JZ      MOVOUT1         ;
               AJMP    DISLOOP1      ;
MOVOUT1:         RET                     ;移动显示结束
;
;
;*****************;
; 四个字显示子程序;
;*****************;
;静止显示表中某四个字
DIS1:         MOV   R3,#5AH         ;静止显示时间控制(16MS*#=1.6秒)
DIS11:          MOV   R2,#00H         ;一帧扫描初始值(行地址从00-0FH)
                MOV   DPTR,#TAB       ;取表首址
                SETB    TR0             ;开扫描(每次一帧)
WAIT11:         JBC   00H,DIS111      ;为1,扫描一帧结束
                AJMP    WAIT11
DIS111:         DJNZ    R3,DIS11
                RET
;
;
;************;
;扫描程序;
;************;
;1MS传送一行,每行显示1毫秒,一次传送四个字的某行共8个字节.
;
INTT0:          PUSH    ACC
                MOV   TH0,#0FCH       ;1ms初值重装
                MOV   TL0,#18H
                MOV   A,#97         ;指向第四个字行右字节
                ADD   A,DPL
                MOV   DPL,A
                MOV   A,#0
                ADDC    A,DPH
                MOV   DPH,A
                MOV   A,#0
                MOVC   A,@A+DPTR      ;查表
                MOV   SBUF,A          ;串口0方式发送
WAIT:         JBC   TI,GO         ;等待发送完毕
                AJMP    WAIT            ;
GO:             MOV   A,DPL         ;指向第四个字行左字节
                SUBB    A,#1
                MOV   DPL,A
                MOV   A,DPH
                SUBB    A,#0
                MOV   DPH,A
                MOV   A,#0
                MOVC   A,@A+DPTR
                MOV   SBUF,A
WAIT1:          JBC   TI,GO1
                AJMP    WAIT1
;
GO1:            MOV   R0,#03H
MLOOP:          MOV   A,DPL         ;指向前三个字行右字节
                SUBB    A,#31
                MOV   DPL,A
                MOV   A,DPH
                SUBB    A,#0
                MOV   DPH,A
                MOV   A,#0
                MOVC   A,@A+DPTR      ;查表
                MOV   SBUF,A          ;串口0方式发送
WAIT2:          JBC   TI,GO2         ;等待发送完毕
                AJMP    WAIT2            ;
GO2:            MOV   A,DPL         ;指向前三个字行左字节
                SUBB    A,#1
                MOV   DPL,A
                MOV   A,DPH
                SUBB    A,#0
                MOV   DPH,A
                MOV   A,#0
                MOVC   A,@A+DPTR
                MOV   SBUF,A
WAIT3:          JBC   TI,GO3
                AJMP    WAIT3
GO3:            DJNZ    R0,MLOOP      ;执行三次
;
;
                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   DPTR            ;
                INC   DPTR            ;下一行数据地址
                MOV   A,R2
                ANL   A,#0FH
                JNZ   GO4
                SETB    00H             ;R2为10H,现为末行扫描,置1帧结束标志
                MOV   A,DPL         ;指针修正为原帧初值
                SUBB    A,#32
                MOV   DPL,A
                MOV   A,DPH
                SUBB    A,#0
                MOV   DPH,A
                CLR   TR0             ;一帧扫描完,关扫描
GO4:            POP   ACC
                RETI                  ;退出
;
;
;***************;
;扫描文字表   ;
;***************;
; 共五排字,每排四个字,前后为黑屏
TAB:    DB0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH   ;黑屏
      DB0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
      DB0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH   ;黑屏
      DB0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
      DB0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH   ;黑屏
      DB0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
      DB0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH   ;黑屏
      DB0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
      DB0F7H,0DFH,0F9H,0CFH,0FBH,0BFH,0C0H,007H,0DEH,0F7H,0C0H,007H,0DEH,0F7H,0DEH,0F7H    ;--文字:单--
      DB0C0H,007H,0DEH,0F7H,0FEH,0FFH,000H,001H,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH
      DB0FFH,0BFH,0EFH,0BFH,0EFH,0BFH,0EFH,0BBH,0E0H,001H,0EFH,0FFH,0EFH,0FFH,0EFH,0FFH    ;--文字:片--
      DB0E0H,00FH,0EFH,0EFH,0EFH,0EFH,0EFH,0EFH,0DFH,0EFH,0DFH,0EFH,0BFH,0EFH,07FH,0EFH
      DB0EFH,0FFH,0EFH,007H,0EFH,077H,001H,077H,0EFH,077H,0EFH,077H,0C7H,077H,0CBH,077H    ;--文字:机--
      DB0ABH,077H,0AFH,077H,06EH,0F7H,0EEH,0F5H,0EDH,0F5H,0EDH,0F5H,0EBH,0F9H,0EFH,0FFH
      DB0FFH,0FFH,0F0H,00FH,0F7H,0EFH,0F0H,00FH,0F7H,0EFH,0F0H,00FH,0FFH,0FFH,000H,001H    ;--文字:是--
      DB0FEH,0FFH,0F6H,0FFH,0F6H,007H,0F6H,0FFH,0EAH,0FFH,0DCH,0FFH,0BFH,001H,0FFH,0FFH
      
      DB0FFH,0FFH,0C0H,003H,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH   ;--文字:工--
      DB0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,000H,001H,0FFH,0FFH,0FFH,0FFH
      DB0FBH,0BFH,0FBH,0BFH,0FBH,0BFH,0FBH,0BBH,0BBH,0B9H,0DBH,0B3H,0DBH,0B7H,0EBH,0AFH   ;--文字:业--
      DB0E3H,0AFH,0EBH,09FH,0FBH,0BFH,0FBH,0BFH,0FBH,0BBH,000H,001H,0FFH,0FFH,0FFH,0FFH
      DB0FEH,0FFH,0FEH,0FFH,0DEH,0F7H,0C0H,003H,0DEH,0F7H,0DEH,0F7H,0DEH,0F7H,0DEH,0F7H   ;--文字:中--
      DB0DEH,0F7H,0C0H,007H,0DEH,0F7H,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH
      DB0E0H,00FH,0EFH,0EFH,0E0H,00FH,0EFH,0EFH,0E0H,00FH,0FFH,0FFH,000H,001H,0DDH,0FFH    ;--文字:最--
      DB0C1H,003H,0DDH,077H,0C1H,0AFH,0DCH,0DFH,0C1H,0AFH,01DH,071H,0FCH,0FBH,0FDH,0FFH
      
      DB0F7H,0DFH,0F7H,0DFH,080H,003H,0F7H,0DFH,0F0H,01FH,0F7H,0DFH,0F0H,01FH,0F7H,0DFH    ;--文字:基--
      DB000H,001H,0F7H,0DFH,0EEH,0E7H,0C0H,011H,03EH,0FBH,0FEH,0FFH,080H,003H,0FFH,0FFH
      DB0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,000H,001H,0FCH,07FH,0FCH,0BFH,0FAH,0BFH,0FAH,0DFH    ;--文字:本--
      DB0F6H,0EFH,0EEH,0E7H,0D0H,011H,03EH,0FBH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FFH,0FFH
      DB0EFH,07FH,0EFH,07FH,0DFH,07FH,083H,003H,0BAH,0FBH,0BAH,0FBH,0B9H,0FBH,083H,07BH    ;--文字:的--
      DB0BBH,0BBH,0BBH,09BH,0BBH,0DBH,0BBH,0FBH,083H,0FBH,0BBH,0D7H,0BFH,0EFH,0FFH,0FFH
      DB0FEH,0FFH,0FFH,07FH,0C0H,003H,0DFH,0FFH,0DDH,0FFH,0DEH,0F7H,0CFH,073H,0D7H,037H   ;--文字:应--
      DB0DBH,06FH,0DBH,06FH,0D9H,0DFH,0BBH,0DFH,0BFH,0BFH,0A0H,001H,07FH,0FFH,0FFH,0FFH
      
      DB0FFH,0FFH,0E0H,003H,0EFH,07BH,0EFH,07BH,0EFH,07BH,0E0H,003H,0EFH,07BH,0EFH,07BH   ;--文字:用--
      DB0EFH,07BH,0E0H,003H,0EFH,07BH,0EFH,07BH,0DFH,07BH,0DFH,07BH,0BFH,06BH,07FH,077H
      DB0FDH,0FFH,0FEH,0FFH,0FFH,07FH,000H,001H,0FDH,0FFH,0FDH,0FFH,0FCH,00FH,0FDH,0EFH    ;--文字:方--
      DB0FBH,0EFH,0FBH,0EFH,0F7H,0EFH,0F7H,0EFH,0EFH,0EFH,0DFH,06FH,03FH,09FH,0FFH,0FFH
      DB0FFH,05FH,0FFH,067H,0FFH,06FH,080H,003H,0FFH,07FH,0FFH,07FH,0FFH,07FH,0C1H,07FH    ;--文字:式--
      DB0F7H,0BFH,0F7H,0BFH,0F7H,0BFH,0F4H,0DFH,0E3H,0DDH,08FH,0EDH,0DFH,0F5H,0FFH,0FBH
      DB0F9H,0BFH,0C7H,0AFH,0F7H,0B7H,0F7H,0B7H,0F7H,0BFH,000H,001H,0F7H,0BFH,0F7H,0B7H    ;--文字:我--
      DB0F1H,0D7H,0C7H,0CFH,037H,0DFH,0F7H,0AFH,0F6H,06DH,0F7H,0F5H,0D7H,0F9H,0EFH,0FDH
      
      DB0FFH,007H,0C0H,06FH,0EDH,0EFH,0F6H,0DFH,0C0H,001H,0DDH,0FDH,0BDH,0FFH,0C0H,003H    ;--文字:爱--
      DB0FBH,0FFH,0F8H,00FH,0F3H,0DFH,0F4H,0BFH,0EFH,03FH,09CH,0CFH,073H,0F1H,0CFH,0FBH
      DB0F7H,0DFH,0F9H,0CFH,0FBH,0BFH,0C0H,007H,0DEH,0F7H,0C0H,007H,0DEH,0F7H,0DEH,0F7H    ;--文字:单--
      DB0C0H,007H,0DEH,0F7H,0FEH,0FFH,000H,001H,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH
      DB0FFH,0BFH,0EFH,0BFH,0EFH,0BFH,0EFH,0BBH,0E0H,001H,0EFH,0FFH,0EFH,0FFH,0EFH,0FFH    ;--文字:片--
      DB0E0H,00FH,0EFH,0EFH,0EFH,0EFH,0EFH,0EFH,0DFH,0EFH,0DFH,0EFH,0BFH,0EFH,07FH,0EFH
      DB0EFH,0FFH,0EFH,007H,0EFH,077H,001H,077H,0EFH,077H,0EFH,077H,0C7H,077H,0CBH,077H    ;--文字:机--
      DB0ABH,077H,0AFH,077H,06EH,0F7H,0EEH,0F5H,0EDH,0F5H,0EDH,0F5H,0EBH,0F9H,0EFH,0FFH
      
      END

jstu 发表于 2009-4-14 16:57:14

http://cache.amobbs.com/bbs_upload782111/files_14/ourdev_436375.jpg
(原文件名:5BF77FCCF08DE9E989DBAF530DA9BF36.jpg)

http://cache.amobbs.com/bbs_upload782111/files_14/ourdev_436376.jpg
(原文件名:5CFBF86873576AA19745730F5810CBD0.jpg)

http://cache.amobbs.com/bbs_upload782111/files_14/ourdev_436377.jpg
(原文件名:77AFFFAB8EF207A01CA7507644E0A1F4.jpg)

http://cache.amobbs.com/bbs_upload782111/files_14/ourdev_436378.jpg
(原文件名:A7ECC3D7D53302E45F61111B7F322148.jpg)

http://cache.amobbs.com/bbs_upload782111/files_14/ourdev_436379.jpg
(原文件名:D8A22E8973C88E66E5490C9CC9092FB9.jpg)

http://cache.amobbs.com/bbs_upload782111/files_14/ourdev_436380.jpg
(原文件名:DD91350AEAA4547759140612134F1779.jpg)

jstu 发表于 2009-4-14 16:59:57

http://cache.amobbs.com/bbs_upload782111/files_14/ourdev_436381.jpg
(原文件名:11111111111111111111.jpg)

jstu 发表于 2009-4-14 17:03:22

请前辈看了以上资料后把我的仿真下载下来看看到底是因为什么啊!!!!!
仿真的时候开始是黑屏大概等了大概半分钟才开始变化,
但是控制行的始终是高电平啊!!!!!三极管的C和E端都是高电平啊   高手指点啊!!!!

star55 发表于 2009-4-14 18:43:49

太牛了,为啥程序都要用汇编来写?C语言懂得写的,写出来效率也不会比汇编差吧,而且开发难度又低,可维护性、扩展性都会好很多。

taishandadi 发表于 2009-4-14 20:19:38

lz,你先做静止的显示。如果能显示,然后在移动。刚开始不要弄的太多。一步步来。

jstu 发表于 2009-4-14 20:23:22

不是我现在仿真连静止都不行啊 !!!不知道怎么的这论坛里没人肯教啊!!!

taishandadi 发表于 2009-4-14 21:49:45

lz,不要急,慢慢来。不要一次做太多。你现在做一个16*16的,显示一个字,能先仿真成功吗?你如果不熟悉的话,就不要一次直接做多个字的显示。

kbdcj2000 发表于 2009-4-17 11:10:41

晕了。书中是使用了单片机的串口引脚,不是使用单片机的串口吧?书上的源程序,你没看?你用单片机的串口发送显示数据,595的移位时钟从哪里来啊?TXD?

friendljy 发表于 2009-4-17 11:13:30

楼主很认真,代码很整齐,帮顶下,可惜汇编看不懂了。

honami520 发表于 2009-4-17 14:34:08

我知道,楼主是从书上找的例子,自己根本不知道这些代玛是什么意思,所以连三极管都不会操作.不会是大专的毕业设计吧.本科一般要复杂点.

kbdcj2000 发表于 2009-4-17 15:40:01

每人带,确实很痛苦。有人带,而最基本的595的资料都不看的话,会更痛苦。老师要骂人的。呵呵

bambooflute 发表于 2009-8-15 00:25:54

实在不好意思,看汇编太吃力了,除非对汇编很专业,否则折磨自己干嘛?用C吧。上面几位说得有道理,可以分成几个小块分别实现,再综合到一起。祝LZ好运。
页: [1]
查看完整版本: 请各位前辈指点,我做的4个16*16的LED汉字显示.但就是不能显示 . 请前辈指点!!!!!!