📄 xg12864p-10.c
字号:
/*************************************************************************
Module name : XG12864P-10(128*64 dots)
written by : Feng Zuhua(Frank.Fon)
E-mail : zuhua2008@126.com
Date : 2008-04-21
Driver IC : ST7565P
interface : 8080 for 8 bis
************************************************************************/
#include<reg52.h>
#include<intrins.h>
#include<Pic.C> //1100
#define VC_ON 0x2C //1010
#define VR_ON 0x2A
#define VF_ON 0x29 //1001
#define NOP _nop_();_nop_();_nop_();_nop_()
#define data P3
sbit CS = P1^0;
sbit RES = P1^1;
sbit RS = P1^2;
sbit RW = P1^3;
sbit Read = P1^4;
/******************************delay time***********************************/
void delay_ms(unsigned int ms)
{
unsigned int n ;
while(ms--)
{
n = 86;
while(n--);
}
}
/****************************reset IC for start****************************/
void LCD_Reset()
{
IE = 0x00;
RES = 0;
delay_ms(50);
RES = 1;
delay_ms(50);
}
/*******************************write data to IC**************************/
void w_dat(unsigned char dat)
{
data = dat;
NOP;
RS = 1;
RW = 0;
Read = 1;
NOP;
CS = 1;
_nop_();
CS = 0;
}
/******************************write Command to IC***********************/
void w_cmd(unsigned char cmd)
{
data = cmd;
NOP;
RS = 0;
RW = 0;
Read = 1;
NOP;
CS = 1;
_nop_();
CS = 0;
}
/***************************display picture *****************************/
void Display(unsigned char *p)
{
unsigned char page,column;
for(page=0xB7;page>=0xB0;page--)
{
w_cmd(page); //set page address
w_cmd(0x10); //set Column address MSB
w_cmd(0x00); //set column address LSB
for(column=0;column<128;column++)
{
w_dat(*p++);
}
}
}
void Display_fill(unsigned char fill)
{
unsigned char page,column;
for(page=0xB7;page>=0xB0;page--)
{
w_cmd(page); //set page address
w_cmd(0x10); //set Column address MSB
w_cmd(0x00); //set column address LSB
for(column=0;column<128;column++)
{
w_dat(fill);
}
}
}
void Grid_white()
{
unsigned char page,column;
for(page=0xB7;page>=0xB0;page--)
{
w_cmd(page);
w_cmd(0x10);
w_cmd(0x00);
for(column=0;column<64;column++)
{
w_dat(0xFF);
w_dat(0x00);
}
}
}
void Grid_Black()
{
unsigned char page,column;
for(page=0xB7;page>=0xB0;page--)
{
w_cmd(page);
w_cmd(0x10);
w_cmd(0x00);
for(column=0;column<64;column++)
{
w_dat(0x00);
w_dat(0xFF);
}
}
}
void Grid_Line1()
{
unsigned char page,column;
for(page=0xB7;page>=0xB0;page--)
{
w_cmd(page);
w_cmd(0x10);
w_cmd(0x00);
for(column=0;column<128;column++)
{
w_dat(0xAA);
}
}
}
void Grid_Line2()
{
unsigned char page,column;
for(page=0xB7;page>=0xB0;page--)
{
w_cmd(page);
w_cmd(0x10);
w_cmd(0x00);
for(column=0;column<128;column++)
{
w_dat(0x55);
}
}
}
void Init_IC()
{
CS = 0;
P3 = 0xFF;
LCD_Reset();
w_cmd(0xA2); //LCD Bias selection(1/65 Duty,1/9Bias)
w_cmd(0xA0); //ADC selection(SEG0->SEG128)
w_cmd(0xC0); //SHL selection(COM0->COM64)
w_cmd(0x26); //Regulator Resistor Selection
delay_ms(5);
w_cmd(0x81); //Electronic Volume
w_cmd(0x3f); //Reference Register selection Vo=(1+Rb/Ra)(1+a)*2.1=10
w_cmd(VC_ON); //Power Control(Vc=1;Vr=0;Vf=0)
delay_ms(10);
w_cmd(VC_ON|VR_ON);
delay_ms(10);
w_cmd(VC_ON|VR_ON|VF_ON);
delay_ms(10);
w_cmd(0xF8);
w_cmd(0x00);
delay_ms(5);
w_cmd(0xAF); //Display on
}
void main()
{
while(1)
{
Init_IC();
Display_fill(0xFF);
delay_ms(1000);
Grid_white();
delay_ms(1000);
Grid_Black();
delay_ms(1000);
Grid_Line1();
delay_ms(1000);
Grid_Line2();
delay_ms(1000);
Display_fill(0x00);
delay_ms(5); ;
Display(deep);
delay_ms(3000);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -