当前位置:文档之家› 单片机课程设计LCD显示屏

单片机课程设计LCD显示屏

《单片机原理及应用》课程设计报告题目:LCD显示设计院(系):机电与自动化学院专业班级:电气自动化技术1101班学生:包文峰学号: 2 0 1 1 2 8 2 2 0 2 3指导教师:雷丹2013年12月16日至2013年12 月27日华中科技大学武昌分校制《单片机原理及应用》课程设计任务书采用122×32A点阵式LCD液晶显示模块,置SED1520液晶显示控制器,电路如图1所示。

图1 LCD显示电路(3)LCD与单片机的连接(如图2)目录1.课程设计题目及要求 (1)1.1课程设计题目 (1)1.2课程设计要求 (1)2.课程设计主要容 (2)2.1 LCD显示原理 (2)2.2 LCD显示电路 (2)2.3 LCD引脚说明 (3)2.4 SED1520的基本原理 (4)2.5 SED1520的指令系统 (5)2.6 LCD与单片机的连接 (6)2.7 汉字字模的获取 (7)3.软件设计 (9)3.1程序流程 (9)3.2课程设计具体程序 (10)4.课程设计总结 (30)参考文献 (31)1. 课程设计题目及要求1.1课程设计题目LCD显示设计1.2课程设计要求了解122×32A点阵式LCD液晶显示的结构、工作原理、编程方法;SED1250的特性、部结构、各个管脚的功能,以及获取字模的方法;编写一个完整的程序,按要求在LCD上显示容。

具体显示效果为:(1)显示汉字:华中科技大学武昌分校自己的。

(2)实现显示容的翻屏功能。

拓展:实现显示容的滚动功能。

2. 课程设计主要容2.1 LCD显示原理液晶是一呈液体状的化学物质,象磁场中的金属一样,当受到外界电场影响时,其分子会产生精确的有序排列。

如果对分子的排列加以适当的控制,液晶分子将会允许光线穿越。

无论是笔记本电脑还是桌面系统,采用的LCD显示屏都是由不同部分组成的分层结构。

位于最后面的一层是由荧光物质组成的可以发射光线的背光层。

背光层发出的光线在穿过第一层偏振过滤层之后进入包含成千上万水晶液滴的液晶层。

液晶层中的水晶液滴都被包含在细小的单元格结构中,一个或多个单元格构成屏幕上的一个像素。

当LCD中的电极产生电场时,液晶分子就会产生扭曲,从而将穿越其中的光线进行有规则的折射,然后经过第二层过滤层的过滤在屏幕上显示出来。

2.2 LCD显示电路采用122×32A点阵式LCD液晶显示模块,置SED1520液晶显示控制器。

LCD显示电路如图2-1所示。

图2-1 LCD显示电路LCD显示屏示意图(122X32)如图2-2所示。

图2-2 LCD显示屏2.3 LCD引脚说明序符号电平功能号2逻辑电源正3液晶显示驱动电源4H:数据L:指令5H:读L:写6主工作方式IC的使用信号7从工作方式IC的使用信号8未用9数据总线(最低位)010数据总线111数据总线212数据总线313数据总线414数据总线515数据总线616数据总线(最高位)72.4 SED1520的基本原理SED为置液晶显示器控制器,集行、列驱动器和控制器与一体,广泛应用于小型液晶显示模块中,置2560位显示RAM区(32行80列),RAM中的1位数据控制液晶屏上一个像素的亮暗,“1”为亮,“0”为暗。

(1)1-61列为左半屏;62-122为右半屏。

(2)每半屏页数分配一致。

(3)每页含8行80列(80个字节)。

(前61列有效)(4)每半屏为32行,共4页。

(5)每个汉字占16行,即用2页才能写完。

(6)液晶屏上最多能显示两行汉字(静态时最多显示16字)。

2.5 SED1520的指令系统SED1520的13条指令C1 C0(0-79)启动改写方式0 0 1 1 1 0 0 0 0结束改写方式0 0 1 1 1 0 1 1 1读取状态字0 1BUSY ADC ON/OFF RESET 0 00 0写显示数据 1 0数据读显示数据 1 1数据2.6 LCD与单片机的连接单片机与LCD模块之间有四种基本操作:写命令:R/W接低电平即A7为0读状态:R/W 接高电平即A7为1 写显示数据:A0 接高电平读显示数据:A0 接低电平2.7 汉字字模的获取在编写程序之前,我们必须要知道所显示汉字的字模,要得到我们所需要的汉字字模,我们可以通过有关的软件进行查询,得到其数据表。

如“包”字:E2 F800H F880H F840H F8C0H再如“文”字:再如“峰”字:3软件设计3.1程序流程显示主程序显示子程序初始化程序清屏幕子程序3.2课程设计具体程序实现翻屏功能PD1 EQU 60 ; ;模块参数COLUMN EQU 30HPAGE1 EQU 31H ;;页地址寄存器CODE1 EQU 32H ;;字符代码寄存器COUNT EQU 33H ;;计数器COM EQU 20H ;;指令寄存器DAT EQU 21H ;;数据寄存器CWADD1 EQU 0fa00H ;;写指令代码地址(E1)CRADD1 EQU 0fa80H ;;读状态字地址(E1)DWADD1 EQU 0fa40H ;;写显示数据地址(E1)DRADD1 EQU 0fac0H ;;读显示数据地址(E1)CWADD2 EQU 0f800H ;;写指令代码地址(E2)CRADD2 EQU 0f880H ;;读状态字地址(E2)DWADD2 EQU 0f840H ;;写显示数据地址(E2)DRADD2 EQU 0f8c0H ;;读显示数据地址(E2)ORG 0000HAG1: MOV SP,#60HLCALL INT ;;调用初始化子程序LCALL CLEAR ;;调用清屏子程序MOV PD1,#3DH ;;MOV PAGE1,#02H ;;页地址寄存器置初值MOV COLUMN,#0H ;;列地址寄存器置初值MOV CODE1,#00H ;;字符代码寄存器置初值LCALL CCW_PR ;;显示“华”MOV PAGE1,#02HMOV COLUMN,#0fHMOV CODE1,#01HLCALL CCW_PR ;;显示“中”MOV PAGE1,#02HMOV COLUMN,#1eHMOV CODE1,#02HLCALL CCW_PR ;;显示“科”MOV PAGE1,#2HMOV COLUMN,#2dHMOV CODE1,#03HLCALL CCW_PR ;;显示“技”MOV PAGE1,#2HMOV COLUMN,#61MOV CODE1,#04HLCALL CCW_PR ;;显示“大”MOV PAGE1,#2HMOV COLUMN,#76MOV CODE1,#05HLCALL CCW_PR ;;显示“学”MOV PAGE1,#2HMOV COLUMN,#91MOV CODE1,#06HLCALL CCW_PR ;;显示“武"MOV PAGE1,#2HMOV COLUMN,#106MOV CODE1,#07HLCALL CCW_PR ;;显示“昌"MOV PD1,#3DH ;;MOV PAGE1,#00H ;;页地址寄存器置初值MOV COLUMN,#0H ;;列地址寄存器置初值MOV CODE1,#08H ;;字符代码寄存器置初值LCALL CCW_PR ;;显示“分”MOV PAGE1,#00HMOV COLUMN,#0fHMOV CODE1,#09HLCALL CCW_PR ;;显示“校”MOV PAGE1,#0HMOV COLUMN,#1eHMOV CODE1,#0aHLCALL CCW_PR ;;显示“---”MOV PAGE1,#0HMOV COLUMN,#2dHMOV CODE1,#0bHLCALL CCW_PR ;;显示“包”MOV PAGE1,#0HMOV COLUMN,#61MOV CODE1,#0cHLCALL CCW_PR ;;显示“文”MOV PAGE1,#0HMOV COLUMN,#76MOV CODE1,#0dHLCALL CCW_PR ;;显示“峰”LCALL AG2 ;;延时显示LCALL CLEAR ;;清屏LCALL AG2LCALL AG2LCALL AG2 ;;清屏延时LJMP AG1 ;;调用显示程序SJMP $CCW_PR: MOV DPTR,#CCATB ;;确定字符字模块首地址MOV A,CODE1 ;;取代码MOV B,#20H ;;字模块宽度为32个字节MUL AB ;;代码X32ADD A,DPL ;;字符字模块首地址=字模库首地址+代码X32MOV DPL,AMOV A,BADDC A,DPHMOV DPH,APUSH COLUMN ;;列地址入栈PUSH COLUMN ;;列地址入栈MOV CODE1,#00H ;;代码寄存器借用为间址寄存器CCW_1: MOV COUNT,#10H ;;计数器设定为16MOV A,PAGE1 ;;读页地址寄存器ANL A,#03HORL A,#0B8H ;;“或”页地址设置代码MOV COM,A ;;写页地址设置指令LCALL PR0LCALL PR3POP COLUMN ;;取列地址值MOV A,COLUMN ;;读列地址寄存器CLR CSUBB A,#PD1 ;;列地址-模块参数JC CCW_2 ;;<0为左半屏显示区域(E1)MOV COLUMN,A ;;≥0为右半屏显示区域(E2)MOV A,PAGE1SETB ACC.3 ;;设置区域标志位MOV PAGE1,A ;;“0”为E1,“1”为E2CCW_2: MOV COM,COLUMN ;;设置列地址值MOV A,PAGE1 ;;判区域标志以确定设置哪个控制器JNB ACC.3,CCW_3LCALL PR3 ;;区域E2LJMP CCW_4CCW_3: LCALL PR0 ;;区域E1CCW_4: MOV A,CODE1 ;;取间址寄存器值MOVC A,A+DPTR ;;取汉字字模数据MOV DAT,A ;;写数据MOV A,PAGE1JNB ACC.3,CCW_5LCALL PR4 ;;区域E2LJMP CCW_6CCW_5: LCALL PR1 ;;区域E1CCW_6: INC CODE1 ;;间址寄存器加1INC COLUMN ;;列地址寄存器加1MOV A,COLUMN ;;判列地址是否超出区域围CJNE A,#PD1,CCW_7CCW_7: JC CCW_8 ;;未超出则继续MOV A,PAGE1 ;;超出则判是否在区域E2ACC.3,CCW_8 ;;在区域E2则退出SETB ACC.3 ;;在区域E1则修改成区域E2MOV PAGE1,AMOV COM,#00H ;;设置区域E2列地址为“0”LCALL PR3CCW_8: DJNZ COUNT,CCW_4 ;;当页循环MOV A,PAGE1 ;;读页地址寄存器ACC.7,CCW_9 ;;判完成标志D7位,“1”则完成退出INC A ;;否则页地址加“1”SETB ACC.7CLR ACC.3MOV PAGE1,AMOV CODE1,#10H ;;间接寄存器设置为16LJMP CCW_1 ;;大循环CCW_9: RETccAtB:db 00h, 40h, 20h, 10h,0FCh, 03h, 40h, 20hdb 10h,0FFh, 08h, 04h, 06h,0C0h, 00h, 00h ;;显示“华”db 04h, 04h, 04h, 04h, 05h, 04h, 04h,0FFhdb 04h, 04h, 05h, 05h, 05h, 05h, 04h, 00hdb 00h,0F8h, 08h, 08h, 08h, 08h, 08h,0FFhdb 08h, 08h, 08h, 08h, 08h,0FCh, 08h, 00h ;;显示“中”db 00h, 03h, 01h, 01h, 01h, 01h, 01h,0FFhdb 01h, 01h, 01h, 01h, 01h, 03h, 00h, 00hdb 24h, 24h, 24h,0A4h,0FEh,0A3h, 22h, 00hdb 24h, 48h, 00h,0FFh, 00h, 80h, 00h, 00h ;;显示“科”db 10h, 08h, 06h, 01h,0FFh, 00h, 01h, 02hdb 02h, 02h, 02h,0FFh, 01h, 01h, 01h, 00hdb 10h, 10h, 10h,0FFh, 10h, 10h, 88h, 88hdb 88h,0FFh, 88h, 88h, 8Ch, 08h, 00h, 00h ;;显示“技”db 04h, 44h, 82h, 7Fh, 01h, 80h, 81h, 46hdb 28h, 10h, 28h, 26h, 41h,0C0h, 40h, 00hdb 20h, 20h, 20h, 20h, 20h, 20h,0A0h, 7Fhdb 0A0h, 20h, 20h, 20h, 20h, 30h, 20h, 00h ;;显示“大”db 00h, 40h, 40h, 20h, 10h, 0Ch, 03h, 00hdb 01h, 06h, 08h, 10h, 20h, 60h, 20h, 00hdb 40h, 30h, 11h, 96h, 90h, 90h, 91h, 96hdb 90h, 90h, 98h, 14h, 13h, 50h, 30h, 00h ;;显示“学”db 04h, 04h, 04h, 04h, 04h, 44h, 84h, 7Ehdb 06h, 05h, 04h, 04h, 04h, 06h, 04h, 00hdb 20h, 20h, 24h, 24h, 24h,0E4h, 26h, 24hdb 20h,0FFh, 20h, 22h, 2Ch, 20h, 20h, 00h ;;显示“武”db 20h, 60h, 3Fh, 20h, 20h, 1Fh, 11h, 11hdb 10h, 03h, 1Ch, 20h, 40h, 80h,0E0h, 00hdb 00h, 00h, 00h, 7Fh, 49h, 49h, 49h, 49hdb 49h, 49h, 49h, 7Fh, 80h, 00h, 00h, 00h ;;显示“昌”db 00h, 00h,0FFh, 49h, 49h, 49h, 49h, 49hdb 49h, 49h, 49h, 49h,0FFh, 01h, 00h, 00hdb 00h, 80h, 40h, 20h, 98h, 86h, 80h, 80hdb 83h, 8Ch, 90h, 20h,0C0h, 80h, 80h, 00h ;;显示“分”db 01h, 00h, 80h, 40h, 20h, 1Fh, 00h, 40hdb 80h, 40h, 3Fh, 00h, 00h, 01h, 00h, 00hdb 10h, 10h,0D0h,0FFh, 90h, 10h, 88h, 48hdb 0A8h, 09h, 0Ah, 08h,0A8h, 4Ch,0C8h, 00h ;;显示“校”db 04h, 03h, 00h,0FFh, 80h, 81h, 40h, 40hdb 21h, 16h, 08h, 16h, 61h,0C0h, 40h, 00hdb 80h, 80h, 80h, 80h, 80hdb 80h, 80h, 80h, 80h, 80h ;;显示“---”db 80h, 80h, 80h, 80h, 80hdb 00h, 00h, 00h, 00h, 00hdb 00h, 00h, 00h, 00h, 00hdb 00h, 00h, 00h, 00h, 00hdb 00h, 00hdb 00h, 40h, 20h,0D0h, 48h, 4Fh, 48h, 48hdb 0E8h, 48h, 08h,0FCh, 08h, 00h, 00h, 00h ;;显示“包”db 00h, 00h, 00h, 3Fh, 42h, 42h, 42h, 42hdb 47h, 40h, 48h, 4Fh, 40h, 70h, 00h, 00hdb 08h, 08h, 08h, 18h, 68h, 88h, 09h, 0Ehdb 08h, 08h,0C8h, 38h, 08h, 0Ch, 08h, 00h ;;显示“文”db 80h, 80h, 40h, 40h, 20h, 11h, 0Ah, 04hdb 0Ah, 11h, 10h, 20h, 40h,0C0h, 40h, 00hdb 00h,0F0h, 00h,0FFh, 00h,0F0h, 90h, 88hdb 4Fh, 54h,0A4h, 54h, 4Ch,0C4h, 40h, 00h ;;显示“峰”db 00h, 1Fh, 10h, 0Fh, 08h, 1Fh, 00h, 14hdb 15h, 15h,0FFh, 15h, 15h, 14h, 00h, 00hAG2: MOV R0,#0 ;;延时程序1SAG3: MOV TMOD,#10HMOV TH1,#3CHMOV TL1,#0B0HSETB TR1AG4: JBC TF1,AG5SJMP AG4AG5: INC R0CJNE R0,#0AH,AG3RETINT: MOV COM,#0E2H ;;初始化子程序,复位LCALL PR0LCALL PR3MOV COM,#0A4H ;;关闭休闲状态LCALL PR0LCALL PR3MOV COM,#0A9H ;;设置1/32占空比LCALL PR0LCALL PR3MOV COM,#0A0H ;;正向排序设置LCALL PR0LCALL PR3MOV COM,#0C0H ;;设置显示起始行为第一行LCALL PR0LCALL PR3MOV COM,#0AFH ;;开显示设置LCALL PR0LCALL PR3RETCLEAR: MOV R4,#00H ;;清屏子程序,页面地址暂存器设置CLEAR1: MOV A,R4 ;;取页地址值ORL A,#0B8H ;;“或”页面地址设置代码MOV COM,A ;;页面地址设置LCALL PR0LCALL PR3MOV COM,#00H ;;列地址设置为“0”LCALL PR0LCALL PR3MOV R3,#50H ;;一页清80个字节CLEAD2: MOV DAT,#00H ;;显示数据为“0”LCALL PR1LCALL PR4DJNZ R3,CLEAD2 ;;页字节清零循环INC R4 ;;页地址暂存器加1CJNE R4,#04H,CLEAR1 ;;RAM区清零循环RETPR0: PUSH DPL ;;写指令代码子程序(E1)PUSH DPHMOV DPTR,#CRADD1PR01: MOVX A,DPTRACC.7,PR01MOV DPTR,#CWADD1MOV A,COMMOVX DPTR,APOP DPHPOP DPLRETPR1: PUSH DPL ;;写显示数据子程序(E1)PUSH DPHMOV DPTR,#CRADD1PR11: MOVX A,DPTRACC.7,PR11MOV DPTR,#DWADD1MOV A,DATMOVX DPTR,APOP DPHPOP DPLRETPR2: PUSH DPL ;;读显示数据子程序(E1)PUSH DPHMOV DPTR,#CRADD1PR21: MOVX A,DPTRACC.7,PR21MOV DPTR,#DRADD1MOVX A,DPTRMOV DAT,APOP DPHPOP DPLRETPR3: PUSH DPL ;;写指令代码子程序(E2)PUSH DPHMOV DPTR,#CRADD2PR31: MOVX A,DPTRACC.7,PR31MOV DPTR,#CWADD2MOV A,COMMOVX DPTR,APOP DPHPOP DPLRETPR4: PUSH DPL ;;写显示数据子程序(E2)PUSH DPHMOV DPTR,#CRADD2PR41: MOVX A,DPTRACC.7,PR41MOV DPTR,#DWADD2MOV A,DATMOVX DPTR,APOP DPHPOP DPLRETPR5: PUSH DPL ;;读显示数据子程序(E2)PUSH DPHMOV DPTR,#CRADD2PR51: MOVX A,DPTRACC.7,PR21MOV DPTR,#DRADD2MOVX A,DPTRMOV DAT,APOP DPHPOP DPLRETend拓展:实现上下滚屏功能PD1 EQU 60 ;;模块参数COLUMN EQU 30HPAGE1 EQU 31H ;;页地址寄存器CODE1 EQU 32H ;;字符代码寄存器COUNT EQU 33H ;;计数器COM EQU 20H ;;指令寄存器DAT EQU 21H ;;数据寄存器CWADD1 EQU 0fa00H ;;写指令代码地址(E1)CRADD1 EQU 0fa80H ;;读状态字地址(E1)DWADD1 EQU 0fa40H ;;写显示数据地址(E1)DRADD1 EQU 0fac0H ;;读显示数据地址(E1)CWADD2 EQU 0f800H ;;写指令代码地址(E2)CRADD2 EQU 0f880H ;;读状态字地址(E2)DWADD2 EQU 0f840H ;;写显示数据地址(E2)DRADD2 EQU 0f8c0H ;;读显示数据地址(E2)ORG 0000HAG1: MOV SP,#60HLCALL INT ;;调用初始化子程序LCALL CLEAR ;;调用清屏子程序MOV PD1,#3DHMOV PAGE1,#02H ;;页地址寄存器置初值MOV COLUMN,#0H ;;列地址寄存器置初值MOV CODE1,#00H ;;字符代码寄存器置初值LCALL CCW_PR ;;显示“华”MOV PAGE1,#02HMOV COLUMN,#0fHMOV CODE1,#01HLCALL CCW_PR ;;显示“中”MOV PAGE1,#02HMOV COLUMN,#1eHMOV CODE1,#02HLCALL CCW_PR ;;显示“科”MOV PAGE1,#2HMOV COLUMN,#2dHMOV CODE1,#03HLCALL CCW_PR ;;显示“技”MOV PAGE1,#2HMOV COLUMN,#61MOV CODE1,#04HLCALL CCW_PR ;;显示“大”MOV PAGE1,#2HMOV COLUMN,#76MOV CODE1,#05HLCALL CCW_PR ;;显示“学”MOV PAGE1,#2HMOV COLUMN,#91MOV CODE1,#06HLCALL CCW_PR ;;显示“武"MOV PAGE1,#2HMOV COLUMN,#106MOV CODE1,#07HLCALL CCW_PR ;;显示“昌"MOV PD1,#3DH ;;MOV PAGE1,#00H ;;页地址寄存器置初值MOV COLUMN,#0H ;;列地址寄存器置初值MOV CODE1,#08H ;;字符代码寄存器置初值LCALL CCW_PR ;;显示“分”MOV PAGE1,#00HMOV COLUMN,#0fHMOV CODE1,#09HLCALL CCW_PR ;;显示“校”MOV PAGE1,#0HMOV COLUMN,#1eHMOV CODE1,#0aHLCALL CCW_PR ;;显示“---”MOV PAGE1,#0HMOV COLUMN,#2dHMOV CODE1,#0bHLCALL CCW_PR ;;显示“包”MOV PAGE1,#0HMOV COLUMN,#61MOV CODE1,#0cHLCALL CCW_PR ;;显示“文”MOV PAGE1,#0HMOV COLUMN,#76MOV CODE1,#0dHLCALL CCW_PR ;;显示“峰”LCALL AG6 ;;调用翻屏SJMP $CCW_PR: MOV DPTR,#CCATB ;;确定字符字模块首地址MOV A,CODE1 ;;取代码MOV B,#20H ;;字模块宽度为32个字节MUL AB ;;代码X32ADD A,DPL ;;字符字模块首地址=字模库首地址+代码X32MOV DPL,AMOV A,BADDC A,DPHMOV DPH,APUSH COLUMN ;;列地址入栈PUSH COLUMN ;;列地址入栈MOV CODE1,#00H ;;代码寄存器借用为间址寄存器CCW_1: MOV COUNT,#10H ;;计数器设定为16MOV A,PAGE1 ;;读页地址寄存器ANL A,#03HORL A,#0B8H ;;“或”页地址设置代码MOV COM,A ;;写页地址设置指令LCALL PR0LCALL PR3POP COLUMN ;;取列地址值MOV A,COLUMN ;;读列地址寄存器CLR CSUBB A,#PD1 ;;列地址-模块参数JC CCW_2 ;;<0为左半屏显示区域(E1)MOV COLUMN,A ;;≥0为右半屏显示区域(E2)MOV A,PAGE1SETB ACC.3 ;;设置区域标志位MOV PAGE1,A ;;“0”为E1,“1”为E2CCW_2: MOV COM,COLUMN ;;设置列地址值MOV A,PAGE1 ;;判区域标志以确定设置哪个控制器JNB ACC.3,CCW_3LCALL PR3 ;;区域E2LJMP CCW_4CCW_3: LCALL PR0 ;;区域E1CCW_4: MOV A,CODE1 ;;取间址寄存器值MOVC A,A+DPTR ;;取汉字字模数据MOV DAT,A ;;写数据MOV A,PAGE1JNB ACC.3,CCW_5LCALL PR4 ;;区域E2LJMP CCW_6CCW_5: LCALL PR1 ;;区域E1CCW_6: INC CODE1 ;;间址寄存器加1INC COLUMN ;;列地址寄存器加1MOV A,COLUMN ;;判列地址是否超出区域围CJNE A,#PD1,CCW_7CCW_7: JC CCW_8 ;;未超出则继续MOV A,PAGE1 ;;超出则判是否在区域E2ACC.3,CCW_8 ;;在区域E2则退出SETB ACC.3 ;;在区域E1则修改成区域E2MOV PAGE1,AMOV COM,#00H ;;设置区域E2列地址为“0”LCALL PR3CCW_8: DJNZ COUNT,CCW_4 ;;当页循环MOV A,PAGE1 ;;读页地址寄存器ACC.7,CCW_9 ;;判完成标志D7位,“1”则完成退出INC A ;;否则页地址加“1”SETB ACC.7CLR ACC.3MOV PAGE1,AMOV CODE1,#10H ;;间接寄存器设置为16LJMP CCW_1 ;;大循环CCW_9: RETccAtB:db 00h, 40h, 20h, 10h,0FCh, 03h, 40h, 20hdb 10h,0FFh, 08h, 04h, 06h,0C0h, 00h, 00h ;;显示“华”db 04h, 04h, 04h, 04h, 05h, 04h, 04h,0FFhdb 04h, 04h, 05h, 05h, 05h, 05h, 04h, 00hdb 00h,0F8h, 08h, 08h, 08h, 08h, 08h,0FFhdb 08h, 08h, 08h, 08h, 08h,0FCh, 08h, 00h ;;显示“中”db 00h, 03h, 01h, 01h, 01h, 01h, 01h,0FFhdb 01h, 01h, 01h, 01h, 01h, 03h, 00h, 00hdb 24h, 24h, 24h,0A4h,0FEh,0A3h, 22h, 00hdb 24h, 48h, 00h,0FFh, 00h, 80h, 00h, 00h ;;显示“科”db 10h, 08h, 06h, 01h,0FFh, 00h, 01h, 02hdb 02h, 02h, 02h,0FFh, 01h, 01h, 01h, 00hdb 10h, 10h, 10h,0FFh, 10h, 10h, 88h, 88hdb 88h,0FFh, 88h, 88h, 8Ch, 08h, 00h, 00h ;;显示“技”db 04h, 44h, 82h, 7Fh, 01h, 80h, 81h, 46hdb 28h, 10h, 28h, 26h, 41h,0C0h, 40h, 00hdb 20h, 20h, 20h, 20h, 20h, 20h,0A0h, 7Fhdb 0A0h, 20h, 20h, 20h, 20h, 30h, 20h, 00h ;;显示“大”db 00h, 40h, 40h, 20h, 10h, 0Ch, 03h, 00hdb 01h, 06h, 08h, 10h, 20h, 60h, 20h, 00hdb 40h, 30h, 11h, 96h, 90h, 90h, 91h, 96hdb 90h, 90h, 98h, 14h, 13h, 50h, 30h, 00h ;;显示“学”db 04h, 04h, 04h, 04h, 04h, 44h, 84h, 7Ehdb 06h, 05h, 04h, 04h, 04h, 06h, 04h, 00hdb 20h, 20h, 24h, 24h, 24h,0E4h, 26h, 24hdb 20h,0FFh, 20h, 22h, 2Ch, 20h, 20h, 00h ;;显示“武”db 20h, 60h, 3Fh, 20h, 20h, 1Fh, 11h, 11hdb 10h, 03h, 1Ch, 20h, 40h, 80h,0E0h, 00hdb 00h, 00h, 00h, 7Fh, 49h, 49h, 49h, 49hdb 49h, 49h, 49h, 7Fh, 80h, 00h, 00h, 00h ;;显示“昌”db 00h, 00h,0FFh, 49h, 49h, 49h, 49h, 49hdb 49h, 49h, 49h, 49h,0FFh, 01h, 00h, 00hdb 00h, 80h, 40h, 20h, 98h, 86h, 80h, 80hdb 83h, 8Ch, 90h, 20h,0C0h, 80h, 80h, 00h ;;显示“分”db 01h, 00h, 80h, 40h, 20h, 1Fh, 00h, 40hdb 80h, 40h, 3Fh, 00h, 00h, 01h, 00h, 00hdb 10h, 10h,0D0h,0FFh, 90h, 10h, 88h, 48hdb 0A8h, 09h, 0Ah, 08h,0A8h, 4Ch,0C8h, 00h ;;显示“校”db 04h, 03h, 00h,0FFh, 80h, 81h, 40h, 40hdb 21h, 16h, 08h, 16h, 61h,0C0h, 40h, 00hdb 80h, 80h, 80h, 80h, 80hdb 80h, 80h, 80h, 80h, 80h ;;显示“---”db 80h, 80h, 80h, 80h, 80hdb 00h, 00h, 00h, 00h, 00hdb 00h, 00h, 00h, 00h, 00hdb 00h, 00h, 00h, 00h, 00hdb 00h, 00hdb 00h, 40h, 20h,0D0h, 48h, 4Fh, 48h, 48hdb 0E8h, 48h, 08h,0FCh, 08h, 00h, 00h, 00h ;;显示“包”db 00h, 00h, 00h, 3Fh, 42h, 42h, 42h, 42hdb 47h, 40h, 48h, 4Fh, 40h, 70h, 00h, 00hdb 08h, 08h, 08h, 18h, 68h, 88h, 09h, 0Ehdb 08h, 08h,0C8h, 38h, 08h, 0Ch, 08h, 00h ;;显示“文”db 80h, 80h, 40h, 40h, 20h, 11h, 0Ah, 04hdb 0Ah, 11h, 10h, 20h, 40h,0C0h, 40h, 00hdb 00h,0F0h, 00h,0FFh, 00h,0F0h, 90h, 88hdb 4Fh, 54h,0A4h, 54h, 4Ch,0C4h, 40h, 00h ;;显示“峰”db 00h, 1Fh, 10h, 0Fh, 08h, 1Fh, 00h, 14hdb 15h, 15h,0FFh, 15h, 15h, 14h, 00h, 00hAG2: MOV R0,#0 ;;延时程序AG3: MOV TMOD,#10HMOV TH1,#3CHMOV TL1,#0B0HSETB TR1AG4: JBC TF1,AG5SJMP AG4AG5: INC R0CJNE R0,#0AH,AG3RETAG6: LCALL AG2LCALL AG2LCALL AG2MOV R6,#00 ;;滚屏AG7: MOV A,#0C0HORL A,R6MOV COM,ALCALL PR0LCALL PR3LCALL AG2INC R6CJNE R6,#11H,AG7LCALL AG2LCALL AG2LCALL AG2AG9: MOV A,#0C0HORL A,R6MOV COM,ALCALL PR0LCALL PR3LCALL AG2INC R6CJNE R6,#20H,AG9LJMP AG6RETINT: MOV COM,#0E2H ;;初始化子程序,复位LCALL PR0LCALL PR3MOV COM,#0A4H ;;关闭休闲状态LCALL PR0LCALL PR3MOV COM,#0A9H ;;设置1/32占空比LCALL PR0LCALL PR3MOV COM,#0A0H ;;正向排序设置LCALL PR0LCALL PR3MOV COM,#0C0H ;;设置显示起始行为第一行LCALL PR0LCALL PR3MOV COM,#0AFH ;;开显示设置LCALL PR0LCALL PR3RETCLEAR: MOV R4,#00H ;;清屏子程序,页面地址暂存器设置CLEAR1: MOV A,R4 ;;取页地址值ORL A,#0B8H ;;“或”页面地址设置代码MOV COM,A ;;页面地址设置LCALL PR0LCALL PR3MOV COM,#00H ;;列地址设置为“0”LCALL PR0LCALL PR3MOV R3,#50H ;;一页清80个字节CLEAD2: MOV DAT,#00H ;;显示数据为“0”LCALL PR1LCALL PR4DJNZ R3,CLEAD2 ;;页字节清零循环INC R4 ;;页地址暂存器加1CJNE R4,#04H,CLEAR1 ;;RAM区清零循环RETPR0: PUSH DPL ;;写指令代码子程序(E1)PUSH DPHMOV DPTR,#CRADD1PR01: MOVX A,DPTRACC.7,PR01MOV DPTR,#CWADD1MOVX DPTR,APOP DPHPOP DPLRETPR1: PUSH DPL ;;写显示数据子程序(E1)PUSH DPHMOV DPTR,#CRADD1PR11: MOVX A,DPTRACC.7,PR11MOV DPTR,#DWADD1MOV A,DATMOVX DPTR,APOP DPHPOP DPLRETPR2: PUSH DPL ;;读显示数据子程序(E1)PUSH DPHMOV DPTR,#CRADD1PR21: MOVX A,DPTRACC.7,PR21MOV DPTR,#DRADD1MOVX A,DPTRMOV DAT,APOP DPHPOP DPLRETPR3: PUSH DPL ;;写指令代码子程序(E2)PUSH DPHMOV DPTR,#CRADD2PR31: MOVX A,DPTRMOV DPTR,#CWADD2MOV A,COMMOVX DPTR,APOP DPHPOP DPLRETPR4: PUSH DPL ;;写显示数据子程序(E2)PUSH DPHMOV DPTR,#CRADD2PR41: MOVX A,DPTRACC.7,PR41MOV DPTR,#DWADD2MOV A,DATMOVX DPTR,APOP DPHPOP DPLRETPR5: PUSH DPL ;;读显示数据子程序(E2)PUSH DPHMOV DPTR,#CRADD2PR51: MOVX A,DPTRACC.7,PR21MOV DPTR,#DRADD2MOVX A,DPTRMOV DAT,APOP DPHPOP DPLRETEND4.课程设计总结通过两周的课程设计,让我感受最深的就是学习是一种乐趣。

相关主题