80C196KC 与L CD 模块接口设计及其编程实现
刘 建1, 夏勇军2
(1. 武汉化工学院自动化系, 武汉 430073; 2. 华中科技大学电气与电子工程学院, 武汉 430074)
摘 要: 本文首先介绍了 80C196KC 单片机的特点和新增功能以及M GL S- 12032 液晶显示
模块的基本情况, 并对显示模块控制器 SED 1520 的驱动、接口电路进行了设计, 然后给出了它和
196 单片机的两种基本接口方式及硬件电路图。文章以间接访问方式为例, 列出了详细的M CS-
96 汇编语言控制程序, 并对程序代码和相关逻辑进行了具体解释, 最后, 提出了硬件设计和软件编
程中需要注意的有关问题。
关键词: 80C196KC;M GL S- 12032; SED 1520;M CS- 96 汇编语言
中图分类号: TN 873 文献标识码: A 文章编号: 1002- 2279 (2004) 03- 0000- 03
The In te rfa ce D e s ign a nd P rog ram Re a liza tion of MCS - 196KC a nd LCD M odule
L IU J ian1, X IA Yong- jun2
(1. D ep artm en t of A u tom a tion E ng ineering ,W uhan Institu te of Chem ica l T echnology ,W uhan 430073, Ch ina;
2. P ow er F acu lty. , H uaz hong U ni. Of S cience and T ech ,W uhan 430074, Ch ina)
Abstract: A t the beginn ing, there have an in troduct ion abou t the new funct ion of 80C196KC
sing le ch ip and the fundam en ta l sta te ofM GL S- 12032, and design the driver and in terface circu it
of L CD ’s con tro ller SED 1520, g ive the tw o m ode of in terface and hardw are circu it d iagram.
Com b in ing the exam p le of ind irect m ode give the deta iled con tro l p rogram w rit ten in M CS- 96
assem b le language and exp la in the code and log ic st ructu re. A t last, subm it som e no tew o rth iness
quest ion s du ring design hardw are and p rogram softw are.
Key words:M CS- 196;M GL S- 12032; SED 1520;M CS- 96 assem b le language
1 引 言
随着微处理器和液晶显示技术的发展, 单片机
已经由过去的 4 位、8 位迅速发展到了目前的 16 位
乃至 32 位。液晶显示同样有了飞速的发展, 逐步由
原来的数码管显示变成了点阵字符或图形显示, 其
中L CD (L iqu id C rysta l D isp lay)就是一种具有低功
耗、体积小、重量轻、信息量大、超薄等诸多优点的显
示器, 人们越来越多的将其应用于记时器、计算机、
手机、电子字典、GPS、电子相机、工业仪器仪
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
等袖
珍式仪器和低功耗电子产品中。本文以功能强大的
80C196KC 单片机为例, 详细介绍它与M GL S -
12032A 液晶显示模块的连接和实现。
2 80C196KC 的新增特点
80C196KC [ 1、2 ]芯片是 IN T EL 公司 96 系列单
片机中性能最强的产品之一, 很多书籍和资料都有
介绍。下面是该芯片的新增功能。①快速运算功能,
振荡信号频率可达 16M H z; ②新增加 100H~ 1FFH
内部RAM , 在垂直窗下非常灵活; ③扩展 16K 字节
内部存储器; ④增加三路WM 脉宽调制输出; ⑤在
80C196KB 的基础上又增加了 5 条新指令; ⑥内部
集成 10 位ö8 位选择的A öD 转换通道等。
3 M GL S- 12032A 模块电路结构及特点
3. 1 SED 1520 的特性
M GL S- 12032A [ 3 ]液晶模块以两片 SED 1520
液晶显示控制驱动器为核心, 集行列驱动器和控制
器于一体, 被广泛的应用于小规模的液晶显示模块。
其主要特点如下: ①内置 2560 位显示 RAM 区。
RAM 中的 1 位数据控制液晶屏上一个像素的亮、
暗状态。“1”表示亮,“0”表示暗; ②具有 16 个行驱动
刘建 (1979—) , 男, 湖北武汉人, 硕士研究生, 主研方向: 电力电子技术及其应用。
收稿日期: 2003- 08- 20
第 3 期
2004 年 6 月
微 处 理 机
M ICRO PROCESSORS
N o. 3
Jun. , 2004
© 1995-2005 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.
输出和 61 个列驱动输出; (在M GL S- 12032 中用
到了全部 16 个行驱动口和其中 60 个列驱动口) ; ③
可直接与微处理器相连, 时钟信号由 SED 1520 内部
产生; ④驱动占空比为 1ö16 或 1ö32; ⑤可以与
SED 1520 级联使用, 以便扩展行、列的驱动能力。
3. 2 SED 1520 驱动、接口部分电路
对于应用液晶显示器的人员来说, 由于
SED 1520 已经集成化, 其内部的显示时序发生器、
显示存储器以及管理电路只要了解就足够, 但是对
于驱动部分和接口部分来说就必须掌握他们的详细
运做方式和相关电路。系统采用的液晶模块级联了
两片 SED 1520, 一片是处于主工作方式, 一片处于
从工作方式。驱动的
工作原理
数字放映机工作原理变压器基本工作原理叉车的结构和工作原理袋收尘器工作原理主动脉球囊反搏护理
是: 在两片 SED 1520
级联时, 处于主工作方式的 SED 1520 完成第 1 行至
第 16 行的驱动和左半屏显示的列驱动输出; 处于从
工作方式的 SED 1520 则承担第 17 行至第 32 行的
行驱动和右半屏显示的列驱动输出。驱动的结构如
图一所示。这要求我们在编程的时候要特别注意显
示汉字和字符时在边界区域, 也就是两片 SED 1520
交接处的切换。SED 1520 的接口部分包括 IöO 缓冲
器, 复位电路, 指令译码和状态字寄存器等。其中 Iö
O 缓冲器的作用是连接两个不同时钟下工作的系
统, 实现通讯。为了使计算机操作与 SED 1520 内部
的操作在时序上匹配, 所有计算机写入的数据 (包括
指令代码和显示数据) 都在 IöO 缓冲器内被锁存,
转换成内部控制时序处理。
图 1 液晶显示器驱动结构示意图
4 接口电路及驱动程序
4. 1 接口电路设计
M GL S- 12032 模块分直接访问方式和间接访
问方式, 如图 2、3 所示。从原理图中可以看到直接访
问方式不占用系统地址ö数据总线以外的资源, 但是
外部逻辑电路相对复杂。间接控制方式的连接电路
简单, 但是需要占用 196 额外的 IöO 端口。考虑到
196 丰富的接口资源和系统调试的方便, 本系统以
间接访问方式为基础。
图 2 直接访问方式原理图
图 3 间接访问方式原理图
4. 2 间接访问方式驱动程序设计
在液晶的资料中, 目前显示程序基本上是利用
M CS51 编辑, 下面将详细介绍以M CS- 96[ 2 ]汇编
语言为基础的完整的显示程序代码。
显示程序是基于对 SED 1520 液晶显示驱动器
中 13 种显示指令的合理运用, 全部指令是基于对
SED 1520 的R öW 引脚和A 0 引脚以及 8 位数据地
址复用总线的控制 (注意: 程序中对两块控制器的选
择是通过 E1 和 E2 引脚)。图 4 是控制时序图。在 E
下降沿处, 数据或指令被锁存进 SED 1520 内部的数
据或指令寄存器。在 E 高电平期间, 数据或状态字
被读到数据总线上。具体的指令和时序特性请参考
文献[ 3 ]。下面是M CS96 的汇编程序。
图 4 SED 1520 时序图
(1)写指令代码子程序 (E1 部分)
PR 0: L CALL CL R _ A 0; 将A 0 引脚置 0
L CALL SET _ R _ W ; 将R öW 引脚置 1
PR 01: LDB IO _ POR T 1, # 0FFH; 启 动 IO _
·26· 微 处 理 机 2004 年
© 1995-2005 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.
POR T 1
L CALL SET _ E1; 将 E1 引脚置 1
LDB AL , IO _ POR T 1; 读入状态字节
L CALL CL R _ E1; 将 E1 引脚置 0
ANDB AL , # 80H; 判断 SED 1520 状态
JN E PR 01; 如果“忙”则重复
L CALL CL R _ R _ W ; 将R öW 引脚置 0
LDB IO _ POR T 1, COM ; 送指令至端口
L CALL SET _ E1; 写入指令
L CALL CL R _ E1; 将 E1 引脚置 0
R ET
(2)显示数据子程序 (E1 部分)
该部分程序和写指令代码的子程序基本相同,
只是写入L CD 的不是命令代码, 而是显示的数据,
此外还要让各引脚电平满足写数据时的时序关系。
(3)写指令代码子程序 (E2 部分) 和显示数据子
程序 (E2 部分)。和前面 (1) (2) 的程序结构相同, 只
是接口控制信号是针对L CD 的 E2 引脚。即对 196
芯片的 P2. 0 端口进行控制 (如图 3)。
(4)初始化子程序
IN IT _ L CD: LDB COM , # 0E2H; 软件复位指令
L CALL PR 0; 将指令写入 E1 部分
L CALL PR 3; 将指令写入 E2 部分
初始化程序还包括: 关闭等待状态设置、占空比
为正向排序设置、起始行设置、开始显示命令, 这些
程序和上面三行程序的结构一样, 只需将 COM 寄
存器中写入不同的指令代码, 然后调用写入子程序
将指令写入即可。
(5) 清除显示RAM 区 (清屏)子程序
CL EA R: LDB IOC1, # 00H
LD CX, # 3000H
L CALL CL R _ E1
L CALL CL R _ E2
L CALL IN IT _ L CD; 先初始化 SED 1520
LDB BL , # 00H; 页面地址暂存器设置
CL EA R 1: LDB AL ,BL ; 取页地址值
ORB AL , # 0B 8H;“或”页面地址设置代码
LDB COM ,AL ; 页面地址传送
L CALL PR 0
L CALL PR 3
LDB COM , # 00H; 列地址设置为“0”
L CALL PR 0
L CALL PR 3
LDB BH , # 3CH; 一页清除 80 个字节
CL EA R 2: LDB DA T , # 00H; 显示数据为零 (即清
除)
L CALL PR 1
L CALL PR 4
DJN Z BH , CL EA R 2; 页内字节清零循环
IN CB BL ; 页地址加 1
CM PB BL , # 04H; 判断清零页数是否完毕
JN E CL EA R 1; 4 页全部清零完毕后结束
在上面的程序中最基本的调用子程序是对
L CD 的A 0, R öW , E1, E2 端口进行电平控制的程
序, 这些子程序根据不同的端口设计各有差异。
(6) 显示程序核心代码:
CCW _ PR: LD D PTR , RX; RX 中存放为显示字符
的代码地址
LDB AL , COD E; 取代码
LDB BL , # 20H; 字快块宽度
M ULUB A X,BL ; 代码×字块宽
ADD D PTR ,A X; 得到字符模块首地址
LDB COD E, # 00H
LDB COLUM N , EL
CCW _ 1: LDB COUN T T , # 10H; 定义 16×16 点
阵;
LDB AL , PA GEE; 确定显示区域
ANDB AL , # 03H
ORB AL , # 0B 8H
LDB COM ,AL ; 写入页地址设置的指令
L CALL PR 0
L CALL PR 3
LDB COLUM N , EL
LDB AL , COLUM N ; 将列地址送如寄存器
CM PB AL , # 3CH; 判断是否进入副 SED 1520 显
示区域
JL T CCW _ 2; COLUM N 的值小于 60 为左半屏显
示区域
SUBB COLUM N , # 3CH; 修改 COLUM N , 将其
减去 60
LDB AL , PA GEE
ORB AL , # 08H
LDB PA GEE,AL ;
以上三句话修改了 PA GEE 的区域标志位, 变
·36· 3 期 刘建等: 80C196KC 与L CD 模块接口设计及其编程实现
© 1995-2005 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.
到 E2 区。
CCW _ 2: LDB COM , COLUM N
LDB AL , PA GEE
ANDB AL , # 08H
CM PB AL , # 00H
JE CCW _ 3
L CALL PR 3 ; 区域 E2
JM P CCW _ 4
CCW _ 3: L CALL PR 0 ; 区域 E1
CCW _ 4: LDB AL , COD E; 取间址寄存器值
LDB A H , # 00H
ADD DX,D PTR ,A X
LDB AL , [DX ]; 取待显示字符代码送到AL
LDB DA T ,AL
LDB AL , PA GEE; 检查标志位
ANDB AL , # 08H
CM PB AL , # 00H
JE CCW _ 5
L CALL PR 4 ; 区域 E2
JM P CCW _ 6
CCW _ 5: L CALL PR 1 ; 区域 E1
CCW _ 6: IN CB COD E; 间址寄存器加 1
IN CB COLUM N ; 列地址加 1
LDB AL , COLUM N ; 判断列地址是否超出范围
CM PB AL , # 3CH
JN E CCW _ 7; 不等于 60 则跳转
CCW _ 7: CM PB AL , # 3CH; 判断是否超出区域范
围
JL T CCW _ 8; 未超过则调到CCW - 8 继续执行
LDB AL , PA GEE; 超过时执行该行及以下几行
ANDB AL , # 08H
JN E CCW _ 8; 在区域 E2 时, 直接退出
LDB AL , PA GEE; 在区域 E1 时, 修改为 E2
ORB AL , # 08H
LDB PA GEE,AL ; 修改为 E2 完成
LDB COM , # 00H ; 设置区域 E2 的列地址为 0
L CALL PR 3
CCW _ 8: DJN Z COUN T T , CCW _ 4
LDB AL , PA GEE
ANDB AL , # 80H
JN E CCW _ 9; 判断 PA GEE 最高位, 为 1 则退出
LDB AL , PA GEE
IN CB AL
ORB AL , # 80H
ANDB AL , # 0F7H
LDB PA GEE,AL
LDB COD E, # 10H ; 间址寄存器设置为 16
JM P CCW _ 1; 循环显示
CCW _ 9: R ET
4. 3 注意问题
(1)在显示字符时对两片 SED 1520 的操作非常
频繁, 而且速度要求很高, 所以对 E1 和 E2 进行控
制时最好采用 196 的 IöO 端口, 否则将会导致显示
速度明显下降, 甚至无法显示。
(2) 字符的十六进制代码可以由相应的字模提
取软件生成, 在 h t tp: ööm cs51. yeah. netö网站上有
该程序的下载软件。特别注意的是生成的字模代码
使用要结合液晶显示器 SED 1502 内部 RAM 的显
示顺序和字模提取软件的设置情况来判断。否则将
会产生字符颠倒、错位或者乱码。
(3)为了提高显示器的稳定性和效果, 最好将
N C 引角接上 10K 电阻后与 GND 引脚短接, 并且
使模块和 196 之间的接线尽量短。要想达到最佳的
显示效果, 需要软件和硬件之间的相互配合, 具体情
况可以参考文献[ 2、3 ]。
5 结 束 语
现代仪器仪表的设计, 以液晶显示器作为显示
输出部件正逐渐成为一种热潮,M GL S- 12032 和
M CS196 接口的系统是目前应用较为广泛的一类,
文中详细介绍了它们的接口电路、程序编辑和需要
注意的问题。用户应该根据自己的需要仔细、灵活地
加以设计。
参考文献:
[ 1 ] 孙涵芳. In tel 16 位单片机[M ]. 北京: 北京航空航天大
学出版社. 1995.
[2 ] 汪建, 孙开放, 章述汉. M CS- 96 系列单片机原理及应
用技术[M ]. 武汉: 华中理工大学出版社, 1999.
[3 ] 李微, 郭强. 液晶显示应用技术[M ]. 北京: 电子工业出
版社, 2000.
·46· 微 处 理 机 2004 年
© 1995-2005 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.