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

📄 altera_avalon_lcm240128_routines.c

📁 青云开发的LCD模块LCM240128ZK3用于ALTERA的FPGA
💻 C
字号:
#include "altera_avalon_lcm240128_routines.h"

//#include <stdio.h>

/******************************************************************************/
/*LCD驱动子函数定义,张敏,2008-07-26                                                                                                       */
/******************************************************************************/

//在屏幕的指定行、列显示字符串,张敏2008-07-21
void LCD_Print_Str(unsigned char row,unsigned char col,unsigned char *str)
{
  int i,len=strlen(str);
  LCD_CursorX(col);
  LCD_CursorY(row);
  for(i = 0; i <  len; i++)
  {
    LCD_DataWrite(str[i]);
  }
  LCD_CursorY(195);
}

/******************************************************************************/
/*LCD print Subroutine                                                                                                             */
/******************************************************************************/
void LCD_Print_Char_Test(void) 
{
    //下面显示汉字
    LCD_CmdWrite(0x00);
    LCD_CmdWrite(0xCD);
    LCD_Print_Str(0,16,"第99发:10.99环");
    LCD_Print_Str(16,16,"命中:50枪");
    LCD_Print_Str(32,16,"总成绩:255.9环");
    LCD_Print_Str(48,16,"平均:9.53环");
}

/******************************************************************************/
/*Print_Picture Subroutine                                                                                                        /
/******************************************************************************/
//在屏幕的左半边显示图形
void LCD_Print_Picture() 
{
    int i,j,k,m;
    unsigned char wt;
    int ct;
    LCD_CmdWrite(0x00);
    LCD_CmdWrite(0xC5);
    
    for(i=0;i<128;i++)
    {
      for(k=0;k<16;k++)
      {
        LCD_CursorX(k);
        LCD_CursorY(i);
        wt=0;
        for(j=0;j<8;j++)
        {
          m=8*k+j;
          if((m+i==64)||(m+i==192)||i==64||m==64)
          {
            ct=1;
          }
          else ct=0;
          wt=wt<<1;
          wt=wt+ct;
        }
        LCD_DataWrite(wt);
      }
    }
} 

/******************************************************************************/
/*LCD Reset Subroutine                                                                                                             */
/******************************************************************************/
void LCD_Reset(void) 
{
	RESET_LCM240128(LCM240128_BASE);
} 

/******************************************************************************/
/*LCD Function Initail Subroutine                                                                                             */
/******************************************************************************/
void LCD_Initial(void) 
{
  LCD_CmdWrite(0x00);
  LCD_CmdWrite(0xCD);
  LCD_CmdWrite(0x08);
  LCD_CmdWrite(0x73);
  LCD_CmdWrite(0x10);
  LCD_CmdWrite(0x2f);
  LCD_CmdWrite(0x18);
  LCD_CmdWrite(0x20);
  LCD_CmdWrite(0x20);
  LCD_CmdWrite(0x1D);
  LCD_CmdWrite(0x30);
  LCD_CmdWrite(0x7F);
  LCD_CmdWrite(0x40);
  LCD_CmdWrite(0x00);
  LCD_CmdWrite(0x50);
  LCD_CmdWrite(0x00);
  LCD_CmdWrite(0x28);
  LCD_CmdWrite(0x1D);
  LCD_CmdWrite(0x38);
  LCD_CmdWrite(0x7F);
  LCD_CmdWrite(0x48);
  LCD_CmdWrite(0x00);
  LCD_CmdWrite(0x58);
  LCD_CmdWrite(0x00);
  LCD_CmdWrite(0x60);
  LCD_CmdWrite(0x00);
  LCD_CmdWrite(0x70);
  LCD_CmdWrite(0x00);
  LCD_CmdWrite(0x80);
  LCD_CmdWrite(0x33);
  LCD_CmdWrite(0x90);
  LCD_CmdWrite(0x0A);
  LCD_CmdWrite(0xB0);
  LCD_CmdWrite(0x27);
  LCD_CmdWrite(0xB8);
  LCD_CmdWrite(0xEF);
  LCD_CmdWrite(0xA0);
  LCD_CmdWrite(0x08);
  LCD_CmdWrite(0xC0);
  LCD_CmdWrite(0xF0);
  LCD_CmdWrite(0xD0);
  LCD_CmdWrite(0x2f);
  LCD_CmdWrite(0xE0);
  LCD_CmdWrite(0x00);
  LCD_CmdWrite(0xF0);
  LCD_CmdWrite(0xA0);
}
/******************************************************************************/
/*LCD Cursor Set Subroutine                                                                                                       */
/******************************************************************************/
void LCD_CursorX(unsigned char Cursor) 
{
  LCD_CmdWrite(0x60);
  LCD_CmdWrite(Cursor);
}
/******************************************************************************/
/*ACTIVE WINDOWS                                                                                                       */
/******************************************************************************/
void Windows(unsigned char X) 
{  
  
  LCD_CmdWrite(0x10);
  LCD_CmdWrite(0xCE);
  LCD_CursorX(X);
  LCD_CursorY(X);
  
  LCD_CmdWrite(0x20);
  LCD_CmdWrite(0x1D);
  LCD_CmdWrite(0x30);
  LCD_CmdWrite(0x7F);
  LCD_CmdWrite(0x40);
  LCD_CmdWrite(0x00);
  LCD_CmdWrite(0x50);
  LCD_CmdWrite(0x00);
  LCD_CmdWrite(0x08);
  LCD_CmdWrite(0x73);
  
  LCD_Print_Char_Test();
  DelayXms(500);
  
  
  LCD_CmdWrite(0x10);
  LCD_CmdWrite(0xEE);
  LCD_CmdWrite(0x20);
  LCD_CmdWrite(0x27);
  LCD_CmdWrite(0x30);
  LCD_CmdWrite(0xeF);
  LCD_CmdWrite(0x40);
  LCD_CmdWrite(0x00);
  LCD_CmdWrite(0x50);
  LCD_CmdWrite(0x00);
}
/******************************************************************************/
/*LCD Cursor Set Subroutine                                                                                                       */
/******************************************************************************/
void LCD_CursorY(unsigned char Cursor) 
{
  LCD_CmdWrite(0x70);
  LCD_CmdWrite(Cursor);
}

/******************************************************************************/
/*LCD Clear Screen Subroutine                                                                                                   */
/******************************************************************************/
void LCD_Clear(void) 
{
  LCD_CmdWrite(0xE0);
  LCD_CmdWrite(0x00);

  LCD_CmdWrite(0xF0);
  LCD_CmdWrite(0xa8);
  DelayXms(1);
  
}

/******************************************************************************/
/*LCD Command Write Subroutine                                                                                              */
/******************************************************************************/
void LCD_CmdWrite(unsigned char Cmd_Data) 
{
  LCD_ChkBusy();  //Call LCD_ChkBusy to Check Busy Bit
  WRITE_LCM240128_COMMAND(LCM240128_BASE,Cmd_Data);
}

/******************************************************************************/
/*LCD Data Write Subroutine                                                                                                      */
/******************************************************************************/
void LCD_DataWrite(unsigned char Data_Data) 
{
  LCD_ChkBusy();             //Call LCD_ChkBusy to Check Busy Bit
  WRITE_LCM240128_DATA(LCM240128_BASE,Data_Data);
}

/******************************************************************************/
/*LCD Cmd Read Subroutine                                                                                                       */
/******************************************************************************/
unsigned char LCD_CmdRead(unsigned char REG_Addr) 
{
  return READ_LCM240128_COMMAND(LCM240128_BASE);
}

/******************************************************************************/
/*LCD Data Read Subroutine                                                                                                        */
/******************************************************************************/
unsigned char LCD_DataRead(void) 
{
  return READ_LCM240128_DATA(LCM240128_BASE);
}

/******************************************************************************/
/*LCD Check Busy Subroutine                                                                                                    */
/******************************************************************************/
void LCD_ChkBusy(void) 
{
  unsigned char DATA_READ;
  do
  {
    DATA_READ=CHECK_BUSY_LCM240128(LCM240128_BASE);
  }
  while(DATA_READ == 1);
}

/******************************************************************************/
/*Delay Subroutine                                                                                                             */
/******************************************************************************/
void DelayXms(int count) 
{
  int i,j;
  for(i=0; i<count; i++)
    for(j=0; j<240; j++)
      _nop_();
}
/******************************************************************************/
/*_nop_ Subroutine                                                                                                             */
/******************************************************************************/
void _nop_() 
{
}

⌨️ 快捷键说明

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