LCD12864 资料
更新时间:2024-07-03 19:07:01 阅读量: 综合文库 文档下载
- Lcd128接触器接线推荐度:
- 相关推荐
51汇编液晶显示之LCD12864
2009年10月11日 星期日 01:19
这个程序浪费了我很多时间,因为我一直没有找到datasheet,12864的型号实在太多了。为了这个程序,我在网上找了很多相关的例程,但大多都是C语言写的,可惜俺没学过C,用起来不顺手,遂将其转成汇编,但是转后,程序运行不正常,郁闷啊。好不容易找个汇编的吧,又写得很乱,没有头绪,没有datasheet,看起来很费劲,最后终于找到一个相关的datasheet,这才完成这个程序。总结一下:与其费力分析别人的程序,不如看datasheet自己写。下面总结一下datasheet。
→↑← ONE→且看datasheet: 12864点阵型LCD简介
12864是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及
128×64全点阵液晶显示器组成。可完成图形显示,也可以显示8×4个(16×16点阵)汉字。 管脚号 1 2 3 4
管脚名称 VSS VDD V0 D/I(RS)
LEVER 0 +5.0V - H/L
管脚功能描述
电源地 电源电压
液晶显示器驱动电压
D/I=“H”,表示DB7∽DB0为显示数据 D/I=“L”,表示DB7∽DB0为显示指令数据 R/W=“H”,E=“H”数据被读到DB7∽DB0 R/W=“L”,E=“H→L”数据被写到IR或DR R/W=“L”,E信号下降沿锁存DB7∽DB0
5 R/W H/L
6 E H/L
7 8 9 10 11 12 13 14 15 16 17 18 19 DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 CS1 CS2 RET VOUT LED+
R/W=“H”,E=“H”DDRAM数据读到DB7∽DB0
H/L 数据线 H/L 数据线 H/L 数据线 H/L 数据线 H/L 数据线 H/L 数据线 H/L 数据线 H/L 数据线
H/L H:选择芯片(右半屏)信号 H/L H:选择芯片(左半屏)信号 H/L 复位信号,低电平复位 -10V LCD驱动负电压 - LED背光板电源
20 LED- - LED背光板电源
12864LCD的指令系统及时序
该类液晶显示模块(即KS0108B及其兼容控制驱动器)的指令系统比较简单,总共只有七种。其指令表如表2所示: 指令名称
控制信号 控制代码
R/W RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
显示开关 0 0 0 0 1 1 1 1 1 1/0 显示起始行设置 0 0 1 1 X X X X X X 页设置 0 0 1 0 1 1 1 X X X 列地址设置 0 0 0 1 X X X X X X 读状态 1 0 BUSY 0 ON/OFF RST 0 0 0 0 写数据 0 1 写数据 读数据 1 1 读数据 关于行列和页的解释:从上向下共64行,每8行为一页,共八页,从左到右共128列,左半屏0到63列,右半屏0到63列。显示的时候,每页以列为单位显示。
→↑← TWO→程序实例:
;############################################# ;********************************************* ;程序名称:LCD12864 ;主控芯片:89c51,12MHZ
;编者心得:看别人程序不如仔细看datasheet ;移用核心:看datasheet按需要修改即可 ;程序编写者:buyixin (不亦心)
;编写时间:2009年10月10日 20:33 ;不亦心的博客:http://hi.http://www.wodefanwen.com//不亦心/ ;********************************************* ;############################################# ;//////变量申明/////////////////////////////// E BIT P3.0 ;LCD 使能端 RW BIT P3.1 ;LCD 读/写端 RS BIT P3.2 ;命令/数据控制端 CS1 BIT P3.3 ;左半屏 CS2 BIT P3.4 ;右半屏 WR_DATA DATA 30H ;数据暂存区 Y DATA 31H ;列数据暂存区
;//////主程序开始//////////////////////////////
ORG 0000H AJMP START ORG 0030H
START: MOV SP,#60H ;设置堆栈 LCALL CLR_Screen ;调用清屏子程序 LCALL Init ;调用初始化子程序
;------左半屏显示------------------------------ REP: MOV R2,#00H ;用于记录显示个数 MOV Y,#00H ;用于增加LCD列数 MOV DPTR,#TAB ;取字码
;------左上半字显示------------------------------ REP1: MOV R3,#10H ;记录列数
MOV WR_DATA,#0C0H ;设置行数(第一行开始显示) LCALL WR_Left_COM ;调用左半屏写命令子程序 MOV WR_DATA,#0BBH ;设置页数(第4页) LCALL WR_Left_COM
CLR A ;设置显示开始列数 ADD A,Y ADD A,#50H MOV WR_DATA,A LCALL WR_Left_COM REP2: MOV A,#00H MOVC A,@A+DPTR MOV WR_DATA,A
LCALL WR_Left_Byte ;调用左半屏写数据子程序 INC DPTR DJNZ R3,REP2
;------左下半字显示-------------------------------- MOV R3,#10H;左下 MOV WR_DATA,#0C0H LCALL WR_Left_COM
MOV WR_DATA,#0BCH ;第五页 LCALL WR_Left_COM CLR A ADD A,Y ADD A,#50H MOV WR_DATA,A LCALL WR_Left_COM REP3: MOV A,#00H MOVC A,@A+DPTR MOV WR_DATA,A LCALL WR_Left_Byte INC DPTR DJNZ R3,REP3
;------实现左半屏显示3个字--------------------------- INC R2 MOV A,y ADD A,#10H MOV Y,A
CJNE R2,#03H,REP1
;------右半屏显示------------------------------------ MOV R2,#00H MOV Y,#00H
;------右上半字显示---------------------------------- REP4: MOV R3,#10H MOV WR_DATA,#0C0H
LCALL WR_Right_COM ;调用右半屏写入命令子程序 MOV WR_DATA,#0BBH LCALL WR_Right_COM CLR A ADD A,Y ADD A,#40H MOV WR_DATA,A LCALL WR_Right_COM REP5: MOV A,#00H MOVC A,@A+DPTR MOV WR_DATA,A
LCALL WR_Right_Byte ;调用右半屏写入数据子程序 INC DPTR DJNZ R3,REP5
;------右下半字显示---------------------------------- MOV R3,#10H
MOV WR_DATA,#0C0H LCALL WR_Right_COM MOV WR_DATA,#0BCH LCALL WR_Right_COM CLR A ADD A,Y ADD A,#40H MOV WR_DATA,A LCALL WR_Right_COM REP6: MOV A,#00H MOVC A,@A+DPTR MOV WR_DATA,A LCALL WR_Right_Byte INC DPTR DJNZ R3,REP6
;------实现右半屏显示2个字-----------------------------
INC R2 MOV A,y ADD A,#10H MOV Y,A
CJNE R2,#02H,REP4
;------循环显示---------------------------------------- LJMP REP
;//////初始化子程序/////////////////////////////////// Init: MOV WR_DATA,#3EH ;关显示
LCALL WR_COM ;调用全屏写入命令子程序 MOV WR_DATA,#3FH ;开显示 LCALL WR_COM RET
;//////左半屏写入字节子程序/////////////////////////// WR_Left_Byte: CLR CS1 ;选择左半屏 SETB CS2
CLR RW ;写
SETB RS ;选择写命令 MOV A,WR_DATA SETB E MOV P0,A CLR E
LCALL DELAY ;调用延时子程序,这里用延时来代替忙信号检测 RET
;//////右半屏写入字节子程序/////////////////////////////// WR_Right_Byte: SETB CS1 CLR CS2 CLR RW SETB RS
MOV A,WR_DATA SETB E MOV P0,A CLR E
LCALL DELAY RET
;//////全屏写入字节子程序//////////////////////////////// WR_Byte: CLR CS1 CLR CS2 CLR RW SETB RS
MOV A,WR_DATA SETB E MOV P0,A CLR E
LCALL DELAY RET
;//////左半屏写入命令子程序///////////////////////////// WR_Left_COM: CLR CS1 SETB CS2 CLR RS CLR RW
MOV A,WR_DATA SETB E MOV P0,A CLR E
LCALL DELAY RET
;//////右半屏写入命令子程序////////////////////////////////// WR_Right_COM: SETB CS1 CLR CS2 CLR RS CLR RW
MOV A,WR_DATA SETB E MOV P0,A CLR E
LCALL DELAY RET
;//////全屏写入命令字程序///////////////////////////////////// WR_COM: CLR CS1 CLR CS2 CLR RS CLR RW
MOV A,WR_DATA SETB E MOV P0,A CLR E
LCALL DELAY RET
;//////全屏清屏子程序////////////////////////////////////////// CLR_Screen: MOV WR_DATA,#0C0H LCALL WR_COM MOV R0,#0B8H MOV R1,#00H
LOOP: MOV WR_DATA,R0 LCALL WR_COM
MOV WR_DATA,#40H LCALL WR_COM
LOOP1: MOV WR_DATA,#0FFH ;全屏清黑(这里我是用反色显示汉字的) LCALL WR_Byte INC R1
CJNE R1,#40H,LOOP1 INC R0
CJNE R0,#0C0H,LOOP RET
;//////延时子程序////////////////////////////////// DELAY: MOV R7,#25H DJNZ R7,$ RET
;//////字型码表//////////////////////////////////// TAB:
;-- 文字: 不 --
;-- 隶书12; 此字体下对应的点阵为:宽x高=16x16 -- DB
0FFH,0FFH,0FFH,0DFH,0CFH,0CFH,0DFH,1FH,1FH,5FH,0DFH,0DFH,0DFH,0FFH,0FFH,0FFH DB
0FFH,0F7H,0F7H,0F3H,0FBH,0F9H,0FCH,0C0H,0C0H,0FFH,0FEH,0FCH,0F1H,0F3H,0F7H,0F7H
;-- 文字: 亦 --
;-- 隶书12; 此字体下对应的点阵为:宽x高=16x16 -- DB
0FFH,0BFH,0BFH,0BFH,3FH,0DFH,1FH,0CFH,0CFH,1FH,0DFH,9FH,9FH,0BFH,0BFH,0FFH DB
0FFH,0FFH,0EBH,0ECH,0E6H,0F3H,0F8H,0EFH,0EFH,0E0H,0FFH,0FEH,0FDH,0FBH,0FFH,0FFH
;-- 文字: 心 --
;-- 隶书12; 此字体下对应的点阵为:宽x高=16x16 -- DB
0FFH,0FFH,7FH,0FFH,7FH,0FFH,0FFH,3FH,8FH,0FFH,7FH,3FH,0BFH,0FFH,0FFH,0FFH DB
0F7H,0F1H,0F8H,0FFH,0FEH,0FEH,0FCH,0F9H,0F3H,0F1H,0E6H,0E7H,0C7H,0E7H,0E7H,0FFH
;-- 文字: 制 --
;-- 隶书12; 此字体下对应的点阵为:宽x高=16x16 -- DB
0FFH,7FH,0BFH,8FH,0BFH,0FH,2FH,3FH,0BFH,0FFH,1FH,0FFH,0CFH,0FH,0FFH,0
FFH DB
0FEH,0FEH,0EEH,0E0H,0FCH,0C0H,0FCH,0F9H,0E1H,0EFH,0E8H,0CFH,0C7H,0E0H,0FFH,0FFH
;-- 文字: 作 --
;-- 隶书12; 此字体下对应的点阵为:宽x高=16x16 -- DB
0FFH,9FH,9FH,1FH,1FH,6FH,0BFH,9FH,0CFH,0FH,9FH,9FH,9FH,0BFH,0BFH,0FFH DB
0FFH,0FFH,0FFH,0E0H,0E0H,0FFH,0FFH,0FFH,0FFH,0C0H,0FAH,0FAH,0FAH,0FAH,0FBH,0FFH
;//////程序结束///////////////////////////////////////////// END
→↑← THREE→硬件连接及仿真效果图(仅为仿真目的,不做实际应用)
正在阅读:
LCD12864 资料07-03
第7章 刚体的平面运动 - 图文04-12
中国空调清洗剂市场现状分析及投资策略研究报告(2015-2020)08-30
学生寒假生活小结5篇02-21
OSPF中的路由汇总配置03-09
根据以下案例,撰写一份谈判计划书12-21
中国人民大学法学考研跨考竞争激烈吗?07-22
创业服务新业态强势崛起03-12
地震展览馆翻译材料06-11
200平米新房北欧日式混搭装修效果图01-26
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- LCD12864
- 资料