共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 跳转至页
回复
| 有奖活动 | |
|---|---|
| 2026年“我要开发板活动”第三季,开始了! | |
| 硬核工程师专属补给计划——填盲盒 | |
| “我踩过的那些坑”主题活动——第002期 | |
| 【EEPW电子工程师创研计划】技术变现通道已开启~ | |
| 发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
| 【EEPW在线】E起听工程师的声音! | |
| 高校联络员开始招募啦!有惊喜!! | |
| 【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
我要赚赏金打赏帖 |
|
|---|---|
| 以启明云端ESP32P4开发板实现TF卡读写功能被打赏¥28元 | |
| 【分享开发笔记,赚取电动螺丝刀】树莓派5串口UART0配置被打赏¥25元 | |
| 【STM32F103ZET6】17:分享在Rtos项目中断管理的使用经验被打赏¥23元 | |
| 【STM32F103ZET6】16:分享在中断中恢复串口任务,遇到的问题被打赏¥31元 | |
| 在FireBeetle2ESP32-C5上实现温度大气压检测及显示被打赏¥21元 | |
| 【分享开发笔记,赚取电动螺丝刀】SAME51双串口收发配置被打赏¥27元 | |
| Chaos-nano操作系统在手持式VOC检测设备上的应用被打赏¥37元 | |
| 【分享开发笔记,赚取电动螺丝刀】关于在导入第三方库lib时,wchart类型冲突的原因及解决方案被打赏¥30元 | |
| 在FireBeetle2ESP32-C5上实现温湿度检测和显示被打赏¥20元 | |
| 在FireBeetle2ESP32-C5上实现光照强度检测及显示被打赏¥21元 | |
我要赚赏金
