找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4585|回复: 0
收起左侧

STM8L驱动ST7567A-12864LCD屏

[复制链接]
ID:491448 发表于 2019-3-15 14:39 | 显示全部楼层 |阅读模式
这几天搞了一个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

1.59 MB, 下载次数: 84, 下载积分: 黑币 -5

驱动芯片datasheet

字模提取V21.rar

256.05 KB, 下载次数: 42, 下载积分: 黑币 -5

取模软件

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表