历史上的今天
返回首页

历史上的今天

今天是:2025年01月10日(星期五)

正在发生

2018年01月10日 | 16X16共阳LED点阵显示屏程序

2018-01-10 来源:eefocus

;显示字用查表法,不占内存,用四个16*16共阳LED点阵显示, 
;效果:向上滚动显示字,每次四个,重复循环。 
;R2:行扫描地址(从00-0FH)。 
;R3:滚动显示时控制移动速度,也可控制静止显示的时间。 
                ORG     0000H 

                AJMP    START 
                ORG     000BH             ;T0 
                AJMP    INTT0 
                ORG     0030H 
;***************初始化程序 ; 
START:           MOV      P2,#7FH             ;清LED    
                 MOV      20H,#00H         ;清标志,00H为1帧扫描结束标志 
                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    MOV DISP         ;逐排显示,每次四字) 
                 MOV      DPTR,#TAB 
                LCALL    MOV DISP1        ;滚动显示,每排四字) 
                AJMP    MAIN 
; 四字逐排显示子程序 ; 
;每次四字移入移出显示方式,入口时定义好DPTR值 
MOV DISP:        MOV     R1,#6           ;显示6排字,每排四字(R1=排数) 
DISLOOP:         MOV      R3,#100         ;每排显示时间1.6*100=1.6S 
DIS MOV :         MOV     R2,#00H         ;第0行开始 
                SETB    TR0             ;开扫描(每次一帧) 
WAIT MOV :        JBC     00H,DISMOV1     ;标志为1扫描一帧结束(16毫秒为1帧,每行1毫秒) 
                AJMP    WAIT MOV 
DIS MOV 1:        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       MOV OUT          ; 
                AJMP    DISLOOP         ; 
MOV OUT:         RET                     ;移动显示结束 
;********************; 
; 四字滚动显示子程序 ; 
;每排四字向上移出显示方式,入口时定义好DPTR值 
MOV DISP1:        MOV     R1,#255          ;向上移动显示6排字,每排四字(R1=排数*16) 
DISLOOP1:         MOV      R3,#10          ;移动速度1.6*10=0.16S 
DIS MOV 2:         MOV     R2,#00H         ;第0行开始 
                 SETB    TR0             ;开扫描(每次一帧) 
WAIT MOV 1:        JBC     00H,DISMOV3     ;标志为1扫描一帧结束(16毫秒为1帧,每行1毫秒) 
                 AJMP    WAIT MOV 1 
DIS MOV 3:         DJNZ    R3,DISMOV2      ;1帧重复显示(控制移动速度) 
                 INC     DPTR            ;显示字指针移一行(二字节位置) 
                 INC     DPTR 
                 DEC     R1              ;R1为0,显示完 
                  MOV      A,R1 
                 JZ       MOV OUT1         ; 
                 AJMP    DISLOOP1        ; 
MOV OUT1:         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 
                 MOV C     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 
                 MOV C     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 
                 MOV C     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 
                 MOV C     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:     
DB 000H,0C0H,000H,0C0H,0FCH,0FCH,0FCH,0FCH,00DH,08CH,06DH,08CH,06BH,060H,038H,060H ;  
DB 018H,060H,018H,060H,03CH,070H,064H,0D8H,0E1H,08CH,043H,006H,006H,000H,000H,000H ; "欢" 0 

DB 001H,080H,067H,0FCH,067H,07CH,036H,06CH,006H,06CH,0F6H,06CH,0F6H,06CH,036H,06CH ;  
DB 036H,06CH,037H,07CH,036H,06CH,030H,060H,038H,000H,06FH,0FEH,0C7H,0FEH,000H,000H ; "迎" 1 

DB 001H,080H,001H,080H,031H,088H,019H,098H,019H,0B0H,009H,0A0H,0FFH,0FEH,0FFH,0FEH ;  
DB 006H,0C0H,006H,0C0H,006H,0C0H,00CH,0C4H,018H,0C6H,0F0H,0FEH,060H,07CH,000H,000H ; "光" 2 

DB 000H,0C0H,018H,0C0H,0D9H,0FCH,0D9H,0FCH,0DBH,000H,0DEH,060H,0D8H,030H,0DBH,0FCH ;  
DB 0DBH,0FCH,0DBH,06CH,0DBH,06CH,0DBH,06CH,0DBH,0FCH,01BH,0FCH,01BH,00CH,000H,000H ; "临" 3 

DB 000H,000H,0FDH,0FCH,0FDH,0FCH,058H,060H,031H,0FCH,0FDH,08CH,0FDH,0ACH,035H,0ACH ;  
DB 031H,0ACH,031H,0ACH,031H,0ACH,030H,060H,030H,0D8H,071H,08CH,063H,006H,000H,000H ; "预" 4 

DB 060H,000H,033H,0FCH,003H,0FCH,0FBH,00CH,0FBH,00CH,01BH,00CH,033H,0FCH,033H,0FCH ;  
DB 079H,0B0H,0FDH,0B0H,035H,0B0H,031H,0B6H,033H,036H,03EH,03EH,034H,01CH,000H,000H ; "祝" 5 

DB 003H,000H,003H,000H,003H,000H,003H,000H,07FH,0FCH,07FH,0FCH,003H,000H,003H,000H ;  
DB 003H,000H,007H,080H,006H,0C0H,00CH,060H,018H,030H,030H,018H,060H,00CH,000H,000H ; "大" 6 

DB 003H,000H,07FH,0FCH,07FH,0FCH,060H,00CH,01FH,0F0H,01FH,0F0H,006H,018H,01FH,030H ;  
DB 077H,060H,00DH,0F0H,03BH,0D0H,076H,0D8H,00CH,0CCH,07BH,0C4H,063H,080H,000H,000H ; "家" 7 

DB 003H,000H,01FH,0F8H,01FH,0F8H,018H,018H,01FH,0F8H,018H,018H,01FH,0FAH,018H,01EH ;  
DB 07FH,0FCH,07FH,0F8H,000H,0D8H,003H,098H,00FH,018H,07CH,078H,070H,070H,000H,000H ; "身" 8 

DB 018H,060H,018H,060H,030H,060H,037H,0FEH,077H,0FEH,070H,0E0H,0F1H,0F0H,0B1H,0F8H ;  
DB 033H,068H,032H,064H,037H,0FEH,03DH,0FAH,030H,060H,030H,060H,030H,060H,000H,000H ; "体" 9 

DB 030H,030H,03EH,0FCH,03EH,0FCH,066H,034H,067H,0FEH,0EDH,0FEH,0EEH,034H,06EH,0FCH ;  
DB 062H,030H,06AH,0FCH,06EH,030H,064H,0FEH,06EH,030H,07BH,0FEH,060H,0FEH,000H,000H ; "健" 10 

DB 001H,080H,07FH,0FEH,07FH,0FEH,061H,080H,06FH,0F8H,061H,098H,07FH,0FEH,061H,098H ;  
DB 06FH,0F8H,069H,0C0H,06DH,0D8H,067H,0B0H,06DH,09CH,0D9H,08CH,043H,080H,000H,000H ; "康" 11 

DB 000H,000H,0FFH,0FCH,0FFH,0FCH,006H,000H,006H,000H,007H,0F0H,007H,0F0H,00CH,030H ;  
DB 00CH,030H,00CH,030H,018H,030H,018H,030H,030H,030H,061H,0E0H,0C0H,0C0H,000H,000H ; "万" 12 

DB 001H,080H,07FH,0FEH,07FH,0FEH,001H,080H,03FH,0F8H,031H,098H,03FH,0F8H,001H,080H ;  
DB 03FH,0FCH,001H,08CH,0FFH,0FEH,001H,08CH,03FH,0FCH,001H,080H,007H,000H,000H,000H ; "事" 13 

DB 018H,000H,018H,000H,018H,0FCH,0FEH,0FCH,0FEH,0CCH,036H,0CCH,036H,0CCH,036H,0CCH ;  
DB 066H,0CCH,036H,0CCH,01CH,0CCH,01CH,0FCH,036H,0FCH,062H,0CCH,0C0H,000H,000H,000H ; "如" 14 

DB 001H,080H,07FH,0FCH,07FH,0FCH,00CH,060H,07FH,0FEH,000H,000H,01FH,0F8H,018H,018H ;  
DB 01FH,0F8H,018H,018H,01FH,0F8H,001H,000H,02DH,08CH,06CH,0B6H,0C7H,0F2H,000H,000H ; "意" 15 

DB 000H,000H,03FH,0F8H,03FH,0F8H,001H,080H,001H,080H,001H,080H,07FH,0FEH,07FH,0FEH ;  
DB 001H,080H,003H,0C0H,006H,060H,00CH,030H,018H,018H,070H,00EH,060H,006H,000H,000H ; "天" 16 

DB 000H,000H,03FH,0F8H,03FH,0F8H,001H,080H,001H,080H,001H,080H,07FH,0FEH,07FH,0FEH ;  
DB 001H,080H,003H,0C0H,006H,060H,00CH,030H,018H,018H,070H,00EH,060H,006H,000H,000H ; "天" 17 

DB 000H,000H,07FH,0FCH,07FH,0FCH,00CH,060H,00CH,060H,00CH,060H,0FFH,0FEH,0FFH,0FEH ;  
DB 00CH,060H,00CH,060H,00CH,060H,018H,060H,018H,060H,070H,060H,020H,060H,000H,000H ; "开" 18 

DB 000H,000H,003H,000H,001H,080H,000H,080H,000H,000H,006H,010H,036H,018H,036H,00CH ;  
DB 066H,006H,066H,006H,046H,010H,006H,018H,007H,0F8H,003H,0F0H,000H,000H,000H,000H ; "心" 19 

        END 


推荐阅读

史海拾趣

潮州三环(Three-circle)公司的发展小趣事

潮州三环(集团)股份有限公司,最初成立于1970年,主要从事陶瓷基体及固定电阻器的制造和销售。然而,随着电子行业的快速发展,公司意识到单一产品已无法满足市场需求。因此,在1996年,三环集团开始投资生产片式电阻用的氧化铝陶瓷基片,这一决策标志着公司正式进入片式化元件制造领域。通过引进国外先进设备和技术,三环集团成功实现了电阻及瓷体的自动化生产,为公司后续的发展奠定了坚实基础。

Fagor Electrónica公司的发展小趣事

随着技术的不断进步和市场需求的不断变化,Fagor Electrónica开始将其业务范围扩展到更广泛的电子和数字领域。公司不断推出新的产品和服务,以满足不同客户的需求。同时,Fagor Electrónica还积极拓展国际市场,将其产品销往世界各地。这一时期的多元化发展和市场拓展为公司带来了更大的商业机会和更广阔的市场前景。

Great American Electronics公司的发展小趣事

1959年,Fagor Electrónica在电子领域崭露头角,当时它还只是Ulgor, S. Coop.公司旗下的一个电子部门。这一年,公司开始制造硒板和整流器,这标志着其电子制造业务的开始。尽管初始规模不大,但Fagor Electrónica凭借其高质量的产品和卓越的客户服务,迅速在市场上赢得了声誉。

Horn公司的发展小趣事

在追求经济效益的同时,Horn公司也注重可持续发展。公司积极采用环保材料和绿色生产工艺,减少对环境的影响。此外,Horn公司还注重人才培养和团队建设,为公司的长期发展奠定了坚实的人才基础。展望未来,Horn公司将继续秉承“创新、质量、服务”的企业理念,致力于成为切削工具行业的领导者,为全球客户提供更加优质的产品和服务。

飞虹(FeiHong)公司的发展小趣事

随着业务规模的不断扩大,苏州锋驰开始积极拓展国内外市场。公司不仅在国内市场取得了显著的成绩,还逐步将产品和服务推向国际市场。在品牌建设方面,苏州锋驰注重提升品牌知名度和美誉度,通过参加行业展会、举办技术交流会等多种方式,加强与客户的沟通和交流,赢得了广泛的关注和认可。同时,公司还不断优化产品和服务质量,提升客户满意度和忠诚度。

这五个故事共同勾勒出了苏州锋驰微电子有限公司在电子行业中的发展历程和成就,展现了其作为一家科技型中小企业的蓬勃生机和广阔前景。

Data Device Corporation公司的发展小趣事

随着电子技术的不断发展,DDC也积极投入研发,寻求技术突破。在数据接口技术方面,DDC不断推陈出新,研发出了一系列高性能、高可靠性的产品。同时,DDC还拓展了业务领域,将产品应用于更广泛的领域,如地面保障、高速串行通信等。这些举措使得DDC的产品线更加丰富,市场竞争力也得到了进一步提升。

问答坊 | AI 解惑

PIC使用需注意!!!

877A的RA口是具有模拟输入功能的I/O口,使用RA口做基本的输入输出可能会出现一个莫名其妙的问题…

查看全部问答>

CM12864串口驱动

本帖最后由 paulhyde 于 2014-9-15 09:18 编辑 CM12864 带字库 最少只要占用2个IO口  …

查看全部问答>

PCB电路版图设计的常见问题

么是零件封装,它和零件有什么区别?   (1)零件封装是指实际零件焊接到电路板时所指示的外观和焊点位置。   (2)零件封装只是零件的外观和焊点位置,纯粹的零件封装仅仅是空间的概念,因此不同的零件可以共用同一个零件封装;另一方面,同种零 ...…

查看全部问答>

横竖屏自动切换问题

想做个有电话借打时,屏幕自动转换为竖屏,借打完成后,自动转换为原来的屏幕方式,各位提供个方法…

查看全部问答>

求助 ATAPI 驱动

小弟刚接触这个东东,为一DVDROM写ATAPI驱动,检测到硬件没问题,Identify命令(0xa1)执行成功,但执行SCSI测试命令时出错,通过RequestSense(0x03h)命令检测到sensekey 为2。我的主芯片是三星5009。请问各位大虾这是什么原因造成的阿,不胜感激 ...…

查看全部问答>

有哪位哥哥知道DEC2812板为何选用既有电源监视又具有看门狗作用的TPS3823-33?

看了TPS3823-33.PDF资料,TPS3823-33除开电源监控作用外,还具有看门狗作用,喂狗由WDI输入。疑问:F2812内部不是集成了看门狗吗,为何外面还要这么一块芯片,会不会增加了电路的复杂程度,选用一个仅有电源监控的芯片不就可以了吗? …

查看全部问答>

用EKK-LM3S8962交换STM32开发板

此开发板从派睿所得。一直没有使用,未拆开发板包装,全新。配件齐全。本人想学习stm32,如有以下其中之一或者资源相当,闲置不使用者可与本人交换。如果想购买的话定300元(本人主要是想和开发板闲置不使用的朋友交换资源) 1、奋斗版STM32开发板 ...…

查看全部问答>

ds12c887

用keil和proteus仿真读ds12c887的时间。读出后 LCD  显示     I5 :I5:  I5  不知道哪里出了问题,求教!!!!!!!!!!!!!!!!!!unchar read_ds(unchar add){      unchar ds ...…

查看全部问答>