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++)
{