LCD12864汇编语言程序例子

发布者:不见南师久最新更新时间:2018-01-17 来源: eefocus关键字:LCD12864  汇编语言 手机看文章 扫描二维码
随时随地手机看文章

12864接口程序(MCS51模拟口线方式)
;***************************************************************************
;连线图: *LCM---8031* *LCM---8031* *LCM------------8031* *LCM----------8031*
;        *DB0---P1.0* *DB4---P1.4* *RS-------------P3.0* *CS1----------P3.4*

;        *DB1---P1.1* *DB5---P1.5* *RW-------------P3.1* *CS2----------P3.5*
;        *DB2---P1.2* *DB6---P1.6* *E--------------P3.3
;        *DB3---P1.3* *DB7---P1.7* */RST-----------VDD       (详见说明书)
;注:8031的晶振频率为12MHz
;  
;**************************************************************************
XPOS    EQU     20H             ;列方向地址指针(用于LCDPOS子程序)
YPOS    EQU     21H             ;行方向地址指针(用于LCDPOS子程序)
RSPIN   EQU    P3.0           
RWPIN   EQU     P3.1            ;
EPIN    EQU     P3.3            ;
CS1PIN  EQU     P3.4            ;
CS2PIN  EQU     P3.5            ;
        ORG     0000H
        JMP     START
START:  MOV     SP,#60H
MAIN:
        CALL    LCDRESET
        MOV A,#55H
        CALL LCDFILL
        MOV DPTR,#STRING1
        CALL PUTSTR
        CALL PUTSTR
        JMP MAIN
DELAY400MS:
        MOV     R0,#20              ;延时子程序(400MS)
DL4_PA: MOV     R1,#100
DL4_PB: MOV     R2,#100
        DJNZ    R2,$
        DJNZ    R1,DL4_PB
        DJNZ    R0,DL4_PA
        RET
DELAY:
 MOV R6,#2
DLY_PA: MOV R5,#0
DLY_PB: MOV R4,#0
 DJNZ R4,$
 DJNZ R5,DLY_PB
 DJNZ R6,DLY_PA
 RET
GETSTRCHAR:
GSC_PA:
 CLR A
 MOVC A,@A+DPTR
 INC DPTR
 MOV B,A
 INC A
 CLR C
 JZ GSC_LAX
 CLR A
 MOVC A,@A+DPTR
 INC DPTR
 SETB C
GSC_LAX:
 RET
PUTSTR:
 CALL DELAY
 CALL GETSTRCHAR
 PUSH DPL
 PUSH DPH
 JNC PSR_LAX
 JNB B.7,PSR_LBY
;CHINESE:
 CALL HZKPOS
 CALL PUTCHARDOT
 CALL PUTCHARDOT
 JMP PSR_LBX
PSR_LBY:
;ENGLISH:
 CALL HZKPOS
 CALL PUTCHARDOT
PSR_LBX:
 POP DPH
 POP DPL
 JMP PUTSTR
PSR_LAX:POP DPH
 POP DPL
 RET
PUTCHARDOT:
 MOV R7,#8
PAC_PA:
 CLR A
 MOVC A,@A+DPTR
 CALL LCDWRITE
 INC YPOS
 INC DPTR
 CLR A
 MOVC A,@A+DPTR
 CALL LCDWRITE
 DEC YPOS
 INC DPTR
 CALL CUSORNEXT
 MOV A,XPOS
 JNZ PAC_LAX
 INC YPOS
PAC_LAX:
 DJNZ R7,PAC_PA
 RET
HZKPOS:
 MOV R2,#5
HTP_PA:
 CLR C
 RLC A
 XCH A,B
 RLC A
 XCH A,B
 DJNZ R2,HTP_PA

 MOV DPTR,#HZKDOT
 ADD A,DPL
 MOV DPL,A
 MOV A,B
 ADDC A,DPH
 MOV DPH,A
 RET
LCDFILL:                        ;LCD整屏显示A的内容
        MOV     R7,A
        MOV     YPOS,#0
LFL_PB: MOV     XPOS,#0
LFL_PA: MOV     A,R7
        CALL    LCDWRITE        ;定位并写数据
        CALL    CUSORNEXT
        MOV     A,XPOS
        JNZ     LFL_PA          ;XPOS<128则循环(128列)
        MOV     A,YPOS
        JNZ     LFL_PB          ;YPOS<8则循环(8页)
        RET
LCDWRITE:                    ;定位并写数据子程序
        CALL    LCDPOS       ;内部写数指针定位
        CALL    LCDWD        ;写数据
        RET
CUSORNEXT:
 ANL YPOS,#7
 INC XPOS
 MOV A,XPOS
 JNB ACC.7,CNT_LAX
 MOV XPOS,#0
 INC YPOS
 MOV A,YPOS
 ANL A,#0F8H
 JZ CNT_LAX
 MOV YPOS,#0
CNT_LAX:
 RET
LCDPOS:                      ;内部写数指针定位子程序
        PUSH    ACC
        MOV     A,XPOS
        JB      ACC.6,LPS_LAY
        MOV     A,YPOS       ;XPOS列方向小于64则对CS1操作
        ANL     A,#07H
        ADD     A,#0B8H
        CALL    LCDWC1       ;设页码
        MOV     A,XPOS
        ANL     A,#3FH
        ORL     A,#40H
        CALL    LCDWC1       ;设列码
        JMP     LPS_LAX
LPS_LAY:MOV     A,YPOS       ;XPOS列方向大于等于64则对CS2操作
        ANL     A,#07H
        ADD     A,#0B8H
        CALL    LCDWC2       ;设页码
        MOV     A,XPOS
        ANL     A,#3FH
        ORL     A,#40H
        CALL    LCDWC2       ;设列码
LPS_LAX:POP     ACC
        RET
LCDWD:                          ;送数据子程序
        MOV     B,A
        MOV     A,XPOS
        JB      ACC.6,LWD_LAY
        MOV     A,B             ;XPOS列方向小于64则对CS1操作
        CALL    LCDWD1
        JMP     LWD_LAX
LWD_LAY:MOV     A,B             ;XPOS列方向大于等于64则对CS2操作
        CALL    LCDWD2
LWD_LAX:
        RET
LCDRESET:                       ;LCD控制器复位
        MOV     A,#3FH          ;打开LCD显示
        CALL    LCDWC1
        CALL    LCDWC2
        MOV     A,#0C0H         ;设显示起始行
        CALL    LCDWC1
        CALL    LCDWC2
        RET
LCDWC1:                         ;送片1控制字子程序
        CALL    WAITIDLE1
        MOV     P1,A
        CLR     RSPIN           ;RS=0 RW=0 CS1=1 E=高脉冲
        CLR     RWPIN
        SETB    CS1PIN
        SETB    EPIN
        NOP
        CLR     EPIN
        CLR     CS1PIN
        RET
LCDWC2:                         ;送片2控制字子程序
        CALL    WAITIDLE2
        MOV     P1,A
        CLR     RSPIN           ;RS=0 RW=0 CS2=1 E=高脉冲
        CLR     RWPIN
        SETB    CS2PIN
        SETB    EPIN
        NOP
        CLR     EPIN
        CLR     CS2PIN
        RET
LCDWD1:                         ;片1写数据子程序
        CALL    WAITIDLE1
        MOV     P1,A
        SETB    RSPIN           ;RS=1 RW=0 CS1=1 E=高脉冲
        CLR     RWPIN
        SETB    CS1PIN
        SETB    EPIN
        NOP
        CLR     EPIN
        CLR     CS1PIN
        RET
LCDWD2:                         ;片2写数据子程序
        CALL    WAITIDLE2
        MOV     P1,A
        SETB    RSPIN           ;RS=1 RW=0 CS2=1 E=高脉冲
        CLR     RWPIN
        SETB    CS2PIN
        SETB    EPIN
        NOP
        CLR     EPIN
        CLR     CS2PIN
        RET
LCDRD1:                         ;片1读数据子程序
        CALL    WAITIDLE1
        MOV     P1,#0FFH
        SETB    RSPIN           ;RS=1 RW=1 CS1=1 E=高电平
        SETB    RWPIN
        SETB    CS1PIN
        SETB    EPIN
        NOP
        MOV     A,P1
        CLR     EPIN
        CLR     CS1PIN
        RET
LCDRD2:                         ;片2读数据子程序
        CALL    WAITIDLE2
        MOV     P1,#0FFH
        SETB    RSPIN           ;RS=1 RW=1 CS1=2 E=高电平
        SETB    RWPIN
        SETB    CS2PIN
        SETB    EPIN
        NOP
        MOV     A,P1
        CLR     EPIN
        CLR     CS2PIN
        RET
WAITIDLE1:
        MOV     P1,#0FFH
        CLR     RSPIN           ;RS=0 RW=1 CS1=1 E=高电平
        SETB    RWPIN
        SETB    CS1PIN
        SETB    EPIN
WT1_PA: NOP
        JB      P1.7,WT1_PA
        CLR     EPIN
        CLR     CS1PIN
        RET
WAITIDLE2:
        CLR     RSPIN           ;RS=0 RW=1 CS2=1 E=高电平
        SETB    RWPIN
        SETB    CS2PIN
        SETB    EPIN
WT2_PA: NOP
        JB      P1.7,WT2_PA
        CLR     EPIN
        CLR     CS2PIN
        RET
HZKDOT:
;(d3d0H)(有)(8000)
DB  04H, 04H, 04H, 02H, 04H, 01H, 84H, 00H
DB 0e4H,0ffH, 3cH, 09H, 27H, 09H, 24H, 09H
DB  24H, 09H, 24H, 49H, 24H, 89H,0f4H, 7fH
DB  24H, 00H, 06H, 00H, 04H, 00H, 00H, 00H
;(cfdeH)(限)(8001)
DB  00H, 00H,0feH,0ffH, 02H, 08H, 22H, 10H
DB 0daH, 08H, 06H, 07H, 00H, 00H,0feH,0ffH
DB  92H, 42H, 92H, 24H, 92H, 08H, 92H, 14H
DB 0ffH, 22H, 02H, 61H, 00H, 20H, 00H, 00H
;(b9abH)(公)(8002)
DB  00H, 01H, 00H, 01H, 80H, 00H, 40H, 30H
DB  30H, 28H, 0cH, 24H, 00H, 23H,0c0H, 20H
DB  06H, 20H, 18H, 28H, 20H, 30H, 40H, 60H
DB  80H, 00H, 80H, 01H, 80H, 00H, 00H, 00H
;(cbbeH)(司)(8003)
DB  10H, 00H, 10H, 00H, 92H, 3fH, 92H, 10H
DB  92H, 10H, 92H, 10H, 92H, 10H, 92H, 10H
DB 0d2H, 3fH, 9aH, 00H, 12H, 40H, 02H, 80H
DB 0ffH, 7fH, 02H, 00H, 00H, 00H, 00H, 00H
STRING1: DB  80H, 00H, 80H, 01H, 80H, 02H, 80H, 03H,80H, 00H, 80H, 01H, 80H, 02H, 80H, 03H,80H, 00H, 80H, 01H, 80H, 02H, 80H, 03H,80H, 00H, 80H, 01H, 80H, 02H, 80H, 03H,80H, 00H, 80H, 01H, 80H, 02H, 80H, 03H,80H, 00H, 80H, 01H, 80H, 02H, 80H, 03H,0ffH
STRING2: DB  80H, 00H, 80H, 01H, 80H, 02H, 80H, 03H,80H, 00H, 80H, 01H, 80H, 02H, 80H, 03H,80H, 00H, 80H, 01H, 80H, 02H, 80H, 03H,80H, 00H, 80H, 01H, 80H, 02H, 80H, 03H,80H, 00H, 80H, 01H, 80H, 02H, 80H, 03H,80H, 00H, 80H, 01H, 80H, 02H, 80H, 03H,0ffH
        END


关键字:LCD12864  汇编语言 引用地址:LCD12864汇编语言程序例子

上一篇:DS1620温度芯片与8751芯片连接代码
下一篇:ht1621 LCD通用驱动实例

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

LCD12864驱动(STM32)5V和3.3V
一、前期准备 单片机:STM32F103ZET6 开发环境:MDK5.14 库函数:标准库V3.5 LCD12864模块:淘宝有售 二、实验效果 3.3V LCD12864 5V LCD12864 三、驱动原理 5V和3.3V模块均可以用STM32直接驱动,而不像1602那样5V必须是用5V驱动。注意的是模块上面的PSB脚接VCC,接VCC的话是采用并口传输数据,接GND采用串口传输,串口程序会在以后的博客中跟新。RST脚接VCC,此处没有用到硬件复位,所以直接接VCC,其复位低电平有效。驱动芯片资料,请自行搜索ST7920,里面自带字库。 需要完整工程或者有问题的请加QQ:100252187
[单片机]
<font color='red'>LCD12864</font>驱动(STM32)5V和3.3V
AVR单片机高精度延时程序汇编语言 可以直接使用
波特率为7.3728MHZ 延时1ms,精度误差为10us ;******************************** delay_1ms: ldi r27,41 delay_11: ldi r28,35 delay_22: nop nop dec r28 brne delay_22 dec r27 brne delay_11 ret ;***************************
[单片机]
利用全局及外部变量实现C51无能数化调用A51函数
电子技术应用 2001年第7期发表苟帅的文章“ASM51无参数化调用C51函数的实现”,阐述了ASM51无参数化调用C51 函数的实现原理并给出实例来验证该方法的优越性和可行性。作者在文章中表明这样一种观点:“利用汇编语言对I/O接口、中断向量及程序空间分配的巨大优势,让程序员对MCS51内的每一字节甚至是每一比特(可位寻址空间)全部进行统筹安排,设计好各个程序模块,包括I/O口地址和中断向量地址的处理;同时在具体数据处理、通信等不需要过多与硬件打交道的程序模块中,充分利用C51语言强大高效的编程能力”。上述观点并没有错,但是对I/O接口、中断向量及程序空间分配及MCS-51内的每一个字节甚至是每一比特(可位寻址空间)全部进行统
[单片机]
c51与汇编语言的接口
1.c51与汇编语言的模块内接口 有时候,需要使用 汇编语言 来编写程序,比如对硬件进行操作或在一些对时钟要求很严格的场合,但又不希望用汇编语言来编写全部程序或调用汇编语言编写的函数,那么可以通 过预编译指令 asm',在C代码中插入汇编代码。 方法是用#pragma语句。具体结构是: #pragma asm 汇编行 #pragma endasm 这种方法是通过#pragma asm和#pragma endasm告诉c51编译器,中间行不用编译为汇编行。例如: 2.c51与汇编语言的模块间接口 C51模块与汇编语言模块的接口较简单,分别用C5l与A51对源文件进行编译,然后用L51连接obj文件即可。模块
[单片机]
LCD12864液晶使用-ST7920
LCD12864液晶型号为ST7920,位带字库液晶,同时也有图形县显示区,具体操作请看手册,这里只是简单说下使用,本教程是串行使用方式,本教程实现了液晶的画图,显示字和自定义字功能。 第一幅图为画图效果,画了一幅图; 第二幅图为用自身字符库,写了一首诗; 第三幅图为用CGRAM,4个16*16用户自定义字拼出一个32*32的字; 一、DDRAM 使用内部字库,写入DDRAM,字体大小只能为16*16,对应整个屏幕 地址: X ----------------------------------- | | 80H,81H,82H,83H,84H,85H,86H,87H, |
[单片机]
<font color='red'>LCD12864</font>液晶使用-ST7920
PIC单片机的各种汇编语言指令的用法解析
工作以来一直使用ST的单片机,其他的单片机虽大致了解但从未认真看过,近几日恰好无事,决定熟悉一下PIC的单片机,于是想将自己从网上或这书本上的东西转下来,予以同一样的初学者共同参考。 PIC的指令系统 PIC 8位单片机共有三个级别,有相对应的指令集。基本级PIC系列芯片共有指令33条,每条指令是12位字长;中级PIC系列芯片共有指令35条,每条指令是14位字长;高级PIC系列芯片共有指令58条,每条指令是16位字长。其指令向下兼容。 一、PIC汇编语言指令格式 PIC系列微控制器汇编语言指令与MCS-51系列单片机汇编语言一样,每条汇编语言指令由4个部分组成,其书写格式如下: 标号 操作码助记符 操作数1,操作数2;注释
[单片机]
PIC单片机的各种<font color='red'>汇编语言</font>指令的用法解析
汇编语言实现51单片机内部RAM单元的数据传送到外部RAM
下面是实现将片内RAM30H单元开始的15B的数据传送到片外RAM3000H开始的单元中去的8051单片机汇编语言代码: STRAT:MOV R0,#30H MOV R7,#0FH MOV DPTR,#3000H LOOP: MOV A,@R0 MOVX @DPTR,A INC R0 INC DPTR DJNZ R7,LOOP RET 下面是实现将片内RAM30H单元开始的15B的数据传送到片外RAM3000H开始的单元中去的8051单片机汇编语言代码: STRAT:MOV R0,#30H MOV R7,#0FH MOV DPTR,#3000H LOOP: MOV A,@R0 MOVX @DPTR,A
[单片机]
用<font color='red'>汇编语言</font>实现51单片机内部RAM单元的数据传送到外部RAM
STM32 驱动液晶LCD12864
#include led.h #undef APP_DE #include hawk.h 液晶采用晶联讯电子的JLX19264G-260 #define FEEDDOG() GPIOC- ODR^= GPIO_Pin_0 //LCD IO初始化 void LCD_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOA,ENABLE);//使能PB,端口时钟 GPIO_InitStructure.GPIO_P
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

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

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

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