SPCE061A与液晶模块HS12864-1的接口及其编程介绍
扫描二维码
随时随地手机看文章
在以单片机为核心的嵌入式测控系统中,单片机与显示器件的接口是一个必不可少的环节,具体工作包括选择显示的器件类型,接口采用串行或并行方式以及显示驱动的确定等问题。典型的显示器件是LED数码管,其亮度高,适应于大多数应用场合。缺点是接口电路复杂,功耗高。液晶显示器件是利用液晶的电光效应制作的,具有功耗低、接口控制方便等优点[1],而且模块的接口信号和操作指令具有广泛的兼容性,并能直接与单片机接口,它还具有专用指令,可方便地实现各种不同的操作,同样的显示面积LCD其功耗比LED显示器小几百倍,所以它特别适宜与COMS电路直接相配,液晶显示器件已成为当代高新技术产业(信息产业中最重要的信息处理手段之一,在各类测量及控制仪表中被广泛的应用。
液晶显示器件可分为波段式、字符式和点阵式。其中,点阵式液晶显示器件不仅可以显示字符、数字,还可以显示各种图形、曲线及汉字,并且可以实现分区开窗口、反转、闪烁等动态显示功能,当在点阵式LCD上显示汉字时,应先取得汉字的点阵构成数据,然后将其写入点阵式LCD的显示存储器中进行显示。本文介绍基于凌阳SPCE061A单片机的液晶显示控制设计。
图1 HS12864-1的结构
HS12864-1具有简单而功能较强的指令集,可实现字符移动、闪烁等显示功能,共有7 条指令,单片机只需通过D/I、R/W、DB0~DB7送入数据或指令便可显示其指定内容或显示方式。表1为HS12864-1的指令一览表。
指 令 |
指 令 码
|
功能
|
|||||||||
|
R/W
|
D/I
|
D7
|
D6
|
D5
|
D4
|
D3
|
D2
|
D1
|
D0
|
|
显示
|
0
|
0
|
0
|
0
|
1
|
1
|
1
|
1
|
1
|
1/0
|
控制显示器的开关,
|
起始行
|
0
|
0
|
1
|
1
|
显示起始行(0····63)
|
指定开始显示行
|
|||||
设置X地址
|
0
|
0
|
1
|
0
|
1
|
1
|
1
|
X:0···7
|
设置X地址
|
||
设置Y地址
|
0
|
0
|
0
|
1
|
Y地址(0···63)
|
设置地址(Y地址)
|
|||||
读
状
态
|
1
|
0
|
B
U
S
Y
|
0
|
ON/
OFF
|
R
S
T
|
0
|
0
|
0
|
0
|
读取状态RST 1:复位0:正常ON/OFF 1:显示开 0:显示关BUSY 0:READY 1:IN OPERATION
|
写数据
|
0
|
1
|
显示数据
|
数据写入DDRAM
|
|||||||
读数据
|
1
|
1
|
显示数据
|
数据读入DDRAM
|
3 HS12864-1与SPCE061A单片机的硬件接口设计
SPCE061A 是继SPCE500A等之后凌阳科技推出的又一款16位结构的微控制器。CPU内核采用凌阳最新推出的16位u nsp微处理器芯片,比MCS-51 8位机的MCU集成度更高,使用更加灵活方便,缩短了开发周期和成本。
采用RISC 的SPCE061A 比8位的MCS 51系列执行效率高,速度更快,较宽的工作电压,低功耗抗干扰的设计,使061A在电池供电的应用领域更具特色,其内置2K字SRAM和32K FLASH,32位通用可编程输入/输出端口,具有WatchDog等功能,在仪器仪表、工业控制和通讯产品等方面应用日益广泛。
在程序设计方面μ'nSP?单片机的汇编指令针对C语言进行了优化,所以其汇编的指令格式很多地方直接类似于C语言。另外其开发仿真环境IDE也直接提供了C语言的开发环境,C函数和汇编函数可以方便地进行相互调用[2,3]。HS12864-1与SPCE061A单片机的硬件接口电路见图2。
图2中采用并行通信方式,单片机的IOA0-IOA7口与液晶模块的DB0-DB7口相连作为数据输入输出用;即IOB0- IOB 4口与液晶模组的CS1、CS2、D/I、R/W、E相连作为单片机对液晶的控制口。
4 显示程序设计
在液晶上显示整屏字符或图像有两种方法:一种是将所要显示的字模数据一次性发送到显示数据RAM中;另外一种是在屏幕上指定位置进行单独显示[4]。两种方法都要在控制器空闲的条件下进行操作,在操作之前都要先读取忙标志,判断控制器是否处于忙状态,在一般情况下,可以用延时等待的方法代替。
本系统程序主要包括主程序和几个子程序块: LCD初始化, 液晶显示屏选择,LCD显示,还有若干个控制子程序。主程序分别调用这些子程序实现对液晶显示器操作控制。程序流程图见图3。
图3 程序流程图
凌阳单片机的编程语言常用的有二种:汇编语言和C语言。汇编语言的机器代码生成效率很高但可读性不强,而C语言在大多数情况下其机器代码生成效率和汇编语言相当,但可读性和可移植性却远远超过汇编语言,而且C语言还可以嵌入汇编来解决高时效性的代码编写问题。对于开发周期来说,用C语言的开发周期通常要小于汇编语言很多。综合以上C语言的优点,在设计时选择了C语言。
这里给出右半屏送命令/数据程序,说明SPCE061A单片机程序设计中对IOA /IOB口的设置。凌阳单片机控制液晶显示部分程序如下:
本系统调试采用的是凌阳61板(即SPCE061A EMU BOARD)和u'nSP IDE 集成开发环境。硬件调试较为简单,只需调节好液晶的对比度和背光亮度即可;在软件方面,使用凌阳u'nSP IDE 软件来编译调试液晶程序。
在调试中字模数据来自字模生成软件Zimo3,其生成的字模数据在本程序中不能直接使用,运行结果会出现字体的上下部分颠倒,需要将其顺序反转。
调试效果达到了程序设计的要求。