1、 键盘输入与液晶显示系统的设计 设计要求及主要任务: 单片机运用系统中常运用LCD显示器与键盘进行人机间的输入、输出操作,本课题运用字符型LCD显示器SMC1602和4*4键盘实现按键输入和显示输出。 扩展一块液晶显示器和一个4*4键盘。扩展后的液晶显示系统能够实现以下功能:1、系统上电显示初始化界面,显示“欢迎使用本系统!”2、按数字键显示相应数字3、按功能键“A” :发光二极管发光; 4、按功能键“B” :发光二极管不发光;5、按功能键“C” :蜂鸣器报警; 6、按功能键“D” :蜂鸣器停止报警;7、按功能键“E” :显示组员姓名“Zhangwei zhangguqin dingguohu
2、a ”8、按功能键“F” : 显示“Thank you! JiDian 1213” 工作计划安排:(1) 认真阅读课本,查阅资料,学习课程设计中所用芯片及器件,尤其是对LCD液晶 显示器的学习和键盘扫描的复习 (2) 分析硬件和电路图 (3) 进行程序设计分工,根据课本9-2节程序编写课程设计程序 (4) 编写键盘扫描程序 (5) 编写功能按键分支程序并控制灯和蜂鸣器 (6) 编写显示数字子程序 (7) 编写功能键子程序 (8) 将程序进行组合,进行protues软件仿真 (9) 不断调试和改进源程序 (10)完善实验报告,总结经验收获摘要 键盘输入与液晶显示系统是单片机应用中最常见的一种形式
3、,几乎涉及到人们日常生产和生活中的各个方面。键盘是用于实现单片机应用系统中的数据和命令的输入,液晶显示器LCD能使人直观的获得需要了解的信息。实现人机的交流互动。因此,对液晶显示与键盘系统的研究与应用是很有必要的,对于我们今后的学习有着很强的推动作用。目录 一、设计要求7二、任务分工7三、主要元器件介绍43.1、AT89C5143.2、 1602LCD概述73.3、发光二极管103.4、蜂鸣器11四、 仿真电路设计与系统仿真图124.1、 Proteus仿真软件的相关介绍124.2、 复位电路仿真电路图:134.3、时钟电路仿真电路图144.4、1602LCD显示仿真电路图144.4、1602
4、LCD显示仿真电路图144.5、 键盘仿真电路图154.6、蜂鸣器和发光二极管电路仿真164.7、 相关功能仿真显示图16五、 程序流程图及相关程序175.1、程序构思:175.2、程序流程图:18六、 遇到问题及解决方案196.1、软件问题19七、体会与感想20八、参考文献21九、附件22一、设计要求 系统上电显示初始化界面,“欢迎使用本系统!” ; 按数字键显示相应数字; 按功能键实现相应功能;1、按功能键“A” ,发光二极管发光;2、按功能键“B” ,发光二极管不发光;3、按功能键“C” ,蜂鸣器报警;4、按功能键“D” ,蜂鸣器停止报警;5、按功能键“E” ,显示组员姓名(Zhangw
5、ei zhangguqin dingguohua);6、按功能键“F” ,显示“Thank you! JiDian 1213”。二、任务分工姓 名任务分工张 威程序编写与调试,Proteus仿真,撰写设计书张古琴Proteus仿真, E、F键盘功能键设计,制作ppt丁国华程序编写与调试,Proteus仿真电路优化三、主要元器件介绍3.1、AT89C51AT89C51简介:AT89C51是一个低功耗,高性能CMOS8位单片机,片内含4kB的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内
6、集成了通用8位中央处理器和ISP Flash存储单元,AT89S51在众多嵌入式控制应用系统中得到广泛应用。 AT89C51主要特征: 4k Bytes Flash片内程序存储器; 128 bytes的随机存取数据存储器(RAM) 32个外部双向输入/输出(I/O)口; 2个中断优先级、2层中断嵌套中断; 6个中断源; 2个16位可编程定时器/计数器; 2个全双工串行通信口; 看门狗(WDT)电路; 片内振荡器和时钟电路; 与MCS-51兼容; 全静态工作:0Hz-33MHz; 三级程序存储器保密锁定; 可编程串行通道; 低功耗的闲置和掉电模式。 管脚说明VCC:供电电压GND:接地图1 AT
7、89C51引脚图P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P1.0 T2(定时器/计数器T2
8、的外部计数输入) ,时钟输出;P1.1 T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制);P1.5 MOSI(在系统编程用);P1.6 MISO(在系统编程用);P1.7 SCK(在系统编程用)。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读
9、写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,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(外
10、部数据存储器写选通)P3.7 RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE
11、才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出
12、。3.2、 1602LCD概述1602LCD 分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别.16字2行的字符型液晶显示器显示模块可以与8位或4位微处理器直接接口,其内置式字符发生器ROM可提供160种符合工业标准的字符,包括全部英文大小写字母,阿拉伯数字,以及32个特殊字符或符号,其 内置的RAM可以根据用户需要,由用户自行设计字符或符号,其指令系统为用户提供了方便的操作指令,点阵字符型液晶显示模块采用了+5V单电源供电,功耗低。 1602LCD 主要技术参数:显示容量:162 个字符芯片工作电压:4.55.5V工作电流:2.0m
13、A(5.0V)模块最佳工作电压:5.0V字符尺寸:2.954.35(WH)mm 引脚功能说明:1602LCD 采用标准的14 脚(无背光)或16 脚(带背光)接口,引脚接口说明如下表。引线号符号电平功能1VSS0VGND2VDD+5V电源电压+5V3V005V液晶驱动电压4RSH/L寄存器选择:1、数据寄存器;0、读写寄存器5R/WH/L读写操作选择:1、读;0、写6EH,HL使能信号:ENABLE714DB0DB7H/L数据总线第1 脚:VSS 为地电源。第2 脚:VDD 接5V 正电源。第3 脚:VL 为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼
14、影”,使用时可以通过一个10K 的电位器调整对比度。第4 脚:RS 为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5 脚:R/W 为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS 和R/W共同为低电平时可以写入指令或者显示地址,当RS 为低电平R/W 为高电平时可以读忙信号,当RS 为高电平R/W 为低电平时可以写入数据。第6 脚:E 端为使能端,当E 端由高电平跳变成低电平时,液晶模块执行命令。第714 脚:D0D7 为8 位双向数据线。第15 脚:背光源正极。第16 脚:背光源负极。 1602LCD控制指令:1620液晶模块内部的控制器共有11条控制指令,如下
15、表所示。它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)指令1:清显示,指令码01H,光标复位到地址00H位置指令2:光标复位,光标返回到地址00H指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标指令6:功能
16、设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符指令7:字符发生器RAM地址设置指令8:DDRAM地址设置指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令10:写数据指令11:读数据1620液晶显示模块可以和单片机直接接口。液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符。程序在开始时对液晶
17、模块功能进行了初始化设置,约定了显示格式。3.3、发光二极管光是能量的一种形式,一种可以被原子释放出来。是由许多有能量和动力但没质量的微小粒子似的小捆组成的。这些粒子被叫做光子,是光的最基本单位。光子是因为电子移动才释放出来。在原子中,电子在原子的四周围以轨道形式移动。电子在不同的轨函数有着不同等的能量。通常来说,有着更大能量的电子以轨道移动远离了核子。当电子从一个更低的轨道跳到一个更高的轨道,能量水平就增高,反过来,当从更高轨函数跌落到更低的轨函数里时电子就会释放能量。能量是以光子形式释放出来的。更高能量下降释放更高能量的光子,它的特点在于它的高频率。自由电子从P型层通过二极管落入空的电子空
18、穴。这包含从传导带跌落到一个更低的轨函数,所以电子就是以光子形式释放能量。这在任何二极管里都会发生的,当二极管是由某种物质组成的时候,你只是可以看见光子。在标准硅二极管的原子,比如说,当电子跌落到相对短距离原子是以这样的方式排列。结果,由于电子频率这么低的情况下人的眼睛是无法看得到的。 可见光发光二极管,比如用在数字显示式时钟的,间隙的大小决定了光子的频率,换句话说就是决定了光的色彩。当所有二极管都发出光时,大多数都不是很有效的。在普通二极管里,半导体材料本身吸引大量的光能而结束。发光二极管是由一个塑性灯泡覆盖集中灯光在一个特定方向。发光二极管比传统的白炽灯有几个优点。第一个是发光二极管没有灯
19、丝会烧坏,所以寿命就更长。此外,发光二极管的小小塑性灯泡使得发光二极管更持久耐用。还可以更加容易适合现在的电子电路。传统白炽灯的发光过程包含了产生大量热量。这是完全是浪费能源。除非你把灯当做发热器用,因为绝大部分有效电流并不是直接产生可见光的。发光二极管所发出的热非常少,相对来说,越多电能直接发光就是越大程度上减少对电能的需求。3.4、蜂鸣器蜂鸣器是一种一体化结构的电子讯响器,广泛应用于计算机、打印机、报警器、定时器等电子产品中作发生器件;主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。本试验中应用电磁式,所以只介绍这一种。电磁式蜂鸣器由振荡器、电磁线圈、磁圈、振动膜片及外壳等组成。接通电源后,振
20、荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。电磁式蜂鸣器驱动原理:蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因此需要一定的电流才能驱动它,单片机IO引脚输出的电流较小,单片机输出的TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路。S51增强型单片机实验板通过一个三极管C8550来放大驱动蜂鸣器,原理图见下面图:驱动蜂鸣器原理图 蜂鸣器实物图如图所示,蜂鸣器的正极接到VCC(+5V)电源上面,蜂鸣器的负极接到三极发射管的发射极E,三极管的基级B经过限流电阻R2后由单片机的P3.4引脚控
21、制,当P3.4输出高电平时,三极管T1截止,没有电流流过线圈,蜂鸣器不发声;当P3.4输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。因此,我们可以通过程序控制P3.4引脚的电平来使蜂鸣器发出声音和关闭。程序中改变单片机P3.4引脚输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色,音调的声音。另外,改变P3.4输出电平的高低电平占空比,则可以控制蜂鸣器的声音大小,这些我们都可以通过编程实验来验证。四、 仿真电路设计与系统仿真图4.1、 Proteus仿真软件的相关介绍Proteus软件是英国Labcenter electronics公司出版的EDA工具软件(该软件中国总
22、代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、
23、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。4.2、 复位电路仿真电路图:复位是任何一种微型计算机都必须具备的工作方式。复位操作使单片机处于一种初始化的状态。MCS-51单片机的RST引脚上出现持续24个振荡周期的高电平信号时,单片机进入复位。通常有上电复位与人工按钮复位两种方式。本设计中采用上电复位方式。如图2所示。 图24.3、时钟电路仿真电路图通常单片机系统电路的实际有内部时钟和外部时钟两种形式,两种电路都向单片机提供最基本的振荡脉冲信号。本设计中的晶体振荡电路如图
24、3所示。 图34.4、1602LCD显示仿真电路图1602LCD 采用标准的14 脚(无背光)或16 脚(带背光)接口。本设计中采用14脚LCD。VSS和VDD为电源端和接地端,VEE用于调整液晶显示器对比度。D0D7为8位双向数据线。电路连接图如图4所示。 图44.5、 键盘仿真电路图 设计中采用行列式非编码键盘,由行线、列线和键盘开关矩阵3部分组成。在这种键盘中,每根行线和列线的交叉处都有一个按键,当某个键被按下时,与这个按键相连的行线和列线就会接通,否者行线和列线不接通。如图5所示。 图54.6、蜂鸣器和发光二极管电路仿真图如图6和图7 图7图64.7、 相关功能仿真显示图系统初始界面如
25、图8: 图8按数字键0显示数字0如图9: 图9按下功能键E显示内容如图10: 图10按下功能键F显示如图11: 图11 P2.7 口为高电平,为打开LCD的CELCD 的个端口地址为:8000H:写指令端口地址8100H:写数据端口地址 8200H: 读数据端口地址P3.5 为低电平灯亮,为高电平灯灭P3.4为低电平不响,送高电平响五、 程序流程图及相关程序5.1、程序思路:本程序以微机原理与接口技术教科书中的9.2点阵字符型LCD显示器与4*4键盘的应用为基础进行编写。首先,我们先读懂了书上的参考程序,掌握了LCD液晶显示器的功能及使用方法。在此基础上,对源程序进行改编,加工,填入了能满足实
26、验要求的子程序。通过调用这些子程序,最终使我们的程序实现我们要求的功能。其次我们对每个子程序进行了详细的分析和编写,对于4x4的键盘采用行列式扫描法,并在得到键值之后调用子程序将键值转化成ASCII码来显示在LCD显示屏上。针对不同的按键功能以及不同的显示要求编写相对的子程序包括显示初始化子程序,按键显示子程序,功能键显示子程序以及蜂鸣器发声的子程序,这一系列的程序都由主程序来安排执行。在确定方案之后,我们对每个程序进行了单独的调试,并在综合起来之后进行了系统的仿真,解决意料之外的问题比如蜂鸣器的不能持续发声,LCD的显示问题等等,最终实现了基本的操作功能。在功能键显示二极管子程序以及蜂鸣器子
27、程序都加入了循环,使得二极管和蜂鸣器能持续工作。5.2、程序流程图:是否为E键显示“Jidian1213”,“THANK YOU!”是否为F键显示小组成员姓名“Zhangwei zhangguqinDingguohua”结束YY是否为C键蜂鸣器响是否为D键蜂鸣器静音YY是否为B键二极管灭Y是否为A键二极管亮是否为数字键输出键值是否为功能键NYY开始调用LCD初始化子程序本系统显示欢迎使用调用键扫描子程序判断是否有键按下YNYNNNNN六、遇到问题及解决方案6.1、软件问题1. 初步仿真时所有按键都不能起作用 按照原理图连好之后,液晶显示出初始化界面,但按下任何按键之后都没有任何反应,开始我们认
28、为仿真电路图自己没有连对,我们又重新练了一遍电路,但还是出现连原来的问题。我们在一起仔细研究之后发现,原来是按键的电位接反了,改过之后,一切都正常了2、Proteus仿真时使用5个管脚的排阻功能不能实现解决方案:网上查阅资料后,选择8个管脚的排阻,解决了上述问题。3.正确连接后,上电后发现LCD不亮,不显示任何数字或是字母。解决方案:组内讨论后,发现LCD的VSS端口没有和地线连接在一起,改变连线之后正常。4. C键不能让蜂鸣器长响 在软件仿真中当按下C键后P3.4口始终是低电平,然而蜂鸣器却不能常响,只会响一声。经过查资料之后我们发现只有出现脉冲才能让蜂鸣器正常工作,之后,我们通过修改程序,
29、加入循环语句,通过不断按改变蜂鸣器一端的电位,加入键盘扫描程序,用D键关闭蜂鸣器,终于实现蜂鸣器可以长时间的响,并且按D键时蜂鸣器会停止工作。七、体会与感想 通过了本次的课程设计,我们成功的将课堂上学习的知识通过软件仿真出来,通过运用课堂上学习到的分析元器件的方法,我们学会了LCD的使用。我们也学会如何使用proteus和keil联合进行单片机系统的程序调试及仿真开发。这些实践大大地加深了我们对单片机使用过程的理解,也让我们对单片机程序的编程更加熟悉。虽然在这个过程中也遇到了一些无法预料到的的困难,但是经过学习和讨论,我们都将其一一克服。总之,经过这次的研究性教学,我们不仅加深了Proteus
30、仿真软件的了解和使用,还学到了许多课本上没有涉及知识,练习了电路原理图的设计和仿真运行,同时对本学期学习的单片机课程进行了一次全面的复习和巩固,收益很大。通过本次课程设计,我们能够更深层次地了解和掌握单片机的基本知识和基本的编写程序,也更加深入地了解单片机与微机原理接口这门课程,掌握汇编语言的设计和调试方法,熟悉设计的流程及程序的组合、调用和系统的调试。了解了单片机的应用对于我们以后的研究与学习会有很大帮助! 八、参考文献1.赵嘉蔚,张家栋,霍凯,肖燕彩.单片机原理与接口技术.北京:清华大学出版社, 2010 2.朱大奇,李念强.单片机原理、接口及应用.南京:南京大学出版社,20033.胡汉才
31、.单片机原理及其接口技术(第二版)。北京:清华大学出版社,20044.张家田.液晶显示器件应用技术.北京:机械工业出版社, 20045.刘法治.常用电子元器件及典型芯片的应用技术.北京:机械工业出版社,2007九、附件程序清单: ORG 0000H AJMP MAIN ORG 0030HMAIN: MOV SP, #60H CLR P3.4 ACALL LCDINI ;初始设置 ACALL LCDY ;显示初始化界面LOOP: ACALL KEY ;键盘扫描程序 MOV R0, #50H CJNE R0,#0FFH,NEXT0 AJMP LOOPNEXT0: CJNE R0,#0AH,NEXT
32、1 ;判断是否是数字键NEXT1:JNC NEXT2 MOV DPTR,#8000H MOV A,#01H MOVX DPTR,A ACALL BUSY ACALL ASC ;键值转换为ASII码 ACALL LCD2 ;键值显示 AJMP LOOPNEXT2:CJNE R0,#10H,NEXT3NEXT3:JNC NEXT9 CJNE R0,#0AH,NEXT4 CLR P3.5 ;亮灯 AJMP LOOPNEXT4:CJNE R0,#0BH,NEXT5 SETB P3.5 ;灭灯 AJMP LOOPNEXT5:CJNE R0,#0CH,NEXT6NEXT55:SETB P3.4 ;喇叭响
33、ACALL DELAYYY CLR P3.4 ACALL DELAYYY ACALL KEY CJNE R0,#0FH ,NEXT55 AJMP LOOPNEXT6:CJNE R0,#0DH,NEXT7 CLR P3.4 ;喇叭关 AJMP LOOPNEXT7: CJNE R0,#0EH,NEXT8 ACALL LCD3 ;E键功能,显示组员名字 ACALLDELAY ;显示完毕,延时 ACALL LCD4 ;清屏 AJMPLOOPNEXT8:CJNE R0,#0FH,NEXT9 ACALLLCD5 ;F键功能,结束语NEXT9:AJMPLOOPLCDINI:MOVDPTR,#8000H ;初
34、始设置 MOVA,#3CH MOVXDPTR,A ACALLBUSY MOVDPTR,#8000H MOVA,#01H MOVXDPTR,A ACALLBUSY MOVDPTR,#8000H MOVA,#0CH MOVXDPTR,A ACALLBUSY RETLCDY: MOVDPTR,#8000H ;显示初始化界面 MOVA,#40H (初始化地址) MOVXDPTR,A ACALLBUSY MOVR1,#00HAAA:MOVDPTR,#TAB MOVA,R1 MOVCA,A+DPTR MOVDPTR,#8100H MOVXDPTR,A ACALLBUSY INC R1 CJNE R1, #
35、40H,AAA MOVDPTR,#8000H MOVA,#84H MOVXDPTR,A ACALLBUSY MOVR0,#00HBBB: MOVDPTR,#8100H MOVA,R0 MOVXDPTR,A ACALLBUSY INC R0 CJNE R0,#08H,BBB MOVDPTR,#8100H MOVA,#21H MOVXDPTR,A ACALLBUSY RET KEY: MOV50H,#0FFH ;键盘扫描程序 ACALLKS1 CJNE A,#0F0H,LK1 AJMPKRETLK1: ACALLTIM ACALLKS1 CJNE A,#0F0H,LK2 AJMPKRETLK2:
36、MOVR4,#00H MOVR2,#0EEH MOV70H,P3LK3: MOVA,R2 ANL A,#0FH MOVR2,A MOVA,70H ANL A,#0F0H ADD A,R2 MOVP3,A MOVP1,#0FFH MOVA,P1 JB ACC.4,L1 MOVA,#00H AJMPLKL1: JB ACC.5,L2 MOVA,#04H AJMPLKL2: JB ACC.6,L3 MOVA,#08H AJMPLKL3: JB ACC.7,KNEXT MOVA,#0CHLK: ADD A,R4 PUSHACCLK4: ACALLKS1 CJNE A,#0F0H,LK4 POP ACC
37、 MOV50H,A AJMPKRETKNEXT:INC R4 MOV A,R2 JNB ACC.3,KRET RL A MOVR2,A AJMPLK3KRET:RETKS1: CLR P3.0 ;判断有无键按下子程序 CLR P3.1 CLR P3.2 CLR P3.3 MOVP1,#0FFH MOVA,P1 ANL A,#0F0H RETTIM: MOVR7,#18HTM: MOVR6,#0FFHTM6:DJNZR6,TM6 DJNZR7,TM RETASC: MOVDPTR,#ASCTAB ;键值转换为ASII码 MOVA,50H MOVCA,A+DPTR MOV50H,A RETASCT
38、AB:DB 30H,31H,32H,33H,34H,35H DB 36H,37H,38H,39H,41H,42HLCD2:MOVDPTR,#8000H ;键值显示 MOVA,#86H MOVXDPTR,A ACALLBUSY MOVDPTR,#8100H MOVA,50H MOVXDPTR,A ACALLBUSY RETLCD3: MOV R3,#3EH ;E键功能,显示组员名字 MOV 55H,#00HLCLOOP2:MOV 54H,#00H MOV R5,#0CH MOV DPTR,#8000H MOV A,#01H MOVX DPTR,A ACALL BUSY MOV DPTR,#8000H MOV A,#82H MOVX DPTR,A ACALL BUSYLCLOOP1:MOV DPTR,#TAB3 MOV A,55H ADD A,54H MOVC A,A+DPTR MOV DPTR,#8100H MOVX DPTR,A ACALL BUSY INC 54H DJNZ R5,LCLOOP1 INC 55H ACALL DELAY MOV A,53H JNZ LCD3END DJNZ R3,LCLOOP2LCD3END:RETLCD4: MOV DPTR,#8000H ;显示组员名字后,清屏 MOV A,#01H
版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。
Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1
陕公网安备 61072602000132号 违法和不良信息举报:0916-4228922