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

📄 12864.c

📁 基于ICCAVR平台的
💻 C
📖 第 1 页 / 共 2 页
字号:
void lcd_en_write(void)  
{ 
  _PC2=1;             //EN 产生一个下降沿脉冲,允许命令数据输入
  delay100us(1);
  _PC2=0; 
}

/***************************************
               LCD写指令使能            
***************************************/
void lcd_command_enable(char temp)
{
 PORTB=temp;                     //输入指令代码               
 _PC0=0;                         //RS=0 功能切换到指令输入状态
 _PC1=0;                         //RW=0                       
 lcd_en_write();                 //LCD输入使能                
 delay100us(50);
}

/***************************************
               LCD写数据使能            
***************************************/
void lcd_string_enable(void)
{
 _PC0=1;                         //RS=1 功能切换到字符输入状态
 _PC1=0;                         //RW=0                       
 lcd_en_write();                 //LCD输入使能                
 delay100us(1);
}

/***************************************
               图形初始化               
***************************************/
void map_reset(void)
{
  char x=0x80,lie=0;
  lcd_command_enable(0b00110000);//基本命令                               
  lcd_command_enable(0b00001000);//整体显示开(1)、光标开(1)、光标闪烁开(1)
  lcd_command_enable(0b00110100);//扩充命令不显示图片                     
  for(x=0x80;x<0xA0;x++)
   {   
    lcd_command_enable(x);       //输入X行起始坐标,共32行                
	lcd_command_enable(0x80);    //输入Y列组起始坐标(16组)               
    for(lie=0;lie<16;lie++)      //输入Y 每组的16位坐标值                 
	 {
	  PORTB=0x00;                //D15--D8                                
	  lcd_string_enable();       //LCD输入使能                            
	  PORTB=0x00;                //D7--D0                                 
      lcd_string_enable();       //LCD输入使能                            
	 }
   }
  lcd_command_enable(0b00110110);//扩充命令 显示图片                      
  lcd_command_enable(0b00110000);//基本命令                               
  lcd_command_enable(0b00001100);//整体显示开(1)、光标开(1)、光标闪烁开(1)
}

/***************************************
                 图形显示               
***************************************/
void map_start(void)
{
  char x=0x80,chair=0,newcha=0;
  lcd_command_enable(0b00110000);//基本命令                               
  lcd_command_enable(0b00001000);//整体显示开(1)、光标开(1)、光标闪烁开(1)
  lcd_command_enable(0b00110100);//扩充命令不显示图片                     
  
  for(x=0x80;x<0x83;x++)
  {     
  lcd_command_enable(x);         //输入X行起始坐标,共32行                
  lcd_command_enable(0x80);      //输入Y列组起始坐标(16组)               
  for(i=0;i<16;i++)
    {
     PORTB=0x00;                 //D15--D8                                
	 lcd_string_enable();        //LCD输入使能                            
    }
  for(chair=newcha;chair<newcha+16;chair++) //输入Y 每组的16位坐标值      
    {
	 PORTB=text0[chair];         //D15--D8                                
	 lcd_string_enable();        //LCD输入使能                            
    }
  newcha=chair;
  }

  newcha=0;
  for(x=0x83;x<0x8a;x++)
   {
    lcd_command_enable(x);       //输入X行起始坐标,共32行                
	lcd_command_enable(0x80);    //输入Y列组起始坐标(16组)               
    for(chair=newcha;chair<newcha+32;chair++) //输入Y 每组的16位坐标值    
	 {
	  PORTB=text1[chair];        //D15--D8                                
	  lcd_string_enable();       //LCD输入使能                            
	 }
	newcha=chair;
   }

   chair=0;newcha=0;
   for(x=0x8a;x<0x91;x++)
   {   
    lcd_command_enable(x);       //输入X行起始坐标,共32行               
	lcd_command_enable(0x80);    //输入Y列组起始坐标(16组)              
    for(chair=newcha;chair<newcha+32;chair++) //输入Y 每组的16位坐标值   
	 {
	  PORTB=text2[chair];        //D15--D8                               
	  lcd_string_enable();       //LCD输入使能                           
	 }
	newcha=chair;
   }

   chair=0;newcha=0;
   for(x=0x91;x<0x98;x++)
   {   
    lcd_command_enable(x);       //输入X行起始坐标,共32行               
	lcd_command_enable(0x80);    //输入Y列组起始坐标(16组)              
    for(chair=newcha;chair<newcha+32;chair++) //输入Y 每组的16位坐标值   
	 {
	  PORTB=text3[chair];        //D15--D8                               
	  lcd_string_enable();       //LCD输入使能                           
	 }
	newcha=chair;
   }
   
   chair=0;newcha=0;
   for(x=0x98;x<0x9f;x++)
   {   
    lcd_command_enable(x);       //输入X行起始坐标,共32行              
	lcd_command_enable(0x80);    //输入Y列组起始坐标(16组)             
    for(chair=newcha;chair<newcha+32;chair++) //输入Y 每组的16位坐标值  
	 {
	  PORTB=text4[chair];        //D15--D8                              
	  lcd_string_enable();       //LCD输入使能                          
	 }
	newcha=chair;
   }

  lcd_command_enable(0x9f);      //输入X行起始坐标,共32行              
  lcd_command_enable(0x80);      //输入Y列组起始坐标(16组)             
  for(i=0;i<16;i++)
    {
	 PORTB=text5[i];
	 lcd_string_enable();        //LCD输入使能                          
    }
  for(i=0;i<16;i++)              //输入Y 每组的16位坐标值               
    {
	 PORTB=0x00;                 //D15--D8                              
	 lcd_string_enable();        //LCD输入使能                          
    }
    
  lcd_command_enable(0b00110110);//扩充命令 显示图片                    
  lcd_command_enable(0b00110000);//基本命令                             
  lcd_command_enable(0b00001100);//整体显示开(1)、光标关、光标闪烁关    
}

/////////////////主函数//////////////////
void main(void)
{
  CLI();        //清零          
  port_init();  //端口初始化    
  GICR  = 0x00; 
  TIMSK = 0x00;
  SEI();        //开所有中断    
  PORTDefine(); //位操做复位    
  lcd_reset();  //LCD功能初始化 
  map_reset();
  while(1)
   {
	lcd_command_enable(0b00110000);//基本命令       
	lcd_command_enable(0b00000001);//清屏并光标复位	
	map_start();
	delay100us(20000);
   }    
}

⌨️ 快捷键说明

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