实验八 单片机液晶显示实验Word格式.docx

上传人:b****6 文档编号:17221090 上传时间:2022-11-29 格式:DOCX 页数:13 大小:18.91KB
下载 相关 举报
实验八 单片机液晶显示实验Word格式.docx_第1页
第1页 / 共13页
实验八 单片机液晶显示实验Word格式.docx_第2页
第2页 / 共13页
实验八 单片机液晶显示实验Word格式.docx_第3页
第3页 / 共13页
实验八 单片机液晶显示实验Word格式.docx_第4页
第4页 / 共13页
实验八 单片机液晶显示实验Word格式.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

实验八 单片机液晶显示实验Word格式.docx

《实验八 单片机液晶显示实验Word格式.docx》由会员分享,可在线阅读,更多相关《实验八 单片机液晶显示实验Word格式.docx(13页珍藏版)》请在冰豆网上搜索。

实验八 单片机液晶显示实验Word格式.docx

写显示数进地址(E2)

CRADD2EQU08006H;

读状态字地址(E2)

DRADD2EQU08007H;

读显示数据地址(E2)

PD1EQU3DH;

122/2分成左右两半屏122x32

COLUMNEQU30H

PAGE_EQU31H;

页地址寄存器D1,DO:

页地址

CODE_EQU32H;

字符代码寄存器

COUNTEQU33H;

计数器

DIRequ34h

dtp1equ35h

dtp2equ36h

dtp3equ37h

CTEMPEQU38H

COMEQU20H;

指令寄存器

DATEQU21H;

数据寄存器

ORG0

jmpmain

movdptr,#0f002h

mova,#56h

movx@dptr,a

mova,#0

movxa,@dptr

JMPMAIN

;

---------------------------------------

初始化程序

INIT:

MOVCOM,#0E2H;

复位

LCALLPRO

LCALLPR3

MOVCOM,#0A4H;

关闭休闭状态

MOVCOM,#0A9H;

设置1/32占空比

MOVCOM,#0A0H;

正向排序设置

MOVCOM,#0C0H;

设置显示起始行为第一行

MOVCOM,#0AFH;

开显示设置

RET

------------------------------------------------

清屏

CLEAR:

MOVR4,#00H;

页面地址暂存器设置

CLEAR1:

MOVA,R4;

取页地址值

ORLA,#0B8H;

"

或"

页面地址设置代码

MOVCOM,A;

页面地址设置

MOVCOM,#00H;

列地址设置为"

0"

MOVR3,#50H;

一页清80个字节

CLEAR2:

MOVDAT,#00H;

显示数据为"

LCALLPR1

LCALLPR4

DJNZR3,CLEAR2;

页内字节清零循环

INCR4;

页地址暂存器加一

CJNER4,#04H,CLEAR1;

RAM区清零循环

-----------------------------------

1.写指令代码子程序(E1)

PRO:

PUSHDPL

PUSHDPH

MOVDPTR,#CRADD1;

设置读状态字地址

PR01:

MOVXA,@DPTR;

读状态字

JBACC.7,PR01;

判"

忙"

标志为句"

否再读

MOVDPTR,#CWADD1;

设置写指令代码地址

MOVA,COM;

取指令代码

MOVX@DPTR,A;

写指令代码

POPDPH

POPDPL

------------------------------------

2.写显示数据子程序(E1)

PR1:

PR11:

读状态宇

JBACC.7,PR11;

标志为"

MOVDPTR,#DWADD1;

设置写显示数据地址

MOVA,DAT;

取数据

写数据

-------------------------------------

3.读显示数据子程序(E1)

PR2:

PR21:

JBACC.7,PR21;

否,否再读

MOVDPTR,#DRADD1;

设置读显示数据地址

读数据

MOVDAT,A;

存数据

4.写指令代码子程序(E2)

PR3:

MOVDPTR,#CRADD2;

PR31:

JBACC.7,PR31;

陈志为"

MOVDPTR,#CWADD2;

5.写显示数据子程序(E2)

PR4:

PR41:

JBACC.7,PR41;

MOVDPTR,#DWADD2;

MOVA,DAT;

6.读显示数据子程序(E2)

PR5:

PR51:

JBACC.7,PR51;

MOVDPTR,#DRADD2;

中文显示子程序

CCW_PR:

MOVDPTR,#CCTAB;

确定字符字模块首地址

MOVA,CODE_;

取代码

MOVB,#20H;

字模块宽度为32个字节

MULAB;

代码×

32

ADDA,DPL;

字符字模块首地址

MOVDPL,A;

字模库首地址+代码×

MOVA,B

ADDCA,DPH

MOVDPH,A

PUSHCOLUMN;

列地址入栈

MOVCODE_,#00H;

代码寄存器借用为间址寄存器

CCW_1:

MOVCOUNT,#10H;

计数器设置为16

MOVA,PAGE_;

读页地址寄存器

ANLA,#03H;

取页地址有效值

ORLA,#0B8H;

页地址设置代码

设置页地址

LCALLPRo

POPCOLUMN;

取列地址值

MOVA,COLUMN;

读列地址寄存器

CLRC

SUBBA,#PD1;

列地址-模块参数

JCCCW_2;

<0为左半屏显示区域(E1)

MOVCOLUMN,A;

≥0为右半屏显示区域(E2)

MOVA,PAGE_

SETBACC.3;

设置区域标志位。

MOVPAGE_,A;

为E1,"

1"

为E2

CCW_2:

MOVCOM,COLUMN;

设置列地址值

判区域标志以确定设置哪个控制器

JNBACC.3,CCW_3

LCALLPR3;

区域E2

LJMPCCW_4

CCW_3:

LCALLPRO;

区域E1

CCW_4:

MOVA,CODE_;

取间址寄存器值

MOVCA,@A+DPTR;

取汉字字模数据

MOVDAT,A;

JNBACC.3,CCW_5

LCALLPR4;

LJMPCCW_6

CCW_5:

LCALLPR1;

CCW_6:

INCCODE_;

间址寄存器加一

INCCOLUMN;

列地址寄存器加一

判列地址是否超出区域范围、

CJNEA,#PD1,CCW_7

CCW_7:

JCCCW_8;

未超出则继续

超出则判是否在区域E2

JBACC.3,CCW_8;

在区域E2则退出

在区域E1则修改成区域E2

MOVPAGE_,A

设置区域E2列地址为"

CCW_8:

DJNZCOUNT,CCW_4;

当页循环

JBACC.7,CCW_9;

判完成标志D7位,"

则完成退出

INCA;

否则页地址加一

SETBACC.7;

置完成位为"

CLRACC.3

MOVCODE_,#10H;

间址寄存器设置为16

LJMPCCW_1;

大循环

CCW_9:

--------------------------------------

中文字符库

CCTAB:

DB0,0,31,17,145,209,191,145,145,159,145,145,145,31,0,0,“罗”

DB0,32,33,33,32,17,18,20,8,8,4,2,1,0,0,0

DB0C0H70H0FCH0FFH03H60H6CH6CH

DB0,32,170,170,255,170,170,128,170,170,255,170,170,34,0,0,“慧”

DB0,32,24,10,26,42,42,58,42,42,58,10,31,32,0,0

DB0,0,255,137,137,137,137,137,249,137,137,137,143,128,0,0,“民”

DB0,0,63,16,8,0,0,0,0,3,4,8,16,60,0,0

DB0,224,16,8,8,16,224,0,0,112,136,136,136,136,112,0,“08”

DB0,7,8,16,16,8,7,0,0,14,17,16,16,17,14,0

DB0,48,8,8,8,136,112,0,0,48,8,8,8,136,112,0,“22”

DB0,24,20,18,17,16,24,0,0,24,20,18,17,16,24,0

DB0,16,16,248,0,0,0,0,0,16,16,248,0,0,0,0,“11”

DB0,16,16,31,16,16,0,0,0,16,16,31,16,16,0,0

------------------------------------.

中文演示显示程序段

MAIN:

LCALLINIT

LCALLCLEAR

MOVCTEMP,#0

MOVDIR,#0

AAA:

MOVPAGE_,#02H

MOVCOLUMN,CTEMP

MOVCODE_,#00H

LCALLCCW_PR

MOVA,CTEMP

ADDA,#10H

MOVCOLUMN,A

MOVCODE_,#01H

ADDA,#20H

MOVCODE_,#02H

MOVPAGE_,#02H

ADDA,#30H;

顺次向后显示,30H表示显示在第四个位置

MOVCODE_,#03H;

取对应的字模03H代表中文字库表中的第四组数据在此对应"

8"

ADDA,#40H

MOVCODE_,#04H

ADDA,#50H

LJMPS_DOWN;

选用此句可实现文字循环向下滚动显示

;

LJMPS_UP;

选用此句可实现文字循环向上滚动显示

LJMPLEFT;

选用此句可实现文字循环向左滚动显示

SJMP$;

选用此句文字呈现静态显示

LCALLDELAY;

若删去上述跳转直接执行以下程序可实现文字循环向右滚动显示

LCALLDELAY

MOVA,DIR

CJNEA,#0,LEFT

INCCTEMP

CJNEA,#58,AAA

MOVDIR,#1

LJMPAAA

LEFT:

DECCTEMP

CJNEA,#0,AAA

LCALLS_LEFT

LCALLS_UP

SJMP$

示例五滚动演示程序段

定时间隔地有规律地修改显示起始行地址,将产生显示画面平滑向上或向下滚动的效

果。

示例程序如下:

S_UP:

MOVR7,#00H;

向上改动程序

S_UPI:

MOVA,#0C0H;

显示起始行设置代码

ORLA,R7

MOVCOM,A

调延时子程序

INCR7

CJNER7,#20H,S_UPI

LJMPS_UP

S_DOWN:

MOVR7,#1FH;

向下滚动程序

MOVCOM,#0C0H;

S_DOWN1:

DJNZR7,S_DOWN1

LJMPS_DOWN

----------------------------------

DELAY:

MOVR6,#060H;

延时子程序

MOVR5,#00H

DELAY1:

NOP

DJNZR5,DELAY1

DJNZR6,DELAY1

仿真结果说明:

程序执行后液晶屏幕第一行显示“罗慧民082211”字样,依照程序选择的显示方式的不同,液晶屏幕上会出现不同的效果,如上所述,若选用LJMPS_DOWN则屏幕上出现向下滚动出现的“罗慧民082211”字样,选择其他则相应出现不一样的显示效果。

本程序基本实现了思考题1和2的要求。

 

仅供个人用于学习、研究;

不得用于商业用途。

notforcommercialuse.

Nurfü

rdenpersö

nlichenfü

rStudien,Forschung,zukommerziellenZweckenverwendetwerden.

Pourl'

é

tudeetlarechercheuniquementà

desfinspersonnelles;

pasà

desfinscommerciales.

толькодлялюдей,которыеиспользуютсядляобучения,исследованийинедолжныиспользоватьсявкоммерческихцелях. 

以下无正文

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1