搜档网
当前位置:搜档网 › 12864串行驱动

12864串行驱动

12864串行驱动
12864串行驱动

06 12864LCD显示计算器键盘按键实验

目录 1 课程设计概述和要求 (1) 1.1 课程设计要求与任务 (2) 1.2 课程设计思路 (2) 1.3 课程设计需要配置的环境 (3) 2 系统设计 (3) 2.1 设计框图 (3) 2.2 元件解析 (3) 2.2.1 LCD12864芯片……………………………………………………………4 2.2.2 AT89C51芯片 (5) 2.2.3 其他部件 (6) 2.2.4 电路分析 (7) 3 软件设计 (12) 3.1 程序流程图 (12) 3.2 程序代码 (12) 4 系统的仿真与调试 (13) 4.1 硬件调试 (13) 4.2 软件调试 (14) 4.3 软硬件调试 (14) 5 总结 (14) 附录1:程序代码 附录2:12864LCD显示计算器键盘按键实验Proteus仿真图

1 课程设计概述和要求 1.1 课程设计任务与要求 设计任务:利用AT89C51单片机结合12864LCD显示器设计计算器键盘按键。 设计要求1:本设计实现一个12864LCD显示12864LCD显示器设计计算器键盘按键 2.利用AT89C51控制整个电路来实现. 显示12864LCD显示器 设计计算器键盘按键,系统主要包括硬件和软件两部分。重点就 是各部分硬件的连接设计以及程序的编写。本章讲述的就是系统 硬件的设计,其中包括各模块的器件选择和电路设计。将计算器 按键上的信息传送至AT89C51主芯片之中,利用P2端口使之显 示于12864LCD液晶显示屏上。 1.2 课程设计目的思路 1、先把与题目有关的芯片资料找到,熟悉一下芯片资料 2、把此程序的电路图看懂,了解一下它的实现原理,以及实现的功能。 3、分析一下此程序的各部分的功能,各零件的工作原理。 4、对程序进行调试,分析调试结果,观察并得出结论。 1.3 课程设计需要配置的环境 1、一台主机,一台显示器 2、Keil uVision3/Keil uVision4 应用程序软件 3、ISIS 7 Professional 仿真软件 4、老师交给的仿真电路图,及案例 5、纸张,以及一些参考资料 2 系统设计 2.1.设计框图 框图设计是为了能够从整体上把握系统的各个大的模块以及各个模块之间的联系。同时罗列出需要主要使用到的各个器件,以方面系统开发中器件的选取。通过框图设计,让设计者从整体上把握系统的开发。 12864LCD显示计算器键盘按键实验设计框图如下所示

LCD12864显示矩阵键盘输入的任意两位数

/********************************************************** 用矩阵按键输入任意两位数并显示在12684上。如先输入2,再输入5 液晶上显示25。用矩阵按键0-9共10个按键。LCD12864用串行方式操作,如果用并行,请自行修改。 ***********************************************************/ #include <> #include <> #define uchar unsigned char #define uint unsigned int #define NOP _nop_(); sbit LCD_CS=P1^0; //片选,高电平有效(RS) sbit LCD_SID=P1^1; //串行数据输入端(R/W) sbit LCD_SCLK=P1^2; //串行同步时钟,上升沿读取SID数据(E) sbit LCD_PSB=P1^3; //并/串选择 H并行 L串行 sbit LCD_RST=P1^4; //复位,低电平有效 uchar keynum; uchar code dis1[]={"请输入任意两位数"}; uchar code dis2[16]={"09ABCDEF"}; uchar dis_buf[]={0,0}; uchar getkey(); void display(); void delay(uint x) { uchar i; while(x--) { for(i=0;i<110;i++); } } /*写指令程序,指令由3个字节组成,第一个为写指令*/ /*第二个为指令高4位,第三个为指令低4位*/ void send_cmd(uchar cmd_dat) { uchar i; uchar i_dat; i_dat=0xf8; LCD_CS=1; LCD_SCLK=0; for(i=0;i<8;i++) { LCD_SID=(bit)(i_dat&0x80);

51单片机 12864液晶显示并口和串口连接程序

#include #define uchar unsigned char #define uint unsigned int #define lcdbus P0 sbit rs=P2^0; sbit rw=P2^1; sbit en=P2^2; uchar code line[5]={0x00,0x80,0x90,0x88,0x98}; void delay(uchar i) { uchar j; while(i--) for(j=0;j<125;j++); } void writ_DATCOM(bit flagdc,uchar thing) { rs=flagdc; rw=0; delay(1); lcdbus=thing; en=1; //en为高数据写入,0为低停止写入delay(15); //数据写入的速度 en=0; } void AUTO_line(uchar *data_add) { uchar cnt; while(*(cnt+data_add)!='\0') { writ_DATCOM(1,*(cnt+data_add)); cnt++; } } void writline(uchar flagline,uchar *address) { writ_DATCOM(0,line[flagline]); AUTO_line(address); } void init() { writ_DATCOM(0,0x01); writ_DATCOM(0,0x02); writ_DATCOM(0,0x0c);

writ_DATCOM(0,0x30); writ_DATCOM(0,0x80); } void main() { init(); writline(1,"广西职业技术学院"); writline(2,"电气自动化——技术"); writline(3,"QQ:452658536"); writline(4,"学号: 09232017"); while(1); } ////////////////////////////////////////////////////// 以下是12864串口连接程序 /**** 12864串口*******/ // QQ:462658536 #include #define uchar unsigned char #define uint unsigned int sbit RW=P2^1; sbit SCK=P2^2; uchar code lineyou[5]={0x00,0x80,0x90,0x88,0x98} ; //code void delay(uchar i) { uchar j; while(i--) for(j=0;j<125;j++); } void sent(uchar DATA) //byte 1 { uchar i; for(i=0;i<8;i++) { SCK=0; if(DA TA&0x80) // 高位先出、1000 0000 RW=1; else RW=0; delay(10); SCK=1; DATA=DATA<<1; } } void writLCD(bit flag,uchar DA TA) //writ COM or data in address

12864串行显示中文讲解

12864串行显示中文,按键选择显示页面,并且可调数值。 单片机P1口接矩阵按键,其它接口按程序中定义去接 只需要接12864LCD上GND VCC RS RW E PSB RST A K 程序如下 /********************************12864.h头文件*******************************/ #ifndef _12864_h #define _12864_h /*****包含头文件**************/ #include /********定义I/0口**********/ #define GPIO_KEY P1 sbit LCD12864_SCLK = P2^7; //E sbit LCD12864_SID = P2^5; //RW sbit LCD12864_CS = P2^6; //RS sbit 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 #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

LCD12864液晶的使用之字库型液晶(一)

LCD12864液晶的使用之字库型液晶(一) 2011年02月15日星期二 16:44 下面介绍下带字库的液晶,由于Proteus中没有,就以实物为准吧!我手头上这块液晶是QY128*64HZ1,它的驱动器是ST7920,想必大家很熟悉了,百度、谷歌一下它的芯片手册很多!在学习此块液晶之前,建议大家好好看看它的驱动芯片的手册!它的驱动和LCD1602很像,甚至,读忙、写指令和写数据函数都是一样的,就初始化不一样,因为指令系统不同嘛!下面是我手头字库液晶的实物图。 (手机拍的,图片质量差了些,大家见谅!)

字库型液晶显示可以分为串行方式和并行方式两种,通过引脚PSB进行选择,它只有一个驱动芯片,不像Proteus中无字库液晶有两个驱动芯片。显示是整体显示,而不是左右屏的显示!大家一定要注意! 1、控制口信号说明:

注:①忙标志Bust_flag=1说明LCD内部正忙,此时不能对LCD进行操作,忙标志的判断由DB7也就是数据口的最高位所决定!这和LCD1602一样! ②上面对RS和RW的操作需配合使能信号EN来操作!否则无效! 1、显示说明 (1)、字符产生ROM(CGROM) 里面提供了8192(213)个汉字GB2132宋体 (2)、显示数据RAM(DDRAM) 内部提供64*2位空间,最多可控制4行16字,也就是16个中文字型显示,当写入显示数据RAM时,可分别显示CGROM和CGRAM的字型,可以用来显示三种字型:半角英文数字型、CGRAM字型和CGROM的中文字型,三种字型的选择,由在DDRAM总写入的编码选择,在0000H—0006H的编码中(其代码分别为0000、0002、0004、0006共四个)将选择CGRAM的自定义字型,02H —7FH的编码中将显示半角英文数字型的字型(也就是ASCII码,大小为16*8),至于A1以上的编码将自动结合下一个位元组,组成两个位元组的编码,从而形成一个中文字型的编码,也就是说显示一个汉字要两个ASCII码显示的位置,即大小为16*16。BIG(A140—D75F),GB(A1A0—F7FF)。 (3)、字型产生RAM 上面已经介绍了该种液晶提供四组可定义显示,是16*16大小的自定义图像空间,通过在特定的编码位置,写入我们要显示的自定义图像即可,这个和 LCD1602液晶的自定义显示字符的原理是一样的!这个将在下文加以详细介绍

串行LCM12864驱动程序收藏

串行LCM12864驱动程序收藏.txt为什么我们在讲故事的时候总要加上从前?开了一夏的花,终落得粉身碎骨,却还笑着说意义。串行LCM12864驱动程序收藏 //头文件 #include #include //引脚定义 sbit SID = P2^1; //数据 sbit SCLK = P2^2; //时钟 //函数声明 void lcm_w_word(unsigned char *str) ; //写字符例:lcm_w_word("您好!"); void lcm_w_test(bit start, unsigned char ddata); //(0,指令)(1,数据) void lcm_w_byte(unsigned char bbyte); //写一个字节给lcm void delaynms(unsigned int di); //延时 void lcm_init(void); //lcm初始化 void lcm_clr(void); //清屏 //初始化LCM void lcm_init(void) { delaynms(10); //启动等待,等LCM讲入工作状态 lcm_w_test(0,0x30); //8 位介面,基本指令集 lcm_w_test(0,0x0c); //显示打开,光标关,反白关 lcm_w_test(0,0x01); //清屏,将DDRAM的地址计数器归零 } //写指令或数据(0,指令)(1,数据) void lcm_w_test(bit start, unsigned char ddata) { unsigned char start_data,Hdata,Ldata; if(start==0) start_data=0xf8; //0:写指令 else start_data=0xfa; //1:写数据 Hdata=ddata&0xf0; //取高四位

12864串行输入

#include "stm32f10x_lib.h" //#include "stm32f10x_it.h" GPIO_InitTypeDef GPIO_InitStructure; ErrorStatus HSEStartUpStatus; /* 函数申明-----------------------------------------------*/ void RCC_Configuration(void); void GPIO_Configuration(void); void WWDG_Configuration(void); void Delay(u32 nTime); void Delayms(vu32 m); /* 变量定义----------------------------------------------*/ /* ******************************************************************************** ** 函数名称:main(void) ** 函数功能:主函数 ** 输入:无 ** 输出:无 ** 返回:无 ******************************************************************************** */

#define uchar unsigned char #define uint unsigned int void write_com(uchar com); void write_data(uchar data); void LCD_init(void); uint com,num,i; uchar data; /* 变量定义----------------------------------------------*/ /*矩阵键盘PC口好用,PB口不好用,因为PB4复位后功能特定*/ //数据 uchar ss1[]={"0123456789"}; u8 ss2[]={"jizhundianya"}; /* ******************************************************************************** ** 函数名称:main(void) ** 函数功能:主函数 ** 输入:无 ** 输出:无 ** 返回:无 ******************************************************************************** */ int main(void) { RCC_Configuration(); GPIO_Configuration();

stm32f103zet6串行驱动12864

精心整理12864串行stm32f103zet6战舰V3学习版 在资料最下面有工程文件,直接烧录就可以使用。希望大家尊重我的劳动成果,下载下来。 每个语句注释,在工程文件中都有。12864相关驱动在key.c和Key.h中 经我验证,可以用stm32引脚控制12864 如上图为12864串口时序图 串行数据传送共分三个字节完成: 第一字节:串口控制—格式11111ABC A为数据传送方向控制:H表示数据从LCD到MCU,L表示数据从MCU到LCD B为数据类型选择:H表示数据是显示数据,L表示数据是控制指令 C固定为0 第二字节:(并行)8位数据的高4位—格式DDDD0000 第三字节:(并行)8位数据的低4位—格式0000DDDD 以上是说明书给的出的, 个人理解 从图上可以看出串行传输时需要用到CS,SCLK,SID三根信号线,但是由于CS 是高电平有效,所以也可以把CS长接高电平,那样就只需要两根线就OK了,当然当使用12864串行模式时,PSB引脚必须接低电平,复位RST引脚可以悬空不接,因为12864内部有上电复位电路。

所以电路图如下图所示 一定要查资料,看下PSB引脚是否和VCC连接在一起,我在育松上买的 QC12864B,液晶屏幕,太垃圾了,资料上都没有说明串行该怎么修改,结果调试时候发现,PSB引脚电平不对,后来一查,PSB引脚和VCC连接在一起了,所以一定要确保引脚电平正确。 串行数据传送共分三个字节完成:——理解就是传输一个字节需要三个字节来确定。 第一个字节:11111ABC 11111000单片机写控制指令给LCD 11111010单片机写数据给LCD 第三个字节:00001111 由于数据是传输是以一个字节8bits为单位,所以下面贴出传输一个字节的函数实现 voidWrite_Bits(u8bits) { u8i,Temp_Data; for(i=0;i<8;i++) { Temp_Data=bits<

12864液晶使用说明

FYD12864液晶中文显示模块 (一)概述 (3) (二)外形尺寸 1 方框图 (3) 2 外型尺寸图 (4) (三)模块的接口 (4) (四)硬件说明 (5) (五)读写操作时序 (8) (六)交流参数 (11) (七)软件初始化过程 (12) (八)应用举例 (13) (九)附录 1半宽字符表 (20) 2 汉字字符表 (21) 一、概述 FYD12864-0402B是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64, 内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示8×4行16×16点阵的汉字. 也可完成图形显示.低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。 基本特性: 低电源电压(VDD:++) 显示分辨率:128×64点 内置汉字字库,提供8192个16×16点阵汉字(简繁体可选)

内置128个16×8点阵字符 2MHZ时钟频率 显示方式:STN、半透、正显 驱动方式:1/32DUTY,1/5BIAS 视角方向:6点 背光方式:侧部高亮白色LED,功耗仅为普通LED的1/5—1/10 通讯方式:串行、并口可选 内置DC-DC转换电路,无需外加负压 无需片选信号,简化软件设计 工作温度: 0℃- +55℃,存储温度: -20℃- +60℃ 二、方框图 3、外形尺寸图

12864显示程序,51单片机,C语言

12864显示程序,51单片机,C语言 可显示固定中文,字符,数字; 可实时动态刷新显示数字,字符; #include sbit rs=P1^2; sbit rw=P1^1; sbit cs=P1^0; sbit psb=P1^3; unsigned char code table[]={" X0: Y0: "}; unsigned char code table1[]={"现在X1: Y1: "}; unsigned char code table2[]={"划线模式:"}; unsigned char code table3[]={"开始暂停"}; void delay(unsigned char z) //延时 { unsigned i,j; for(i=0;i

cs=0; P2=com; delay(5); cs=1; delay(5); cs=0; } void write_date(unsigned char dat) //写数据 { rs=1; rw=0; cs=0; P2=dat; delay(5); cs=1; delay(5); cs=0; } void pos(unsigned char x,unsigned char y) //起点函数{ unsigned char pos;

if(x==0) x=0x80; else if(x==1) x=0x90; else if(x==2) x=0x88; else if(x==3) x=0x98; pos=x+y/2; write_com(pos); } void init() { unsigned char i; psb=1; //1并行,0串行 write_com(0x30); //基本指令操作 delay(5); write_com(0x0c); //显示开,关光标 delay(5); write_com(0x01); //清除led的显示内容delay(5); pos(0,0);

Lcd12864最全中文资料

128*64LCD液晶显示屏中文资料 一、概述 二、带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64, 内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示8×4行16×16点阵的汉字. 也可完成图形显示.低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。 三、基本特性: (1)、低电源电压(VDD:+3.0--+5.5V)(2)、显示分辨率:128×64点(3)、内置汉字字库,提供8192个16×16点阵汉字(简繁体可选) (4)、内置 128个16×8点阵字符(5)、2MHZ时钟频率(6)、显示方式:STN、半透、正显(7)、驱动方式:1/32DUTY,1/5BIAS (8)、视角方向:6点(9)、背光方式:侧部高亮白色LED,功耗仅为普通LED的1/5—1/10 (10)、通讯方式:串行、并口可选(11)、内置DC-DC转换电路,无需外加负压(12)、无需片选信号,简化软件设计(13)、工作温度: 0℃ - +55℃ ,存储温度: -20℃ - +60℃ 模块接口说明: *注释1:如在实际应用中仅使用串口通讯模式,可将PSB接固定低电平,也可以将模块上的J8和“GND”用焊锡短接。 *注释2:模块内部接有上电复位电路,因此在不需要经常复位的场合可将该端悬空。 *注释3:如背光和模块共用一个电源,可以将模块上的JA、JK用焊锡短接。 2.2并行接口 管脚号管脚名 称 电平管脚功能描述 1 VSS 0V 电源地 2 VCC 3.0+5V 电源正 3 V0 - 对比度(亮度)调整

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中文字库使用说明

(一)(一)概述 (3) (二)(二)外形尺寸 1 方框图 (3) 2 外型尺寸图 (4) (三)(三)模块的接口 (4) (四)(四)硬件说明 (5) (五) 指令说明 (7) (五)(五)读写操作时序 (8) (六)(六)交流参数 (11) (七)(七)软件初始化过程 (12) (八)(八)应用举例 (13) (九)(九)附录 1半宽字符表 (20) 2 汉字字符表 (21) 一、概述 FYD12864-0402B是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64, 内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示8×4行16×16点阵的汉字. 也可完成图形显示.低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。 基本特性: ●●低电源电压(VDD:+3.0--+5.5V) ●●显示分辨率:128×64点 ●●内置汉字字库,提供8192个16×16点阵汉字(简繁体可选)

●●内置 128个16×8点阵字符 ●●2MHZ时钟频率 ●●显示方式:STN、半透、正显 ●●驱动方式:1/32DUTY,1/5BIAS ●●视角方向:6点 ●●背光方式:侧部高亮白色LED,功耗仅为普通LED的1/5—1/10 ●●通讯方式:串行、并口可选 ●●内置DC-DC转换电路,无需外加负压 ●●无需片选信号,简化软件设计 ●●工作温度: 0℃ - +55℃ ,存储温度: -20℃ - +60℃ 二、方框图 3、外形尺寸图

可串行驱动LCD12864的应用之一……基础篇

在网上搜了一下,ST7920控制器的LCD产品可以提供8位,4位并行和串行接口可选,并行的控制接口的LCD较多,前面的贴子也介绍过,我们在这儿不说了,这儿我们讲的是串口控制LCD12864。 买了块ST7920的LCD12864,这个好像价格便宜些,52元。是不是显示效果要差些呢。 再来个背面: 买来后也就只有个管脚说明:(我只说串口的定义) 工作于串行模式时的引脚定义: PIN1------------ GND 电源-,一般接0V。 PIN2------------VDD 电源+,一般接5V。 PIN3------------V0 对比度调整端。 PIN4------------CS,片选 PIN5------------SID,数据 PIN6------------SCK,脉冲 PIN7------------NC,不连接 PIN8------------NC,不连接 PIN9------------NC,不连接 PIN10-----------NC,不连接 PIN11-----------NC,不连接 PIN12-----------NC,不连接 PIN13-----------NC,不连接 PIN14-----------NC,不连接 PIN15-----------PSB 并行:PSB=1,可以接VCC;串行:PSB=0,一般接GND PIN16 ----------NC,不连接 PIN17-----------RST,模块复位(低电平有效) PIN18 ----------NC,不连接 PIN19 ----------LED+ ,背光+,一般接5V。 PIN20 ----------LED- ,背光-,一般接GND。 在网上搜了关于ST7920的资料,跟据图上的接法串行驱动只要四根线和S52连接: PIN5----SID 数据线 PIN6----SCLK 时钟脉冲线 PIN1----VSS(GND)接地 PIN2----VDD(Vcc)电源+5V 我先试了背光,也就是第20脚接地,19脚通过电流表接电源+5V,测得背光电流为30mA,背光很亮。 下面还是要先讲原理,资料说起来是枯燥了点。但你不去理解它,是不可能让LCD正常工作的。

RX12864ZW说明书

深圳叡显电子有限公司 Shenzhen Ruixian Electronics Co.,Ltd RX12864ZW TEL: 0755- 86381760 FAX: 0755- 86381499 公司地址: 深圳市南山区南光城市花园2栋1415 电子邮箱:topview@https://www.sodocs.net/doc/6f10965740.html, ; info@https://www.sodocs.net/doc/6f10965740.html, 网址: https://www.sodocs.net/doc/6f10965740.html,

目录 (一)概述 (二)外形尺寸(三)模块外部接口(四)时序说明(五)用户指令集说明(六)显示步骤(七)初始化时序(八)应用举例

一、概述 RX12864ZW是自带中文标准字库(控制芯片ST7920)图形点阵液晶显示器,它主要由行驱动器/列驱动器及128X64全点阵液晶显示器组成,可完成图形显示,也可以显示8X4个(16X16点阵汉字,与外部CPU接口可采用串行或并行方式控制。 二、外形尺寸图 项目参考值 LCM尺寸(长×宽×厚)93.0×70.0×13.5 可视区域(长×宽)72.0×40.0 点间距(长×宽)0.52×0.52 点尺寸(长×宽 0.48×0.48 逻辑工作电压(Vdd +5.0V 或+3.3V(出厂时设定+5.0V)LCD 驱动电压(Vdd-V0)+3.0 ~ +5.0V 工作温度(Ta)0 ~ +50℃(常温)/ -20 ~ +70℃(宽温)储存温度(Tsto) -10 ~ +60℃(常温)/ -30 ~ +80℃(宽温)工作电流(背光除外) 3.0mA(max)

三.模块外部接口 引脚名称方向说明 1 VSS -- 电源负端(0V) 2 VDD -- 电源正端(+3.3V 或+5.0V,出厂时设定+5.0V) 3 V0 -- LCD 驱动电压(可调) 4 RS(CS) I 并口方式: ● RS=0: 当MPU 进行读模块操作,指向地址计数器。 当MPU 进行写模块操作,指向指令寄存器。 ● RS=1: 无论MPU 读/写操作,均指向数据寄存器。 串口方式: CS:串行片选信号,高电平有效。 5 R/W(SID) I 并口方式: ● R/W=0 写操作。 ● R/W=1 读操作。 串口方式: 串行数据输入端 6 E(SCLK) I 并口方式:使能信号,高电平有效。 串口方式:串行时钟信号。 7-14 DB0~DB7 I/O MPU与模块之间并口的数据传送通道, 4 位总线模式下D0 ~ D3脚断开 15 PSB I 串/并口控制选择端: ● H:并口控制; ● L:串口控制。 16 NC -- 空脚 17 RST I 复位脚(低电平有效) 18 VOUT -- 倍压输出脚。(VDD=+3.3V 时有效) 19 LEDA -- 背光电源正端(+3.3V 或+5.0V,出厂时设定+5.0V) 20 LEDK -- 背光电源负端(0V) 说明:LEDA与LEDK 的背光正负极性可根据客户要求进行变更: 1.使用并口驱动方式时,PSB=VDD。 2.使用串口驱动方式时,PSB=VSS,且DB0~DB7悬空不接。 3.串并口选择方式:除接口第15 脚(PSB)外,也可使用P S焊盘点(IC 面) 选择并口/串口。 4.中间与右部焊盘短路,表示串口控制方式。 5.中间与左部焊盘短路,表示并口控制方式

stc12c5a60s2-AD采集-12864串行显示终极程序-带滤波

stc12c5a60s2 AD采集12864串行显示终极程序带滤波 作者:电子工程师(天津) 由于AD采集电压并在12864上显示的程序很常用,然而网上很多程序各种各样,又有很多缺点,所以就利用工作之余的时间对用到的程序进行了整理,调试,优化以方便各位电子爱好者使用。这段程序已经调试通过,改下io即可直接应用。最后有两张效果图。 LCD_PSB=0;(并串选择口) LCD_RST =1;(复位口) 注意:本程序用的是12864串行显示,将PSB引脚接地,RST拉高、片选口RS接高之后除了电源和地线,只用2根线就可以显示了,接线很方便,最大程度的节省了io口。 本程序是以电流采集为例的,采集的是电流传感器输出的电压,然后转换成电流,如果只需要采集电压的话将转化为电流的语句删除即可。AD是stc12c5a60s2 自带的10位AD。使用很方便。有不明白的可以qq联系我,1264136841 #include"stc12c5a60s2.h" #include"intrins.h" float ADvalue = 0; unsigned int volage = 0; unsigned int current = 0; void InitializeDisplay(); void InitializeLcd12864(); void displaystring(unsigned char add,unsigned int num); void WriteCommandLcd12864(unsigned char temp); void InitializeDisplay(); void InitializeAD(); unsigned int ReadADvalue(unsigned char channel); float SmoothingFilter(unsigned int temp); void Delay_us(unsigned int xus); void Delay_ms(unsigned int xms); sbit LCD_SID = P2^5;//即RW口 sbit LCD_CLK = P2^6;//即E口 code unsigned char name1[] = {"escrewdriver"}; code unsigned char name2[] = {"电流采集显示"}; code unsigned char name3[] = {"电流: A "}; code unsigned char name4[] = {"参数:mm "}; "}; void main() { // InitializeAD(); // InitializeTimer0(); // InitializeUart();

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) {

相关主题