逆风hh 2023-05-29 09:04 采纳率: 50%
浏览 140
已结题

中微SC8F6790内置的LCD模块怎么驱动段码屏程序

中微SC8F6790内置的LCD模块怎么驱动段码屏程序,最好用c编写

img

img

img

  • 写回答

9条回答 默认 最新

  • 星空下0516 2023-05-29 14:21
    关注

    你可以这样试试:

    • 第一步,需要设置LCD模块的端口方向。假设使用P1端口,可以使用以下代码设置P1为输出端口:
    P1_DIR |= 0xFF;    // 将P1端口全部设置为输出
    
    • 第二步,需要定义一个数组来存储LCD的字符数据和位置信息:
    uint8_t lcd[4][8] = {
        {0x00, 0x18, 0x24, 0x42, 0x42, 0x24, 0x18, 0x00},  // 第一行数据
        {0x00, 0x18, 0x24, 0x42, 0x42, 0x24, 0x18, 0x00},  // 第二行数据
        {0x00, 0x18, 0x24, 0x42, 0x42, 0x24, 0x18, 0x00},  // 第三行数据
        {0x00, 0x18, 0x24, 0x42, 0x42, 0x24, 0x18, 0x00}   // 第四行数据
    };
    
    // 定义一个变量来存储当前LCD的位置信息
    uint8_t lcd_pos = 0;
    
    • 第三步,需要编写一个函数来显示LCD的字符数据。假设每个字符占用8个像素,可以使用以下代码来显示字符数据:
    void lcd_show() {
        uint8_t i, j;
        for (i = 0; i < 4; i++) {       // 遍历每行数据
            for (j = 0; j < 8; j++) {   // 遍历每个像素点
                if (lcd[i][j] & (1 << lcd_pos)) {     // 判断当前像素点是否需要显示
                    P1 |= 1 << j;   // 设置P1端口对应位置为高电平
                } else {
                    P1 &= ~(1 << j);    // 设置P1端口对应位置为低电平
                }
            }
            // 根据LCD模块的工作方式,在每行数据显示完成后需要延时一定的时间
            delay_ms(1);
        }
        // 更新LCD的位置信息
        lcd_pos++;
        if (lcd_pos >= 8) {
            lcd_pos = 0;
        }
    }
    
    

    最后,在主程序中循环调用lcd_show()函数即可实现LCD的字符数据显示。当然,还需要编写其他辅助函数,如延时函数等,针对你具体的硬件平台进行适配。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(8条)

报告相同问题?

问题事件

  • 系统已结题 6月12日
  • 已采纳回答 6月4日
  • 创建了问题 5月29日