单片机课程设计LCD显示屏

合集下载

单片机课程设计题目及答案

单片机课程设计题目及答案

题目1 智能电子钟(LCD 显示)题目2 电子时钟(LCD 显示)题目3 秒表题目4 定时闹钟题目5 音乐倒数计数器题目6 基于数字温度传感器的数字温度计题目7 基于热敏电阻的数字温度计题目8 十字路口交通灯控制题目9 波形发生器设计题目10 电容、电阻参数单片机测试系统的设计题目11 数字频率计题目12 8位竞赛抢答器的设计题目13 单词记忆测试器程序设计题目14 数字电压表设计题目15 可编程作息时间控制器设计题目16 节日彩灯控制器的设计题目17 双机之间的串行通信设计题目18 电子琴设计题目19 数字音乐盒的设计题目20 单片机控制步进电机题目21 单片机控制直流电动机题目1 智能电子钟(LCD 显示) 1. 设计要求 以AT89C51单片机为核心,制作一个LCD 显示的智能电子钟: (1) 计时:秒、分、时、天、周、月、年。

(2) 闰年自动判别。

(3) 五路定时输出,可任意关断(最大可到16路)。

(4) 时间、月、日交替显示。

(5) 自定任意时刻自动开/关屏。

(6) 计时精度:误差≤1秒/月(具有微调设置) (7) 键盘采用动态扫描方式查询。

所有的查询、设置功能均由功能键K1、K2完成。

2. 工作原理 本设计采用市场上流行的时钟芯片DS1302进行制作。

DS1302是DALLAS 公司推出的涓流充电时钟芯片,内含一个实时时钟/日历和31字节静态RAM ,可以通过串行接口与计算机进行通信,使得管脚数量减少。

实时时钟/日历电路能够计算2100年之前的秒、分、时、日、星期、月、年的,具有闰年调整的能力。

DS1302时钟芯片的主要功能特性:(1) 能计算2100年之前的年、月、日、星期、时、分、秒的信息;每月的天数和闰年的天数可自动调整;时钟可设置为24或12小时格式。

(2) 31B 的8位暂存数据存储RAM 。

(3) 串行I/O 口方式使得引脚数量最少。

(4) DS1302与单片机之间能简单地采用同步串行的方式进行通信,仅需3根线。

单片机课程设计说明书

单片机课程设计说明书

苏州市职业大学课程设计说明书名称贪吃蛇2013年1月7日至2013年1月11日共1周院系计算机工程系.班级11应用技术.学号116312126 25 40 .姓名郁敏伟俞佳丽张冯.系主任李金祥.教研室主任刘文芝.指导教师徐丽华、郑洪静.目录一课程设计的目的与要求 (2)1.课程设计的目的 (2)2.课程设计的要求 (2)二题目说明 (2)2.1开发背景 (2)2.2 开发工具介绍 (3)2.2.1 CodeWarrior (3)2.2.2写入器 (4)2.2.3 MC9S08AW60 (7)2.3 小组成员分工 (9)三硬件方案 (9)3.1主控MCU (9)3.2键盘 (10)3.3 LCD液晶 (10)3.4 定时器 (12)3.5 小灯及蜂鸣器 (12)3.6 AW60最小系统 (13)四软件方案 (14)4.1 模块结构图 (14)4.2 模块划分 (14)4.2.1 键盘中断模块 (14)4.2.2 LCD液晶显示器模块 (15)4.2.3 定时器中断模块 (15)4.2.4 蜂鸣器模块 (15)4.2.5 小灯模块 (15)4.3 键盘中断模块和定时器中断模块 (16)4.3.1键盘中断模块 (16)4.3.2定时器中断模块 (16)五运行结果分析与系统改进 (18)六遇到的问题和解决方法 (19)七课程设计总结 (20)八参考文献 (20)一课程设计的目的与要求1.课程设计的目的本设计旨在进一步掌握单片机理论知识,理解嵌入式单片机系统的软件设计,加强对实际应用系统设计的能力。

《单片机原理与应用》是一门应用性很强的专业课,其理论与实践技能是从事嵌入式专业技术工作的人员所不可少的。

此次课程设计选择AW60实验板进行模拟应用设计与开发,要求学生掌握使用 C 语言进行单片机程序设计和调试的方法,提高综合运用所学的理论知识独立分析和解决问题的能力。

2.课程设计的要求在本课程设计过程中我们要遵守以下规则:重视课程设计环节,用严谨、科学和踏实的工作态度对待课程设计的每一项任务;按照课程设计的题目要求,独立地完成各项任务,不允许相互抄袭;按时到机房上机,并接受教师的检查。

(完整)单片机课程设计——计算器设计

(完整)单片机课程设计——计算器设计

目录一、设计总绪 (1)1。

1设计思想 (1)1.2设计说明 (1)1。

3关键词:矩阵键盘,单片机,数码管显示,汇编语言 (1)1.4设计目的 (1)1。

5设计要求 (2)二、设计方案 (2)2。

1硬件电路设计方案 (2)2.1.1基本结构 (2)2.1。

2系统框架图 (3)2.1。

3工作流程图 (3)2。

1.4单片机主控制模块 (4)2。

2系统功能描述 (6)三、各模块功能介绍 (7)3.1键盘输入模块 (7)3。

1。

1键盘分布图 (7)3。

1.2工作原理 (7)3。

2运算控制模块 (8)3.3显示模块 (8)3.4振荡电路模块 (9)四、仿真电路 (11)仿真运行结果 (11)五、调试过程总结 (13)附录: (14)参考文献: (14)源程序代码 (14)一、设计总绪1。

1设计思想近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新.在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,但仅单片机方面的知识是不够的,还应根据具体硬件结构、软硬件结合,来加以完善。

计算机在人们的日常生活中是比较常见的电子产品之一.可是它还在发展之中,以后必将出现功能更加强大的计算机,基于这样的理念,本次设计是用AT89c51单片机、LCD显示器、控制按键为元件来设计的计算器。

利用此设计熟悉单片机微控制器及汇编语言编程,对其片资源及各个I/O端口的功能和基本用途的了解。

掌握应用程序开发环境,常用的LCD显示器的使用方法和一般键盘的使用方法此设计是基于单片机技术的简易计算器的方案,本次设计所提出的一种基于单片机技术的简易计算器的方案,采用具有数据处理能力的中央处理器CPU,随机存储器ROM,多种I/O口和中断系统、定时器/计时器等功能集成到一块硅片上构成的一个小而完善的计算机系统-—单片机,配以汇编语言编写的执行程序,能更好的解决计算机计算的问题,随着数字生活的到来,单片机在生活中越来越重要,它能将大量的逻辑功能集成与一个集成电路中,使用起来十分方便。

单片机课程设计 数据采集及LCD1602显示,保留小数点后面两位

单片机课程设计  数据采集及LCD1602显示,保留小数点后面两位
XTAL2:接外部晶体的另一端。在单片机内部,接至上述振荡器的反 相放大器的输出端,振荡器的频率是晶体振荡器频率。有采用外部时 钟电路时,对于 HMOS 单片机,该引脚输入外部时钟脉冲;对于 CHMOS 单片机,此引脚应该悬空。 (3)信号引脚 RST/Vpd
RST/Vpd:复位/备用电源输入端。单片机上电后,只要在该引脚上输 入 24 个振荡周期(2 个机器周期)宽度以上的高电平就会使单片机 复位;有在 RST 与 VCC 之间接一个 10uf 的电容,而在 RST 于 GND 之 间接一个 8.2 千欧的下拉电阻,则可实现单片机上电自动复位。
图 1 STC89C51RC 引脚分布
分引脚具有第二功能 面就被系统用到的引脚分别说明这些引脚的名称和功能。
(1)主电源引脚 VCC 和 GND
第 4 页 共 20 页
广西 科 技 大 学
VCC:接+5V 电源 GND:接电源地 (2)中电路引脚 XTAL1 和 XTAL2 XTAL1:接外部晶体的一端。在单片机内部,它是反相放大器的输入端, 该放大器构成了内震荡器。在采用外部时钟电路时,对于 HMOS 单片 机,此引脚必须接地;对于 CHMOS 单片机,此引脚作为驱动端。
#define DataPort P0
uchar table[]="0123456789"; /*-----------------------------------------------uS 延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0~255 这里使用晶振 12M,精确延时请使用汇编,大致延时 长度如下 T=tx2+5 uS ------------------------------------------------*/ void DelayUs2x(unsigned char t) { while(--t); } /*-----------------------------------------------mS 延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0~255 这里使用晶振 12M,精确延时请使用汇编 ------------------------------------------------*/ void DelayMs(unsigned char t) {

单片机课程设计

单片机课程设计

单片机课程设计《机器人入门》2021年亚太大学生机器人大赛——胜利鼓乐课程名称:单片机课程设计系部:自控系则专业班级:计算机控制20931学生姓名:陆小祥一、总体方案:1.工作原理:本设计使用stc89c52rc单片机做为本系统的掌控模块。

单片机可以把由ds18b20、ds1302、at24c02中的数据利用软件去展开处置,从而把数据传输至表明模块,同时实现温度、日历和闹铃的表明。

以lcd液晶显示器为表明模块,把单片机响起的数据表明出,并且表明多样化。

在表明电路中,主要依靠按键去同时实现各种表明建议的挑选与转换。

2.总体设计:设计总体框架图例如图二、系统硬件设计(单元电路设计及分析):1.stc89c52rc单片机最轻系统:最小系统包括晶体振荡电路、复位开关和电源部分。

图2为stc89c52rc单片机的最小系统。

图2最轻系统电路图2.温度测量模块:温度测量传感器使用dallas公司ds18b20的单总线数字化温度传感器,测温范围为-55℃~125℃,可编程为9十一位~12十一位a/d切换精度,测温分辨率达至0.0625℃,使用真菌电源工作方式,cpu只需一根口线便能够与ds18b20通信,挤占cpu口线太少,可以节省大量引线和逻辑电路。

USB电路例如图3右图。

图3ds18b20测量电路3.时钟模块:时钟模块采用ds1302芯片,ds1302是dallas公司推出的涓流充电时钟芯片内含有一个实时时钟/日历和31字节静态ram通过简单的串行接口与单片机进行通信实时时钟/日历电路提供秒分时日日期月年的信息每月的天数和闰年的天数可自动调整时钟操作可通过am/pm指示决定采用24或12小时格式ds1302与单片机之间能简单地采用同步串行的方式进行通信仅需用到三个口线:rst复位、i/o数据线、sclk串行时钟。

时钟/ram的读/写数据以一个字节或多达31个字节的字符组方式通信。

ds1302工作时功耗很低,保持数据和时钟信息时功率小于1mw,其接线电路如图4所示:图4时钟电路4.存储器模块:图5at24c02存储器电路5.lcd液晶显示模块:lcd液晶显示模块使用lcd1602型号,具备很低的功耗,正常工作时电流仅2.0ma/5.0v。

单片机课程设计

单片机课程设计

单片机原理及应用课程设计任务书一、课程设计的目的通过本课程设计使学生进一步巩固单片机原理及应用的基本概念、基本理论,分析问题的基本方法,增强系统地运用已学的理论知识解决实际问题的能力和查阅资料的能力。

培养一定的自学能力和独立分析问题、解决问题的能力,能通过独立思考、查阅工具书、参考文献,寻找解决方案。

二、课程设计的内容和要求课题一:题目:数字音乐盒的设计设计要求:以单片机为核心,设计一个数字音乐盒:利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲(最少3首乐曲,每首不少于30s)。

采用LCD显示信息。

a. 开机时有英文欢迎提示字符,播放时显示歌曲序号(或名称)。

b. 可通过功能键选择乐曲、暂停、播放。

课题二:题目:单片机电梯控制器设计要求:以51单片机和步进电机为核心设计单片机电梯控制器,要求具备如下基本功能。

显示:要求实现5层控制,实时显示电梯所在楼层号位置;升降控制:采用一台步进电机,利用电机的正反转来模拟电梯的升降;具备不可逆响应的功能:电梯上升途中只响应上升呼叫,下降途中只响应下降呼叫,任何反方向呼叫均无效。

课题三:题目:抢答器设计设计要求:1)抢答器的抢答路数为6路;2)设置一个系统清除和抢答控制开关s,开关由主持人控制;3)抢答器具有定时抢答功能:且一次抢答时间由主持人设定为30秒,当主持人启动开始按键后,定时器进行倒计时,并在数码管上显示计时间;4)系统采用2个数码管显示,抢答启动后首先显示时间,当有人抢答时,显示抢答人员所对应的编号;5)抢答器具备锁存与显示功能,当选手按下按钮时,锁存相应的编号,扬声器发生声响提示,并在数码管上显示该选手的编号,选手抢答实现优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。

课题四:题目:4×4矩阵键盘设计要求:1)设计4×4矩阵键盘,共16个键;2)每个键位具有一个固定的键码,用十六进制表示为0H~FH;3)当按下一个键时用数码管显示其对应的键码。

单片机课程设计--+16x16点阵LED电子显示屏的设计

单片机课程设计--+16x16点阵LED电子显示屏的设计

单片机课程设计-- 16x16点阵LED电子显示屏的设计第一章系统总体方案设计LED驱动显示采用动态扫描方法, 动态扫描方式是逐行轮流点亮, 这样扫描驱动电路就可以实现多行的同名列共用一套列驱动器。

以16×16点阵为例, 把所有同一行的发光管的阳极连在一起, 把所有同一列的发光管的阴极连在一起(共阳的接法), 先送出对应第1行发光管亮灭的数据并锁存, 然后选通第1行使其燃亮一定的时间, 然后熄灭;再送出第2行的数据并锁存, 然后选通第2行使其燃亮相同的时间, 然后熄灭;…第16行之后, 又重新燃亮第1行, 反复轮回。

当这样轮回的速度足够快(每秒24次以上), 由于人眼的视觉暂留现象, 就能看到显示屏上稳定的图形。

该方法能驱动较多的LED, 控制方式较灵活, 而且节省单片机的资源。

显示数据传输采用串行传输的方法, 控制电路可以只用一根信号线, 将列数据一位一位传往列驱动器, 在硬件方面无疑是十分经济的。

但串行传输过程较长, 数据按顺序一位一位地输出给列驱动器, 只有当一行的各列数据都已传输到位之后, 这一行的各列才能并行地进行显示。

对于串行传输方式来说, 列数据准备时间可能相当长, 在行扫描周期确定的情况下, 留给行显示的时间就太少了, 以致影响到LED的亮度。

采用串行传输中列数据准备和列数据显示的时间矛盾, 可以采用重叠处理的方法。

即在显示本行各列数据的同时, 传送下一行的列数据。

为了达到重叠处理的目的, 列数据的显示就需要有锁存功能。

对于列数据准备来说, 它应能实现串入并出的移位功能。

这样, 本行已准备好的数据打入并行锁存器进行显示时, 串行移位寄存器就可以准备下一行的列数据, 而不会影响本行的显示。

系统框图如图一图一点阵显示器硬件系统框图第二章系统硬件电路的设计硬件电路大致上可以分为单片机系统及外围电路、列驱动电路和行驱动电路三部分。

一. 单片机系统及外围电路单片机采用89C51或更高频率的晶振, 以获得较高的刷新频率, 使得显示更稳定。

基于51单片机超声波测距报警系统课程设计

基于51单片机超声波测距报警系统课程设计

基于51单片机超声波测距报警系统课程设计一、引言超声波测距技术是一种常见的非接触式测距技术,具有测距范围广、精度高等优点。

在日常生活中,超声波测距技术被广泛应用于车辆倒车雷达、智能家居中的人体感应等领域。

本文将介绍基于51单片机的超声波测距报警系统的课程设计。

二、设计思路本课程设计主要分为硬件设计和软件设计两部分。

硬件部分主要包括超声波模块、LCD显示屏、蜂鸣器等模块的连接和电路设计;软件部分主要包括51单片机程序设计及LCD显示程序编写。

三、硬件设计1. 超声波模块连接超声波模块是实现测距功能的核心部件。

在本课程设计中,我们采用HC-SR04型号的超声波模块。

该模块需要连接到51单片机上,具体连接方式如下:- 将VCC引脚连接到51单片机上的5V电源;- 将GND引脚连接到51单片机上的GND;- 将Trig引脚连接到P2.0口;- 将Echo引脚连接到P2.1口。

2. LCD显示屏连接LCD显示屏用于显示测距结果和报警信息。

在本课程设计中,我们采用1602型号的LCD显示屏。

该模块需要连接到51单片机上,具体连接方式如下:- 将VSS引脚连接到51单片机上的GND;- 将VDD引脚连接到51单片机上的5V电源;- 将VO引脚连接到一个10K电位器,再将电位器两端分别接到GND 和5V电源;- 将RS引脚连接到P1.0口;- 将RW引脚连接到P1.1口;- 将EN引脚连接到P1.2口;- 将D4-D7引脚分别连接到P0口的高四位。

3. 蜂鸣器连接蜂鸣器用于报警。

在本课程设计中,我们采用被动式蜂鸣器。

该模块需要连接到51单片机上,具体连接方式如下:- 将正极引脚(一般为长针)连接到51单片机上的P3.7口;- 将负极引脚(一般为短针)连接到51单片机上的GND。

四、软件设计1. 51单片机程序设计在本课程设计中,我们采用Keil C51作为编程工具,使用C语言编写程序。

主要程序流程如下:- 定义超声波模块的Trig和Echo引脚;- 定义LCD显示屏的RS、RW、EN和D4-D7引脚;- 定义蜂鸣器的引脚;- 定义变量存储测距结果和报警状态;- 初始化LCD显示屏、超声波模块等模块;- 循环执行以下操作:- 发送超声波信号并计算回波时间,从而得到距离值;- 根据距离值判断是否需要报警,并控制蜂鸣器发出报警声音;- 将测距结果和报警状态显示在LCD显示屏上。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《单片机原理及应用》课程设计报告题目: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.课程设计总结通过两周的课程设计,让我感受最深的就是学习是一种乐趣。

相关文档
最新文档