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

📄 main.c

📁 这是lcd驱动程序
💻 C
字号:

//DB0--DB7====P0.16--P0.23

//*********************************************************************
#include"lpc213x.h"

//*********************************************************************
#define	CLR_LCD_DI		IOCLR0=(1<<25);  //P0.25
#define	SET_LCD_DI		IOSET0=(1<<25);
#define	CLR_LCD_E		IOCLR0=(1<<27);  //P0.27
#define	SET_LCD_E		IOSET0=(1<<27);
#define	CLR_LCD_CS1		IOCLR0=(1<<28);  //P0.28
#define	SET_LCD_CS1		IOSET0=(1<<28);
#define	CLR_LCD_CS2		IOCLR0=(1<<29);  //P0.29
#define	SET_LCD_CS2		IOSET0=(1<<29);

//*********************************************************************
const U32 LCD_dot[]={
/*---转换字符 佛 ---*/
0x80,0x00,0x40,0x00,0x30,0x00,0xFC,0xFF,0x03,0x00,0xE4,0x81,0x24,0x61,0x24,0x19,
0xFF,0x07,0x24,0x01,0x24,0x01,0xFF,0xFF,0x24,0x09,0x3C,0x11,0x00,0x0F,0x00,0x00,

/*---转换字符 山 ---*/
0x00,0x00,0x00,0x20,0xE0,0x7F,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0xFF,0x3F,
0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0xE0,0x7F,0x00,0x00,0x00,0x00,

/*---转换字符 市 ---*/
0x04,0x00,0x04,0x00,0x04,0x00,0xE4,0x3F,0x24,0x00,0x24,0x00,0x25,0x00,0xFE,0xFF,
0x24,0x00,0x24,0x00,0x24,0x10,0x24,0x20,0xE4,0x1F,0x04,0x00,0x04,0x00,0x00,0x00,

/*---转换字符 华 ---*/
0x20,0x00,0x10,0x04,0x08,0x04,0xFC,0x05,0x03,0x04,0x02,0x04,0x10,0x04,0x10,0xFF,
0x7F,0x04,0x88,0x04,0x88,0x04,0x84,0x04,0x86,0x04,0xE4,0x04,0x00,0x04,0x00,0x00,

/*---转换字符 运 ---*/
0x40,0x40,0x41,0x20,0xCE,0x1F,0x04,0x20,0x00,0x28,0x20,0x4C,0x22,0x4A,0xA2,0x49,
0x62,0x48,0x22,0x4C,0xA2,0x44,0x22,0x45,0x22,0x5E,0x22,0x4C,0x20,0x40,0x00,0x00,

/*---转换字符 科 ---*/
0x10,0x04,0x12,0x02,0x92,0x01,0x72,0x00,0xFE,0xFF,0x51,0x00,0x91,0x04,0x00,0x04,
0x22,0x04,0xCC,0x02,0x00,0x02,0x00,0x02,0xFF,0xFF,0x00,0x01,0x00,0x01,0x00,0x00,

/*---转换字符 技 ---*/
0x08,0x01,0x08,0x41,0x88,0x80,0xFF,0x7F,0x48,0x00,0x28,0x40,0x00,0x40,0xC8,0x20,
0x48,0x13,0x48,0x0C,0x7F,0x0C,0x48,0x12,0xC8,0x21,0x48,0x60,0x08,0x20,0x00,0x00,

/*---转换字符 有 ---*/
0x00,0x02,0x04,0x01,0x84,0x00,0x44,0x00,0xE4,0xFF,0x34,0x09,0x2C,0x09,0x27,0x09,
0x24,0x29,0x24,0x49,0x24,0xC9,0xE4,0x7F,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,

/*---转换字符 限 ---*/
0xFE,0xFF,0x02,0x00,0x32,0x02,0x4E,0x04,0x82,0x03,0x00,0x00,0xFE,0xFF,0x4A,0x40,
0xCA,0x20,0x4A,0x03,0x4A,0x0C,0x4A,0x12,0x7E,0x21,0x00,0x60,0x00,0x20,0x00,0x00,

/*---转换字符 公 ---*/
0x00,0x00,0x00,0x01,0x80,0x20,0x40,0x70,0x30,0x28,0x0E,0x24,0x84,0x23,0x00,0x31,
0x00,0x10,0x0E,0x10,0x10,0x14,0x60,0x78,0xC0,0x30,0x80,0x01,0x80,0x00,0x00,0x00,

/*---转换字符 司 ---*/
0x00,0x00,0x10,0x00,0x92,0x1F,0x92,0x04,0x92,0x04,0x92,0x04,0x92,0x04,0x92,0x04,
0x92,0x04,0x92,0x0F,0x12,0x00,0x02,0x20,0x02,0x40,0xFE,0x3F,0x00,0x00,0x00,0x00,};
  
//*************************************************************************

void DelayNS (U32 dly)          //延时10mS?
{ 
  U32 i;
  for(;dly>0;dly--)
     for(i=0;i<50;i++);
 }
 
 
 void LCD_sendcommand (U32 m_s, U32 command)   //写指令子程序
 {
   if(m_s&1)            //左半屏
      { 
       CLR_LCD_E 
       CLR_LCD_DI
       SET_LCD_CS1
       CLR_LCD_CS2       
       IOCLR0=(0xFF<<16);//D0-D7数据总线输出低
       IOSET0=(command<<16);//D0-D7数据总线输出高
       DelayNS(1);
       SET_LCD_E
       DelayNS(1);
       CLR_LCD_E
      }
      
    if(m_s&2)            //右半屏
      {         
       CLR_LCD_E
       CLR_LCD_DI
       SET_LCD_CS2
       CLR_LCD_CS1	
       IOCLR0=(0xFF<<16);
       IOSET0=(command<<16); 
       DelayNS(1);
       SET_LCD_E
       DelayNS(1);
       CLR_LCD_E
      }
       
       DelayNS(3);
  }
  
  
  void LCD_senddata(U32 m_s, U32 command)          //写数据子程序
  {     
    if(m_s&1)        //左半屏
      {
       CLR_LCD_E     
       SET_LCD_DI
       SET_LCD_CS1
       CLR_LCD_CS2	
       IOCLR0=(0xFF<<16);
       IOSET0=(command<<16);
       DelayNS(1);
       SET_LCD_E
       DelayNS(1);
       CLR_LCD_E
      }
      
    if(m_s&2)            //右半屏
      {  
       CLR_LCD_E
       SET_LCD_DI
       SET_LCD_CS2
       CLR_LCD_CS1	      
       IOCLR0=(0xFF<<16);
       IOSET0=(command<<16);
       DelayNS(1);
       SET_LCD_E
       DelayNS(1);
       CLR_LCD_E
      }
       DelayNS(3);
  }
  
  void LCD_setXaddr(U32 m_s, U32 x)
  {
    LCD_sendcommand(m_s,0xB8+x);
  }
  
  void LCD_setYaddr(U32 m_s, U32 y)
  {
    LCD_sendcommand(m_s,0x40+y);
  }

  
  void LCD_clean(void)
  {
    U32 row,i;
    for(row=0;row<8;row++)
    {
      LCD_sendcommand(3,0xB8+row);
      LCD_sendcommand(3,0x40);
      for(i=64;i>0;i--)
        {  LCD_senddata(3,0x00);
          DelayNS(1);
        }
    }
   }
   
   
  void LCD_show(void)
  {
    U32 x,p,n,y;
        p=0;
      
      for(n=40;n<88;n++)
      {
        for(x=0;x<2;x++)
         {   
    	     if(n<64){
               LCD_setXaddr(1,x);
               LCD_setYaddr(1,n);
   			   LCD_senddata(1,LCD_dot[p]); 
             }
             
            if(n>=64){
               LCD_setXaddr(2,x);
  		       LCD_setYaddr(2,n-64);
  	           LCD_senddata(2,LCD_dot[p]);
  	          }
               p++;
         }
      }
      
      
      for(y=0;y<128;y++)
      {
        for(x=4;x<6;x++)
         {   
    	     if(y<64){
               LCD_setXaddr(1,x);
               LCD_setYaddr(1,y);
   			   LCD_senddata(1,LCD_dot[p]); 
             }
             
            if(y>=64){
               LCD_setXaddr(2,x);
  		       LCD_setYaddr(2,y-64);
  	           LCD_senddata(2,LCD_dot[p]);
  	          }
               p++;
         }
      }
   }
   
int main(void)
 {U32 a=0xffff;
  PINSEL2=PINSEL2&(~0x0C);
  IODIR1=(a<<16);
   LCD_sendcommand(3, 0x3F);
   LCD_sendcommand(3, 0xC0);	 
   LCD_clean(); 
   LCD_show();
        	
   while(1);
   
   return(0);
   
 }
           

⌨️ 快捷键说明

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