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

📄 lcd_drive.c

📁 本系统参照片上系统的设计架构、采用FPGA与SPCE061A相结合的方法
💻 C
字号:
/**********************************************************************************************************\
 *                                     LCD 驱动程序                                                       *   
 *                                             Designed by Pheonix                                        *
 *端口定义:  B12~B14: RS,R/W,E                                                                           *
 *    void send_d(char);                                                                                  *  
 *    void send_i(char);                                                                                  *
\*********************************************************************************************************/  

  //A口定义
#define P_IOA_Data             (volatile unsigned int *)0x7000
#define P_IOA_Buffer           (volatile unsigned int *)0x7001
#define P_IOA_Dir              (volatile unsigned int *)0x7002
#define P_IOA_Attrib           (volatile unsigned int *)0x7003
  //B口定义
#define P_IOB_Data             (volatile unsigned int *)0x7005
#define P_IOB_Buffer           (volatile unsigned int *)0x7006
#define P_IOB_Dir              (volatile unsigned int *)0x7007
#define P_IOB_Attrib           (volatile unsigned int *)0x7008
  //看门狗
#define ClearWatchdog          (volatile unsigned int *)0x7012

// 延时程序
void F_Delay(int j)
{
    int i;
	for(i=0; i<j; i++);	
}

//发送数据子程序
send_d(unsigned char n)
  {    
       int i;
               
       i=*P_IOB_Buffer;      //RS=1 选择数据寄存器
       i|=0x1000;       
       *P_IOB_Data=i;
       
       i=*P_IOB_Buffer;      //RW=0 写状态
       i&=0xdfff;
       *P_IOB_Data=i;
       
       n=n<<8;
       *P_IOA_Data=n;        //送数据
    
       i=*P_IOB_Buffer;      //使能端有效
       i|=0x4000;
       *P_IOB_Data=i;
        
        *ClearWatchdog=1;
        F_Delay(0xff);
       
        i=*P_IOB_Buffer;     //使能端无效
        i&=0xbfff;
        *P_IOB_Data=i;      
        F_Delay(0xff);
  } 
  
  //发送指令子程序
  
send_i(unsigned char n)
  { 
       int i;
             
       i=*P_IOB_Buffer;      //RS=0 选择指令寄存器
   	   i&=0xefff 	;       
       *P_IOB_Data=i;
       
       i=*P_IOB_Buffer;      //RW=0 写状态
       i&=0xdfff    ;
       *P_IOB_Data=i;  
       n=n<<8;       
       *P_IOA_Data=n;      //送数据
       *ClearWatchdog=1;
       
       i=*P_IOB_Buffer;      //使能端有效
       i|=0x4000    ;
       *P_IOB_Data=i;
        
       F_Delay(0xff);
       
       i=*P_IOB_Buffer;     //使能端无效
       i&=0xbfff    ;
       *P_IOB_Data=i;       
       F_Delay(0xff);
   }      
   
// LCD 初始化
void LCD_Init(void)
{ send_i(0x30);              
  send_i(0x01);              
  send_i(0x06);               
  send_i(0x0c);               
  send_i(0x80);               
}  

void Fill(int Position,char Data)
 {F_Delay(0xff);
  send_i(0x0080+Position);
  F_Delay(0xff);
  send_d(Data);
 }
 
void L_Fill(int Position,char point[])
{int i;
 F_Delay(0xff);
 send_i(0x80+Position);
 F_Delay(0xff);
 for(i=0;i<16;i++)
   {F_Delay(0xff);
    send_d(point[i]);
   }
} 


⌨️ 快捷键说明

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