四字16*16点阵显示程序

发布者:InspiredDreamer最新更新时间:2018-01-07 来源: eefocus关键字:四字16*16点阵  显示程序 手机看文章 扫描二维码
随时随地手机看文章

;显示字用查表法,不占内存,用四个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:    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  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  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  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  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,0F7H,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  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,0C0H,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,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 
        ; 
        END 


关键字:四字16*16点阵  显示程序 引用地址:四字16*16点阵显示程序

上一篇:数控调频台汇编程序
下一篇:四字16*16点阵电子屏字符显示器

推荐阅读最新更新时间:2024-03-16 15:51

数码管滚动显示C语言程序设计
#include reg52.h //51芯片管脚定义头文件 #include intrins.h //内部包含延时函数 _nop_(); #define uchar unsigned char #define uint unsigned int uchar display ={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xBF,0xBF,0x89,0x86,0xC7,0xC7,0xC0,0xBF,0xBF, // --H E L L O - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}; uchar shift,j=0; /******
[单片机]
计数测试数码管显示程序
计数测试数码管显示程序 #include AT89X51.H //6.000MHz #define uchar unsigned char #define uint unsigned int #define L 0 #define R 1 uchar SEG7 ={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f};/*0~9的数码管段码*/ #define reset() {WDT=0x1e;WDT=0xe1;} uchar act ={0xf3,0xfc};//数码管位码 /*******************************************
[单片机]
基于framebuffer技术的DVI显示驱动程序的开发
引言 DVI是Digital VisualInterface(数字视频接口)的缩写。在嵌入式电子领域,像DVI这样的高清接口应用越来越多,很多嵌入式产品采用H.264视频编码技术,支持播放H.264格式的720P分辨率的视频文件,这就需要至少1024 768分辨率的显示输出设备。 MX51是飞思卡尔半导体的基于ARM Cortex-A8内核的高端ARM嵌入式多媒体处理器,支持720P视频多种格式的硬解码,可以用来开发高清机顶盒、上网本等产品,很多情况下需要集成DVI这样的高清视频端子。 在嵌入式电子产品中,Linux操作系统占有越来越多的市场份额。本文采用Linux2.6.28内核和MX51作为系统的软、硬件平台,详细论述了基
[单片机]
基于framebuffer技术的DVI<font color='red'>显示</font>驱动<font color='red'>程序</font>的开发
LCD显示模块并行接口驱动程序设计
  引 言   人们在日常生活中,LCD占有很大的地位。人们使用的电脑、手机、车载系统、各种测量设备、显示设备等等,都把LCD作为重要的人机接口,它把使用者需要的信息及时反应出来。目前市场上存在着各种LCD和相对应的驱动模块,驱动模块所带的驱动程序都是针对本身模块开发的,各种驱动程序之间通用性差,而且在不同的平台上很难移植。每换一种LCD产品,都要根据它的驱动模块重写驱动程序。这样产品开发资源浪费,开发周期长,成本增加。本文将介绍一种LCD图形液晶驱动器的使用方法以及程序裁剪、移植和扩展,实现在任意坐标上显示图形和汉字。这款驱动器不带字库,对需要显示的汉字和字母通过字模产生器产生数据,通过程序设计把字体在LCD通过描点描述出来(本文
[嵌入式]
1335 lcd显示C程序
1335 LCD 显示C程序 //;------------------------------------------------------------------- //;SED1335 //; LCM指令端口地址FFFFH:数据端口地址:FFFEH //; 320*240点阵整屏的点象素为76800,也就有9600(2580H)个字节,单屏图形方式 //; 所以第一区显示缓存地址范围为:0000H----257FH //; 所以第二区显示缓存地址范围为:2580H----4AFFH //; 所以第三区显示缓存地址范围为:4B00H----707FH //; 320*240点阵整屏---一
[单片机]
TLC1549数码管显示程序
TLC1549 数码管 显示程序 #include reg52.h #include intrins.h sbit AD_CS = P3^7; sbit AD_DAT = P3^5; sbit AD_CLK = P3^4; unsigned char i,j,q,p,k; // unsigned int AD_Temp,Temp,TempA; /**********4个7段数码管锁存器地址************/ #define LED 1ADDR 0x80 #define LED2ADDR 0x81 #define LED3ADDR 0x82 #define LED4ADDR 0x83 /******0-9 a-f
[单片机]
DS18B20温度单片机控制显示C程序
温度值精确到0.1度,lcd1602显示 仿真电路图如下 c程序如下: #include reg51.h #define uchar unsigned char #define uint unsigned int sbit DQ=P3^7;//ds18b20与单片机连接口 sbit RS=P3^0; sbit RW=P3^1; sbit EN=P3^2; unsigned char co de str1 ={ temperature: }; unsigned char co de str2 ={ }; uchar da ta disdata ; uint tvalue;//温度值 uchar tf
[单片机]
DS18B20温度单片机控制<font color='red'>显示</font>C<font color='red'>程序</font>
软键盘产品界面显示的通用程序设计
摘要:介绍如何利用状态图的分析结果把握待开发系统的软界面结构,完成软键盘控制类产品界面显示的通用程序设计。 关键词:状态图 控制类产品 界面 数据结构 可视频程序的一个重要特点是:有大量的窗口、对话框等界面与用户进行交互,并根据用户在界面上的操作进行相应的事务处理。设计良好的用户界面不仅可以提高用户与软件的交互效率,而且可以减少用户操作与控制状态转换出错的概率。好的设计界面不但要注意屏幕布局,更在充分理解待完成工作的基础上,快速地构架系统的有效结构,使编程人员有更多的精力去实现系统的处理功能。下面介绍一种在Nucleus仿真器MNT中快速实现产品界面设计的经验。 图1 PDA产品的主界面和部分功能操作界面 1 系统分析
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved