《微机原理与接口技术课程设计——液晶显示器与键盘系统.doc》由会员分享,可在线阅读,更多相关《微机原理与接口技术课程设计——液晶显示器与键盘系统.doc(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、微机原理与接口技术综合实践说明书课程名称:微机原理与接口技术综合实践 设计题目:液晶显示器与键盘系统 院 系:机电学院热能与动力工程系 班 级: 1112 曹家皓 陈哲王明波 王天辉设 计 者:马茜指导教师: 肖燕彩 设计时间:2013.7.1-2013.7.12 微机原理与接口技术综合实践任务书 组 长:马茜组 员:曹家皓 陈哲 王明波 王天辉 专 业:热能与动力工程 班 级:机电1112 任务起止日期:2013年7月1日至2013年7月12日 课程设计题目:液晶显示器与键盘系统 设计要求: 扩展一块液晶显示器和一块4*4键盘; 系统上电显示初始化界面,如“欢迎使用本系统!” ; 按数字键显
2、示相应数字; 按功能键“A” ,发光二极管发光; 按功能键“B” ,发光二极管不发光; 按功能键“C” ,蜂鸣器报警; 按功能键“D” ,蜂鸣器停止报警; 按功能键“E”,显示“机电1112; 按功能键“F”,实现返回初始状态的功能。工作计划安排: 分组、选题,1天 方案设计,1天(软硬件总体结构) 硬件搭接,2天;软件程序设计,3天;综合调试,2天 课程设计任务书,2天 同组设计者及分工:马 茜 软件仿真,编写实验报告,程序注释。曹家皓 整合实验电路,软件仿真,调试硬件电路。陈 哲 编写显示字型码,编写程序,调试硬件电路。 王明波 查阅资料,调试硬件电路。 王天辉 查阅资料,调试硬件电路。目
3、录一、总体设计51.单片机选型52.按键扫描53.1620LCD显示5二、主要元件介绍61.AT89S51概述61.1 AT89S51主要特征61.2 管脚说明71.3 本设计中的应用82.1620LCD112.1 1620LCD概述112.2 1620LCD控制指令13三、基于PROTEUS的硬件电路设计151.PROTEUS软件相关152.电路组成152.1复位电路152.2时钟电路162.31620LCD显示电路162.4按键扫描电路172.5蜂鸣器和发光二级管控制电路17四、硬件配置181.按键扫描程序182.1620LCD显示程序20五、电路仿真22六、总结25七、附件261.电路原
4、理图262.源程序26一、 总体设计1. 单片机选型AT89S51是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。STC89C52具有以下标准功能:8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。根据万向开关的的档位,控制小直流电动机执行相应的动作。2. 按键扫描运用P0口第四位进行行扫描,高四位进行列扫描。循环判断,得到按键位置。并在相应按键按下后实现特定功能:按键10按下时,发光二级管点亮,按键11按下时,发光二级管停止亮;按键
5、12按下时,蜂鸣器响,按键13按下时,蜂鸣器停止响。3. TS1620-1显示将按键扫描值通过LCD显示出来,并在LCD上显示“WELCOM!”及“欢迎!”。二、 主要元件介绍1. AT89C51概述AT89C51是一种带4K字节FLASH存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-
6、51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。1.1 AT89C51主要特征与MCS-51 兼容4K字节可编程FLASH存储器寿命:1000写/擦循环数据保留时间:10年全静态工作:0Hz-24MHz三级程序存储器锁定1288位内部RAM32可编程I/O线两个16位定时器/计数器5个中断源可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路。1.2 管脚说明图1 AT89C51引脚图VCC:供电电压。G
7、ND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为低八位地址接收。P2口:P2口为一个内部上拉电阻的8
8、位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为
9、输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚 备选功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(计时器0外部输入)P3.5 T1(计时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许
10、的输出电平用于锁存地址的低位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将
11、不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。振荡器特性:XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时
12、钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。1.3 本设计中的应用在本设计中,AT89S51是整个系统的核心。I/O口主要用来连接键盘、蜂鸣器、以及控制LCD显示。P0口用来控制按键扫描。其中P1、P2口分别用来连接LCD的数据口和命令口;P2.0,2.1用于连接发光二级管和蜂鸣器。2. 1620LCD2.1 1620LCD概述1620LCD 主要技术参数:显示容量:162 个字符芯片工作电压:4.55.5V工作电流:2.0mA(5.0V)模块最佳工作电压:5.0V字符尺寸:2.954.35(WH)mm引脚功能说明:1620LCD 采用标准的14 脚(无背光)或16 脚(带背光
13、)接口,引脚接口说明如表一。表一 1620LCD 引脚接口说明第1 脚:VSS 为地电源。第2 脚:VDD 接5V 正电源。第3 脚:VL 为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K 的电位器调整对比度。第4 脚:RS 为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5 脚:R/W 为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS 和R/W共同为低电平时可以写入指令或者显示地址,当RS 为低电平R/W 为高电平时可以读忙信号,当RS 为高电平R/W 为低电平时可以写入数据。第6 脚:E 端为
14、使能端,当E 端由高电平跳变成低电平时,液晶模块执行命令。第714 脚:D0D7 为8 位双向数据线。第15 脚:背光源正极。第16 脚:背光源负极。2.2 1620LCD控制指令1620液晶模块内部的控制器共有11条控制指令,如下表二所示。表二 1620LCD控制指令它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)指令1:清显示,指令码01H,光标复位到地址00H位置指令2:光标复位,光标返回到地址00H指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效指令4:显示
15、开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符指令7:字符发生器RAM地址设置指令8:DDRAM地址设置指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令
16、10:写数据指令11:读数据1620液晶显示模块可以和单片机直接接口。液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符。程序在开始时对液晶模块功能进行了初始化设置,约定了显示格式。三、 基于PROTEUS的硬件电路设计1. PROTEUS软件相关Proteus软件是英国Labcenter electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及
17、外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持
18、IAR、Keil和MPLAB等多种编译器。2. 电路组成根据设计要求,硬件电路主要包括复位电路、晶体振荡电路、LCD显示电路、按键扫描电路以及蜂鸣器和发光二级管控制电路。2.1 复位电路复位是任何一种微型计算机都必须具备的工作方式。复位操作使单片机处于一种初始化的状态。MCS-51单片机的RST引脚上出现持续24个振荡周期的高电平信号时,单片机进入复位。通常有上电复位与人工按钮复位两种方式。本设计中采用上电复位方式。如下图3所示。图3 上电复位电路2.2 时钟电路通常单片机系统电路的实际有内部时钟和外部时钟两种形式,两种电路都向单片机提供最基本的振荡脉冲信号。本设计中的晶体振荡电路如下图四所示
19、。图4 晶体振荡电路2.3 1620LCD显示电路1620LCD 采用标准的14 脚(无背光)或16 脚(带背光)接口。本设计中采用14脚LCD。VSS和VDD为电源端和接地端,VEE用于调整液晶显示器对比度。D0D7为8位双向数据线。电路连接图如图五。图5 LCD显示电路2.4 按键扫描电路设计中采用行列式非编码键盘,由行线、列线和键盘开关矩阵3部分组成。在这种键盘中,每根行线和列线的交叉处都有一个按键,当某个键被按下时,与这个按键相连的行线和列线就会接通,否者行线和列线不接通。如电路图6。图6 按键扫描电路2.5 蜂鸣器和发光二级管控制电路如下图所示:图7 蜂鸣器和发光二级管控制电路四、硬
20、件配置在单片机的开发运用中,逐渐引入了高级语言,C语言就是其中一种。在使用汇编语言的过程中,其可读性和可维护性不强,其次它的代码可重用性比较低,使用高级语言编程能很好的解决问题。C语言具有良好的模块化、容易阅读和维护的优点。由于模块化,所以用C语言编写的程序有很好的可移植性,功能化的代码能够很方便地从一个工程移植到另一个工程,从而减少开发时间。本设计将采用C语言编程。1. 按键扫描程序本设计中4*4按键扫描是一个难点。按键高四位为列,第四位为行。当P0.0置为0,判断第一行是否有键按下,如果第一个键被按下,P0.4口变为低电平,P0口值变为0XEE。当第二个键被按下,P0.5口变为低电平,P0
21、口值变为0XDE,以此类推。没判断一个键,返回一个按键值。循环查询按键值,再执行相应的操作。当第一个键被按下,发光二级管点亮,第二个键被按下,蜂鸣器接通。下图8、图9即为按键2前后,电平跳转对比。按键程序流程图如图10.图8 按键扫描按键前图9 按键扫描按键2后蜂鸣器接通图10 按键扫描流程图2. 1620LCD显示程序第二章中已对1620LCD控制指令进行了详细介绍,其读写时序如下图11、图12。液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图13是 1620 的内
22、部显示地址。图11 1620LCD读操作时序图12 1620LCD写操作时序图13 1620LCD内部显示地址在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。每次输入指令前都要判断液晶模块是否处于忙的状态。1620 液晶模块内部的字符发生存储器(CGROM)已经存储了 160 个不同的点阵字符图形,如图 10-58 所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是 B(41H),显示时模块把地址 41H 中的点阵字符图形显示出来,我们就能看到字母“A”。CGRO
23、M、CGRAM中字符代码与字符图形对应关系如下表三所示。表三 CGROM、CGRAM中字符代码与字符图形对应关系五、 电路仿真扫描4*4按键,当按键按下时显示按键,并在LCD上显示“WELCOME,欢迎!”,。当按键10按下时发光二级管发光,按键11按下时发光二级管停止亮;按键12按下时,蜂鸣器响,按键13按下时,蜂鸣器停止响。系统仿真图如图14.图14 系统仿真图、六、 总结经过两周设计,克服了LCD显示和4*4键盘扫描的难点,完成了课程设计所有要求,此次的课程设计我们收获颇多。不仅学会使用PROTEUS软件绘制电路图及程序仿真,以及电路图设计的基础知识,能够运用汇编语言编程控制单片机工作,
24、而且也很好的锻炼了我们的团队合作意识,小组的所有组员都能积极认真的参与我们的课程设计,经过多次的讨论研究克服了重重苦难,最终我们顺利的完成了液晶与键盘显示系统课程设计的所有要求。最后感谢老师传授的知识,让我们能够一点点不断进步。七、 附件1. 电路原理图2. 源程序 ORG 0000H AJMP MAIN ORG 0300HMAIN: MOV SP,#60H ACALL LCDINI;调用LCD初始化子程序 ACALL LCD1 ACALL LCD4LOOP: ACALL KEY;调用键扫描子程序 MOV R0,#50H CJNE R0,#0FFH,NEXT0; 若50H单元不等于0FFH,有
25、键,转到NEXT0处执行 AJMP LOOP; 若50H单元等于0FFH,无键,转到LOOP处执行NEXT0: ACALL XIANG CJNE R0,#0AH,NEXT1;判断是否是数字键NEXT1: JNC NEXT2;不是则转到NEXT2处执行 ACALL BUSY ACALL ASC;键值转换为ASCII码 ACALL LCD2;键值显示 AJMP LOOP;转到LOOP处执行NEXT2: CJNE R0,#10H,NEXT3;判断是否是功能键NEXT3: JNC NEXT4;不是功能键,转至LOOP循环 ACALL BUSY ACALL ASC NEXT00: CJNE R0,#41
26、H,NEXT01 ;A键二极管闪烁 ACALL LCD2 CLR P3.5 MOV R7, #10H LOOP7: MOV R5, #0FFHDL1: MOV R6, #0FFHDL2: DJNZ R6, DL2 DJNZ R5, DL1 CPL P3.5 DJNZ R7, LOOP7 CLR P3.5 LJMP LOOPNEXT01: CJNE R0,#42H,NEXT02 ;B键二极管熄灭 SETB P3.5 ACALL LCD2 LJMP LOOPNEXT02: CJNE R0,#43H,NEXT03 ;C键蜂鸣器响 ACALL LCD2 CLR P3.4 MOV R7,#0FFHCA:
27、 MOV R6,#0FFHCA6: DJNZ R6,CA6 CPL P3.4 DJNZ R7,CA CLR P3.4 ACALL LCD2 LJMP LOOP NEXT03: CJNE R0,#44H,NEXT04 ;D键蜂鸣器静音 SETB P3.4 ACALL LCD2 LJMP LOOP NEXT04: CJNE R0,#45H,NEXT05 ;E键 ACALL LCD3 ACALL LCD5 LJMP LOOPNEXT05: CJNE R0,#46H,NEXT4 ;F键 MOV DPTR,#8000H MOV A,#01H MOVX DPTR,A LJMP MAIN NEXT4: AJ
28、MP LOOPKEY: MOV 50H,#0FFH;键扫描子程序,无键按下,50H为0FFH ACALL KS1;调用判断有无键按下子程序 CJNE A,#0F0H,LK1;有键按下时,转消抖延时 AJMP KRET;无键按下返回LK1: ACALL TIM;调延时子程序消抖 ACALL KS1;再查有无键按下,若有则需进行按键处理 CJNE A,#0F0H,LK2 AJMP KRET;无键按下,返回LK2: MOV R4,#00H;列号送入R4 JB P3.5,TIAOZHUAN MOV R2,#0CEH AJMP LK3TIAOZHUAN: MOV R2,#0FEH;第一次扫描输出信号送入
29、R2LK3: MOV A,R2;输入列扫描信号 MOV P3,A; MOV P1,#0FFH;P1口置0FFH MOV A,P1;读入行状态 JB ACC.4,L1;第一行无键按下,转查第二行 MOV A,#00H;第一行有键按下,该行首键号#00H送入 A AJMP LK;转求键号L1: JB ACC.5,L2;第二行无键按下,转查第三行 MOV A,#04H;第二行有键按下,该行首键号#04H送入 A AJMP LK;转求键号L2: JB ACC.6,L3; 第三行无键按下,转查第四行 MOV A,#08H; 第三行有键按下,该行首键号#08H送入 A AJMP LK;转求键号L3: JB
30、 ACC.7,KNEXT; 第四行无键按下,转查下一列 MOV A,#0CH; 第四行有键按下,该行首键号#0CH送入 ALK: ADD A,R4;求键号,键号=行首键号+列号 PUSH ACC;键号进栈保护LK4: ACALL KS1;等待键释放 CJNE A,#0F0H,LK4;未释放,等待 POP ACC;键释放,键号送入A MOV 50H,A; AJMP KRET;扫描结束,出口状态50H=键号KNEXT: INC R4;列号加1 MOV A,R2 JNB ACC.3,KRET;四列扫描完毕,返回主程序 RL A;形成下次扫描输出信号 MOV R2,A AJMP LK3KRET: RE
31、TASC: MOV DPTR,#ASCTAB;键值转换为码子程序 MOV A,50H MOVC A,A+DPTR MOV 50H,A RETASCTAB: DB 30H,31H,32H,33H,34H,35H DB 36H,37H,38H,39H,41H,42H DB 43H,44H,45H,46HKS1: CLR P3.0;P3.0P3.3列线输出0 CLR P3.1 CLR P3.2 CLR P3.3 MOV P1,#0FFH MOV A,P1;输入P1口状态 ANL A,#0F0H;屏蔽低四位 RET;出口状态,累加器不等于0F时,有键按下TIM: MOV R7,#18H;延时子程序TM
32、: MOV R6,#0FFHTM6: DJNZ R6,TM6 DJNZ R7,TM RETDEL: MOV R7,#01HDE: MOV R6,#01HDE6: DJNZ R6,DE6 DJNZ R7,DE RET ;LCD初始化子程序LCDINI: MOV DPTR,#8000H;选择指令寄存器地址 MOV A,#3CH;方式设置控制字 MOVX DPTR,A;两行显示,八位数据传送 ACALL BUSY;忙状态检查 MOV DPTR,#8000H MOV A,#0CH;清屏 MOVX DPTR,A ACALL BUSY RETLCD1:MOV DPTR,#8000H;显示自定义字符“欢迎!
33、”MOV A,#40H;设置CGRAM地址,显示“欢迎!”MOVX DPTR,AACALL BUSYMOV R1,#00HAAA:MOV DPTR,#TAB;查表,将“欢迎!”字符依次送入MOV A,R1MOVC A,A+DPTRMOV DPTR,#8100HMOVX DPTR,AACALL BUSYINC R1CJNE R1,#40H,AAAMOV DPTR,#8000HMOV A,#80H;设置显示地址控制字MOVX DPTR,A;第一行首地址80H ACALL BUSY MOV R5,#08H MOV A,#00H; “欢”字符的地址LCD11: MOV DPTR,#8100H MOVX
34、 DPTR,A INC A ACALL BUSY ACALL DEL DJNZ R5,LCD11 RETLCD2:MOV DPTR,#8000H ;指令操作地址MOV A,#0C8H;第二行首址C8HMOVX DPTR,AACALL BUSYMOV DPTR,#8109HMOV A,50H;输入50中的键号MOVX DPTR,AACALL BUSYRETTAB: DB04H,07H,0FH,1FH,1AH,0AH,12H,05H ;“欢迎!” DB14H,0BH,1BH,1FH,1AH,12H,12H,1FHDB0AH,17H,12H,17H,17H,16H,12H,15HDB1FH,15H,
35、1FH,15H,1FH,15H,17H,15HDB04H,04H,1FH,04H,0EH,1FH,15H,04HDB1FH,0EH,10H,0EH,12H,1FH,04H,15HDB01H,02H,06H,01H,02H,07H,02H,04HDB04H,1FH,04H,0AH,1FH,0AH,0AH,1BHLCD3:MOV DPTR,#8000H ;第一行显示机电1112MOV A,#40HMOVX DPTR,AACALL BUSYMOV R1,#00HAAAA:MOV DPTR,#TAABMOV A,R1MOVC A,A+DPTRMOV DPTR,#8100HMOVX DPTR,AACAL
36、L BUSYINC R1CJNE R1,#40H,AAAAMOV DPTR,#8000HMOV A,#80HMOVX DPTR,AACALL BUSY MOV R5,#08HMOV A,#00HLCD33:MOV DPTR,#8100H INC AMOVX DPTR,AACALL BUSY ACALL DELDJNZ R5,LCD33RET TAAB: DB 00H,0EH,11H,01H,02H,04H,08H,1FH DB 10H,10H,10H,10H,10H,10H,10H,1FH DB 0EH,11H,11H,11H,11H,11H,11H,0EH DB 11H,11H,11H,11
37、H,11H,11H,0AH,04H DB 1FH,10H,10H,1FH,10H,10H,10H,1FH DB 00H,04H,04H,04H,04H,04H,04H,04H DB 00H,04H,04H,04H,04H,04H,04H,04H DB 00H,04H,04H,04H,04H,04H,04H,04H LCD4:MOV DPTR,#8000H ;第二行显示welcomeMOV A,#0C0HMOVX DPTR,AACALL BUSYMOV R1,#00HAA: MOV DPTR,#TTBMOV A,R1MOVC A,A+DPTRMOV DPTR,#8100HMOVX DPTR,AACALL BUSYINC R1CJNE R1,#08H,AAMOV DPTR,#8000HMOV A,#80HMOVX DPTR,A RETTTB: DB 57H,65H,6CH,63H,6FH,6DH,65H,