目录
一 前言
二 步骤
(1)倒
(2)抄
(3)转
三 总结
一 前言
我们都知道,在往届蓝桥杯电子赛的比赛试题中,总能碰见在数码管用字母来表示的时候,我摘取部分试题给大家看一下:
所以我们在写蓝桥杯单片机中的数码管底层函数(bsp_seg.c)的文件需要添加相应的字母段码,例如:
case 'A': temp = 0x88; break;
case 'B': temp = 0x83; break;
case 'C': temp = 0xc6; break;
case 'D': temp = 0xa1; break;
case 'E': temp = 0x86; break;
case 'F': temp = 0x8e; break; case 'H': temp = 0x89; break;
case 'L': temp = 0xc7; break;
case 'N': temp = 0xc8; break;
case 'P': temp = 0x8c; break;
case 'U': temp = 0xc1; break;
如果大家硬要背诵的话,可能会十分的困难,所以我自己思考了一下如何快速记忆这些段码的方法,需要大家稍微的动脑写一下
要在此声明一下:因为比赛的时候,他会给提供共阳极数码管的数字段码,我们不需要记忆0到9的段码,到时候直接复制官方提供的即可~,所以只需要记忆字母的段码
二 步骤
一共三步,倒、抄、转,我们就称他为数码管的三段式吧,现在我们以'L',这个字母来举例
如果我想显示的话,所以我需要让fed亮,只有让fed三段亮才能显示L
由于这是一个共阳极的数码管,也就是说只有让对应的值等于0才能让段亮,0表示亮,1表示灭
(1)倒
我们都知道数码管的段码是由a、b、c、d、e、f、g、dp八个段组成的,首先我们需要把这些段倒着写出来,也就是写成如下三段式,然后再将abcefg填成1,剩下的填零
倒 | dp | g | f | e | d | c | b | a |
抄 | ||||||||
转 |
(2)抄
把对应的值抄到下面:
倒 | dp | g | f | e | d | c | b | a |
抄 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 |
转 |
(3)转
随后,四个四个数看,前四个为一组,后四个为一组,将四个数根据8421BCD码转化成十六进制的数即可~
倒 | dp | g | f | e | d | c | b | a |
抄 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 1 |
转 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 1 |
上面前面四个数这个1100,对应的十进制数是12,十六进制则是C
后面四个数0111,对应的十进制数是7,十六进制则是7
最后将得到的这两个数进行合并,成为0xC7,0xC7就是L的段码
三 总结
(1)先按abcdefgdp倒着写
(2)再把你想要得到的字母放到数码管中,亮是0,灭是1,抄到四段式的第一行
(3)将得到的数四个四个转化成十六进制数