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

📄 lcd.c

📁 TG12864 LCD代码 在UC/OS 下 EASYRARM2100 下跑过
💻 C
字号:
#define	  LCD_CS	(1 << 29)             /* P0.29为LCD_CS */
#define	  LCD_DATA	(1 << 6)              /* P0.6为LCD_DATA */
#define	  LCD_CLK	(1 << 4)              /* P0.4为LCD_CLK */

#define   LCD_IOCON	(LCD_CS|LCD_DATA|LCD_CLK)		/* LCD接口的I/O设置字 */

void  LCD_WRI(uint8 dat);
void  LCD_WRD(uint8 dat);
void  LCD_CLS(void);
void  LCD_INIT(void);
//void  LCD_GRP(void);
void LCD_GRP(uint8 const *string_num);
void  DelayNS(uint32  dly);
//uint8 LCD_string_num(uint8 string_num);

/* LCD write LCD commond */
void  LCD_WRI(uint8 dat)
{  uint8  i;
   uint8  temp;
   
   IO0CLR = LCD_CS;			    // LCD_CS = 0
   IO0SET = LCD_CS;	            // LCD_CS = 1
   temp = 0xf8;
   for(i=0; i<8; i++)			// 发送8位数据
   {  
   	  IO0CLR = LCD_CLK;			// LCD_CLK = 0
	  if( (temp&0x80)!=0 ) IO0SET = LCD_DATA;
        else IO0CLR = LCD_DATA;
      temp <<= 1;
      IO0SET = LCD_CLK;			// LCD_CLK = 1
   }
   temp = dat & 0xf0;
   for(i=0; i<8; i++)			// 发送8位数据
   {  
   	  IO0CLR = LCD_CLK;			// LCD_CLK = 0
	  if( (temp&0x80)!=0 ) IO0SET = LCD_DATA;
        else IO0CLR = LCD_DATA;
      temp <<= 1;
      IO0SET = LCD_CLK;			// LCD_CLK = 1
   }
   temp = (dat << 4) & 0xf0; 
   for(i=0; i<8; i++)			// 发送8位数据
   {  
   	  IO0CLR = LCD_CLK;			// LCD_CLK = 0
	  if( (temp&0x80)!=0 ) IO0SET = LCD_DATA;
        else IO0CLR = LCD_DATA;
      temp <<= 1;
      IO0SET = LCD_CLK;			// LCD_CLK = 1
   }
   IO0CLR = LCD_CLK;			// LCD_CLK = 0

   IO0CLR = LCD_CS;			    // SPI_CS =  0,输出显示数据
}


/* LCD write LCD date */
void  LCD_WRD(uint8 dat)
{  uint8  i;
   uint8  temp;
   
   IO0CLR = LCD_CS;			    // LCD_CS = 0
   IO0SET = LCD_CS;	            // LCD_CS = 1
   temp = 0xfa;
   for(i=0; i<8; i++)			// 发送8位数据
   {  
   	  IO0CLR = LCD_CLK;			// LCD_CLK = 0
	  if( (temp&0x80)!=0 ) IO0SET = LCD_DATA;
        else IO0CLR = LCD_DATA;
      temp <<= 1;
      IO0SET = LCD_CLK;			// LCD_CLK = 1
   }
   temp = dat & 0xf0;
   for(i=0; i<8; i++)			// 发送8位数据
   {  
   	  IO0CLR = LCD_CLK;			// LCD_CLK = 0
	  if( (temp&0x80)!=0 ) IO0SET = LCD_DATA;
        else IO0CLR = LCD_DATA;
      temp <<= 1;
      IO0SET = LCD_CLK;			// LCD_CLK = 1
   }
   temp = (dat << 4) & 0xf0; 
   for(i=0; i<8; i++)			// 发送8位数据
   {  
   	  IO0CLR = LCD_CLK;			// LCD_CLK = 0
	  if( (temp&0x80)!=0 ) IO0SET = LCD_DATA;
        else IO0CLR = LCD_DATA;
      temp <<= 1;
      IO0SET = LCD_CLK;			// LCD_CLK = 1
   }
   IO0CLR = LCD_CLK;			// LCD_CLK = 0   
   IO0CLR = LCD_CS;			    // LCD_CS = 0,输出显示数据
}

void  LCD_CLS(void)
	{
        LCD_WRI(0x30);
        OSTimeDly(2);
        LCD_WRI(0x01);
        OSTimeDly(2);
    }    

void  LCD_INIT(void)
	{
    LCD_WRI(0x30);
    OSTimeDly(2);
    LCD_WRI(0x0c);
    OSTimeDly(2);
    LCD_WRI(0x01);
    OSTimeDly(2);
    LCD_WRI(0x06);
    OSTimeDly(2);
    }    

void LCD_GRP(uint8 const *string_num)
	{     
     uint8 i,j,k;
     uint16 l;
//      uint8 const *p = chartab1;
      
        k = 0x80;
        l = 0;  
 		LCD_WRI(0x32);
        OSTimeDly(2);
        LCD_WRI(0x36);
        OSTimeDly(2);       
        
    
                // 上半屏
	        for (i = 0;i < 32;i++)
	            {
					LCD_WRI(k);
					DelayNS(2);
					k++;
					LCD_WRI(0x80);
					DelayNS(2);		
						for (j = 0;j < 16;j++) 
							{
								LCD_WRD(*string_num);
								string_num++;
								DelayNS(1);;
								l++;      
							}
							

	            }

               // 下半屏
        k = 0x80;
              
	        for (i = 0;i < 32;i++)
	            {
					LCD_WRI(k);
					DelayNS(2);
					k++;
					LCD_WRI(0x88);
					DelayNS(2);		
						for (j = 0;j < 16;j++) 
							{
								LCD_WRD(*string_num);
								string_num++;
								DelayNS(1);
								l++;      
							}
							

	            }
	 	 
 
    
    }

⌨️ 快捷键说明

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