




已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
引言随自20世纪80年代后期开始,随着LCD12864液晶显示屏制造技术的不断完善,在国外得到了广泛的应用。在我国改革开放之后,特别是进入90年代国民经济的高速增长,对公众场合发布信息的需求日益强烈。而LCD12864液晶显示屏作为信息传播的一种重要手段,已经成为城市信息现代化建设的标志,LCD12864显示屏随着社会经济的不断进步,以及LCD显示屏制造技术的完善,人们对LCD12864显示屏的认识将会越来越深入,其应用领域将会越来越广,LCD12864显示屏经多年的开发、研制、生产,其技术目前已经成熟。 现在各种广告牌不再是白底黑字了,也不再是单一的非电产品,而是用上了丰富多彩的LED电子产品,为城市的增添了一道靓丽的风景。而且它采用低电压扫描驱动,具有耗电少、使用寿命长、成本低、发光效率高、故障少、视角大、可视距离远、可靠耐用、组态灵活、安全、响应时间短、绿色环保、控制灵活、色彩丰富以及对室内外环境适应能力强等特点。近年来LCD12864显示屏市场得到了迅猛的发展,已经广泛应用到银行、邮电、税务、机场、车站、证券市场及其它交易市场、医院、电力、海关、体育场等需要进行多种公告、宣传的场合。 本文介绍一种在ARM嵌入式平台上实现的LCD 多级菜单的方法,由于C 语言的结构性和模块化,采用C 语言编写的程序容易阅读和维护,还有很好的可移植性,该方法已成功应用在煤矿安全监测设备上。 因此,学习LCD12864显示屏系统原理与工程技术很有必要。通过设计一个可显示汉字、英文、图形、动画的128*64液晶显示电路来学习和熟悉LCD的使用。1 系统硬件设计总体框图本文设计一个在ARM嵌入式平台上实现LCD12864嵌套多级菜单的电路,采用飞利浦公司的LPC2132为主控芯片,显示模块采用蓝屏、带字库的12864液晶,采用键盘扫描作为输入控制,本设计框图如图1.1所示。图1.1 总电路框图2 各部分电路分析2.1 液晶显示部分2.1.1 LED12864简介带中文字库的128*64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块。其显示分辨率为12864, 内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示84行1616点阵的汉字。也可完成图形显示。低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块,电路如图2.1所示。图2.1 液晶电路2.1.2 LED12864简介(1)三种字型的选择显示半宽字型:将8位元资料写入DDRAM中,范围为02H-7FH的编码。显示CGRAMA字型:将16位元资料写入DDRAM总共有0000H,0002H,0004H,0006H四种编码。显示中文字型:将16位元资料写入DDRAMK中,范围为A1A1H-F7FEH的编码。 (2)绘图显示绘图显示RAM提供64*32个位元组的记忆空间,最多可以控制256*64点的二维绘图缓冲空间,在更改绘图RAM时,先连续写入水平与垂直的坐标值,再写入两个8位元的资料到绘图RAM,而地址计数器(AC)会自动加一:在写入绘图RAM的期间,绘图显示必须关闭,整个写入绘图RAM的步骤如下:关闭绘图显示功能,先垂直的坐标(Y)写入绘图RAM地址,将D15-D8写入到RAM中,将D7-D0写入到RAM中。(3)指令说明IR为指令寄存器(Instruction Register,简称IR),负责存储MCU要写给LCD的指令码,当RS及RW引脚信号为0且Enable引脚信号由1变为0时,D0D7引脚上的数据便会存入到IR寄存器中。DR为数据寄存器(Data Register,简称DR),它们负责存储微机要写到CGRAM或DDRAM的数据,或者存储MCU要从CGRAM或DDRAM读出的数据。因此,可将DR视为一个数据缓冲区,当RS及RW引脚信号为1且Enable引脚信号由1变为0时,读取数据;当RS引脚信号为1,RW引脚信号为0且Enable引脚信号由1变为0时,存入数据。BF为忙碌信号(Busy Flag,简称BF),当BF为1时,不接收微机送来的数据或指令;当BR为0时,接收外部数据或指令,所以,在写数据或指令到LCD之前,必须查看BF是否为0。AC为地址计数器(Address Counter,简称AC),负责计数写入读出CGRAM或DDRAM的数据地址,AC依照MCU对LCD的设置值而自动修改它本身的内容。游标或显示移位控制000001S/CR/LX设定游标的移动与显示的移位控制位;这个指令不改变DDRAM 的内容,功能:设定00001DLXREXXDL=0/1:4/8位数据RE=1: 扩充指令操作RE=0:基本指令操作。2.1.3 汉字显示原理带中文字库的12864-3每屏可显示4行8列共32个1616点阵的汉字,每个显示RAM可显示1个中文字符或2个168点阵全高ASCII码字符,即每屏最多可实现32个中文字符或64个ASCII码字符的显示。带中文字库的12864-3内部提供1282字节的字符显示RAM缓冲区(DDRAM)。字符显示是通过将字符显示编码写入该字符显示RAM实现的。根据写入内容的不同,可分别在液晶屏上显示CGROM(中文字库)、HCGROM(ASCII码字库)及CGRAM(自定义字形)的内容。三种不同字符/字型的选择编码范围为:00000006H(其代码分别是0000、0002、0004、0006共4个)显示自定义字型,02H7FH显示半宽ASCII码字符,A1A0HF7FFH显示8192种GB2312中文字库字形。字符显示RAM在液晶模块中的地址80H9FH。字符显示的RAM的地址与32个字符显示区域有着一一对应的关系,其对应关系如下图2.2所示图2.2 显示坐标2.1.4 图形显示原理先设垂直地址再设水平地址(连续写入两个字节的资料来完成垂直与水平的坐标地址),垂直地址范围 AC5、AC4、AC3、AC2、AC1、AC0,水平地址范围 AC3、AC2、AC1、AC0绘图RAM的地址计数器(AC)只会对水平地址(X 轴)自动加一,当水平地址=0FH时会重新设为00H但并不会对垂直地址做进位自动加一,故当连续写入多笔资料时,程序需自行判断垂直地址是否需重新设定,GDRAM的坐标地址与资料排列顺序如图2.3所示。图2.3 显示结构2.2 ARM7TDMI-S核简介 ARM7TDMI-S核是通用的32位微处理器内核,采用冯诺依曼结构,它具有高性能和低功耗的特性。ARM结构是基于精简指令集计算机(RISC,Reduced Instruction SetCom_puter)原理而设计的,指令集和相关的译码机制比复杂指令集计算机要简单得多,由此可见使用一个小的、廉价的处理器核就非常容易实现很高的指令吞吐量和实时的中断响应。ARM7TDMI-S使用了流水线技术,处理和存储系统的所有部分都可连续工作。通常在执行一条指令的同时就对下一条指令进行译码,并将第三条指令从存储器中取出,如图 2.4所示。图2.3 ARM单周期指令3级流水线 ARM7TDMI-S 处理器使用了一个被称为Thumb 的独特结构化策略,它非常适用于那些对存储器有限制或者需要较高代码密度的大批量产品的应用。ARM7TDMI-S 处理器使用了一个被称为Thumb 的独特结构化策略,它非常适用于那些对存储器有限制或者需要较高代码密度的大批量产品的应用。基于 Thumb 的一个关键的概念就是“超精简指令集”。基本上,ARM7TDMI-S 处理器具有两个指令集: 1、标准32 位ARM 指令集。 2、16 位Thumb 指令集。 Thumb 指令集的16 位指令长度使其可以达到标准ARM 代码两倍的密度,却仍然保持ARM 的大多数性能上的优势,这些优势是使用16 位寄存器的16 位处理器所不具备的。因为Thumb 代码和ARM 代码一样,在相同的32 位寄存器上进行操作。Thumb 代码仅为ARM 代码规模的65%,但其性能却相当于连接到16 位存储器系统的相同ARM 处理器性能的160%。2.2.1 LPC2132 特性 1、小型LQFP64 封装的16/32 位ARM7TDMI-S 微控制器。 2、8/16/16/32/32KB 片内静态RAM。 3、32/64/128/256/512KB 片内Flash 程序存储器。128 位宽度接口/加速器实现高达60MHz 的操作频率。 4、片内Boot 装载程序实现在系统编程(ISP)和在应用中编程(IAP)。Flash 编程时间:1ms 可编程256 字节,扇区擦除或整片擦除只需400ms。 5、EmbeddedICE-RT 和嵌入式跟踪接口可实时调试(利用片内RealMonitor 软件)和高速跟踪执行代码。 6、1 个(LPC2131/2132)或2 个(LPC2134/2136/2138)8 路10 位A/D 转换器共包含8/16 个模拟输入,每个通道的转换时间低至2.44us。 7、1 个D/A 转换器可产生不同的模拟输出(仅适用于LPC2132/2134/2136/2138)。 8、2 个32 位定时器(带4 路捕获和4 路比较通道)、PWM 单元(6 路输出)和看门狗。 9、实时时钟具有独立的电源和时钟源,在节电模式下极大地降低了功耗。 10、多个串行接口,包括2 个16C550 工业标准UART、2 个高速I2C 接口(400 Kbit/s)、SPI 和具有缓冲作用和数据长度可变功能的SSP。 11、向量中断控制器,可配置优先级和向量地址。 12、多达47 个可承受5V 的通用I/O 口(LQFP64 封装)。 13、多达9个边沿或电平触发的外部中断引脚。 14、通过片内PLL 可实现最大为60MHz 的 CPU 操作频率。片内晶振频率范围:130 MHz。 15、2个低功耗模式:空闲和掉电。 16、可通过个别使能/禁止外部功能和降低外部时钟来优化功耗。 17、通过外部中断将处理器从掉电模式中唤醒。 18、单个电源供电,含有上电复位(POR)和掉电检测(BOD)电路:CPU 操作电压范围:3.03.6 V (3.3 V10%)。2.2.2 LPC2132 原理图 如图2.4所示。 图2.4 LPC2132原理图2.2.3 LPC2132 结构概述 LPC2132 包含一个支持仿真的ARM7TDMI-S CPU、与片内存储器控制器接口的ARM7 局部总线、与中断控制器接口的AMBA 高性能总线(AHB)和连接片内外设功能的VLSI 外设总线(VPB,ARMAMBA 总线的兼容超集)。LPC2132ARM7TDMI-S 配置为小端格式(little-endian)字节顺序。AHB 外设分配了2M 字节的地址范围,它位于4G 字节ARM 存储器空间的最顶端。每个AHB 外设都分配了16k 字节的地址空间。LPC2132的外设功能(中断控制器除外)都连接到VPB 总线。AHB到VPB 的桥将VPB 总线与AHB 总线相连。VPB 外设也分配了2M 字节的地址范围,从3.5GB 地址点开始。每个VPB 外设在VPB 地址空间内都分配了16k 字节地址空间。片内外设与器件管脚的连接由管脚连接模块控制。该模块必须由软件进行控制以符合外设功能与管脚在特定应用中的需求。2.2.4 LPC2132 FLASh存储系统LPC2132是64kB的FLASH 存储器系统。该存储器可用作代码和数据的存储。对FLASH 存储器的编程可通过几种方法来实现:通过内置的串行JTAG 接口,通过在系统编程(ISP)和UART0,或通过在应用编程(IAP)。使用在应用编程的应用程序也可以在应用程序运行时对FLAH 进行擦除和/或编程,这样就为数据存储和现场固件的升级都带来了极大的灵活性。如果LPC2132使用了片内引导装载程序(bootloader),64KB 的Flash 存储器就可用来存放用户代码。LPC2132 的Flash 存储器至少可擦除/编程10,000 次,保存数据的时间长达10 年。2.2.5 LPC2132 片内静态SRAM 片内静态RAM(SRAM)可用作代码和/或数据的存储,支持8 位、16 位和32 位的访问。LPC2131/2132/2138 含有8/16/32kB 的静态RAM。LPC2131/2132/2138 SRAM 是一个字节寻址的存储器。对存储器进行字和半字访问时将忽略地址对准,访问被寻址的自然对准值(因此,对存储器进行字访问时将忽略地址位0 和1,半字访问时将忽略地址位0)。因此,有效的读写操作要求半字数据访问的地址线0 为0(地址以0、2、4、6、8、A、C 和E 结尾),字数据访问的地址线0 和1 都为0(地址以0、4、8 和C 结尾)。该原则同样用于片外和片内存储器。SRAM 控制器包含一个回写缓冲区,它用于防止CPU 在连续的写操作时停止运行。回写缓冲区总是保存着软件发送到SRAM 的最后一个字节。该数据只有在软件请求下一次写操作时才写入SRAM(数据只有在软件执行另外一次写操作时被写入SRAM)。如果发生芯片复位,实际的SRAM 内容将不会反映最近一次的写请求(即:在一次“热”芯片复位后,SRAM 不会反映最后一次写入的内容)。任何在复位后检查SRAM 内容的程序都必须注意这一点。通过对一个单元执行两次相同的写操作可保证复位后数据的写入。或者,也可通过在进入空闲或掉电模式前执行虚写(dummy write)操作来保证最后的数据在复位后被真正写入到SRAM。传统氏度测量范围,但热敏电阻可靠性差,测量温度准确率低,对于1摄氏度的信号是不适用的,还得经过专门的接口电路转换成数字信号才能由微处理器进行处理。目前常用的微机与外设之间进行的数据通信的串行总线主要有I2C总线, SPI总线等。其中I2C总线以同步串行2线方式进行通信(一条时钟线,一条数据线),SPI 总线则以同步串行 3 线方式进行通信(一条时钟线,一条数据输入线,一条数据输出线)。这些总线至少需要两条或两条以上的信号线。而单总线(1-wire bus),采用单根信号线,既可传输数据,而且数据传输是双向的,CPU只需一根端口线就能与诸多单总线器件通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。 因而,这种单总线技术具有线路简单,硬件开销少,成本低廉,软件设计简单,便于总线扩展和维护。同时,基于单总线技术能较好地解决传统识别器普遍存在的携带不便,易损坏,易受腐馈,易受电磁干扰等不足,因此,单总线具有广阔的应用前景,是值得关注的一个发展领域。单总线即只有一根数据线,系统中的数据交换,控制都由这根线完成。主机或从机通过一个漏极开路或三态端口连至数据线,以允许设备在不发送数据时能够释放总线,而让其它设备使用总线。单总线通常要求外接一个约为 4.7K 的上拉电阻,这样,当总线闲置时其状态为高电平。2.2.6 LPC2132 功能框图如图2.5所示。 图2.5 LPC2132功能图2.3 键盘部分电路该电路用了4*4键盘,有利于对系统很好的控制,如图2.6所示。 图2.6 键盘电路3 系统软件设计3.1 程序思路 本电路编程的最大亮点是运用了LCD多级菜单的编写,有了这种编程方法,在涉及到多级菜单显得更加清晰简单,根据需求,首先建立一个结构,并定义一个结构变量KbdTabStruct。结构变量就是把多个不同类型的变量结合在一起形成的一个组合变量,构成一个结构的各个变量称为结构元素。该结构中共有6个结构元素,分别是5个字符型和1个指针变量,5个字符型变量分别为当前及各个按键的索引号,也就是操作的状态号,最后1个指针变量指向需执行函数。这样就可以做一个结构数组,在结构组里为每一个菜单编制一个单独的函数,并根据菜单的嵌套顺序排好本菜单项的索引号,以及本级菜单项的上、下卷动的索引号和上、下级菜单的索引号。3.2 LPC2132主程序流程图LPC2132的主程序负责协调各个子程序的工作,把各部分的功能串接起来,程序流程如图2.7所示。 图3.1 主程序流程图3.3 键盘扫描程序流程图该程序的功能是扫描有无按键按下并判断出按下的按键的编号(键值)。扫描过程分两部分进行,首先是判断有无按键按下:将全部行线置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,若所有列线均为高电平,则键盘中无键按下。在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即置某根行线为低电平时,其它线为高电平,然后逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键,这样就可以计算得出按键的键值了。程序流程如图3.2所示。图3.2 键盘扫描流程图根据题目的控制要求,对按键的功能配置如表3.1所示。表3.1 按键分配12344567789A向上向下返回确定3.4 菜单和键值处理程序流程图 为了使操作更加简单易懂,本设计采用了多级菜单的方式来引导操作者进行操作,使得人机交换更具人性化。菜单的显示根据键值进行相应的切换,显示屏和按键相互合作,实现了数值输入、显示更新、操作提示等功能。程序流程如图3.3所示。图3.3 菜单程序流程图3.5 LCD12864程序流程图 12864显示部分的子程序流程图、读操作时序、写操作时序分别如图图3.3、图3.4、图3.5所示。图3.4 LCD12864流程图图3.5 读操作时序图3.5 写操作时序4 实训心得体会通过做这次ARM嵌入式实训,我深深的体会到,专心投入去完成一件事情是多么让人激动不已的,当某个环节的问题被你解决后,那种成就感能带给自己更大的信心和激发你对学习的热情,可能这是大学最后一个课程设计的原因,我把大量的精力和激情都投入到这次实训中,所以在整个学习过程中,我解决了一些平时没有碰到的问题,这更让我对技术这个行业产生强烈的兴趣,下面是我这两周的实训心得。这次实训我做的是在ARM嵌入式平台上实现LCD12864多级菜单的嵌套,看到这个题目并不陌生,因为之前我用单片机实现过,感觉非常的亲切,所以我对这条题目很感兴趣,我想验证一下它在ARM嵌入式平台上实现的是不是和51单片机一样的,我想深入的研究在嵌入式的用法,因为LCD12864实现的菜单方法在以后的领域中会很普遍的用到,所以我认为这条题目是很有价值的,对我以后搞研发很有帮助。刚开始的时候,我认为在LCD12864上显示很容易的,所以就不去理会显示这部分的问题,就用一两三天的时间去查找资料,当一个同学叫我在ARM平台上点亮12864的时候,我顿时才发现,原来直接把51的驱动直接搬过来还是不能让12864跑起来的,还要考虑它的时序问题,因为ARM运行速度比51的快很多,在ARM平台上点亮12864这个问题纠结我一两天,也让我思考了许多问题,在调程序的时候,只要你其中有某个环节出现问题,是永远也不会成功的,只能把关键的问题找出来才是真理,跟同学讨论的时候,说是判忙时那里出问题,后来我一直在那个问题上死循环,但是最后还是不能解决,跟老师讨论以后才知道,其实不用判忙时也可以实现的,只要在写数据和写指令的时候稍微延时过去就可以,当12864数据位最高位为高电平的时候,其他位为低电平,这样才能传数据,于是我用万用表测量才发现,数据端每一位都是高电平的,这是怎么回事呢,经过一番检查和研究才发现,原来我在写数据和写指令的时候,没有将数据清零再置1的操作,因为我以前在写51程序的时候,他只是把数据送到IO口就行了的,根本不用考虑清零置1的问题,这就是ARM跟51的区别,下载到板上测试的时候,终于成功了,这时让我领悟到,当你在一个问题上纠结的时候,总会存在某个小小的问题,只要冲破这个小小的门槛,成功就属于你。12864跑起来以后,后面的问题就相对简单了。接着我开始做我的第二个计划,在液晶上实现六个主菜单,每个住菜单里面又有四个子菜单,而且能任意选择,上下移动,我用的是以前单片机C语言下LCD多级菜单的实现方法,这种方法很强大,他可以实现N级菜单,能满足人们的许多要求,这种方法是通过定义一个结构体实现的,我在结构体里定义6个结构元素,其中一个指针变量和五个字符,并根据菜单的嵌套排好他们的顺序,他们分别是索引号、上移、下移、返回、确定。我们只要用到其中的四个按键就能实现所有的菜单操作,这种方法很简便,如果你还想实现更多的操作,可以做成一个键盘,其他当做数字键,只要按照自己的思维去编写程序就可以实现你所想要的。首先,我先定义六级菜单,看能不能通过按键上移下移,当下载到板上测试时,问题出现了,当我按下移的时候,他直接就跳到第六级菜单,再按上移的时候又直接跳到第一级菜单,仔细想了想,这到底是怎么回事呢,我这种方法以前在51单片机里是可行的啊,我的思路是按下移,就指向下一级,想法都一样的,为什么在ARM里就不行呢,于是我一级级开始调试,调试两级的时候没有什么问题的,但是到第三级的时候,就是一和三级直接跳转,我在仔细看了下程序,我在第二级的下移序号让它停止,然后再通过另外一个操作键移动到第三级,顿时才恍然大悟,原来ARM的速度很快,每一个序号的值只要是连续的,他会指向最后一个,这也是跟51的区别,所以我只能通过隔开的方法才能将其上下移动。问题解决以后,我继续按照我的思路去做下一步。我在每级主菜单里再嵌套入四级子菜单,在里面每级子菜单里放入我所想要的操作。经过我的一番努力,我终于把整个实训的内容都解决完了。在这次实训中,让我收获最大的是,我能在做这个东西的过程中去解决问题,而且遇到我以前从没有遇到过的问题,这些问题我全部都能独立解决,感觉自己在学习电子知识方面更加有成就感了,经过自己亲自动手,去发现问题,然后解决问题,成功的那种感觉是多么有成就感的,让我更加相信,只要坚持、认真的去做每一件事情,最终的收获是无穷的。谢 辞大学的实训即将结束,在实训的整个过程中很多同学和老师都在耐心的帮助我,衷心感谢 的细心指导和同学们的热情帮助,在我实训完成过程中,老师同学提供了许多宝贵意见,让我学到了许多知识,开阔了眼界,增强了我的动手和动脑能力。同时,在设计本系统的时候,我也和同学们之间的相互探讨、取长补短,使我受益匪浅,在此,我对这些同学表示衷心的感谢,也感谢学校给了我这次锻炼的机会。最后我还要感谢学院所有领导和老师的教诲,感谢我周围的同学们对我的帮助和支持,感谢我的家人、朋友们对我的关心,路漫漫其修远兮,吾将上下而求索。我愿意在未来的学习和工作过程中,以更加丰厚的成果来答谢曾经关心、帮助和支持过我的所有领导、老师、同学和朋友们。电子技术日新月异地飞速发展,人们总是处在不断学习,不断进步的阶段。由于本人水平、经验有限,所以本设计难免有不足之处,希望广大老师和同学批评指正。参考文献1 金钟夫等.ARM嵌入式C程序设计与实践. 北京:北京航空航天大学出版社,20082 张军, 宋涛.ARM C语言程序设计实例精粹. 北京:电子工业出版社,20093 周兴华.ARM C语言高级程序设计. 北京:中国电力出版社,20084 朱飞, 杨平.ARM C语言开发入门与典型实例. 北京:人民邮电出版社,20095 梁森,王侃夫,黄杭美.自动检测与转换技术(第二版)M.北京:机械工业出版社,2007.6 谢自美.电子线路设计、试验、测试(第二版)M. 武汉:华中理工大学出版社,20007 周立功. 深入浅出ARM7-LPC213*/214*J. 北京航空航天大学出版社, 20048 徐爱钧,彭秀华.单片机高级语言C51 Windows环境编M程.北京:电子工业出版社,2001.99 张天凡,51单片机C语言开发详解M.北京:电子工业出版社,2008.1210 龚运新,罗惠敏,彭建军,单片机接口C语言开发技术J.北京:清华大学出版社,2009.1111 Wang Junfeng, Meng Lingqi. Modern sensor applied technology M. Beijing: Mechanical industry publishing house, 2007.12 Song Wenxu, Yang Fan. Automatic detection technology M. Beijing: Higher education publishing house, 2000. 附 录1菜单部分程序:/*-定义一个结构体- */typedef struct ucharKeyStateIndex;/当前状态索引号uchar KeyUpState;/按下向上键时转向的状态索引号 uchar KeyDnState;/按下向下键时转向的状态索引号 uchar KeyBackState;/按下返回键时转向的状态索引号uchar KeyCrState;/按下确定键时转向的状态索引号 void (*CurrentOperate)();/当前状态应该执行的功能操作,定义了一个指向函数入口的指针 KbdTabStruct;KbdTabStruct const KeyTab; /*/*按键处理*/*/void take_key(uchar K)void (*a)();/声明一个函数指针变量if(K=16)return;/如果键值大于或等于16就说明没有按键按下,直接返回switch(K)/向上-case 12: KeyFuncIndex=KeyTabKeyFuncIndex.KeyUpState; Clear_LCD();/清屏break;/向下-case 13:KeyFuncIndex=KeyTabKeyFuncIndex.KeyDnState; Clear_LCD();/清屏break;/返回-case 14: KeyFuncIndex=KeyTabKeyFuncIndex.KeyBackState;Clear_LCD();/清屏break;/确定-case 15:KeyFuncIndex=KeyTabKeyFuncIndex.KeyCrState;Clear_LCD();/清屏break;default: break; a=KeyTabKeyFuncIndex.CurrentOperate;/把函数的首地址赋给变量a(*a)();/调用a指向的函数/*-菜单各部分处理程序-*/各参数的意义:当前界面,向上,向下,返回,确定,执行的函数KbdTabStruct const KeyTab=/主界面- 0, 1, 2, 0, 36, (*LCD_MainJob1), /12864菜单设计主界面 1, 1, 2, 1, 36, (*LCD_MainJob2), /菜单一 2, 3, 2, 2, 40, (*LCD_MainJob3), /菜单二 3, 3, 3, 4, 18, (*LCD_MainJob4), /菜单三 4, 5, 5, 4, 22, (*LCD_MainJob5), /菜单四 5, 6, 5, 5, 26, (*LCD_MainJob6), /菜单五 6, 6, 7, 1, 30, (*LCD_MainJob7), /菜单六 7, 7, 8, 7, 35, (*LCD_MainJob8), /显示英文 8, 9, 8, 1, 11, (*LCD_MainJob9), /显示图片 9, 9, 10, 1, 12, (*LCD_MainJob10), /显示中文 10, 7,10, 34, 10, (*LCD_MainJob11), /显示波形 11, 9, 8, 8, 11, (*LCD_MainJob12), /图片 12, 9, 8, 9, 12, (*LCD_MainJob13), /中文 13, 13, 14, 13, 17,(*LCD_MainJob14), /滚动字幕 14, 15, 14, 1, 14, (*LCD_MainJob15), /分支菜单二 15, 15, 16, 1, 15, (*LCD_MainJob16), /分支菜单三 16, 13, 16, 1, 16, (*LCD_MainJob17), /分支菜单四 17, 7, 2, 13, 17, (*LCD_MainJob18), /滚动字幕 18, 18, 19, 44, 18, (*LCD_MainJob19), /文件夹一 19, 20, 19, 1, 16, (*LCD_MainJob20), /文件夹二 20, 20, 21, 1, 16, (*LCD_MainJob21), /文件夹三 21, 18, 21, 1, 16, (*LCD_MainJob22), /文件夹四 22, 22, 23, 44, 22, (*LCD_MainJob23), /工具包一 23, 24, 23, 1, 23, (*LCD_MainJob24), /工具包二 24, 24, 25, 1, 24, (*LCD_MainJob25), /工具包三 25, 22, 25, 1, 2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 临汾市重点中学2026届数学九年级第一学期期末考试模拟试题含解析
- 2026届湖南省武冈市实验中学数学七年级第一学期期末调研试题含解析
- 广东省重点中学2026届数学七年级第一学期期末监测试题含解析
- 江苏省仪征市2026届八年级数学第一学期期末监测试题含解析
- 江苏省苏州市张家港市梁丰高级中学2026届数学九上期末监测模拟试题含解析
- 山东省青岛市黄岛十中学2026届数学七上期末学业质量监测试题含解析
- 四川省广安华蓥市第一中学2026届八年级数学第一学期期末复习检测试题含解析
- 张家口市中医院良性前列腺增生的药物治疗与转诊指征考核
- 2025内蒙古赤峰市教育局赤峰蒙古族中学第二批次“绿色通道”引进高层次教师模拟试卷及1套完整答案详解
- 2025北京明天幼稚集团招聘考前自测高频考点模拟试题附答案详解(黄金题型)
- 2025农村果园租赁合同示范文本
- 人教版二年级数学上册第二单元 1~6的表内乘法必刷卷 (含答案)
- 公司财务流程透明化披露方案模板
- 法院反诈骗法律知识培训课件
- 2025年执业药师考试题库大全-附答案
- 2024年下半年黑龙江省嫩江铁路有限责任公司校招笔试题带答案
- 2025年两类人员安全考试题及答案
- 伟星PPR培训课件
- 小学语文高段课标解读
- 排污许可证审核及环境应急管理服务方案投标文件(技术方案)
- 艺术展演活动策划公司简介范文
评论
0/150
提交评论