LCD12864使用手册

LCD12864使用手册
LCD12864使用手册

文件型号LCD12864

文件类型服务文件

版本 1.0

图形点阵液晶显示模块使用手册

LCD12864

一.概述

HEM12864I是一种图形点阵液晶显示器。它主要采用动态驱动原理由行驱动—控制器和列驱动器两部分组成了128(列)×64(行)的全点阵液晶显示。此显示器采用了COB的软封装方式,通过导电橡胶和压框连接LCD,使其寿命长,连接可靠。

二.特性

1.工作电压为+5V±10% ,可自带驱动LCD所需的负电压。

2.全屏幕点阵,点阵数为128(列)×64(行),可显示8(/行)×4(行)个(16×16点阵)汉字,也可完成图形,字符的显示。

3.与CPU接口采用5条位控制总线和8位并行数据总线输入输出,适配M6800系列时序。

4.内部有显示数据锁存器。

5.简单的操作指令,显示开关设置,显示起始行设置,地址指针设置和数据读/写等指令。

三.外形尺寸

1.外形尺寸图

2.主要外形尺寸

项目标 准 尺 寸 单 位

模 块 体 积 54.0×50.0×6.5mm

定 位 尺 寸 49.0×45.0mm

视 域43.5×29.0 mm

行 列 点 阵 数 128×64dots

点 距 离 0.32×0.39mm

点 大 小0.28×0.35mm

四.硬件说明

1.引脚特性

2.

引脚号引脚名称 级 别 引脚功能描述

1 VSS0V电源地

2 VDD +5V 电源电压

3 VLCD 0~-10V LCD驱动负电压,要求VDD-VLCD=13V

4 RS H/L 寄存器选择信号

5 R/W H/L 读/写操作选择信号

6 E H/L 使能信号

7 DB0

8 DB1

9 DB2

10 DB3

H/L八位三态并行数据总线

11 DB4

12 DB5

13 DB6

14 DB7

15 CS1 H/L 片选信号,当CS1=H时,液晶左半屏显示

16 CS2 H/L 片选信号,当CS2=H时,液晶右半屏显示

17 /RES H/L 复位信号,低有效

18 VEE -10V 输出-10V的负电压(单电源供电)

19 BLA+5V 背光电源

20 BLK 0V 背光电源

2.原理简图

3.主要各部分详解9999999

1)显示数据RAM(DDRAM)

DDRAM(64×8×8 bits)是存储图形显示数据的。此RAM的每一位数据对应显示面板上一个点的显示(数据为H)与不显示(数据为L)。DDRAM的地址与显示位置关系对照图(见附录一)

2)I/O缓冲器(DB0~DB7)

I/O缓冲器为双向三态数据缓冲器。是LCM(液晶显示模块)内部总线与MPU总线的结合部。其作用是将两个不同时钟下工作的系统连接起来,实现通讯。I/O缓冲器在片选信号/CS 有效状态下,I/O缓冲器开放,实现LCM(液晶显示模块)与MPU之间的数据传递。当片选信号为无效状态时,I/O缓冲器将中断LCM(液晶显示模块)内部总线与MPU数据总线的联系,对外总线呈高阻状态,从而不影响MPU的其他数据操作功能。

3)输入寄存器

输入寄存器用于接收在MPU运行速度下传送给LCM(液晶显示模块)的数据并将其锁存在输入寄存器内,其输出将在LCM(液晶显示模块)内部工作时钟的运作

下将数据写入指令寄存器或显示存储器内。

4)输出寄存器

输出寄存器用于暂存从显示存储器读出的数据,在MPU读操作时,输出寄存器将当前锁存的数据通过I/O缓冲器送入MPU数据总线上。

5)指令寄存器

指令寄存器用于接收MPU发来的指令代码,通过译码将指令代码置入相关的寄存器或触发器内。

6)状态字寄存器

状态字寄存器是LCM(液晶显示模块)与MPU通讯时唯一的“握手”信号。状态字寄存器向MPU表示了LCM(液晶显示模块)当前的工作状态。尤其是状态字中的“忙”标志位是MPU在每次对LCM(液晶显示模块)访问时必须要读出判别的状态位。当处于“忙”标志位时,I/O缓冲器被封锁,此时MPU对LCM(液晶显示模块)的任何操作(除读状态字操作外)都将是无效的。

7)X地址寄存器

X地址寄存器是一个三位页地址寄存器,其输出控制着DDRAM中8个页面的选择,也是控制着数据传输通道的八选一选择器。X地址寄存器可以由MPU以指令形式设置。X地址寄存器没有自动修改功能,所以要想转换页面需要重新设置X地址寄存器的内容。

8)Y地址计数器

Y地址计数器是一个6位循环加一计数器。它管理某一页面上的64个单元。Y地址计数器可以由MPU以指令形式设置,它和页地址指针结合唯一选通显示存储器的一个单元,Y地址计数器具有自动加一功能。在显示存储器读/写操作后Y地址计数将自动加一。当计数器加至3FH后循环归零再继续加一。

9)Z地址计数器

Z地址计数器是一个6位地址计数器,用于确定当前显示行的扫描地址。Z地址计数器具有自动加一功能。它与行驱动器的行扫描输出同步,选择相应的列驱动的数据输出。

10)显示起始行寄存器

显示起始行寄存器是一个6位寄存器,它规定了显示存储器所对应显示屏上第一行的行号。该行的数据将作为显示屏上第一行显示状态的控制信号。

11)显示开/关触发器

显示开/关触发器的作用就是控制显示驱动输出的电平以控制显示屏的开关。在触发器输出为“关”电平时,显示数据锁存器的输入被封锁并将输出置“0”,从而使显示驱动输出全部为非选择波形,显示屏呈不显示状态。在触发器输出为“开”电平时,显示数据锁存器被控制,显示驱动输出受显示驱动数据总线上数据控制,显示屏将呈显示状态。

12)复位端/RES

复位端/RES 用于在LCM(液晶显示模块)上电时或需要时实现硬件电路对LCM(液晶显示模块)的复位。该复位功能将实现:

z 设置显示状态为关显示状态

z 显示起始寄存器清零。显示RAM 第一行对应显示屏上的第一行。 z 在复位期间状态字中RESET 位置“1”。 初始化条件:

项 目 名称 最小值标准值最大值 单位 Reset Time t RS 1.0 - - us Rise Time t R - - 200 ns

4.背光接线图

19 20 19 20 LED 背光 +5V 0V

EL 背光

EL ~ EL ~

五.电气特性

1.限定参数

项 目名称值单位备注Operating Voltage VDD-0.3 to +5.5 V *1

Supply Voltage VEE VDD-19.0 to VDD+0.3V *2

Driver Supply Voltage V B-0.3 to VDD+0.3 V *1,*3

Operating Temperature T OPR-20 to +70 ℃

Storage Temperature T STG-30 to +80 ℃

*1.Based on VSS=0V

*2.Applies to V LCD

*3.Applies to /CS,E, R/W,RS,DB0~DB7

2.直流特性(VDD=+5V±10%,VSS=0V,VDD-VLCD=8~17V,Ta=-20~+70℃)

项 目名称测试条件Min Typ Max 单位备注

I n p u t H i g h V o l t a g e V IH- 2.0- VDD V *1

I n p u t L o w V o l t a g e V IL- 0 - 0.8 V *1

O u t p u t H i g h V o l t a g e V0H I0H=-200uA 2.4-- V*2

O u t p u t L o w V o l t a g e V0L I0L=1.6mA - 0.4 V*2

I n p u t L e a k a g e C u r r e n t I LKG V I N=VSS~VDD-1.0- 1.0 uA *3

T h r e e-s t a t e(O F F)i n p u t C u r r e n t I TSL V I N=VSS~VDD -5.0- 5.0 uA *4

I DD1D u r i n g D i s p l a y-- 0.5 mA *5

O p e r a t i n g C u r r e n t

I DD2D u r i n g A c c e s s 2 mA*5

O n R e s i s t a n c e R ON- - 7.5 KΩ *6

*1./CS,E,RW,RS,DB0~DB7

*2.DB0~DB7

*3.Except DB0~DB7

*4.DB0~DB7 at High Impedance

*5.1/64 duty,FCLK=250KHZ,Frame Frequency=70HZ,Output:NO Load *6.VDD~VEE=15.5

3.交流特性(VDD=+5V±10%,VSS=0V,Ta=-20~+70℃)

项 目名称 Min Typ Max 单位

E C y c l e t C1000 - - ns

E H i g h t L e v e l W i d t h t WH450 - - ns

E L o w L e v e l W i d t h t WL450 - ns

E R i s e T i m e t R- - 25 ns

E F a l l T i m e t F- 25 ns

项 目名 称Min Typ Max 单位Address Set-up Time t ASH140- - ns Address Hold Time t AH10 - - ns Data Set-up Time t DSU200 - - ns Data Delay Time t D- - 320ns Data Delay Time t DHW10 ns Data Delay Time t DHR20 ns

MPU Write timing

MPU Read timing

四.软件说明

1.指令表

控制信号控 制 代 码

指 令 名 称

RS R/W D7 D6D5 D4 D3D2 D1 D0 显示开关设置 0 0 00 1 1 1 1 1 D

显示起始行设置 0 0 11L5 L4 L3L2 L1 L0

页面地址设置0 0 10 1 1 1P2 P1P0

列地址设置 0 0 01C5 C4 C3C2 C1 C0

读取状态字 0 1 B USY0 ON/OFF R ESET00 0 0

写显示数据 1 0 数 据

读显示数据 1 1 数 据

详细解释各个指令功能

1)读状态字

格式BUSY 0 ON/OFF RESET0 0 0 0

状态字是MPU了解LCM(液晶显示模块)当前状态,或LCM向MPU提供其内部状态的唯一的信息渠道。

BUSY 表示当前LCM接口控制电路运行状态。BUSY=1表示LCM正在处理MPU发过来的指令或数据。此时接口电路被封锁,不能接受除读状态字以外的任何操作。BUSY=0表示LCM接口控制电路已外于“准备好”状态,等待MPU的访问。

ON/OFF 表示当前的显示状态。ON/OFF=1表示关显示状态,ON/OFF=0表示开显示状态。

RESET 表示当前LCM的工作状态,即反映/RES端的电平状态。当/RES为低电平状态时,LCM处于复位工作状态,标志位RESET=1。当/REST为高电平状态时,LCM为正常工作状态,标志位RESET=0。

在指令设置和数据读写时要注意状态字中的BUSY标志。只有在BUSY=0时,MPU 对LCM的操作才能有效。因此MPU在每次对LCM操作之前,都要读出状态字判断BUSY 是否为“0”。若不为“0”,则MPU需要等待,直至BUSY=0为止。

2)显示开关设置

格式00 1 1 1 1 1 D

该指令设置显示开/关触发器的状态,由此控制显示数据锁存器的工作方式,从而控制显示屏上的显示状态。D位为显示开/关的控制位。当D=1为开显示设置,显示数据锁存器正常工作,显示屏上呈现所需的显示效果。此时在状态字中ON/OFF=0。当D=0为关显示设置,显示数据锁存器被置零,显示屏呈不显示状态,但显示存储器并没有被破坏,在状态字中ON/OFF=1。

3)显示起始行设置

格式 1 1 L5 L4 L3 L2 L1 L0

该指令设置了显示起始行寄存器的内容。LCM通过/CS的选择分别具有64行显示的管理能力,该指令中L5~L0为显示起始行的地址,取值在0~3FH(1~64行)范围内,它规定了显示屏上最顶一行所对应的显示存储器的行地址。如果定时间隔地,等间距地修改(如加一或减一)显示起始行寄存器的内容,则显示屏将呈现显示内容向上或向下平滑滚动的显示效果。

4)页面地址设置

格式 1 0 1 1 1 P2 P1 P0

该指令设置了页面地址—X地址寄存器的内容。LCM将显示存储器分成8页,指令代码中P2~P0就是要确定当前所要选择的页面地址,取值范围为0~7H ,代表第1~8页。该指令规定了以后的读/写操作将在哪一个页面上进行。

5)列地址设置

格式0 1 C5C4C3 C2 C1 C0

该指令设置了Y地址数计数器的内容,LCM通过/CS的选择分别具有64列显示的管理能力,C5~C0=0~3FH(1~64)代表某一页面上的某一单元地址,随后的一次读或写数据将在这个单元上进行。Y地址计数器具有自动加一功能,在每一次读/写数据后它将自动加1,所以在连续进行读/写数据时,Y地址计数器不必每次都设置一次。

页面地址的设置和列地址的设置将显示存储器单元唯一地确定下来,为后来的显示数据的读/写作了地址的选通。

6)写显示数据

格式数据

该操作将8位数据写入先前已确定的显示存储器的单元内。操作完成后列地址计数器自动加一。

7)读显示数据

格式数 据 该操作将LCM接口部的输出寄存器内容读出,然后列地址计数器自动加一。

2.控制时序表

/CS1 /CS2RS R/W E DB7~DB0 功能

X X X X0 高阻 总线释放

0 0 00 下降沿输入 写指令代码

0 0 0 1 1 输出 读状态字

0 0 1 0下降沿输入 写显示数据

0 0 1 1 1 输出 读显示数据

3.DDRAM地址表

/CS1=0 /CS2=0

Y= 0 1 ···62 63 0 1 ···62 63 行号

DB0 DB0 DB0 DBO DBO DBO DBO DBO DBO DBO 0

↓ ↓↓ ↓ ↓ ↓↓ ↓ ↓ ↓ ↓ X=0 DB7 DB7 DB7 DB7DB7DB7DB7DB7DB7 DB7 7

DB0DB0 DB0 DB0DB0DB0DB0DB0DB0 DB0 8 ↓ ↓ ↓ ↓ ↓ ↓ ↓↓ ↓ ↓ ↓ ↓

DB7 DB7 DB7 DB7DB7DB7DB7DB7DB7 DB7 55 X=7 DB0 DBO DBO DBO DBO DBO DBO DBO DBO DBO 56

↓ ↓ ↓ ↓ ↓ ↓↓ ↓ ↓ ↓ ↓

DB7DB7 DB7 DB7DB7DB7DB7DB7DB7DB7 63

4.LCM与MPU接口及驱动程序

HEM12864I图形液晶显示模块与MPU的连接方式有两种:一种为直接访问方式,一种为间接控制方式。

1) 接口电路(以8031为例)

直接访问方式

注:双电源负压直接由3.VLCD引入

间接访问方式

注:双电源负压直接由3.VLCD引入

LCD12864显示程序

;实验目的:熟悉12864LCD的使用 ;12864LCD带中文字库 ;编程让12864LCD显示公司名称“深圳乾龙盛电子”,公司电话“0975”,公司传真“6”;硬件设置: ;关断所有拨码开关。 #include<> ;__CONFIG _DEBUG_OFF&_CP_ALL&_WRT_HALF&_CPD_ON&_LVP_OFF&_BODEN_OFF&_PWRTE_ON&_WDT_OFF&_H S_OSC ;芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡 #define RS PORTA,5 ;命令/数据选择 #DEFINE RW PORTA,4 ;读/写选择 #DEFINE E PORTA,3 ;使能信号 #DEFINE PSB PORTA,2 ;并口/串口选择(H/L) #DEFINE RST PORTA,0 ;复位信号 ;----------------------------------------------- LCD_X EQU 30H ;页地址 LCD_Y EQU 31H ;Y地址 COUNT EQU 32H ;循环计数用 COUNT1 EQU 33H ;循环计数用 COUNT2 EQU 34H ;循环计数用 POINT EQU 35H ;查表偏移地址 POINT1 EQU 36H ;查表偏移地址 POINT2 EQU 37H ;查表偏移地址 TEMP EQU 38H ;临时寄存器 TEMP1 EQU 39H ;临时寄存器 ;----------------------------------------------- ORG 0000H ;复位地址 NOP ;ICD需要的空指令 GOTO MAIN ;跳转到主程序 ;**********************主程序************************ MAIN BANKSEL TRISA CLRF TRISA ;A口输出 CLRF TRISD ;D口输出 BANKSEL ADCON1 MOVLW 06H MOVWF ADCON1 ;A口全为数字口 CLRF STATUS

LCD12864显示程序

本例程为通过用A T89C52芯片操作LCD12864显示的程序,使用的晶振为12M。 /********************************************************** 程序说明:LCD12864显示主程序 程序调试员:莫剑辉 调试时间:2010-6-7 **********************************************************/ #include #include"12864.c" void main() { Ini_Lcd(); //液晶初始化子程序 Disp(1,0,6,"莫剑辉"); //显示数据到LCD12864子程序 while(1); } 这里我们通过调用下面的头文件就可以了,这样的做法方便我们以后要用到LCD12864的程序的调用。 /********************************************************** 程序说明:LCD12864显示头文件 程序调试员:莫剑辉 调试时间:2010-6-7 **********************************************************/ //#include #define uchar unsigned char #define uint unsigned int #define DATA P2 //数据输出端0~7 sbit RS=P0^0; //LCD12864 RS端 sbit RW=P0^1; //LCD12864 RW端 sbit E =P0^2; //LCD12864 E 端 sbit PSB =P0^3; /********************************************* 延时子程序 *********************************************/ void Delay_1ms(uint x) { uint j,i; for(j=0;j

LCD显示程序

本例程为通过用AT89C52芯片操作LCD12864显示的程序,使用的晶振为12M。 /********************************************************** 程序说明:LCD12864显示主程序 程序调试员:莫剑辉 调试时间:2010-6-7 **********************************************************/ #include #include"12864.c" void main() { Ini_Lcd(); //液晶初始化子程序 Disp(1,0,6,"莫剑辉"); //显示数据到LCD12864子程序 while(1); } 这里我们通过调用下面的头文件就可以了,这样的做法方便我们以后要用到LCD12864的程序的调用。 /********************************************************** 程序说明:LCD12864显示头文件 程序调试员:莫剑辉 调试时间:2010-6-7 **********************************************************/ //#include #define uchar unsigned char #define uint unsigned int #define DATA P2 //数据输出端0~7 sbit RS=P0^0; //LCD12864 RS端 sbit RW=P0^1; //LCD12864 RW端 sbit E =P0^2; //LCD12864 E 端 sbit PSB =P0^3; /********************************************* 延时子程序 *********************************************/ void Delay_1ms(uint x) { uint j,i; for(j=0;j

基于STM32--LCD12864驱动程序

基于STM32--LCD12864驱动程序

STM32 LCD12864驱动程序(头文件)(2012-05-29 21:25:08)转载▼ 标签:杂谈 #ifndef LCD12864_H #define LCD12864_H #define LCD_CONTROL GPIOD //默认LCD12864的控制口在PD口 #define LCD_DATAPORT GPIOD //默认LCD12864的数据口在PD口 #define LCD_RESET_Pin GPIO_Pin_12 //默认LCD12864的复位引脚连接到PD.12 也可不用 #define LCD_RS_Pin GPIO_Pin_13 //默认LCD12864 RS -- PD.13 #define LCD_RW_Pin GPIO_Pin_14 //默认LCD12864 RW -- PD.14 #define LCD_EN_Pin GPIO_Pin_15 //默认LCD12864 E -- PD.15 #define LCD_CONTROL_CLOCK RCC_APB2Periph_GPIOD //默认LCD12864的控制口时钟

#define LCD_DATAPORT_CLOCK RCC_APB2Periph_GPIOD //默认LCD12864的数据口时钟 #define LCD_RS_1 LCD_CONTROL->BSRR &=~LCD_RS_Pin;LCD_CONTROL->BSRR |=LCD_RS_Pin //RS置高电平 #define LCD_RS_0 LCD_CONTROL->BRR &=~LCD_RS_Pin;LCD_CONTROL->BRR |=LCD_RS_Pin //RS置低电平 #define LCD_RW_1 LCD_CONTROL->BSRR &=~LCD_RW_Pin;LCD_CONTROL->BSRR |=LCD_RW_Pin //RW置高电平 #define LCD_RW_0 LCD_CONTROL->BRR &=~LCD_RW_Pin;LCD_CONTROL->BRR |=LCD_RW_Pin //RW置低电平 #define LCD_EN_1 LCD_CONTROL->BSRR &=~LCD_EN_Pin;LCD_CONTROL->BSRR |=LCD_EN_Pin //EN置高电平 #define LCD_EN_0 LCD_CONTROL->BRR &=~LCD_EN_Pin;LCD_CONTROL->BRR |=LCD_EN_Pin //EN置低电平

12864液晶显示程序(图案+文字)

#include sbit LCD12864_RS = P2^0; //RS控制引脚 sbit LCD12864_RW = P2^1; //RW控制引脚 sbit LCD12864_EN = P2^2; //EN控制引脚 sbit LCD12864_PSB = P2^3; //模式选择引脚,ST7920控制器,1为8位并行接口,0为串行接口 #define LCDPORT P0//数据引脚 void LCD12864_Init(void); //LCD12864初始化函数 void LCD12864_WriteInfomation(unsigned char ucData,bit bComOrData); //向LCD12864写入数据,bComOrData为1时写入的是数据,0时写入的是命令 void LCD12864_CheckBusy(void);//忙检测函数 void LCD12864_DisplayImage(unsigned char code *ucImage); void Delay(unsigned int uiCount); unsigned char code ucPic1[]={ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x06,0x30,0x01,0xE0,0x00,0x00,0x2A,0x00,0x00,0xD8,0x00,0x00,0x00,0x00,0x00, 0x00,0x0F,0x7B,0x63,0xE0,0x00,0x00,0x22,0x00,0x01,0x24,0x00,0x00,0x00,0x00,0x00, 0x00,0x0F,0xFB,0x63,0x07,0x34,0x00,0x14,0x00,0x01,0x04,0x00,0x00,0x00,0x00,0x00, 0x00,0x0D,0xDB,0x63,0x01,0xBC,0x00,0x08,0x00,0x00,0x88,0x00,0x00,0x00,0x00,0x00, 0x00,0x0C,0x1B,0x63,0x07,0xB0,0x00,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x00,0x00, 0x00,0x0C,0x1B,0x63,0xED,0xB0,0xDB,0x00,0x01,0x00,0x20,0x00,0x00,0x00,0x00,0x00, 0x00,0x0C,0x19,0xE1,0xE7,0xB0,0xDB,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x0C,0x19,0xE1,0xE7,0xB0,0xDB,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x05,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x0A,0x80,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x0A,0x00,0x00,0xFF,0xF8,0xE0,0x05,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x06,0xC0,0x15,0x00,0x1F,0xFF,0xFF,0xC0,0x02,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x09,0x20,0x11,0x00,0xFB,0xFF,0xE1,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x08,0x20,0x0A,0x03,0x9F,0x00,0x9E,0x3E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x04,0x40,0x04,0x0E,0x70,0x00,0x81,0xC7,0x80,0x01,0x40,0x00,0x00,0x00,0x00, 0x00,0x02,0x80,0x00,0x1D,0x80,0x00,0xE0,0x61,0xE0,0x02,0xA0,0x00,0x00,0x00,0x00, 0x00,0x01,0x00,0x00,0x77,0x9F,0xFC,0xF0,0x18,0xF8,0x02,0x20,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x01,0xDF,0x00,0x00,0xF3,0x0C,0x3C,0x01,0x40,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x03,0x9E,0x00,0x00,0xF8,0x06,0x1E,0x00,0x80,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x07,0x0E,0x30,0x01,0xFC,0x7F,0x07,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x07,0x0E,0x30,0x01,0xFC,0x7F,0x07,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x7E,0xFF,0xFF,0xFF,0xFF,0xFF,0x83,0xC0,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x0F,0xFD,0xFF,0xFF,0xFF,0xFF,0xFC,0x01,0xF0,0x00,0x00,0x00,0x00,0x00,

12864LCD显示倒计时程序

简介:第一行显示,距离系统爆炸时间 第二行显示,还剩 第三行显示,00时,00分,00秒 第四行显示,周林 按下旋钮开关,开始设定秒,秒编辑位闪动。左右旋转设定数值, 在按下开关,秒确定,设定分,分编辑位闪动左右调数值, 再按下,分确定,小时位闪动。左右转调小时,再按一下。时间确定,开始倒计时。到达定时时间后停止,并闪动。 #include #include /********************* 定义********************************/ #define LCD_data P0 //数据口 sbit LCD_RS = P2 ^ 0; //寄存器选择输入 sbit LCD_RW = P2 ^ 1; //液晶读/写控制 sbit LCD_EN = P2 ^ 2; //液晶使能控制 sbit LCD_PSB = P2 ^ 3; //串/并方式控制 sbit LCD_RST = P2 ^ 5; //液晶复位端口 sbit sset=P3^4;//设置按钮 sbit spk=P1^4; sbit sadd=P2^7; sbit sdel=P2^6;

signed char second=0,minute=0,hour=0,count=0,keycount=0; signed char key=0; unsigned char code DIS1[] = { "距离系统爆炸时间" }; unsigned char code DIS2[] = { "还剩:" }; unsigned char code DIS31[] = { "时" }; unsigned char code DIS32[] = { "分" }; unsigned char code DIS33[] = { "秒" };

LCD12864(串口)显示程序

#ifndef jh_f330 #define jh_f330 #include #endif typedef unsigned char uint8; typedef unsigned int uint16; /*************端口配置**************/ sbit LCD_CS = P0^4; //片选信号,低电平有效 sbit LCD_RST = P0^3; //复位信号,低电平有效 sbit LCD_A0 = P0^2; //数据、指令选择,H:数据、L:指令 sbit LCD_DAT = P1^0; //串行输入数据引脚 sbit LCD_CLK = P1^1; //串行时钟输入引脚 uint8 code word1[]= { 0x04,0x44,0x84,0x04,0xE4,0x1F,0x84,0x44,0xA4,0x3F,0xA4,0xA4,0x64,0x06,0x04,0x00, 0x20,0x10,0x09,0x04,0xFF,0x04,0x04,0x14,0x26,0x05,0x84,0xFF,0x04,0x06,0x04,0x00 }; /**********预定义数据*********/ #define LCD_X 128-1 //屏幕的X轴的物理宽度 #define LCD_Y 64-1 //屏幕的Y轴的物理宽度 /***********LCD指令集***************/ //LCD开关命令 #define LCD_ON() Wr_Com(0xaf) #define LCD_OFF() Wr_Com(0xae) //设置显示起始行 #define LCD_START_LINE 0x40 //起始行地址为,0x40+(0-63)//页地址设置 #define LCD_Page 0xb0 //页地址为:0xb0+(0-8) //列地址设置 #define LCD_Ad_H 0x10 //列高四位地址:0x10+() #define LCD_Ad_L 0x00 //列低四位地址:0x00+() //行列地址方向设置 #define ADC_Norm() Wr_Com(0xa0); #define ADC_Reve() Wr_Com(0xa1); #define Com_Norm() Wr_Com(0xc0); #define Com_Reve() Wr_Com(0xc8);

LCD12864串行显示程序

#include #include #define uchar unsigned char #define uint unsigned int sbit SCLK=P2^7; //时钟信号 E sbit CS=P2^6; //片选信号RS sbit SID=P2^5; //数据信号RW sbit PSB=P3^2; //串、并行选择信号uchar code dis1[]=" 2010"; uchar code dis2[]="Ψ00:00:00 Ψ"; uchar code dis3[]=" 26℃"; uchar code dis4[]="!!"; uchar code shu[]="0123456789"; uchar num,gw,sw,count; /*********延时函数,延时xms************/ void delay(uint xms) { uint i,j; for(i=xms;i>0;i--) for(j=110;j>0;j--); } /********以串行口协议发送数据************/ void send_bit(uchar byte) { uchar x; for(x=0;x<8;x++) { if((byte<

delay(5); } /**********写串口指令*************/ void write_com(uchar com) { CS=1; //每次传数据前把CS端拉高 send_bit(0xf8); //写指令 send_bit(com&0xf0); //0xf0为1111 0000,送高四位 send_bit((com<<4)&0xf0); //0xf0为1111 0000,送低四位delay(10); CS=0; } /**********写串口数据*************/ void write_date(uchar date) { CS=1; //每次传数据前把CS端拉高 send_bit(0xfa); //写指令 send_bit(date&0xf0); //0xf0为1111 0000,送高四位 send_bit((date<<4)&0xf0); //0xf0为1111 0000,送低四位delay(10); CS=0; } /*********初始化函数****************/ /*********初始化液晶****************/ void init() { delay(100); write_com(0x30); //基本指令模式 delay(10); write_com(0x0c); //开显示,关游标,关反白 delay(10); write_com(0x01); //清屏 delay(100); /***显示初始化***/ /////* write_com(0x80); for(num=0;num<16;num++) {

lcd12864显示程序

/************************************************* 名称:LCD12864_ST7920并行测试程序 试验功能:测试基于ST7920控制芯片的LCD12864的显示 并行方式连接;晶振11.0592M 编写:https://www.360docs.net/doc/c518198799.html, *************************************************/ #include #include #include #define uchar unsigned char #define uint unsigned int //宏定义 /*****LCD接口定义*****/ sbit LCD_RS = P2^0; //1:输入数据;0:输入命令 sbit LCD_RW = P2^1; //1:读数据0:写数据 sbit LCD_EN = P2^2; //LCM使能端 sbit LCD_PSB = P2^3; //串并口选择1:并口模式; 0:串口模式; #define LCD_DATA P0 //LCD总线端口 /*****LCD功能初始化指令*****/ #define CLEAR_SCREEN 0x01 //清屏指令:清屏且AC值为00H #define AC_INIT 0x02 //将AC设置为00H。且游标移到原点位置 #define CURSE_ADD 0x06 //设定游标移到方向及图像整体移动方向(默认游标右移,图像整体不动) #define FUN_MODE 0x30 //工作模式:8位基本指令集 #define DISPLAY_ON 0x0c //显示开,显示游标,且游标位置反白 #define DISPLAY_OFF 0x08 //显示关 #define CURSE_DIR 0x14 //游标向右移动:AC=AC+1 #define SET_CG_AC 0x40 //设置AC,范围为:00H~3FH #define SET_DD_AC 0x80 /*****汉字地址表*****/ uchar code addr_tab[]={ //便于根据汉字坐标求出地址 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,//第一行汉字位置 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,//第二行汉字位置 0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,//第三行汉字位置 0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,//第四行汉字位置 }; /*****n(ms)延时子程序*****/ void delayms(uint t) //约延时n(ms) { uint i; while(t--) {

12864液晶经典驱动程序,一看就懂,有详细的注释(C语言编写,不看后悔)

这个程序写得很好,自己也是看的别人写的很好的程序,但是它代码不够完整,注释不详细,经过自己的修改加以完善。另外我发现很多的测试代码都没有附上测试代码效果图,在本人的代码下面有自己拍的效果图,填补不足之处。 自己在找资料的过程中花掉很多的财富值,如果大家看得起该代码请评五分加以下载,在下感激不尽! /******************************************* 程序名称:12864液晶经典驱动程序(带中文字库) 功能:12864测试程序 修改作者:王程 修改时间:2014年2月5日23:22:32 ********************************************/ #include #define uchar unsigned char #define uint unsigned int // P0 为数据口 sbit LCD_RS=P2^0; //数据、命令选择端口 sbit LCD_RW=P2^1; //液晶读写控制 sbit LCD_EN=P2^2; //液晶使能控制 sbit PSB = P2^4; //模式选择1为并行0为串行 sbit RES = P2^5;//复位端口低电平复位,上电之前进行复位,为了稳定!unsigned char code DAT[] = "我爱我家"; //测试显示的汉字,下面的A为测试显示的英文 /******************************************* 函数名称:Delay_1ms (晶振为12M) 功能:延时约1ms的时间 参数:无 返回值:无 ********************************************/ void delay_1ms(uint x) { uint i,j; for(j = 0;j < x;j++) for(i=0;i<110;i++); } /******************************************* 函数名称:write_cmd 功能:向液晶中写控制命令 参数:cmd--控制命令 返回值:无 ********************************************/ void write_cmd(uchar cmd) {

基于51单片机的12864液晶显示程序

#include #define uchar unsigned char #define uint unsigned int uchar dis1[]="华南农业大学"; uchar dis2[]="工程学院"; uchar dis3[]="电子班"; uchar dis4[]="不会水的小兵"; sbit en=P3^4; sbit rs=P3^5; sbit rw=P3^6; sbit psb=P3^7; sbit dula=P2^6; sbit wela=P2^7; void delayms(uint xms) { uchar i,j; for(i=xms;i>0;i--) for(j=110;j>0;j--); } void write_com(uint com) //写命令{ rs=0; P0=com; delayms(5); en=1; delayms(5); en=0; } void write_dat(uchar dat) //写数据{ rs=1; P0=dat; delayms(5); en=1; delayms(5); en=0; } void init() //液晶初始化 { dula=0; wela=0;

psb=1; rw=0; write_com(0x30); write_com(0x0c); write_com(0x01); } void main() { int i; init(); write_com(0x81); for(i=0;i<12;i++) { write_dat(dis1[i]); delayms(5); } write_com(0x92); for(i=0;i<8;i++) { write_dat(dis2[i]); delayms(5); } write_com(0x8a); for(i=0;i<10;i++) { write_dat(dis3[i]); delayms(5); } write_com(0x99); for(i=0;i<12;i++) { write_dat(dis4[i]); delayms(5); } while(i); }

LCD12864显示程序(汇编)

;********************************************* ;Controller:ST7920 ;MCU:AT89C51 ,晶体频率:12MHz ;LCM:128*64 ;LCM型号:带中文字库的128X64-0402 ;LCM 接口:1:GND 2:VCC 3:V0 4.RS 5:RW 6:E 7--14:DB0-DB7 15:PSB 16:NC 17:RST 18:Vout ;********************************************** ;占用单元30H,31H,32H,33H,A,DPTR,R2,R4,R6,R7 ;功能:显示浙江工业职业技术 ; 学院电子协会欢迎 ; 您 ; RS EQU P2.4 ;RS=“H”,表示DB7——DB0为显示数据 ;RS=“L”,表示DB7——DB0为显示指令数据 RW EQU P2.5 ;R/W=“H”,E=“H”,数据被读到DB7——DB0 ;R/W=“L”,E=“H→L”, DB7——DB0的数据被写到IR或DR E EQU P2.6 ;使能信号 PSB EQU P2.7 ;H:8位或4位并口方式,L:串口方式(见注释1) RST EQU P2.0 ;复位端,低电平有效 ;模块内部接有上电复位电路,因此在不需要经常复位的场合可将该端悬空 COM EQU 30H ;DD RAM 地址存放单元 DAT EQU 31H ;汉字代码数据存放单元 DAT1 EQU 32H ;汉字码址表低位存放单元 DAT2 EQU 33H ;汉字码址表高位存放单元 ;******************************以上是接口定义 ORG 0000H AJMP START ORG 0030H START: MOV SP,#60H LJMP DISP

LCD lgm12864 程序代码

LCD lgm12864 程序代码 /************************************** LCD:lgm12864, LCD control IC:KS0108 **************************************/ #define uchar unsigned char #define uint unsigned int #define DataPort P0 //LCD:D0-D7 sbit RS=P2^1; //Data or Instrument Select sbit RW=P2^2; //Write or Read sbit E=P2^3; // Enable single sbit CS1=P2^4; //Master chip enable sbit CS2=P2^5; sbit RST=P2^6; //Lcm reset /*数字数组*/ unsigned char code suzidot[160] ={ /*0 CHAR_30 */ 0x00,0xE0,0xF0,0x18,0x08,0x18,0xF0,0xE0,0x00,0x0F,0x1F,0x30,0x20,0x30,0x1F,0x0F, /*1 CHAR_31 */ 0x00,0x10,0x10,0xF8,0xF8,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x3F,0x20,0x20,0x00, /*2 CHAR_32 */ 0x00,0x70,0x78,0x08,0x08,0x88,0xF8,0x70,0x00,0x30,0x38,0x2C,0x26,0x23,0x31,0x30, /*3 CHAR_33 */ 0x00,0x30,0x38,0x88,0x88,0xC8,0x78,0x30,0x00,0x18,0x38,0x20,0x20,0x31,0x1F,0x0E, /*4 CHAR_34 */ 0x00,0x00,0xC0,0xE0,0x30,0xF8,0xF8,0x00,0x00,0x07,0x07,0x24,0x24,0x3F,0x3F,0x24, /*5 CHAR_35 */ 0x00,0xF8,0xF8,0x88,0x88,0x88,0x08,0x08,0x00,0x19,0x39,0x21,0x20,0x31,0x1F,0x0E, /*6 CHAR_36 */ 0x00,0xE0,0xF0,0x98,0x88,0x98,0x18,0x00,0x00,0x0F,0x1F,0x31,0x20,0x31,0x1F,0x0E, /*7 CHAR_37 */

LCD12864液晶屏测试程序

/////LCD12864液晶屏测试程序(已通过)////// ////////液晶屏型号:HJ12864M-1////////// #include #define uchar unsigned char #define uint unsigned int //8bit数据接入IO口 #define Part P0 //P0接8位数据线 //控制数据端 sbit LCD_RS=P2^5; //定义12864液晶RS端,寄存器选择信号 H:数据寄存器 L:指令寄存器 sbit LCD_RW=P2^6; //定义12864液晶RW端,读/写信号 H:读 L:写 sbit LCD_EN=P2^7; //定义12864液晶LCDEN端, 片选信号下降沿触发,锁存数据 sbit LCD_PSB=P3^2; //定义12864液晶PSB端, H:并行 L:串行 sbit LCD_RST=P3^4; //定义12864液晶RST端, H:不复位 L:复位uchar code dis1[]={"床前明月光"}; uchar code dis2[]={"疑是地上霜"}; uchar code dis3[]={"举头望明月"}; uchar code dis4[]={"低头思故乡"};

//毫秒延时函数 void delay(uint xms) { uint i,j; for(j=0;i

最新12864LCD菜单程序

最新12864LCD与4*4键盘人机交互界面源程序 0.95版 [ 2006-12-18 15:36:00 | By: ZZM@HAS ] 有朋友问我要源程序,这个源程序是我最近修改过的最新版本的12864与4*4 键盘的人机交互界面,我只给出关键交互界面菜单的源程序,至于12864和4*4键盘的驱动,相信大家都有了。 最新版本的使用反白表示选择行,增加了详细的注释。给需要的朋友一个参考。希望朋友们能写出更好的菜单程序。 //---------------------------------------- // 12864M四行多级菜单 // 文件名称12864menu1。c // 作者张子墨 // 版本 0.95 // 最后更新2006/12/16 //---------------------------------------- #i nclude #i nclude "12864Driver.c" #define MENULEVEL 7 //当前菜单表个数 #define OPTIONMETE 29 //当前选项个数,包括一个特别功能选项 //------------------------------------- // // 菜单结构定义 // //------------------------------------- struct Option{ unsigned char KeyLevel; //菜单选项所属菜单表号 unsigned char EnterIndex; //选项进入索引号 unsigned char CancelIndex; //选项退出索引号 unsigned char KeyWord[16]; //菜单选项文字描述数组 unsigned char WordMete; //菜单选项描述文字字节数 }; //------------------------------------- // // 具体菜单选项定义,定义一个结构数组 // 存储在编码区,节省内存RAM //

(完整版)基于stm32的LCD12864显示+16个矩阵键盘程序

#include "stm32f10x.h" #define read_busybit() GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_7 ) #define DATAOUT GPIOC->ODR// unsigned char table1[]={"65"}; unsigned char table2[]={"大学"} ; unsigned char table3[]={"学院"} ; unsigned char table4[]={"电子信息"} ; unsigned char table5[]={"姓名"} ; unsigned char hy5; unsigned char k=0; void delay(unsigned int x) { while(x--); } // 外设时钟使能 /*************************************************************************/ void RCC_Configuration(void) //在208页这里是引脚时钟配置 { /* 使能外设时钟*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); } /****************************************************************************** * 全部用到1602的引脚将在在配置 ******************************************************************************* / void GPIO_Configuration(void) // 1602引脚配置

单片机LCD12864显示系统课程设计

目录 一、概述 (2) 二、系统总体方案及硬件设计 (2) 系统框图 (3) 单片机最小系统 (4) 显示电路 (6) 按键控制电路 (6) 三、系统软件设计 (9) 软件设计概述 (9) 汉字显示 (10) 上下移屏 (10) 左右移屏 (11) 四、课程设计体会 (13) 五、参考文献 (13) 六、附录 (14) 总电路图. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 总程序. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

一、概述 随着社会的发展,趣来趣多的地方需要应用显示功能,各种数字显示仪器中的显示、广告牌、数码产品等,传统的数码管显示已经远远不能满足各行各业的需求。基于单片机的LCD显示是一种用单片机来控制的一种显示系统,它不仅能显示种各数字、字母、还能显示各种字体的汉字以及一些简单的图象,使用起来极为方便,只要通过对单片机写入一定的程序来控制LCD 的显示即可完成,根据程序的不同而产生不同不效果以满足各种不同需求。 本文围绕设计以单片机作为LCD液晶显示系统控制器为主线,基于单片机AT89S51,采用的液晶显示控制器的芯片是SED1520,主要实现由按键控制的中文显示、图片显示、滚屏以及左右移动功能。同时也对部分芯片和外围电路进行了介绍和设计,并附以系统结构框图加以说明,着重介绍了本系统应用的各硬件接口技术和各个接口模块的功能及工作过程,并详细阐述了程序的各个模块。本系统是以单片机的C语言来进行软件设计,指令的执行速度快,可读性强。为了便于扩展和更改,软件的设计采用模块化结构,使程序设计的逻辑关系更加简洁明了。使硬件在软件的控制下协调运作。其次阐述了部分程序的流程图和实现过程。本文撰写的主导思想是软、硬件相结合,以硬件为基础,来进行各功能模块的编写。最后对我所开发的用单片机实现LCD液晶显示器控制原理的设计思想和软、硬件调试作了详细的论述。 二、系统总体方案及硬件设计 系统框图

相关主题
相关文档
最新文档