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)。
12864LCD串行操作C程序

12864LCD串行控制C程序下面是一个最简单的12864液晶串行控制程序,没什么花样,只是想帮助大家学习掌握控制一个串行的12864液晶的基本原理。
无论是12864的并行操作还是串行操作,12864液晶与12232液晶的操作时序几乎完全一样,打家学习的时候可以参考一下12232的时序图(方便理解),郭天祥的《51单片机C语言教程》156页中就讲到了12232液晶的使用例程。
一、时序图1、12232时序图2、12864时序图二、液晶引脚对应图三、12864液晶与单片机接口(程序中PSB没接,RST接高电平,NC悬空)四、程序:#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit CS=P2^6;//片选信号线,接12864的RS端sbit SID=P2^5;//串行数据线,接12864的RW端sbit SCLK=P2^7;//串行时钟信号线,接12864的EN端//uchar a;uchar code word[]={"我好喜欢你啊"};//12864LCD显示内容//函数声明void lcd_init();//声明液晶初始化函数void write_com(uchar com);//声明'写入命令控制字节'函数void write_date(uchar dat);//声明'写入数据控制字节'函数void delayms(uint x);//声明延时函数//液晶初始化函数void lcd_init(){delayms(10);write_com(0x30);//基本指令操作write_com(0x0c); //显示开,关光标write_com(0x10);//设置地址计数器AC为00H,并将游标移到开头原点位置write_com(0x06);//游标及显示右移一位write_com(0x01);//清除液晶显示内容}//向12864写入命令函数/* 串行数据由三个字节构成,第一个为命令控制字节,第二个为由命令字节高四位低四位补零构成的字节,第三个为由命令字节低四位左移四位低四位补零后构成的字节*/void write_com(uchar com){uchar i;uchar i_data;i_data=0xf8;//0xf8是命令控制字节,它比表示写入的内容com是一个命令CS=1;//写入之前令片选信号CS为1(这是时序要求的)SCLK=0;//写入之前令时钟信号CLK为1(这也是时序要求的)for(i=0;i<8;i++)//写入命令控制字节{SID=(bit)(i_data&0x80);SCLK=1;SCLK=0;i_data=i_data<<1;}i_data=com;i_data&=0xf0;for(i=0;i<8;i++)//写入命令的高四位{SID=(bit)(i_data&0x80);//取得命令的最高位给液晶串行总线SCLK=1;SCLK=0; //每写一位SCLK都要有一个下降沿(时序要求)i_data=i_data<<1; //命令字节左移一位(取命令的次高位给液晶串行总线)}i_data=com;i_data<<=4;//命令字节左移4位,即把低四位移到高四位for(i=0;i<8;i++)//写入命令的低四位{SID=(bit)(i_data&0x80);//取得命令字节移位后的最高位给液晶串行总线SCLK=1;SCLK=0;i_data=i_data<<1; //移位后命令字节左移一位(每一次移位前的次高位给液晶串行总线)}CS=0; //写入命令控制字节后令片选信号CS为0delayms(10);}//向12864写入数据函数void write_date(uchar dat){uchar i;//第三个为由数据低四位左移四位后低四位补零构成的字节uchar i_data;i_data=0xfa;//(数据控制字节为0xfa)CS=1;SCLK=0;for(i=0;i<8;i++)//写入数据控制字节{SID=(bit)(i_data&0x80);//取得数据控制字节的最高位给液晶串行总线SCLK=1;SCLK=0;//每写一位SCLK都要有一个下降沿(时序要求)i_data=i_data<<1;//数据控制字节左移一位(取命令控制字节的次高位给液晶串行总线)}i_data=dat;i_data&=0xf0;//取数据字节的高四位for(i=0;i<8;i++)//写入数据的高四位{SID=(bit)(i_data&0x80);//(以下跟写入命令函数的注释同理)SCLK=1;SCLK=0;i_data=i_data<<1;}i_data=dat;i_data<<=4;for(i=0;i<8;i++)//写入数据的低四位{SID=(bit)(i_data&0x80);SCLK=1;SCLK=0;i_data=i_data<<1;}CS=0;delayms(10);}//延时函数void delayms(uint x) //延时x ms{uint i,j;for(j=x;j>0;j--)for(i=110;i>0;i--);}//主函数void main(){uchar b; //定义计算写入显示内容数量的变量lcd_init(); //初始化液晶write_com(0x90); //写入显示位置for(b=0;b<12;b++) //b要12是因为要显示6个中文{write_date(word[b]); //写入要显示的内容}while(1);}。
LCD液晶显示模块12864应用笔记(串行方式)

data++;
}
}
2
DisplayC_LCD ( 0x93, “
”, 4 );
-3-
2. void DisplayD_LCD ( unsigned char addr,
unsigned char data1, unsigned char data2 ) { SendCMD_LCD( addr ); SendDAT_LCD( data1 ); SendDAT_LCD( data2 ); } 2 DisplayD_LCD ( 0x93, 0xB9, 0xE3 );
case 0: SendDAT_LCD( ‘0’ );
case 1: SendDAT_LCD( ‘0’ );
……
case 14: SendDAT_LCD( ‘E’ );
case 15: SendDAT_LCD( ‘F’ );
default: SendDAT_LCD( ‘R’ );
}
}
2
5
SendCMD_LCD( 0x93 );
//
unsigned char *data,
//
unsigned char num )
//
{
unsigned char n;
SendCMD_LCD( addr );
for ( n=0; n<num; n++){
SendDAT_LCD( data );
//
data++;
SendDAT_LCD( data );
-2-
1.
SendCMD_LCD
void SendCMD_LCD(unsigned char dat){
SendByte_LCD( 0xf8 );
LCM12864ZS系列液晶模块使用手册及例程

{
setbit(SPCR,SPE);//SPI使能
setbit(SPCR,MSTR); //SPI主机
setbit(SPCR,SPR1); //SCK=fosc/128
setbit(SPCR,SPR0);
clrbit(SPSR,SPI2X);
//setbit(SPCR,CPOL); //模式2,空闲时高电平
#define CS_DDR DDRB
#define CS_PORT PORTB
#define CS_BIT 0
#define SCK_DDR DDRB
#define SCK_PORT PORTB
#define SCK_BIT 1
#define MOSI_DDR DDRB
#define MOSI_PORT PORTB
LCM12864-05
将箭头所指的晶振的一个脚对地短接,再接通电源,进入模块测试功能,正常时会显示不同点阵的字符
//液晶模块测试程序
//MCU:ATmega128
//晶振:11.0592
//编译器:IARAVR 5.3
#include <iom128.h>
#define testbit(var, bit) ((var)&(1<<(bit))) //测试位
0002---12*24字体
0003---16*32字体
b3~b0:字符颜色选择
0000---白色
0001---黑色
0x82
汉字设置
void FontHZ(unsigned char data)
Data取值:
b7~b4:字符大小选择
0000---16*16字体
12864ZW说明书

4) 显示状态开/关:
功能:D=1: 整体显示ON ; D=0: 整体显示OFF。 C=1: 光标显示ON ; C=0: 光标显示OFF。 B=1: 光标位置反白且闪烁 ; B=0: 光标位置不反白闪烁。
5) 光标或显示移位控制:
功能:S/C:光标左/右移动,AC减/加1。 R/L:整体显示左/右移动,光标跟随移动,AC值不变。
6) 功能设定:
功能:DL=1: 8-BIT 控制指令集动作; RE=0: 基本指令集动作。
7) 设定CGRAM地址:
12864ZW 使用说明书
液晶显示器使用手册
目录
(一)概述 (二)外形尺寸 (三)模块外部接口 (四)时序说明 (五)指令集说明 (六)显示步骤 (七)初始化时序 (八)应用举例
一、概述 12864ZW是一种图形点阵液晶显示器,它主要由行驱动器/列驱
动器及128X64全点阵液晶显示器组成,可完成图形显示,也可以显 示8X4个(16X16点阵汉字,与外部CPU接口可采用串行或并行方式 控制。 二、外形尺寸图
项目 LCM 尺寸(长×宽×厚)
可视区域(长×宽) 点间距(长×宽) 点尺寸(长×宽 逻辑工作电压(Vdd LCD 驱动电压(Vdd-V0) 工作温度(Ta) 储存温度(Tsto) 工作电流(背光除外)
参考值 93.0×70.0×13.5
72.0×40.0 0.52×0.52 0.48×0.48 +5.0V 或+3.3V(出厂时设定+5.0V) +3.0 ~ +5.0V 0 ~ +50℃(常温)/ -20 ~ +70℃(宽温) -10 ~ +60℃(常温)/ -30 ~ +80℃(宽温) 3.0mA(max)
12864串行方式使用体会

12864使用心得论文一、硬件连接1.1 12864引脚示意图1.2 本次实验中12864与MCU的连接示意图/****************晶振为11.0592**********************/sbit PSB = P1^0; //并1/串0选择//串行接法sbit CS = P1^3; //串片选sbit DS = P1^2; //串数据口sbit SCK = P1^1; //串时钟信号/*//并行接法sbit RS = P1^3; //数据/命令选择端sbit RW = P1^2; //读写选择端sbit E = P1^1; //使能信号端#define DataIO P0 //并行数据口*/二、底层基本程序(串行方式)2.1 基本写字节程序//写一个字节(以SCK上升沿接收一个位)void sendbyte(uint8 zdata){uint16 i;for(i=0; i<8; i++){if((zdata << i) & 0x80){DS = 1;}else {DS = 0;}SCK = 0;SCK = 1;}}2.2 写命令程序(若晶振频率>11.0592,则需加延时处理)//写命令void writeCmd(uint8 cmdcode){CS = 1;sendbyte(0xf8);sendbyte(cmdcode & 0xf0);sendbyte((cmdcode << 4) & 0xf0);// delayMs(1); //若晶振频率>11.0592,则需延时}2.3 写数据程序(若晶振频率>11.0592,则需加延时处理)//写数据void writeData(uint8 dispdata){CS = 1;sendbyte(0xfa);sendbyte(dispdata & 0xf0);sendbyte((dispdata << 4) & 0xf0);// delayMs(1); //若晶振频率>11.0592,则需延时}2.4 通用软件毫秒延时程序//延时程序void delayMs(uint16 xms){uint16 i,j;for (i=0;i<=xms;i++)for (j=0;j<=123;j++);}三、文本显示3.1 LCD12864初始化//LCD12864初始化void LCD12864Init(){PSB = 0; //串行writeCmd(0x30); //基本指令模式writeCmd(0x04); //游标右移一位writeCmd(0x0c); //显示开,关光标writeCmd(0x01); //清除LCD的内容(仅字符模式) }模块控制芯片提供两套控制命令,基本指令和扩充指令如下:指令表1:(RE=0:基本指令)指令表2:(RE=1:扩充指令)3.2 LCD12864字符串的显示//写字符串函数,参数line第1/2行beSpace字符前面的空格数pString指针uint8 write12864String(uint8 line,uint8 beSpace,char *pString){uint8 i=0;uint8 sLength = strlen(pString); //字符串长度if (pString == NULL) //空字符串return -1;writeCmd(0x30); //基本指令模式//设置写在的位置if (line == 1){writeCmd(0x80 + beSpace); //写在第一行的位置}else if (line == 2){writeCmd(0x90 + beSpace); //写在第二行的位置}else if (line == 3){writeCmd(0x88 + beSpace); //写在第三行的位置}else if (line == 4){writeCmd(0x98 + beSpace); //写在第四行的位置}else{return -1;}//写数据for (i=0;i< sLength;i++){writeData ( *pString );pString ++;}return 0;}12864每屏可显示4行8列共32个16×16点阵的汉字,每个显示RAM可显示1个中文字符或2个16×8点阵全高ASCII码字符,即每屏最多可实现32个中文字符或64个ASCII码字符的显示。
12864串行显示中文讲解

12864串行显示中文,按键选择显示页面,并且可调数值。
单片机P1口接矩阵按键,其它接口按程序中定义去接只需要接12864LCD上GND VCC RS RW E PSB RST A K程序如下/********************************12864.h头文件*******************************/ #ifndef _12864_h#define _12864_h/*****包含头文件**************/#include<reg51.h>/********定义I/0口**********/#define GPIO_KEY P1sbit LCD12864_SCLK = P2^7; //Esbit LCD12864_SID = P2^5; //RWsbit LCD12864_CS = P2^6; //RSsbit LCD12864_RET= P2^0;sbit LCD12864_PSB =P2^2;/*声明全局变量*/extern unsigned char keyvalue;/******声明全局函数*********/void Delay1ms(unsigned int); //声明延时函数unsigned char KeyDown(void);void LCD_sendbyte(unsigned char);void WrCom(unsigned char);void WrDat(unsigned char);void LcdInit(void);//void Print(unsigned char);void SetAddress( unsigned char,unsigned char );void DisplayString(unsigned char x ,unsigned char y,unsigned char *add);#endif/********************************12864.C*************************************/ #include"12864.h"#include<reg51.h>#include"string.h"//#define LCM_ST7920_FIRST_LINE_ADDRESS 0x80//#define LCM_ST7920_SECOND_LINE_ADDRESS 0x90//#define LCM_ST7920_THIRD_LINE_ADDRESS 0x88//#define LCM_ST7920_FOURTH_LINE_ADDRESS 0x98/*定义全局变量*/unsigned char keyvalue=0;/****************************************************************************** ** 函数名: Delay1ms* 函数功能: 延时函数,延时1ms* 输入: c* 输出 e : 无* 说名: 该函数是在12MHZ晶振下,12分频单片机的延时。
12864液晶使用说明书

功能:S/C:光标左/右移动,AC减/加1。 R/L:整体显示左/右移动,光标跟随移动,AC值不变。
6) 功能设定:
功能:DL=1: 8-BIT 控制接口; DL=0: 4-BIT 控制接口。 RE=1: 扩充指令集动作; RE=0: 基本指令集动作。
7) 设定CGRAM地址:
● RS=0: 当 MPU 进行读模块操作,指向地址计数器。 当 MPU 进行写模块操作,指向指令寄存器。
● RS=1: 无论 MPU 读/写操作,均指向数据寄存器。
串口方式: CS:串行片选信号,高电平有效。
并口方式: ● R/W=0 写操作。 ● R/W=1 读操作。
串口方式: 串行数据输入端 并口方式:使能信号,高电平有效。 串口方式:串行时钟信号。 MPU 与模块之间并口的数据传送通道, 4 位总线模式下 D0 ~ D3 脚断开 串/并口控制选择端: ● H:并口控制; ● L:串口控制。
字节的LSB部分,至于相关的另四位则都为0。串行传输讯号请参考下图说明
4、串行接口时序图:
(1) MPU写数5℃,VDD=4.5V)
五、用户指令集说明:
1、指令表一:(RE=0:基本指令集)
指令表二:(RE=1:扩充指令集)
备注说明: ● 当模块在接受指令前,微处理顺必须先确认模块内部处于非忙碌状态,即读取 BF 标志时BF需为0,方可接受新的指令;如果在送出一个指令前并不检查BF标 志,那么在前一个指令和这个指令中间必须延迟一段较长的时间,即是等待前一 个指令确实执行完成,指令执行的时间请参考指令表中的个别指令说明。 ● “RE”为基本指令集与扩充指令集的选择控制位,当变更“RE”位后,往后 的指令集将维持在最后的状态,除非再次变更“RE”位,否则使用相同指令集 时,不需每次重设“RE”位。
JGD12864中文说明使用书

12864M-1 使用说明书液晶显示器使用手册目录(一)概述(二)外形尺寸(三)模块主要硬件构成说明(四)模块的外部接口(五)指令说明(六)读写操作时序(七)软件初始化一、概述12864M-1 是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及128X64 全点阵液晶显示器组成,可完成图形显示,也可以显示8X4 个(16X16 点阵汉字,与外部CPU 接口可采用串行或并行方式控制。
主要技术参数和性能:1 1.电源:VDD:+5V2 2.显示内容:128 (列)X64 (行)点。
3 3.全屏幕点阵。
4ROM 总共提供8192 个汉字(16X16 点阵)。
5ROM (CGROM) 总共提供128 个字符(16X8 点阵)6 6.工作温度:-20℃∽+70℃,存储温度:-30℃∽+80℃二、外形尺寸图表:ITEM NOMINAL DIMEN UNIT模块体积 93X70X13.5 mm视域 70.0X38.8 mm行列点阵数 128X64 DOTS点距离 0.52X0.52 mm点大小 0.48X0.48 mm三、模块主要硬件构成说明RS,R/W 的配合选择决定控制界面的4 种模式:RS R/W 功能说明L L MPU 写指令到指令暂存器(IR)L H 读出忙标致(BF)及地址计数器(AC)的状态H L MPU 写入数据到数据暂存器(DR)H H MPU 从数据暂存器(DR) 中读出数据H H MPU 从数据暂存器(DR) 中读出数据·忙标志:BFBF 标志提供内部工作情况,BF=1 表示模块在进行内部操作,此时模块不接受外部指令和数据,BF=0 时,模块为准备状态,随时可接受外部指令和数据。
·字型产生ROM(CGROM)字型产生ROM(CGROM)提供8192 个此触发器是用于模块屏幕显示开和关的控制.DFF=1 为开显示,DFF 的状态是指令DISPLAY ON/OFF 和RST 信号控制的。
LCD12864液晶显示器中文说明(DOC)

一、液晶显示模块概述12864A-1汉字图形点阵液晶显示模块,可显示汉字及图形,内置8192个中文汉字(16X16点阵)、128个字符(8X16点阵)及64X256点阵显示RAM(GDRAM)。
主要技术参数和显示特性:电源:VDD 3.3V~+5V(内置升压电路,无需负压);显示内容:128列× 64行显示颜色:黄绿显示角度:6:00钟直视LCD类型:STN与MCU接口:8位或4位并行/3位串行配置LED背光多种软件功能:光标显示、画面移位、自定义字符、睡眠模式等二、外形尺寸1.外形尺寸图2.二、模块引脚说明电源地(GND):0V工作温度(Ta):0~60℃(常温) / -20~75℃(宽温)三、接口时序模块有并行和串行两种连接方法(时序如下):8位并行连接时序图MPU写资料到模块MPU从模块读出资料、串行连接时序图2串行数据传送共分三个字节完成:第一字节:串口控制—格式11111ABCA为数据传送方向控制:H表示数据从LCD到MCU,L表示数据从MCU到LCDB为数据类型选择:H表示数据是显示数据,L表示数据是控制指令C固定为0第二字节:(并行)8位数据的高4位—格式DDDD0000第三字节:(并行)8位数据的低4位—格式0000DDDD串行接口时序参数:(测试条件:T=25℃VDD=4.5V)四、用户指令集1、当模块在接受指令前,微处理顺必须先确认模块内部处于非忙碌状态,即读取BF 标志时BF 需为0,方可接受新的指令;如果在送出一个指令前并不检查BF 标志,那么在前一个指令和这个指令中间必须延迟一段较长的时间,即是等待前一个指令确实执行完成,指令执行的时间请参考指令表中的个别指令说明。
2、“RE ”为基本指令集与扩充指令集的选择控制位元,当变更“RE ”位元后,往后的指令集将维持在最后的状态,除非再次变更“RE ”位元,否则使用相同指令集时,不需每次重设“RE ”位元。
具体指令介绍:1、清除显示 CODE :功能:清除显示屏幕,把DDRAM 位址计数器调整为“00H ” 2、位址归位 CODE :功能:把DDRAM 位址计数器调整为“00H ”,游标回原点,该功能不影响显示DDRAM 3、位址归位 CODE : 功能:把DDRAM 位址计数器调整为“00H ”,游标回原点,该功能不影响显示DDRAM 功能:执行该命令后,所设置的行将显示在屏幕的第一行。
12864液晶串行如何显示?

12864: 12864液晶串行显示这一篇只是简单的介绍了 12864液晶串行显示一些文字不能显示图片,先看一下 12864 的引脚。
从上面的引脚说明我们可以看出,如果要想串行显示只需要将 4、5、6 引脚接到单片机就行了,同时还需要将 1、15、20 引脚接地,17、19 引脚接电源,注意 17 号引脚所说的低电平有效,并不是将 17 号引脚接地复位功能就可以使用了,而是需要软件置低,为了节省IO 口要将 17 号引脚置高,置高说明 17 号引脚复位功能不使用。
3 号引脚接一 10k可调变阻以调节12864液晶的亮度。
具体接法可参考下图:12864:以下是程序:/********************************************************************串行12864液晶显示*引脚说明:CS P1.0SID P1.1SCLK P1.2PSB P1.3RST P1.4Ps:因为PSB和RST我们已经在电路中连接好了,所以这两个引脚没有使用***********************************************************************/ #include <msp430g2553.h> #define uchar unsignedchar#define uint unsignedint/********************************************************************* 名称 : delay()* 功能 : 延时,延时时间为 100us * t。
这是通过软件延时,有一定误差。
* 输入 : t* 输出 : 无***********************************************************************/ void delay( unsigned int t){ unsigned int i,j;for(i=0; i<t; i++) for(j=0; j<10;j++);}/********************************************************************* 名称 : sendbyte()* 功能 : 按照液晶的串口通信协议,发送数据* 输入 : zdata* 输出 : 无***********************************************************************/ void sendbyte( unsigned char zdata){ unsigned int i; for(i=0; i<8;i++){ if((zdata << i) & 0x80){P1OUT |= BIT1; //SID = 1;} else{P1OUT &= ~BIT1;//SID = 0;}P1OUT &= ~BIT2;//SCLK = 0; P1OUT |= BIT2;//SCLK =1;}}/********************************************************************* 名称 : write_com()* 功能 : 写串口指令* 输入 : cmdcode* 输出 : 无**********************************************************************/ void write_com( unsigned char cmdcode){P1OUT |= BIT0;//CS = 1;sendbyte(0xf8); //告诉12864接下来传送指令 sendbyte(cmdcode & 0xf0); sendbyte((cmdcode << 4) &0xf0);delay(2);}/********************************************************************* 名称 : write_data()* 功能 : 写串口指令* 输入 : cmdcode* 输出 : 无***********************************************************************/ void write_data( unsigned char Dispdata){P1OUT |= BIT0;//CS = 1;sendbyte(0xfa); //12864:告诉12864接下来传送数据 sendbyte(Dispdata & 0xf0); sendbyte((Dispdata << 4) & 0xf0);delay(2);}/******************************************************************** * 名称 : lcdinit()* 功能 : 初始化函数* 输入 : cmdcode* 输出 : 无***********************************************************************/ void lcdinit(){/* P1OUT &= ~BIT4;//RST = 0; delay(100);P1OUT |= BIT4;//RST = 1; 这一部分是LCD复位功能,我们已经将复位引脚置高,所以复位功能不能使用了,如果要使用复位功能就将其接到单片机IO口再加上这段函数就行*/delay(20000);write_com(0x30); //基本指令操作delay(50);write_com(0x0c); //显示开关闭光标delay(50);}/******************************************************************* ** 名称 : hzkdis()* 功能 : 显示字符串* 输入 : *s* 输出 : 无***********************************************************************/void hzkdis( char*s){ while(*s >0){write_data(*s);s++;delay(50);}}/******************************************** ************************* 名称 : Test()* 功能 : 显示子函数* 输入 : 无* 输出 : 无***********************************************************************/ void Test(){write_com(0x03); //地址归为 delay(50);write_com(0x81); //显示第一行hzkdis("二院科协");write_com(0x91); //显示第二行hzkdis("刘渠");}/********************************************************************* 名称 : Main()* 功能 : 主函数* 输入 : 无* 输出 : 无***********************************************************************/ void main(){P1DIR |= BIT0 + BIT1 + BIT2 +BIT3 + BIT4; WDTCTL = WDTPW + WDTHOLD; //关闭看门狗/* P1OUT &= ~BIT3; PSB = 0; 串并行选择,如果要使用并行方式,只要置高就行,我们已将PSB接地选择了串行这句可以不要*/delay(1);lcdinit();delay(10);while(1){Test();delay(5000);}}12864 程序的详细分析:void sendbyte( unsigned char zdata){ unsigned int i; for(i=0; i<8; i++){ if((zdata << i) &0x80){P1OUT |= BIT1; //SID = 1;} else{P1OUT &= ~BIT1;//SID = 0;}P1OUT &=~BIT2;//SCLK = 0;P1OUT |= BIT2;//SCLK = 1;}}这个函数的功能就是按照12864传送数据的时序图将数据一位一位的传送给12864,这部分程序需要参照 12864 的时序图来12864:if((zdata << i) & 0x80) 这是在判断传送过来的数据 zdata 的每一位数据是 0还是 1,假设 zadata 是 10101111 来分析一下,那么就是 zdata 先左进 0 还是10101111 不变,然后与 0x80 进行“与”运算,0x80 就是 10000000, 10101111& 10000000————10000000“与”完之后为 1000000,为非 0,所以 P1OUT 输出 1,然后 i++等于 1;zdata左进 1 为01011110;再与 0x80 进行“与”运算,结果为 00000000,所以 P1OUT 输出为 0;与 0x80 进行“与”运算,因为 0x80 只有第一位是 1,其他都是 0,所以这样就可以不改变 zdata 的第一位数据而使其他位为 0,如果 zdata 第一位为 1“与”后结果就是非零,就输出 1,反之相反。
12864串行驱动

/*-------------------------------------------------------------------------------------
* 功能:
向 LCD12864 写入 1Byte 数据
--------------------------------------------------------------------------------------*/
由于串行操作12864无法读取内部ram所以画图操作在单片机内部开辟1664字节ram充当缓存经测试整屏刷新速度大于5接线方法
STM32 单片机 12864 串行驱动
说明:测试单片机型号 STM32F103C8T6,由于单片机 IO 资源不充分, 故采用串行驱动 12864。由于串行操作 12864 无法读取内部 RAM,所 以画图操作在单片机内部开辟 16*64 字节 RAM 充当缓存,经测试整 屏刷新速度大于 5 次/s。 接线方法: PSB 接地
* 说明:
LCD12864 PSB(15 脚)需接低电平,RS(4 脚)需接高电平
* 文件调用: 需调用 Delay_us()、Delay_ms()
--------------------------------------------------------------------------------------*/
extern unsigned char PicBuff[16*64];
void LCD12864_ClearPicBuff(unsigned char *Buff); void LCD12864_DisPlayFont(sFont *font, unsigned char x, unsigned char y, unsigned char len, unsigned char *pData); void LCD12864_DisPlayPic(unsigned char *Buff,PicStruct *Pic,unsigned char x,unsigned char y); void LCD12864_DrawCircle(unsigned char *Buff,unsigned char x0,unsigned char y0,unsigned char r); void LCD12864_DrawPoint(unsigned char *Buff, unsigned char x, unsigned char y, unsigned char color); void LCD12864_Line_X(unsigned char *Buff,unsigned char X0,unsigned char X1,unsigned char
12864串口程序

4.串口程序5.6.PSB接低时,串口模式被选择。
在该模式下,只用两根线(SID与SCLK)来完成数据传输。
当同时使用多颗ST7920时,CS线被配合使用,CS 是高有效。
ST7920 的他不时钟SCLK 有独立的操作时序,当多个连续的指令需要被送入时,指令执行时间需要被考虑。
必须等待上一个指令执行完毕才送入下一个指令,因为ST7920内部没有传送/接收缓冲区一个完整的串行传输周期由一下部分组首先送入启动字节,送入5 个连续的“数被重置,并且串行传输被同步。
紧接的两是写)和传输性质(RS,确定是命令寄存器一个“0” 。
送完启动字节之后,可以送入指令或是者代码是以字节为单位的,每个字节的内容字节来处理:高四位放在第一个字节的高四无关位都补“0” 。
请参照第四章串行通讯时示例程序如下:;*************************************;CONTROLLER:ST7920(串行接口);128×64点阵;EDITOR: JACK;CRYSTAL:12MHz;CS=P3.0 SID=P3.1 SCLK=P3.2;**************************************CS EQU P3.0 ;H=DA TA,L=COM SID EQU P3.1 ;H=READ,L=WRITESCLK EQU P3.2 ;COM EQU 30H ;控制字暂存单元DAT EQU 31H ;显示数据暂存单元CODER EQU 32H ;字符代码暂存单元ADDR EQU 33H ;地址暂存单元ORG 0000HAJMP MAINORG 0030HMAIN:MOV SP,#60HLCALL DEL_40MSLCALL INIMOV ADDR,#80HMOV DPTR,#WEL_1LCALL W_LINEMOV ADDR,#90HMOV DPTR,#WEL_2LCALL W_LINEMOV ADDR,#88HMOV DPTR,#WEL_3LCALL W_LINEMOV ADDR,#98HMOV DPTR,#WEL_4LCALL W_LINELCALL DEL_1500MSMOV ADDR,#80HMOV DPTR,#WEL_5LCALL W_LINEMOV ADDR,#90HMOV DPTR,#WEL_6LCALL W_LINEMOV ADDR,#88HMOV DPTR,#WEL_7LCALL W_LINEMOV ADDR,#98HMOV DPTR,#WEL_8LCALL W_LINELCALL DEL_1500MSMOV ADDR,#80H ;MOV DPTR,#HZ_1 ;LCALL W_LINEMOV ADDR,#90H ;MOV DPTR,#HZ_2 ;LCALL W_LINEMOV ADDR,#88H ;MOV DPTR,#HZ_3 ;LCALL W_LINEMOV ADDR,#98H ;MOV DPTR,#HZ_4 ;LCALL W_LINELCALL DEL_1500MS ;延时后显示下一页MOV ADDR,#80H ;MOV DPTR,#HZ_5 ;LCALL W_LINEMOV ADDR,#90H ;MOV DPTR,#HZ_6 ;LCALL W_LINEMOV ADDR,#88H ;MOV DPTR,#HZ_7 ;LCALL W_LINEMOV ADDR,#98H ;MOV DPTR,#HZ_8 ;LCALL DEL_1500MSLJMP MAININI:MOV COM,#30H ;功能设定,基本指令LCALL WCOMMOV COM,#30H ;基本指令,8-bit模式,基本指令LCALL WCOMMOV COM,#0CH ;显示开,游标关,反白关LCALL WCOMMOV COM,#01H ;清除显示LCALL WCOMMOV COM,#06H ;进入设定点,游标7右移,画面不移动LCALL WCOMRETW_LINE:MOV COM,ADDRLCALL WCOMMOV R4,#16 ;连续写入8个中文或者16个西文字符W_L1:MOV A,#00HMOVC A,@A+DPTRMOV CODER,ALCALL WCODEINC DPTRDJNZ R4,W_L1RETWCOM:LCALL STWCMOV A,COMLCALL W4_D ;送入高四位指令LCALL W4_0 ;连续送入四个0LCALL W4_D ;送入高四位指令LCALL W4_0 ;连续送入四个0CLR CSLCALL DEL_2MSRETWCODE:LCALL STWDMOV A,CODERLCALL W4_0LCALL W4_DLCALL W4_0CLR CSLCALL DEL_2MSRETSTWC:SETB CSSETB SIDMOV R3,#5 ;连续送入5个"1",起始STWC1:SETB SCLKCLR SCLKDJNZ R3,STWC1CLR SIDMOV R3,#3STWC2:SETB SCLK ;RW=0,RS=0,第八位"0"CLR SCLKDJNZ R3,STWC2RETSTWD:SETB CSSETB SIDMOV R3,#5 ;连续送入5个"1",起始STWD1:SETB SCLKCLR SCLKDJNZ R3,STWD1CLR SID ;RW=0SETB SCLKCLR SCLKSETB SID ;RS=1SETB SCLKCLR SCLKCLR SID ;第八位"0"SETB SCLKCLR SCLKRETW4_D:MOV R3,#4W4_D1:RLC AMOV SID,CSETB SCLKCLR SCLKDJNZ R3,W4_D1RETW4_0:MOV R3,#4W4_01:CLR SIDSETB SCLKCLR SCLKDJNZ R3,W4_01RETDEL_2MS:MOV R0,#2D1:MOV R1,#200D2:NOPNOPNOPDJNZ R1,D2DJNZ R0,D1RETDEL_40MS:MOV R2,#20D3:LCALL DEL_2MSDJNZ R2,D3RETDEL_200MS:MOV R2,#100 D4:LCALL DEL_2MSDJNZ R2,D4RETDEL_500MS:MOV R2,#250D5:LCALL DEL_2MSDJNZ R2,D5RETDEL_1500MS:LCALL DEL_500MSLCALL DEL_500MSLCALL DEL_500MSRETWEL_1:DB "WWW.Y AB_" WEL_2:DB "欢迎使用亚斌液晶"WEL_3:DB "086-755-28072527"WEL_4:DB "支持图形和文本显"WEL_5:DB "示,可显示8X4 行" WEL_6:DB "共32 个中文,内带" WEL_7:DB "标准中文字库,内"WEL_8:DB "含8192个中文字型"HZ_1:DB " 桃夭"HZ_2:DB "诗经·国风·周南"HZ_3:DB "桃之夭夭灼灼其华"HZ_4:DB "之子于归宜其室家"HZ_5:DB "桃之夭夭有蕡其实"HZ_6: DB "之子于归宜其家室" HZ_7:DB "桃之夭夭其叶蓁蓁"HZ_8:DB "之子于归宜其家人"END。
12864串行使用说明

LCM128645ZK使用说明
1.综述
LCM128645ZK为带中文字库图形点阵液晶显示模块。
其液晶屏幕为128*64,可显示四行,每行可显示8个汉字。
其背光为蓝色,字符为白色中文液晶显示模块LCM128645ZK的字型ROM内含8192个16*16点中文字型和128个16*8半宽的字母符号字型;另外绘图显示画面提供一个64*256点的绘图区域GDRAM;而且内含CGRAM提供4组软件可编程的16*16点阵造字功能。
通过
2.电气特性
3.引脚定义:
4.硬件电路的连接
3.1串并行工作方式的选择
串并行工作方式的选择通过改接模块背面短路电阻来完成。
当PSB脚接低电位(模块背面S/P的短路电阻在“S”侧),模块将进入串行模式;在串行模式下将使用二条传输线作串行资料的传送,主控制系统将配合传输同步时钟(SCLK)与接收串行数据线(SID),来完成串行传输的动作。
不可在不改接短路电阻的情况下将此引脚直接引线改接低电平。
短路电阻位置如图所示:
3.2外部硬件电路(串行工作方式)
串行工作电路如下图所示:并行传输的RS信号作为片选CS信号直接接高电平,读写选择R/W作为串行数据输入SID,读写使能信号作为串行输入时钟信号。
VO与VOUT引脚跨接10K电位器以调节液晶对比度。
RST复位信号可悬空。
背光电源阳极A需接+5V。
数据输入端3.3V高电平可正常驱动。
12864说明书

PSB
H/L
H:8位或4位并口方式,L:串口方式
16
NC
-
空脚
17
/RESET
H/L
复位端,低电平有效
18
VOUT
-
LCD驱动电压输出端
19
A
VDD
背光源正端(+5V)
20
K
VSS
背光源负端
并行接口管教分配:
管脚号
名称
电平
功能
1
VSS
0V
电源地
2
VDD
+5V
电源正(3.0V——5.5V)
3
Hale Waihona Puke V0-D5D4
D3
D2
D1
D0
清除显示
0
0
0
0
0
0
0
0
0
1
将DDRAM填满“20H”,并且设定DDRAM的地址计数器(AC到“00H”)
地址归位
0
0
0
0
0
0
0
0
0
X
设定DDRAM的地址计数器(AC)到“00H”,并且将游标移到开头原点位置;这个指令不改变DDRAM的内容
显示状态开/关
0
0
0
0
0
0
1
D
C
B
D=1:整体显示ON
AC4
AC3
AC2
AC1
AC0
读取忙标志(BF)可以确认内部动作是否完成,同时可以读出地址
写数据到RAM
1
0
数据
将数据D7——D0写入到内部的RAM(DDRAM/CGRAM/IRAM/GRAM)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
LCM128645ZK使用说明
1.综述
LCM128645ZK为带中文字库图形点阵液晶显示模块。
其液晶屏幕为128*64,可显示四行,每行可显示8个汉字。
其背光为蓝色,字符为白色中文液晶显示模块LCM128645ZK的字型ROM内含8192个16*16点中文字型和128个16*8半宽的字母符号字型;另外绘图显示画面提供一个64*256点的绘图区域GDRAM;而且内含CGRAM提供4组软件可编程的16*16点阵造字功能。
通过
2.电气特性
3.引脚定义:
4.硬件电路的连接
3.1串并行工作方式的选择
串并行工作方式的选择通过改接模块背面短路电阻来完成。
当PSB脚接低电位(模块背面S/P的短路电阻在“S”侧),模块将进入串行模式;在串行模式下将使用二条传输线作串行资料的传送,主控制系统将配合传输同步时钟(SCLK)与接收串行数据线(SID),来完成串行传输的动作。
不可在不改接短路电阻的情况下将此引脚直接引线改接低电平。
短路电阻位置如图所示:
3.2外部硬件电路(串行工作方式)
串行工作电路如下图所示:并行传输的RS信号作为片选CS信号直接接高电平,读写选择R/W作为串行数据输入SID,读写使能信号作为串行输入时钟信号。
VO与VOUT引脚跨接10K电位器以调节液晶对比度。
RST复位信号可悬空。
背光电源阳极A需接+5V。
数据输入端3.3V高电平可正常驱动。