旋转编码器控制12864液晶多级菜单显示
12864液晶屏幕使用说明及程序

12864使用说明一、串/并接口1.1 串口接口管脚信号*注释1:如在实际应用中仅使用并口通讯模式,可将PSB 接固定高电平。
*注释2:模块内部接有上电复位电路,因此在不需要经常复位的场合可将该端悬空。
*注释3:如背光和模块共用一个电源,可以将模块上的JA、JK 用焊锡短接。
1.2 并行接口管脚信号*注释1:如在实际应用中仅使用并口通讯模式,可将PSB 接固定高电平。
*注释2:模块内部接有上电复位电路,因此在不需要经常复位的场合可将该端悬空。
*注释3:如背光和模块共用一个电源,可以将模块上的JA、JK 用焊锡短接。
二、模块主要硬件构成说明控制器接口信号说明:2.1、RS,R/W的配合选择决定控制界面的4种模式:2.2、E信号●忙标志BFBF 标志提供内部工作情况.BF=1 表示模块在进行内部操作,此时模块不接受外部指令和数据.BF=0 时, 模块为准备状态,随时可接受外部指令和数据.利用STATUS RD 指令,可以将BF 读到DB7 总线,从而检验模块之工作状态.●字型产生ROM(CGROM)字型产生ROM(CGROM)提供8192 个此触发器是用于模块屏幕显示开和关的控制。
DFF=1 为开显示(DISPLAY ON),DDRAM 的内容就显示在屏幕上,DFF=0 为关显示(DISPLAY OFF)。
DFF 的状态是指令DISPLAY ON/OFF 和RST 信号控制的。
●显示数据RAM(DDRAM)模块内部显示数据 RAM 提供 64×2 个位元组的空间,最多可控制 4 行 16 字(64 个字)的中文字型显示,当写入显示数据 RAM 时,可分别显示 CGROM 与CGRAM 的字型;此模块可显示三种字型,分别是半角英、数字型(16*8)、CGRAM 字型及 CGROM 的中文字型。
三种字型的选择,由在 DDRAM 中写入的编码选择,在0000H—0006H 的编码中(其代码分别是0000、0002、0004、0006 共4 个)将选择 CGRAM 的自定义字型,02H—7FH 的编码中将选择半角英数字的字型,至于A1 以上的编码将自动的结合下一个位元组,组成两个位元组的编码形成中文字型的编码BIG5(A140—D75F),GB(A1A0-F7FFH)。
12864点阵型液晶显示屏的工作原理

12864点阵型液晶显示屏的工作原理12864点阵型液晶显示屏的基本原理与使用方法转自点阵LCD的显示原理在数字电路中,所有的数据都是以0和1保存的,对LCD控制器进行不同的数据操作,可以得到不同的结果。
对于显示英文操作,由于英文字母种类很少,只需要8位(一字节)即可。
而对于中文,常用却有6000以上,于是我们的DOS前辈想了一个办法,就是将ASCII表的高128个很少用到的数值以两个为一组来表示汉字,即汉字的内码。
而剩下的低128位则留给英文字符使用,即英文的内码。
那么,得到了汉字的内码后,还仅是一组数字,那又如何在屏幕上去显示呢?这就涉及到文字的字模,字模虽然也是一组数字,但它的意义却与数字的意义有了根本的变化,它是用数字的各位信息来记载英文或汉字的形状,如英文的'A'在字模的记载方式如图1所示:图1 “A”字模图而中文的“你”在字模中的记载却如图2所示:图2 “你”字模图12864点阵型LCD简介12864是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及128×64全点阵液晶显示器组成。
可完成图形显示,也可以显示8×4个(16×16点阵)汉字。
管脚号管脚名称LEVER 管脚功能描述1 VSS 0 电源地2 VDD +5.0V 电源电压3 V0 - 液晶显示器驱动电压4 D/I(RS) H/L D/I=“H”,表示DB7∽DB0为显示数据D/I=“L”,表示DB7∽DB0为显示指令数据5 R/W H/L R/W=“H”,E=“H”数据被读到DB7∽DB0R/W=“L”,E=“H→L”数据被写到IR或DR 6 E H/L R/W=“L”,E信号下降沿锁存DB7∽DB0R/W=“H”,E=“H”DDRA M数据读到DB7∽DB07 DB0 H/L 数据线8 DB1 H/L 数据线9 DB2 H/L 数据线10 DB3 H/L 数据线11 DB4 H/L 数据线12 DB5 H/L 数据线13 DB6 H/L 数据线14 DB7 H/L 数据线15 CS1 H/L H:选择芯片(右半屏)信号16 CS2 H/L H:选择芯片(左半屏)信号17 RET H/L 复位信号,低电平复位18 VOUT -10V LCD驱动负电压19 LED+ - LED背光板电源20 LED- - LED背光板电源表1:12864LCD的引脚说明在使用12864LCD前先必须了解以下功能器件才能进行编程。
12864液晶图像显示图文教程——最全版

由图可以看到水平坐标一个单位是两字节(即 16 位 D15~D0),X 地址会自动加 1,是直接加一个单位 (即两字节 16 位),比如 0001(也即 0X80+000X80+01),从第一行第一列跳到第一行第二列。 代码: void display_image(uchar *p) { uchar i,j; write_cmd(0x34);//扩充指令集动作 write_cmd(0x34);//关绘图显示功能 /*上半屏显示设置*/ for(i=0;i<32;i++)//上半屏 { write_cmd(0x80+i);//垂直地址 write_cmd(0x80); //水平地址 for(j=0;j<16;j++) { write_data(*p);//连续写入 16 个字节 p++; } } /*下半屏半屏显示设置*/ for(i=0;i<32;i++)//下半屏 { write_cmd(0x80+i);//垂直地址 write_cmd(0x88);//水平地址 for(j=0;j<16;j++)//连续写入 16 个字节 { write_data(*p); p++; } } write_cmd(0x36);//开绘图显示 write_cmd(0x30);//回到基本指令集 } 源程序: #include <reg52.h> #include "12864.h" X 坐标(水平)方向以 2 字节 Byte 为单位,Y 坐标(垂直) 方向以 1 位 Bit 为单位,先连续写入垂直与水平坐标,再写入 两字节数据到 GDRAM。 这里是这样进行的:i=0 时,j=0,1 时,写入两字节到垂直 (0X80+00)水平(0X80+00)这格(D15~D0)里;然后 X 坐标地址自增 1, 地址变为垂直 (0X80+00) , 水平 (0X80+01) 这格,在 j=2,3 时写入两字节,………一直到垂直(0X80+00) 水平(0X80+07)这格,在 j=14,15 时写入两字节,此时循环 for(j=0;j<16;j++)结束跳出,刚好第一行 128 位写完数据;然后 i++,开始写第二行……
12864系列点阵型液晶显示模块

12864系列点阵型液晶显⽰模块12864系列点阵型液晶显⽰模块⼀、OCM12864液晶显⽰模块概述⼀、OCM12864液晶显⽰模块概述1.OCM12864液晶显⽰模块是128×64点阵型液晶显⽰模块,可显⽰各种字符及图形,可与CPU直接接⼝,具有8位标准数据总线、6条控制线及电源线。
采⽤KS0107控制IC。
2.外观尺⼨:113×65×11mm(ocm12864-1), 93×70×10mm(ocm12864-2)78×70×10mm(ocm12864-3),3.视域尺⼨:73.4×38.8mm(ocm12864-1) 70.7×38mm(ocm12864-2),64×44mm(ocm12864-3)4.重量:⼤约 gl 补充说明:外观尺⼨可根据⽤户的要求进⾏适度调整。
⼆、最⼤⼯作范围1、逻辑⼯作电压(Vcc):4.5~5.5V2、电源地(GND):0V3、LCD驱动电压(Vee):0~-10V4、输⼊电压:Vee~Vdd5、⼯作温度(Ta):0~55℃(常温) / -20~70℃(宽温)6、保存温度(Tstg):-10~65℃三、电⽓特性(测试条件 Ta=25,Vdd=5.0+/-0.25V)1、输⼊⾼电平(Vih):3.5Vmin2、输⼊低电平(Vil):0.55Vmax3、输出⾼电平(Voh):3.75Vmin九、读写模块程序举例l 写指令⼦程序(INST)SETB ECLR D_ICLR R_WMOV P1, ACLR ERETl 写数据⼦程序(DATA)SETB ESETB D_ICLR R_WMOV P1, ACLR ERETl 写⼀页显⽰RAM数据(假设指令⼦程序为INST,数据⼦程序为DATA)MOV A,#0B8HLCALL INST ;置页地址为0页MOV A,#40HLCALL INST ;置列地址为0列MOV R2,#40HMOV R1,#00HMOV DPTR,#ADDRLOOP:MOV A,R1MOVC A,@A+DPTRLCALL DATAINC R1DJNZ R2, LOOP12864系列点阵型液晶显⽰模块⼀、OCM12864液晶显⽰模块概述⼀、OCM12864液晶显⽰模块概述1.OCM12864液晶显⽰模块是128×64点阵型液晶显⽰模块,可显⽰各种字符及图形,可与CPU直接接⼝,具有8位标准数据总线、6条控制线及电源线。
12864液晶按键菜单程序

write_dat(dis3[i]);
}
write_cmd(0x98);
for(i=0;i<16;i++)
{
write_dat(dis4[i]);
}
}
if(count1==2) //按下选择按钮2次
uchar code dis1_[] = {"系统初始化. "};
uchar code dis2_[] = {"系统初始化.. "};
uchar code dis3_[] = {"系统初始化.. "};
uchar code dis4_[] = {"按选择键开始! "};
uchar code dis1_6[] = {" 摄像头 "};
uchar code dis2_6[] = {" "};
uchar code dis3_6[] = {" "};
uchar code dis4_6[] = {"保存拍照——返回 "};
write_cmd(0x90);
for(i=0;i<16;i++)
{
write_dat(dis3_[i]);
}
delay_1ms(500);
write_cmd(0x90);
for(i=0;i<16;i++)
{
write_dat(dis4_[i]);
}
write_cmd(0x30); //基本指令操作
delay_1ms(2);
write_cmd(0x0C); //显示开,关光标
12864中文图形点阵液晶显示模块使用说明书

72us
读出 RAM
的值
1 1 D7
D6
D5
D4
D3
D2
D1
D0
从 内 部 RAM 读 取 数 据 (DDRAM/CGRAM/GDRAM)
72us
指令表 2:(RE=1:扩充指令集)
指令
指令码
RS RW DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
说明
执行 时间 (540K HZ)
功能:设定 CGRAM 地址到地址计数器(AC),需确定扩充指令中 SR=0(卷动地址或 RAM 地址选择)
地址
设定 CGRAM 地址到地址计数器(AC)
1 AC5 AC4 AC3 AC2 AC1 AC0 需确定扩充指令中 SR=0(卷动地址或 72us RAM 地址选择)
设定 DDRAM 0 0 1 AC6 AC5 AC4 AC3 AC2 AC1 AC0 设定 DDRAM 地址到地址计数器(AC) 72us
I/O
DB5
I/O
DB6
I/O
DB7
I/O
PSB
I
NC
-
/RST
I
VEE
-
LED+
-
LED-
-
说明
电源地
逻辑电源正(+5V)
LCD 对比度调节电压
并行模式时选择数据或指令
H: 数据 L: 指令
串行模式时选择模块与否
H: 选择 L: 不选择
并行模式时控制读写
H: 读
L: 写
串行模式时输入数据
并行模式时使能端
L
L
L
H
DL
X
RE
X
12864液晶屏使用手册

12864液晶屏手册一、液晶显示模块概述12864A-1汉字图形点阵液晶显示模块,可显示汉字及图形,内置8192个中文汉字(16X16点阵,16*8=128,16*4=64, 一行只能写8个汉字,4行;)、128个字符(8X16点阵)及64X256点阵显示RAM( GDRAM 主要技术参数和显示特性:电源:VDD ~+5V(内置升压电路,无需负压);显示内容:128列X 64行(128表示点数)显示颜色:黄绿显示角度:6: 00钟直视LCD 类型:STN与MC成口 : 8位或4位并行/3位串行配置LED背光多种软件功能:光标显示、画面移位、自定义字符、睡眠模式等、外形尺寸1.外形尺寸图□U UPN12864A2.主要外形尺寸二、模块引脚说明逻辑工作电压(VDD):〜电源地(GND): 0V工作温度(Ta) : 0〜60C (常温)/ -20 〜75 C (宽温)三、接口时序模块有并行和串行两种连接方法(时序如下):8位并行连接时序图MP如资料到模块MPLM模块读出资料2、串行连接时序图串行数据传送共分三个字节完成:第一字节:串口控制一格式11111ABCA为数据传送方向控制: H表示数据从LCD到MCU L表示数据从MCHiJ LCDB C 为数据类型选择:固定为0H表示数据是显示数据,L表示数据是控制指令第二字节:(并行)8位数据的高 4 位一格式DDDD0000第三字节:(并行)8位数据的低 4 位一格式0000DDDD 串行接口时序参数:(测试条件:T=25C VDD=四、用户指令集备注:1、当模块在接受指令前,微处理顺必须先确认模块内部处于非忙碌状态,即读取BF标志时BF需为0,方可接受新的指令:如果在送出一个指令前并不检查BF标志,(一般在输入每天指令前加个delay )那么在前一个指令和这个指令中间必须延迟一段较长的时间,即是等待前一个指令确实执行完成,指令执行的时间请参考指令表中的个别指令说明。
12864液晶多级菜单设计

- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(5)、工作电流:2.0mAmax
5、接口说明
管 管脚 电平 脚 号
1 VSS 0V
2 VDD 5.0V
3 V0
说明
逻辑电源地。 逻辑电源正。 LCD 驱动电压,应用时在 VEE 与 V0 之间加一 10K 可调电阻。
4 D/I H/L
5 R/W H/L
6
E H.H/L
7 DB0 H/L
8 DB1 H/L
Line 0 1/0 1/0 1/0 1/0 …………
1/0 1/0 1/0 DB0
Line 1 1/0 1/0 1/0 1/0 …………
1/0 1/0 1/0 DB1
Line 2 1/0 1/0 1/0 1/0 ………… X=0
1/0 1/0 1/0 DB2
Line 3 1/0 1/0 1/0 1/0 …………
(4)、输入电压:Vee~Vdd
(5)、工作温度
:0~55℃(常温) / -20~70℃(宽温)
(6)、保存温度
:-10~65℃
4、电气特性
(1)、输入高电平
:3.5Vmin
(2)、输入低电平(Vil):0.55Vmax
(3)、输出高电平( ):3.75Vmin
(4)、输出低电平(Vol):1.0Vmax
(1)、显示开/关设置
L
L
L
L
H
H
H
H
H H/L
功能:设置屏幕显示开/关。 DB0=H,开显示;DB0=L,关显示。不影响显示 RAM(DD RAM)中的内容。
(2)、设置显示起始行
L
L
H
H
行地址(0~63)
功能:执行该命令后,所设置的行将显示在屏幕的第一行。显示起始行是由 Z 地址计数 器控制的,该命令自动将 A0-A5 位地址送入 Z 地址计数器,起始地址可以是 0-63 范围 内任意一行。Z 地址计数器具有循环计数功能,用于显示行扫描同步,当扫描完一行后 自动加一。
LCD 驱动电源。
背光电源,LED+。
背光电源,LED-。
(2)、读操作时序 (3)、时序参数
void write_com(uchar com)//写命令 {
rs=0; rw=0; P0=com; e=1; e=0; } void write_data(uchar date)//写数据 { rs=1; rw=0; P0=date; e=1; e=0; } 7、指令说明
根据以上功能,我们建立一个结构体,里面有 5 个成员,有 4 个字符型和一个指针变 量,4 个字符型变量为当前以及旋转编码器左右旋转和按下的索引号,最后一个指针变量指 向需执行的函数(也就是菜单显示的内容)。这样我们就可以定义一个结构体数组,在结构
体数组里为每一个菜单项编制一个单独的函数,并根据菜单的嵌套顺序排好本项菜单的索引 号以及本级菜单上下或者左右移动的索引号和上下级菜单的索引号。具体程序如下:
(3)、设置页地址
L
L
H
L
H
H
H
页地址(0~7)
功能:执行本指令后,下面的读写操作将在指定页内,直到重新设置。页地址就是 DD RAM 的行地址,页地址存储在 X 地址计数器中,A2-A0 可表示 8 页,读写数据对页地址没有 影响,除本指令可改变页地址外,复位信号(RST)可把页地址计数器内容清零。
2、KS0108 控制器系列产品的主要特性
(1)、8 位并行数据接口 。 (2)、拥有 64*64(512 字节)的显示存储器,其数据直接作为现实驱动信号。 (3)、简单的操作指令。
3、最大工作范围
(1)、逻辑工作电压(Vcc):4.5~5.5
(2)、电源地(GND):0V
(3)、LCD 驱动电压
:0~-10
(2)、中断法 2 脚接地,1、3 脚一脚接单片机外部中断 0 或外部中断 1,另一脚接 IO 口。将外部
中断设为下降沿触发,当旋转时,接外部中断引脚的电平由高变低,则进入外部中断服务程 序,在中断服务程序中判断另一脚的电平的高低来判断左旋还是右旋。
三、多级菜单显示的设计
液晶的多级菜单显示,就是有一个主菜单,主菜单下有子菜单,子菜单可以有多级, 也就是子菜单下还有子菜单。通过旋转编码器的左右旋转控制子菜单之间上下或左右的切 换,也就是选中子菜单,然后按下开关键就进入这个子菜单的内容,这就是液晶的多级菜单 显示。(说的通俗一点,菜单显示本质上就是页面的切换)
1/0 1/0 1/0 DB7
………… ………… …………
Line60 1/0 1/0 1/0 1/0 ………… X=7
Line61 1/0 1/0 1/0 1/0 …………
1/0 1/0 1/0 DB4 1/0 1/0 1/0 DB5
Line62 1/0 1/0 1/0 1/0 …………
1/0 1/0 1/0 DB6
4、设置列地址
L
L
L
H
列地址(0~63)
功能: DD RAM 的列地址存储在 Y 地址计数器中,读写数据对列地址有影响,在对 DD RAM 进行读写操作后,Y 地址自动加一。
(5)、状态检测
H
L
BF L ON/OFF RST L
L
L
L
功能:读忙信号标志位(BF)、复位标志位(RST)以及显示状态位(ON/OFF)。
旋转编码器控制 12864 液晶(ks0108)多级菜单显示
吴煌殿 (西南科技大学信息工程学院)
一、12864 液晶(ks0108 控制器)的基本用法
1、概述
12864 液晶就是行有 128 个点、列有 64 个点的液晶,它的控制器有很多种,如 ST7920、 T6963、KS0108 等,能显示字符、汉字和图形。有些控制器带有中文字库(ST7920),有些 是没有字库的(KS0108)。下面讲的 12864 液晶的用法是基于 KS0108 控制器的点阵式液晶。
Line63 1/0 1/0 1/0 1/0 …………
1/0 1/0 1/0 DB7
9、与 MCU 接口电路
10、实物图
二、旋转编码器的原理及用法
1、概述
在电子设计中,经常要用到旋转编码开关,也就是旋转编码。它具有左旋、右旋功能, 有的还有按下功能。当左右旋转时,它的端子就会输出脉冲,常见的每转一周有 20 个脉冲 等。下面介绍一种常用的 EC11 型旋转编码器的原理以及用法。
BF=H:内部正在执行操作;
BF=L:空闲状态。
RST=H:正处于复位初始化状态; RST=L:正常状态。
ON/OFF=H:表示显示关闭;
ON/OFF=L:表示显示开。
(6)、写显示数据
L
H
D7 D6 D5 D4 D3 D2 D1 D0
功能:写数据到 DD RAM,DD RAM 是存储图形显示数据的,写指令执行后 Y 地址计数器 自动加 1。D7-D0 位数据为 1 表示显示,数据为 0 表示不显示。写数据到 DD RAM 前,要 先执行“设置页地址”及“设置列地址”命令。
读 写选择: 高电平:读;低电平:写。
读写使能,高电平有效,下降沿锁定数据。
数据输入输出引脚。
数据输入输出引脚。
数据输入输出引脚。
数据输入输出引脚。
数据输入输出引脚。
数据输入输出引脚。
数据输入输出引脚。
数据输入输出引脚。
片选择信号,低电平时选择前 64 列。
片选择信号,低电平时选择后 64 列。
复位信号,低电平有效。
switch(counter) { case 1: menu_index=table[menu_index].down; counter=0; break; case 2: menu_index=table[menu_index].up; counter=0; break; case 3: menu_index=table[menu_index].enter; counter=0; break; default: break; } current_operation_index=table[menu_index].current_operation; (*current_operation_index)();
1/0 1/0 1/0 DB3
Line 4 1/0 1/0 1/0 1/0 …………
1/0 1/0 1/0 DB4
Line 5 1/0 1/0 1/0 1/0 …………
1/0 1/0 1/0 DB5
Line 6 1/0 1/0 1/0 1/0 …………
1/0 1/0 1/0 DB6
Line 7 1/0 1/0 1/0 1/0 …………
9 DB2 H/L
10 DB3 H/L
11 DB4 H/L
12 DB DB7 H/L
15 CS1 H/L
16 CS2
H
17 RET
L
18 VEE -10V
19 BL
AC
20 BL
AC
6、工作时序
(1)、写操作时序
数据 指令选择:高电平:数据 低电平:指令
将送入显示 RAM; 将送入指令寄存器执行。
typedef struct { uchar current;//当前状态索引号 uchar up;//编码器左旋转向的状态索引号 uchar down;//编码器右旋转向的状态索引号 uchar enter;//按下键按下转向的状态索引号 void (*current_operation)();//当前状态执行的函数 } encoder_table; 举例定义结构体数组 encoder_table code table[]= { {0,3,1,4,(*menu0)}, {1,0,2,5,(*menu1)}, {2,1,3,6,(*menu2)}, {3,2,0,7,(*menu3)}, {4,4,4,0,(*menu4)}, {5,5,5,1,(*menu5)}, {6,6,6,2,(*menu6)}, {7,7,7,3,(*menu7)} };