首页资源分类嵌入式处理器51内核 > 12864的编程

12864的编程

已有 445110个资源

下载专区

上传者其他资源

    文档信息举报收藏

    标    签:12864

    分    享:

    文档简介

    12864是一种好用的液晶

    文档预览

    信息技术与信息化 开发与应用 LCM12864ZK 图形液晶显示模块并行实用技术 The Application of a Liquid Crystal Display LCM12864ZK for Parallel Mode 胡建波 3 HU Jian - bo 摘  要 关键词  本文以北京青云创新科技发展有限公司生产的 LCM12864ZK 图形液晶显示模块为例 , 主要介绍了 LCM12864ZK图形液晶显示模块的结构特征 、指令系统及与 51 系列单片机的接口技术 、编程实例 。  液晶显示  带中文字库图形液晶显示模块  ST7920 驱动控制器  基本指令   Abstract   This text shows the Standard Chinese Graphic LCM12864ZK as the example that Beijing QingYun Hi Tech Co. ,Ltd produces , mainly introduced structure characteristic , instruction system , interface technology with MCS - 51 Single - Chip Microcomputer , programming instance. Keywords  Liquid crystal display  The standard chinese graphic LCM  ST7920  Basic instruction 1  引言 液晶显示是微型机系统中反映系统输入/ 输出的人机界 面 ,液晶显示以其微功耗 、体积小 、显示内容丰富 、模块化 、接 口电路简单等诸多优点得到广泛应用 。液晶显示模块是一 汉字字符 ,可图文混排 ,并提供串行/ 并行两用接口 。本文主 要以实例的方式介绍 LCM12864ZK图形液晶显示模块在并行 方式下的软硬件接口技术 。 2  硬件简述 种将液晶显示器件 、连接件 、集成电路 、PCB 线路板 、背光源 、 LCM12864ZK中文图形液晶显示模块的液晶屏幕为 128 结构件装配在一起的组件 。英文名称为“LCD Module”,简称 3 64 ,可显示四行 ,每行显示 8 个汉字 。中文液晶显示模块 LCM ,中文一般称为“液晶显示模块”,但液晶模块的种类较 LCM12864ZK 的字型 ROM 内含 8192 个 16 3 16 点中文字型和 多 ,特别是点阵图形液晶模块在学科及期刊资料中论述较为 128 个 16 3 8 半宽的字母符号字型 ;另外绘图显示画面提供 深奥 , 学 生 不 易 掌 握 , 另 外 产 品 设 计 周 期 相 对 较 长 。 一个 64 3 256 点的绘图区域 GDRAM ;而且内含 CGRAM 提供 LCM12864ZK带 汉 字 字 库 图 形 点 阵 式 液 晶 显 示 模 块 内 含 的 4 组软件可编程的 16 3 16 点阵造字功能 。 ST7920 驱动控制器 ,8000 多国标一 、二级简体字库 ,编码调用 1. LCM12864ZK共 20 脚 ,其功能如表 1 : 表1 引脚 名称 功能 引脚 名称        功   能 1 K 背光源负极 读写控制脚 (并行) 0 :写入 1 :读 输入串行数 7 RW(SID) 据 (串行) 2 A 3 GND 背光源正极 地 读写数据启始脚 (并行) 8 E(SCL K) 输入串行脉冲 (串行) 4 VCC 3V/ 5V 9~16 D0~D7 数据线 5 NC 未用 17 PSB 控制界面 0 :串行 1 :并行 8/ 4 位 选择寄存器 (并行) 0 : 指令寄存器 1 : 18 / RST 复位信号 ,低有效 6 RS(CS) 数据寄存器片选 (串行) 0 :禁止 1 :允 19 VR LCD 亮度调整 ,外接电阻端 许 20 V0 LCD 亮度调整 ,外接电阻端   引脚“/ RST”和“PSB”可不接 ;不接时 ,为并行接口方式 。 引脚“VR”和“V0”之间必须接可变电阻 (0~10kΩ) ,一端接 VR ,调整端接 V0 ,另一端悬空 ;且可变电阻需调到显示区域 的底色刚刚显示出来为止 。 当 PSB 脚接高电时 (模块背面 S/ P 的短路电阻在“P” 侧) ,模块将进入并行传输模式 ;在并行传输模式下 ,可由指 令位 (DL FLAG) 来选择 8 - BIT 或 4 - BIT 接口 ,主控制系统 将配合 (RS ,RW ,E ,DB0. . DB7) 来完成传输动作 ;当 PSB 脚接 低电位 (模块背面 S/ P 的短路电阻在“S”侧) ,模块将进入串 行模式 ;在串行模式下将使用二条传输线作串行资料的传 送 ,主控制系统将配合传输同步时钟 (SCL K) 与接收串行数据 线 (SID) ,来完成串行传输的动作 。 2. LCM12864ZK基本操作指令 LCM12864ZK内含 ST7920 驱动控制器 ,该控制器是液晶 3 济宁职业技术学院计算机工程系  272000 2006 年第 1 期 6 7 开发与应用 信息技术与信息化 驱动器与计算机的接口 ,它以较简单的方式受控于计算机 , 接收并反馈计算机的各种信息 ,经过控制器独立的信息处理 实现对液晶显示缓冲区的管理 。这种控制器有一套专用的 指令 ,用户仅需熟悉这种控制器的指令系统 ,便可编制液晶 显示模块的驱动程序 。不仅使用户摆脱了对控制器的设计 、 加工 、制作等一系列工作 ,又使计算机避免了对液晶显示器 的繁琐控制 ,从而简化编程 ,缩短产品研发周期 。本文下面 仅列举了一些常用的基本操作指令 ,较为详细的请查阅产品 说明书 。 指令名称 控制信号 控制代码 RS RW D7 D6 D5 D4 D3 D2 D1 D0 清除显示 0 0 0 0 0 0 0 0 0 1 位址清 0 0 0 0 0 0 0 0 0 1 X 进入点设定 0 0 0 0 0 0 0 1 I/ D S 显示状态开/ 关 0 0 0 0 0 0 1 D C B 功能设定 0 0 0 0 1 DL X RE X X 设定 DDRAM 0 0 1 AC6 AC5 AC4 AC3 AC2 AC1 AC0 读取忙标志 0 1 BF AC6 AC5 AC4 AC3 AC2 AC1 AC0 写 RAM 1 0 D7 D6 D5 D4 D3 D2 D1 D0   a. 清除显示 :清 DDRAM 添满“20H”,并设定 DDRAM 的 位址 AC = 0 b. 位址清 0 :设定 DDRAM 的位址 AC = 0 ,将光标移到原 点 ,不清 DDRAM c. 进入点设定 :指定在资料的读取与写入时 ,设定光标 的移动方向及指定显示的移位 d. 显示状态开/ 关 :D = 1 :整体显示 ON , D = 0 :整体显示 OFF ;C = 1 :光标显示 ON ,C = 0 :光标显示 OFF ;B = 1 :光标反 白显示 ON ,B = 0 :光标反白显示 OFF。 e. 功能设定 :DL = 1 8 - bit 控制界面 、DL = 0 4 - bit 控制 界面 、RE = 1 : 扩充指令集动作 、RE = 0 :基本指令集动作 f. 设定 DDRAM :设定 DDRAM 位址到位址记数器 AC。第 一行 AC 范围为 80H~87H ;第二行 AC 范围为 90H~97H ;第 三行 AC 范围为 88H~8FH ;第四行 AC 范围为 98H~9FH。 g. 读取忙标志 :读取忙标志 (BF) ,可以确认内部动作是 否完成 ,同时可以读出位址记数器 AC h. 写 RAM : 写 入 数 据 到 内 部 RAM ( DDRAM/ CGRAM/ GDRAM) 。每个 RAM 位址 (DDRAM/ CGRAM/ GDRAM) 都可连 续写入两个 BYTE 数据 ,当写入第 2 个 BYTE 时 ,位址计数器 (AC) 的值自动 + 1 。 3  LCM12864ZK与 AT89S51 并行控制硬件接口 这里着重介绍液晶显示器与单片机的接口技术 。本文 以爱特梅尔 Atmel 的 AT89S51 为例 ,它是 51 系列单片机兼容 的微控制器 ,其内部有 4KB 的 FLASH EEPROM ,免去了扩展 外部存储器的麻烦 ,使得以 AT89S51 单片机为核心的控制系 统电路更简单 。图 1 中单片机通过 P1 口输出待显示的数据 及命令指令 , P3. 0 输出液晶使能信号 , P3. 1 为读写控制信 号 ,P3. 2 用于选择指令寄存器 (低电平) 和数据寄存器 (高电 平) ,P3. 3 用于背光控制 。本实例中液晶显示模块已用于学 生毕业设计中 ,效果良好 。 4  程序设计 液晶显示器在上电后应先初始化 ,首先延时 40ms 以上 , 进行功能能设定 (8 位/ 4 位 、基本指令/ 扩充指令) ; 再延时 100μs ,同样是功能设定 ;然后延时 37μs ,开关显示设定 ;延时 10μs ,清屏 (清除显示 RAM) ;最后延时 10ms ,设置读取与写 入时光标的移动方向等 。液晶显示模块是一个慢显示器件 , 所以在执行每条指令之前一定要确认模块的忙标志 ( P1. 7) 为低电平 ,表示不忙 ,否则此指令失效 。要显示字符时要先 输入显示字符地址 ,也就是告诉模块在哪里显示字符 ,即设 定 DDRAM 位址到位址记数器 AC。第一行 AC 范围为 80H~ 87H ;第二行 AC 范围为 90H~97H ;第三行 AC 范围为 88H~ 8FH ;第四行 AC 范围为 98H~9FH。为了方便大家学习 ,下面 给出了在液晶屏下显示“济宁职业技术学院计算机工程系单 片机和图形液晶显示器接口技术”的 C 实例程序 。 图1 / 3 3 3 3 3 带字库液晶显示模块 LCM12864ZK3 3 3 3 3 / # define Uchar unsigned char # define Uint unsigned int # define Ulong unsigned long sbit E = P3^0 ; / / 对应第 8 脚 sbit RW = P3^1 ; / / 对应第 7 脚 sbit RS = P3^2 ; / / 对应第 6 脚 / 3 3 3 3 3 定义字符串数组 3 3 3 3 3 3 / code char STR1[ ] =“济宁职业技术学院计算机工程系”; code char STR3[ ] =“单片机和图形液晶显示器接口技术”; / 3 3 3 3 3 定义函数原型 3 3 3 3 3 3 3 3 / void Delayus(Ulong t) ; / 3 延时函数 3 / void BUSYLOOP() ; / / 3 判忙函数 3 / / void Write - command(Uchar CMD ,Uchar bb) ; / / 3 发控制字函 数3// void Write - data (Uchar CMD) ; / / 3 发数据函数 3 / / void CHUSHIHUA() ; / / 3 初始化函数 3 / / void Display( Uchar 3 ptr ,Uchar ddram) ; / / 3 3 显字符串函数 3 3// / / 3 3 3 3 3 判忙函数 3 3 3 3 3 3 3 / / void BUSYLOOP() { P1 = 0x0ff ; RS = 0 ; RW = 1 ; 6 8 2006 年第 1 期 信息技术与信息化 开发与应用 do { E=1; BUSY= P1 ; E = 0 ;} while (BUSY> 0x7F) ;} / / 3 3 3 3 3 3 3 3 3 3 写控制字函数 3 3 3 3 3 3 3 3// void Write - command(Uchar CMD ,Uchar bb) { if (bb) {BUSYLOOP() ;} RS = 0 ; RW = 0 ; E=1; P1 = CMD ; Delayus(1) ; E = 0 ;} / / 3 3 3 3 3 3 3 3 3 写数据函数 3 3 3 3 3 3 3 3 3 3 3// void Write - data (Uchar CMD) { BUSYLOOP() ; RS = 1 ; RW = 0 ; E=1; P1 = CMD ; Delayus(1) ; E = 0 ;} / / 3 3 3 3 3 3 3 3 3 液晶初始化 3 3 3 3 3 3 3 3 3 3 3// void CHUSHIHUA() { Delayus(38) ; Write - command(0x30 ,0) ; / 3 8 位 、基本指令 3 / Delayus(1) ; Write - command(0x30 ,0) ; / 3 8 位 、基本指令 3 Delayus(1) ; Write - command(0x0C ,1) ; / 3 开显示 3 / Delayus(1) ; Write - command(0x01 ,1) ;/ 3 清屏 3 / Delayus(20) ; Write - command(0x06 ,1) ;} / 3 光标右移 3 / / 3 3 3 3 3 3 3 3 3 显示字符串 3 3 3 3 3 3 3 3 3 / void Display(Uchar 3 ptr ,Uchar ddram) {Uchar l ,i1 ,x ; l =0; if (ddram < 0x88) { hang = 0 ; } / / 定位行地址 :第一行 else if (ddram < 0x90) { hang = 2 ; } / / 定位行地址 :第三行 else if (ddram < 0x98) { hang = 1 ; } / / 定位行地址 :第二行 else { hang = 3 ; } / / 定位行地址 :第四行 lie = 0x0f &ddram ; / / 定位列地址 if (lie > 0x07) { lie = lie - 0x08 ;} x = lie 3 2 ; Write - command(ddram ,0) ; / / 定位显示起始地址 while ( (ptr[l ]) ! = ’\ 0’) {l + + ;} for (i1 = 0 ;i1 < l ;i1 + + ) { Write - data (ptr[i1 ]) ; / / 输出单个字符 x+ + ; if (x = = 0x10) { x=0; hang + + ; switch (hang) { case 0 :Write - command(0x80 ,0) ;break ; .........} if (hang > 3) {Write - command(0x80 ,0) ; hang = 0 ;} }}} / 3 3 3 3 3 3 主函数开始 3 3 3 3 3 3 3 / main () {CHUSHIHUA() ; / / 初始化函数/ / Display(STR1 ,0x80) ; / / 上面一行显示一个预定字符串 Display(STR3 ,0x88) ; Delayus(200) ; Write - command(0x9C ,0) ; / / 将光标移到 0x9C Write - command(0x0f ,0) ; / / 光标处反白闪烁 / / write - command(0x08 ,0) ; / / 进入睡眠状态 / / delayus(200) ; / / write - command(0x0C ,0) ; / / 唤醒 while (1) { ; }} / 3 3 3 3 3 3 主函数结束 3 3 3 3 3 3 3 3 / 参考文献 : [1 ]  LCM12864ZK  C 语言编程 http :/ / www. avrw. com 综合 电子论坛 [2 ]  徐爱钧  单片机高级语言 C51 应用程序设计 电子工业 出版社 2001 [3 ]  靳达  单片机应用系统开发实例导航 人民出电出版 社 2003 [4 ]  LCM12864ZK使用说明书 http :/ / www. qingyun - it. com [5 ]  王幸之  AT89 系列单片机原理与接口技术 北京航空 航天大学出版社 2004   [ 作者简介 ]  胡建波 (1970) ,男 ,1994 年毕业于山东工 业大 学 , 现 在 济 宁 职 业 技 术 学 院 计 算 机 工 程 系 ( 邮 编 : 272000) ,讲师 。一直从事单片机原理与接口技术的教学与实 践实训工作 。 (收稿日期 :2005207221) 2006 年第 1 期 6 9

    Top_arrow
    回到顶部
    EEWORLD下载中心所有资源均来自网友分享,如有侵权,请发送举报邮件到客服邮箱bbs_service@eeworld.com.cn 或通过站内短信息或QQ:273568022联系管理员 高进,我们会尽快处理。