12864串行显示中文讲解
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
******************************************************************************/
unsigned char KeyDown(void)
{
GPIO_KEY=0xf0;
if(GPIO_KEY!=0xf0)
{
switch(GPIO_KEY)
#endif
/********************************12864.C*************************************/
#include"12864.h"
#include<reg51.h>
#include"string.h"
//#define LCM_ST7920_FIRST_LINE_ADDRESS0x80
******************************************************************************/
void Delay1ms(unsigned int i) //误差0us
{
unsigned char a;
for (i; i>0; i--)
{
unsigned char i;
for(i=0;i<8;i++)
{
LCD12864_SCLK=0; //
Delay1ms(3);
LCD12864_SID=(bit)(byte&0x80);//发送最高位数据,从高位开始发送
LCD12864_SCLK=1;//上升沿发送数据
byte=byte<<1;//左移一位
void Delay1ms(unsigned int); //声明延时函数
unsigned char KeyDown(void);
void LCD_sendbyte(unsigned char);
void WrCom(unsigned char);
void WrDat(unsigned char);
//#define LCM_ST7920_SECOND_LINE_ADDRESS0x90
//#define LCM_ST7920_THIRD_LINE_ADDRESS0x88
//#define LCM_ST7920_FOURTH_LINE_ADDRESS0x98
/*定义全局变量*/
unsigned char keyvalue=0;
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;
/******声明全局函数*********/
{
for (a=199;a>0;a--)
;
}
}
/*******************************************************************************
*函数名: KeyDown()
*函数功能:按键
*输入:
*输出: keyvalue
*说名: P1口接矩阵按键
#ifndef _12864_h
#define _12864_h
/*****包含头文件**************/
#include<reg51.h>
/********定义I/0口**********/
#define GPIO_KEY P1
sbit LCD12864_SCLK = P2^7; //E
case 0x0d: keyvalue+=4;break;
case 0x0b: keyvalue+=8;break;
case 0x07: keyvalue+=12;break;
}
while(GPIO_KEY!=0x0f)
{
Delay1ms(10);
}
}
return keyvalue;
}
/****************************************************************************
函数名字:SendByte(byte)
函数功能:发送一个字节
*输入: byte
*输出:无
******************************************************************************/
void LCD_sendbyte(unsigned char byte)
{Hale Waihona Puke Baidu
case 0xe0: keyvalue=1;break;
case 0xd0: keyvalue=2;break;
case 0xb0: keyvalue=3;break;
case 0x70: keyvalue=4;break;
}
GPIO_KEY=0x0f;
switch(GPIO_KEY)
{
case 0x0e: keyvalue=keyvalue;break;
}
}
/****************************************************************************
/*******************************************************************************
*函数名: Delay1ms
*函数功能:延时函数,延时1ms
*输入: c
*输出e :无
*说名:该函数是在12MHZ晶振下,12分频单片机的延时。
12864串行显示中文,按键选择显示页面,并且可调数值。
单片机P1口接矩阵按键,其它接口按程序中定义去接
只需要接12864LCD上GND VCC RS RW E PSB RST A K
程序如下
/********************************12864.h头文件*******************************/
void LcdInit(void);
//void Print(unsigned char);
void SetAddress( unsigned char,unsigned char );
void DisplayString(unsigned char x ,unsigned char y,unsigned char *add);
unsigned char KeyDown(void)
{
GPIO_KEY=0xf0;
if(GPIO_KEY!=0xf0)
{
switch(GPIO_KEY)
#endif
/********************************12864.C*************************************/
#include"12864.h"
#include<reg51.h>
#include"string.h"
//#define LCM_ST7920_FIRST_LINE_ADDRESS0x80
******************************************************************************/
void Delay1ms(unsigned int i) //误差0us
{
unsigned char a;
for (i; i>0; i--)
{
unsigned char i;
for(i=0;i<8;i++)
{
LCD12864_SCLK=0; //
Delay1ms(3);
LCD12864_SID=(bit)(byte&0x80);//发送最高位数据,从高位开始发送
LCD12864_SCLK=1;//上升沿发送数据
byte=byte<<1;//左移一位
void Delay1ms(unsigned int); //声明延时函数
unsigned char KeyDown(void);
void LCD_sendbyte(unsigned char);
void WrCom(unsigned char);
void WrDat(unsigned char);
//#define LCM_ST7920_SECOND_LINE_ADDRESS0x90
//#define LCM_ST7920_THIRD_LINE_ADDRESS0x88
//#define LCM_ST7920_FOURTH_LINE_ADDRESS0x98
/*定义全局变量*/
unsigned char keyvalue=0;
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;
/******声明全局函数*********/
{
for (a=199;a>0;a--)
;
}
}
/*******************************************************************************
*函数名: KeyDown()
*函数功能:按键
*输入:
*输出: keyvalue
*说名: P1口接矩阵按键
#ifndef _12864_h
#define _12864_h
/*****包含头文件**************/
#include<reg51.h>
/********定义I/0口**********/
#define GPIO_KEY P1
sbit LCD12864_SCLK = P2^7; //E
case 0x0d: keyvalue+=4;break;
case 0x0b: keyvalue+=8;break;
case 0x07: keyvalue+=12;break;
}
while(GPIO_KEY!=0x0f)
{
Delay1ms(10);
}
}
return keyvalue;
}
/****************************************************************************
函数名字:SendByte(byte)
函数功能:发送一个字节
*输入: byte
*输出:无
******************************************************************************/
void LCD_sendbyte(unsigned char byte)
{Hale Waihona Puke Baidu
case 0xe0: keyvalue=1;break;
case 0xd0: keyvalue=2;break;
case 0xb0: keyvalue=3;break;
case 0x70: keyvalue=4;break;
}
GPIO_KEY=0x0f;
switch(GPIO_KEY)
{
case 0x0e: keyvalue=keyvalue;break;
}
}
/****************************************************************************
/*******************************************************************************
*函数名: Delay1ms
*函数功能:延时函数,延时1ms
*输入: c
*输出e :无
*说名:该函数是在12MHZ晶振下,12分频单片机的延时。
12864串行显示中文,按键选择显示页面,并且可调数值。
单片机P1口接矩阵按键,其它接口按程序中定义去接
只需要接12864LCD上GND VCC RS RW E PSB RST A K
程序如下
/********************************12864.h头文件*******************************/
void LcdInit(void);
//void Print(unsigned char);
void SetAddress( unsigned char,unsigned char );
void DisplayString(unsigned char x ,unsigned char y,unsigned char *add);