|
這幾天搞了一個LCD屏,供應商給的代碼賊多問題,自己調通了。驅動粘貼出來。
#define A0_UP GPIO_SetBits(GPIOC,GPIO_Pin_0)
#define A0_DOWN GPIO_ResetBits(GPIOC,GPIO_Pin_0)
#define CS_UP GPIO_SetBits(GPIOB,GPIO_Pin_4)
#define CS_DOWN GPIO_ResetBits(GPIOB,GPIO_Pin_4)
#define RST_UP GPIO_SetBits(GPIOB,GPIO_Pin_7)
#define RST_DOWN GPIO_ResetBits(GPIOB,GPIO_Pin_7)
#define SCLK_UP GPIO_SetBits(GPIOB,GPIO_Pin_5)
#define SCLK_DOWN GPIO_ResetBits(GPIOB,GPIO_Pin_5)
#define SDA_UP GPIO_SetBits(GPIOB,GPIO_Pin_6)
#define SDA_DOWN GPIO_ResetBits(GPIOB,GPIO_Pin_6)
/*
********************************************************************************
* 內部靜態函數定義
********************************************************************************
*/
/*
********************************************************************************
* 全局函數定義
********************************************************************************
*/
/******************************************************************************
* 名 稱: delay_us
* 功 能:
* 入口參數: 無
* 出口參數: 無
*******************************************************************************/
void delay_us(char us_value) //delay about 1 us
{
while(us_value--)
{
nop();
nop();
nop();
}
}
/******************************************************************************
* 名 稱: delay_ms
* 功 能:
* 入口參數: 無
* 出口參數: 無
*******************************************************************************/
void delay_ms(int ms_value) //delay about 1 ms
{
int k;
for(k=0;k<ms_value;k++)
{
delay_us(200);
}
}
/******************************************************************************
* 名 稱: delay_ms
* 功 能:
* 入口參數: 無
* 出口參數: 無
*******************************************************************************/
void wr_cmd(char x)
{
unsigned char ii,DA;
SCLK_DOWN;
CS_DOWN;
nop();
A0_DOWN;
DA=x;
for(ii=0;ii<8;ii++)
{
if((DA&0x80)==0x80)
SDA_UP;
else SDA_DOWN;
SCLK_UP;
nop();nop();nop();nop();
SCLK_DOWN;
DA=DA<<1;
}
CS_UP;
nop();
}
/******************************************************************************
* 名 稱: wr_data
* 功 能:
* 入口參數: 無
* 出口參數: 無
*******************************************************************************/
void wr_data(unsigned char x)
{
unsigned char ii,DA;
SCLK_DOWN;
CS_DOWN;nop();
A0_UP;
DA=x;
for(ii=0;ii<8;ii++)
{
if((DA&0x80)==0x80)
SDA_UP;
else SDA_DOWN;
SCLK_UP;
nop();nop();nop();nop();
SCLK_DOWN;
DA=DA<<1;
}
CS_UP;nop();
}
/******************************************************************************
* 名 稱: 初始化LCD
* 功 能: 初始化IO口
* 入口參數: 無
* 出口參數: 無
*******************************************************************************/
void lcd_init(void)
{
GPIO_Init(GPIOB,GPIO_Pin_7,GPIO_Mode_Out_PP_Low_Fast);
GPIO_Init(GPIOB,GPIO_Pin_6,GPIO_Mode_Out_PP_Low_Fast);
GPIO_Init(GPIOB,GPIO_Pin_5,GPIO_Mode_Out_PP_Low_Fast);
GPIO_Init(GPIOB,GPIO_Pin_4,GPIO_Mode_Out_PP_Low_Fast);
GPIO_Init(GPIOC,GPIO_Pin_0,GPIO_Mode_Out_PP_Low_Fast);
GPIO_Init(GPIOC,GPIO_Pin_1,GPIO_Mode_Out_PP_Low_Fast);
RST_UP;
delay_ms(10);
RST_DOWN;
delay_ms(50);
RST_UP;
delay_ms(10);
wr_cmd(0xe3);
wr_cmd(0xA2);
wr_cmd(0xA0);
wr_cmd(0xc8);
wr_cmd(0x2c);
wr_cmd(0x2e);
wr_cmd(0x2F);
wr_cmd(0X25);//對比度微調
wr_cmd(0x81);
wr_cmd(constr);
wr_cmd(0xAF);
wr_cmd(0x40);
delay_ms(10);
}
/******************************************************************************
* 名 稱: disp_panxl
* 功 能:
* 入口參數: 無
* 出口參數: 無
*******************************************************************************/
void disp_panxl(unsigned char dat1,unsigned char dat2)
{
unsigned char ii,jj;
wr_cmd(0x40);
for(ii=0;ii<4;ii++)
{
wr_cmd(SBP+ii);
wr_cmd(0x10);
wr_cmd(0x00+QSS);
for(jj=0;jj<64;jj++)
{
wr_data(dat1);
wr_data(dat2);
}
}
for(ii=0;ii<4;ii++)
{
wr_cmd(XBP+ii);
wr_cmd(0x10);
wr_cmd(0x00+QSS);
for(jj=0;jj<64;jj++)
{
wr_data(dat1);
wr_data(dat2);
}
}
}
/******************************************************************************
* 名 稱: clr_screen
* 功 能:
* 入口參數: 無
* 出口參數: 無
*******************************************************************************/
void clr_screen(void)
{
disp_panxl(0x00,0x00);
}
/******************************************************************************
* 名 稱: Draw_panxel
* 功 能:
* 入口參數: 無
* 出口參數: 無
*******************************************************************************/
void Draw_panxel(uint8_t start_Row,uint8_t start_COL_H,uint8_t start_COL_L,const unsigned char * data)
{
unsigned char jj,col;
uint8_t draw[64];
memcpy_user(draw,data,64);
for(col = 0;col < 4;col ++)
{
wr_cmd(start_Row+col);
wr_cmd(start_COL_H);
wr_cmd(start_COL_L);
for(jj =0;jj<16;jj++)
{
wr_data(draw[jj+ col*16]);
}
}
}
|
-
-
ST7567A_V1.1.pdf
2019-3-15 14:38 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
1.59 MB, 下載次數: 86, 下載積分: 黑幣 -5
驅動芯片datasheet
-
-
字模提取V21.rar
2019-3-15 14:38 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
256.05 KB, 下載次數: 44, 下載積分: 黑幣 -5
取模軟件
評分
-
查看全部評分
|