打印
[学习笔记]

【杰发科技AC7802x测评】+驱动LED液晶屏进行显示

[复制链接]
527|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
一.前言
接上回,测试完IO的程序后,准备驱动手头现有的液晶进行显示。
使用IO模拟SPI驱动液晶屏的芯片 ST7567A,进行显示。
把屏幕通过杜邦线和开发板相连接,使用板上的电源给屏幕供电。
二.初始化相关IO口和屏幕驱动
        GPIO_SetFunc(GPIOB, GPIO_PIN0, GPIO_FUN0);/*功能复用选择.*/
    GPIO_SetFunc(GPIOA, GPIO_PIN0, GPIO_FUN0);
        GPIO_SetFunc(GPIOA, GPIO_PIN1, GPIO_FUN0);
        GPIO_SetFunc(GPIOA, GPIO_PIN9, GPIO_FUN0);
        GPIO_SetFunc(GPIOB, GPIO_PIN6, GPIO_FUN0);//液晶驱动IO初始化
        GPIO_SetDir(GPIOB, GPIO_PIN0, GPIO_OUT);
        GPIO_SetDir(GPIOA, GPIO_PIN0, GPIO_OUT);
        GPIO_SetDir(GPIOA, GPIO_PIN1, GPIO_OUT);
        GPIO_SetDir(GPIOA, GPIO_PIN9, GPIO_OUT);
        GPIO_SetDir(GPIOB, GPIO_PIN6, GPIO_OUT);//液晶驱动IO初始化
#define LEDCS_UP         do{GPIO_SetPinLevel(GPIOB, GPIO_PIN0, GPIO_LEVEL_HIGH);}while(0)                                        // write 1  PB0
#define LEDCS_DOWN       do{GPIO_SetPinLevel(GPIOB, GPIO_PIN0, GPIO_LEVEL_LOW);}while(0)                                        // write 0
#define LEDRST_UP        do{GPIO_SetPinLevel(GPIOA, GPIO_PIN0, GPIO_LEVEL_HIGH);}while(0)                                        // write 1        PA0
#define LEDRST_DOWN      do{GPIO_SetPinLevel(GPIOA, GPIO_PIN0, GPIO_LEVEL_LOW);}while(0)                                           // write 0
#define LEDRS_UP         do{GPIO_SetPinLevel(GPIOA, GPIO_PIN1, GPIO_LEVEL_HIGH);}while(0)                                          // write 1  PA1
#define LEDRS_DOWN       do{GPIO_SetPinLevel(GPIOA, GPIO_PIN1, GPIO_LEVEL_LOW);}while(0)                                          // write 0
#define LEDSCK_UP        do{GPIO_SetPinLevel(GPIOA, GPIO_PIN9, GPIO_LEVEL_HIGH);}while(0)                                          // write 1  PA9
#define LEDSCK_DOWN      do{GPIO_SetPinLevel(GPIOA, GPIO_PIN9, GPIO_LEVEL_LOW);}while(0)                                         // write 0
#define LEDSDA_UP        do{GPIO_SetPinLevel(GPIOB, GPIO_PIN6, GPIO_LEVEL_HIGH);}while(0)                                         // write 1  PB6
#define LEDSDA_DOWN      do{GPIO_SetPinLevel(GPIOB, GPIO_PIN6, GPIO_LEVEL_LOW);}while(0)                                         // write 0
void transfer_command(int data1)
{
    char i;
    LEDCS_DOWN;                                                                                                                                        // cs1=0;
    LEDRS_DOWN;                                                                                                                                        // rs=0;
    for (i=0; i<8; i++)
    {
        LEDSCK_DOWN;                                                                                                                        // sclk=0;
        lcd_delay_us(2);
        if (data1&0x80)
        {
            LEDSDA_UP;                                                                                                            // sid=1;
        }
        else
        {
            LEDSDA_DOWN;                                                                                                                // sid=0;
        }
        LEDSCK_UP;                                                                                                                                // sclk=1;
        lcd_delay_us(2);
        data1 <<= 1;
    }
    LEDCS_UP;                                                                                                                                        // cs1=1;
}
/*写数据到LCD模块*/
void transfer_data(int data1)
{
    char i;
    LEDCS_DOWN;                                                                                                                                        // cs1=0;
    LEDRS_UP;                                                                                                                                        // rs=1;
    for (i=0; i<8; i++)
    {
        LEDSCK_DOWN;                                                                                                                        // sclk=0;
        lcd_delay_us(1);
        if (data1&0x80)
        {
            LEDSDA_UP;                                                                                                            // sid=1;
        }
        else
        {
            LEDSDA_DOWN;                                                                                                                // sid=0;
        }
        LEDSCK_UP;                                                                                                                                // sclk=1;
        lcd_delay_us(1);
        data1 <<= 1;
    }
    LEDCS_UP;                                                                                                                                        // cs1=1;
}
/*LCD模块初始化*/
void Init_Lcd(void)
{
    //DISPLAY_ON;
    lcd_delay(100);
    F_Inverse = 0;
          LEDRST_DOWN;                                                                                                                                // reset=0; /*低电平复位*/
    lcd_delay(100);
    LEDRST_UP;                                                                                                                                        // reset=1; /*复位完毕*/
    lcd_delay(100);
    transfer_command(0xe2);                                                                                                         /*软复位*/
    lcd_delay(5);
    transfer_command(0x2c);                                                                                                         /*升压步聚1*/
    lcd_delay(5);
    transfer_command(0x2e);                                                                                                         /*升压步聚2*/
    lcd_delay(5);
    transfer_command(0x2f);                                                                                                         /*升压步聚3*/
    lcd_delay(5);
    transfer_command(0x24);                                                                                                         /*粗调对比度,可设置范围0x200x27*/
    transfer_command(0x81);                                                                                                         /*微调对比度*/
    transfer_command(0x1C);                                                                                                         /*0x1b,微调对比度的值,可设置范围0x000x3f*/
    transfer_command(0xa2);                                                                                                         /*1/9偏压比(bias*/
    transfer_command(0xc0);                                                                                                         /*行扫描顺序:从上到下C8 C0反方向*/
    transfer_command(0xa1);                                                                                                         /*列扫描顺序:从左到右A0 A1反方向*/
    transfer_command(0x40);                                                                                                         /*起始行:第一行开始*/
    transfer_command(0xaf);                                                                                                         /*开显示*/
}
三.屏幕显示展示
把程序更新到开发板,进行验证。

显示杰发科技。

接下来准备使用ADC功能采集芯片内的温度传感器进行显示。


使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1171

主题

5128

帖子

12

粉丝