JLX_12864液晶显示

  • 格式:doc
  • 大小:55.00 KB
  • 文档页数:12

头文件:

#ifndef _jlx_

#define _jlx_

#define uchar unsigned char

#define uint unsigned int

#define ulong unsigned long

#define lcd12864_rs 2 /*接口定义:lcd_rs 就是LCD 的rs*/

#define lcd12864_sclk 4 /*接口定义:lcd_sclk 就是LCD 的sclk*/

#define lcd12864_sid 3 /*接口定义:lcd_sid 就是LCD 的sid*/

#define lcd12864_reset 1 /*接口定义:lcd_reset 就是LCD 的reset*/

#define lcd12864_cs1 0 /*接口定义:lcd_cs1 就是LCD 的cs1*/

#define rom12864_out 1 /*字库IC 接口定义:Rom_OUT 就是字库IC 的SO*/

#define rom12864_in 0 /*字库IC 接口定义:Rom_IN 就是字库IC 的SI*/

#define rom12864_sck 2 /*字库IC 接口定义:Rom_SCK 就是字库IC 的SCLK*/

#define rom12864_cs 3 /*字库IC 接口定义Rom_CS 就是字库IC 的CS#*/

#define lcd12864_rs_1() P0|=(1<

#define lcd12864_rs_0() P0&=~(1<

#define lcd12864_sclk_1() P0|=(1<

#define lcd12864_sclk_0() P0&=~(1<

#define lcd12864_sid_1() P0|=(1<

#define lcd12864_sid_0() P0&=~(1<

#define lcd12864_reset_1() P0|=(1<

#define lcd12864_reset_0() P0&=~(1<

#define lcd12864_cs1_1() P0|=(1<

#define lcd12864_cs1_0() P0&=~(1<

#define rom12864_out_1() P2|=(1<

#define rom12864_out_0() P2&=~(1<

#define rom12864_in_1() P2|=(1<

#define rom12864_in_0() P2&=~(1<

#define rom12864_sck_1() P2|=(1<

#define rom12864_sck_0() P2&=~(1<

#define rom12864_cs_1() P2|=(1<

#define rom12864_cs_0() P2&=~(1<

#define rom12864_ifout_1 (P2&(1<

/*写指令到LCD 模块*/

void transfer_command_lcd(int data1);

/*写数据到LCD 模块*/

void transfer_data_lcd(int data1);

/*延时*/

void delay(int i);

/*LCD 模块初始化*/

void initial_lcd();

/*全屏清屏*/

void clear_screen();

//地址

void lcd_address(uint page,uint column);

/****送指令到晶联讯字库IC***/

void send_command_to_ROM( uchar datu );

/****从晶联讯字库IC 中取汉字或字符数据(1 个字节)***/

static uchar get_data_from_ROM( );

/*从相关地址(addrHigh:地址高8 位,addrMid:地址中8 位,addrLow:地址8 位,共24 位)中连续读出DataLen 个字节的数据到 pBuff 的地址*/

void get_n_bytes_data_from_ROM(uchar addrHigh,uchar addrMid,uchar

addrLow,uchar*pBuff,uchar DataLen );

/*显示16x16 点阵图像、汉字、生僻字或16x16 点阵的其他图标*/

void display_graphic_16x16(uint page,uint column,uchar *dp);

/*显示8x16 点阵图像、ASCII, 或8x16 点阵的自造字符、其他图标*/

void display_graphic_8x16(uint page,uchar column,uchar *dp);

/*显示5*7 点阵图像、ASCII, 或5x7 点阵的自造字符、其他图标*/

void display_graphic_5x7(uint page,uchar column,uchar *dp);

/*显示一串16x16点阵汉字或8x16的ASCII字(静态)*/

void display_GB2312_string(uchar y,uchar x,uchar *text);

/*显示一串5x7点阵的ASCII 字(静态)*/

void display_string_5x7(uchar y,uchar x,uchar *text);

///*显示128x64点阵图像*/

//void display_128x64(uchar *dp);

void lcd_int(uchar y,uchar x ,int dat);

//extern ulong fontaddr;

#endif

.C文件:

#include #include "jlx.h"

/*写指令到LCD 模块*/

void transfer_command_lcd(int data1)

{

char i;

lcd12864_rs_0();

for(i=0;i<8;i++)

{

lcd12864_sclk_0();

if(data1&0x80)

{

lcd12864_sid_1();

}

else

{

lcd12864_sid_0();

}

lcd12864_sclk_1();

data1<<=1;//=data1

}

}

/*写数据到LCD 模块*/

void transfer_data_lcd(int data1)

{

char i;

lcd12864_rs_1();

for(i=0;i<8;i++)

{

lcd12864_sclk_0();

if(data1&0x80)

{

lcd12864_sid_1();

}

else

{

lcd12864_sid_0();

}

lcd12864_sclk_1();

data1<<=1;//=data1

}

}

/*延时*/

void delay(int i)

{

int j,k;

for(j=0;j

for(k=0;k<500;k++);

}

/*LCD 模块初始化*/

void initial_lcd()

{

lcd12864_cs1_0();

rom12864_cs_1();

lcd12864_reset_0(); /*低电平复位*/

delay(20);

lcd12864_reset_1(); /*复位完毕*/

delay(20);

transfer_command_lcd(0xe2); /*软复位*/

delay(5);

transfer_command_lcd(0x2c); /*升压步聚1*/

delay(5);

transfer_command_lcd(0x2e); /*升压步聚2*/

delay(5);

transfer_command_lcd(0x2f); /*升压步聚3*/

delay(5);

transfer_command_lcd(0x24); /*粗调对比度,可设置范围0x20~0x27*/

transfer_command_lcd(0x81); /*微调对比度*/

transfer_command_lcd(0x1a); /*0x1a,微调对比度的值,可设置范围0x00~0x3f*/

transfer_command_lcd(0xa2); /*1/9 偏压比(bias)*/

transfer_command_lcd(0xc8); /*行扫描顺序:从上到下*/

transfer_command_lcd(0xa0); /*列扫描顺序:从左到右*/

transfer_command_lcd(0x40); /*起始行:第一行开始*/

transfer_command_lcd(0xaf); /*开显示*/

lcd12864_cs1_1();

}

/*全屏清屏*/

void clear_screen()

{

unsigned char i,j;

lcd12864_cs1_0();

rom12864_cs_1();

for(i=0;i<9;i++)

{