#include "config.h"
/*******************定义与LCD相关的宏*******************/ #define LCD_DATA 0xFF
#define LCD_DI 1<<8 //与p0.8对应
#define LCD_RW 1<<9 //与p0.9对应
#define LCD_EN 1<<10 //与p0.10对应.
#define LCD_PSB 1<<11 //与p0.11对应//电路直接拉高
#define LCD_RST 1<<12 //与p0.12对应//上电自动复位,一般也可以不接*
#define clear_screen 0x01 #define reset_address 0x02 #define set_point 0x06 // 0000_0110
#define display_set 0x0c //显示设定
#define cursor_shift_control 0x1c //0001_1100
#define function_set 0x30 //功能设定 基本指令集
#define function_set_ext 0x36 //功能设定 扩充指令集 绘图开 //#define set_CGRAM_ADD
#define set_DDRAM_ADD 0x80 //#define write_data_intenalRAM #define uint unsigned int
/*****************************************************************************/
void Delay_1ms(uint8 d)
{
uint8 i;
while (d--!=0)
{
for(i=0;i<40;i++);
}
}
void Delay(uint32 dly)
{
while(dly--!=0);
}
/*****************************************************************************/
void LCD_DATA_input()
{
IO0DIR = IO0DIR & (~LCD_DATA); //把p1.16-p1.23设定为输入
}
/*****************************************************************************/ void LCD_DATA_output()
{
IO0DIR = IO0DIR | LCD_DATA; //设定p0.0-p0.7为输出
}
/*****************************************************************************/ void CheckState( ) //状态检查,LCD是否忙,
{
Delay_1ms(200);
//
}
/*****************************************************************************/
/******************************************************************************
*** 函数名称:GPIO_Init()
*** 函数功能:初始化IO端口,包含一个uart0,三个按键输入,以及几个普通的输入输出端口.
*** 入口参数:无
*** 出口参数:无
******************************************************************************/ void GPIO_init()
{
PINSEL0 = 0;
IO0DIR= 0xFF<<8;
}
/******************************************************************************
**************************
*** 函数名称: w_data(unsigned char data_Lcm)
*** 函数功能:给LCD发送数据或者命令.
*** 入口参数:data_Lcm
*** 出口参数:无
*******************************************************************************
***************************/ void W_data(uint8 data_Lcm)
{
CheckState();
LCD_DATA_output();
IO0SET = LCD_DI;
IO0CLR = LCD_RW;
IO0CLR = 0xFF;
IO0SET = data_Lcm;
IO0SET = LCD_EN;
IO0CLR = LCD_EN;
}
/******************************************************************************
**************************
*** 函数名称:
*** 函数功能:
*** 入口参数:
*** 出口参数:
*******************************************************************************
***************************/
void W_instruct(uint8 data_Lcm)
{
CheckState();
LCD_DATA_output();
IO0CLR = LCD_DI;
IO0CLR = LCD_RW;
IO0CLR = 0xFF;
IO0SET = data_Lcm;
IO0SET = LCD_EN;
IO0CLR = LCD_EN;
}
/******************************************************************************
**************************
*** 函数名称
*** 函数功能:初始化lcd显示屏
*** 入口参数:无
*** 出口参数:无
*******************************************************************************
***************************/
void init_lcd(void)
{
IO0SET = LCD_RST;
IO0CLR = LCD_RST;
IO0SET = LCD_RST;
IO0SET = LCD_PSB;
IO0SET = LCD_PSB;
W_instruct(function_set);
W_instruct(display_set);
W_instruct(clear_screen);
W_instruct(reset_address);
W_instruct(set_DDRAM_ADD);
}
/*====================================================
函数功能:清除GDROM的内容,如果不清除会出现花屏现象 清除方法:向GDROM中写入0x00来清除内容
========================================================*/
void clear()
{
uint8 i,j,k,lcd_x,lcd_y;
lcd_x=0x80;
lcd_y=0x80;
W_instruct(0x34);//打开扩充指令关闭绘图显示(绘图指令为扩充指令,并且在绘图期间
必须关闭绘图显示功能)
for(i=0;i<2;i++)//分为上下两半屏清除显示
{
for(j=0;j<32;j++)
{
W_instruct(lcd_y+j);
W_instruct(lcd_x);
for(k=0;k<16;k++)
{
W_data(0x00);
}
}
lcd_x=0x88;//将x指向下半屏
}
W_instruct(0x36);//打开绘图指令
W_instruct(0x30);//操作恢复为常用指令
}
/*****************************************************************************/
void write_image(uint8 *p) {
uint8 i,j,k,lcd_x,lcd_y;
lcd_x=0x80;
lcd_y=0x80;
W_instruct(0x34);//打开扩充功能
for(i=0;i<2;i++) //分为上下两屏
{
for(j=0;j<32;j++)
{
W_instruct(lcd_y+j);
W_instruct(lcd_x);
for(k=0;k<16;k++) //写入显示数据
{
W_data(*p++);
}
}
lcd_x=0x88;//将x地址指向下半屏
}
W_instruct(0x36);//打开绘图功能
W_instruct(0x30);//操作恢复为常用指令
}
uint8 tu[]={
/*火影图片*/
/*-- 宽度x高度=128x64 --*/
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFC,0X00,0X00,0X03,0XFF,0XFF,0XF1,0X33,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X3F,
0XFC,0X00,0X00,0X40,0X3E,0XFC,0X00,0X10,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X7F,
0XFC,0X00,0X00,0X40,0X38,0X00,0X00,0X01,0XC3,0XFF,0XFF,0XFF,0XF8,0X00,0XFF,0X7F,
0XFC,0X00,0X00,0XC0,0X50,0X27,0XFE,0X00,0X07,0XFF,0XFF,0XC0,0X00,0X00,0X7F,0X3F,
0XFC,0X00,0X00,0XC0,0X11,0XFF,0XFE,0X00,0X0F,0XFF,0X00,0X00,0X00,0X00,0X2F,0X3F,
0XFC,0X00,0X00,0XC0,0X00,0XF7,0XFE,0X00,0X1F,0XF8,0X03,0XFF,0XFF,0XF8,0X23,0XBF,
0XFC,0X00,0X01,0XC0,0X00,0XF7,0XFE,0X80,0X3F,0XF0,0XFF,0XFF,0XFF,0XF4,0X11,0XBF,
0XFC,0X00,0X01,0XC0,0X01,0XFF,0XFE,0X01,0X3F,0X61,0X7F,0XFF,0XCF,0XFC,0X00,0XFF,
0XFC,0X00,0X01,0XC0,0X00,0XF9,0XFE,0X00,0XEE,0X23,0X3F,0XF8,0X1F,0XFC,0X00,0X3F,
0XFC,0X00,0X01,0XD0,0X00,0XFF,0X80,0XE4,0X0C,0X03,0X3F,0XF7,0XFF,0XFC,0X00,0X3F,
0XFC,0X00,0X01,0XC0,0X00,0X00,0X00,0XF5,0X0A,0X03,0X3F,0XEC,0X3F,0XF8,0X00,0X
3F,
0XFC,0X00,0X01,0X80,0X02,0X01,0X03,0X79,0X16,0X02,0X3F,0XE9,0X3F,0XF8,0X00,0X3F,
0XFC,0X00,0X00,0X00,0X03,0X07,0X66,0XFB,0X14,0X02,0X7F,0XCB,0X5F,0XFC,0X00,0X3F,
0XFC,0X00,0X00,0X00,0X03,0X87,0XFF,0XFF,0X20,0X02,0X7F,0XCC,0X5F,0XFC,0X00,0X3F,
0XFC,0X00,0X00,0X00,0X03,0XDF,0XFF,0XF0,0X00,0X03,0X7F,0XA7,0X9F,0XFC,0X00,0X3F,
0XFC,0X00,0X00,0X00,0X01,0XFF,0XFF,0XF0,0X00,0X03,0X7F,0XA0,0X3F,0XF0,0X00,0X3F,
0XFC,0X00,0X00,0X00,0X01,0XFF,0XFF,0XD0,0X40,0X01,0X7F,0XFD,0XFF,0XF4,0X01,0XBF,
0XFC,0X00,0X00,0X00,0X01,0XFF,0XFF,0XF0,0X00,0X01,0X7F,0XFF,0XFD,0XF8,0X01,0X3F,
0XFC,0X00,0X00,0X00,0X00,0XFF,0XFF,0XC0,0X00,0X00,0X7F,0XFF,0XF0,0X00,0X02,0X3F,
0XFC,0X00,0X00,0X00,0X00,0XF9,0X7F,0XE0,0X03,0X00,0X00,0X00,0X00,0X00,0X0C,0XBF,
0XFC,0X00,0X00,0X00,0X00,0X7D,0XFF,0X80,0X01,0X80,0X00,0X00,0X00,0X0F,0XE8,0X3F,
0XFC,0X00,0X00,0X00,0X00,0X7F,0XFF,0X00,0X00,0XA8,0X00,0X00,0X02,0X03,0XE1,0XBF,
0XFC,0X00,0X00,0X00,0X00,0X3E,0X30,0X00,0X03,0X4F,0X81,0XFF,0XFC,0X01,0XE1,0XBF,
0XFC,0X00,0X00,0X00,0X00,0X0F,0XE0,0X00,0X03,0X0F,0X00,0XFF,0XC4,0X45,0XE1,0XBF,
0XFC,0X00,0X00,0X00,0X00,0X1F,0X00,0X00,0X03,0X1F,0X40,0X47,0XEC,0X0F,0XE9,0XBF,
0XFC,0X00,0X00,0X00,0X00,0X30,0X00,0X00,0X03,0X0F,0X40,0X6F,0XFE,0X0F,0XF9,0XBF,
0XFC,0X00,0X00,0X00,0X00,0X20,0X00,0X00,0X03,0X0F,0XC3,0XFF,0XFF,0X0F,0XF3,0X3F,
0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X3F,0XE0,0XFF,0XFF,0XDF,0XE3,0X3F,
0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFB,0XFF,0XFF,0XFF,0XE6,0X3F,
0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X8F,0XFF,0XFF,0XFF,0XFF,0XCC,0X3F,
0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XC7,0XFF,0XFF,0XFF,0XFF,0XCC,0X3F,
0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X77,0XFF,0XFF,0XFF,0XFF,0XDC,0X3F,
0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X37,0XFF,0XFF,0XFF,0XFF,0X18,0X3
F,
0XFC,0X00,0X00,0X00,0X02,0X00,0X00,0X00,0X00,0X33,0XFF,0XFF,0XFF,0XFF,0XB8,0X3F,
0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X13,0XFF,0XFF,0XFF,0XFF,0XFE,0X3F,
0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0X3F,
0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1D,0XFF,0XFF,0XFF,0XFF,0X3F,0XBF,
0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0XFF,0XFD,0X3F,0XFF,0X7F,0XFF,
0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X3C,0XFF,0XFC,0X3F,0XFF,0X7F,0XFF,
0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFC,0XFF,0XFE,0X7F,0XFE,0X7F,0XFF,
0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XF8,0X7F,0XFF,0XFF,0XFC,0X4F,0XFF,
0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XF8,0X3F,0XFF,0XFF,0XF8,0X4F,0XFF,
0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XF8,0X1F,0XFF,0XFF,0XF9,0X07,0XFF,
0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XF0,0X0F,0XFF,0XFF,0XE7,0X07,0XFF,
0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XF8,0X07,0XFF,0XFF,0XC3,0X07,0XFF,
0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XF8,0X63,0XFF,0XFF,0X81,0X0F,0XFF,
0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFC,0X50,0XFF,0XFE,0X00,0X0F,0XFF,
0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFC,0X40,0X3F,0XFC,0X00,0X1F,0XFF,
0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFC,0X41,0X0F,0XF0,0X00,0X3F,0XFF,
0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFE,0X01,0XC0,0X00,0X38,0X7F,0XFF,
0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0X27,0XF0,0X00,0X7C,0XFF,0XFF,
0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XA7,0XFC,0X00,0XFF,0XFF,0XFF,
0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XE7,0XFF,0XFE,0XFF,0XFF,0XFF,
0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XF7,0XFF,0XFD,0XFF,0XFF,0XFF,
0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XFF,0XFF,0XFC,0XFF,0XFF,0XF
F,
0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XFF,0XFE,0X3F,0X7F,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
};
int main (void)
{
GPIO_init();
init_lcd();
clear();
write_image(tu);
While(1) ;
}
/******************************************************************************
End Of File
******************************************************************************/