?? altera_avalon_lcm240128_routines.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 + -