1、写显示数进地址(E2)CRADD2 EQU 08006H ;读状态字地址(E2)DRADD2 EQU 08007H ;读显示数据地址(E2)PD1 EQU 3DH ;122/2 分成左右两半屏 122x32COLUMN EQU 30HPAGE_ EQU 31H ;页地址寄存器 D1,DO:页地址CODE_ EQU 32H ;字符代码寄存器COUNT EQU 33H ;计数器DIR equ 34hdtp1 equ 35hdtp2 equ 36hdtp3 equ 37hCTEMP EQU 38HCOM EQU 20H ;指令寄存器DAT EQU 21H ;数据寄存器 ORG 0 jmp main
2、mov dptr, #0f002h mov a,#56h movx dptr,a mov a,#0 movx a,dptr JMP MAIN;- 初始化程序INIT: MOV COM, #0E2H ;复位 LCALL PRO LCALL PR3 MOV COM, #0A4H ;关闭休闭状态 MOV COM, #0A9H ;设置 132占空比 MOV COM, #0A0H ;正向排序设置 MOV COM, #0C0H ;设置显示起始行为第一行 MOV COM, #0AFH ;开显示设置 RET- 清屏CLEAR: MOV R4,#00H ;页面地址暂存器设置CLEAR1: MOV A,R4 ;取
3、页地址值 ORL A,#0B8H ;或页面地址设置代码 MOV COM,A ;页面地址设置 MOV COM,#00H ;列地址设置为0 MOV R3,#50H ;一页清 80个字节CLEAR2: MOV DAT,#00H ;显示数据为 LCALL PR1 LCALL PR4 DJNZ R3,CLEAR2 ;页内字节清零循环 INC R4 ;页地址暂存器加一 CJNE R4,#04H,CLEAR1 ;RAM区清零循环-1写指令代码子程序(E1)PRO: PUSH DPL PUSH DPH MOV DPTR,#CRADD1 ;设置读状态字地址PR01: MOVX A,DPTR ;读状态字 JB A
4、CC.7,PR01 ;判忙标志为句,否再读 MOV DPTR,#CWADD1 ;设置写指令代码地址 MOV A,COM ;取指令代码 MOVX DPTR,A ;写指令代码 POP DPH POP DPL-2.写显示数据子程序(E1)PR1:PR11:读状态宇 JB ACC.7,PR11 ;标志为 MOV DPTR,#DWADD1 ;设置写显示数据地址 MOV A,DAT ;取数据写数据-3.读显示数据子程序(E1)PR2:PR21: JB ACC.7,PR21 ;否,否再读 MOV DPTR,#DRADD1 ;设置读显示数据地址读数据 MOV DAT,A ;存数据4.写指令代码子程序(E2)P
5、R3: MOV DPTR,#CRADD2 ;PR31: JB ACC.7,PR31 ;陈志为 MOV DPTR,#CWADD2 ; 5.写显示数据子程序(E2)PR4:PR41: JB ACC.7,PR41 ; MOV DPTR, #DWADD2 ; MOV A,DAT ; 6.读显示数据子程序(E2)PR5:PR51: JB ACC.7,PR51 ; MOV DPTR,#DRADD2 ; 中文显示子程序CCW_PR: MOV DPTR,#CCTAB ;确定字符字模块首地址 MOV A,CODE_ ;取代码 MOV B,#20H ;字模块宽度为 32个字节 MUL AB ;代码32 ADD A
6、,DPL ;字符字模块首地址 MOV DPL,A ;字模库首地址代码 MOV A,B ADDC A,DPH MOV DPH,A PUSH COLUMN ;列地址入栈 MOV CODE_,#00H ;代码寄存器借用为间址寄存器CCW_1: MOV COUNT,#10H ;计数器设置为 16 MOV A,PAGE_ ;读页地址寄存器 ANL A,#03H ;取页地址有效值 ORL A,#0B8H ;页地址设置代码设置页地址 LCALL PRo POP COLUMN ;取列地址值 MOV A,COLUMN ;读列地址寄存器 CLR C SUBB A,#PD1 ;列地址-模块参数 JC CCW_2 ;
7、0为左半屏显示区域(E1) MOV COLUMN,A ;0为右半屏显示区域(E2) MOV A,PAGE_ SETB ACC.3 ;设置区域标志位。 MOV PAGE_,A ;为E1,1为E2CCW_2: MOV COM,COLUMN ;设置列地址值判区域标志以确定设置哪个控制器 JNB ACC.3,CCW_3 LCALL PR3 ;区域E2 LJMP CCW_4CCW_3: LCALL PRO ;区域E1CCW_4: MOV A,CODE_ ;取间址寄存器值 MOVC A,A+DPTR ;取汉字字模数据 MOV DAT,A ; JNB ACC.3,CCW_5 LCALL PR4 ; LJMP
8、 CCW_6CCW_5: LCALL PR1 ;CCW_6: INC CODE_ ;间址寄存器加一 INC COLUMN ;列地址寄存器加一判列地址是否超出区域范围、 CJNE A,#PD1,CCW_7CCW_7: JC CCW_8 ;未超出则继续超出则判是否在区域E2 JB ACC.3,CCW_8 ;在区域E2则退出在区域E1则修改成区域E2 MOV PAGE_,A设置区域E2列地址为CCW_8: DJNZ COUNT,CCW_4 ;当页循环 JB ACC.7,CCW_9 ;判完成标志D7位,则完成退出 INC A ;否则页地址加一 SETB ACC.7 ;置完成位为 CLR ACC.3 M
9、OV CODE_,#10H ;间址寄存器设置为 16 LJMP CCW_1 ;大循环CCW_9:-中文字符库CCTAB: DB 0,0,31,17,145,209,191,145,145,159,145,145,145,31,0,0, “罗” DB 0,32,33,33,32,17,18,20,8,8,4,2,1,0,0,0 DB 0C0H 70H 0FCH 0FFH 03H 60H 6CH 6CH DB 0,32,170,170,255,170,170,128,170,170,255,170,170,34,0,0, “慧”DB 0,32,24,10,26,42,42,58,42,42,58,
10、10,31,32,0,0DB 0,0,255,137,137,137,137,137,249,137,137,137,143,128,0,0, “民”DB 0,0,63,16,8,0,0,0,0,3,4,8,16,60,0,0 DB 0,224,16,8,8,16,224,0,0,112,136,136,136,136,112,0, “08”DB 0,7,8,16,16,8,7,0,0,14,17,16,16,17,14,0DB 0,48,8,8,8,136,112,0,0,48,8,8,8,136,112,0, “22”DB 0,24,20,18,17,16,24,0,0,24,20,18,
11、17,16,24,0DB 0,16,16,248,0,0,0,0,0,16,16,248,0,0,0,0, “11”DB 0,16,16,31,16,16,0,0,0,16,16,31,16,16,0,0-. 中文演示显示程序段MAIN: LCALL INIT LCALL CLEAR MOV CTEMP,#0 MOV DIR,#0AAA: MOV PAGE_,#02H MOV COLUMN,CTEMP MOV CODE_,#00H LCALL CCW_PR MOV A,CTEMP ADD A,#10H MOV COLUMN,A MOV CODE_,#01H ADD A,#20H MOV COD
12、E_,#02H MOV PAGE_,#02H ADD A,#30H ;顺次向后显示,30H表示显示在第 四个位置 MOV CODE_,#03H ;取对应的字模03H代表中文字库 表中的第四组数据在此对应8 ADD A,#40H MOV CODE_,#04H ADD A,#50H LJMP S_DOWN ;选用此句可实现文字循环向下滚动显示 ;LJMP S_UP ;选用此句可实现文字循环向上滚动显示LJMP LEFT ;选用此句可实现文字循环向左滚动显示SJMP $ ;选用此句文字呈现静态显示 LCALL DELAY ;若删去上述跳转直接执行以下程序可实现 文字循环向右滚动显示 LCALL DE
13、LAY MOV A, DIR CJNE A,#0, LEFT INC CTEMP CJNE A,#58, AAA MOV DIR,#1 LJMP AAA LEFT: DEC CTEMP CJNE A,#0, AAALCALL S_LEFTLCALL S_UP SJMP $ 示例五 滚动演示程序段 定时间隔地有规律地修改显示起始行地址,将产生显示画面平滑向上或向下滚动的效 果。示例程序如下:S_UP: MOV R7,#00H ;向上改动程序S_UPI: MOV A,#0C0H ;显示起始行设置代码 ORL A,R7 MOV COM,A调延时子程序 INC R7 CJNE R7,#20H,S_UP
14、I LJMP S_UPS_DOWN: MOV R7,#1FH ;向下滚动程序 MOV COM,#0C0H ;S_DOWN1: DJNZ R7,S_DOWN1 LJMP S_DOWN-DELAY: MOV R6,#060H ;延时子程序 MOV R5,#00HDELAY1: NOP DJNZ R5,DELAY1 DJNZ R6,DELAY1仿真结果说明:程序执行后液晶屏幕第一行显示“罗慧民082211”字样,依照程序选择的显示方式的不同,液晶屏幕上会出现不同的效果,如上所述,若选用LJMP S_DOWN则屏幕上出现向下滚动出现的“罗慧民082211”字样,选择其他则相应出现不一样的显示效果。本程序基本实现了思考题1和2的要求。仅供个人用于学习、研究;不得用于商业用途。 not for commercial use.Nur fr den persnlichen fr Studien, Forschung, zu kommerziellen Zwecken verwendet werden.Pour l tude et la recherche uniquement des fins personnelles; pas des fins commerciales. , , . 以下无正文
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1