共2条
1/1 1 跳转至页
HS12232,LCD 求助: 请好心人帮忙看下HS12232-9汉字LCD的3线程序问题

问
先给个我注解后商家提供的51汇编程序
;This program is for 12232F,12864-12,12864M Serial test
; RS--------P3.0
; R/W-------P3.1
; E---------P3.2
; DB0~7-----P1
CS EQU P3.0;片选(串行) 0:禁止 1:允许
SID EQU P3.1;输入串行数据(串行)
CLK EQU P3.2;输入串行脉冲(串行)
PSB EQU P3.3;控制界面 0:串行 1:并行8/4 位
ORG 0000H
AJMP START
; ORG 0003H
; LCALL PAUSE
ORG 0100h
START:
; MOV IE,#81H ;EXT. INT0 PERMIT
; MOV IP,#01H ;INT0 IS FIRST INT. LEVEL
; MOV TCON,#00H ;TIMER/COUNTER CONTROLER INIT.
MOV SP, #67H
CLR PSB;选择串行工作模式
LCALL DELAY;延时150mS
LCALL DELAY;延时150mS
LCALL SETUP;LCD初始化设置
LCALL DEF_CHAR;自定义字符显示
/*---------------------------------------------------
显示4行CGRAM1字符
----------------------------------------------------*/
MOV A,#80H
LCALL WRITE_COM;发送设定DDRAM地址0x00命令
/*---------------------------------------------------
显示第一行CGRAM1字符
----------------------------------------------------*/
MOV R3,#8
TEST11:
MOV DPTR,#CGRAM1 ;CGRAM TEST
LCALL WRITE_CGRAM
DJNZ R3,TEST11
MOV A,#90H
LCALL WRITE_COM;发送设定DDRAM地址0x10命令
/*---------------------------------------------------
显示第二行CGRAM1字符
----------------------------------------------------*/
MOV R3,#8
TEST12:
MOV DPTR,#CGRAM1
LCALL WRITE_CGRAM
DJNZ R3,TEST12
MOV A,#88H
LCALL WRITE_COM;发送设定DDRAM地址0x08命令
/*---------------------------------------------------
显示第三行CGRAM1字符
----------------------------------------------------*/
MOV R3,#8
TEST13:
MOV DPTR,#CGRAM1
LCALL WRITE_CGRAM
DJNZ R3,TEST13
MOV A,#98H
LCALL WRITE_COM;发送设定DDRAM地址0x18命令
/*---------------------------------------------------
显示第四行CGRAM1字符
----------------------------------------------------*/
MOV R3,#8
TEST14:
MOV DPTR,#CGRAM1
LCALL WRITE_CGRAM
DJNZ R3,TEST14
/*---------------------------------------------------
CGRAM1字符显示等待延时5秒
----------------------------------------------------*/
LCALL DELAY;延时150mS
LCALL DELAY;延时150mS
LCALL DELAY;延时150mS
LCALL DELAY;延时150mS
LCALL DELAY;延时150mS
/*---------------------------------------------------
显示4行CGRAM2字符
----------------------------------------------------*/
MOV A,#80H
LCALL WRITE_COM;发送设定DDRAM地址0x00命令
/*---------------------------------------------------
显示第一行CGRAM2字符
----------------------------------------------------*/
MOV R3,#8
TEST21:
MOV DPTR,#CGRAM2
LCALL WRITE_CGRAM
DJNZ R3,TEST21
MOV A,#90H
LCALL WRITE_COM;发送设定DDRAM地址0x10命令
/*---------------------------------------------------
显示第二行CGRAM2字符
----------------------------------------------------*/
MOV R3,#8
TEST22:
MOV DPTR,#CGRAM2
LCALL WRITE_CGRAM
DJNZ R3,TEST22
MOV A,#88H
LCALL WRITE_COM;发送设定DDRAM地址0x08命令
/*---------------------------------------------------
显示第三行CGRAM2字符
----------------------------------------------------*/
MOV R3,#8
TEST23:
MOV DPTR,#CGRAM2
LCALL WRITE_CGRAM
DJNZ R3,TEST23
MOV A,#98H
LCALL WRITE_COM;发送设定DDRAM地址0x18命令
/*---------------------------------------------------
显示第四行CGRAM2字符
----------------------------------------------------*/
MOV R3,#8
TEST24:
MOV DPTR,#CGRAM2
LCALL WRITE_CGRAM
DJNZ R3,TEST24
/*---------------------------------------------------
CGRAM2字符显示等待延时
----------------------------------------------------*/
LCALL DELAY;延时150mS
LCALL DELAY;延时150mS
LCALL DELAY;延时150mS
LCALL DELAY;延时150mS
LCALL DELAY;延时150mS
/*---------------------------------------------------
显示4行CGRAM3字符
----------------------------------------------------*/
MOV A,#80H
LCALL WRITE_COM;发送设定DDRAM地址0x00命令
/*---------------------------------------------------
显示第一行CGRAM3字符
----------------------------------------------------*/
MOV R3,#8
TEST31:
MOV DPTR,#CGRAM3
LCALL WRITE_CGRAM
DJNZ R3,TEST31
MOV A,#90H
LCALL WRITE_COM;发送设定DDRAM地址0x10命令
/*---------------------------------------------------
显示第二行CGRAM3字符
----------------------------------------------------*/
MOV R3,#8
TEST32:
MOV DPTR,#CGRAM3
LCALL WRITE_CGRAM
DJNZ R3,TEST32
MOV A,#88H
LCALL WRITE_COM;发送设定DDRAM地址0x08命令
/*---------------------------------------------------
显示第三行CGRAM3字符
----------------------------------------------------*/
MOV R3,#8
TEST33:
MOV DPTR,#CGRAM3
LCALL WRITE_CGRAM
DJNZ R3,TEST33
MOV A,#98H
LCALL WRITE_COM;发送设定DDRAM地址0x18命令
/*---------------------------------------------------
显示第四行CGRAM3字符
----------------------------------------------------*/
MOV R3,#8
TEST34:
MOV DPTR,#CGRAM3
LCALL WRITE_CGRAM
DJNZ R3,TEST34
/*---------------------------------------------------
CGRAM3字符显示等待延时
----------------------------------------------------*/
LCALL DELAY;延时150mS
LCALL DELAY;延时150mS
LCALL DELAY;延时150mS
LCALL DELAY;延时150mS
LCALL DELAY;延时150mS
/*---------------------------------------------------
显示4行CGRAM4字符
----------------------------------------------------*/
MOV A,#80H
LCALL WRITE_COM;发送设定DDRAM地址0x00命令
/*---------------------------------------------------
显示第一行CGRAM4字符
----------------------------------------------------*/
MOV R3,#8
TEST41:
MOV DPTR,#CGRAM4
LCALL WRITE_CGRAM
DJNZ R3,TEST41
MOV A,#90H
LCALL WRITE_COM;发送设定DDRAM地址0x10命令
/*---------------------------------------------------
显示第二行CGRAM4字符
----------------------------------------------------*/
MOV R3,#8
TEST42:
MOV DPTR,#CGRAM4
LCALL WRITE_CGRAM
DJNZ R3,TEST42
MOV A,#88H
LCALL WRITE_COM;发送设定DDRAM地址0x08命令
/*---------------------------------------------------
显示第三行CGRAM4字符
----------------------------------------------------*/
MOV R3,#8
TEST43:
MOV DPTR,#CGRAM4
LCALL WRITE_CGRAM
DJNZ R3,TEST43
MOV A,#98H
LCALL WRITE_COM;发送设定DDRAM地址0x18命令
/*---------------------------------------------------
显示第四行CGRAM4字符
----------------------------------------------------*/
MOV R3,#8
TEST44:
MOV DPTR,#CGRAM4
LCALL WRITE_CGRAM
DJNZ R3,TEST44
/*---------------------------------------------------
CGRAM4字符显示等待延时
----------------------------------------------------*/
LCALL DELAY;延时150mS
LCALL DELAY;延时150mS
LCALL DELAY;延时150mS
LCALL DELAY;延时150mS
LCALL DELAY;延时150mS
/*---------------------------------------------------
显示4行英文字符
----------------------------------------------------*/
MOV A,#80H;第一行英文字符0x80~0x87
LCALL WRITE_COM;发送设定DDRAM地址0x00命令
MOV DPTR,#ETAB;DB ' LCDINLINE.COM! '
/*---------------------------------------------------
显示第一行英文字符' LCDINLINE.COM! '
----------------------------------------------------*/
LCALL WRITE_ASCII;显示16个英文字符
MOV A,#90H;第二行英文字符0x90~0x97
LCALL WRITE_COM;发送设定DDRAM地址0x10命令
MOV DPTR,#ETAB+16;DB 'WELCOME TO HERE!'
/*---------------------------------------------------
显示第二行英文字符'WELCOME TO HERE!'
----------------------------------------------------*/
LCALL WRITE_ASCII;显示16个英文字符
MOV A,#88H;第三行英文字符0x88~0x8F
LCALL WRITE_COM;发送设定DDRAM地址0x08命令
MOV DPTR,#TABLE1;DB 'ABCDEFGHIJKLMNOP'
/*---------------------------------------------------
显示第三行英文字符'ABCDEFGHIJKLMNOP'
----------------------------------------------------*/
LCALL WRITE_ASCII;显示16个英文字符
MOV A,#98H;第一行英文字符0x98~0x9F
LCALL WRITE_COM;发送设定DDRAM地址0x18命令
MOV DPTR,#TABLE1+16;DB '0123456789!
;This program is for 12232F,12864-12,12864M Serial test
; RS--------P3.0
; R/W-------P3.1
; E---------P3.2
; DB0~7-----P1
CS EQU P3.0;片选(串行) 0:禁止 1:允许
SID EQU P3.1;输入串行数据(串行)
CLK EQU P3.2;输入串行脉冲(串行)
PSB EQU P3.3;控制界面 0:串行 1:并行8/4 位
ORG 0000H
AJMP START
; ORG 0003H
; LCALL PAUSE
ORG 0100h
START:
; MOV IE,#81H ;EXT. INT0 PERMIT
; MOV IP,#01H ;INT0 IS FIRST INT. LEVEL
; MOV TCON,#00H ;TIMER/COUNTER CONTROLER INIT.
MOV SP, #67H
CLR PSB;选择串行工作模式
LCALL DELAY;延时150mS
LCALL DELAY;延时150mS
LCALL SETUP;LCD初始化设置
LCALL DEF_CHAR;自定义字符显示
/*---------------------------------------------------
显示4行CGRAM1字符
----------------------------------------------------*/
MOV A,#80H
LCALL WRITE_COM;发送设定DDRAM地址0x00命令
/*---------------------------------------------------
显示第一行CGRAM1字符
----------------------------------------------------*/
MOV R3,#8
TEST11:
MOV DPTR,#CGRAM1 ;CGRAM TEST
LCALL WRITE_CGRAM
DJNZ R3,TEST11
MOV A,#90H
LCALL WRITE_COM;发送设定DDRAM地址0x10命令
/*---------------------------------------------------
显示第二行CGRAM1字符
----------------------------------------------------*/
MOV R3,#8
TEST12:
MOV DPTR,#CGRAM1
LCALL WRITE_CGRAM
DJNZ R3,TEST12
MOV A,#88H
LCALL WRITE_COM;发送设定DDRAM地址0x08命令
/*---------------------------------------------------
显示第三行CGRAM1字符
----------------------------------------------------*/
MOV R3,#8
TEST13:
MOV DPTR,#CGRAM1
LCALL WRITE_CGRAM
DJNZ R3,TEST13
MOV A,#98H
LCALL WRITE_COM;发送设定DDRAM地址0x18命令
/*---------------------------------------------------
显示第四行CGRAM1字符
----------------------------------------------------*/
MOV R3,#8
TEST14:
MOV DPTR,#CGRAM1
LCALL WRITE_CGRAM
DJNZ R3,TEST14
/*---------------------------------------------------
CGRAM1字符显示等待延时5秒
----------------------------------------------------*/
LCALL DELAY;延时150mS
LCALL DELAY;延时150mS
LCALL DELAY;延时150mS
LCALL DELAY;延时150mS
LCALL DELAY;延时150mS
/*---------------------------------------------------
显示4行CGRAM2字符
----------------------------------------------------*/
MOV A,#80H
LCALL WRITE_COM;发送设定DDRAM地址0x00命令
/*---------------------------------------------------
显示第一行CGRAM2字符
----------------------------------------------------*/
MOV R3,#8
TEST21:
MOV DPTR,#CGRAM2
LCALL WRITE_CGRAM
DJNZ R3,TEST21
MOV A,#90H
LCALL WRITE_COM;发送设定DDRAM地址0x10命令
/*---------------------------------------------------
显示第二行CGRAM2字符
----------------------------------------------------*/
MOV R3,#8
TEST22:
MOV DPTR,#CGRAM2
LCALL WRITE_CGRAM
DJNZ R3,TEST22
MOV A,#88H
LCALL WRITE_COM;发送设定DDRAM地址0x08命令
/*---------------------------------------------------
显示第三行CGRAM2字符
----------------------------------------------------*/
MOV R3,#8
TEST23:
MOV DPTR,#CGRAM2
LCALL WRITE_CGRAM
DJNZ R3,TEST23
MOV A,#98H
LCALL WRITE_COM;发送设定DDRAM地址0x18命令
/*---------------------------------------------------
显示第四行CGRAM2字符
----------------------------------------------------*/
MOV R3,#8
TEST24:
MOV DPTR,#CGRAM2
LCALL WRITE_CGRAM
DJNZ R3,TEST24
/*---------------------------------------------------
CGRAM2字符显示等待延时
----------------------------------------------------*/
LCALL DELAY;延时150mS
LCALL DELAY;延时150mS
LCALL DELAY;延时150mS
LCALL DELAY;延时150mS
LCALL DELAY;延时150mS
/*---------------------------------------------------
显示4行CGRAM3字符
----------------------------------------------------*/
MOV A,#80H
LCALL WRITE_COM;发送设定DDRAM地址0x00命令
/*---------------------------------------------------
显示第一行CGRAM3字符
----------------------------------------------------*/
MOV R3,#8
TEST31:
MOV DPTR,#CGRAM3
LCALL WRITE_CGRAM
DJNZ R3,TEST31
MOV A,#90H
LCALL WRITE_COM;发送设定DDRAM地址0x10命令
/*---------------------------------------------------
显示第二行CGRAM3字符
----------------------------------------------------*/
MOV R3,#8
TEST32:
MOV DPTR,#CGRAM3
LCALL WRITE_CGRAM
DJNZ R3,TEST32
MOV A,#88H
LCALL WRITE_COM;发送设定DDRAM地址0x08命令
/*---------------------------------------------------
显示第三行CGRAM3字符
----------------------------------------------------*/
MOV R3,#8
TEST33:
MOV DPTR,#CGRAM3
LCALL WRITE_CGRAM
DJNZ R3,TEST33
MOV A,#98H
LCALL WRITE_COM;发送设定DDRAM地址0x18命令
/*---------------------------------------------------
显示第四行CGRAM3字符
----------------------------------------------------*/
MOV R3,#8
TEST34:
MOV DPTR,#CGRAM3
LCALL WRITE_CGRAM
DJNZ R3,TEST34
/*---------------------------------------------------
CGRAM3字符显示等待延时
----------------------------------------------------*/
LCALL DELAY;延时150mS
LCALL DELAY;延时150mS
LCALL DELAY;延时150mS
LCALL DELAY;延时150mS
LCALL DELAY;延时150mS
/*---------------------------------------------------
显示4行CGRAM4字符
----------------------------------------------------*/
MOV A,#80H
LCALL WRITE_COM;发送设定DDRAM地址0x00命令
/*---------------------------------------------------
显示第一行CGRAM4字符
----------------------------------------------------*/
MOV R3,#8
TEST41:
MOV DPTR,#CGRAM4
LCALL WRITE_CGRAM
DJNZ R3,TEST41
MOV A,#90H
LCALL WRITE_COM;发送设定DDRAM地址0x10命令
/*---------------------------------------------------
显示第二行CGRAM4字符
----------------------------------------------------*/
MOV R3,#8
TEST42:
MOV DPTR,#CGRAM4
LCALL WRITE_CGRAM
DJNZ R3,TEST42
MOV A,#88H
LCALL WRITE_COM;发送设定DDRAM地址0x08命令
/*---------------------------------------------------
显示第三行CGRAM4字符
----------------------------------------------------*/
MOV R3,#8
TEST43:
MOV DPTR,#CGRAM4
LCALL WRITE_CGRAM
DJNZ R3,TEST43
MOV A,#98H
LCALL WRITE_COM;发送设定DDRAM地址0x18命令
/*---------------------------------------------------
显示第四行CGRAM4字符
----------------------------------------------------*/
MOV R3,#8
TEST44:
MOV DPTR,#CGRAM4
LCALL WRITE_CGRAM
DJNZ R3,TEST44
/*---------------------------------------------------
CGRAM4字符显示等待延时
----------------------------------------------------*/
LCALL DELAY;延时150mS
LCALL DELAY;延时150mS
LCALL DELAY;延时150mS
LCALL DELAY;延时150mS
LCALL DELAY;延时150mS
/*---------------------------------------------------
显示4行英文字符
----------------------------------------------------*/
MOV A,#80H;第一行英文字符0x80~0x87
LCALL WRITE_COM;发送设定DDRAM地址0x00命令
MOV DPTR,#ETAB;DB ' LCDINLINE.COM! '
/*---------------------------------------------------
显示第一行英文字符' LCDINLINE.COM! '
----------------------------------------------------*/
LCALL WRITE_ASCII;显示16个英文字符
MOV A,#90H;第二行英文字符0x90~0x97
LCALL WRITE_COM;发送设定DDRAM地址0x10命令
MOV DPTR,#ETAB+16;DB 'WELCOME TO HERE!'
/*---------------------------------------------------
显示第二行英文字符'WELCOME TO HERE!'
----------------------------------------------------*/
LCALL WRITE_ASCII;显示16个英文字符
MOV A,#88H;第三行英文字符0x88~0x8F
LCALL WRITE_COM;发送设定DDRAM地址0x08命令
MOV DPTR,#TABLE1;DB 'ABCDEFGHIJKLMNOP'
/*---------------------------------------------------
显示第三行英文字符'ABCDEFGHIJKLMNOP'
----------------------------------------------------*/
LCALL WRITE_ASCII;显示16个英文字符
MOV A,#98H;第一行英文字符0x98~0x9F
LCALL WRITE_COM;发送设定DDRAM地址0x18命令
MOV DPTR,#TABLE1+16;DB '0123456789!
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【EEPW电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
电流检测模块MAX4080S被打赏10分 | |
【我踩过的那些坑】calloc和malloc错误使用导致跑飞问题排查被打赏50分 | |
多组DCTODC电源方案被打赏50分 | |
【我踩过的那些坑】STM32cubeMX软件的使用过程中的“坑”被打赏50分 | |
新手必看!C语言精华知识:表驱动法被打赏50分 | |
【我踩过的那些坑】杜绑线问题被打赏50分 | |
【我踩过的那些坑】STM32的硬件通讯调试过程的“坑”被打赏50分 | |
【我踩过的那些坑】晶振使用的问题被打赏100分 | |
【我踩过的那些坑】电感选型错误导致的处理器连接不上被打赏50分 | |
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏10分 |