单片机总线方式读写液晶屏的研究.DOC

上传人:天*** 文档编号:930348 上传时间:2018-11-07 格式:DOC 页数:11 大小:133KB
下载 相关 举报
单片机总线方式读写液晶屏的研究.DOC_第1页
第1页 / 共11页
单片机总线方式读写液晶屏的研究.DOC_第2页
第2页 / 共11页
单片机总线方式读写液晶屏的研究.DOC_第3页
第3页 / 共11页
单片机总线方式读写液晶屏的研究.DOC_第4页
第4页 / 共11页
单片机总线方式读写液晶屏的研究.DOC_第5页
第5页 / 共11页
点击查看更多>>
资源描述

1、单片机总线方式读写液晶屏的研究杨利民 炼钢作业部公辅区摘 要:文章就单片机按总线方式读写液晶屏展开讨论,描述 AMPIRE12864 液晶屏显示原理,并简要介绍控制芯片 KS0108,搭建硬件显示电路。从软件角度,叙述点阵汉字显示以及滚屏动画显示的算法。最后,归纳了研究心得。关键词:单片机,总线,KSO108,LCDTHE INVESTIGATION ABOUT CHIP READING AND WRITING LCD ON BUSABSTRACT:This paper makes a discussions about single chip microcomputer reading an

2、d writing LCD on bus,describes display principle of AMPIRE128X64 LCD,And introduces control chip KS0108, to set up the hardware circuit of display.On the software point,making a description of display of dot matrix Chinese characters and algorithm of scrolling animation display.The last,design exper

3、ience was summaried.KEYWORDS:SINGLE CHIP MICROCOMPUTER, BUS,KS0108,LCD0 前言LCD 是近几年才发展起来的产品,它却以其完美的视觉感受,长时间的使用寿命,超薄的体积,深受欢迎。以往人们研究 LCD 往往采用时钟时序方式对 LCD 进行控制,程序繁杂,难以理解。本文研究总线控制方式(数据总线和地址总线)对 LCD 进行读写控制,程序简单易懂。1 LCD显示基本原理LCD(Liquid Crystal Display)即液晶显示,是一种极低功耗显示器,有段位式、字符型、点阵式三种。液晶是介于完全规则状态与不规则状态之间的中间态物

4、质。规则状态常见于固态晶体中,它的分子位置和分子轴的方向在三维空间呈非常规则的排列状态。而不规则状态则常见于各向同性液体中。液晶和液体一样可以流动,但在不同方向上它的光学特性不同,显示出类似于晶体的性质。液晶显示按光源分可分为反射显示和投影显示:把光源置于显示板后方,用显示板来调制光源,使之发出不同强度的光,从而进行显示。在小面积显示中不用照射光源,用环境光来均匀地照亮整个显示面。在背面或背面电极上置有反射板,这种方式称为反射型显示;把显示板当成一般的幻灯片,用光学系统加以放大,投影在显示屏上,称为投影显示。液晶显示按电极形状分,可以分为段(segment)显示和矩阵(matrix)显示。按工

5、作原理又可以分为主动矩阵(Active Matrix) ,又称薄膜电晶体,即 TFT 方式 LCD 和被动式矩阵(Passive Matrix) ,又称超转矩显示,它的形式有 TN、STN、DSTN 等 1。2 AMPIRE12864LCD显示屏的介绍AMPIRE12864LCD 显示屏由两片带控制器的列驱动电路 KS0108 和一片行驱动电路 KS0107 组成主要的硬件电路,另外还可以附加负压发生电路。显示屏由一片 12864 点的液晶片组成。两片KS0108 将显示屏分为左右半屏,整个屏从上到下 64 行分为 8 页,每页 8 行。页地址范围为B8HBFH,列地址范围为 40H7FH,数

6、据为纵向读写,即每页的第一行对应 D0,第八行对应 D7,左右半屏读写选取由片选信号 CS1、CS2 进行控制。3 显示控制芯片的简介液晶显示器的控制器种类很多,如 HD61202 控制器、SED1520 控制器、KS0108 控制器、T6963控制器等,AMPIRE128X64 液晶屏选用控制芯片 KS0108B。KS0108B 是一种可以输出液晶点阵系统的 64 通道的 LCD 驱动器,它由显示存储 RAM、64 位数据闭锁、64 位驱动器和逻辑解码器组成。它由内置显示存储器存储由 8 位的微控制器来转移显示数据并产生点阵微光来驱动信号相应的存储数据。KS0108B 结合 KS0107B(

7、64 通道的通用驱动器)组成液晶显示系统。1输入和输出信号输入:8 位并行显示数据信号输出:64 路 LCD 驱动信号显示数据由 MPU 输出存储到显示数据存储器中。2显示缓存 RAM特性容 量:512 字节(4096 位)存储器位数据:存储器位数据= 1:亮存储器位数据= 0:暗LCD 驱动电压:8V17V(VDDVEE)说明 RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 功能开关显示 L L L L H H H H H L/H控制开显示或关显示,显存状态和数据不受影响。L:关,H:开设置列地址 L L L H 列地址(063)在列地址计数器中设置列地址。设置

8、页地址 L L H L H H H页地址(07)在页地址寄存器中设置页地址设置显示行 L L H H 显示开始行指出显示数据存储器在屏幕的顶端开始显示读状态 L HBUSYLON/OFFRESETL L L L读状态忙标志 L: 准备就绪H: 正在操作开关显示标志:L: 显示开H: 显示关复位标志:L: 正常H: 复位写显示数据 H L 写数据写数据(DB0:7)到显示数据存储器中。在写了指令之后,列地址将自动加1读显示数据 H H 读数据从显示数据存储器中读书据(DB0:7)到数据总线上。电源提供电压: + 5V10%控制器 KS0108 的指令相当简单只有 7 条,如下: 指令显示开关设定

9、 显示起始行设定 页地址设定 列地址设定 状态读取 写数据 读数据显示控制指令控制内置的 KS0108B 芯片,从 MPU 输出到 KS0108B 指令控制显示,表(1)列出不同指令说明。可见通过编程可实现对液晶显示屏的任意图像显示。4 显示硬件电路搭建设计由单片机模块、显示模块构成。采用总线方式搭建硬件电路,即 P0 口通过锁存器后和 P2口组成 16 位的地址线 A0A 15(图 1 ) ,而 P0 口连接液晶屏八位数据线。即单片机数据线(D0D7)接液晶屏(如图 2 所示)的数据线接口(D0D7) 。地址线经过译码器 74LS138 后接片选信号 CS1、CS 2以选取左屏和右屏,其余地

10、址线选取几位接液晶屏的 R/W、RS 等信号线,当然R/W、RS 也可以接至单片机其它引脚上,由单片机直接控制。R/W、RS 接地址线的方式使得硬件电路既简单又明了。液晶屏的使能信号 E 由单片机的读写信号经一个与非门后接过来,这样不论单片机对液晶屏进行写或者读操作都可以自动的将液晶屏的使能信号点亮从而使液晶屏 LCD 工作。表(1) 显示控制指令XTAL218XTAL119ALE30 EA31 PSEN29RST9P0.0/AD0 39P0.1/AD1 38P0.2/AD2 37P0.3/AD3 36P0.4/AD4 35P0.5/AD5 34P0.6/AD6 33P0.7/AD7 32P1

11、.0/T21 P1.1/T2EX2P1.2/ECI3 P1.3/CEX04P1.4/CEX15 P1.5/CEX26P1.6/CEX37 P1.7/CEX48P3.0/RXD 10P3.1/TXD 11P3.2/INT0 12P3.3/INT1 13P3.4/T0 14P3.7/RD 17P3.6/WR 16P3.5/T1 15P2.7/A15 28P2.0/A8 21P2.1/A9 22P2.2/A10 23P2.3/A11 24P2.4/A12 25P2.5/A13 26P2.6/A14 27U1AT89C51RD2锁存器GALEA0A1A2A3A4A5A6A7A8A9A10A11A12A

12、13A14A15D7D6D5D4D3D2D1D0图 1 总线方式示意图D01D23D45D67A76A54A32A10 A3A4D76D54D32D10P3.CS1122GND3VC405RS6/W7E8DB09110DB2312DB43514DB65716RST7-Vout18D03 Q0214 15D27 Q2638 39D413 Q41254 55D617 Q61678 79OE1LU174LS37A1B2C3E1624E35Y01514Y21332Y4150Y6977U2X1CRYSTALC13p C23pU3NAD_2VCGND53%RV11k1 2U4:A74LS14R10kR21

13、0D1IOE-DSIMC310uF U5NOTXTAL218XTAL119ALE301PSN29RST9P0./AD039.1/18P0.2/AD237.3/36P0.4/AD435.5/54P0.6/AD63.7/72P1.0/T21./EX2P1.2/CI3.3/EX04P1.4/C15.5/EX26P1.6/C37.7/EX48P3.0/RXD10.1/TP3.2/IN012./IT13P3.4/014P3.7/RD17.6/W6.5/T15P2.7/A1528P2.0/A821.1/9P2./A023.3/14P2.4/A225.5/136.6/47U6AT89C51RD2图 2 显示

14、原理图5 显示软件设计1整体显示设计流程图(图 3)所示,首先进行上电初始化,包括单片机初始化和显示屏初始化(图 4 )所示;其次,设置写入缓存的页(08)和列(064)以及开始显示的行等;紧接开始往指定的显存中写入显示文字或图像的相应数据,受控制器件 KS0108 和 KS0107 的控制,文字或图像数据显示在液晶显示屏上。2液晶屏初始化(图 4) 所示,单片机上电后通过查询 LCD 的第七位是否为高电平判断 LCD 是否忙。低电平表示 LCD 准备就绪,高电平则表示 LCD 正在操作(忙) 。LCD 忙则继续查询等待;不忙则进行选屏(左屏或者右屏) 、关闭显示、设置显示开始的行、开显示完成

15、初始化操作。3开机界面介绍开机界面采用显示整张 12864 图片方式。12864 的图片取模得到 1024 字节数据,在单片机 CODE 段定义数组存放图片显示数据。通过软件输送显示数据到液晶屏显示缓存中,KS0108 控制显示图象于液晶屏。C 语言程序如下:void display_kj(void) int i,j,k=0;SelectScreen(1);/调用选屏子程序SetOnOff(0); /调用开关显示子程序check_up(1);SelectScreen(2);SetOnOff(0);check_up(2);SelectScreen(1);SetOnOff(1);SelectScr

16、een(2);SetOnOff(1);for(j=0;j8;j+)SelectScreen(1);SetLine(j); /设置页显示SetColumn(0); /设置列显示for(i=0;i64;i+) WriteByte(KJk+);delay(2); /延时子程序图 3 显示流程图选屏(L or R)设置显存的行和列往显存里写数据显示图像或文字NY初始化LCD 是否忙开始Y关显示设置显示开始行开显示图 4 初始化流程图NLCD 是否忙选屏开始SelectScreen(2);SetLine(j);SetColumn(0);for(i=0;i64;i+)WriteByte(KJk+);del

17、ay(2);41616 汉字点阵显示原理和实现方法汉字实际是由一个个点构成,显示部分用 1 表示,不显示部分用 0 表示 2, (图 5)所示。这些由 1 和 0 组成的数据称之为字模。字模的提取方式有横向取模、纵向取模之分。KS0108 采用纵向取模方式, “杨”字以纵向,字节倒序取模得到字模为:/*- 文字: 杨 -*/*-宋体 12 此字体下对应的点阵为:宽 x 高=16x16-*/0x08,0x08,0xC8,0xFF,0x48,0x88,0x0A,0x42,0x62,0xD2,0x4A,0xC6,0x42,0xC0,0x00,0x00,0x04,0x03,0x00,0xFF,0x00

18、,0x01,0x08,0x24,0x13,0x08,0x06,0x41,0x80,0x7F,0x00,0x00,把要显示字符的字模写入显示缓存的相应位置,就可以显是这个字符了。1616 汉字 C 语言显示程序如下:void Display(unsigned char ss,unsigned char page,unsigned char column,unsigned char number) int i; SelectScreen(ss); /选择屏幕column=column /限制列为(064)SetLine(page); /设置页(08)SetColumn(column); /设置列f

19、or(i=0;i16;i+)WriteByte(Ezki+32*number);/写数据子程序SetLine(page+1);SetColumn(column);for(i=0;i16;i+)WriteByte(Ezki+32*number+16);程序中形参 ss 为屏选参数(左屏或右屏) ,page 为页选参数(07) ,column 为列选参数(063) ,number 为数组中汉字位置参数。1616 点阵汉字象素为 256,256/832 个字节数据输出,每 32 个字节记做一个汉字,方便得到相应汉字位置。1616 点阵显示程序先写前 16 字节数据,即汉字上半页。再写后 16 字节数

20、据,显示出完整的汉字。816 点阵汉字显示程序和 1616点阵汉字显示程序大致相同,只是输入显示缓存数据字节量减少一半。图 5 取字模原理55050 汉字点阵显示实现方法受 LCD 液晶屏控制芯片 KS0107 特性限制,液晶屏只能控制写入显示缓存的页位置(1 页等于8 行) ,而不能够控制要写入显示缓存行位置。50 不是 8 的整数倍,不太容易实现显示。这里介绍两种显示方法:补足 8 的整数倍法和整屏显示法。(1)补足 8 的整数倍法把不足 8 整数倍的点阵通过补 0 来凑齐 8 的整数倍。5050 点阵补齐数据后变为 5656 点阵。该方法优点是节省存储空间,显示位置和显示效果不容易受控制

21、。C 语言程序如下:void Display(unsigned char ss,unsigned char page,unsigned char column,unsigned char number)int i,j;SelectScreen(ss); /选择显示屏幕(1,左屏;2,右屏)column=column /列选取参数 column 不超过 64 for(j=0;j7;j+)SetLine(page+j); /设置要显示的列SetColumn(column); /设置要显示的列for(i=0;i56;i+)WriteByte(Ezki+392*number+56*j); /调用写数据

22、子程序(2)整屏显示法把要显示的内容制作成 12864 的图像。对图像取模得到相应字模数据。数据写入显存即可显示相应内容。C 语言程序如下:void display_kj(void) int i,j,k=0;for(j=0;j8;j+) /控制写入的页(07)SelectScreen(1); /选择左屏SetLine(j); /设置写入缓存的页SetColumn(0); /设置写入显示缓存的列for(i=0;i64;i+) WriteByte(KJk+); /调用写数据子程序delay(2); /控制数据写入速度SelectScreen(2); /选择右屏SetLine(j);SetColum

23、n(0);for(i=0;i64;i+)WriteByte(KJk+);delay(2);程序利用双重循环完成显示过程,外层循环设置页位置,一屏共有 8 页;内层循环设置列位置,显示到 64 列时,左右屏进行切换,最终写满 12864 屏幕。该方法优点是控制和实现显示很方便,显示效果较好。缺点是字模数据占用存储空间大。6滚屏动画显示设计滚屏动画采用左屏显示内容向上滚动,右屏显示内容向下滚动。 (图 6)所示,程序开始初始化i=0,设置屏幕行显示位置 i,查询 i 是否到预定值 N。不到,i 值加 1,再次设置屏幕显示行 i,到预定值,退出程序,完成显示。利用人眼视觉暂留效应,依次改变液晶屏显示

24、开始行。单片机写入液晶屏缓存速度快,不小于 24 帧的速度人眼看起来就会很流畅 3。C 语言程序如下:void lcd_rol() uint i;for(i = 0; i 64; i+)SelectScreen(1); /选取左屏SetStartLine(0+i); /设置开始显示的行SelectScreen(2); /选取右屏SetStartLine(62-i); /设置开始显示的行delay(20);6 研究心得通过该研究了解单片机指令输入输出,熟悉总线分时复用的意义和概念,为自动化设备维护运行及故障分析打下基础。总线方式控制外部芯片相对单片机单独引脚输出指令读写外部芯片方式有以下特点:P0 口采YN图 6 滚屏程序流程图设置显示开始的行 i程序出口i+i=0开始i = =N用地址线和数据线分时复用,节省单片机输出口;硬件电路相对复杂;完成硬件地址定义,软件设计相对简单易读;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 重点行业资料库 > 1

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。