12232 LCM Driver
文章目录
自己写的12232LCM模块的驱动代码,实现了基本的功能。
//==============================================================
//12232.h
//==============================================================
#ifndef __12232Driver_H
#define __12232Driver_H
void LCD_Init(void);
void LCD_Reset(void);
void LCD_FillAll(void);
void LCD_ClearAll(void);
void LCD_WriteCmd(unsigned char cmd);
void LCD_WriteCmd1(unsigned char cmd);
void LCD_WriteCmd2(unsigned char cmd);
void LCD_SetColumn(unsigned char column);
void LCD_SetColumn1(unsigned char column);
void LCD_SetColumn2(unsigned char column);
void LCD_SetPage(unsigned char page);
void LCD_SetPage1(unsigned char page);
void LCD_SetPage2(unsigned char page);
void LCD_WriteData(unsigned char d);
void LCD_WriteData1(unsigned char d);
void LCD_WriteData2(unsigned char d);
unsigned char LCD_ReadData1(void);
unsigned char LCD_ReadData2(void);
#endif
//==============================================================
//12232Driver.c
//==============================================================
#include
#include "12232Driver.h"
//#include
sbit E1=P3^4;
sbit E2=P3^5;
sbit A0=P3^7;
sbit RST=P3^2;
sbit RW=P3^6;
#define LCD_DISPLAY_ON 0xAF
#define LCD_DISPLAY_OFF 0xAE
#define LCD_START_LINE_0 0xC0 //Set Start Line 0
#define LCD_DRIVER_NORMAL 0xA4 //Normal display operation
#define LCD_DRIVER_STATIC 0xA5 //Power Save
#define LCD_DUTY_32 0xA9
#define LCD_DUTY_16 0xA8
#define LCD_RIGHTWARD_OUTPUT 0xA0
#define LCD_LEFTWARD_OUTPUT 0xA1
#define LCD_RESET 0xE3
#define LCD_PAGE_0 0xB8
#define LCD_RMW 0xE0
#define LCD_END 0xEE
#define uchar unsigned char
//LCD Controller Display and Control Functions
void LCD_Init(void)
{
//E1=0;
//E2=0;
//Reset
RST=0;
RST=1;
LCD_WriteCmd(LCD_DISPLAY_ON); //Display On
LCD_WriteCmd(LCD_START_LINE_0); //Start = 0
LCD_WriteCmd(LCD_DRIVER_NORMAL); //Driver
LCD_WriteCmd(LCD_DUTY_32); //Duty 32
LCD_WriteCmd(LCD_RIGHTWARD_OUTPUT); //ADC
LCD_WriteCmd(LCD_RESET); //Reset
LCD_Reset();
}
void LCD_Reset(void)
{
LCD_WriteCmd(LCD_RESET);
}
void LCD_FillAll(void)
{
uchar page,y;
LCD_WriteCmd(LCD_RMW);
for(page=0;page<4;page++)
{
LCD_SetPage(page);
LCD_SetColumn(0);
for(y=0;y<61;y++)
{
LCD_WriteData(0xFF);
}
LCD_WriteCmd(LCD_END);
}
}
void LCD_ClearAll(void)
{
uchar page,y;
LCD_WriteCmd(LCD_RMW);
for(page=0;page<4;page++)
{
LCD_SetPage(page);
LCD_SetColumn(0);
for(y=0;y<61;y++)
{
LCD_WriteData(0);
}
LCD_WriteCmd(LCD_END);
}
}
void LCD_WriteCmd(unsigned char cmd)
{
LCD_WriteCmd1(cmd);
LCD_WriteCmd2(cmd);
return;
}
void LCD_WriteCmd1(unsigned char cmd)
{
RW=0;
E1=0;
A0=0;
P1=cmd;
E1=1;
E1=0;
return;
}
void LCD_WriteCmd2(unsigned char cmd)
{
RW=0;
E2=0;
A0=0;
P1=cmd;
E2=1;
E2=0;
return;
}
void LCD_WriteData(unsigned char d)
{
LCD_WriteData1(d);
LCD_WriteData2(d);
return ;
}
void LCD_WriteData1(unsigned char d)
{
RW=0;
E1=0;
A0=1;
P1=d;
E1=1;
E1=0;
return;
}
void LCD_WriteData2(unsigned char d)
{
RW=0;
E2=0;
A0=1;
P1=d;
E2=1;
E2=0;
return;
}
void LCD_SetColumn(unsigned char d)
{
LCD_SetColumn1(d);
LCD_SetColumn2(d);
return;
}
void LCD_SetColumn1(unsigned char d)
{
LCD_WriteCmd1(d);
return;
}
void LCD_SetColumn2(unsigned char d)
{
LCD_WriteCmd2(d);
return;
}
void LCD_SetPage(unsigned char page)
{
LCD_SetPage1(page);
LCD_SetPage2(page);
return;
}
void LCD_SetPage1(unsigned char page)
{
page=page%4;
LCD_WriteCmd1(LCD_PAGE_0+page); //0x5C
return;
}
void LCD_SetPage2(unsigned char page)
{
page=page%4;
LCD_WriteCmd2(LCD_PAGE_0+page); //0x5C
return;
}
unsigned char LCD_ReadData1(void)
{
unsigned char d=0;
RW=1;
E1=0;
A0=1;
P1=0xFF;
E1=1;
d=P1;
E1=0;
return d;
}
unsigned char LCD_ReadData2(void)
{
unsigned char d=0;
RW=1;
自己写的12232LCM模块的驱动代码,实现了基本的功能。
//==============================================================
//12232.h
//==============================================================
#ifndef __12232Driver_H
#define __12232Driver_H
void LCD_Init(void);
void LCD_Reset(void);
void LCD_FillAll(void);
void LCD_ClearAll(void);
void LCD_WriteCmd(unsigned char cmd);
void LCD_WriteCmd1(unsigned char cmd);
void LCD_WriteCmd2(unsigned char cmd);
void LCD_SetColumn(unsigned char column);
void LCD_SetColumn1(unsigned char column);
void LCD_SetColumn2(unsigned char column);
void LCD_SetPage(unsigned char page);
void LCD_SetPage1(unsigned char page);
void LCD_SetPage2(unsigned char page);
void LCD_WriteData(unsigned char d);
void LCD_WriteData1(unsigned char d);
void LCD_WriteData2(unsigned char d);
unsigned char LCD_ReadData1(void);
unsigned char LCD_ReadData2(void);
#endif
//==============================================================
//12232Driver.c
//==============================================================
#include
#include "12232Driver.h"
//#include
sbit E1=P3^4;
sbit E2=P3^5;
sbit A0=P3^7;
sbit RST=P3^2;
sbit RW=P3^6;
#define LCD_DISPLAY_ON 0xAF
#define LCD_DISPLAY_OFF 0xAE
#define LCD_START_LINE_0 0xC0 //Set Start Line 0
#define LCD_DRIVER_NORMAL 0xA4 //Normal display operation
#define LCD_DRIVER_STATIC 0xA5 //Power Save
#define LCD_DUTY_32 0xA9
#define LCD_DUTY_16 0xA8
#define LCD_RIGHTWARD_OUTPUT 0xA0
#define LCD_LEFTWARD_OUTPUT 0xA1
#define LCD_RESET 0xE3
#define LCD_PAGE_0 0xB8
#define LCD_RMW 0xE0
#define LCD_END 0xEE
#define uchar unsigned char
//LCD Controller Display and Control Functions
void LCD_Init(void)
{
//E1=0;
//E2=0;
//Reset
RST=0;
RST=1;
LCD_WriteCmd(LCD_DISPLAY_ON); //Display On
LCD_WriteCmd(LCD_START_LINE_0); //Start = 0
LCD_WriteCmd(LCD_DRIVER_NORMAL); //Driver
LCD_WriteCmd(LCD_DUTY_32); //Duty 32
LCD_WriteCmd(LCD_RIGHTWARD_OUTPUT); //ADC
LCD_WriteCmd(LCD_RESET); //Reset
LCD_Reset();
}
void LCD_Reset(void)
{
LCD_WriteCmd(LCD_RESET);
}
void LCD_FillAll(void)
{
uchar page,y;
LCD_WriteCmd(LCD_RMW);
for(page=0;page<4;page++)
{
LCD_SetPage(page);
LCD_SetColumn(0);
for(y=0;y<61;y++)
{
LCD_WriteData(0xFF);
}
LCD_WriteCmd(LCD_END);
}
}
void LCD_ClearAll(void)
{
uchar page,y;
LCD_WriteCmd(LCD_RMW);
for(page=0;page<4;page++)
{
LCD_SetPage(page);
LCD_SetColumn(0);
for(y=0;y<61;y++)
{
LCD_WriteData(0);
}
LCD_WriteCmd(LCD_END);
}
}
void LCD_WriteCmd(unsigned char cmd)
{
LCD_WriteCmd1(cmd);
LCD_WriteCmd2(cmd);
return;
}
void LCD_WriteCmd1(unsigned char cmd)
{
RW=0;
E1=0;
A0=0;
P1=cmd;
E1=1;
E1=0;
return;
}
void LCD_WriteCmd2(unsigned char cmd)
{
RW=0;
E2=0;
A0=0;
P1=cmd;
E2=1;
E2=0;
return;
}
void LCD_WriteData(unsigned char d)
{
LCD_WriteData1(d);
LCD_WriteData2(d);
return ;
}
void LCD_WriteData1(unsigned char d)
{
RW=0;
E1=0;
A0=1;
P1=d;
E1=1;
E1=0;
return;
}
void LCD_WriteData2(unsigned char d)
{
RW=0;
E2=0;
A0=1;
P1=d;
E2=1;
E2=0;
return;
}
void LCD_SetColumn(unsigned char d)
{
LCD_SetColumn1(d);
LCD_SetColumn2(d);
return;
}
void LCD_SetColumn1(unsigned char d)
{
LCD_WriteCmd1(d);
return;
}
void LCD_SetColumn2(unsigned char d)
{
LCD_WriteCmd2(d);
return;
}
void LCD_SetPage(unsigned char page)
{
LCD_SetPage1(page);
LCD_SetPage2(page);
return;
}
void LCD_SetPage1(unsigned char page)
{
page=page%4;
LCD_WriteCmd1(LCD_PAGE_0+page); //0x5C
return;
}
void LCD_SetPage2(unsigned char page)
{
page=page%4;
LCD_WriteCmd2(LCD_PAGE_0+page); //0x5C
return;
}
unsigned char LCD_ReadData1(void)
{
unsigned char d=0;
RW=1;
E1=0;
A0=1;
P1=0xFF;
E1=1;
d=P1;
E1=0;
return d;
}
unsigned char LCD_ReadData2(void)
{
unsigned char d=0;
RW=1;
E2=0;
A0=1;
P1=0xFF;
E2=1;
d=P1;
E2=0;
return d;
}
E2=0;
A0=1;
P1=0xFF;
E2=1;
d=P1;
E2=0;
return d;
}
文章作者 贺思聪
上次更新 2006-10-30
许可协议 未经原作者许可禁止转载