文档库 最新最全的文档下载
当前位置:文档库 › 12864汇编

12864汇编

;-----------------------12864脚功能定义---------------------------- 数据口为P0 如想更换直接在替换里全部替换就行

RS EQU P2.4

RW EQU P2.5

E EQU P2.6

PSB EQU P2.1 ;PSB脚为12864-12系列的串、并通讯功能切换,我们使用8位并行接口,PSB=1

;-------------------- 12864标记---------------------------

LCD_X EQU 30H ;行座标

LCD_Y EQU 31H ;列座标

COUNT EQU 32H ;定义记数缓冲

COUNT1 EQU 33H

COUNT2 EQU 34H

COUNT3 EQU 35H

;------------;12864字义数据RAM空间-------------------------------

LCD_DATA EQU 36H

LCD_DATA1 EQU 37H

LCD_DATA2 EQU 38H

LCD_DATA3 EQU 39H

LCD_DIS EQU 40H

LCD_DIS1 EQU 41H

STORE EQU 42H

;-----------------------------------------------

ORG 0000H ;伪指令告诉编译器从0000H开始

LJMP MAIN ;64KB无条件跳转跳转到main处执行

ORG 0100H ;虽然这里是伪指令但是确实有标明地址的作用

;-----------------------------------------------

MAIN:

MOV SP,#5FH ;设置栈低为5FH

LCALL DELAY40ms ;延时40.301ms 64KB长调用子函数

NOP

;********************初始化**********************

init:

SETB PSB ;通讯方式为8位数据并口

MOV A,#34H ;34H--扩充指令操作在12864原理中有解释

LCALL SEND_I ;调用写指令子程序

MOV A,#30H ;基本指令操作

LCALL SEND_I

MOV A,#01H ;清除显示

LCALL SEND_I

MOV A,#06H ;指定在资料写入或读取时,光标的移动方向

LCALL SEND_I ;DDRAM 的地址计数器(AC)加1

MOV A,#0CH ;开显示,关光标,不闪烁

LCALL SEND_I

;HAN_WR2:

;LCALL CLEAR_P ;调入清屏子程序

;HAN_WR2A:

;MOV DPTR,#TAB1A ;显示汉字和字符

;MOV COUNT,#10H ;地址计数器设为16。循环查表16下发送数据16下;MOV A,#80H ;第一行起始地址

;LCALL SEND_I

;LCALL QUSHU

;HAN_WR2B:

;MOV DPTR,#TAB1B ;显示汉字和字符

;MOV COUNT,#10H ;地址计数器设为16。

;MOV A,#90H ;第二行起始地址

;LCALL SEND_I

;LCALL QUSHU

;HAN_WR2C:

;MOV DPTR,#TAB1C ;显示汉字和字符

;MOV COUNT,#10H ;地址计数器设为16。

;MOV A,#88H ;第三行起始地址

;LCALL SEND_I

;LCALL QUSHU

;HAN_WR2D:

;MOV DPTR,#TAB1D ;显示汉字和字符

;MOV COUNT,#10H ;地址计数器设为16。

;MOV A,#98H ;第四行起始地址

;LCALL SEND_I

;LCALL QUSHU

;LCALL DELAY1s

;LCALL FLASH ;调用闪烁子程序

;LCALL CLEAR_P ;清屏子程序

;********************死循环**********************

while1:

LCALL CLEAR_P ;调入清屏子程序

line1:

MOV DPTR,#TAB2A ;显示汉字和字符

MOV COUNT,#10H ;地址计数器设为16。循环查表16下发送数据16下MOV A,#80H ;第一行起始地址

LCALL SEND_I

LCALL QUSHU

;MOV A,#90H ;

;LCALL SEND_I

;MOV LCD_DATA,#'A'

;MOV LCD_DATA1,#'B'

;MOV LCD_DATA2,#'C'

;MOV LCD_DATA3,#'D'

;MOV COUNT,#04H ;地址计数器设为16。循环查表16下发送数据16下

;MOV R0,#0036H

;LCALL QUSHURAM

MOV A,#90H ;

LCALL SEND_I

MOV LCD_DIS,#91H

MOV LCD_DIS1,#0F8H

LCALL QUSHUASCII

MOV COUNT,#04H ;地址计数器设为16。循环查表16下发送数据16下

MOV R0,#0036H

LCALL QUSHURAM

LCALL DELAY10s

LJMP while1

;===============================================

;全屏显示点阵图形子程序

;===============================================

PHO_DISP: ;图形点阵排列方式为,一行128点/8=16个字节,即每行16字节,每字节以高位开始排列

MOV COUNT3,#02H

MOV LCD_X,#80H ;显示数据RAM的水平起始地址是80H

PHO_DISP1:

MOV LCD_Y,#80H ;显示数据RAM的垂直起始地址也是80H

MOV COUNT2,#20H ;上半部份32行

PHO_DISP2:

MOV COUNT1,#10H ;每行16字节

LCALL WR_ZB ;功能指令调用,即为点阵数据

PHO_DISP3:

CLR A

MOVC A,@A+DPTR ;读取点阵数据内容

LCALL SEND_D

INC DPTR

DJNZ COUNT1,PHO_DISP3

INC LCD_Y

DJNZ COUNT2,PHO_DISP2

MOV LCD_X,#88H

DJNZ COUNT3,PHO_DISP1

MOV A,#36H ;扩充功能设定

LCALL SEND_I

MOV A,#30H

LCALL SEND_I

RET

;----------------------------------------------

CLRRAM:

MOV LCD_DATA1,#00H ;GDRAM写0子程序

MOV LCD_DATA2,#00H

LCALL LAT_DISP

RET

;==============================================

;显示点阵子程序,此子程序与图形显示一样,只是输出的数据是固定的两个数据;==============================================

LAT_DISP:

MOV COUNT3,#02H

MOV LCD_X,#80H

LAT_DISP1:

MOV LCD_Y,#80H

CLR F0

MOV COUNT2,#20H

LAT_DISP2:

MOV COUNT1,#10H

LCALL WR_ZB

LAT_DISP3:

JB F0,LAT_DISP32 ;P直接寻址位为1转移

MOV LCD_DATA,LCD_DATA1

AJMP LAT_DISP31

LAT_DISP32:

MOV LCD_DATA,LCD_DATA2

LAT_DISP31:

MOV A,LCD_DATA

LCALL SEND_D

DJNZ COUNT1,LAT_DISP31

INC LCD_Y

CPL F0

DJNZ COUNT2,LAT_DISP2

MOV LCD_X,#88H

DJNZ COUNT3,LAT_DISP1

MOV A,#36H

LCALL SEND_I

MOV A,#30H ;返回基本指令

LCALL SEND_I

RET

;================================================== ;功能指令调用,即为点阵数据

;================================================== WR_ZB:

MOV A,#34H

LCALL SEND_I

MOV A,LCD_Y

LCALL SEND_I

MOV A,LCD_X

LCALL SEND_I

MOV A,#30H

LCALL SEND_I

RET

;================================================== ;12864液晶屏闪烁

;================================================== FLASH:

MOV A,#08H ;关闭显示

LCALL SEND_I

LCALL DELAY256ms

MOV A,#0CH ;开显示,关光标,不闪烁

LCALL SEND_I

LCALL DELAY256ms

MOV A,#08H ;关闭显示

LCALL SEND_I

LCALL DELAY256ms

MOV A,#0CH ;开显示,关光标,不闪烁

LCALL SEND_I

LCALL DELAY256ms

MOV A,#08H ;关闭显示

LCALL SEND_I

LCALL DELAY256ms

RET

;================================================== ;清屏

;================================================== CLEAR_P:

MOV A,#01H ;清屏

LCALL SEND_I

MOV A,#34H

LCALL SEND_I

MOV A,#30H

LCALL SEND_I

RET

;==================================================

;查表取数据送显示

;==================================================

QUSHU:

CLR A

MOVC A,@A+DPTR ;查表取数据

LCALL SEND_D ;送显示

INC DPTR

LCALL DELAY40ms ;延时40ms,

DJNZ COUNT,QUSHU ;count为要写多少数的数据就是要写多少个数值

RET

;==================================================

;把RAM(R0)

;==================================================

QUSHURAM:

MOV A,@R0 ;查表取数据

LCALL SEND_D ;送显示

INC R0

LCALL DELAY40ms ;延时40ms,

DJNZ COUNT,QUSHURAM ;count为要写多少数的数据就是要写多少个数值

RET

RET

;==================================================

;变换到ASCII码最后结果存在LCD_DATA到LCD_DATA3中在LCD_DIS和LCD_DIS1中取值;==================================================

QUSHUASCII:

MOV A,LCD_DIS

ANL A,#0F0H ;取高位MOV DPTR,#TAB2A ;

RR A

RR A

RR A

RR A

MOV DPTR,#ASCII

MOVC A,@A+DPTR ;查表取数据

MOV LCD_DATA,A ;灌装高位数据以便打印

MOV A,LCD_DIS

ANL A,#0FH ;取高位

MOVC A,@A+DPTR ;查表取数据

MOV LCD_DATA1,A ;灌装高位数据以便打印

MOV A,LCD_DIS1

ANL A,#0F0H ;取高位

RR A

RR A

RR A

RR A

MOVC A,@A+DPTR ;查表取数据

MOV LCD_DATA2,A ;灌装高位数据以便打印

MOV A,LCD_DIS1

ANL A,#0FH ;取高位

MOVC A,@A+DPTR ;查表取数据

MOV LCD_DATA3,A ;灌装高位数据以便打印

RET

;=============================================== ;写数据子程序

;RS=1,RW=0,E=高脉冲,D0-D7=数据

;=============================================== SEND_D:

LCALL CHK_BUSY ;写数据子程序

SETB RS

CLR RW

MOV P0,A

SETB E

NOP

NOP

CLR E

RET

;=============================================== ;写指令子程序数据在A中

;RS=0,RW=0,E=高脉冲,D0-D7=指令码

;=============================================== SEND_I:

LCALL CHK_BUSY ;判忙

CLR RS

CLR RW

MOV P0,A

SETB E

NOP

NOP

CLR E

RET

;================================================

;读数据子程序

;RS=1,RW=1,E=H,D0-D7=数据

;================================================ READ_D:

LCALL CHK_BUSY ;判忙

SETB RS

SETB RW

SETB E

NOP

MOV A,P0

CLR E

MOV STORE,A ;把数据存在STORE中

RET

;================================================ ;;测忙碌子程序

;RS=0,RW=1,E=H,D0-D7=状态字

;================================================ CHK_BUSY:

MOV P0,#0FFH ;测忙碌子程序

CLR RS

SETB RW

SETB E

JB P0.7,$ ;直接寻址位为1转移最高位为0就不忙CLR E

RET

;================================================

;各种参数的延时子函数

;================================================ DELAY100us: ;100us

MOV R6,#06H

DEL11: MOV R7,#08H

DEL12: DJNZ R7,DEL12

DJNZ R6,DEL11

RET

DELAY500us: ;500us

MOV R6,#0CH ;288

DEL21: MOV R7,#18H

DEL22: DJNZ R7,DEL22

DJNZ R6,DEL21

RET

DELAY1ms: ;1ms

MOV R6,#18H

DEL61: MOV R7,#18H

DEL62: DJNZ R7,DEL62

DJNZ R6,DEL61

RET

DELAY40ms: ;延时40ms 500得1ms

MOV R6,#100

DEL41: MOV R7,#200

DEL42: DJNZ R7,DEL42

DJNZ R6,DEL41

RET

DELAY256ms: ;延时256ms

MOV R5,#05H

DEL51: MOV R6,#100

DEL52: MOV R7,#0FFH

DEL53: DJNZ R7,DEL53

DJNZ R6,DEL52

DJNZ R5,DEL51

RET

DELAY1s: ;1秒

MOV R5,#16H

DEL31: MOV R6,#100

DEL32: MOV R7,#0FFH

DEL33: DJNZ R7,DEL33

DJNZ R6,DEL32

DJNZ R5,DEL31

RET

DELAY10s: ;10秒

MOV R5,#00DCH

DEL71: MOV R6,#100

DEL72: MOV R7,#0FFH

DEL73: DJNZ R7,DEL73

DJNZ R6,DEL72

DJNZ R5,DEL71

RET

;****************初始化数据表******************************* TAB1:

TAB1A: DB 'maid:piaoran ' ;显示在第一行

TAB1B: DB 'QQ:384710930 ' ;显示在第二行

TAB1C: DB 'THL:183******** ' ;显示在第三行

TAB1D: DB 'DATA:2014/10/4 ' ;显示在第四行

;****************12864数据表*******************************

TAB2:

TAB2A: DB 'move A,#data ' ;显示在第一行

TAB2B: DB 'A: ACC ' ;显示在第二行

TAB2C: DB 'data:34H ' ;显示在第三行

TAB2D: DB 'DATA:2014/10/4 ' ;显示在第四行

ASCII: DB '0123456789ABCDEF' ;显示在第一行

;*-------------------------------------------------------------------- *

;*汉字字模表

;*汉字库: 宋体16.dot,横向取模左高位,数据排列:从左到右从上到下

;*用PCtoLCD2002的设置:点阵格式:阴码取模方式:逐行式每行显示数据:点阵16 索引:8 取模走向:顺向输出数制:16进制输出选项:只选输出精简格

; 段前缀:无段后缀:无注释前缀:" 注释后缀:”, 数据前缀:00 数据后缀:H, 行前缀:DB 行后缀:无行尾缀:无

;*-------------------------------------------------------------------- *

TU_TAB1: ;CD和山

DB

0000H,0000H,0000H,0000H,0000H,0000H,0000H,0000H,0000H,0000H,0000H,0000H,0000H,000 0H,0000H,0000H

DB

0000H,0000H,0000H,0000H,0000H,0000H,0000H,0000H,0000H,0000H,0000H,0000H,0000H,000 0H,0000H,0000H

DB

0000H,0000H,0000H,0000H,0000H,0000H,0000H,0000H,0000H,007FH,00F0H,0000H,0000H,000 0H,0000H,0000H

DB

0000H,0000H,0000H,0000H,0000H,0000H,0000H,0000H,0000H,00FFH,00FCH,0000H,0000H,000 0H,0000H,0000H

DB

0000H,0000H,0000H,0000H,0000H,0000H,0000H,0000H,0001H,00FFH,00FFH,0000H,0000H,0000 H,0000H,0000H

DB

0000H,0000H,0000H,0000H,0000H,0000H,0000H,0000H,0003H,00FFH,00FFH,0000H,0000H,0000 H,0000H,0000H

DB

0000H,0000H,0000H,0000H,0000H,0000H,0000H,0000H,0007H,00E0H,001FH,0080H,0000H,000 0H,0000H,0000H

DB

0000H,0000H,0000H,0000H,0000H,0000H,0000H,0000H,000FH,00C0H,000FH,0080H,0000H,000 0H,0000H,0000H

DB

0000H,0000H,0000H,0000H,0000H,0000H,0000H,0000H,001FH,0080H,0007H,0080H,0000H,000

0H,0000H,0000H

DB

007FH,00C0H,0000H,0000H,0000H,0000H,0000H,0000H,003FH,0000H,0007H,00C0H,0000H,000 0H,0000H,0000H

DB

00FFH,00F0H,0000H,0000H,0000H,0000H,0000H,0000H,003EH,0000H,0003H,00E0H,0000H,0000 H,0000H,0000H

DB

00FFH,00FCH,0000H,0000H,0000H,0000H,0000H,0003H,00FCH,0000H,0003H,00F8H,0000H,0000 H,0000H,0000H

DB

00FFH,00FEH,0000H,0000H,0000H,0000H,0000H,001FH,00FCH,0000H,0001H,00FFH,0000H,0000 H,0000H,0000H

DB

0000H,007FH,0000H,0000H,0000H,0000H,0000H,007FH,00F8H,0000H,0000H,007FH,00E0H,0000 H,0000H,0000H

DB

0000H,001FH,0080H,0000H,0000H,0000H,0001H,00FFH,00F0H,0000H,0000H,003FH,00FFH,00FF H,00C0H,0000H

DB

0000H,000FH,00C0H,0000H,0000H,0000H,0007H,00FFH,0000H,0000H,0000H,000FH,00FFH,00FF H,00F0H,0000H

DB

0000H,0007H,00C0H,0000H,0000H,0000H,000FH,00F8H,0000H,0000H,0000H,0001H,00FFH,00FF H,00FFH,0080H

DB

0000H,0003H,00E0H,0000H,0000H,0000H,003FH,00E0H,0000H,0000H,0000H,0000H,003FH,00FF H,00FFH,00E0H

DB

0000H,0003H,00E0H,0000H,0000H,0000H,007FH,0080H,0000H,0000H,0000H,0000H,0000H,000 0H,007FH,00E0H

DB

0000H,0001H,00F0H,0000H,0000H,0000H,00FEH,0000H,0000H,0000H,0000H,0000H,0000H,000 0H,000FH,00F0H

DB

0000H,0001H,00F8H,0000H,0000H,0001H,00F8H,0000H,0000H,0000H,0000H,0000H,0000H,000 0H,0000H,00F8H

DB

0000H,0000H,00FCH,0000H,0000H,0003H,00F0H,0000H,0004H,0000H,0000H,0000H,0000H,000 0H,0000H,00FCH

DB

0000H,0000H,007CH,0000H,0000H,000FH,00E0H,0000H,007FH,0000H,0000H,0000H,00E0H,000 0H,0000H,007CH

DB

0000H,0000H,003FH,0000H,0000H,001FH,00C0H,0000H,00FFH,00E0H,0000H,0003H,00F8H,0000 H,0000H,003EH

DB

0000H,0000H,003FH,0080H,0000H,003FH,0080H,0003H,00FFH,00F8H,0000H,0007H,00FEH,0000 H,0000H,003FH

DB

0000H,0000H,001FH,00C0H,0000H,007EH,0000H,0007H,00FFH,00FEH,0000H,0007H,00FFH,00C0 H,0000H,001FH

DB

0000H,0000H,0007H,00E0H,0001H,00FCH,0000H,000FH,00E1H,00FFH,0000H,0007H,00BFH,00F0 H,0000H,000FH

DB

0000H,0000H,0003H,00FCH,0003H,00F8H,0000H,001FH,00C0H,003FH,0080H,0007H,008FH,00FC H,0000H,0007H

DB

0000H,0000H,0001H,00FFH,00FFH,00F0H,0000H,003FH,0000H,000FH,00C0H,000FH,0081H,00FE H,0000H,0003H

DB

0000H,0000H,0000H,007FH,00FFH,00E0H,0000H,003EH,0000H,0003H,0080H,000FH,0080H,007F H,0000H,0003H

DB

0000H,0000H,0000H,003FH,00FFH,0080H,0000H,007CH,0000H,0001H,0000H,001FH,0000H,001F H,0080H,0001H

DB

0000H,0000H,0000H,0007H,00FFH,0000H,0000H,007CH,0000H,0000H,0000H,001FH,0000H,000 FH,00C0H,0000H

DB

0000H,0000H,0000H,0000H,0000H,0000H,0000H,00F8H,0000H,0000H,0000H,003EH,0000H,000 7H,00C0H,0000H

DB

0000H,0000H,0000H,0000H,0000H,0000H,0000H,00F8H,0000H,0000H,0000H,003EH,0000H,000 3H,00E0H,0000H

DB

0000H,0000H,0000H,0000H,0000H,0000H,0000H,00F0H,0000H,0000H,0000H,003CH,0000H,000 3H,00E0H,0000H

DB

0000H,0000H,0000H,0000H,0000H,0000H,0000H,00F0H,0000H,0000H,0000H,007CH,0000H,000 1H,00F0H,0000H

DB

0000H,0000H,0000H,0000H,0000H,0000H,0000H,00F0H,0000H,0000H,0000H,007CH,0000H,000 1H,00F0H,0000H

DB

0000H,0000H,0000H,0000H,0000H,0000H,0000H,00F0H,0000H,0000H,0000H,0078H,0000H,000 0H,00F8H,0000H

DB

0000H,0000H,0000H,0000H,0000H,0000H,0000H,00F0H,0000H,0000H,0000H,00F8H,0000H,000 0H,0078H,0000H

DB

0000H,0000H,0000H,0000H,0000H,0000H,0000H,00F0H,0000H,0000H,0000H,00F0H,0000H,000 0H,0078H,0000H

DB

0000H,0000H,0000H,0000H,0000H,0000H,0000H,00F0H,0000H,0000H,0000H,00F0H,0000H,000 0H,0078H,0000H

DB

0000H,0000H,0000H,0000H,0000H,0000H,0000H,00F0H,0000H,0000H,0001H,00F0H,0000H,000 0H,0078H,0000H

DB

0000H,0000H,0000H,0000H,0000H,0000H,0000H,00F0H,0000H,0000H,0001H,00F0H,0000H,000 0H,0078H,0000H

DB

0000H,0000H,0000H,0000H,0000H,0000H,0000H,00F0H,0000H,0000H,0003H,00E0H,0000H,000 0H,0078H,0000H

DB

0000H,0000H,0000H,0000H,0000H,0000H,0000H,00F8H,0000H,0000H,0003H,00E0H,0000H,000 0H,0078H,0000H

DB

0000H,0000H,0000H,0000H,0000H,0000H,0000H,00F8H,0000H,0000H,0003H,00C0H,0000H,000 0H,0078H,0000H

DB

0000H,0000H,0000H,0000H,0000H,0000H,0000H,0078H,0000H,0000H,0007H,00C0H,0000H,000 0H,00F8H,0000H

DB

0000H,0000H,0000H,0000H,0000H,0000H,0000H,007CH,0000H,0000H,0007H,0080H,0000H,000 0H,00F8H,0000H

DB

0000H,0000H,0000H,0000H,0000H,0000H,0000H,007CH,0000H,0000H,000FH,0080H,0000H,000 1H,00F0H,0000H

DB

0000H,0000H,0000H,0000H,0000H,0000H,0000H,003CH,0000H,0003H,008FH,0080H,0000H,000 3H,00F0H,0000H

DB

0000H,0000H,0000H,0000H,0000H,0000H,0000H,003EH,0000H,0007H,008FH,0000H,0000H,000 7H,00E0H,0000H

DB

0000H,0000H,0000H,0000H,0000H,0000H,0000H,001FH,0000H,000FH,009FH,0000H,0000H,001F H,00C0H,0000H

DB

0000H,0000H,0000H,0000H,0000H,0000H,0000H,000FH,0080H,000FH,009FH,0000H,0000H,003F

H,0080H,0000H

DB

0000H,0000H,0000H,0000H,0000H,0000H,0000H,000FH,0080H,001FH,003EH,0000H,0000H,00FF H,0000H,0000H

DB

0000H,0000H,0000H,0000H,0000H,0000H,0000H,0007H,00E0H,003FH,003EH,0000H,0003H,00F EH,0000H,0000H

DB

0000H,0000H,0000H,0000H,0000H,0000H,0000H,0003H,00F0H,007EH,003CH,0000H,000FH,00F 8H,0000H,0000H

DB

0000H,0000H,0000H,0000H,0000H,0000H,0000H,0001H,00FFH,00FCH,003CH,0000H,003FH,00F0 H,0000H,0000H

DB

0000H,0000H,0000H,0000H,0000H,0000H,0000H,0000H,00FFH,00F8H,007CH,0000H,007FH,00C 0H,0000H,0000H

DB

0000H,0000H,0000H,0000H,0000H,0000H,0000H,0000H,007FH,00F0H,00FCH,0003H,00FFH,0000 H,0000H,0000H

DB

0000H,0000H,0000H,0000H,0000H,0000H,0000H,0000H,001FH,00E0H,007FH,00FFH,00FCH,0000 H,0000H,0000H

DB

0000H,0000H,0000H,0000H,0000H,0000H,0000H,0000H,0000H,0000H,001FH,00FFH,00F0H,0000 H,0000H,0000H

DB

0000H,0000H,0000H,0000H,0000H,0000H,0000H,0000H,0000H,0000H,000FH,00FFH,00C0H,000 0H,0000H,0000H

DB

0000H,0000H,0000H,0000H,0000H,0000H,0000H,0000H,0000H,0000H,0007H,00FFH,0000H,000 0H,0000H,0000H

DB

0000H,0000H,0000H,0000H,0000H,0000H,0000H,0000H,0000H,0000H,0000H,0000H,0000H,000 0H,0000H,0000H

end

相关文档
相关文档 最新文档