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

📄 sock-system-lcd.c

📁 基于单片机的12864lcd显示驱动程序. 更改廷时便可移植到高速mpu上.
💻 C
字号:
#include <C8051f020.h>         
#define uint  unsigned int  
#define uchar unsigned char
#define PORT P2
#define Left  1
#define Right 2

code uchar tg[16]={0x00,0xE0,0x10,0x08,0x08,0x48,0x48,0xD0,0x00,0x00,0x01,0x02,0x02,0x02,0x03,0x03}; 
code uchar ts[16]={0x00,0x30,0x48,0x48,0x48,0x48,0x90,0x00,0x00,0x01,0x02,0x02,0x02,0x02,0x01,0x00};
code uchar tm[16]={0x00,0xF8,0x10,0x60,0x80,0x00,0x80,0x60,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00}; 
code uchar to[16]={0x00,0xF0,0x18,0x08,0x08,0x08,0x18,0xF0,0x00,0x01,0x03,0x02,0x02,0x02,0x03,0x01}; 

code uchar tt[16]={0x08,0x08,0x08,0xF8,0x08,0x08,0x08,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00}; 
code uchar tr[16]={0x00,0xF8,0x48,0x48,0x48,0x48,0x48,0xB0,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x03}; 
code uchar  t[16]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; 

///////////////////////
//LCD  PORT DEFINE
sbit  RS=P3^7;//RS=P3^7;
sbit  RW=P3^6;//RW=P3^6;
sbit  EN=P3^5;//EN=P3^5;

sbit  CS1=P1^7;//CS1=P1^7;
sbit  CS2=P1^6;//CS2=P1^6;
sbit  RST=P1^5;//REST=P1^5;

////////////////////////////////////////////////////
main()
{
for(;;)
 {
 uchar i,d,page,y;
 XBR2=0x40;
 for(i=0;i<200;i++);RS=0;RW=0;CS1=0;CS2=1;P2=0xc0;EN=1;EN=0;   RW=1;//first address

 for(i=0;i<200;i++);RS=0;RW=0;CS1=0;CS2=1;P2=0x3f;EN=1;EN=0;   RW=1;

 for(i=0;i<200;i++);RS=0;RW=0;CS1=0;CS2=1;P2=0xb8;EN=1;EN=0;   RW=1;//page//b8
 for(i=0;i<200;i++);

 for(i=0;i<200;i++);RS=0;RW=0;CS1=0;CS2=1;P2=0x40;EN=1;EN=0;   RW=1;//y//40
 for(i=0;i<200;i++);RS=1;RW=0;CS1=0;CS2=1;P2=0x01;EN=1;EN=0;   RW=1;
 for(i=0;i<200;i++);RS=1;RW=0;CS1=0;CS2=1;P2=0x02;EN=1;EN=0;   RW=1;
 for(i=0;i<200;i++);RS=0;RW=0;CS1=0;CS2=1;P2=0x42;EN=1;EN=0;   RW=1;
 for(i=0;i<200;i++);RS=1;RW=0;CS1=0;CS2=1;P2=0x04;EN=1;EN=0;   RW=1;
//////////////////////////////////////////////////////////////
 for(i=0;i<200;i++);RS=0;RW=0;CS1=0;CS2=1;P2=0xc0;EN=1;EN=0;    RW=1;//first address
Initial();

 WriteData(0x3F,Left);
 }
} 
////////////////////////////////////////////////////////////////////

void Delay_us(unsigned int DelayTime)
 {
   while(DelayTime) DelayTime--;
  }
//////////////////////////////////////////////////////////////////////////////////////
void Delay_x10ms(unsigned char DelayTime)   //***************10ms延时**********//
   {
       unsigned char i,j,k;
       for(i=0;i<DelayTime;i++)
          for(j=0;j<50;j++)
             for(k=0;k<120;k++) {;}
    }

////////////////////////////////////////////////////////////////////
 Initial(void) 
{   
  RST=0;
  Delay_us(2);  
  RST = 1;
 
} 
//////////////////////////////////////////////////////////////
void WriteCommand(uchar Command, uchar CS_Num) 
{ 
  Delay_x10ms(1);
  if(CS_Num==1)			/*选择左半屏*/
   {
     CS1 = 0;
	 CS2 = 1;
	}
  else if(CS_Num==2)	/*选择右半屏*/
   {
     CS1 = 1;
	 CS2 = 0;
	}
  EN = 0;           /* 使能信号为L */ 
  RS = 0;           /* 置寄存器选择为L */ 
  RW = 0;           /* 置读/写选择为L */ 
  PORT = Command;   /* 将控制指令代码输出到的数据端口 */ 
  EN = 1;           /* 使能信号为H */ 
  Delay_us(5);          /* 延时2us */ 
  EN = 0;           /* 使能信号为L */ 
  CS1 = 1;          /* 置片选1为L */ 
  CS2 = 1;          /* 置片选2为L */ 
} ///////////////////////////////////////////////////////////////
WriteData(uchar Data,uchar CS_Num) 
{ 
  Delay_x10ms(1);
  if(CS_Num==1)		 /*选择左半屏*/
   {
     CS1 = 0;
	 CS2 = 1;
	}
  else if(CS_Num==2)  /*选择右半屏*/
   {
     CS1 = 1;
	 CS2 = 0;
	}
  EN = 0;
  RS = 1;       /* 置寄存器选择为H */ 
  RW = 0;       /* 置读/写选择为L */  
  PORT = Data;  /* 将显示数据输出到的数据端口 */ 
  EN = 1;       /* 使能信号为H */ 
  Delay_us(5);      /* 延时2us */ 
  EN = 0;       /* 使能信号为L */ 
  CS1= 1;       /* 置片选1为L */ 
  CS2= 1;       /* 置片选2为L */ 
} 
////////////////////////////////////////////////////////

⌨️ 快捷键说明

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