⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 12864.c

📁 Proteus中12864LCD驱动实例原理图和源程序。
💻 C
字号:
#include<reg51.h>
#define uchar unsigned char
#define DISPLAY_ON    0x3f
#define DISPALY_OFF   0x3e 
#define Col_add       0x40
#define Pag_add       0xb8
#define Start_line    0xc0
#define LCD_BUS   	P0

sbit DI = P2^2;
sbit E  = P2^0;
sbit RW = P2^1;
sbit Mcs= P2^4;
sbit Scs= P2^3;
sbit RST = P2^5;
sbit busy = P0^7;

uchar code da[] = {
0x20,0x20,0x20,0x20,0x20,0x20,0xA0,0x7F,
0xA0,0x20,0x20,0x20,0x20,0x30,0x20,0x00,
0x00,0x40,0x40,0x20,0x10,0x0C,0x03,0x00,
0x01,0x06,0x08,0x10,0x20,0x60,0x20,0x00};
//0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0xFF,0xFE,0x01,0x00,0x02,0x80,
//0x02,0x80,0x02,0x40,0x04,0x40,0x04,0x20,0x08,0x10,0x10,0x18,0x20,0x0E,0x40,0x04,};
uchar code jia[]= {
0x10,0x0C,0x24,0xA4,0xA4,0x64,0xA5,0x26,
0x24,0x24,0x24,0xA4,0x24,0x14,0x0C,0x00,
0x00,0x49,0x49,0x24,0x24,0x52,0x89,0x7F,
0x04,0x0A,0x11,0x11,0x20,0x60,0x20,0x00};
//0x02,0x00,0x01,0x00,0x3F,0xFE,0x40,0x04,0x5F,0xE8,0x01,0x00,0x02,0x00,0x0F,0x20,
//                   0x72,0xB0,0x04,0xC0,0x19,0xC0,0x66,0xB0,0x18,0x8E,0x60,0x84,0x05,0x00,0x02,0x00,};
uchar code hao[]= {
0x10,0x10,0xF0,0x1F,0x10,0xF0,0x80,0x82,
0x82,0x82,0xE2,0x92,0x8A,0xC6,0x80,0x00,
0x40,0x22,0x15,0x08,0x14,0x63,0x00,0x00,
0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00};
//0x10,0x00,0x11,0xFC,0x10,0x08,0x10,0x10,0xFC,0x20,0x24,0x20,0x24,0x20,0x27,0xFE,
//                   0x44,0x20,0x64,0x20,0x18,0x20,0x08,0x20,0x14,0x20,0x26,0x20,0x44,0xA0,0x80,0x40,};

/*****延时间子程序*******/
void delay(unsigned int t){
	unsigned int i,j;
	for(i=0;i<t;i++)
		for(j=0;j<10;j++);
	return;}

/*******读忙子程序*********/
LCD_Busy(void){
/* 	DI = 0;
 	RW = 1;
 	P0 = 0xff;
 	while(1){
 		E = 1;
 		if(LCD_BUS < 0x80)break;
 		E = 0;}
 	E = 0;
*/	return;}
/********写指令子程序*******/
void Write_Com(uchar  Cmdcode){
	LCD_Busy();
	RW = 0;  DI = 0;
	LCD_BUS = Cmdcode;
	E = 1;	E = 0;
	return;}
/*******写数据子程序*********/
void Write_Data(uchar  Datcode)
{
  LCD_Busy();
  RW = 0;  DI = 1;
  LCD_BUS = Datcode;
  E = 1;	E = 0;
  return;}

/**********初始化LCD子程序******/
Lcd_init(void)
{
  RST = 0;
  delay(100);
  RST = 1;
  delay(100);
  Mcs=1;Scs=1;
  
  delay(100);LCD_Busy();
  Write_Com(DISPALY_OFF);
  Write_Com(DISPLAY_ON);
  Write_Com(Pag_add+0);
  Write_Com(Col_add+0);
  Write_Com(Start_line);
  return;
  }
/**********清空内存*********/
Clr_scr(void)
{
  uchar i,j;
  Mcs = 1;
  Scs = 1;
  Write_Com(Pag_add+0);
  Write_Com(Col_add+0);
  for(i = 0;i < 8;i++)
  {
  Write_Com(Pag_add+i);
  for(j = 0;j < 64;j++)
  Write_Data(0x00);
  }
  return;
}
/**********显示子程序***************/
DISPLAYXY(uchar pag,uchar col,uchar code *ndata)
{
 uchar i,j;
 for(i = 0;i < 2;i++)
 {
  Write_Com(Pag_add + pag + i);
  Write_Com(Col_add + col);
  for(j=0;j<16;j++)
  Write_Data(ndata[i*16+j]);
 }
 delay(2000);
 }
/********显示"大家好"子程序********/
DISPLAY()
{
 Mcs=0;Scs=1;
 DISPLAYXY(0,0,da);
 DISPLAYXY(0,16,jia);
 DISPLAYXY(0,32,hao);
 delay(10000);
 }

main(){
 //  Clr_scr();
	Lcd_init();
	DISPLAY();
	while(1){
#pragma asm
LCALL DISPLAY
#pragma endasm
	Lcd_init();
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -