单片机与液晶显示器.ppt
《单片机与液晶显示器.ppt》由会员分享,可在线阅读,更多相关《单片机与液晶显示器.ppt(67页珍藏版)》请在三一办公上搜索。
1、讲座四,1.多位LED显示2.键盘管理模块3.点阵、字符液晶显示器4.字模提取软件,LED的工作原理,(a)典型的七段式LED器件(b)共阳极LED(c)共阴极LED,四位数七段LED数码管模块(左为正面图、右为背面图),LED数码管和单片机的连接1,单片机,P2.0,P2.7,a,b,c,d,e,f,g,dp,+5v,编程:(以共阳极为例)MOVP2,#11111001B(0F9H)MOVP0,#10100100B(0A4H)SJMP$,静态连接,静态显示,LED数码管和单片机的连接2,单片机,P2.0,P2.7,a,b,c,d,e,f,g,dp,想一想:和静态连接的区别在哪里?,单片机,P
2、2.0,P2.7,a,b,c,d,e,f,g,dp,电路的接法决定了必须采用逐位扫描显示方式。即从段选口送出某位LED的字型码,然后选通该位LED,并保持一段延时时间。然后选通下一位,直到所有位扫 描完。,怎样实现显示呢?,静态、动态显示方式总结,静态显示连接所有LED的位选均共同连接到+VCC或GND,每个LED的8根段选线分别连接一个8位并行I/O口。原理简单;显示无闪烁;占用I/O资源较多。动态显示连接 所有LED的段选线共同连接在一起共用一个 8位I/O口而每个LED的位选分别由一根相应的I/O口线控制。因此必须采用动态扫描显示方式。,例:74ls164+led(proteus),独立
3、键盘,case 0 x01:key1();/键盘1功能函数。break;case 0 x02:key2();/键盘2功能函数。break;case 0 x04:key3();/键盘3功能函数。break;case 0 x08:key4();/键盘4功能函数。break;case 0 x10:key5();/键盘5功能函数。break;case 0 x20:key6();/键盘6功能函数。break;case 0 x40:key7();/键盘7功能函数。break;case 0 x80:key8();/键盘8功能函数。break;default:break;,说明:采用轮询方式查询P1口,采用延
4、时法消除键盘抖动*/#include/*函数名称:delay()功能:用于键盘消抖的延时函数说明:无 入口参数:无返回值:无*/void delay()unsigned char i;for(i=400;i0;i-);/主函数 main()void main(void)unsigned char key;while(1)P1=0 xff;/要想从P1口读数据必须先给P1口写1 key=P1;/读入P1口的数据,赋值给变量key if(key!=0 x00)/判断是否有键按下,当没有键按下时,P1口的数据为0 x00 delay();/延时去抖 key=P1;/再次读入P1口的数据,赋值给变量k
5、ey if(key!=0 x00)/再次判断是否有键按下 switch(key),矩阵式键盘控制,4x4 键盘的内部结构,市售一体成型的4x4键盘,低电平扫描按下“0”键,低电平动作键盘动作分析表,高电平扫描按下“0”键,高电平动作键盘动作分析表,44键盘扫描电路,基本原理:分行扫描检查是否有键按下若有,确定哪个键被按下,1.行扫描法的原理,判断哪一个键被按下的流程,P1=0 xfb;n=P1;n,2.行反转法的原理,行线、列线分别接并行口行线输出,列线输入列线输出读得的值,行线输入,行反转法的流程,uchar keyscan(void)/键盘扫描函数,使用行列反转扫描法 uchar cord
6、_h,cord_l;/行列值 P3=0 x0f;/行线输出全为0 cord_h=P3/键盘最后组合码值,此处仿真,测控系统中必不可少的组成人机界面,图1 测控系统的组成部分,液晶显示器的原理,字符型液晶(1602)方法:通过向指定显示位置对应的DDRAM中写数据来显示字符。例如:在第2行第2列显示字符 a,查表1 可知a对应的代码为01100001即0 x31,则可向地址0 x41中写入数据0 x31即可显示。,图2 1602的显示地址与DDRAM地址,点阵型液晶(12864),在点阵型LCD上显示一幅图片或是字符,如上图所示,只需黑色的部分点亮,空白的点置0即可。可以将LCD看成128*64
7、个LED灯来帮助理解。,正面图,背面图,12864分类12864点阵液晶显示屏有三种控制器,分别是KS0107(KS0108)、T6963C和ST7920,三种控制器主要区别是:KS0107(KS0108)不带任何字库、T6963C带ASCII码,ST7920带国标二级字库(8千多个汉字)。,图3 12864的DDRAM地址,XY地址计数器实际上是作为DDRAM的地址指针,X地址计数器为DDRAM的页指针,Y地址计数器为DDRAM的Y(列)地址指针。X地址计数器没有记数功能,只能用指令设置。Y地址计数器具有循环记数功能,各显示数据写入后,Y地址自动加1,Y地址指针从0到63。,从上图可以看出数
8、据按字节在屏幕上是竖向排列的。上方为低位,下方为高位。因此在横向上(也就是Y)就一共是128列数据。分为CS1和CS2两个64列来写入。在竖方向上(也就是X)一字节数据显示8个点,竖向64个点分为8个字节,称做8页(X=0-7)。了解这些后我们就知道要满屏显示一张图就要从y=0127、X=07一共写1288=1024个字节的数据。同样在AT89S51中存一张图就要1024个字节的空间。,图片在12864上的显示,简单来说,主要分为两步:1)将一幅图片转化为一系列二进制数据2)将数据按字节(8位)写入液晶对应的DDRAM由图3可知,12864的DDRAM有128*8=1024个地址,只需将图片转
9、化的数据按字节写入这其对应的DDRAM地址即可。,字符在12864上的显示,上图中,汉字为16*16点阵,ASCII码为8*16点阵,同图片一样,一个汉字(ASCII)由16*2(8*2)个字节数据组成,字符显示原理与图片一致,只需将字符代码写入相应DDRAM地址。字体大小可以根据需要改变。,小结,简而言之,无论是字符型还是点阵型LCD,其基本原理都是通过将数据写入所对应的DDRAM地址中来显示所需要的图形或是字符。12864点阵型液晶对应的DDRAM有1024个地址,当需显示的字符或图片已转为二进制数据时,确定将数据写入对应的DDRAM地址就是你所要做的工作!,单片机与液晶显示器的硬件连接,
10、液晶显示器(12864)主要包含了以下接口(图6):1)使能E(51的RD和WR经或非门接LCD的使能E)2)片选CS1(左半屏)、CS2(右半屏),见图33)命令/数据选择RS(0命令,1数据)4)读/写选择R/W(0写,1读)5)数据总线DB0DB76)负压产生和负压输入(对比度)调整7)复位RST8)电源与地和背景光电源,软件编程,注意:程序的编写与硬件是分不开的。以图6为例,A11A8对应CS2、CS1、R/W、RS,未用的地址线为高。见图5则当向12864的左半屏(CS1=1,CS2=0)写(R/W=0)数据(RS=1)时,总线地址为0 x1111010111111111。即0 xF
11、5FF。C文件中定义如下:#define WD1 XBYTE0 xF5FF定义了总线地址后,对外部地址的操作变得非常简单。如向左半屏写数据0 xFF:WD1=0 xFF 读左半屏数据:data=RD1(data存储读取到的数据),举例,下面简单介绍程序编写的流程1)定义所有总线地址#define WI1 XBYTE0 xF4FF/向左半屏写命令#define WD1 XBYTE0 xF5FF/向左半屏写数据#define RI1 XBYTE0 xF6FF/读左半屏命令#define RD1 XBYTE0 xF7FF/读左半屏数据#define WI2 XBYTE0 xF8FF/向右半屏写命令#
12、define WD2 XBYTE0 xF9FF/向右半屏写数据#define RI2 XBYTE0 xFAFF/读右半屏命令#define RD2 XBYTE0 xFBFF/读右半屏数据,2)编写底层程序(查忙,写数据,读数据)查忙(读BF标志即DB7总线,亦即读命令)BF=1表示模块在内部操作,此时模块不接受外部指令和数据;BF=0时模块为准备状态,随时可接受外部指令和数据;b=RI1 或者 b=RI2,观察b中最高位是否为0,否则忙。写数据aWD1=a或者WD2=a读数据到datadata=RD1或者data=RD2注意:无论是写数据还是读数据一定要先查忙(对左右半屏读命令),只有在BF=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 液晶显示器

链接地址:https://www.31ppt.com/p-6103486.html