本帖最后由 gaoyang9992006 于 2022-12-1 18:59 编辑
#申请原创# @21小跑堂
根据开发板与LCD的连接关系,似乎没有明显的规律,对于取码操作就很头大了。今日有幸得见一款软件用于配置LCD段码屏的
于是乎得到了启发,制作一个自动映射LCD与MCU端口配置到显示数据寄存器的工具,这样就可以方便实用LCD外设了,无论与屏幕怎么连接,只要我们在工具中给出简单的连接关系对照表,即可取任意图形对应的显示数据寄存器值。
比如本项目中使用的开发板管脚与LCD映射表如下所示
而每个8段数码管均由4个COM与2个SEG组合而成,如下所示,蓝色为我们要填入的LCD段码屏的针脚编号,红色为查询映射表自动计算出来的MCU内部针脚LCD控制管脚编号,绿色区域为填入的选型占位,比如下图选择了COM0与SEG3对应框填入了1,即表示只显示与其对应的点。也就是小数点位。
例如第一个数码管全部点亮对应的8个寄存器值为
为了方便实用该工具,我已将8段数码管的0到F,以及小数点共计17个图形的占位框做好。如下所示:
然后我们轻松查表即可获取想要的显示内容对应的寄存器值,将寄存器值装入数组即可方便调用。
以下是用该方法获取的段码显示表,同步显示0到F字符效果。
int main(void)
{
int i=0,x1,x2,x3,x4;
BOARD_Init();
app_slcd_init();
x1=0;
x2=1;
x3=2;
x4=3;
while (1)
{
for(i=0;i<17;i++)
{
// COM0
BOARD_SLCD_PORT->DR0 =TAB[x1][i][0]|TAB[x2][i][0]|TAB[x3][i][0]|TAB[x4][i][0];
BOARD_SLCD_PORT->DR1 =TAB[x1][i][1]|TAB[x2][i][1]|TAB[x3][i][1]|TAB[x4][i][1];
// COM1
BOARD_SLCD_PORT->DR2 =TAB[x1][i][2]|TAB[x2][i][2]|TAB[x3][i][2]|TAB[x4][i][2];
BOARD_SLCD_PORT->DR3 =TAB[x1][i][3]|TAB[x2][i][3]|TAB[x3][i][3]|TAB[x4][i][3];
// COM2
BOARD_SLCD_PORT->DR4 =TAB[x1][i][4]|TAB[x2][i][4]|TAB[x3][i][4]|TAB[x4][i][4];
BOARD_SLCD_PORT->DR5 =TAB[x1][i][5]|TAB[x2][i][5]|TAB[x3][i][5]|TAB[x4][i][5];
// COM3
BOARD_SLCD_PORT->DR6 =TAB[x1][i][6]|TAB[x2][i][6]|TAB[x3][i][6]|TAB[x4][i][6];
BOARD_SLCD_PORT->DR7 =TAB[x1][i][7]|TAB[x2][i][7]|TAB[x3][i][7]|TAB[x4][i][7];
app_delay(200u);
}
}
}
这个方法非常不错,无论怎么修改LCD屏与MCU针脚的对应都能快速查找到对应的显示寄存器值。希望可以起到抛砖引玉的作用,谁还有更好的方法没?
|