很好用的12864驱动程序

合集下载

液晶屏12864的FPGA驱动程序

液晶屏12864的FPGA驱动程序

//液晶屏12864驱动芯片型号为ST7920

//芯片型号Altera CYCLONE II EP2C8Q208C8

//板载时钟50MHz

module LCD_test(clk,rst,lcd_e,lcd_rs,lcd_rw,data);

input clk; //模块输入时钟50MHz

input rst; //复位信号输入

output lcd_e; //使能端

output lcd_rs; //数据指令选择

output lcd_rw; //读写选择

output [7:0] data;

reg lcd_e; //这样定义是必须的

reg lcd_rw;

reg lcd_rs;

reg [7:0] data;

reg [21:0] clkcnt; //分频用计数寄存器

reg clkdiv;

reg double_div;

reg flag; //初始化标志,复位后flag=0,表示未初始化

reg [7:0] state;

wire bz_clkcnt;

parameter idle=8'b0000_0000; //状态0:用于初始化判断

parameter setfunction=8'b0010_0000; //用于选择指令集(基本指令集或扩展指令集)parameter switchmode=8'b0000_1000; //显示状态开关

parameter setmode=8'b0000_0100; //

parameter clear=8'b0000_0001; //清屏,耗时最久的指令

parameter setddram=8'b1000_0000; //设定DDRAM地址,即输入字符的位置parameter write1=8'b1111_0000; //输入字符的编码

LCD12864驱动程序(STM32F103RCT6)

LCD12864驱动程序(STM32F103RCT6)
在 STM32F103RCT6 上调试通过
#define CS_LOW GPIO_WriteBit(GPIOB,GPIO_Pin_1, RESET) #define CS_HI GPIO_WriteBit(GPIOB,GPIO_Pin_1, SET) #define RESET_LOW GPIO_WriteBit(GPIOB,GPIO_Pin_2, RESET) #define RESET_HI GPIO_WriteBit(GPIOB,GPIO_Pin_2, SET) #define RS_COM GPIO_WriteBit(GPIOB,GPIO_Pin_3, RESET) #define RS_DATA GPIO_WriteBit(GPIOB,GPIO_Pin_3, SET) #define SCLK_LOW GPIO_WriteBit(GPIOB,GPIO_Pin_6, RESET) #define SCLK_HI GPIO_WriteBit(GPIOB,GPIO_Pin_6, SET) #define SDA_LOW GPIO_WriteBit(GPIOB,GPIO_Pin_5, RESET) #define SDA_HI GPIO_WriteBit(GPIOB,GPIO_Pin_5, SET)
修改说明:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ************************************************************************/ void JLX12864_DisplayGraphic(u8 page,u8 column,u8 *dp) {

12864串口驱动程序(郭天祥)

12864串口驱动程序(郭天祥)

/****************************************************************************** *

* 标题: PIC-ST2学习板演示程序--12864LCD-1

* 文件名: LCD12864-1

* 建立日期: 2010.01.28

* 修改日期: 2010.05.15

* 版本: V1.0

* 作者: simomli

******************************************************************************* *

* 功能描述: LCD12864C液晶串口方式显示字符,只用到三根数据线

******************************************************************************* *

*【版权】Copyright(C) 2009-2019 All Rights Reserved

*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!

******************************************************************************* /

//#include <pic1687x.h>

#include <htc.h>

#include <pic.h>

#define uint8 unsigned char

#define uint16 unsigned int

12864汉字液晶显示驱动程序

12864汉字液晶显示驱动程序

12864汉字液晶显示驱动程序

模块主要硬件构成说明

接口说明

*注释1:如在实际应用中仅使用串口通讯模式,可将PSB接固定低电平,也可以将模块上

的J8和“GND”用焊锡短接。

*注释2:模块内部接有上电复位电路,因此在不需要经常复位的场合可将该端悬空。

*注释3:如背光和模块共用一个电源,可以将模块上的JA、JK用焊锡短接。

2.2并行接口

管脚号管脚名称电平管脚功能描述

1 VSS 0V 电源地

2 VCC 3.0+5V 电源正

3 V0 - 对比度(亮度)调整

RS=“H”,表示DB7——DB0为显示数据

4

RS(CS)H/L

RS=“L”,表示DB7——DB0为显示指令数据

R/W=“H”,E=“H”,数据被读到DB7——DB0 5

R/W(SID) H/L

R/W=“L”,E=“H→L”, DB7——DB0的数据被写到IR或DR

6 E(SCLK) H/L 使能信号

7 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 PSB H/L H:8位或4位并口方式,L:串口方式(见注释1)

16 NC - 空脚

17 /RESET H/L 复位端,低电平有效(见注释2)

18 VOUT - LCD驱动电压输出端

19 A VDD 背光源正端(+5V)(见注释3)

20 K VSS 背光源负端(见注释3)

*注释1:如在实际应用中仅使用并口通讯模式,可将PSB接固定高电平,也可以将模块上的J8和“VCC”用焊锡短接。

51单片机驱动显示屏12864

51单片机驱动显示屏12864

#includesbit DI=P2^0; #define uchar unsigned char#define uint unsigned int#define display_on 0x3f#define hang 0xc0#define ye 0xb8#define lie 0x40sbit RW=P2^1;sbit E=P2^2;sbit cs1=P2^3;sbit cs2=P2^4;void init();void delay(uchar t);void write_command(uchar command);void write_data(uchar shuju);uchar code hz[]={/*-- 文字: 邓 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x12,0x22,0x42,0x82,0x62,0x1E,0x00,0x00,0xFE,0x02,0x22,0xDA,0x06,0x00,0x00,0x20,0x10,0x08,0x06,0x01,0x06,0x18,0x00,0x00,0xFF,0x08,0x10,0x08,0x07,0x00,0x00,/*-- 文字: 林 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x10,0x10,0xD0,0xFF,0x90,0x10,0x00,0x10,0x10,0xD0,0xFF,0xD0,0x10,0x10,0x10,0x00,0x04,0x03,0x00,0xFF,0x00,0x11,0x08,0x04,0x03,0x00,0xFF,0x00,0x03,0x04,0x08,0x00,/*-- 文字: 辉 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x44,0x58,0xC0,0x7F,0xD0,0x48,0x26,0x22,0xE2,0x3A,0xA2,0x22,0x22,0x2A,0x06,0x00,0x80,0x60,0x1F,0x00,0x7F,0x20,0x10,0x13,0x12,0x12,0xFF,0x12,0x12,0x12,0x10,0x00,/*-- 文字: 信 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x80,0x60,0xF8,0x07,0x00,0x04,0x24,0x24,0x25,0x26,0x24,0x24,0x24,0x04,0x00,0x01,0x00,0x00,0xFF,0x00,0x00,0x00,0xF9,0x49,0x49,0x49,0x49,0x49,0xF9,0x00,0x00,/*-- 文字: 盈 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0x82,0x62,0x1E,0x0A,0xAA,0x4A,0xBA,0x02,0x1A,0x96,0x10,0xF0,0x00,0x00,0x40,0x41,0x7C,0x44,0x44,0x7D,0x44,0x44,0x44,0x7D,0x44,0x44,0x7D,0x40,0x40,0x00,/*-- 文字: 达 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x40,0x40,0x42,0xCC,0x00,0x10,0x10,0x10,0x90,0x7F,0x90,0x10,0x10,0x10,0x10,0x00,0x00,0x40,0x20,0x1F,0x20,0x48,0x44,0x42,0x41,0x40,0x40,0x41,0x42,0x4C,0x40,0x00,/*-- 文字: 全 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x80,0x80,0x40,0x20,0x50,0x48,0x44,0xC3,0x44,0x48,0x50,0x20,0x40,0x80,0x80,0x00,0x00,0x40,0x40,0x44,0x44,0x44,0x44,0x7F,0x44,0x44,0x44,0x44,0x40,0x40,0x00,0x00,/*-- 文字: 日 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0x00,0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xFF,0x00,0x00,0x00,0x00,/*-- 文字: 制 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x40,0x50,0x4E,0x48,0x48,0xFF,0x48,0x48,0x48,0x40,0xF8,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x3E,0x02,0x02,0xFF,0x12,0x22,0x1E,0x00,0x0F,0x40,0x80,0x7F,0x00,0x00,/*-- 文字: 单 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0xF8,0x49,0x4A,0x4C,0x48,0xF8,0x48,0x4C,0x4A,0x49,0xF8,0x00,0x00,0x00,0x10,0x10,0x13,0x12,0x12,0x12,0x12,0xFF,0x12,0x12,0x12,0x12,0x13,0x10,0x10,0x00,/*-- 文字: 片 --*

12864驱动

12864驱动

LCD12864底层驱动

#include

#include

#define uint unsigned int

#define uchar unsigned char

#define out0 P0 //定义out0为P0口

sbit LCD_RST=P1^0;

sbit LCD_CS2=P1^1;

sbit LCD_CS1=P1^2;

sbit LCD_E=P1^3;

sbit LCD_WR=P1^4;

sbit LCD_RS=P1^5;

uchar code hanzi_ZM[][32]={

/*-- 0 文字: 欢--*/

0x14,0x24,0x44,0x84,0x64,0x1C,0x20,0x18,0x0F,0xE8,0x08, 0x08,0x28,0x18,0x08,0x00,

0x20,0x10,0x4C,0x43,0x43,0x2C,0x20,0x10,0x0C,0x03,0x06, 0x18,0x30,0x60,0x20,0x00,

};

uchar code shuzi_ZM[][16]={

/*-- 文字: 0 --*/

0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10, 0x20,0x20,0x10,0x0F,0x00,

};

void delayms(uint x) //延时毫秒函数

{

uchar i;

while(x--)

for(i=0;i<123;i++);

}

void busy() //读忙信号

{

uchar mang; //忙变量

LCD_E=0; //使能端无效

12864液晶屏串口驱动程序

12864液晶屏串口驱动程序

12864液晶屏串口驱动程序代码

12864液晶屏驱动采用4_Wire-SPI串口驱动方式,可有效的减少IO口的占用,方便使用调试,本程序的代码驱动IC为ST7565R,是基于STC89C53RC的12864串行模式的程序,硬件电路连接只需要5根线:RS、 SDA、 SCLK、RES、CS 。

程序已经调试通过,很好用。代码如下:

//----------------------------------------------------------------------

/*hotdisplay CO,.LTD.*/

// Module : HTG12864

// Lanuage : C51 Code

// Create :

// Version : 1.0

// Date : OCT-21-2016

// LCM Drive IC : ST7565R

// INTERFACE : 4_Wire-SPI

// MCU : STC89C53RC

// VDD : 3.3V

//********************************************************* ******************

#include

#define uchar unsigned char

#define uint unsigned int

uchar bdata transdata;

sbit R_S= P3^5;

sbit RES= P3^4;

sbit SCK= P1^6;

sbit SDA= P1^7;

sbit CS1= P3^7;

LCM12864 C语言驱动程序

LCM12864 C语言驱动程序

]LCM12864 C语言驱动程序。[/b]下面是一个我写的12864点阵的显示驱动程序(参考PIC自带的字符型液晶驱动的样板例子),在这之前,我一直在网上苦苦搜索,想找到C语言的12864驱动程序,可是不是8051的汇编,就是什么乱七八糟的程序,哎,不得不自已写,找资料,买LCD,现在可以用了,我想大家很多人正在搜索吧! /************************************************************************* 程序说明: LCD驱动采用4位元(这个4位元方式,在网上搜索来看,还没有人采用,可以节省4位I/O口),并口方式,晶体4M,注意此LCD有点不同尽量很普通,没有CS1,CS2页选择脚,带串口方式,型号是TS-12864-3。IC 16F877A。 在屏幕上显示“Atilla tester" "~_~" RD7----------LCD D7 RD6-----------LCD D6 RD5-----------LCD D5 RD4-----------LCD D4 RD3-----------LCD E RD2-------- LCD RS RD1---------R/W /***********************程序如下**********************************/ #include "pic.h" #define lcd_cursor(x) lcd_write(((x)&0x7F)|0x80)//Set the cursor position #define LCD_RS RD2#define LCD_EN RD3#define LCD_RW RD1 #define LCD_STROBE ((LCD_EN = 1),(LCD_EN=0)) void delay_10us(unsigned char x) { while(x--);} void delay_ms(unsigned char cnt){unsigned char i;do {i = 4;do {delay_10us(39);} while(--i);} while(--cnt); } /* write a byte to the LCD in 4 bit mode */ void lcd_write(unsigned char c){PORTD = (PORTD & 0x0F) | (c & 0xF0); //先送高位D7 D6 D5 D4LCD_STROBE;PORTD = (PORTD & 0x0F) | (c /* Clear and home the LCD */ void lcd_clear(void){LCD_RS = 0;lcd_write(0x1);delay_ms(2);} /* write a string of chars to the LCD */ void lcd_puts(const char * s){LCD_RS = 1; // write characterswhile(*s)lcd_write(*s++);} /* write one character to the LCD */ void lcd_putch(char c){LCD_RS = 1; // write charactersPORTD = (PORTD & 0x0F) | (c & 0xF0); //先送高位LCD_STROBE;PORTD = (PORTD & 0x0F) | (c /*Go to the specified position*/void lcd_goto(unsigned char pos){LCD_RS = 0;lcd_write(0x80+pos);}/* initialise the LCD - put into 4 bit mode *///严格按照LCD的复位要求。 void lcd_init(void){LCD_RS = 0; // write control bytesdelay_ms(40); // power on delay,wait time>40msPORTD = 0x20; // Function set,set 4 bit modeLCD_STROBE;delay_10us(10); //wait time >100uslcd_write(0x20); // Function set:4 bit mode.delay_10us(10); //wait time >100uslcd_write(0x0C); // display ON/OFF control.delay_10us(10); //wait time >100uslcd_write(0x01); // display cleardelay_ms(10); //wait time >10mslcd_write(0x06); // entry mode set} void main(void){TRISD=0X00;PORTD=0X00;lcd_init();lcd_goto(0x00);lcd_puts("Atilla tester");lcd_go

STM32的LCD19264-12864经典程序

STM32的LCD19264-12864经典程序

现在STM32越来越流行,在学校搞的很火,本人最近也在学习,做了一个LCD19264的程序,先与大家分享,多谢关注!

本程序是有LCD12864该进的,液晶驱动为ST7920。可以稍微改动即可用于12864

一、以下是LCD19264头文件

////////////////////////////////////////////////////////////////////////////////

/******************************************************************** ***********

* 函数功能:STM32F103VET6 19264-1液晶显示,串---并口19264

* 编写时间:2012.07.22

* 作者:ZhouGanJin

* 版本:V1.1

* 液晶19264-1简介:并口不多说;串口引脚4根RW(SID),E1(CLK1),E2(CLK2),PSB=0, RS(CS)=1,

* 通过预编译选择串并口方式

********************************************************************* **********/

#ifndef _LCD19264_H

#define _LCD19264_H

/* 端口定义---------------------------

本程序只用了GPIOA

-----------------------------------*/

/* 函数申明---------------------

12864汉字液晶显示驱动程序(C)

12864汉字液晶显示驱动程序(C)

12864的驱动程序(C51)2007-01-24 22:43//12864汉字液晶显示驱动程序#include #include #define uchar unsigned char#define uint unsigned int sbit p_csa=P1^4;sbit p_csb=P1^5;sbit p_di=P1^0;sbit p_rw=P1^1;sbit p_e=P1^2;sbit busy=P0^7;char data mov=0;//滚动显示的变量char data TIMER=0;//软件延时的全局变量uchar code image[][16]={{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x60,0x10,0x10,0x08,0x04},{0x04,0x02,0xF2,0x1E,0x02,0x1B,0xE7,0x03,0x07,0x1B,0xE2,0x02,0x02,0x02,0x04,0x04},{0x08,0x10,0x10,0x60,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},//64*8左屏幕的一页{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},//128*8一页(包括左右屏){0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x3C,0x03,0x00,0x00,0x00,0x84,0x46,0xC6},{0x4E,0x8C,0x1D,0x30,0x00,0x00,0x01,0x00,0x00,0x00,0x31,0x1C,0x8C,0x4E,0xC6,0x46},{0x84,0x00,0x00,0x00,0x00,0x03,0x3C,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},{0x00,0x00,0x80,0x7C,0x1E,0x8E,0x0F,0x0F,0x0F,0x8E,0x1E,0x7C,0x80,0x00,0x00,0x00},//左第二页{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xF0,0x28,0x44,0x44,0x44,0x44,0x44,0x4C},{0x7C,0xCC,0x44,0x44,0x04,0x40,0x44,0x48,0x90,0x60,0x60,0x40,0x40,0x40,0x40,0x00},{0x40,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},//{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x3C,0xC0,0x00,0x00,0x00,0x00,0x01,0x01},{0x01,0x80,0x00,0x00,0x00,0x04,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x81,0x01,0x01},{0x00,0x00,0x00,0x00,0x00,0xC0,0x3C,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},{0x00,0x00,0x07,0x78,0x80,0x01,0x20,0x28,0x20,0x01,0x80,0x78,0x07,0x00,0x00,0x00},//左第三页{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x04,0x3C,0x44,0x54,0x44,0x3C,0x04},{0x04,0x06,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x3C,0x44,0x54,0x44,0x3C,0x04,0x04},{0x04,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},//{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x06,0x08,0x08,0x10,0x20},{0x20,0x40,0x41,0x42,0x42,0x84,0x84,0x84,0x84,0x84,0x42,0x42,0x41,0x40,0x20,0x20},{0x10,0x08,0x08,0x06,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},{0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00},//左第四页{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0

12864并口驱动程序

12864并口驱动程序

//***************************************************************************//连线表: CPU=89C52 *//RS=P3.0 RW=P3.1 E=P3.2 *//FOSC=12MHz D0-D7=P1.0-P1.7 *//***************************************************************************#include sbit RS = P3^0;sbit RW = P3^1;sbit E = P3^2;sbit bf = P1^7;#define data_bus P1#define com 0#define dat 1void wr_lcd(unsigned char dat_com,unsigned char content);void ck_busy(void);void delay_us(unsigned int us_value);void delay_ms(unsigned int ms_value);void init_lcd (void);void cn_disp(unsigned char code *cn);void txt_disp(unsigned char code *cn,unsigned char adr);void gra_disp(unsigned char code *img);void lat_disp(unsigned char data1,unsigned char data2);void con_disp(unsigned char data1,unsigned char x0,unsigned char y0,unsigned char xl,unsigned char yl);void lcd_txt_clr(void);void lcd_gra_clr(void);unsigned char code tab1[]={"128X64全点阵显示" //第一行汉字内容"可显示8X4 个中文" //第二行汉字内容"内带标准中文字库" //第三行汉字内容"含8192个中文字型" //第四行汉字内容}; unsigned char code str1[]="汉升实业有限公司";unsigned char code str2[]="欢迎选购我们产品";unsigned char code str3[]=" ";unsigned char code gra1[];/*******************************************************************************************函数名称: init_lcd*功能描述: 初始化******************************************************************************************/void init_lcd (void){wr_lcd(com,0x30); /*30---功能设定,8-bit模式*/ wr_lcd(com,0x30); /*30---功能设定,基本指令*/ wr_lcd(com,0x01); /*清屏,地址指针指向00H*/wr_lcd(com,0x06); /*光标的移动方向*/wr_lcd(com,0x0c); /*开显示,关游标*/}/*******************************************************************************************函数名称: cn_disp*功能描述: 显示全屏汉字或字符******************************************************************************************/void cn_disp(unsigned char code *cn){unsigned char i,j;wr_lcd(com,0x30);wr_lcd(com,0x80);for(j=0;j<4;j++){for(i=0;i<16;i++)wr_lcd(dat,cn[j*16+i]);}delay_ms(800);}/*******************************************************************************************函数名称: txt_disp*功能描述: 显示一行汉字或字符******************************************************************************************/void txt_disp(unsigned char code *cn,unsigned char adr){unsigned char i,j;wr_lcd(com,0x30);wr_lcd(com,adr); //第一到四行地址分别是0x80,0x90,0x88,0x98j=0;for(i=0;i<16;i++)wr_lcd(dat,cn[j*1

带字符的12864驱动及12887显示时间

带字符的12864驱动及12887显示时间

一、硬件电路图

二、程序部分

#include "reg52.h"

#include "intrins.h"

sbit io_LCD12864_RS = P1^2 ;

sbit io_LCD12864_RW = P1^3 ;

sbit io_LCD12864_EN = P1^4;

sbit G=P2^0; //锁存器控制端

sbit dscs=P2^3; // 时钟芯片片选

sbit dsas=P2^4; //时钟芯片的地址信号

sbit dsrw=P2^5; //时钟芯片的读写信号控制

sbit dsds=P2^6; //时钟芯片的数据信号*/

sbit dsirq=P2^7; //时钟芯片的中断允许请求

#define uchar unsigned char

#define uint unsigned int

#define io_LCD12864_DATAPORT P0 //P0为数据口

#define SET_DATA io_LCD12864_RS = 1 ;

#define SET_INC io_LCD12864_RS = 0 ;

#define SET_READ io_LCD12864_RW = 1 ;

#define SET_WRITE io_LCD12864_RW = 0 ;

#define SET_EN io_LCD12864_EN = 1 ;

#define CLR_EN io_LCD12864_EN = 0 ;

uchar miao,shi,fen,yue,ri,nian,xq,flag,s1num,flag1,x1,x2,x3; //定义时,分,秒,年。月,日等变量

12864的驱动程序

12864的驱动程序

12864的驱动程序(51汇编)

推荐

CS2 BIT P1.5

CS1 BIT P1.4

E BIT P1.2

R_W BIT P1.1

D_I BIT P1.0

RST BIT P1.3

COM EQU 20H ; 指令寄存器

DAT EQU 21H ; 数据寄存器

DENG BIT P1.6

WAIT EQU 22H;中断循环次数(软件延时)

ORG 0000H

AJMP MAIN

ORG 000BH

AJMP TIME_ET0

ORG 0050H

MAIN:

NOP

MOV WAIT,#00H;清0

MOV TMOD,#01H ;方式1,16位定时器

MOV TH0,#00H

MOV TL0,#00H

MOV R5,#0C0H ;设置行命令,选中的行显示在第一行

SETB ET0

SETB EA ;开定时,但是还没有开T0定时.程序后面才开

CLR RST

SETB RST ;给一个低电平脉冲信号来复位LCD

; LCALL DELLY

; CPL DENG

; MOV COM,#3EH ;指令将显示设置开关关闭

; LCALL PR1

; LCALL DELLY ;延时一段时间

MOV COM,#3FH ;指令将显示设置开关打开

LCALL PR1

LCALL DELLY

CLR CS2 ;清屏(清右半边屏幕)

SETB CS1

LCALL QINGP;清屏子程序

LCALL DELLY

CLR CS1

SETB CS2

LCALL QINGP;清屏子程序

LCALL DELLY;调延时子程序等待它反应,我们也可以读它的状态来判断.

;SJMP $

;---------左屏幕----------------

12864LCD驱动程序

12864LCD驱动程序

//----------------------------------------------------------------- // 名称: LGM12864LCD显示驱动程序(不带字库) //----------------------------------------------------------------- #include

#include "LGM12864.h"

//是否反相显示(白底黑字/黑底白字)

INT8U Reverse_Display = 0;

//----------------------------------------------------------------- // 等待液晶就绪

//----------------------------------------------------------------- void Wait_LCD_Ready()

{

}

//----------------------------------------------------------------- // 向LCD发送命令

//----------------------------------------------------------------- void LCD_Write_Command(INT8U cmd)

{

}

//----------------------------------------------------------------- // 向LCD发送数据

12864液晶屏驱动程序

12864液晶屏驱动程序

/*控制器:st7565串行驱动方式,唯一要注意的一点就是WR和RD这两个引脚虽然用不到,但是要接地,否则无法正常显示。当时调了很久。不知道其他厂家的是否也这样。 */#include #include #include "LCD_Driver.h"//字库#include "hzk.h"//当前字符显示的位置//unsigned char Lcd_Charcter_CurrentX,Lcd_Charcter_CurrentY;//当前像素显示位置unsigned char Lcd_CurrentX,Lcd_CurrentY;//图像反色显示 0 否 1是bit LCD_DisplayReserve_Driver; //定义LCD显示的全局变量#define CS_Port P3_0#define A0_Port P3_1#define SI_Port P3_2#define SCL_Port P3_3#define RST_Port P3_4enum PINDefine{CS,A0,SI,SCL,RST};//设置某一位void SETBit(unsigned char PIN){switch (PIN){case CS :CS_Port=1;break;case A0 :A0_Port=1;break;case SI :SI_Port=1;break;case SCL :SCL_Port=1;break;case RST :RST_Port=1;break;}}//清某一位void CLRBit(unsigned char PIN){switch (PIN){case CS :CS_Port=0;break;case A0 :A0_Port=0;break;case SI :SI_Port=0;break;case SCL :SCL_Port=0;break;case RST :RST_Port=0;break;}}/************************************* 函数名称: Delay** 功能描述: 延时时间=(n*9+17)*12/F** 输 入: n** 输 出 : 无** 全局变量:无** 调用模块: 无******************************************/void LCD_DelayMS(unsigned int n){while(n--);return;}//--------------------------------------------------------------------------//串口移位输出//--------------------------------------------------------------------------void LCDShiftWrite(char datain){ unsigned char i;unsigned char Series,Temp;Series = datain;for(i=8;i>0;i--){CLRBit(SCL); //SCL=0Temp=Series & 0x80;if(Temp){SETBit(SI);//SI=1}else {CLRBit(SI);//SI=0}SETBit(SCL); //SCL=1 Series = Series << 1; }}/************************************* 函数名称: Write_Data** 功能描述: 传送数据** 输 入: dat** 输 出 : 无** 全局变量:无** 调用模块: Busy,******************************************/void Write_Data(unsigned char dat) {CLRBit(CS); //CS=0SETBit(A0); //A0=1,数据LCDShiftWrite(dat); SETBit(CS); //CS=1;return;}/************************************* 函数名称: Write_Instruction** 功能描述: 传送命令** 输 入: dat** 输 出 : 无** 全局变量:无** 调用模块: Busy,******************************************/void Write_Instruction(unsigned char cmd){CLRBit(CS); //CS=0CLRBit(A0); //A0=0,命令LCDShiftWrite(cmd);SETBit(CS); //CS=1;return;}//==============================================================================高一级函数//设置像素显示坐标(x:0-127,y:0-7

12864液晶屏(带字库)51单片机3线串口驱动程序

12864液晶屏(带字库)51单片机3线串口驱动程序

#include

typedef unsigned char uint8; typedef unsigned int uint16; typedef unsigned long uitn32;

sbit CS = P1^0;//片选信号引脚sbit SDA = P1^1;//数据线

sbit SCK = P1^2;//串行时钟线

//sbit RST = P1^3;//复位引脚

//sbit PSB = P1^4;//串并控制引脚

code uint8 strint1[] = "I Love You !";

/*void delay5ms(void) //误差0us {

unsigned char a,b;

for(b=185;b>0;b--)

for(a=12;a>0;a--);

}*/

//发送一个字节

void Send_Byte(uint8 dat)

{

uint8 i;

SCK = 0;

for(i=0;i<8;i++)

{

SDA = dat&0x80;

SCK = 1;

dat <<= 1;

SCK = 0;

}

}

//读取一个字节数据

uint8 Read_Byte(void)

{

uint8 i;

uint16 byte = 0;

SCK = 0;

for(i=0;i<16;i++)

{

byte <<= 1;

SCK = 1;

if(SDA)

byte |= 0x0001;

SCK = 0;

}

byte = ((byte>>4)|(byte>>8))&0x00ff;

return ((uint8)(byte));

}

//读忙标志

void Read_Busy(void)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

///////////////////////////////////////////////////////////

#include

#include

#define uchar unsigned char

#define uint unsigned int

//////////单片机与液晶显示的引脚连接///////// sbit P32=P3^2; //RST

sbit P33=P3^3; //CS2

sbit P34=P3^4; //CS1

sbit P35=P3^5; //E

sbit P36=P3^6; //rs&DI

sbit P37=P3^7; // R/W

////////延时/////////

void delay(uint v)

{

while(v!=0)v--;

}

////////复位///////////

void reset()

{

P32=0;

delay(10);

P32=1;

delay(10);

}

////////write code写指令///////

void wcode(uchar c,uchar cs1,uchar cs2) {

P34=cs1;

P33=cs2;

P37=0;

P36=0;

P1=c;

P35=0;

delay(10);

P35=1;

delay(10);

P35=0;

}

/////////write data写数据///////////////

void wdata(uchar c,uchar cs1,uchar cs2)

{

P34=cs1;

P33=cs2;

P37=1;

P36=0;

P1=c;

P35=0;

delay(10);

P35=1;

delay(10);

P35=0;

}

////////////set start设置起始行/////////////

void set_startline(uchar i)//起始行。11A5A4A3A2A1A0 共有64行

// 液晶显示器的最底层为第一行

{

i=0xc0+64-i;//此算法为把最顶层做为第一层

wcode(i,1,1);

}

////////////set 页值设置,起始列值函数/////////////

void set_adr(uchar x,uchar y)

{

x=x+0xb8;//页地址设置。10111A2A1A0 DDRAM的8行为一页,A0~A2为页码,LCD为64行8页

y=y+0x40;//列地址设置。01A5A4A3A2A1A0 两半屏分别有64列,A0~A5送入列地址计数器,

//作为列(Y)地址指针。每读写一次其自动加一,指向下一列DDRAM单元wcode(x,1,1);

wcode(y,1,1);

}

///////////on/off开/关显示函数//////////////

void dis_on_off(uchar o)

{

o=0x3e+o;//0011111D D=1开显示器把RAM数据呈现在显示器上,D=0关显示,但数据仍储存在RAM内。

wcode(o,1,1);

}

///////////clear清屏///////////////

void clear()

{

uchar i,loop;

for(i=0;i<8;i++)///循环页写0/////////

{

set_adr(i,0);

for(loop=0;loop<64;loop++)wdata(0x00,1,1);

}

}

/////////////////////////////////////////////////////////////////////////

// 汉字字模表//

// 汉字库: 宋体16.dot 纵向取模下高位,数据排列:从左到右从上到下//

/////////////////////////////////////////////////////////////////////////

uchar code xian[32]= // "现"

{

0x04,0x84,0x84,0xFC,0x86,0x84,0x00,0xFE,

0x02,0x82,0x7A,0x02,0xFF,0x02,0x00,0x00,

0x10,0x30,0x10,0x1F,0x88,0x88,0x40,0x23,

0x18,0x07,0x78,0x80,0x83,0x80,0xE0,0x00,

};

uchar code zai[32]= //"在"

{

0x08,0x08,0x08,0x08,0xC8,0x38,0x0F,0x08,

0x08,0xE8,0x08,0x88,0x08,0x0C,0x08,0x00,

0x08,0x04,0x02,0xFF,0x00,0x40,0x41,0x41,

0x41,0x7F,0x41,0x41,0x41,0x60,0x40,0x00,

};

uchar code wen[32]= //"温"

{

0x10,0x22,0x64,0x0C,0x80,0x00,0xFE,0x92,

0x92,0x92,0x92,0x92,0xFF,0x02,0x00,0x00,

相关文档
最新文档