- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
 - 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
 - 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
 - 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
 - 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
 - 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
 - 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
 
                        查看更多
                        
                    
                第9章LCD与ED编程
                    第9章 LCD与LED编程
数码管显示LED与液晶显示LCD是MCU的常用外部器件之一,作为通用I/O口的应用,本章给出8段码LED与字符型LCD的编程实例。关于LED编程,要求掌握扫描法基本工作原理、接口方法与编程要点。关于LCD与MCU的接口,本章以一种点阵字符型LCD接口芯片与GP32的连接方法为例进行讲解,给出编程实例。其接口与编程原理,可以应用到其他形式或类型的LCD上。
本章是从通用I/O口应用的角度讲解LED和LCD的编程方法的,可以供实际编程时参考。在实际应用中所采用的器件和本章所用的器件也许有所差异,但基本原理是一致的。读者根据本章所讲述的知识点再结合实际器件的使用手册就可以实现连接和编程。另外,在实际使用时,要注意硬件电路的搭建,由于所采用的器件不同,硬件电路也会有很大差别,要充分考虑驱动电流等问题。
9.1 数码管编程实例
本节在简要介绍8段数码管基本知识的基础上,阐述了扫描法LED显示编程原理,并提供一个接口编程实例。
9.1.1 扫描法LED显示编程原理
图9-1 数码管
图9-2 数码管外形
8段数码管一般由8个发光二极管(Light-emitting diode,LED)组成,每一个位段就是一个发光二极管。一个8段数码管分别由a、b、c、d、e、f、g位段,外加上一个小数点的位段h(或记为dp)组成。根据公共端所接电平的高低,可分为共阳极和共阴极两种,如图9-1所示。实物外型见图9-2。有时数码管不需要小数点,只有7个位段,称7段数码管。共阴极8段数码管的信号端高电平有效,只要在各个位段上加上相应的信号即可使相应的位段发光,比如:要使a段发光,则在a段加上高电平即可。共阳极的8段数码管则相反,在相应的位段加上低电平即可使该位段发光。因而,一个8段数码管就必须有8位(即1个字节)数据来控制各个位段的亮灭。比如:对共阳极8段数码管,PTA0~7分别接a~g、dp,即PTA = 0b011111111时,dp段亮;当PTA=0,除dp位段外,其他位段均亮。如此推算,有几个8段数码管,就必须有几个字节的数据来控制各个数码管的亮灭。这样控制虽然简单,却不切实际,MCU也不可能提供这么多的端口用来控制数码管,为此,往往是将几个8段数码管合在一起使用,通过一个称为数据口的8位数据端口来控制段位。而一个8段数码管的公共端,原来接到固定的电平(对共阴极是GND,对共阳极是Vcc),现在接MCU的一个输出引脚,由MCU来控制,通常叫“位选信号”,而把这些由n个数码管合在一起的数码管组称为n连排数码管。这样,MCU的两个8位端口就可以控制一个8连排的数码管。若是要控制更多的数码管,则可以考虑外加一个译码芯片。例如:一个4连排的共阴极数码管,它们的位段信号端(称为数据端)接在一起,可以由MCU的一个8位端口控制,同时还有4个位选信号(称为控制端),用于分别选中要显示数据的数码管,可用MCU另一个端口的4个引脚来控制。如图9-3所示。对于图9-3所示的4连排数码管,利用CS3 、CS2、CS1、CS0控制各个数码管的位选信号,每个时刻只能让一个数码管有效,即CS3 、CS2、CS1、CS0只能有一个为0,例如令CS3=0,CS2、CS1、CS0=111,则数据线上的数据体现在第一个数码管上,其他则不受影响。要让各个数据管均显示需要的数字,则必须逐个使相应位选信号为0,其他位选信号为1,并将要显示的一位数字送到数据线上。这种方法叫“位选线扫描法”。虽然每个时刻只有一个数码管有效,但只要延时适当,由于人眼的“视觉暂留效应”(约100ms左右),看起来则是同时显示的。
图9-3 4连排共阴极8段数码管
9.1.2 接口实例
图9-4给出了一个4连排共阴极8段数码管的编程实例。在硬件连接上,利用MCU的B口控制8个位段(数据),用C口的低四位控制数码管的位选信号。图中,PTB7~0分别接h~a位段,PTC3~0分别通过1K电阻与CS3~0位选端相接,这样PTC3就控制最左边一个数码管的显示,PTC0则控制最右边一个数码管的显示。接在位选线上的1K电阻是限流电阻,避免电流过大烧坏数码管。
图9-4  MCU与4连排8段数码管的连接
9.1.3 数码管汇编语言实例
以下给出GP32对上述4位一体LED的汇编编程实例,表9-1列出了该例程的所有程序文件,下面逐一介绍这些程序。
表9-1 数码管显示工程文件
工程文件名
LED.prj
所在路径
MC08Ex2007\GP32\GP32S\S05_数码管LED
文件类型
文件名
功能简述
讲解章节
头文件
GP32ASM.h
芯片头文件
[汇编工程文件组织]4.3
Includes.h
总头文件
[汇编工程文件组织]4.3
LED.h
LED驱动头文件
[本章]
SCI
                
原创力文档
                        
                                    

文档评论(0)