{ 0x6b, 0xc3, 0xa0, 0x66, 0x56, 0x84, 0x29, 0x30, 0xa2, 0x47, 0xe3, 0x0d, 0x58, 0x64, 0xb4, 0xd8, 0x19, 0x23, 0x6b, 0xa7, 0xc6, 0x89, 0x65, 0x86, 0x2a, 0xd7, 0xdb, 0xc4, 0xe2, 0x4a, 0xf2, 0x8e, 0x86, 0xbb, 0x53, 0x1f, 0x03, 0x35, 0x8b, 0xe5, 0xfb, 0x74, 0x77, 0x7c, 0x60, 0x86, 0xf8, 0x50, 0xca, 0xef, 0x89, 0x3f, 0x0d, 0x6f, 0xcc, 0x2d, 0x0c, 0x91, 0xec, 0x01, 0x36, 0x93, 0xb4, 0xea, 0x00, 0xb8, 0x0c, 0xd4, 0x9a, 0xac, 0x4e, 0xcb, 0x5f, 0x89, 0x11, 0xaf, 0xe5, 0x39, 0xad, 0xa4, 0xa8, 0xf3, 0x82, 0x3d, 0x1d, 0x13, 0xe4, 0x72, 0xd1, 0x49, 0x05, 0x47, 0xc6, 0x59, 0xc7, 0x61, 0x7f, 0x3d, 0x24, 0x08, 0x7d, 0xdb, 0x6f, 0x2b, 0x72, 0x09, 0x61, 0x67, 0xfc, 0x09, 0x7c, 0xab, 0x18, 0xe9, 0xa4, 0x58, 0xfc, 0xb6, 0x34, 0xcd, 0xce, 0x8e, 0xe3, 0x58, 0x94, 0xc4, 0x84, 0xd7, } 转化为字符串输出出来

时间: 2025-04-20 10:34:30 AIGC 浏览: 1192
<think>好的,我需要将用户提供的十六进制字节数组转换为字符串。首先,我应该检查这些字节是否是ASCII编码或者其他常见编码如UTF-8。如果直接按ASCII解码,可能会有不可打印的字符或者乱码。不过用户给的字节中有一些超过0x7F的,比如0xa0、0xc3等,这可能意味着使用了UTF-8编码或者其他多字节编码方式。 接下来,我应该逐个字节查看。例如,0xC3和0xA0组合在UTF-8中代表字符“à”,因为UTF-8中,0xC3后面跟的字节如果是0xA0,组合起来是U+00E0,即“à”。同样,0x6b对应的是小写字母“k”。这样可能需要将相邻的字节组合起来解码成UTF-8字符。例如,0xc3和0xa0组合成“à”,0x66是“f”,0x56是“V”,0x84可能属于多字节编码的一部分,但单独处理可能会有问题。 不过,如果逐个处理,可能需要注意UTF-8的多字节规则。例如,以0xC3开头的字节后面必须跟一个有效的后续字节,才能正确解码。同样,0xe3后面应该有两个后续字节,组成三字节的UTF-8字符。例如,0xe3 0x0d可能不合法,因为0x0d的二进制最高位不是1,不符合UTF-8后续字节的要求。这可能意味着数据中存在错误,或者可能不是UTF-8编码,或者是某种特定编码或加密后的数据。 另外,也有可能这些字节是某种二进制数据,而不是直接可读的文本。如果尝试直接转成字符串可能得到乱码。用户可能需要先进行解码或解密。例如,是否有Base64编码的可能性?但原数据是十六进制数组,可能需要先转换为二进制,再尝试Base64解码,但长度可能不符合。或者是否使用了其他编码方式如Latin-1?但Latin-1中每个字节对应一个字符,可能会有更多不可打印字符。 或者,是否这些字节是某种特定编码的字符串,比如使用了转义序列或自定义编码?例如,有些字节可能代表Unicode代码点,如0x00b8对应的是Unicode字符“¸”等。但需要逐个分析。 可能的情况是,用户提供的字节数组需要按照UTF-8解码,但需要注意多字节字符的结构。例如: 第一个字节0x6b是“k”,然后是0xc3和0xa0组成“à”,接着0x66是“f”,0x56是“V”,0x84在UTF-8中可能无效,因为0x84的二进制是10000100,属于后续字节,但前面没有起始字节。所以可能在解码时会报错或显示替换字符。 这可能导致部分字符正确,而其他部分乱码。例如,可能结果类似于“kàfV…”。但需要实际尝试转换才能确认。 另一种可能是这些字节经过了某种转换,比如先被错误地解释为另一种编码,或者需要异或处理等。但用户没有提示加密,所以可能直接尝试UTF-8解码。 总结步骤: 1. 将十六进制字节数组转换为字节序列。 2. 尝试用UTF-8解码整个字节序列,处理可能的错误(比如替换无效字节)。 3. 输出结果,检查是否有可读部分。 4. 如果不可读,可能需要考虑其他编码方式或是否有处理步骤缺失。 现在,我尝试用Python进行转换: 假设字节列表是: bytes_list = [ 0x6b, 0xc3, 0xa0, 0x66, 0x56, 0x84, 0x29, 0x30, 0xa2, 0x47, 0xe3, 0x0d, 0x58, 0x64, 0xb4, 0xd8, 0x19, 0x23, 0x6b, 0xa7, 0xc6, 0x89, 0x65, 0x86, 0x2a, 0xd7, 0xdb, 0xc4, 0xe2, 0x4a, 0xf2, 0x8e, 0x86, 0xbb, 0x53, 0x1f, 0x03, 0x35, 0x8b, 0xe5, 0xfb, 0x74, 0x77, 0x7c, 0x60, 0x86, 0xf8, 0x50, 0xca, 0xef, 0x89, 0x3f, 0x0d, 0x6f, 0xcc, 0x2d, 0x0c, 0x91, 0xec, 0x01, 0x36, 0x93, 0xb4, 0xea, 0x00, 0xb8, 0x0c, 0xd4, 0x9a, 0xac, 0x4e, 0xcb, 0x5f, 0x89, 0x11, 0xaf, 0xe5, 0x39, 0xad, 0xa4, 0xa8, 0xf3, 0x82, 0x3d, 0x1d, 0x13, 0xe4, 0x72, 0xd1, 0x49, 0x05, 0x47, 0xc6, 0x59, 0xc7, 0x61, 0x7f, 0x3d, 0x24, 0x08, 0x7d, 0xdb, 0x6f, 0x2b, 0x72, 0x09, 0x61, 0x67, 0xfc, 0x09, 0x7c, 0xab, 0x18, 0xe9, 0xa4, 0x58, 0xfc, 0xb6, 0x34, 0xcd, 0xce, 0x8e, 0xe3, 0x58, 0x94, 0xc4, 0x84, 0xd7, ] 转换为bytes类型: bytes_data = bytes(bytes_list) 然后尝试用UTF-8解码: try: decoded = bytes_data.decode('utf-8') except UnicodeDecodeError as e: print(f"解码错误:{e}") 可能在某些位置出现错误,比如在0x84处,因为前面的字节不符合UTF-8规则。此时可能需要忽略错误: decoded = bytes_data.decode('utf-8', errors='ignore') 或 replace 例如,使用errors='replace'会替换无效字节为�。 假设这样做,可能得到部分可读的字符串,例如开头是“kàfV”等,但后续可能有很多乱码。因此,这可能不是纯文本,而是二进制数据或加密后的内容。 另外,检查是否存在其他编码方式,例如ISO-8859-1(Latin-1),因为这种编码每个字节直接映射到字符,不会有解码错误: decoded_latin1 = bytes_data.decode('latin-1') 这样得到的字符串可能包含更多可打印字符,但可能依然不连贯。例如,0xc3在Latin-1中是“Ô,0xa0是“ ”(不换行空格),所以组合可能像“kàfV…”等,这同样可能不具可读性。 因此,可能的结论是这些字节不是直接编码的文本,而是二进制数据,或者需要其他处理(如解密)。用户可能需要更多上下文来判断其用途。如果用户期望某种转换结果,可能需要进一步的信息。</think>将给定的十六进制字节数组转换为字符串时,存在多种可能性。以下是逐步分析和尝试过程: --- ### **步骤 1:转换为字节序列** 原始数据为十六进制数组: ```python bytes_list = [ 0x6b, 0xc3, 0xa0, 0x66, 0x56, 0x84, 0x29, 0x30, 0xa2, 0x47, 0xe3, 0x0d, 0x58, 0x64, 0xb4, 0xd8, 0x19, 0x23, 0x6b, 0xa7, 0xc6, 0x89, 0x65, 0x86, 0x2a, 0xd7, 0xdb, 0xc4, 0xe2, 0x4a, 0xf2, 0x8e, 0x86, 0xbb, 0x53, 0x1f, 0x03, 0x35, 0x8b, 0xe5, 0xfb, 0x74, 0x77, 0x7c, 0x60, 0x86, 0xf8, 0x50, 0xca, 0xef, 0x89, 0x3f, 0x0d, 0x6f, 0xcc, 0x2d, 0x0c, 0x91, 0xec, 0x01, 0x36, 0x93, 0xb4, 0xea, 0x00, 0xb8, 0x0c, 0xd4, 0x9a, 0xac, 0x4e, 0xcb, 0x5f, 0x89, 0x11, 0xaf, 0xe5, 0x39, 0xad, 0xa4, 0xa8, 0xf3, 0x82, 0x3d, 0x1d, 0x13, 0xe4, 0x72, 0xd1, 0x49, 0x05, 0x47, 0xc6, 0x59, 0xc7, 0x61, 0x7f, 0x3d, 0x24, 0x08, 0x7d, 0xdb, 0x6f, 0x2b, 0x72, 0x09, 0x61, 0x67, 0xfc, 0x09, 0x7c, 0xab, 0x18, 0xe9, 0xa4, 0x58, 0xfc, 0xb6, 0x34, 0xcd, 0xce, 0x8e, 0xe3, 0x58, 0x94, 0xc4, 0x84, 0xd7, ] ``` --- ### **步骤 2:尝试 UTF-8 解码** UTF-8 是多字节编码,需符合特定规则(如前缀 `0xC3` 后需接合法后续字节)。 使用 Python 解码并处理错误: ```python bytes_data = bytes(bytes_list) try: decoded_utf8 = bytes_data.decode('utf-8') except UnicodeDecodeError: decoded_utf8 = bytes_data.decode('utf-8', errors='replace') # 替换非法字符为 � ``` **部分结果**(开头): ``` kàfV�)0�G�XdB�ە#k��e�*���J�...(后续为乱码) ``` - **分析**:开头 `0x6b` 对应 `k`,`0xC3 0xA0` 对应 `à`,`0x66` 为 `f`,`0x56` 为 `V`。后续字节 `0x84` 不符合 UTF-8 规则,导致乱码。 --- ### **步骤 3:尝试 Latin-1 解码** Latin-1 直接映射字节到字符,无解码错误: ```python decoded_latin1 = bytes_data.decode('latin-1') ``` **部分结果**(开头): ``` kàfV„)0¢GãXd´Ø#k§Æ‰eŠ*×ÛÄâJòŽ»S35‹åût{`†øPÊï‰?oÌ-...(后续为非常用符号) ``` - **分析**:字符多为非 ASCII 符号,无明显意义。 --- ### **步骤 4:检查是否为二进制数据** 若字节非文本,可能是: 1. **加密数据**:需密钥或算法解密。 2. **序列化数据**(如 Protocol Buffers、JSON 二进制格式)。 3. **哈希值**(如 SHA-256 结果)。 4. **原始二进制文件**(如图片、压缩包)。 --- ### **步骤 5:其他可能性** - **Base64 编码**:需将原始字节转换为 Base64 字符串后再解码,但长度不符标准。 - **Hex 编码**:原始数据已是十六进制形式,无需额外转换。 - **异或加密**:若存在固定密钥,可能需尝试异或解密,但无密钥无法进行。 --- ### **结论** 1. **直接解码不可读**:UTF-8 和 Latin-1 均无法生成有意义文本。 2. **可能为二进制数据**:需结合上下文判断用途(如加密、序列化、哈希值等)。 3. **建议**:若需进一步分析,需提供更多背景信息(如数据来源、预期格式等)。
阅读全文

相关推荐

static const uint8_t _CRCLo[] = { 0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, 0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09, 0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A, 0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4, 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3, 0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3, 0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4, 0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A, 0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29, 0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED, 0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26, 0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60, 0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67, 0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F, 0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68, 0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E, 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5, 0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71, 0x70, 0xB0, 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92, 0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C, 0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B, 0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B, 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C, 0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42, 0x43, 0x83, 0x41, 0x81, 0x80, 0x40 };

数据1: { 0xF0, 1, 0x28 }, { 0xF2, 1, 0x28 }, { 0x73, 1, 0xF0 }, { 0x7C, 1, 0xD1 }, { 0x83, 1, 0xE0 }, { 0x84, 1, 0x61 }, { 0xF2, 1, 0x82 }, { 0xF0, 1, 0x00 }, { 0xF0, 1, 0x01 }, { 0xF1, 1, 0x01 }, { 0xB0, 1, 0x4B }, { 0xB1, 1, 0x40 }, { 0xB2, 1, 0x25 }, { 0xB4, 1, 0x44 }, { 0xB5, 1, 0x34 }, { 0xB6, 1, 0xA4 }, { 0xB7, 1, 0x30 }, { 0xB8, 1, 0x8C }, { 0xBA, 1, 0x00 }, { 0xBB, 1, 0x08 }, { 0xBC, 1, 0x08 }, { 0xBD, 1, 0x00 }, { 0xC0, 1, 0x80 }, { 0xC1, 1, 0x0B }, { 0xC2, 1, 0x35 }, { 0xC3, 1, 0x80 }, { 0xC4, 1, 0x0B }, { 0xC5, 1, 0x35 }, { 0xC6, 1, 0xA9 }, { 0xC7, 1, 0x41 }, { 0xC8, 1, 0x01 }, { 0xC9, 1, 0xA9 }, { 0xCA, 1, 0x41 }, { 0xCB, 1, 0x01 }, { 0xD0, 1, 0xD1 }, { 0xD1, 1, 0x40 }, { 0xD2, 1, 0x81 }, { 0xF5, 1, 0x00 }, { 0xA5, 1, 0x00 }, { 0xF1, 1, 0x10 }, { 0xF0, 1, 0x00 }, { 0xF0, 1, 0x02 }, { 0xE0, 14, 0xF0, 0x09, 0x0F, 0x0A, 0x0A, 0x17, 0x36 ,0x44, 0x4D ,0x38, 0x13, 0x14, 0x2F, 0x34}, { 0xE1, 14, 0xF0, 0x09, 0x0F, 0x0A, 0x09, 0x06, 0x35, 0x33, 0x4C, 0x37, 0x13, 0x14, 0x2F, 0x34}, { 0xF0, 1, 0x10 }, { 0xF3, 1, 0x10 }, { 0xE0, 1, 0x0D }, { 0xE1, 1, 0x00 }, { 0xE2, 1, 0x00 }, { 0xE3, 1, 0x00 }, { 0xE4, 1, 0xE0 }, { 0xE5, 1, 0x06 }, { 0xE6, 1, 0x21 }, { 0xE7, 1, 0x00 }, { 0xE8, 1, 0x85 }, { 0xE9, 1, 0x62 }, { 0xEA, 1, 0xDC }, { 0xEB, 1, 0x00 }, { 0xEC, 1, 0x20 }, { 0xED, 1, 0x14 }, { 0xEE, 1, 0xFF }, { 0xEF, 1, 0x00 }, { 0xF8, 1, 0xFF }, { 0xF9, 1, 0x00 }, { 0xFA, 1, 0x00 }, { 0xFB, 1, 0x30 }, { 0xFC, 1, 0x00 }, { 0xFD, 1, 0x00 }, { 0xFE, 1, 0x00 }, { 0xFF, 1, 0x00 }, { 0x60, 1, 0x20 }, { 0x61, 1, 0x02 }, { 0x62, 1, 0x80 }, { 0x63, 1, 0x40 }, { 0x64, 1, 0x06 }, { 0x65, 1, 0x00 }, { 0x66, 1, 0x00 }, { 0x67, 1, 0x00 }, { 0x68, 1, 0x00 }, { 0x69, 1, 0x23 }, { 0x6A, 1, 0x15 }, { 0x6B, 1, 0x00 }, { 0x70, 1, 0x20 }, { 0x71, 1, 0x02 }, { 0x72, 1, 0x80 }, { 0x73, 1, 0x40 }, { 0x74, 1, 0x05 }, { 0x75, 1, 0x00 }, { 0x76, 1, 0x00 }, { 0x77, 1, 0x00 }, { 0x78, 1, 0x00 }, { 0x79, 1, 0x23 }, { 0x7A, 1, 0x15 }, { 0x7B, 1, 0x00 }, { 0x80, 1, 0x48 }, { 0x81, 1, 0x00 }, { 0x82, 1, 0x08 }, { 0x83, 1, 0x03 }, { 0x84, 1, 0x18 }, { 0x85, 1, 0x00 }, { 0x86, 1, 0x00 }, { 0x87, 1, 0x00 }, { 0x88, 1, 0x48 }, { 0x89, 1, 0x00 }, { 0x8A, 1, 0x0A }, { 0x8B, 1, 0x03 }, { 0x8C, 1, 0x12 }, { 0x8D, 1, 0x00 }, { 0x8E, 1, 0x00 }, { 0x8F, 1, 0x00 }, { 0x90, 1, 0x48 }, { 0x91, 1, 0x00 }, { 0x92, 1, 0x0C }, { 0x93, 1, 0x03 }, { 0x94, 1, 0x14 }, { 0x95, 1, 0x00 }, { 0x96, 1, 0x00 }, { 0x97, 1, 0x00 }, { 0x98, 1, 0x48 }, { 0x99, 1, 0x00 }, { 0x9A, 1, 0x0E }, { 0x9B, 1, 0x03 }, { 0x9C, 1, 0x16 }, { 0x9D, 1, 0x00 }, { 0x9E, 1, 0x00 }, { 0x9F, 1, 0x00 }, { 0xA0, 1, 0x48 }, { 0xA1, 1, 0x00 }, { 0xA2, 1, 0x07 }, { 0xA3, 1, 0x03 }, { 0xA4, 1, 0x17 }, { 0xA5, 1, 0x00 }, { 0xA6, 1, 0x00 }, { 0xA7, 1, 0x00 }, { 0xA8, 1, 0x48 }, { 0xA9, 1, 0x00 }, { 0xAA, 1, 0x09 }, { 0xAB, 1, 0x03 }, { 0xAC, 1, 0x11 }, { 0xAD, 1, 0x00 }, { 0xAE, 1, 0x00 }, { 0xAF, 1, 0x00 }, { 0xB0, 1, 0x48 }, { 0xB1, 1, 0x00 }, { 0xB2, 1, 0x0B }, { 0xB3, 1, 0x03 }, { 0xB4, 1, 0x13 }, { 0xB5, 1, 0x00 }, { 0xB6, 1, 0x00 }, { 0xB7, 1, 0x00 }, { 0xB8, 1, 0x48 }, { 0xB9, 1, 0x00 }, { 0xBA, 1, 0x0D }, { 0xBB, 1, 0x03 }, { 0xBC, 1, 0x15 }, { 0xBD, 1, 0x00 }, { 0xBE, 1, 0x00 }, { 0xBF, 1, 0x00 }, { 0xC0, 1, 0x75 }, { 0xC1, 1, 0x44 }, { 0xC2, 1, 0x57 }, { 0xC3, 1, 0x66 }, { 0xC4, 1, 0xAA }, { 0xC5, 1, 0x11 }, { 0xC6, 1, 0x00 }, { 0xC7, 1, 0x88 }, { 0xC8, 1, 0x99 }, { 0xC9, 1, 0xBB }, { 0xD0, 1, 0x75 }, { 0xD1, 1, 0x44 }, { 0xD2, 1, 0x57 }, { 0xD3, 1, 0x66 }, { 0xD4, 1, 0xAA }, { 0xD5, 1, 0x11 }, { 0xD6, 1, 0x00 }, { 0xD7, 1, 0x88 }, { 0xD8, 1, 0x99 }, { 0xD9, 1, 0xBB }, { 0xF3, 1, 0x01 }, { 0xF0, 1, 0x00 }, { 0x21, 1, 0x00 }, 数据2: send 0xF0 send 0xF2 send 0x73 send 0x7C send 0x83 send 0x84 send 0xF2 send 0xF0 send 0xF0 send 0xF1 send 0xB0 send 0xB1 send 0xB2 send 0xB4 send 0xB5 send 0xB6 send 0xB7 send 0xB8 send 0xBA send 0xBB send 0xBC send 0xBD send 0xC0 send 0xC1 send 0xC2 send 0xC3 send 0xC4 send 0xC5 send 0xC6 send 0xC7 send 0xC8 send 0xC9 send 0xCA send 0xCB send 0xD0 send 0xD1 send 0xD2 send 0xF5 send 0xF1 send 0xF0 send 0xF0 send 0xE0 send 0xE1 send 0xF0 send 0xF3 send 0xE0 send 0xE1 send 0xE2 send 0xE3 send 0xE4 send 0xE5 send 0xE6 send 0xE7 send 0xE8 send 0xE9 send 0xEA send 0xEB send 0xEC send 0xED send 0xEE send 0xEF send 0xF8 send 0xF9 send 0xFA send 0xFB send 0xFC send 0xFD send 0xFE send 0xFF send 0x60 send 0x61 send 0x62 send 0x63 send 0x64 send 0x65 send 0x66 send 0x67 send 0x68 send 0x69 send 0x6A send 0x6B send 0x70 send 0x71 send 0x72 send 0x73 send 0x74 send 0x75 send 0x76 send 0x77 send 0x78 send 0x79 send 0x7A send 0x7B send 0x80 send 0x81 send 0x82 send 0x83 send 0x84 send 0x85 send 0x86 send 0x87 send 0x88 send 0x89 send 0x8A send 0x8B send 0x8C send 0x8D send 0x8E send 0x8F send 0x90 send 0x91 send 0x92 send 0x93 send 0x94 send 0x95 send 0x96 send 0x97 send 0x98 send 0x99 send 0x9A send 0x9B send 0x9C send 0x9D send 0x9E send 0x9F send 0xA0 send 0xA1 send 0xA2 send 0xA3 send 0xA4 send 0xA5 send 0xA6 send 0xA7 send 0xA8 send 0xA9 send 0xAA send 0xAB send 0xAC send 0xAD send 0xAE send 0xAF send 0xB0 send 0xB1 send 0xB2 send 0xB3 send 0xB4 send 0xB5 send 0xB6 send 0xB7 send 0xB8 send 0xB9 send 0xBA send 0xBB send 0xBC send 0xBD send 0xBE send 0xBF send 0xC0 send 0xC1 send 0xC2 send 0xC3 send 0xC4 send 0xC5 send 0xC6 send 0xC7 send 0xC8 send 0xC9 send 0xD0 send 0xD1 send 0xD2 send 0xD3 send 0xD4 send 0xD5 send 0xD6 send 0xD7 send 0xD8 send 0xD9 send 0xF3 send 0xF0 send 0x21 比较一下两份数据是否一致

帮我加一下注释: #include "OELD_Data.h" /** * ??????: * ??8?,????,?????,????? * ???Bit??????? * * B0 B0 B0 B0 * B1 B1 B1 B1 * B2 B2 B2 B2 * B3 B3 -------------> B3 B3 -- * B4 B4 B4 B4 | * B5 B5 B5 B5 | * B6 B6 B6 B6 | * B7 B7 B7 B7 | * | * ----------------------------------- * | * | B0 B0 B0 B0 * | B1 B1 B1 B1 * | B2 B2 B2 B2 * --> B3 B3 -------------> B3 B3 * B4 B4 B4 B4 * B5 B5 B5 B5 * B6 B6 B6 B6 * B7 B7 B7 B7 * */ /*ASCII????*********************/ /*?8??,?16??*/ const uint8_t OLED_F8x16[][16] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// 0 0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00,// ! 1 0x00,0x16,0x0E,0x00,0x16,0x0E,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// " 2 0x40,0xC0,0x78,0x40,0xC0,0x78,0x40,0x00, 0x04,0x3F,0x04,0x04,0x3F,0x04,0x04,0x00,// # 3 0x00,0x70,0x88,0xFC,0x08,0x30,0x00,0x00, 0x00,0x18,0x20,0xFF,0x21,0x1E,0x00,0x00,// $ 4 0xF0,0x08,0xF0,0x00,0xE0,0x18,0x00,0x00, 0x00,0x21,0x1C,0x03,0x1E,0x21,0x1E,0x00,// % 5 0x00,0xF0,0x08,0x88,0x70,0x00,0x00,0x00, 0x1E,0x21,0x23,0x24,0x19,0x27,0x21,0x10,// & 6 0x00,0x00,0x00,0x16,0x0E,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// ' 7 0x00,0x00,0x00,0xE0,0x18,0x04,0x02,0x00, 0x00,0x00,0x00,0x07,0x18,0x20,0x40,0x00,// ( 8 0x00,0x02,0x04,0x18,0xE0,0x00,0x00,0x00, 0x00,0x40,0x20,0x18,0x07,0x00,0x00,0x00,// ) 9 0x40,0x40,0x80,0xF0,0x80,0x40,0x40,0x00, 0x02,0x02,0x01,0x0F,0x01,0x02,0x02,0x00,// * 10 0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00, 0x01,0x01,0x01,0x1F,0x01,0x01,0x01,0x00,// + 11 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xB0,0x70,0x00,0x00,0x00,0x00,0x00,// , 12 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,// - 13 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,// . 14 0x00,0x00,0x00,0x00,0x80,0x60,0x18,0x04, 0x00,0x60,0x18,0x06,0x01,0x00,0x00,0x00,// / 15 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00, 0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,// 0 16 0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00, 0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,// 1 17 0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00, 0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,// 2 18 0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00, 0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,// 3 19 0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00, 0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,// 4 20 0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00, 0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,// 5 21 0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00, 0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,// 6 22 0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00, 0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,// 7 23 0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00, 0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,// 8 24 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00, 0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,// 9 25 0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00, 0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,// : 26 0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00, 0x00,0x00,0x80,0xB0,0x70,0x00,0x00,0x00,// ; 27 0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x00, 0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x00,// < 28 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00, 0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,// = 29 0x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00, 0x00,0x20,0x10,0x08,0x04,0x02,0x01,0x00,// > 30 0x00,0x70,0x48,0x08,0x08,0x08,0xF0,0x00, 0x00,0x00,0x00,0x30,0x36,0x01,0x00,0x00,// ? 31 0xC0,0x30,0xC8,0x28,0xE8,0x10,0xE0,0x00, 0x07,0x18,0x27,0x24,0x23,0x14,0x0B,0x00,// @ 32 0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00, 0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,// A 33 0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00, 0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00,// B 34 0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00, 0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00,// C 35 0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00, 0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00,// D 36 0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00, 0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00,// E 37 0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00, 0x20,0x3F,0x20,0x00,0x03,0x00,0x00,0x00,// F 38 0xC0,0x30,0x08,0x08,0x08,0x38,0x00,0x00, 0x07,0x18,0x20,0x20,0x22,0x1E,0x02,0x00,// G 39 0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08, 0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20,// H 40 0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0x00, 0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,// I 41 0x00,0x00,0x08,0x08,0xF8,0x08,0x08,0x00, 0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,0x00,// J 42 0x08,0xF8,0x88,0xC0,0x28,0x18,0x08,0x00, 0x20,0x3F,0x20,0x01,0x26,0x38,0x20,0x00,// K 43 0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00, 0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00,// L 44 0x08,0xF8,0xF8,0x00,0xF8,0xF8,0x08,0x00, 0x20,0x3F,0x00,0x3F,0x00,0x3F,0x20,0x00,// M 45 0x08,0xF8,0x30,0xC0,0x00,0x08,0xF8,0x08, 0x20,0x3F,0x20,0x00,0x07,0x18,0x3F,0x00,// N 46 0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00, 0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00,// O 47 0x08,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00, 0x20,0x3F,0x21,0x01,0x01,0x01,0x00,0x00,// P 48 0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00, 0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00,// Q 49 0x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00, 0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20,// R 50 0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00, 0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00,// S 51 0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00, 0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,// T 52 0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08, 0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,// U 53 0x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08, 0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00,// V 54 0xF8,0x08,0x00,0xF8,0x00,0x08,0xF8,0x00, 0x03,0x3C,0x07,0x00,0x07,0x3C,0x03,0x00,// W 55 0x08,0x18,0x68,0x80,0x80,0x68,0x18,0x08, 0x20,0x30,0x2C,0x03,0x03,0x2C,0x30,0x20,// X 56 0x08,0x38,0xC8,0x00,0xC8,0x38,0x08,0x00, 0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,// Y 57 0x10,0x08,0x08,0x08,0xC8,0x38,0x08,0x00, 0x20,0x38,0x26,0x21,0x20,0x20,0x18,0x00,// Z 58 0x00,0x00,0x00,0xFE,0x02,0x02,0x02,0x00, 0x00,0x00,0x00,0x7F,0x40,0x40,0x40,0x00,// [ 59 0x00,0x0C,0x30,0xC0,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x01,0x06,0x38,0xC0,0x00,// \ 60 0x00,0x02,0x02,0x02,0xFE,0x00,0x00,0x00, 0x00,0x40,0x40,0x40,0x7F,0x00,0x00,0x00,// ] 61 0x00,0x20,0x10,0x08,0x04,0x08,0x10,0x20, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// ^ 62 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,// _ 63 0x00,0x02,0x04,0x08,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// 64 0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00, 0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20,// a 65 0x08,0xF8,0x00,0x80,0x80,0x00,0x00,0x00, 0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00,// b 66 0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00, 0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00,// c 67 0x00,0x00,0x00,0x80,0x80,0x88,0xF8,0x00, 0x00,0x0E,0x11,0x20,0x20,0x10,0x3F,0x20,// d 68 0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00, 0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00,// e 69 0x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x18, 0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,// f 70 0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00, 0x00,0x6B,0x94,0x94,0x94,0x93,0x60,0x00,// g 71 0x08,0xF8,0x00,0x80,0x80,0x80,0x00,0x00, 0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,// h 72 0x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00, 0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,// i 73 0x00,0x00,0x00,0x80,0x98,0x98,0x00,0x00, 0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,// j 74 0x08,0xF8,0x00,0x00,0x80,0x80,0x80,0x00, 0x20,0x3F,0x24,0x02,0x2D,0x30,0x20,0x00,// k 75 0x00,0x08,0x08,0xF8,0x00,0x00,0x00,0x00, 0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,// l 76 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00, 0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,// m 77 0x00,0x80,0x80,0x00,0x80,0x80,0x00,0x00, 0x00,0x20,0x3F,0x21,0x00,0x20,0x3F,0x20,// n 78 0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00, 0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,// o 79 0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00, 0x80,0xFF,0xA1,0x20,0x20,0x11,0x0E,0x00,// p 80 0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00, 0x00,0x0E,0x11,0x20,0x20,0xA0,0xFF,0x80,// q 81 0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00, 0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00,// r 82 0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00, 0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00,// s 83 0x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00, 0x00,0x00,0x00,0x1F,0x20,0x20,0x00,0x00,// t 84 0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00, 0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20,// u 85 0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80, 0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00,// v 86 0x80,0x80,0x00,0x80,0x00,0x80,0x80,0x80, 0x0F,0x30,0x0C,0x03,0x0C,0x30,0x0F,0x00,// w 87 0x00,0x80,0x80,0x00,0x80,0x80,0x80,0x00, 0x00,0x20,0x31,0x2E,0x0E,0x31,0x20,0x00,// x 88 0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80, 0x80,0x81,0x8E,0x70,0x18,0x06,0x01,0x00,// y 89 0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00, 0x00,0x21,0x30,0x2C,0x22,0x21,0x30,0x00,// z 90 0x00,0x00,0x00,0x00,0x80,0x7C,0x02,0x02, 0x00,0x00,0x00,0x00,0x00,0x3F,0x40,0x40,// { 91 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,// | 92 0x00,0x02,0x02,0x7C,0x80,0x00,0x00,0x00, 0x00,0x40,0x40,0x3F,0x00,0x00,0x00,0x00,// } 93 0x00,0x80,0x40,0x40,0x80,0x00,0x00,0x80, 0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,// ~ 94 }; /*?6??,?8??*/ const uint8_t OLED_F6x8[][6] = { 0x00,0x00,0x00,0x00,0x00,0x00,// 0 0x00,0x00,0x00,0x2F,0x00,0x00,// ! 1 0x00,0x00,0x07,0x00,0x07,0x00,// " 2 0x00,0x14,0x7F,0x14,0x7F,0x14,// # 3 0x00,0x24,0x2A,0x7F,0x2A,0x12,// $ 4 0x00,0x23,0x13,0x08,0x64,0x62,// % 5 0x00,0x36,0x49,0x55,0x22,0x50,// & 6 0x00,0x00,0x00,0x07,0x00,0x00,// ' 7 0x00,0x00,0x1C,0x22,0x41,0x00,// ( 8 0x00,0x00,0x41,0x22,0x1C,0x00,// ) 9 0x00,0x14,0x08,0x3E,0x08,0x14,// * 10 0x00,0x08,0x08,0x3E,0x08,0x08,// + 11 0x00,0x00,0x00,0xA0,0x60,0x00,// , 12 0x00,0x08,0x08,0x08,0x08,0x08,// - 13 0x00,0x00,0x60,0x60,0x00,0x00,// . 14 0x00,0x20,0x10,0x08,0x04,0x02,// / 15 0x00,0x3E,0x51,0x49,0x45,0x3E,// 0 16 0x00,0x00,0x42,0x7F,0x40,0x00,// 1 17 0x00,0x42,0x61,0x51,0x49,0x46,// 2 18 0x00,0x21,0x41,0x45,0x4B,0x31,// 3 19 0x00,0x18,0x14,0x12,0x7F,0x10,// 4 20 0x00,0x27,0x45,0x45,0x45,0x39,// 5 21 0x00,0x3C,0x4A,0x49,0x49,0x30,// 6 22 0x00,0x01,0x71,0x09,0x05,0x03,// 7 23 0x00,0x36,0x49,0x49,0x49,0x36,// 8 24 0x00,0x06,0x49,0x49,0x29,0x1E,// 9 25 0x00,0x00,0x36,0x36,0x00,0x00,// : 26 0x00,0x00,0x56,0x36,0x00,0x00,// ; 27 0x00,0x08,0x14,0x22,0x41,0x00,// < 28 0x00,0x14,0x14,0x14,0x14,0x14,// = 29 0x00,0x00,0x41,0x22,0x14,0x08,// > 30 0x00,0x02,0x01,0x51,0x09,0x06,// ? 31 0x00,0x3E,0x49,0x55,0x59,0x2E,// @ 32 0x00,0x7C,0x12,0x11,0x12,0x7C,// A 33 0x00,0x7F,0x49,0x49,0x49,0x36,// B 34 0x00,0x3E,0x41,0x41,0x41,0x22,// C 35 0x00,0x7F,0x41,0x41,0x22,0x1C,// D 36 0x00,0x7F,0x49,0x49,0x49,0x41,// E 37 0x00,0x7F,0x09,0x09,0x09,0x01,// F 38 0x00,0x3E,0x41,0x49,0x49,0x7A,// G 39 0x00,0x7F,0x08,0x08,0x08,0x7F,// H 40 0x00,0x00,0x41,0x7F,0x41,0x00,// I 41 0x00,0x20,0x40,0x41,0x3F,0x01,// J 42 0x00,0x7F,0x08,0x14,0x22,0x41,// K 43 0x00,0x7F,0x40,0x40,0x40,0x40,// L 44 0x00,0x7F,0x02,0x0C,0x02,0x7F,// M 45 0x00,0x7F,0x04,0x08,0x10,0x7F,// N 46 0x00,0x3E,0x41,0x41,0x41,0x3E,// O 47 0x00,0x7F,0x09,0x09,0x09,0x06,// P 48 0x00,0x3E,0x41,0x51,0x21,0x5E,// Q 49 0x00,0x7F,0x09,0x19,0x29,0x46,// R 50 0x00,0x46,0x49,0x49,0x49,0x31,// S 51 0x00,0x01,0x01,0x7F,0x01,0x01,// T 52 0x00,0x3F,0x40,0x40,0x40,0x3F,// U 53 0x00,0x1F,0x20,0x40,0x20,0x1F,// V 54 0x00,0x3F,0x40,0x38,0x40,0x3F,// W 55 0x00,0x63,0x14,0x08,0x14,0x63,// X 56 0x00,0x07,0x08,0x70,0x08,0x07,// Y 57 0x00,0x61,0x51,0x49,0x45,0x43,// Z 58 0x00,0x00,0x7F,0x41,0x41,0x00,// [ 59 0x00,0x02,0x04,0x08,0x10,0x20,// \ 60 0x00,0x00,0x41,0x41,0x7F,0x00,// ] 61 0x00,0x04,0x02,0x01,0x02,0x04,// ^ 62 0x00,0x40,0x40,0x40,0x40,0x40,// _ 63 0x00,0x00,0x01,0x02,0x04,0x00,// 64 0x00,0x20,0x54,0x54,0x54,0x78,// a 65 0x00,0x7F,0x48,0x44,0x44,0x38,// b 66 0x00,0x38,0x44,0x44,0x44,0x20,// c 67 0x00,0x38,0x44,0x44,0x48,0x7F,// d 68 0x00,0x38,0x54,0x54,0x54,0x18,// e 69 0x00,0x08,0x7E,0x09,0x01,0x02,// f 70 0x00,0x18,0xA4,0xA4,0xA4,0x7C,// g 71 0x00,0x7F,0x08,0x04,0x04,0x78,// h 72 0x00,0x00,0x44,0x7D,0x40,0x00,// i 73 0x00,0x40,0x80,0x84,0x7D,0x00,// j 74 0x00,0x7F,0x10,0x28,0x44,0x00,// k 75 0x00,0x00,0x41,0x7F,0x40,0x00,// l 76 0x00,0x7C,0x04,0x18,0x04,0x78,// m 77 0x00,0x7C,0x08,0x04,0x04,0x78,// n 78 0x00,0x38,0x44,0x44,0x44,0x38,// o 79 0x00,0xFC,0x24,0x24,0x24,0x18,// p 80 0x00,0x18,0x24,0x24,0x18,0xFC,// q 81 0x00,0x7C,0x08,0x04,0x04,0x08,// r 82 0x00,0x48,0x54,0x54,0x54,0x20,// s 83 0x00,0x04,0x3F,0x44,0x40,0x20,// t 84 0x00,0x3C,0x40,0x40,0x20,0x7C,// u 85 0x00,0x1C,0x20,0x40,0x20,0x1C,// v 86 0x00,0x3C,0x40,0x30,0x40,0x3C,// w 87 0x00,0x44,0x28,0x10,0x28,0x44,// x 88 0x00,0x1C,0xA0,0xA0,0xA0,0x7C,// y 89 0x00,0x44,0x64,0x54,0x4C,0x44,// z 90 0x00,0x00,0x08,0x7F,0x41,0x00,// { 91 0x00,0x00,0x00,0x7F,0x00,0x00,// | 92 0x00,0x00,0x41,0x7F,0x08,0x00,// } 93 0x00,0x08,0x04,0x08,0x10,0x08,// ~ 94 }; /*********************ASCII????*/ /*??????*********************/ /*????????????,????????*/ /*?????????????,??????????*/ /*?16??,?16??*/ const ChineseCell_t OLED_CF16x16[] = { ",", 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x58,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, "。", 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x18,0x24,0x24,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, "温", 0x10,0x60,0x02,0x8C,0x00,0x00,0xFE,0x92,0x92,0x92,0x92,0x92,0xFE,0x00,0x00,0x00, 0x04,0x04,0x7E,0x01,0x40,0x7E,0x42,0x42,0x7E,0x42,0x7E,0x42,0x42,0x7E,0x40,0x00, "湿", 0x10,0x60,0x02,0x8C,0x00,0xFE,0x92,0x92,0x92,0x92,0x92,0x92,0xFE,0x00,0x00,0x00, 0x04,0x04,0x7E,0x01,0x44,0x48,0x50,0x7F,0x40,0x40,0x7F,0x50,0x48,0x44,0x40,0x00, "度", 0x00,0x00,0xFC,0x24,0x24,0x24,0xFC,0x25,0x26,0x24,0xFC,0x24,0x24,0x24,0x04,0x00, 0x40,0x30,0x8F,0x80,0x84,0x4C,0x55,0x25,0x25,0x25,0x55,0x4C,0x80,0x80,0x80,0x00, "光", 0x40,0x40,0x42,0x44,0x58,0xC0,0x40,0x7F,0x40,0xC0,0x50,0x48,0x46,0x40,0x40,0x00, 0x80,0x80,0x40,0x20,0x18,0x07,0x00,0x00,0x00,0x3F,0x40,0x40,0x40,0x40,0x78,0x00, "照", 0x00,0xFE,0x42,0x42,0x42,0xFE,0x00,0x42,0xA2,0x9E,0x82,0xA2,0xC2,0xBE,0x00,0x00, 0x80,0x6F,0x08,0x08,0x28,0xCF,0x00,0x00,0x2F,0xC8,0x08,0x08,0x28,0xCF,0x00,0x00, "强", 0x02,0xE2,0x22,0x22,0x3E,0x00,0x80,0x9E,0x92,0x92,0xF2,0x92,0x92,0x9E,0x80,0x00, 0x00,0x43,0x82,0x42,0x3E,0x40,0x47,0x44,0x44,0x44,0x7F,0x44,0x44,0x54,0xE7,0x00, "烟", 0x80,0x70,0x00,0xFF,0x10,0x08,0xFE,0x42,0x42,0x42,0xFA,0x42,0x42,0x42,0xFE,0x00, 0x80,0x60,0x18,0x07,0x08,0x10,0xFF,0x50,0x48,0x46,0x41,0x42,0x4C,0x40,0xFF,0x00, "雾", 0x10,0x0C,0x05,0x55,0x55,0xD5,0x05,0x7F,0x05,0x55,0x55,0x55,0x05,0x14,0x0C,0x00, 0x10,0x10,0x10,0x8A,0xA9,0x6B,0x35,0x25,0x25,0xAB,0xE9,0x08,0x10,0x10,0x10,0x00, "浓", 0x10,0x60,0x02,0x8C,0x20,0x18,0x08,0xC8,0x38,0xCF,0x08,0x08,0x28,0x98,0x00,0x00, 0x04,0x04,0x7E,0x01,0x04,0x02,0x01,0xFF,0x40,0x21,0x06,0x0A,0x11,0x20,0x40,0x00, ":", 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x36,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, "℃", 0x06,0x09,0x09,0xE6,0xF8,0x0C,0x04,0x02,0x02,0x02,0x02,0x02,0x04,0x1E,0x00,0x00, 0x00,0x00,0x00,0x07,0x1F,0x30,0x20,0x40,0x40,0x40,0x40,0x40,0x20,0x10,0x00,0x00, /*???????,?????????????*/ //... /*???????????????(????,??????),???????????*/ "", 0xFF,0x01,0x01,0x01,0x31,0x09,0x09,0x09,0x09,0x89,0x71,0x01,0x01,0x01,0x01,0xFF, 0xFF,0x80,0x80,0x80,0x80,0x80,0x80,0x96,0x81,0x80,0x80,0x80,0x80,0x80,0x80,0xFF, }; /*********************??????*/ /*????*********************/ /*????(????,?????????),?16??,?16??*/ const uint8_t Diode[] = { 0xFF,0x01,0x81,0x81,0x81,0xFD,0x89,0x91,0xA1,0xC1,0xFD,0x81,0x81,0x81,0x01,0xFF, 0xFF,0x80,0x80,0x80,0x80,0x9F,0x88,0x84,0x82,0x81,0x9F,0x80,0x80,0x80,0x80,0xFF, };

int main() { unsigned int v19; const unsigned char sbox0[256] ={0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5,0x30,0x01,0x67,0x2b,0xfe,0xd7,0xab,0x76,0xca,0x82,0xc9,0x7d,0xfa,0x59,0x47,0xf0,0xad,0xd4,0xa2,0xaf,0x9c,0xa4,0x72,0xc0,0xb7,0xfd,0x93,0x26,0x36,0x3f,0xf7,0xcc,0x34,0xa5,0xe5,0xf1,0x71,0xd8,0x31,0x15,0x04,0xc7,0x23,0xc3,0x18,0x96,0x05,0x9a,0x07,0x12,0x80,0xe2,0xeb,0x27,0xb2,0x75,0x09,0x83,0x2c,0x1a,0x1b,0x6e,0x5a,0xa0,0x52,0x3b,0xd6,0xb3,0x29,0xe3,0x2f,0x84,0x53,0xd1,0x00,0xed,0x20,0xfc,0xb1,0x5b,0x6a,0xcb,0xbe,0x39,0x4a,0x4c,0x58,0xcf,0xd0,0xef,0xaa,0xfb,0x43,0x4d,0x33,0x85,0x45,0xf9,0x02,0x7f,0x50,0x3c,0x9f,0xa8,0x51,0xa3,0x40,0x8f,0x92,0x9d,0x38,0xf5,0xbc,0xb6,0xda,0x21,0x10,0xff,0xf3,0xd2,0xcd,0x0c,0x13,0xec,0x5f,0x97,0x44,0x17,0xc4,0xa7,0x7e,0x3d,0x64,0x5d,0x19,0x73,0x60,0x81,0x4f,0xdc,0x22,0x2a,0x90,0x88,0x46,0xee,0xb8,0x14,0xde,0x5e,0x0b,0xdb,0xe0,0x32,0x3a,0x0a,0x49,0x06,0x24,0x5c,0xc2,0xd3,0xac,0x62,0x91,0x95,0xe4,0x79,0xe7,0xc8,0x37,0x6d,0x8d,0xd5,0x4e,0xa9,0x6c,0x56,0xf4,0xea,0x65,0x7a,0xae,0x08,0xba,0x78,0x25,0x2e,0x1c,0xa6,0xb4,0xc6,0xe8,0xdd,0x74,0x1f,0x4b,0xbd,0x8b,0x8a,0x70,0x3e,0xb5,0x66,0x48,0x03,0xf6,0x0e,0x61,0x35,0x57,0xb9,0x86,0xc1,0x1d,0x9e,0xe1,0xf8,0x98,0x11,0x69,0xd9,0x8e,0x94,0x9b,0x1e,0x87,0xe9,0xce,0x55,0x28,0xdf,0x8c,0xa1,0x89,0x0d,0xbf,0xe6,0x42,0x68,0x41,0x99,0x2d,0x0f,0xb0,0x54,0xbb,0x16}; const char* a3="UK*@3oKpFlVVnadsTfdA"; int v7=16; memcpy(&v19, a3, v7); for (int j = 0; j != 16; ++j ) *((_BYTE *)&v19 + j) = sbox0[*((unsigned *)&v19 + j)]; return 0; }输出v19值

TFTLCD汉字显示是反着的#include "chinese_font.h" #include "lcd.h" #include <string.h> // LCD分辨率(横屏) #define LCD_WIDTH 240 // 逻辑宽度 #define LCD_HEIGHT 320 // 逻辑高度 //// 中文字模数据(16x16,32 字节/字符) //static const uint8_t font_data[][32] = { // 监控系统 //{0x00,0x02,0x00,0x02,0x7E,0x7E,0x00,0x42,0x00,0x42,0xFF,0x7E,0x00,0x42,0x02,0x42}, //{0x0C,0x42,0xF0,0x7E,0x20,0x42,0x28,0x42,0x26,0x7E,0x20,0x02,0x00,0x02,0x00,0x00},/*"监",0*/ //{0x08,0x40,0x08,0x42,0x08,0x81,0xFF,0xFE,0x09,0x00,0x04,0x02,0x19,0x02,0x12,0x42}, //{0x14,0x42,0x90,0x42,0x70,0x7E,0x14,0x42,0x12,0x42,0x15,0x42,0x18,0x02,0x00,0x00},/*"控",1*/ //{0x00,0x00,0x00,0x42,0x44,0x44,0x4C,0xC8,0x54,0xD0,0x65,0x42,0x45,0x41,0x46,0x7E}, //{0x84,0x40,0x88,0x40,0x90,0x50,0x81,0x48,0x80,0xC4,0x00,0x62,0x00,0x00,0x00,0x00},/*"系",2*/ //{0x04,0x44,0x0C,0xE6,0x35,0x44,0xC6,0x48,0x0C,0x48,0x00,0x01,0x11,0x02,0x13,0x0C}, //{0x15,0xF0,0x99,0x00,0x71,0x00,0x11,0xFC,0x15,0x02,0x13,0x02,0x11,0x8E,0x00,0x00},/*"统",3*/ // // 当前值 //{0x00,0x00,0x02,0x02,0x42,0x22,0x22,0x22,0x1A,0x22,0x02,0x22,0x02,0x22,0xFE,0x22}, //{0x02,0x22,0x02,0x22,0x0A,0x22,0x12,0x22,0x63,0xFF,0x00,0x00,0x00,0x00,0x00,0x00},/*"当",0*/ //{0x10,0x00,0x10,0x00,0x17,0xFF,0x94,0x90,0x74,0x92,0x14,0x91,0x17,0xFE,0x10,0x00}, //{0x10,0x00,0x13,0xF0,0x30,0x02,0xD0,0x01,0x17,0xFE,0x10,0x00,0x10,0x00,0x00,0x00},/*"前",1*/ //{0x00,0x80,0x01,0x00,0x06,0x00,0x1F,0xFF,0xE0,0x02,0x20,0x02,0x27,0xFE,0x25,0x52}, //{0x25,0x52,0xFD,0x52,0x25,0x52,0x25,0x52,0x27,0xFE,0x20,0x02,0x00,0x02,0x00,0x00},/*"值",2*/ // // 阈值 //{0x20,0x00,0x17,0xFC,0x00,0x84,0x40,0xA4,0x40,0x94,0x5F,0xF4,0x40,0x84,0x4E,0xA4}, //{0x4A,0xA4,0x4E,0xA4,0x40,0xC4,0x46,0x54,0x58,0xB4,0x41,0x14,0x42,0x04,0x40,0x0C},/*"阈",0*/ //{0x08,0x40,0x08,0x40,0x0F,0xFC,0x10,0x40,0x10,0x40,0x33,0xF8,0x32,0x08,0x53,0xF8}, //{0x92,0x08,0x13,0xF8,0x12,0x08,0x13,0xF8,0x12,0x08,0x12,0x08,0x1F,0xFE,0x10,0x00},/*"值",1*/ // // 超声波 //{0x08,0x00,0x09,0xFC,0x08,0x44,0x7E,0x44,0x08,0x44,0x08,0x94,0xFF,0x08,0x08,0xFC}, //{0x28,0x84,0x28,0x84,0x2E,0x84,0x28,0xFC,0x28,0x00,0x58,0x00,0x4F,0xFE,0x80,0x00},/*"超",0*/ //{0x01,0x00,0x01,0x00,0xFF,0xFE,0x01,0x00,0x7F,0xFC,0x00,0x00,0x3F,0xF8,0x21,0x08}, //{0x21,0x08,0x3F,0xF8,0x20,0x00,0x20,0x00,0x20,0x00,0x40,0x00,0x40,0x00,0x80,0x00},/*"声",1*/ //{0x00,0x20,0x20,0x20,0x10,0x20,0x13,0xFE,0x82,0x22,0x42,0x24,0x4A,0x20,0x0B,0xFC}, //{0x12,0x84,0x12,0x88,0xE2,0x48,0x22,0x50,0x22,0x20,0x24,0x50,0x24,0x88,0x09,0x06},/*"波",2*/ // // 温度 //{0x00,0x00,0x23,0xF8,0x12,0x08,0x12,0x08,0x83,0xF8,0x42,0x08,0x42,0x08,0x13,0xF8}, //{0x10,0x00,0x27,0xFC,0xE4,0xA4,0x24,0xA4,0x24,0xA4,0x24,0xA4,0x2F,0xFE,0x00,0x00},/*"温",0*/ //{0x01,0x00,0x00,0x80,0x3F,0xFE,0x22,0x20,0x22,0x20,0x3F,0xFC,0x22,0x20,0x22,0x20}, //{0x23,0xE0,0x20,0x00,0x2F,0xF0,0x24,0x10,0x42,0x20,0x41,0xC0,0x86,0x30,0x38,0x0E},/*"度",1*/ // // 湿度 //{0x00,0x00,0x27,0xF8,0x14,0x08,0x14,0x08,0x87,0xF8,0x44,0x08,0x44,0x08,0x17,0xF8}, //{0x11,0x20,0x21,0x20,0xE9,0x24,0x25,0x28,0x23,0x30,0x21,0x20,0x2F,0xFE,0x00,0x00},/*"湿",0*/ //{0x01,0x00,0x00,0x80,0x3F,0xFE,0x22,0x20,0x22,0x20,0x3F,0xFC,0x22,0x20,0x22,0x20}, //{0x23,0xE0,0x20,0x00,0x2F,0xF0,0x24,0x10,0x42,0x20,0x41,0xC0,0x86,0x30,0x38,0x0E},/*"度",1*/ // // 频率 //{0x10,0x00,0x11,0xFE,0x50,0x20,0x5C,0x40,0x51,0xFC,0x51,0x04,0xFF,0x24,0x01,0x24}, //{0x11,0x24,0x55,0x24,0x55,0x24,0x55,0x44,0x84,0x50,0x08,0x88,0x31,0x04,0xC2,0x02},/*"频",0*/ //{0x02,0x00,0x01,0x00,0x7F,0xFC,0x02,0x00,0x44,0x44,0x2F,0x88,0x11,0x10,0x22,0x48}, //{0x4F,0xE4,0x00,0x20,0x01,0x00,0xFF,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00},/*"率",1*/ // // 按中间键确认 //{0x10,0x40,0x10,0x20,0x10,0x20,0x13,0xFE,0xFA,0x02,0x14,0x44,0x10,0x40,0x1B,0xFE}, //{0x30,0x88,0xD0,0x88,0x11,0x08,0x10,0xD0,0x10,0x20,0x10,0x50,0x50,0x88,0x23,0x04},/*"按",0*/ //{0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x3F,0xF8,0x21,0x08,0x21,0x08,0x21,0x08}, //{0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x08,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00},/*"中",1*/ //{0x20,0x00,0x13,0xFC,0x10,0x04,0x40,0x04,0x47,0xC4,0x44,0x44,0x44,0x44,0x44,0x44}, //{0x47,0xC4,0x44,0x44,0x44,0x44,0x44,0x44,0x47,0xC4,0x40,0x04,0x40,0x14,0x40,0x08},/*"间",2*/ //{0x20,0x10,0x20,0x10,0x3B,0x7C,0x21,0x14,0x41,0xFE,0x7A,0x14,0xA2,0x7C,0x27,0x10}, //{0xF9,0x7C,0x25,0x10,0x25,0xFE,0x22,0x10,0x2A,0x10,0x35,0x00,0x28,0xFE,0x00,0x00},/*"键",3*/ //{0x00,0x40,0x00,0x40,0xFC,0x7C,0x10,0x84,0x11,0x08,0x22,0xFE,0x3C,0x92,0x64,0x92}, //{0x64,0xFE,0xA4,0x92,0x24,0x92,0x24,0xFE,0x3C,0x92,0x25,0x12,0x21,0x0A,0x02,0x04},/*"确",4*/ //{0x00,0x40,0x20,0x40,0x10,0x40,0x10,0x40,0x00,0x40,0x00,0x40,0xF0,0x40,0x10,0x40}, //{0x10,0xA0,0x10,0xA0,0x10,0xA0,0x15,0x10,0x19,0x10,0x12,0x08,0x04,0x04,0x08,0x02},/*"认",5*/ // // 左/右:调整 //{0x02,0x00,0x02,0x00,0x02,0x00,0xFF,0xFE,0x04,0x00,0x04,0x00,0x04,0x00,0x08,0x00}, //{0x0F,0xF8,0x10,0x80,0x10,0x80,0x20,0x80,0x40,0x80,0x80,0x80,0x3F,0xFE,0x00,0x00},/*"左",0*/ //{0x00,0x00,0x02,0x04,0x04,0x04,0x08,0x08,0x10,0x10,0x10,0x20,0x20,0x40,0x40,0x00},/*"/",1*/ //{0x02,0x00,0x02,0x00,0x02,0x00,0xFF,0xFE,0x04,0x00,0x04,0x00,0x08,0x00,0x08,0x00}, //{0x1F,0xF8,0x28,0x08,0x48,0x08,0x88,0x08,0x08,0x08,0x08,0x08,0x0F,0xF8,0x08,0x08},/*"右",2*/ //{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, //{0x00,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00},/*":",3*/ //{0x00,0x00,0x47,0xFC,0x24,0x44,0x24,0x44,0x05,0xF4,0x04,0x44,0xE4,0x44,0x27,0xFC}, //{0x24,0x04,0x25,0xF4,0x25,0x14,0x2D,0x14,0x35,0xF4,0x24,0x04,0x04,0x14,0x08,0x08},/*"调",4*/ //{0x08,0x20,0x08,0x20,0xFF,0xBE,0x08,0x44,0x7F,0xA4,0x49,0x24,0x7F,0x28,0x2A,0x10}, //{0x49,0x28,0x88,0x46,0x00,0x00,0x7F,0xFC,0x01,0x00,0x11,0xF8,0x11,0x00,0xFF,0xFE},/*"整",5*/ // // 中间:编辑 //{0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x3F,0xF8,0x21,0x08,0x21,0x08,0x21,0x08}, //{0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x08,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00},/*"中",0*/ //{0x20,0x00,0x13,0xFC,0x10,0x04,0x40,0x04,0x47,0xC4,0x44,0x44,0x44,0x44,0x44,0x44}, //{0x47,0xC4,0x44,0x44,0x44,0x44,0x44,0x44,0x47,0xC4,0x40,0x04,0x40,0x14,0x40,0x08},/*"间",1*/ //{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, //{0x00,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00},/*":",2*/ //{0x10,0x80,0x10,0x40,0x23,0xFC,0x22,0x04,0x4A,0x04,0xFB,0xFC,0x12,0x00,0x22,0x00}, //{0x43,0xFC,0xFB,0x54,0x43,0x54,0x05,0xFC,0x1D,0x54,0xE5,0x54,0x49,0x44,0x01,0x0C},/*"编",3*/ //{0x20,0x00,0x21,0xF8,0x21,0x08,0xFD,0x08,0x41,0xF8,0x50,0x00,0x97,0xFE,0xFD,0x08}, //{0x11,0xF8,0x11,0x08,0x1D,0xF8,0xF1,0x08,0x51,0x3E,0x17,0xC8,0x10,0x08,0x10,0x08},/*"辑",4*/ // // 上/下:选择 //{0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x03,0xF8,0x02,0x00}, //{0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xFF,0xFE,0x00,0x00},/*"上",0*/ //{0x00,0x00,0x02,0x04,0x04,0x04,0x08,0x08,0x10,0x10,0x10,0x20,0x20,0x40,0x40,0x00},/*"/",1*/ //{0x00,0x00,0xFF,0xFE,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x40,0x02,0x20}, //{0x02,0x10,0x02,0x08,0x02,0x08,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00},/*"下",2*/ //{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, //{0x00,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00},/*":",3*/ //{0x00,0x40,0x22,0x40,0x12,0x40,0x13,0xF8,0x04,0x40,0x00,0x40,0xF7,0xFC,0x11,0x20}, //{0x11,0x20,0x11,0x20,0x12,0x24,0x12,0x24,0x14,0x1C,0x28,0x00,0x47,0xFE,0x00,0x00},/*"选",4*/ //{0x20,0x00,0x27,0xF8,0x22,0x08,0x21,0x10,0xF0,0xA0,0x20,0x40,0x21,0xB0,0x26,0x4E}, //{0x30,0x40,0xE3,0xF8,0x20,0x40,0x20,0x40,0x27,0xFC,0x20,0x40,0xA0,0x40,0x40,0x40},/*"择",5*/ // // 阈值已保存 //{0x20,0x00,0x17,0xFC,0x00,0x84,0x40,0xA4,0x40,0x94,0x5F,0xF4,0x40,0x84,0x4E,0xA4}, //{0x4A,0xA4,0x4E,0xA4,0x40,0xC4,0x46,0x54,0x58,0xB4,0x41,0x14,0x42,0x04,0x40,0x0C},/*"阈",0*/ //{0x08,0x40,0x08,0x40,0x0F,0xFC,0x10,0x40,0x10,0x40,0x33,0xF8,0x32,0x08,0x53,0xF8}, //{0x92,0x08,0x13,0xF8,0x12,0x08,0x13,0xF8,0x12,0x08,0x12,0x08,0x1F,0xFE,0x10,0x00},/*"值",1*/ //{0x00,0x00,0x3F,0xF0,0x00,0x10,0x00,0x10,0x00,0x10,0x20,0x10,0x20,0x10,0x3F,0xF0}, //{0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x04,0x20,0x04,0x20,0x04,0x1F,0xFC,0x00,0x00},/*"已",2*/ //{0x08,0x00,0x0B,0xF8,0x0A,0x08,0x12,0x08,0x12,0x08,0x33,0xF8,0x30,0x40,0x50,0x40}, //{0x97,0xFC,0x10,0xE0,0x11,0x50,0x12,0x48,0x14,0x44,0x18,0x42,0x10,0x40,0x10,0x40},/*"保",3*/ //{0x04,0x00,0x04,0x00,0xFF,0xFE,0x08,0x00,0x08,0x00,0x13,0xF8,0x10,0x10,0x30,0x20}, //{0x50,0x40,0x97,0xFE,0x10,0x40,0x10,0x40,0x10,0x40,0x10,0x40,0x11,0x40,0x10,0x80},/*"存",4*/ //}; //// ASCII 字模(8x16,16 字节/字符,特殊字符 / 和 :) //static const uint8_t ascii_fonts[][16] = { //{0x00,0x00,0x02,0x04,0x04,0x04,0x08,0x08,0x10,0x10,0x10,0x20,0x20,0x40,0x40,0x00},/*"/",0*/ //{0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00},/*":",0*/ //}; // 中文字模数据(16x16,32 字节/字符) static const uint8_t font_data[][32] = { // 监控系统 {0x00,0x02,0x00,0x02,0x7E,0x7E,0x00,0x42,0x00,0x42,0xFF,0x7E,0x00,0x42,0x02,0x42, 0x0C,0x42,0xF0,0x7E,0x20,0x42,0x28,0x42,0x26,0x7E,0x20,0x02,0x00,0x02,0x00,0x00}, /*"监",0*/ {0x08,0x40,0x08,0x42,0x08,0x81,0xFF,0xFE,0x09,0x00,0x04,0x02,0x19,0x02,0x12,0x42, 0x14,0x42,0x90,0x42,0x70,0x7E,0x14,0x42,0x12,0x42,0x15,0x42,0x18,0x02,0x00,0x00}, /*"控",1*/ {0x00,0x00,0x00,0x42,0x44,0x44,0x4C,0xC8,0x54,0xD0,0x65,0x42,0x45,0x41,0x46,0x7E, 0x84,0x40,0x88,0x40,0x90,0x50,0x81,0x48,0x80,0xC4,0x00,0x62,0x00,0x00,0x00,0x00}, /*"系",2*/ {0x04,0x44,0x0C,0xE6,0x35,0x44,0xC6,0x48,0x0C,0x48,0x00,0x01,0x11,0x02,0x13,0x0C, 0x15,0xF0,0x99,0x00,0x71,0x00,0x11,0xFC,0x15,0x02,0x13,0x02,0x11,0x8E,0x00,0x00}, /*"统",3*/ // 当前值 {0x00,0x00,0x02,0x02,0x42,0x22,0x22,0x22,0x1A,0x22,0x02,0x22,0x02,0x22,0xFE,0x22, 0x02,0x22,0x02,0x22,0x0A,0x22,0x12,0x22,0x63,0xFF,0x00,0x00,0x00,0x00,0x00,0x00}, /*"当",4*/ {0x10,0x00,0x10,0x00,0x17,0xFF,0x94,0x90,0x74,0x92,0x14,0x91,0x17,0xFE,0x10,0x00, 0x10,0x00,0x13,0xF0,0x30,0x02,0xD0,0x01,0x17,0xFE,0x10,0x00,0x10,0x00,0x00,0x00}, /*"前",5*/ {0x00,0x80,0x01,0x00,0x06,0x00,0x1F,0xFF,0xE0,0x02,0x20,0x02,0x27,0xFE,0x25,0x52, 0x25,0x52,0xFD,0x52,0x25,0x52,0x25,0x52,0x27,0xFE,0x20,0x02,0x00,0x02,0x00,0x00}, /*"值",6*/ // 阈值 {0x00,0x00,0x1F,0xFF,0x80,0x00,0x44,0x08,0x05,0xC8,0x45,0x50,0x45,0xD2,0x44,0x04, 0x7F,0xE8,0x44,0x30,0x55,0xC8,0x4C,0x1C,0x40,0x01,0x7F,0xFF,0x00,0x00,0x00,0x00}, /*"阈",7*/ // 超声波 {0x02,0x01,0x12,0x06,0x12,0xF8,0x12,0x04,0xFF,0xFE,0x12,0x22,0x12,0x22,0x42,0x02, 0x45,0xF2,0x79,0x12,0x41,0x12,0x45,0x12,0x43,0x12,0x7D,0xF2,0x00,0x02,0x00,0x00}, /*"超",8*/ {0x20,0x01,0x28,0x06,0x2B,0xF8,0x2A,0x40,0x2A,0x40,0x2A,0x40,0x2A,0x40,0xFB,0xC0, 0x2A,0x40,0x2A,0x40,0x2A,0x40,0x2A,0x40,0x2B,0xC0,0x28,0x00,0x20,0x00,0x00,0x00}, /*"声",9*/ {0x08,0x20,0x06,0x20,0x40,0x3E,0x30,0xC0,0x03,0x01,0x00,0x06,0x1F,0xF8,0x11,0x01, 0x11,0xC2,0x11,0x34,0xFF,0x08,0x11,0x14,0x11,0x62,0x15,0x81,0x18,0x01,0x00,0x00}, /*"波",10*/ // 温度 {0x08,0x20,0x06,0x20,0x40,0x7E,0x31,0x80,0x00,0x02,0x00,0x7E,0x7F,0x42,0x49,0x42, 0x49,0x7E,0x49,0x42,0x49,0x7E,0x49,0x42,0x7F,0x42,0x00,0x7E,0x00,0x02,0x00,0x00}, /*"温",11*/ {0x00,0x02,0x00,0x0C,0x3F,0xF1,0x24,0x01,0x24,0x21,0x24,0x32,0x3F,0xAA,0xA4,0xA4, 0x64,0xA4,0x24,0xA4,0x3F,0xAA,0x24,0x32,0x24,0x01,0x24,0x01,0x20,0x01,0x00,0x00}, /*"度",12*/ // 湿度 {0x08,0x20,0x06,0x20,0x40,0x7E,0x31,0x80,0x00,0x22,0x7F,0x12,0x49,0x0A,0x49,0xFE, 0x49,0x02,0x49,0x02,0x49,0xFE,0x49,0x0A,0x7F,0x12,0x00,0x22,0x00,0x02,0x00,0x00}, /*"湿",13*/ // 频率 {0x02,0x09,0x3E,0x71,0x02,0x02,0xFE,0xF2,0x12,0x04,0x12,0x78,0x02,0x01,0x4F,0xF2, 0x48,0x04,0x58,0x18,0x6B,0xE0,0x48,0x08,0x48,0x04,0x4F,0xF2,0x40,0x01,0x00,0x00}, /*"频",14*/ {0x00,0x10,0x28,0x90,0x25,0x10,0x22,0x10,0x24,0x90,0x2C,0x90,0xB5,0x90,0x66,0xBF, 0x24,0x90,0x29,0x90,0x20,0xD0,0x22,0x10,0x25,0x10,0x28,0x90,0x00,0x10,0x00,0x00}, /*"率",15*/ // 按中间键确认 {0x08,0x40,0x08,0x42,0x08,0x81,0xFF,0xFE,0x09,0x00,0x04,0x00,0x19,0x01,0x11,0x21, 0x11,0xD2,0x97,0x14,0x71,0x08,0x11,0x14,0x11,0xE2,0x15,0x01,0x19,0x00,0x00,0x00}, /*"按",16*/ {0x00,0x00,0x00,0x00,0x0F,0xF0,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0xFF,0xFF, 0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00}, /*"中",17*/ {0x00,0x00,0x1F,0xFF,0x80,0x00,0x60,0x00,0x00,0x00,0x0F,0xF8,0x48,0x88,0x48,0x88, 0x48,0x88,0x4F,0xF8,0x40,0x00,0x40,0x02,0x40,0x01,0x7F,0xFE,0x00,0x00,0x00,0x00}, /*"间",18*/ {0x02,0x80,0x0C,0x80,0xF7,0xFE,0x24,0x84,0x24,0x8A,0x01,0x64,0x27,0x18,0x39,0xE4, 0x08,0x22,0x2A,0xA2,0x2A,0xA2,0xFF,0xFA,0x2A,0xA2,0x3E,0xA2,0x08,0x22,0x00,0x00}, /*"键",19*/ {0x20,0x40,0x21,0x80,0x27,0xFE,0x3A,0x08,0x22,0x08,0x23,0xFC,0x04,0x01,0x08,0x06, 0x17,0xF8,0xE4,0x90,0x24,0x90,0x27,0xFC,0x2C,0x92,0x34,0x91,0x07,0xFE,0x00,0x00}, /*"确",20*/ {0x02,0x00,0x02,0x00,0x42,0x00,0x33,0xFC,0x00,0x09,0x00,0x12,0x00,0x04,0x00,0x18, 0x00,0xE0,0xFF,0x00,0x00,0xE0,0x00,0x18,0x00,0x04,0x00,0x02,0x00,0x01,0x00,0x00}, /*"认",21*/ // 左/右:调整 {0x10,0x04,0x10,0x08,0x10,0x12,0x10,0x62,0x11,0x82,0x1E,0x82,0xF0,0x82,0x10,0x82, 0x10,0xFE,0x10,0x82,0x10,0x82,0x10,0x82,0x10,0x82,0x10,0x02,0x10,0x02,0x00,0x00}, /*"左",22*/ {0x10,0x10,0x10,0x20,0x10,0x40,0x10,0x80,0x13,0xFF,0x1C,0x82,0xF0,0x82,0x10,0x82, 0x10,0x82,0x10,0x82,0x10,0x82,0x10,0x82,0x10,0xFF,0x10,0x00,0x10,0x00,0x00,0x00}, /*"右",23*/ {0x02,0x00,0x42,0x00,0x33,0xFC,0x00,0x08,0x00,0x11,0x7F,0xFE,0x41,0x00,0x49,0x78, 0x49,0x48,0x7F,0x48,0x49,0x48,0x49,0x7A,0x41,0x01,0x7F,0xFE,0x00,0x00,0x00,0x00}, /*"调",24*/ {0x20,0x41,0x2E,0x91,0x2B,0x11,0x2A,0x17,0xFF,0xD1,0x2A,0x11,0x2B,0x11,0x2E,0x9F, 0x28,0x15,0x10,0x55,0xEE,0x95,0x21,0x15,0x22,0x95,0x3C,0x51,0x20,0x41,0x00,0x00}, /*"整",25*/ // 中间:编辑 {0x04,0x44,0x0C,0xE6,0x35,0x44,0xC6,0x48,0x0C,0x4A,0x00,0x1C,0x3F,0xE0,0x24,0xFF, 0xA4,0x90,0x64,0xFE,0x24,0x90,0x24,0xFC,0x24,0x91,0x3C,0xFF,0x00,0x00,0x00,0x00}, /*"编",26*/ {0x13,0x10,0x1D,0x18,0xF1,0x10,0x17,0xFF,0x11,0x20,0x13,0x24,0x02,0x04,0x7B,0xFC, 0x4A,0xA4,0x4A,0xA4,0x4A,0xA8,0x4A,0xA8,0x7B,0xFF,0x02,0x08,0x02,0x08,0x00,0x00}, /*"辑",27*/ // 上/下:选择 {0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0xFF,0xFE,0x02,0x02, 0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x02,0x00,0x02,0x00,0x00}, /*"上",28*/ {0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x7F,0xFF,0x40,0x00, 0x40,0x00,0x42,0x00,0x41,0x00,0x40,0x80,0x40,0x60,0x40,0x00,0x40,0x00,0x00,0x00}, /*"下",29*/ {0x02,0x00,0x02,0x02,0x42,0x04,0x33,0xF8,0x00,0x04,0x0A,0x0A,0x72,0x32,0x13,0xC2, 0x12,0x02,0xFE,0x02,0x13,0xF2,0x12,0x0A,0x12,0x0A,0x02,0x3A,0x00,0x02,0x00,0x00}, /*"选",30*/ {0x08,0x42,0x08,0x41,0xFF,0xFE,0x08,0x80,0x00,0x00,0x41,0x08,0x61,0x48,0x52,0x48, 0x4A,0x48,0x45,0xFF,0x4A,0x48,0x52,0x48,0x61,0x48,0x01,0x08,0x01,0x00,0x00,0x00}, /*"择",31*/ // 阈值已保存 {0x00,0x00,0x00,0x00,0x47,0xFC,0x41,0x02,0x41,0x02,0x41,0x02,0x41,0x02,0x41,0x02, 0x41,0x02,0x41,0x02,0x41,0x02,0x7F,0x02,0x00,0x02,0x00,0x1E,0x00,0x00,0x00,0x00}, /*"已",32*/ {0x00,0x80,0x01,0x00,0x06,0x00,0x1F,0xFF,0xE0,0x04,0x00,0x88,0x7C,0x90,0x44,0xA0, 0x44,0xC0,0x47,0xFF,0x44,0xC0,0x44,0xA0,0x7C,0x90,0x00,0x88,0x00,0x04,0x00,0x00}, /*"保",33*/ {0x20,0x40,0x20,0x80,0x21,0x00,0x27,0xFF,0x38,0x00,0xE0,0x40,0x24,0x40,0x24,0x42, 0x24,0x41,0x24,0xFE,0x25,0x40,0x26,0x40,0x24,0x40,0x20,0x40,0x20,0x40,0x00,0x00}, /*"存",34*/ }; // ASCII 字模(8x16,16 字节/字符,特殊字符 / 和 :) static const uint8_t ascii_fonts[][16] = { {0x00,0x00,0x00,0x06,0x00,0x18,0x00,0xE0,0x03,0x00,0x1C,0x00,0x20,0x00,0x00,0x00}, /*"/"*/ {0x00,0x00,0x00,0x00,0x00,0x6C,0x00,0x6C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, /*":"*/ }; // 中文字符索引表 static const ChineseFont chinese_fonts[] = { {"监", font_data[0], 16}, {"控", font_data[1], 16}, {"系", font_data[2], 16}, {"统", font_data[3], 16}, {"当", font_data[4], 16}, {"前", font_data[5], 16}, {"值", font_data[6], 16}, {"阈", font_data[7], 16}, {"超", font_data[8], 16}, {"声", font_data[9], 16}, {"波", font_data[10], 16}, {"温", font_data[11], 16}, {"度", font_data[12], 16}, {"湿", font_data[13], 16}, {"频", font_data[14], 16}, {"率", font_data[15], 16}, {"按", font_data[16], 16}, {"中", font_data[17], 16}, {"间", font_data[18], 16}, {"键", font_data[19], 16}, {"确", font_data[20], 16}, {"认", font_data[21], 16}, {"左", font_data[22], 16}, {"右", font_data[23], 16}, {"调", font_data[24], 16}, {"整", font_data[25], 16}, {"编", font_data[26], 16}, {"辑", font_data[27], 16}, {"上", font_data[28], 16}, {"下", font_data[29], 16}, {"选", font_data[30], 16}, {"择", font_data[31], 16}, {"已", font_data[32], 16}, {"保", font_data[33], 16}, {"存", font_data[34], 16}, {NULL, NULL, 0} // 结束标志 }; // 显示中文字符串 void LCD_ShowChinese(uint16_t x, uint16_t y, const char *str, uint8_t size, uint16_t color) { if (size != 16) return; // 仅支持 16x16 字体 uint16_t x0 = x; while (*str) { if (*str == '/') { LCD_ShowChar(x, y, '/', size, color); // 显示 ASCII 字符 / x += 8; // 8 像素宽 str++; } else if (*str == ':') { LCD_ShowChar(x, y, ':', size, color); // 显示 ASCII 字符 : x += 8; // 8 像素宽 str++; } else { // 查找中文字符 for (int i = 0; chinese_fonts[i].ch != NULL; i++) { if (strncmp(str, chinese_fonts[i].ch, strlen(chinese_fonts[i].ch)) == 0) { // 显示 16x16 中文字模 for (int row = 0; row < 16; row++) { uint16_t data = (chinese_fonts[i].data[row * 2] << 8) | chinese_fonts[i].data[row * 2 + 1]; for (int col = 0; col < 16; col++) { if (data & (0x8000 >> col)) { lcd_draw_point(x + col, y + row, color); // lcd_draw_point(y + row,x + col, color); } } } x += 16; // 16 像素宽 str += strlen(chinese_fonts[i].ch); break; } } } } } //void LCD_ShowChinese(uint16_t x, uint16_t y, const char *str, uint8_t size, uint16_t color) //{ // if (size != 16) return; // 仅支持 16x16 字体 // uint16_t x0 = x; // while (*str) { // if (*str == '/') { // // 转换坐标以适应硬件180度翻转和顺时针90度旋转 // uint16_t new_x = y; // x -> y // uint16_t new_y = LCD_WIDTH - (x + 8); // y -> LCD_WIDTH - x - 字符宽度 // LCD_ShowChar(new_x, new_y, '/', size, color); // 显示 ASCII 字符 / // x += 8; // 8 像素宽 // str++; // } else if (*str == ':') { // // 转换坐标 // uint16_t new_x = y; // uint16_t new_y = LCD_WIDTH - (x + 8); // LCD_ShowChar(new_x, new_y, ':', size, color); // 显示 ASCII 字符 : // x += 8; // 8 像素宽 // str++; // } else { // // 查找中文字符 // for (int i = 0; chinese_fonts[i].ch != NULL; i++) { // if (strncmp(str, chinese_fonts[i].ch, strlen(chinese_fonts[i].ch)) == 0) { // // 转换坐标以适应硬件180度翻转和顺时针90度旋转 // uint16_t new_x = y; // x -> y // uint16_t new_y = LCD_WIDTH - (x + 16); // y -> LCD_WIDTH - x - 字符宽度 // // 显示 16x16 中文字模 // for (int row = 0; row < 16; row++) { // uint16_t data = (chinese_fonts[i].data[row * 2] << 8) | chinese_fonts[i].data[row * 2 + 1]; // for (int col = 0; col < 16; col++) { // if (data & (0x8000 >> col)) { // // 映射到顺时针90度旋转后的点阵:(row, col) -> (col, 15-row) // lcd_draw_point(new_x + col, new_y + (15 - row), color); // } // } // } // x += 16; // 16 像素宽 // str += strlen(chinese_fonts[i].ch); // break; // } // } // } // } //} // 显示 ASCII 字符(为 / 和 : 提供支持) void LCD_ShowChar(uint16_t x, uint16_t y, char ch, uint8_t size, uint16_t color) { if (size != 16) return; // 仅支持 16 像素高 int idx = (ch == '/') ? 0 : (ch == ':') ? 1 : -1; if (idx < 0) return; for (int row = 0; row < 16; row++) { uint8_t data = ascii_fonts[idx][row]; for (int col = 0; col < 8; col++) { if (data & (0x80 >> col)) { lcd_draw_point(x + col, y + row, color); } } } }

#include “OLED_Font.h” #include “OLED.h” /引脚配置/ #define OLED_W_SCL(x) HAL_GPIO_WritePin(SCL_GPIO_Port, SCL_Pin, (GPIO_PinState)(x)) #define OLED_W_SDA(x) HAL_GPIO_WritePin(SDA_GPIO_Port, SDA_Pin, (GPIO_PinState)(x)) /** @brief I2C开始 @param 无 @retval 无 / void OLED_I2C_Start(void) { OLED_W_SDA(1); OLED_W_SCL(1); OLED_W_SDA(0); OLED_W_SCL(0); } /* @brief I2C停止 @param 无 @retval 无 / void OLED_I2C_Stop(void) { OLED_W_SDA(0); OLED_W_SCL(1); OLED_W_SDA(1); } /* @brief I2C发送一个字节 @param Byte 要发送的一个字节 @retval 无 / void OLED_I2C_SendByte(uint8_t Byte) { uint8_t i; for (i = 0; i < 8; i++) { OLED_W_SDA(Byte & (0x80 >> i)); OLED_W_SCL(1); OLED_W_SCL(0); } OLED_W_SCL(1); //额外的一个时钟,不处理应答信号 OLED_W_SCL(0); } /* @brief OLED写命令 @param Command 要写入的命令 @retval 无 / void OLED_WriteCommand(uint8_t Command) { OLED_I2C_Start(); OLED_I2C_SendByte(0x78); //从机地址 OLED_I2C_SendByte(0x00); //写命令 OLED_I2C_SendByte(Command); OLED_I2C_Stop(); } /* @brief OLED写数据 @param Data 要写入的数据 @retval 无 / void OLED_WriteData(uint8_t Data) { OLED_I2C_Start(); OLED_I2C_SendByte(0x78); //从机地址 OLED_I2C_SendByte(0x40); //写数据 OLED_I2C_SendByte(Data); OLED_I2C_Stop(); } /* @brief OLED设置光标位置 @param Y 以左上角为原点,向下方向的坐标,范围:0~7 @param X 以左上角为原点,向右方向的坐标,范围:0~127 @retval 无 / void OLED_SetCursor(uint8_t Y, uint8_t X) { OLED_WriteCommand(0xB0 | Y); //设置Y位置 OLED_WriteCommand(0x10 | ((X & 0xF0) >> 4)); //设置X位置高4位 OLED_WriteCommand(0x00 | (X & 0x0F)); //设置X位置低4位 } /* @brief OLED清屏 @param 无 @retval 无 / void OLED_Clear(void) { uint8_t i, j; for (j = 0; j < 8; j++) { OLED_SetCursor(j, 0); for(i = 0; i < 128; i++) { OLED_WriteData(0x00); } } } /* @brief OLED显示一个字符 @param Line 行位置,范围:1~4 @param Column 列位置,范围:1~16 @param Char 要显示的一个字符,范围:ASCII可见字符 @retval 无 / void OLED_ShowChar(uint8_t Line, uint8_t Column, char Char) { uint8_t i; OLED_SetCursor((Line - 1) * 2, (Column - 1) * 8); //设置光标位置在上半部分 for (i = 0; i < 8; i++) { OLED_WriteData(OLED_F8x16[Char - ’ '][i]); //显示上半部分内容 } OLED_SetCursor((Line - 1) * 2 + 1, (Column - 1) * 8); //设置光标位置在下半部分 for (i = 0; i < 8; i++) { OLED_WriteData(OLED_F8x16[Char - ’ '][i + 8]); //显示下半部分内容 } } /* @brief OLED显示字符串 @param Line 起始行位置,范围:1~4 @param Column 起始列位置,范围:1~16 @param String 要显示的字符串,范围:ASCII可见字符 @retval 无 / void OLED_ShowString(uint8_t Line, uint8_t Column, char String) { uint8_t i; for (i = 0; String[i] != ‘\0’; i++) { OLED_ShowChar(Line, Column + i, String[i]); } } / @brief OLED次方函数 @retval 返回值等于X的Y次方 / uint32_t OLED_Pow(uint32_t X, uint32_t Y) { uint32_t Result = 1; while (Y–) { Result = X; } return Result; } / @brief OLED显示数字(十进制,正数) @param Line 起始行位置,范围:1~4 @param Column 起始列位置,范围:1~16 @param Number 要显示的数字,范围:0~4294967295 @param Length 要显示数字的长度,范围:1~10 @retval 无 / void OLED_ShowNum(uint8_t Line, uint8_t Column, uint32_t Number, uint8_t Length) { uint8_t i; for (i = 0; i < Length; i++) { OLED_ShowChar(Line, Column + i, Number / OLED_Pow(10, Length - i - 1) % 10 + ‘0’); } } /* @brief OLED显示数字(十进制,带符号数) @param Line 起始行位置,范围:1~4 @param Column 起始列位置,范围:1~16 @param Number 要显示的数字,范围:-2147483648~2147483647 @param Length 要显示数字的长度,范围:1~10 @retval 无 / void OLED_ShowSignedNum(uint8_t Line, uint8_t Column, int32_t Number, uint8_t Length) { uint8_t i; uint32_t Number1; if (Number >= 0) { OLED_ShowChar(Line, Column, ‘+’); Number1 = Number; } else { OLED_ShowChar(Line, Column, ‘-’); Number1 = -Number; } for (i = 0; i < Length; i++) { OLED_ShowChar(Line, Column + i + 1, Number1 / OLED_Pow(10, Length - i - 1) % 10 + ‘0’); } } /* @brief OLED显示数字(十六进制,正数) @param Line 起始行位置,范围:1~4 @param Column 起始列位置,范围:1~16 @param Number 要显示的数字,范围:0~0xFFFFFFFF @param Length 要显示数字的长度,范围:1~8 @retval 无 / void OLED_ShowHexNum(uint8_t Line, uint8_t Column, uint32_t Number, uint8_t Length) { uint8_t i, SingleNumber; for (i = 0; i < Length; i++) { SingleNumber = Number / OLED_Pow(16, Length - i - 1) % 16; if (SingleNumber < 10) { OLED_ShowChar(Line, Column + i, SingleNumber + ‘0’); } else { OLED_ShowChar(Line, Column + i, SingleNumber - 10 + ‘A’); } } } /* @brief OLED显示数字(二进制,正数) @param Line 起始行位置,范围:1~4 @param Column 起始列位置,范围:1~16 @param Number 要显示的数字,范围:0~1111 1111 1111 1111 @param Length 要显示数字的长度,范围:1~16 @retval 无 / void OLED_ShowBinNum(uint8_t Line, uint8_t Column, uint32_t Number, uint8_t Length) { uint8_t i; for (i = 0; i < Length; i++) { OLED_ShowChar(Line, Column + i, Number / OLED_Pow(2, Length - i - 1) % 2 + ‘0’); } } /* @brief 显示BMP图片 @param 图片大小:128×64 @param 起始点坐标(x,y) @param x的范围0~127 @param y的范围0~7 @retval 无 */ void OLED_DrawBMP(unsigned char x0, unsigned char y0,unsigned char x1, unsigned char y1,unsigned char BMP[]) { unsigned int j=0; unsigned char x,y; if(y1%8==0) y=y1/8; else y=y1/8+1; for(y=y0;y<y1;y++) { OLED_SetCursor(y,x0); for(x=x0;x<x1;x++) { OLED_WriteData(BMP[j++]); } } } /** @brief OLED初始化 @param 无 @retval 无 */ void OLED_Init(void) { uint32_t i, j; for (i = 0; i < 1000; i++) //上电延时 { for (j = 0; j < 1000; j++); } OLED_WriteCommand(0xAE); //关闭显示 OLED_WriteCommand(0xD5); //设置显示时钟分频比/振荡器频率 OLED_WriteCommand(0x80); OLED_WriteCommand(0xA8); //设置多路复用率 OLED_WriteCommand(0x3F); OLED_WriteCommand(0xD3); //设置显示偏移 OLED_WriteCommand(0x00); OLED_WriteCommand(0x40); //设置显示开始行 OLED_WriteCommand(0xA1); //设置左右方向,0xA1正常 0xA0左右反置 OLED_WriteCommand(0xC8); //设置上下方向,0xC8正常 0xC0上下反置 OLED_WriteCommand(0xDA); //设置COM引脚硬件配置 OLED_WriteCommand(0x12); OLED_WriteCommand(0x81); //设置对比度控制 OLED_WriteCommand(0xCF); OLED_WriteCommand(0xD9); //设置预充电周期 OLED_WriteCommand(0xF1); OLED_WriteCommand(0xDB); //设置VCOMH取消选择级别 OLED_WriteCommand(0x30); OLED_WriteCommand(0xA4); //设置整个显示打开/关闭 OLED_WriteCommand(0xA6); //设置正常/倒转显示 OLED_WriteCommand(0x8D); //设置充电泵 OLED_WriteCommand(0x14); OLED_WriteCommand(0xAF); //开启显示 OLED_Clear(); //OLED清屏 }该代码为我的OLED.C #ifndef __OLED_H #define __OLED_H #include “main.h” void OLED_Init(void); void OLED_Clear(void); void OLED_I2C_Start(void); void OLED_I2C_Stop(void); void OLED_I2C_SendByte(uint8_t Byte); void OLED_ShowChar(uint8_t Line, uint8_t Column, char Char); void OLED_ShowString(uint8_t Line, uint8_t Column, char *String); void OLED_ShowNum(uint8_t Line, uint8_t Column, uint32_t Number, uint8_t Length); void OLED_ShowSignedNum(uint8_t Line, uint8_t Column, int32_t Number, uint8_t Length); void OLED_ShowHexNum(uint8_t Line, uint8_t Column, uint32_t Number, uint8_t Length); void OLED_ShowBinNum(uint8_t Line, uint8_t Column, uint32_t Number, uint8_t Length); void OLED_DrawBMP(unsigned char x0, unsigned char y0,unsigned char x1, unsigned char y1,unsigned char BMP[]); #endif这段代码为OLED.H #ifndef __OLED_FONT_H #define __OLED_FONT_H #include “main.h” /OLED字模库,宽8像素,高16像素/ const uint8_t OLED_F8x16[][16]= { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// 0 0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00,//! 1 0x00,0x10,0x0C,0x06,0x10,0x0C,0x06,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//" 2 0x40,0xC0,0x78,0x40,0xC0,0x78,0x40,0x00, 0x04,0x3F,0x04,0x04,0x3F,0x04,0x04,0x00,//# 3 0x00,0x70,0x88,0xFC,0x08,0x30,0x00,0x00, 0x00,0x18,0x20,0xFF,0x21,0x1E,0x00,0x00,//$ 4 0xF0,0x08,0xF0,0x00,0xE0,0x18,0x00,0x00, 0x00,0x21,0x1C,0x03,0x1E,0x21,0x1E,0x00,//% 5 0x00,0xF0,0x08,0x88,0x70,0x00,0x00,0x00, 0x1E,0x21,0x23,0x24,0x19,0x27,0x21,0x10,//& 6 0x10,0x16,0x0E,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//’ 7 0x00,0x00,0x00,0xE0,0x18,0x04,0x02,0x00, 0x00,0x00,0x00,0x07,0x18,0x20,0x40,0x00,//( 8 0x00,0x02,0x04,0x18,0xE0,0x00,0x00,0x00, 0x00,0x40,0x20,0x18,0x07,0x00,0x00,0x00,//) 9 0x40,0x40,0x80,0xF0,0x80,0x40,0x40,0x00, 0x02,0x02,0x01,0x0F,0x01,0x02,0x02,0x00,//* 10 0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00, 0x01,0x01,0x01,0x1F,0x01,0x01,0x01,0x00,//+ 11 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x80,0xB0,0x70,0x00,0x00,0x00,0x00,0x00,//, 12 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,//- 13 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,//. 14 0x00,0x00,0x00,0x00,0x80,0x60,0x18,0x04, 0x00,0x60,0x18,0x06,0x01,0x00,0x00,0x00,/// 15 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00, 0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,//0 16 0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00, 0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//1 17 0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00, 0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,//2 18 0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00, 0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,//3 19 0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00, 0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,//4 20 0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00, 0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,//5 21 0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00, 0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,//6 22 0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00, 0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,//7 23 0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00, 0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,//8 24 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00, 0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,//9 25 0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00, 0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,//: 26 0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00, 0x00,0x00,0x80,0x60,0x00,0x00,0x00,0x00,//; 27 0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x00, 0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x00,//< 28 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00, 0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,//= 29 0x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00, 0x00,0x20,0x10,0x08,0x04,0x02,0x01,0x00,//> 30 0x00,0x70,0x48,0x08,0x08,0x08,0xF0,0x00, 0x00,0x00,0x00,0x30,0x36,0x01,0x00,0x00,//? 31 0xC0,0x30,0xC8,0x28,0xE8,0x10,0xE0,0x00, 0x07,0x18,0x27,0x24,0x23,0x14,0x0B,0x00,//@ 32 0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00, 0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,//A 33 0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00, 0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00,//B 34 0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00, 0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00,//C 35 0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00, 0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00,//D 36 0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00, 0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00,//E 37 0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00, 0x20,0x3F,0x20,0x00,0x03,0x00,0x00,0x00,//F 38 0xC0,0x30,0x08,0x08,0x08,0x38,0x00,0x00, 0x07,0x18,0x20,0x20,0x22,0x1E,0x02,0x00,//G 39 0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08, 0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20,//H 40 0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0x00, 0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//I 41 0x00,0x00,0x08,0x08,0xF8,0x08,0x08,0x00, 0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,0x00,//J 42 0x08,0xF8,0x88,0xC0,0x28,0x18,0x08,0x00, 0x20,0x3F,0x20,0x01,0x26,0x38,0x20,0x00,//K 43 0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00, 0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00,//L 44 0x08,0xF8,0xF8,0x00,0xF8,0xF8,0x08,0x00, 0x20,0x3F,0x00,0x3F,0x00,0x3F,0x20,0x00,//M 45 0x08,0xF8,0x30,0xC0,0x00,0x08,0xF8,0x08, 0x20,0x3F,0x20,0x00,0x07,0x18,0x3F,0x00,//N 46 0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00, 0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00,//O 47 0x08,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00, 0x20,0x3F,0x21,0x01,0x01,0x01,0x00,0x00,//P 48 0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00, 0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00,//Q 49 0x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00, 0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20,//R 50 0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00, 0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00,//S 51 0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00, 0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//T 52 0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08, 0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//U 53 0x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08, 0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00,//V 54 0xF8,0x08,0x00,0xF8,0x00,0x08,0xF8,0x00, 0x03,0x3C,0x07,0x00,0x07,0x3C,0x03,0x00,//W 55 0x08,0x18,0x68,0x80,0x80,0x68,0x18,0x08, 0x20,0x30,0x2C,0x03,0x03,0x2C,0x30,0x20,//X 56 0x08,0x38,0xC8,0x00,0xC8,0x38,0x08,0x00, 0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//Y 57 0x10,0x08,0x08,0x08,0xC8,0x38,0x08,0x00, 0x20,0x38,0x26,0x21,0x20,0x20,0x18,0x00,//Z 58 0x00,0x00,0x00,0xFE,0x02,0x02,0x02,0x00, 0x00,0x00,0x00,0x7F,0x40,0x40,0x40,0x00,//[ 59 0x00,0x0C,0x30,0xC0,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x01,0x06,0x38,0xC0,0x00,//\ 60 0x00,0x02,0x02,0x02,0xFE,0x00,0x00,0x00, 0x00,0x40,0x40,0x40,0x7F,0x00,0x00,0x00,//] 61 0x00,0x00,0x04,0x02,0x02,0x02,0x04,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//^ 62 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,//_ 63 0x00,0x02,0x02,0x04,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// 64 0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00, 0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20,//a 65 0x08,0xF8,0x00,0x80,0x80,0x00,0x00,0x00, 0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00,//b 66 0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00, 0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00,//c 67 0x00,0x00,0x00,0x80,0x80,0x88,0xF8,0x00, 0x00,0x0E,0x11,0x20,0x20,0x10,0x3F,0x20,//d 68 0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00, 0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00,//e 69 0x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x18, 0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//f 70 0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00, 0x00,0x6B,0x94,0x94,0x94,0x93,0x60,0x00,//g 71 0x08,0xF8,0x00,0x80,0x80,0x80,0x00,0x00, 0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//h 72 0x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00, 0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//i 73 0x00,0x00,0x00,0x80,0x98,0x98,0x00,0x00, 0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,//j 74 0x08,0xF8,0x00,0x00,0x80,0x80,0x80,0x00, 0x20,0x3F,0x24,0x02,0x2D,0x30,0x20,0x00,//k 75 0x00,0x08,0x08,0xF8,0x00,0x00,0x00,0x00, 0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//l 76 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00, 0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,//m 77 0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00, 0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//n 78 0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00, 0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//o 79 0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00, 0x80,0xFF,0xA1,0x20,0x20,0x11,0x0E,0x00,//p 80 0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00, 0x00,0x0E,0x11,0x20,0x20,0xA0,0xFF,0x80,//q 81 0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00, 0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00,//r 82 0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00, 0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00,//s 83 0x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00, 0x00,0x00,0x00,0x1F,0x20,0x20,0x00,0x00,//t 84 0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00, 0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20,//u 85 0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80, 0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00,//v 86 0x80,0x80,0x00,0x80,0x00,0x80,0x80,0x80, 0x0F,0x30,0x0C,0x03,0x0C,0x30,0x0F,0x00,//w 87 0x00,0x80,0x80,0x00,0x80,0x80,0x80,0x00, 0x00,0x20,0x31,0x2E,0x0E,0x31,0x20,0x00,//x 88 0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80, 0x80,0x81,0x8E,0x70,0x18,0x06,0x01,0x00,//y 89 0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00, 0x00,0x21,0x30,0x2C,0x22,0x21,0x30,0x00,//z 90 0x00,0x00,0x00,0x00,0x80,0x7C,0x02,0x02, 0x00,0x00,0x00,0x00,0x00,0x3F,0x40,0x40,//{ 91 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,//| 92 0x00,0x02,0x02,0x7C,0x80,0x00,0x00,0x00, 0x00,0x40,0x40,0x3F,0x00,0x00,0x00,0x00,//} 93 0x00,0x06,0x01,0x01,0x02,0x02,0x04,0x04, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//~ 94 }; #endif这段代码为我的OLED.Font.h。基于这三个OLED相关驱动代码,实现基于STM32 HAL库,使用STM32CUBEMX进行引脚配置,keil运行代码,生成hex文件,Proteus展示实验结果,实现对来自外部两路正交的方波进行计数,然后计数结果用Proteus里的OLED12864I2C显示(没有使用I2C,使用PB6,PB7模拟SCL,SDA,基于我上述提供的OLED相关代码)。给出实现流程。 回答 向我提问的人太多了。正在努力扩容中,请稍后再试。 #include “OLED_Font.h” #include “OLED.h” /引脚配置/ #define OLED_W_SCL(x) HAL_GPIO_WritePin(SCL_GPIO_Port, SCL_Pin, (GPIO_PinState)(x)) #define OLED_W_SDA(x) HAL_GPIO_WritePin(SDA_GPIO_Port, SDA_Pin, (GPIO_PinState)(x)) /** @brief I2C开始 @param 无 @retval 无 / void OLED_I2C_Start(void) { OLED_W_SDA(1); OLED_W_SCL(1); OLED_W_SDA(0); OLED_W_SCL(0); } /* @brief I2C停止 @param 无 @retval 无 / void OLED_I2C_Stop(void) { OLED_W_SDA(0); OLED_W_SCL(1); OLED_W_SDA(1); } /* @brief I2C发送一个字节 @param Byte 要发送的一个字节 @retval 无 / void OLED_I2C_SendByte(uint8_t Byte) { uint8_t i; for (i = 0; i < 8; i++) { OLED_W_SDA(Byte & (0x80 >> i)); OLED_W_SCL(1); OLED_W_SCL(0); } OLED_W_SCL(1); //额外的一个时钟,不处理应答信号 OLED_W_SCL(0); } /* @brief OLED写命令 @param Command 要写入的命令 @retval 无 / void OLED_WriteCommand(uint8_t Command) { OLED_I2C_Start(); OLED_I2C_SendByte(0x78); //从机地址 OLED_I2C_SendByte(0x00); //写命令 OLED_I2C_SendByte(Command); OLED_I2C_Stop(); } /* @brief OLED写数据 @param Data 要写入的数据 @retval 无 / void OLED_WriteData(uint8_t Data) { OLED_I2C_Start(); OLED_I2C_SendByte(0x78); //从机地址 OLED_I2C_SendByte(0x40); //写数据 OLED_I2C_SendByte(Data); OLED_I2C_Stop(); } /* @brief OLED设置光标位置 @param Y 以左上角为原点,向下方向的坐标,范围:0~7 @param X 以左上角为原点,向右方向的坐标,范围:0~127 @retval 无 / void OLED_SetCursor(uint8_t Y, uint8_t X) { OLED_WriteCommand(0xB0 | Y); //设置Y位置 OLED_WriteCommand(0x10 | ((X & 0xF0) >> 4)); //设置X位置高4位 OLED_WriteCommand(0x00 | (X & 0x0F)); //设置X位置低4位 } /* @brief OLED清屏 @param 无 @retval 无 / void OLED_Clear(void) { uint8_t i, j; for (j = 0; j < 8; j++) { OLED_SetCursor(j, 0); for(i = 0; i < 128; i++) { OLED_WriteData(0x00); } } } /* @brief OLED显示一个字符 @param Line 行位置,范围:1~4 @param Column 列位置,范围:1~16 @param Char 要显示的一个字符,范围:ASCII可见字符 @retval 无 / void OLED_ShowChar(uint8_t Line, uint8_t Column, char Char) { uint8_t i; OLED_SetCursor((Line - 1) * 2, (Column - 1) * 8); //设置光标位置在上半部分 for (i = 0; i < 8; i++) { OLED_WriteData(OLED_F8x16[Char - ’ '][i]); //显示上半部分内容 } OLED_SetCursor((Line - 1) * 2 + 1, (Column - 1) * 8); //设置光标位置在下半部分 for (i = 0; i < 8; i++) { OLED_WriteData(OLED_F8x16[Char - ’ '][i + 8]); //显示下半部分内容 } } /* @brief OLED显示字符串 @param Line 起始行位置,范围:1~4 @param Column 起始列位置,范围:1~16 @param String 要显示的字符串,范围:ASCII可见字符 @retval 无 / void OLED_ShowString(uint8_t Line, uint8_t Column, char String) { uint8_t i; for (i = 0; String[i] != ‘\0’; i++) { OLED_ShowChar(Line, Column + i, String[i]); } } / @brief OLED次方函数 @retval 返回值等于X的Y次方 / uint32_t OLED_Pow(uint32_t X, uint32_t Y) { uint32_t Result = 1; while (Y–) { Result = X; } return Result; } / @brief OLED显示数字(十进制,正数) @param Line 起始行位置,范围:1~4 @param Column 起始列位置,范围:1~16 @param Number 要显示的数字,范围:0~4294967295 @param Length 要显示数字的长度,范围:1~10 @retval 无 / void OLED_ShowNum(uint8_t Line, uint8_t Column, uint32_t Number, uint8_t Length) { uint8_t i; for (i = 0; i < Length; i++) { OLED_ShowChar(Line, Column + i, Number / OLED_Pow(10, Length - i - 1) % 10 + ‘0’); } } /* @brief OLED显示数字(十进制,带符号数) @param Line 起始行位置,范围:1~4 @param Column 起始列位置,范围:1~16 @param Number 要显示的数字,范围:-2147483648~2147483647 @param Length 要显示数字的长度,范围:1~10 @retval 无 / void OLED_ShowSignedNum(uint8_t Line, uint8_t Column, int32_t Number, uint8_t Length) { uint8_t i; uint32_t Number1; if (Number >= 0) { OLED_ShowChar(Line, Column, ‘+’); Number1 = Number; } else { OLED_ShowChar(Line, Column, ‘-’); Number1 = -Number; } for (i = 0; i < Length; i++) { OLED_ShowChar(Line, Column + i + 1, Number1 / OLED_Pow(10, Length - i - 1) % 10 + ‘0’); } } /* @brief OLED显示数字(十六进制,正数) @param Line 起始行位置,范围:1~4 @param Column 起始列位置,范围:1~16 @param Number 要显示的数字,范围:0~0xFFFFFFFF @param Length 要显示数字的长度,范围:1~8 @retval 无 / void OLED_ShowHexNum(uint8_t Line, uint8_t Column, uint32_t Number, uint8_t Length) { uint8_t i, SingleNumber; for (i = 0; i < Length; i++) { SingleNumber = Number / OLED_Pow(16, Length - i - 1) % 16; if (SingleNumber < 10) { OLED_ShowChar(Line, Column + i, SingleNumber + ‘0’); } else { OLED_ShowChar(Line, Column + i, SingleNumber - 10 + ‘A’); } } } /* @brief OLED显示数字(二进制,正数) @param Line 起始行位置,范围:1~4 @param Column 起始列位置,范围:1~16 @param Number 要显示的数字,范围:0~1111 1111 1111 1111 @param Length 要显示数字的长度,范围:1~16 @retval 无 / void OLED_ShowBinNum(uint8_t Line, uint8_t Column, uint32_t Number, uint8_t Length) { uint8_t i; for (i = 0; i < Length; i++) { OLED_ShowChar(Line, Column + i, Number / OLED_Pow(2, Length - i - 1) % 2 + ‘0’); } } /* @brief 显示BMP图片 @param 图片大小:128×64 @param 起始点坐标(x,y) @param x的范围0~127 @param y的范围0~7 @retval 无 */ void OLED_DrawBMP(unsigned char x0, unsigned char y0,unsigned char x1, unsigned char y1,unsigned char BMP[]) { unsigned int j=0; unsigned char x,y; if(y1%8==0) y=y1/8; else y=y1/8+1; for(y=y0;y<y1;y++) { OLED_SetCursor(y,x0); for(x=x0;x<x1;x++) { OLED_WriteData(BMP[j++]); } } } /** @brief OLED初始化 @param 无 @retval 无 */ void OLED_Init(void) { uint32_t i, j; for (i = 0; i < 1000; i++) //上电延时 { for (j = 0; j < 1000; j++); } OLED_WriteCommand(0xAE); //关闭显示 OLED_WriteCommand(0xD5); //设置显示时钟分频比/振荡器频率 OLED_WriteCommand(0x80); OLED_WriteCommand(0xA8); //设置多路复用率 OLED_WriteCommand(0x3F); OLED_WriteCommand(0xD3); //设置显示偏移 OLED_WriteCommand(0x00); OLED_WriteCommand(0x40); //设置显示开始行 OLED_WriteCommand(0xA1); //设置左右方向,0xA1正常 0xA0左右反置 OLED_WriteCommand(0xC8); //设置上下方向,0xC8正常 0xC0上下反置 OLED_WriteCommand(0xDA); //设置COM引脚硬件配置 OLED_WriteCommand(0x12); OLED_WriteCommand(0x81); //设置对比度控制 OLED_WriteCommand(0xCF); OLED_WriteCommand(0xD9); //设置预充电周期 OLED_WriteCommand(0xF1); OLED_WriteCommand(0xDB); //设置VCOMH取消选择级别 OLED_WriteCommand(0x30); OLED_WriteCommand(0xA4); //设置整个显示打开/关闭 OLED_WriteCommand(0xA6); //设置正常/倒转显示 OLED_WriteCommand(0x8D); //设置充电泵 OLED_WriteCommand(0x14); OLED_WriteCommand(0xAF); //开启显示 OLED_Clear(); //OLED清屏 }该代码为我的OLED.C #ifndef __OLED_H #define __OLED_H #include “main.h” void OLED_Init(void); void OLED_Clear(void); void OLED_I2C_Start(void); void OLED_I2C_Stop(void); void OLED_I2C_SendByte(uint8_t Byte); void OLED_ShowChar(uint8_t Line, uint8_t Column, char Char); void OLED_ShowString(uint8_t Line, uint8_t Column, char *String); void OLED_ShowNum(uint8_t Line, uint8_t Column, uint32_t Number, uint8_t Length); void OLED_ShowSignedNum(uint8_t Line, uint8_t Column, int32_t Number, uint8_t Length); void OLED_ShowHexNum(uint8_t Line, uint8_t Column, uint32_t Number, uint8_t Length); void OLED_ShowBinNum(uint8_t Line, uint8_t Column, uint32_t Number, uint8_t Length); void OLED_DrawBMP(unsigned char x0, unsigned char y0,unsigned char x1, unsigned char y1,unsigned char BMP[]); #endif这段代码为OLED.H #ifndef __OLED_FONT_H #define __OLED_FONT_H #include “main.h” /OLED字模库,宽8像素,高16像素/ const uint8_t OLED_F8x16[][16]= { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// 0 0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00,//! 1 0x00,0x10,0x0C,0x06,0x10,0x0C,0x06,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//" 2 0x40,0xC0,0x78,0x40,0xC0,0x78,0x40,0x00, 0x04,0x3F,0x04,0x04,0x3F,0x04,0x04,0x00,//# 3 0x00,0x70,0x88,0xFC,0x08,0x30,0x00,0x00, 0x00,0x18,0x20,0xFF,0x21,0x1E,0x00,0x00,//$ 4 0xF0,0x08,0xF0,0x00,0xE0,0x18,0x00,0x00, 0x00,0x21,0x1C,0x03,0x1E,0x21,0x1E,0x00,//% 5 0x00,0xF0,0x08,0x88,0x70,0x00,0x00,0x00, 0x1E,0x21,0x23,0x24,0x19,0x27,0x21,0x10,//& 6 0x10,0x16,0x0E,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//’ 7 0x00,0x00,0x00,0xE0,0x18,0x04,0x02,0x00, 0x00,0x00,0x00,0x07,0x18,0x20,0x40,0x00,//( 8 0x00,0x02,0x04,0x18,0xE0,0x00,0x00,0x00, 0x00,0x40,0x20,0x18,0x07,0x00,0x00,0x00,//) 9 0x40,0x40,0x80,0xF0,0x80,0x40,0x40,0x00, 0x02,0x02,0x01,0x0F,0x01,0x02,0x02,0x00,//* 10 0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00, 0x01,0x01,0x01,0x1F,0x01,0x01,0x01,0x00,//+ 11 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x80,0xB0,0x70,0x00,0x00,0x00,0x00,0x00,//, 12 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,//- 13 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,//. 14 0x00,0x00,0x00,0x00,0x80,0x60,0x18,0x04, 0x00,0x60,0x18,0x06,0x01,0x00,0x00,0x00,/// 15 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00, 0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,//0 16 0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00, 0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//1 17 0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00, 0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,//2 18 0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00, 0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,//3 19 0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00, 0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,//4 20 0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00, 0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,//5 21 0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00, 0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,//6 22 0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00, 0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,//7 23 0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00, 0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,//8 24 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00, 0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,//9 25 0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00, 0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,//: 26 0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00, 0x00,0x00,0x80,0x60,0x00,0x00,0x00,0x00,//; 27 0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x00, 0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x00,//< 28 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00, 0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,//= 29 0x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00, 0x00,0x20,0x10,0x08,0x04,0x02,0x01,0x00,//> 30 0x00,0x70,0x48,0x08,0x08,0x08,0xF0,0x00, 0x00,0x00,0x00,0x30,0x36,0x01,0x00,0x00,//? 31 0xC0,0x30,0xC8,0x28,0xE8,0x10,0xE0,0x00, 0x07,0x18,0x27,0x24,0x23,0x14,0x0B,0x00,//@ 32 0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00, 0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,//A 33 0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00, 0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00,//B 34 0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00, 0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00,//C 35 0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00, 0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00,//D 36 0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00, 0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00,//E 37 0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00, 0x20,0x3F,0x20,0x00,0x03,0x00,0x00,0x00,//F 38 0xC0,0x30,0x08,0x08,0x08,0x38,0x00,0x00, 0x07,0x18,0x20,0x20,0x22,0x1E,0x02,0x00,//G 39 0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08, 0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20,//H 40 0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0x00, 0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//I 41 0x00,0x00,0x08,0x08,0xF8,0x08,0x08,0x00, 0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,0x00,//J 42 0x08,0xF8,0x88,0xC0,0x28,0x18,0x08,0x00, 0x20,0x3F,0x20,0x01,0x26,0x38,0x20,0x00,//K 43 0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00, 0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00,//L 44 0x08,0xF8,0xF8,0x00,0xF8,0xF8,0x08,0x00, 0x20,0x3F,0x00,0x3F,0x00,0x3F,0x20,0x00,//M 45 0x08,0xF8,0x30,0xC0,0x00,0x08,0xF8,0x08, 0x20,0x3F,0x20,0x00,0x07,0x18,0x3F,0x00,//N 46 0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00, 0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00,//O 47 0x08,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00, 0x20,0x3F,0x21,0x01,0x01,0x01,0x00,0x00,//P 48 0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00, 0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00,//Q 49 0x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00, 0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20,//R 50 0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00, 0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00,//S 51 0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00, 0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//T 52 0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08, 0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//U 53 0x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08, 0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00,//V 54 0xF8,0x08,0x00,0xF8,0x00,0x08,0xF8,0x00, 0x03,0x3C,0x07,0x00,0x07,0x3C,0x03,0x00,//W 55 0x08,0x18,0x68,0x80,0x80,0x68,0x18,0x08, 0x20,0x30,0x2C,0x03,0x03,0x2C,0x30,0x20,//X 56 0x08,0x38,0xC8,0x00,0xC8,0x38,0x08,0x00, 0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//Y 57 0x10,0x08,0x08,0x08,0xC8,0x38,0x08,0x00, 0x20,0x38,0x26,0x21,0x20,0x20,0x18,0x00,//Z 58 0x00,0x00,0x00,0xFE,0x02,0x02,0x02,0x00, 0x00,0x00,0x00,0x7F,0x40,0x40,0x40,0x00,//[ 59 0x00,0x0C,0x30,0xC0,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x01,0x06,0x38,0xC0,0x00,//\ 60 0x00,0x02,0x02,0x02,0xFE,0x00,0x00,0x00, 0x00,0x40,0x40,0x40,0x7F,0x00,0x00,0x00,//] 61 0x00,0x00,0x04,0x02,0x02,0x02,0x04,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//^ 62 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,//_ 63 0x00,0x02,0x02,0x04,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// 64 0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00, 0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20,//a 65 0x08,0xF8,0x00,0x80,0x80,0x00,0x00,0x00, 0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00,//b 66 0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00, 0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00,//c 67 0x00,0x00,0x00,0x80,0x80,0x88,0xF8,0x00, 0x00,0x0E,0x11,0x20,0x20,0x10,0x3F,0x20,//d 68 0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00, 0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00,//e 69 0x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x18, 0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//f 70 0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00, 0x00,0x6B,0x94,0x94,0x94,0x93,0x60,0x00,//g 71 0x08,0xF8,0x00,0x80,0x80,0x80,0x00,0x00, 0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//h 72 0x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00, 0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//i 73 0x00,0x00,0x00,0x80,0x98,0x98,0x00,0x00, 0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,//j 74 0x08,0xF8,0x00,0x00,0x80,0x80,0x80,0x00, 0x20,0x3F,0x24,0x02,0x2D,0x30,0x20,0x00,//k 75 0x00,0x08,0x08,0xF8,0x00,0x00,0x00,0x00, 0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//l 76 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00, 0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,//m 77 0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00, 0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//n 78 0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00, 0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//o 79 0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00, 0x80,0xFF,0xA1,0x20,0x20,0x11,0x0E,0x00,//p 80 0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00, 0x00,0x0E,0x11,0x20,0x20,0xA0,0xFF,0x80,//q 81 0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00, 0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00,//r 82 0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00, 0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00,//s 83 0x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00, 0x00,0x00,0x00,0x1F,0x20,0x20,0x00,0x00,//t 84 0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00, 0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20,//u 85 0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80, 0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00,//v 86 0x80,0x80,0x00,0x80,0x00,0x80,0x80,0x80, 0x0F,0x30,0x0C,0x03,0x0C,0x30,0x0F,0x00,//w 87 0x00,0x80,0x80,0x00,0x80,0x80,0x80,0x00, 0x00,0x20,0x31,0x2E,0x0E,0x31,0x20,0x00,//x 88 0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80, 0x80,0x81,0x8E,0x70,0x18,0x06,0x01,0x00,//y 89 0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00, 0x00,0x21,0x30,0x2C,0x22,0x21,0x30,0x00,//z 90 0x00,0x00,0x00,0x00,0x80,0x7C,0x02,0x02, 0x00,0x00,0x00,0x00,0x00,0x3F,0x40,0x40,//{ 91 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,//| 92 0x00,0x02,0x02,0x7C,0x80,0x00,0x00,0x00, 0x00,0x40,0x40,0x3F,0x00,0x00,0x00,0x00,//} 93 0x00,0x06,0x01,0x01,0x02,0x02,0x04,0x04, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//~ 94 }; #endif这段代码为我的OLED.Font.h。基于这三个OLED相关驱动代码,实现基于STM32 HAL库,使用STM32CUBEMX进行引脚配置,keil运行代码,生成hex文件,Proteus展示实验结果,实现对来自外部两路正交的方波(该方波为弦波经迟滞比较器后形成的方波,幅值为400mv)进行计数,然后计数结果用Proteus里的OLED12864I2C显示(没有使用I2C,使用PB6,PB7模拟SCL,SDA,基于我上述提供的OLED相关代码)。给出实现流程。

原始数据: WriteComm(0xF0); WriteData(0x28); WriteComm(0xF2); WriteData(0x28); WriteComm(0x73); WriteData(0xC0); WriteComm(0x7C); WriteData(0xD1); WriteComm(0x83); WriteData(0xE0); WriteComm(0x84); WriteData(0x61); WriteComm(0xF2); WriteData(0x82); WriteComm(0xF0); WriteData(0x00); WriteComm(0xF0); WriteData(0x01); WriteComm(0xF1); WriteData(0x01); WriteComm(0xB0); WriteData(0x52); WriteComm(0xB1); WriteData(0x21); WriteComm(0xB2); WriteData(0x38); WriteComm(0xB3); WriteData(0x01); WriteComm(0xB4); WriteData(0x46); WriteComm(0xB5); WriteData(0x34); WriteComm(0xB6); WriteData(0xAA); WriteComm(0xB7); WriteData(0x30); WriteComm(0xB8); WriteData(0x8C); WriteComm(0xB9); WriteData(0x15); WriteComm(0xBA); WriteData(0x00); WriteComm(0xBB); WriteData(0x08); WriteComm(0xBC); WriteData(0x08); WriteComm(0xBD); WriteData(0x00); WriteComm(0xBE); WriteData(0x00); WriteComm(0xBF); WriteData(0x07); WriteComm(0xC0); WriteData(0x80); WriteComm(0xC1); WriteData(0x0B); WriteComm(0xC2); WriteData(0x35); WriteComm(0xC3); WriteData(0x80); WriteComm(0xC4); WriteData(0x0B); WriteComm(0xC5); WriteData(0x35); WriteComm(0xC6); WriteData(0xA9); WriteComm(0xC7); WriteData(0x41); WriteComm(0xC8); WriteData(0x01); WriteComm(0xC9); WriteData(0xA9); WriteComm(0xCA); WriteData(0x41); WriteComm(0xCB); WriteData(0x01); WriteComm(0xCC); WriteData(0x7F); WriteComm(0xCD); WriteData(0x7F); WriteComm(0xCE); WriteData(0xFF); WriteComm(0xD0); WriteData(0xD1); WriteComm(0xD1); WriteData(0x40); WriteComm(0xD2); WriteData(0x7E); WriteComm(0xF5); WriteData(0x00); WriteData(0xA5); WriteComm(0xF1); WriteData(0x10); WriteComm(0xF0); WriteData(0x00); WriteComm(0xF0); WriteData(0x02); WriteComm(0xE0); WriteData(0xF0); WriteData(0x03); WriteData(0x06); WriteData(0x08); WriteData(0x07); WriteData(0x04); WriteData(0x2A); WriteData(0x43); WriteData(0x44); WriteData(0x39); WriteData(0x15); WriteData(0x15); WriteData(0x2B); WriteData(0x31); WriteComm(0xE1); WriteData(0xF0); WriteData(0x03); WriteData(0x06); WriteData(0x08); WriteData(0x07); WriteData(0x23); WriteData(0x29); WriteData(0x33); WriteData(0x43); WriteData(0x39); WriteData(0x15); WriteData(0x15); WriteData(0x2A); WriteData(0x30); WriteComm(0xF0); WriteData(0x10); WriteComm(0xF3); WriteData(0x10); WriteComm(0xE0); WriteData(0x08); WriteComm(0xE1); WriteData(0x00); WriteComm(0xE2); WriteData(0x08); WriteComm(0xE3); WriteData(0x00); WriteComm(0xE4); WriteData(0xE0); WriteComm(0xE5); WriteData(0x06); WriteComm(0xE6); WriteData(0x21); WriteComm(0xE7); WriteData(0x10); WriteComm(0xE8); WriteData(0x45); WriteComm(0xE9); WriteData(0x82); WriteComm(0xEA); WriteData(0xE4); WriteComm(0xEB); WriteData(0x00); WriteComm(0xEC); WriteData(0x80); WriteComm(0xED); WriteData(0x14); WriteComm(0xEE); WriteData(0xFF); WriteComm(0xEF); WriteData(0x00); WriteComm(0xF8); WriteData(0xFF); WriteComm(0xF9); WriteData(0x00); WriteComm(0xFA); WriteData(0x00); WriteComm(0xFB); WriteData(0x30); WriteComm(0xFC); WriteData(0x00); WriteComm(0xFD); WriteData(0x00); WriteComm(0xFE); WriteData(0x00); WriteComm(0xFF); WriteData(0x00); WriteComm(0x60); WriteData(0x70); WriteComm(0x61); WriteData(0x02); WriteComm(0x62); WriteData(0x08); WriteComm(0x63); WriteData(0x43); WriteComm(0x64); WriteData(0x05); WriteComm(0x65); WriteData(0x08); WriteComm(0x66); WriteData(0x00); WriteComm(0x67); WriteData(0x00); WriteComm(0x68); WriteData(0x00); WriteComm(0x69); WriteData(0x00); WriteComm(0x6A); WriteData(0x00); WriteComm(0x6B); WriteData(0x00); WriteComm(0x70); WriteData(0x70); WriteComm(0x71); WriteData(0x01); WriteComm(0x72); WriteData(0x08); WriteComm(0x73); WriteData(0x43); WriteComm(0x74); WriteData(0x04); WriteComm(0x75); WriteData(0x08); WriteComm(0x76); WriteData(0x00); WriteComm(0x77); WriteData(0x00); WriteComm(0x78); WriteData(0x00); WriteComm(0x79); WriteData(0x00); WriteComm(0x7A); WriteData(0x00); WriteComm(0x7B); WriteData(0x00); WriteComm(0x80); WriteData(0x58); WriteComm(0x81); WriteData(0x00); WriteComm(0x82); WriteData(0x04); WriteComm(0x83); WriteData(0x03); WriteComm(0x84); WriteData(0x0C); WriteComm(0x85); WriteData(0x00); WriteComm(0x86); WriteData(0x00); WriteComm(0x87); WriteData(0x00); WriteComm(0x88); WriteData(0x58); WriteComm(0x89); WriteData(0x00); WriteComm(0x8A); WriteData(0x06); WriteComm(0x8B); WriteData(0x03); WriteComm(0x8C); WriteData(0x0E); WriteComm(0x8D); WriteData(0x00); WriteComm(0x8E); WriteData(0x00); WriteComm(0x8F); WriteData(0x00); WriteComm(0x90); WriteData(0x58); WriteComm(0x91); WriteData(0x00); WriteComm(0x92); WriteData(0x08); WriteComm(0x93); WriteData(0x03); WriteComm(0x94); WriteData(0x08); WriteComm(0x95); WriteData(0x00); WriteComm(0x96); WriteData(0x00); WriteComm(0x97); WriteData(0x00); WriteComm(0x98); WriteData(0x58); WriteComm(0x99); WriteData(0x00); WriteComm(0x9A); WriteData(0x0A); WriteComm(0x9B); WriteData(0x03); WriteComm(0x9C); WriteData(0x0A); WriteComm(0x9D); WriteData(0x00); WriteComm(0x9E); WriteData(0x00); WriteComm(0x9F); WriteData(0x00); WriteComm(0xA0); WriteData(0x58); WriteComm(0xA1); WriteData(0x00); WriteComm(0xA2); WriteData(0x03); WriteComm(0xA3); WriteData(0x03); WriteComm(0xA4); WriteData(0x0B); WriteComm(0xA5); WriteData(0x00); WriteComm(0xA6); WriteData(0x00); WriteComm(0xA7); WriteData(0x00); WriteComm(0xA8); WriteData(0x58); WriteComm(0xA9); WriteData(0x00); WriteComm(0xAA); WriteData(0x05); WriteComm(0xAB); WriteData(0x03); WriteComm(0xAC); WriteData(0x0D); WriteComm(0xAD); WriteData(0x00); WriteComm(0xAE); WriteData(0x00); WriteComm(0xAF); WriteData(0x00); WriteComm(0xB0); WriteData(0x58); WriteComm(0xB1); WriteData(0x00); WriteComm(0xB2); WriteData(0x07); WriteComm(0xB3); WriteData(0x03); WriteComm(0xB4); WriteData(0x07); WriteComm(0xB5); WriteData(0x00); WriteComm(0xB6); WriteData(0x00); WriteComm(0xB7); WriteData(0x00); WriteComm(0xB8); WriteData(0x58); WriteComm(0xB9); WriteData(0x00); WriteComm(0xBA); WriteData(0x09); WriteComm(0xBB); WriteData(0x03); WriteComm(0xBC); WriteData(0x09); WriteComm(0xBD); WriteData(0x00); WriteComm(0xBE); WriteData(0x00); WriteComm(0xBF); WriteData(0x00); WriteComm(0xC0); WriteData(0x22); WriteComm(0xC1); WriteData(0xFF); WriteComm(0xC2); WriteData(0x10); WriteComm(0xC3); WriteData(0x74); WriteComm(0xC4); WriteData(0x65); WriteComm(0xC5); WriteData(0x56); WriteComm(0xC6); WriteData(0x47); WriteComm(0xC7); WriteData(0x01); WriteComm(0xC8); WriteData(0xFF); WriteComm(0xC9); WriteData(0xFF); WriteComm(0xD0); WriteData(0x22); WriteComm(0xD1); WriteData(0xFF); WriteComm(0xD2); WriteData(0x10); WriteComm(0xD3); WriteData(0x74); WriteComm(0xD4); WriteData(0x65); WriteComm(0xD5); WriteData(0x56); WriteComm(0xD6); WriteData(0x47); WriteComm(0xD7); WriteData(0x01); WriteComm(0xD8); WriteData(0xFF); WriteComm(0xD9); WriteData(0xFF); WriteComm(0xF3); WriteData(0x01); WriteComm(0xF0); WriteData(0x00); WriteComm(0x21); WriteComm(0x35); WriteComm(0x3a); WriteData(0x55); 写入的数据: { 0xF0 ,1, 0x28 }, { 0xF2 ,1, 0x28 }, { 0x73 ,1, 0xC0 }, { 0x7C ,1, 0xD1 }, { 0x83 ,1, 0xE0 }, { 0x84 ,1, 0x61 }, { 0xF2 ,1, 0x82 }, { 0xF0 ,1, 0x00 }, { 0xF0 ,1, 0x01 }, { 0xF1 ,1, 0x01 }, { 0xB0 ,1, 0x52 }, { 0xB1 ,1, 0x21 }, { 0xB2 ,1, 0x38 }, { 0xB3 ,1, 0x01 }, { 0xB4 ,1, 0x46 }, { 0xB5 ,1, 0x34 }, { 0xB6 ,1, 0xAA }, { 0xB7 ,1, 0x30 }, { 0xB8 ,1, 0x8C }, { 0xB9 ,1, 0x15 }, { 0xBA ,1, 0x00 }, { 0xBB ,1, 0x08 }, { 0xBC ,1, 0x08 }, { 0xBD ,1, 0x00 }, { 0xBE ,1, 0x00 }, { 0xBF ,1, 0x07 }, { 0xC0 ,1, 0x80 }, { 0xC1 ,1, 0x0B }, { 0xC2 ,1, 0x35 }, { 0xC3 ,1, 0x80 }, { 0xC4 ,1, 0x0B }, { 0xC5 ,1, 0x35 }, { 0xC6 ,1, 0xA9 }, { 0xC7 ,1, 0x41 }, { 0xC8 ,1, 0x01 }, { 0xC9 ,1, 0xA9 }, { 0xCA ,1, 0x41 }, { 0xCB ,1, 0x01 }, { 0xCC ,1, 0x7F }, { 0xCD ,1, 0x7F }, { 0xCE ,1, 0xFF }, { 0xD0 ,1, 0xD1 }, { 0xD1 ,1, 0x40 }, { 0xD2 ,1, 0x7E }, { 0xF5 ,2, 0x00, 0xA5}, { 0xF1 ,1, 0x10 }, { 0xF0 ,1, 0x00 }, { 0xF0 ,1, 0x02 }, { 0xE0 ,14, 0xF0,0x03,0x06,0x08,0x07,0x04,0x2A,0x43,0x44,0x39,0x15,0x15,0x2B,0x31 }, // 0xE0命令的14个数据 { 0xE1 ,14, 0xF0,0x03,0x06,0x08,0x07,0x23,0x29,0x33,0x43,0x39,0x15,0x15,0x2A,0x30 }, // 0xE1命令的14个数据 { 0xF0 ,1, 0x10 }, { 0xF3 ,1, 0x10 }, { 0xE0 ,1, 0x08 }, { 0xE1 ,1, 0x00 }, { 0xE2 ,1, 0x08 }, { 0xE3 ,1, 0x00 }, { 0xE4 ,1, 0xE0 }, { 0xE5 ,1, 0x06 }, { 0xE6 ,1, 0x21 }, { 0xE7 ,1, 0x10 }, { 0xE8 ,1, 0x45 }, { 0xE9 ,1, 0x82 }, { 0xEA ,1, 0xE4 }, { 0xEB ,1, 0x00 }, { 0xEC ,1, 0x80 }, { 0xED ,1, 0x14 }, { 0xEE ,1, 0xFF }, { 0xEF ,1, 0x00 }, { 0xF8 ,1, 0xFF }, { 0xF9 ,1, 0x00 }, { 0xFA ,1, 0x00 }, { 0xFB ,1, 0x30 }, { 0xFC ,1, 0x00 }, { 0xFD ,1, 0x00 }, { 0xFE ,1, 0x00 }, { 0xFF ,1, 0x00 }, { 0x60 ,1, 0x70 }, { 0x61 ,1, 0x02 }, { 0x62 ,1, 0x08 }, { 0x63 ,1, 0x43 }, { 0x64 ,1, 0x05 }, { 0x65 ,1, 0x08 }, { 0x66 ,1, 0x00 }, { 0x67 ,1, 0x00 }, { 0x68 ,1, 0x00 }, { 0x69 ,1, 0x00 }, { 0x6A ,1, 0x00 }, { 0x6B ,1, 0x00 }, { 0x70 ,1, 0x70 }, { 0x71 ,1, 0x01 }, { 0x72 ,1, 0x08 }, { 0x73 ,1, 0x43 }, { 0x74 ,1, 0x04 }, { 0x75 ,1, 0x08 }, { 0x76 ,1, 0x00 }, { 0x77 ,1, 0x00 }, { 0x78 ,1, 0x00 }, { 0x79 ,1, 0x00 }, { 0x7A ,1, 0x00 }, { 0x7B ,1, 0x00 }, { 0x80 ,1, 0x58 }, { 0x81 ,1, 0x00 }, { 0x82 ,1, 0x04 }, { 0x83 ,1, 0x03 }, { 0x84 ,1, 0x0C }, { 0x85 ,1, 0x00 }, { 0x86 ,1, 0x00 }, { 0x87 ,1, 0x00 }, { 0x88 ,1, 0x58 }, { 0x89 ,1, 0x00 }, { 0x8A ,1, 0x06 }, { 0x8B ,1, 0x03 }, { 0x8C ,1, 0x0E }, { 0x8D ,1, 0x00 }, { 0x8E ,1, 0x00 }, { 0x8F ,1, 0x00 }, { 0x90 ,1, 0x58 }, { 0x91 ,1, 0x00 }, { 0x92 ,1, 0x08 }, { 0x93 ,1, 0x03 }, { 0x94 ,1, 0x08 }, { 0x95 ,1, 0x00 }, { 0x96 ,1, 0x00 }, { 0x97 ,1, 0x00 }, { 0x98 ,1, 0x58 }, { 0x99 ,1, 0x00 }, { 0x9A ,1, 0x0A }, { 0x9B ,1, 0x03 }, { 0x9C ,1, 0x0A }, { 0x9D ,1, 0x00 }, { 0x9E ,1, 0x00 }, { 0x9F ,1, 0x00 }, { 0xA0 ,1, 0x58 }, { 0xA1 ,1, 0x00 }, { 0xA2 ,1, 0x03 }, { 0xA3 ,1, 0x03 }, { 0xA4 ,1, 0x0B }, { 0xA5 ,1, 0x00 }, { 0xA6 ,1, 0x00 }, { 0xA7 ,1, 0x00 }, { 0xA8 ,1, 0x58 }, { 0xA9 ,1, 0x00 }, { 0xAA ,1, 0x05 }, { 0xAB ,1, 0x03 }, { 0xAC ,1, 0x0D }, { 0xAD ,1, 0x00 }, { 0xAE ,1, 0x00 }, { 0xAF ,1, 0x00 }, { 0xB0 ,1, 0x58 }, { 0xB1 ,1, 0x00 }, { 0xB2 ,1, 0x07 }, { 0xB3 ,1, 0x03 }, { 0xB4 ,1, 0x07 }, { 0xB5 ,1, 0x00 }, { 0xB6 ,1, 0x00 }, { 0xB7 ,1, 0x00 }, { 0xB8 ,1, 0x58 }, { 0xB9 ,1, 0x00 }, { 0xBA ,1, 0x09 }, { 0xBB ,1, 0x03 }, { 0xBC ,1, 0x09 }, { 0xBD ,1, 0x00 }, { 0xBE ,1, 0x00 }, { 0xBF ,1, 0x00 }, { 0xC0 ,1, 0x22 }, { 0xC1 ,1, 0xFF }, { 0xC2 ,1, 0x10 }, { 0xC3 ,1, 0x74 }, { 0xC4 ,1, 0x65 }, { 0xC5 ,1, 0x56 }, { 0xC6 ,1, 0x47 }, { 0xC7 ,1, 0x01 }, { 0xC8 ,1, 0xFF }, { 0xC9 ,1, 0xFF }, { 0xD0 ,1, 0x22 }, { 0xD1 ,1, 0xFF }, { 0xD2 ,1, 0x10 }, { 0xD3 ,1, 0x74 }, { 0xD4 ,1, 0x65 }, { 0xD5 ,1, 0x56 }, { 0xD6 ,1, 0x47 }, { 0xD7 ,1, 0x01 }, { 0xD8 ,1, 0xFF }, { 0xD9 ,1, 0xFF }, { 0xF3 ,1, 0x01 }, { 0xF0 ,1, 0x00 }, { 0x21 ,0, 0x00 }, // 无数据命令 { 0x35 ,0, 0x00 }, // 无数据命令 { 0x3A ,1, 0x55 }, // 注意:原始信息中为0x3a 参照上面给的两份数据(原始数据和已写数据),帮我把下面的原始数据转成已写数据: WriteComm(0xF0); WriteData(0x28); WriteComm(0xF2); WriteData(0x28); WriteComm(0x73); WriteData(0xF0); WriteComm(0x7C); WriteData(0xD1); WriteComm(0x83); WriteData(0xE0); WriteComm(0x84); WriteData(0x61); WriteComm(0xF2); WriteData(0x82); WriteComm(0xF0); WriteData(0x00); WriteComm(0xF0); WriteData(0x01); WriteComm(0xF1); WriteData(0x01); WriteComm(0xB0); WriteData(0x5B); WriteComm(0xB1); WriteData(0x48); WriteComm(0xB2); WriteData(0x29); WriteComm(0xB3); WriteData(0x01); WriteComm(0xB4); WriteData(0x67); WriteComm(0xB5); WriteData(0x44); WriteComm(0xB6); WriteData(0x99); WriteComm(0xB7); WriteData(0x40); WriteComm(0xB8); WriteData(0x8C); WriteComm(0xB9); WriteData(0x15); WriteComm(0xBA); WriteData(0x00); WriteComm(0xBB); WriteData(0x08); WriteComm(0xBC); WriteData(0x08); WriteComm(0xBD); WriteData(0x00); WriteComm(0xBE); WriteData(0x00); WriteComm(0xBF); WriteData(0x07); WriteComm(0xC0); WriteData(0x80); WriteComm(0xC1); WriteData(0x09); WriteComm(0xC2); WriteData(0x35); WriteComm(0xC3); WriteData(0x80); WriteComm(0xC4); WriteData(0x09); WriteComm(0xC5); WriteData(0x35); WriteComm(0xC6); WriteData(0xA9); WriteComm(0xC7); WriteData(0x41); WriteComm(0xC8); WriteData(0x01); WriteComm(0xC9); WriteData(0xA9); WriteComm(0xCA); WriteData(0x41); WriteComm(0xCB); WriteData(0x01); WriteComm(0xCC); WriteData(0x7F); WriteComm(0xCD); WriteData(0x7F); WriteComm(0xCE); WriteData(0xFF); WriteComm(0xD0); WriteData(0xD1); WriteComm(0xD1); WriteData(0x40); WriteComm(0xD2); WriteData(0x7E); WriteComm(0xF5); WriteData(0x00); WriteData(0xA5); WriteComm(0xF1); WriteData(0x10); WriteComm(0xF0); WriteData(0x00); WriteComm(0xF0); WriteData(0x02); WriteComm(0xE0); WriteData(0xF0); WriteData(0x05); WriteData(0x0A); WriteData(0x09); WriteData(0x08); WriteData(0x16); WriteData(0x2F); WriteData(0x33); WriteData(0x48); WriteData(0x39); WriteData(0x16); WriteData(0x15); WriteData(0x2D); WriteData(0x33); WriteComm(0xE1); WriteData(0xF0); WriteData(0x05); WriteData(0x0A); WriteData(0x09); WriteData(0x08); WriteData(0x05); WriteData(0x2F); WriteData(0x33); WriteData(0x47); WriteData(0x29); WriteData(0x15); WriteData(0x14); WriteData(0x2D); WriteData(0x33); WriteComm(0xF0); WriteData(0x10); WriteComm(0xF3); WriteData(0x10); WriteComm(0xE0); WriteData(0x0A); WriteComm(0xE1); WriteData(0x00); WriteComm(0xE2); WriteData(0x08); WriteComm(0xE3); WriteData(0x00); WriteComm(0xE4); WriteData(0xE0); WriteComm(0xE5); WriteData(0x06); WriteComm(0xE6); WriteData(0x21); WriteComm(0xE7); WriteData(0x10); WriteComm(0xE8); WriteData(0x80); WriteComm(0xE9); WriteData(0x82); WriteComm(0xEA); WriteData(0xE4); WriteComm(0xEB); WriteData(0x00); WriteComm(0xEC); WriteData(0x00); WriteComm(0xED); WriteData(0x04); WriteComm(0xEE); WriteData(0x02); WriteComm(0xEF); WriteData(0x00); WriteComm(0xF8); WriteData(0xFF); WriteComm(0xF9); WriteData(0x00); WriteComm(0xFA); WriteData(0x00); WriteComm(0xFB); WriteData(0x30); WriteComm(0xFC); WriteData(0x00); WriteComm(0xFD); WriteData(0x00); WriteComm(0xFE); WriteData(0x00); WriteComm(0xFF); WriteData(0x00); WriteComm(0x60); WriteData(0x30); WriteComm(0x61); WriteData(0x01); WriteComm(0x62); WriteData(0x08); WriteComm(0x63); WriteData(0x33); WriteComm(0x64); WriteData(0x0B); WriteComm(0x65); WriteData(0x08); WriteComm(0x66); WriteData(0x00); WriteComm(0x67); WriteData(0x00); WriteComm(0x68); WriteData(0x00); WriteComm(0x69); WriteData(0x00); WriteComm(0x6A); WriteData(0x00); WriteComm(0x6B); WriteData(0x00); WriteComm(0x70); WriteData(0x30); WriteComm(0x71); WriteData(0x02); WriteComm(0x72); WriteData(0x08); WriteComm(0x73); WriteData(0x33); WriteComm(0x74); WriteData(0x0C); WriteComm(0x75); WriteData(0x08); WriteComm(0x76); WriteData(0x00); WriteComm(0x77); WriteData(0x00); WriteComm(0x78); WriteData(0x00); WriteComm(0x79); WriteData(0x00); WriteComm(0x7A); WriteData(0x00); WriteComm(0x7B); WriteData(0x00); WriteComm(0x80); WriteData(0x38); WriteComm(0x81); WriteData(0x00); WriteComm(0x82); WriteData(0x05); WriteComm(0x83); WriteData(0x03); WriteComm(0x84); WriteData(0x08); WriteComm(0x85); WriteData(0x00); WriteComm(0x86); WriteData(0x00); WriteComm(0x87); WriteData(0x00); WriteComm(0x88); WriteData(0x38); WriteComm(0x89); WriteData(0x00); WriteComm(0x8A); WriteData(0x07); WriteComm(0x8B); WriteData(0x03); WriteComm(0x8C); WriteData(0x0A); WriteComm(0x8D); WriteData(0x00); WriteComm(0x8E); WriteData(0x00); WriteComm(0x8F); WriteData(0x00); WriteComm(0x90); WriteData(0x38); WriteComm(0x91); WriteData(0x00); WriteComm(0x92); WriteData(0x09); WriteComm(0x93); WriteData(0x03); WriteComm(0x94); WriteData(0x0C); WriteComm(0x95); WriteData(0x00); WriteComm(0x96); WriteData(0x00); WriteComm(0x97); WriteData(0x00); WriteComm(0x98); WriteData(0x38); WriteComm(0x99); WriteData(0x00); WriteComm(0x9A); WriteData(0x0B); WriteComm(0x9B); WriteData(0x03); WriteComm(0x9C); WriteData(0x0E); WriteComm(0x9D); WriteData(0x00); WriteComm(0x9E); WriteData(0x00); WriteComm(0x9F); WriteData(0x00); WriteComm(0xA0); WriteData(0x38); WriteComm(0xA1); WriteData(0x00); WriteComm(0xA2); WriteData(0x06); WriteComm(0xA3); WriteData(0x03); WriteComm(0xA4); WriteData(0x09); WriteComm(0xA5); WriteData(0x00); WriteComm(0xA6); WriteData(0x00); WriteComm(0xA7); WriteData(0x00); WriteComm(0xA8); WriteData(0x38); WriteComm(0xA9); WriteData(0x00); WriteComm(0xAA); WriteData(0x08); WriteComm(0xAB); WriteData(0x03); WriteComm(0xAC); WriteData(0x0B); WriteComm(0xAD); WriteData(0x00); WriteComm(0xAE); WriteData(0x00); WriteComm(0xAF); WriteData(0x00); WriteComm(0xB0); WriteData(0x38); WriteComm(0xB1); WriteData(0x00); WriteComm(0xB2); WriteData(0x0A); WriteComm(0xB3); WriteData(0x03); WriteComm(0xB4); WriteData(0x0D); WriteComm(0xB5); WriteData(0x00); WriteComm(0xB6); WriteData(0x00); WriteComm(0xB7); WriteData(0x00); WriteComm(0xB8); WriteData(0x38); WriteComm(0xB9); WriteData(0x00); WriteComm(0xBA); WriteData(0x0C); WriteComm(0xBB); WriteData(0x03); WriteComm(0xBC); WriteData(0x0F); WriteComm(0xBD); WriteData(0x00); WriteComm(0xBE); WriteData(0x00); WriteComm(0xBF); WriteData(0x00); WriteComm(0xC0); WriteData(0x88); WriteComm(0xC1); WriteData(0x10); WriteComm(0xC2); WriteData(0x01); WriteComm(0xC3); WriteData(0x67); WriteComm(0xC4); WriteData(0x76); WriteComm(0xC5); WriteData(0x45); WriteComm(0xC6); WriteData(0x54); WriteComm(0xC7); WriteData(0xAA); WriteComm(0xC8); WriteData(0x99); WriteComm(0xC9); WriteData(0xBB); WriteComm(0xD0); WriteData(0x88); WriteComm(0xD1); WriteData(0x10); WriteComm(0xD2); WriteData(0x01); WriteComm(0xD3); WriteData(0x67); WriteComm(0xD4); WriteData(0x76); WriteComm(0xD5); WriteData(0x45); WriteComm(0xD6); WriteData(0x54); WriteComm(0xD7); WriteData(0xAA); WriteComm(0xD8); WriteData(0x99); WriteComm(0xD9); WriteData(0xBB); WriteComm(0xF3); WriteData(0x01); WriteComm(0xF0); WriteData(0x00); WriteComm(0x21); WriteComm(0x35); WriteComm(0x3A); WriteData(0x55); WriteComm(0x11); delay_ms 120 WriteComm(0x29); delay_ms 20

0x30, 0x82, 0x02, 0x5c, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x02, 0xa0, 0x82, 0x02, 0x4d, 0x30, 0x82, 0x02, 0x49, 0x02, 0x01, 0x01, 0x31, 0x00, 0x30, 0x0b, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x01, 0xa0, 0x82, 0x02, 0x2f, 0x30, 0x82, 0x02, 0x2b, 0x30, 0x82, 0x01, 0xd1, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x46, 0x31, 0x0f, 0x3c, 0x6a, 0x5d, 0x92, 0x01, 0xf6, 0x1a, 0x2e, 0xc7, 0x33, 0x40, 0x80, 0x70, 0x30, 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x30, 0x81, 0x89, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0a, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x26, 0x30, 0x24, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1d, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, 0x3d, 0x30, 0x3b, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x34, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x32, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x34, 0x31, 0x31, 0x30, 0x32, 0x31, 0x39, 0x33, 0x35, 0x34, 0x30, 0x5a, 0x17, 0x0d, 0x34, 0x39, 0x31, 0x32, 0x33, 0x31, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x6d, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0a, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x11, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x31, 0x2d, 0x30, 0x2b, 0x06, 0x03, 0x55, 0x04, 0x03, 0x14, 0x24, 0x49, 0x50, 0x41, 0x5f, 0x34, 0x36, 0x33, 0x31, 0x30, 0x46, 0x33, 0x43, 0x36, 0x41, 0x35, 0x44, 0x39, 0x32, 0x30, 0x31, 0x46, 0x36, 0x31, 0x41, 0x32, 0x45, 0x43, 0x37, 0x33, 0x33, 0x34, 0x30, 0x38, 0x30, 0x37, 0x30, 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0x08, 0x07, 0x67, 0x79, 0xc1, 0x43, 0xfc, 0xfc, 0xa0, 0x05, 0xde, 0x60, 0x0c, 0x06, 0xac, 0x89, 0xb1, 0x6c, 0x33, 0x26, 0x90, 0x7a, 0xd5, 0xd6, 0x17, 0xa9, 0x86, 0x23, 0x2d, 0x10, 0xa0, 0x16, 0x1d, 0x84, 0xc6, 0xb7, 0x1b, 0x01, 0xf1, 0x79, 0x39, 0x75, 0x80, 0x88, 0xc6, 0x5a, 0xcc, 0x33, 0x89, 0xbf, 0x97, 0xfa, 0x25, 0x39, 0x23, 0x87, 0x56, 0xe1, 0xc5, 0x1d, 0xdf, 0xb3, 0x6b, 0x82, 0xa3, 0x36, 0x30, 0x34, 0x30, 0x32, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x63, 0x64, 0x06, 0x24, 0x01, 0x01, 0xff, 0x04, 0x22, 0x04, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x30, 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x03, 0x48, 0x00, 0x30, 0x45, 0x02, 0x20, 0x20, 0x75, 0xb1, 0xa0, 0x1e, 0x59, 0xc0, 0xf6, 0xcd, 0xc6, 0x65, 0x11, 0xd2, 0x32, 0xe0, 0x45, 0x57, 0xd4, 0xb4, 0x25, 0x11, 0xe0, 0x8a, 0xea, 0x85, 0x5f, 0x65, 0xa3, 0x93, 0xa5, 0x6a, 0xfe, 0x02, 0x21, 0x00, 0xab, 0xeb, 0xc3, 0x7c, 0x5a, 0x87, 0x45, 0x66, 0x38, 0xe7, 0x0e, 0xfc, 0x11, 0x9c, 0x5e, 0x65, 0xfa, 0xd1, 0x06, 0x9b, 0x00, 0x8f, 0x99, 0x0b, 0x9d, 0x7e, 0x0f, 0xfb, 0xee, 0x1b, 0xe8, 0x7e, 0xa1, 0x00, 0x31, 0x00, 转为Pem格式证书

那你重新写一份吧,不要u8这种,要么就写全称unsigned char这样。我的oledfont文件如下#ifndef __OLEDFONT_H #define __OLEDFONT_H /************************************6*8的点阵************************************/ unsigned char code asc2_0806[][6] ={ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00},// sp {0x00, 0x00, 0x00, 0x2f, 0x00, 0x00},// ! {0x00, 0x00, 0x07, 0x00, 0x07, 0x00},// " {0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14},// # {0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12},// $ {0x00, 0x62, 0x64, 0x08, 0x13, 0x23},// % {0x00, 0x36, 0x49, 0x55, 0x22, 0x50},// & {0x00, 0x00, 0x05, 0x03, 0x00, 0x00},// ' {0x00, 0x00, 0x1c, 0x22, 0x41, 0x00},// ( {0x00, 0x00, 0x41, 0x22, 0x1c, 0x00},// ) {0x00, 0x14, 0x08, 0x3E, 0x08, 0x14},// * {0x00, 0x08, 0x08, 0x3E, 0x08, 0x08},// + {0x00, 0x00, 0x00, 0xA0, 0x60, 0x00},// , {0x00, 0x08, 0x08, 0x08, 0x08, 0x08},// - {0x00, 0x00, 0x60, 0x60, 0x00, 0x00},// . {0x00, 0x20, 0x10, 0x08, 0x04, 0x02},// / {0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E},// 0 {0x00, 0x00, 0x42, 0x7F, 0x40, 0x00},// 1 {0x00, 0x42, 0x61, 0x51, 0x49, 0x46},// 2 {0x00, 0x21, 0x41, 0x45, 0x4B, 0x31},// 3 {0x00, 0x18, 0x14, 0x12, 0x7F, 0x10},// 4 {0x00, 0x27, 0x45, 0x45, 0x45, 0x39},// 5 {0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30},// 6 {0x00, 0x01, 0x71, 0x09, 0x05, 0x03},// 7 {0x00, 0x36, 0x49, 0x49, 0x49, 0x36},// 8 {0x00, 0x06, 0x49, 0x49, 0x29, 0x1E},// 9 {0x00, 0x00, 0x36, 0x36, 0x00, 0x00},// : {0x00, 0x00, 0x56, 0x36, 0x00, 0x00},// ; {0x00, 0x08, 0x14, 0x22, 0x41, 0x00},// < {0x00, 0x14, 0x14, 0x14, 0x14, 0x14},// = {0x00, 0x00, 0x41, 0x22, 0x14, 0x08},// > {0x00, 0x02, 0x01, 0x51, 0x09, 0x06},// ? {0x00, 0x32, 0x49, 0x59, 0x51, 0x3E},// @ {0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C},// A {0x00, 0x7F, 0x49, 0x49, 0x49, 0x36},// B {0x00, 0x3E, 0x41, 0x41, 0x41, 0x22},// C {0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C},// D {0x00, 0x7F, 0x49, 0x49, 0x49, 0x41},// E {0x00, 0x7F, 0x09, 0x09, 0x09, 0x01},// F {0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A},// G {0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F},// H {0x00, 0x00, 0x41, 0x7F, 0x41, 0x00},// I {0x00, 0x20, 0x40, 0x41, 0x3F, 0x01},// J {0x00, 0x7F, 0x08, 0x14, 0x22, 0x41},// K {0x00, 0x7F, 0x40, 0x40, 0x40, 0x40},// L {0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F},// M {0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F},// N {0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E},// O {0x00, 0x7F, 0x09, 0x09, 0x09, 0x06},// P {0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E},// Q {0x00, 0x7F, 0x09, 0x19, 0x29, 0x46},// R {0x00, 0x46, 0x49, 0x49, 0x49, 0x31},// S {0x00, 0x01, 0x01, 0x7F, 0x01, 0x01},// T {0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F},// U {0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F},// V {0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F},// W {0x00, 0x63, 0x14, 0x08, 0x14, 0x63},// X {0x00, 0x07, 0x08, 0x70, 0x08, 0x07},// Y {0x00, 0x61, 0x51, 0x49, 0x45, 0x43},// Z {0x00, 0x00, 0x7F, 0x41, 0x41, 0x00},// [ {0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55},// 55 {0x00, 0x00, 0x41, 0x41, 0x7F, 0x00},// ] {0x00, 0x04, 0x02, 0x01, 0x02, 0x04},// ^ {0x00, 0x40, 0x40, 0x40, 0x40, 0x40},// _ {0x00, 0x00, 0x01, 0x02, 0x04, 0x00},// ' {0x00, 0x20, 0x54, 0x54, 0x54, 0x78},// a {0x00, 0x7F, 0x48, 0x44, 0x44, 0x38},// b {0x00, 0x38, 0x44, 0x44, 0x44, 0x20},// c {0x00, 0x38, 0x44, 0x44, 0x48, 0x7F},// d {0x00, 0x38, 0x54, 0x54, 0x54, 0x18},// e {0x00, 0x08, 0x7E, 0x09, 0x01, 0x02},// f {0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C},// g {0x00, 0x7F, 0x08, 0x04, 0x04, 0x78},// h {0x00, 0x00, 0x44, 0x7D, 0x40, 0x00},// i {0x00, 0x40, 0x80, 0x84, 0x7D, 0x00},// j {0x00, 0x7F, 0x10, 0x28, 0x44, 0x00},// k {0x00, 0x00, 0x41, 0x7F, 0x40, 0x00},// l {0x00, 0x7C, 0x04, 0x18, 0x04, 0x78},// m {0x00, 0x7C, 0x08, 0x04, 0x04, 0x78},// n {0x00, 0x38, 0x44, 0x44, 0x44, 0x38},// o {0x00, 0xFC, 0x24, 0x24, 0x24, 0x18},// p {0x00, 0x18, 0x24, 0x24, 0x18, 0xFC},// q {0x00, 0x7C, 0x08, 0x04, 0x04, 0x08},// r {0x00, 0x48, 0x54, 0x54, 0x54, 0x20},// s {0x00, 0x04, 0x3F, 0x44, 0x40, 0x20},// t {0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C},// u {0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C},// v {0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C},// w {0x00, 0x44, 0x28, 0x10, 0x28, 0x44},// x {0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C},// y {0x00, 0x44, 0x64, 0x54, 0x4C, 0x44},// z {0x14, 0x14, 0x14, 0x14, 0x14, 0x14},// horiz lines }; //16*16 ASCII字符集点阵 unsigned char code asc2_1608[][16]={ {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*" ",0*/ {0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00},/*"!",1*/ {0x00,0x10,0x0C,0x06,0x10,0x0C,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*""",2*/ {0x40,0xC0,0x78,0x40,0xC0,0x78,0x40,0x00,0x04,0x3F,0x04,0x04,0x3F,0x04,0x04,0x00},/*"#",3*/ {0x00,0x70,0x88,0xFC,0x08,0x30,0x00,0x00,0x00,0x18,0x20,0xFF,0x21,0x1E,0x00,0x00},/*"$",4*/ {0xF0,0x08,0xF0,0x00,0xE0,0x18,0x00,0x00,0x00,0x21,0x1C,0x03,0x1E,0x21,0x1E,0x00},/*"%",5*/ {0x00,0xF0,0x08,0x88,0x70,0x00,0x00,0x00,0x1E,0x21,0x23,0x24,0x19,0x27,0x21,0x10},/*"&",6*/ {0x10,0x16,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"'",7*/ {0x00,0x00,0x00,0xE0,0x18,0x04,0x02,0x00,0x00,0x00,0x00,0x07,0x18,0x20,0x40,0x00},/*"(",8*/ {0x00,0x02,0x04,0x18,0xE0,0x00,0x00,0x00,0x00,0x40,0x20,0x18,0x07,0x00,0x00,0x00},/*")",9*/ {0x40,0x40,0x80,0xF0,0x80,0x40,0x40,0x00,0x02,0x02,0x01,0x0F,0x01,0x02,0x02,0x00},/*"*",10*/ {0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x1F,0x01,0x01,0x01,0x00},/*"+",11*/ {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xB0,0x70,0x00,0x00,0x00,0x00,0x00},/*",",12*/ {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01},/*"-",13*/ {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00},/*".",14*/ {0x00,0x00,0x00,0x00,0x80,0x60,0x18,0x04,0x00,0x60,0x18,0x06,0x01,0x00,0x00,0x00},/*"/",15*/ {0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00},/*"0",16*/ {0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00},/*"1",17*/ {0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00},/*"2",18*/ {0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00},/*"3",19*/ {0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00},/*"4",20*/ {0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00},/*"5",21*/ {0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00},/*"6",22*/ {0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00},/*"7",23*/ {0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00},/*"8",24*/ {0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00},/*"9",25*/ {0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00},/*":",26*/ {0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x60,0x00,0x00,0x00,0x00},/*";",27*/ {0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x00},/*"<",28*/ {0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00},/*"=",29*/ {0x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x20,0x10,0x08,0x04,0x02,0x01,0x00},/*">",30*/ {0x00,0x70,0x48,0x08,0x08,0x08,0xF0,0x00,0x00,0x00,0x00,0x30,0x36,0x01,0x00,0x00},/*"?",31*/ {0xC0,0x30,0xC8,0x28,0xE8,0x10,0xE0,0x00,0x07,0x18,0x27,0x24,0x23,0x14,0x0B,0x00},/*"@",32*/ {0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20},/*"A",33*/ {0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00},/*"B",34*/ {0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00},/*"C",35*/ {0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00},/*"D",36*/ {0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00},/*"E",37*/ {0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x00,0x03,0x00,0x00,0x00},/*"F",38*/ {0xC0,0x30,0x08,0x08,0x08,0x38,0x00,0x00,0x07,0x18,0x20,0x20,0x22,0x1E,0x02,0x00},/*"G",39*/ {0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20},/*"H",40*/ {0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00},/*"I",41*/ {0x00,0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,0x00},/*"J",42*/ {0x08,0xF8,0x88,0xC0,0x28,0x18,0x08,0x00,0x20,0x3F,0x20,0x01,0x26,0x38,0x20,0x00},/*"K",43*/ {0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00},/*"L",44*/ {0x08,0xF8,0xF8,0x00,0xF8,0xF8,0x08,0x00,0x20,0x3F,0x00,0x3F,0x00,0x3F,0x20,0x00},/*"M",45*/ {0x08,0xF8,0x30,0xC0,0x00,0x08,0xF8,0x08,0x20,0x3F,0x20,0x00,0x07,0x18,0x3F,0x00},/*"N",46*/ {0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00},/*"O",47*/ {0x08,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00,0x20,0x3F,0x21,0x01,0x01,0x01,0x00,0x00},/*"P",48*/ {0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00},/*"Q",49*/ {0x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00,0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20},/*"R",50*/ {0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00,0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00},/*"S",51*/ {0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00},/*"T",52*/ {0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00},/*"U",53*/ {0x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08,0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00},/*"V",54*/ {0xF8,0x08,0x00,0xF8,0x00,0x08,0xF8,0x00,0x03,0x3C,0x07,0x00,0x07,0x3C,0x03,0x00},/*"W",55*/ {0x08,0x18,0x68,0x80,0x80,0x68,0x18,0x08,0x20,0x30,0x2C,0x03,0x03,0x2C,0x30,0x20},/*"X",56*/ {0x08,0x38,0xC8,0x00,0xC8,0x38,0x08,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00},/*"Y",57*/ {0x10,0x08,0x08,0x08,0xC8,0x38,0x08,0x00,0x20,0x38,0x26,0x21,0x20,0x20,0x18,0x00},/*"Z",58*/ {0x00,0x00,0x00,0xFE,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x7F,0x40,0x40,0x40,0x00},/*"[",59*/ {0x00,0x0C,0x30,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x06,0x38,0xC0,0x00},/*"\",60*/ {0x00,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x7F,0x00,0x00,0x00},/*"]",61*/ {0x00,0x00,0x04,0x02,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"^",62*/ {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80},/*"_",63*/ {0x00,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"",64*/ {0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20},/*"a",65*/ {0x08,0xF8,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00},/*"b",66*/ {0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00},/*"c",67*/ {0x00,0x00,0x00,0x80,0x80,0x88,0xF8,0x00,0x00,0x0E,0x11,0x20,0x20,0x10,0x3F,0x20},/*"d",68*/ {0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00},/*"e",69*/ {0x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x18,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00},/*"f",70*/ {0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x6B,0x94,0x94,0x94,0x93,0x60,0x00},/*"g",71*/ {0x08,0xF8,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20},/*"h",72*/ {0x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00},/*"i",73*/ {0x00,0x00,0x00,0x80,0x98,0x98,0x00,0x00,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00},/*"j",74*/ {0x08,0xF8,0x00,0x00,0x80,0x80,0x80,0x00,0x20,0x3F,0x24,0x02,0x2D,0x30,0x20,0x00},/*"k",75*/ {0x00,0x08,0x08,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00},/*"l",76*/ {0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F},/*"m",77*/ {0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20},/*"n",78*/ {0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00},/*"o",79*/ {0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00,0x80,0xFF,0xA1,0x20,0x20,0x11,0x0E,0x00},/*"p",80*/ {0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x0E,0x11,0x20,0x20,0xA0,0xFF,0x80},/*"q",81*/ {0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00},/*"r",82*/ {0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00},/*"s",83*/ {0x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x20,0x00,0x00},/*"t",84*/ {0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20},/*"u",85*/ {0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00},/*"v",86*/ {0x80,0x80,0x00,0x80,0x00,0x80,0x80,0x80,0x0F,0x30,0x0C,0x03,0x0C,0x30,0x0F,0x00},/*"w",87*/ {0x00,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x31,0x2E,0x0E,0x31,0x20,0x00},/*"x",88*/ {0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x81,0x8E,0x70,0x18,0x06,0x01,0x00},/*"y",89*/ {0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x21,0x30,0x2C,0x22,0x21,0x30,0x00},/*"z",90*/ {0x00,0x00,0x00,0x00,0x80,0x7C,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x3F,0x40,0x40},/*"{",91*/ {0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00},/*"|",92*/ {0x00,0x02,0x02,0x7C,0x80,0x00,0x00,0x00,0x00,0x40,0x40,0x3F,0x00,0x00,0x00,0x00},/*"}",93*/ {0x00,0x06,0x01,0x01,0x02,0x02,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"~",94*/ }; unsigned char code Hzk[][32]={ {0x20,0x24,0x24,0x24,0xFE,0x23,0x22,0x20,0x20,0xFF,0x20,0x22,0x2C,0xA0,0x20,0x00,0x00,0x08,0x48,0x84,0x7F,0x02,0x41,0x40,0x20,0x13,0x0C,0x14,0x22,0x41,0xF8,0x00}/*"我",0*/ }; #endif

#include "OLED_Font.h" #include "OLED.h" /*引脚配置*/ #define OLED_W_SCL(x) HAL_GPIO_WritePin(SCL_GPIO_Port, SCL_Pin, (GPIO_PinState)(x)) #define OLED_W_SDA(x) HAL_GPIO_WritePin(SDA_GPIO_Port, SDA_Pin, (GPIO_PinState)(x)) /** * @brief I2C开始 * @param 无 * @retval 无 */ void OLED_I2C_Start(void) { OLED_W_SDA(1); OLED_W_SCL(1); OLED_W_SDA(0); OLED_W_SCL(0); } /** * @brief I2C停止 * @param 无 * @retval 无 */ void OLED_I2C_Stop(void) { OLED_W_SDA(0); OLED_W_SCL(1); OLED_W_SDA(1); } /** * @brief I2C发送一个字节 * @param Byte 要发送的一个字节 * @retval 无 */ void OLED_I2C_SendByte(uint8_t Byte) { uint8_t i; for (i = 0; i < 8; i++) { OLED_W_SDA(Byte & (0x80 >> i)); OLED_W_SCL(1); OLED_W_SCL(0); } OLED_W_SCL(1); //额外的一个时钟,不处理应答信号 OLED_W_SCL(0); } /** * @brief OLED写命令 * @param Command 要写入的命令 * @retval 无 */ void OLED_WriteCommand(uint8_t Command) { OLED_I2C_Start(); OLED_I2C_SendByte(0x78); //从机地址 OLED_I2C_SendByte(0x00); //写命令 OLED_I2C_SendByte(Command); OLED_I2C_Stop(); } /** * @brief OLED写数据 * @param Data 要写入的数据 * @retval 无 */ void OLED_WriteData(uint8_t Data) { OLED_I2C_Start(); OLED_I2C_SendByte(0x78); //从机地址 OLED_I2C_SendByte(0x40); //写数据 OLED_I2C_SendByte(Data); OLED_I2C_Stop(); } /** * @brief OLED设置光标位置 * @param Y 以左上角为原点,向下方向的坐标,范围:0~7 * @param X 以左上角为原点,向右方向的坐标,范围:0~127 * @retval 无 */ void OLED_SetCursor(uint8_t Y, uint8_t X) { OLED_WriteCommand(0xB0 | Y); //设置Y位置 OLED_WriteCommand(0x10 | ((X & 0xF0) >> 4)); //设置X位置高4位 OLED_WriteCommand(0x00 | (X & 0x0F)); //设置X位置低4位 } /** * @brief OLED清屏 * @param 无 * @retval 无 */ void OLED_Clear(void) { uint8_t i, j; for (j = 0; j < 8; j++) { OLED_SetCursor(j, 0); for(i = 0; i < 128; i++) { OLED_WriteData(0x00); } } } /** * @brief OLED显示一个字符 * @param Line 行位置,范围:1~4 * @param Column 列位置,范围:1~16 * @param Char 要显示的一个字符,范围:ASCII可见字符 * @retval 无 */ void OLED_ShowChar(uint8_t Line, uint8_t Column, char Char) { uint8_t i; OLED_SetCursor((Line - 1) * 2, (Column - 1) * 8); //设置光标位置在上半部分 for (i = 0; i < 8; i++) { OLED_WriteData(OLED_F8x16[Char - ' '][i]); //显示上半部分内容 } OLED_SetCursor((Line - 1) * 2 + 1, (Column - 1) * 8); //设置光标位置在下半部分 for (i = 0; i < 8; i++) { OLED_WriteData(OLED_F8x16[Char - ' '][i + 8]); //显示下半部分内容 } } /** * @brief OLED显示字符串 * @param Line 起始行位置,范围:1~4 * @param Column 起始列位置,范围:1~16 * @param String 要显示的字符串,范围:ASCII可见字符 * @retval 无 */ void OLED_ShowString(uint8_t Line, uint8_t Column, char *String) { uint8_t i; for (i = 0; String[i] != '\0'; i++) { OLED_ShowChar(Line, Column + i, String[i]); } } /** * @brief OLED次方函数 * @retval 返回值等于X的Y次方 */ uint32_t OLED_Pow(uint32_t X, uint32_t Y) { uint32_t Result = 1; while (Y--) { Result *= X; } return Result; } /** * @brief OLED显示数字(十进制,正数) * @param Line 起始行位置,范围:1~4 * @param Column 起始列位置,范围:1~16 * @param Number 要显示的数字,范围:0~4294967295 * @param Length 要显示数字的长度,范围:1~10 * @retval 无 */ void OLED_ShowNum(uint8_t Line, uint8_t Column, uint32_t Number, uint8_t Length) { uint8_t i; for (i = 0; i < Length; i++) { OLED_ShowChar(Line, Column + i, Number / OLED_Pow(10, Length - i - 1) % 10 + '0'); } } /** * @brief OLED显示数字(十进制,带符号数) * @param Line 起始行位置,范围:1~4 * @param Column 起始列位置,范围:1~16 * @param Number 要显示的数字,范围:-2147483648~2147483647 * @param Length 要显示数字的长度,范围:1~10 * @retval 无 */ void OLED_ShowSignedNum(uint8_t Line, uint8_t Column, int32_t Number, uint8_t Length) { uint8_t i; uint32_t Number1; if (Number >= 0) { OLED_ShowChar(Line, Column, '+'); Number1 = Number; } else { OLED_ShowChar(Line, Column, '-'); Number1 = -Number; } for (i = 0; i < Length; i++) { OLED_ShowChar(Line, Column + i + 1, Number1 / OLED_Pow(10, Length - i - 1) % 10 + '0'); } } /** * @brief OLED显示数字(十六进制,正数) * @param Line 起始行位置,范围:1~4 * @param Column 起始列位置,范围:1~16 * @param Number 要显示的数字,范围:0~0xFFFFFFFF * @param Length 要显示数字的长度,范围:1~8 * @retval 无 */ void OLED_ShowHexNum(uint8_t Line, uint8_t Column, uint32_t Number, uint8_t Length) { uint8_t i, SingleNumber; for (i = 0; i < Length; i++) { SingleNumber = Number / OLED_Pow(16, Length - i - 1) % 16; if (SingleNumber < 10) { OLED_ShowChar(Line, Column + i, SingleNumber + '0'); } else { OLED_ShowChar(Line, Column + i, SingleNumber - 10 + 'A'); } } } /** * @brief OLED显示数字(二进制,正数) * @param Line 起始行位置,范围:1~4 * @param Column 起始列位置,范围:1~16 * @param Number 要显示的数字,范围:0~1111 1111 1111 1111 * @param Length 要显示数字的长度,范围:1~16 * @retval 无 */ void OLED_ShowBinNum(uint8_t Line, uint8_t Column, uint32_t Number, uint8_t Length) { uint8_t i; for (i = 0; i < Length; i++) { OLED_ShowChar(Line, Column + i, Number / OLED_Pow(2, Length - i - 1) % 2 + '0'); } } /** * @brief 显示BMP图片 * @param 图片大小:128×64 * @param 起始点坐标(x,y) * @param x的范围0~127 * @param y的范围0~7 * @retval 无 */ void OLED_DrawBMP(unsigned char x0, unsigned char y0,unsigned char x1, unsigned char y1,unsigned char BMP[]) { unsigned int j=0; unsigned char x,y; if(y1%8==0) y=y1/8; else y=y1/8+1; for(y=y0;y<y1;y++) { OLED_SetCursor(y,x0); for(x=x0;x<x1;x++) { OLED_WriteData(BMP[j++]); } } } /** * @brief OLED初始化 * @param 无 * @retval 无 */ void OLED_Init(void) { uint32_t i, j; for (i = 0; i < 1000; i++) //上电延时 { for (j = 0; j < 1000; j++); } OLED_WriteCommand(0xAE); //关闭显示 OLED_WriteCommand(0xD5); //设置显示时钟分频比/振荡器频率 OLED_WriteCommand(0x80); OLED_WriteCommand(0xA8); //设置多路复用率 OLED_WriteCommand(0x3F); OLED_WriteCommand(0xD3); //设置显示偏移 OLED_WriteCommand(0x00); OLED_WriteCommand(0x40); //设置显示开始行 OLED_WriteCommand(0xA1); //设置左右方向,0xA1正常 0xA0左右反置 OLED_WriteCommand(0xC8); //设置上下方向,0xC8正常 0xC0上下反置 OLED_WriteCommand(0xDA); //设置COM引脚硬件配置 OLED_WriteCommand(0x12); OLED_WriteCommand(0x81); //设置对比度控制 OLED_WriteCommand(0xCF); OLED_WriteCommand(0xD9); //设置预充电周期 OLED_WriteCommand(0xF1); OLED_WriteCommand(0xDB); //设置VCOMH取消选择级别 OLED_WriteCommand(0x30); OLED_WriteCommand(0xA4); //设置整个显示打开/关闭 OLED_WriteCommand(0xA6); //设置正常/倒转显示 OLED_WriteCommand(0x8D); //设置充电泵 OLED_WriteCommand(0x14); OLED_WriteCommand(0xAF); //开启显示 OLED_Clear(); //OLED清屏 }该代码为我的OLED.C #ifndef __OLED_H #define __OLED_H #include "main.h" void OLED_Init(void); void OLED_Clear(void); void OLED_I2C_Start(void); void OLED_I2C_Stop(void); void OLED_I2C_SendByte(uint8_t Byte); void OLED_ShowChar(uint8_t Line, uint8_t Column, char Char); void OLED_ShowString(uint8_t Line, uint8_t Column, char *String); void OLED_ShowNum(uint8_t Line, uint8_t Column, uint32_t Number, uint8_t Length); void OLED_ShowSignedNum(uint8_t Line, uint8_t Column, int32_t Number, uint8_t Length); void OLED_ShowHexNum(uint8_t Line, uint8_t Column, uint32_t Number, uint8_t Length); void OLED_ShowBinNum(uint8_t Line, uint8_t Column, uint32_t Number, uint8_t Length); void OLED_DrawBMP(unsigned char x0, unsigned char y0,unsigned char x1, unsigned char y1,unsigned char BMP[]); #endif这段代码为OLED.H #ifndef __OLED_FONT_H #define __OLED_FONT_H #include "main.h" /*OLED字模库,宽8像素,高16像素*/ const uint8_t OLED_F8x16[][16]= { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// 0 0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00,//! 1 0x00,0x10,0x0C,0x06,0x10,0x0C,0x06,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//" 2 0x40,0xC0,0x78,0x40,0xC0,0x78,0x40,0x00, 0x04,0x3F,0x04,0x04,0x3F,0x04,0x04,0x00,//# 3 0x00,0x70,0x88,0xFC,0x08,0x30,0x00,0x00, 0x00,0x18,0x20,0xFF,0x21,0x1E,0x00,0x00,//$ 4 0xF0,0x08,0xF0,0x00,0xE0,0x18,0x00,0x00, 0x00,0x21,0x1C,0x03,0x1E,0x21,0x1E,0x00,//% 5 0x00,0xF0,0x08,0x88,0x70,0x00,0x00,0x00, 0x1E,0x21,0x23,0x24,0x19,0x27,0x21,0x10,//& 6 0x10,0x16,0x0E,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//' 7 0x00,0x00,0x00,0xE0,0x18,0x04,0x02,0x00, 0x00,0x00,0x00,0x07,0x18,0x20,0x40,0x00,//( 8 0x00,0x02,0x04,0x18,0xE0,0x00,0x00,0x00, 0x00,0x40,0x20,0x18,0x07,0x00,0x00,0x00,//) 9 0x40,0x40,0x80,0xF0,0x80,0x40,0x40,0x00, 0x02,0x02,0x01,0x0F,0x01,0x02,0x02,0x00,//* 10 0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00, 0x01,0x01,0x01,0x1F,0x01,0x01,0x01,0x00,//+ 11 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x80,0xB0,0x70,0x00,0x00,0x00,0x00,0x00,//, 12 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,//- 13 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,//. 14 0x00,0x00,0x00,0x00,0x80,0x60,0x18,0x04, 0x00,0x60,0x18,0x06,0x01,0x00,0x00,0x00,/// 15 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00, 0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,//0 16 0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00, 0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//1 17 0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00, 0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,//2 18 0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00, 0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,//3 19 0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00, 0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,//4 20 0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00, 0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,//5 21 0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00, 0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,//6 22 0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00, 0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,//7 23 0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00, 0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,//8 24 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00, 0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,//9 25 0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00, 0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,//: 26 0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00, 0x00,0x00,0x80,0x60,0x00,0x00,0x00,0x00,//; 27 0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x00, 0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x00,//< 28 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00, 0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,//= 29 0x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00, 0x00,0x20,0x10,0x08,0x04,0x02,0x01,0x00,//> 30 0x00,0x70,0x48,0x08,0x08,0x08,0xF0,0x00, 0x00,0x00,0x00,0x30,0x36,0x01,0x00,0x00,//? 31 0xC0,0x30,0xC8,0x28,0xE8,0x10,0xE0,0x00, 0x07,0x18,0x27,0x24,0x23,0x14,0x0B,0x00,//@ 32 0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00, 0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,//A 33 0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00, 0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00,//B 34 0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00, 0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00,//C 35 0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00, 0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00,//D 36 0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00, 0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00,//E 37 0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00, 0x20,0x3F,0x20,0x00,0x03,0x00,0x00,0x00,//F 38 0xC0,0x30,0x08,0x08,0x08,0x38,0x00,0x00, 0x07,0x18,0x20,0x20,0x22,0x1E,0x02,0x00,//G 39 0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08, 0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20,//H 40 0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0x00, 0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//I 41 0x00,0x00,0x08,0x08,0xF8,0x08,0x08,0x00, 0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,0x00,//J 42 0x08,0xF8,0x88,0xC0,0x28,0x18,0x08,0x00, 0x20,0x3F,0x20,0x01,0x26,0x38,0x20,0x00,//K 43 0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00, 0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00,//L 44 0x08,0xF8,0xF8,0x00,0xF8,0xF8,0x08,0x00, 0x20,0x3F,0x00,0x3F,0x00,0x3F,0x20,0x00,//M 45 0x08,0xF8,0x30,0xC0,0x00,0x08,0xF8,0x08, 0x20,0x3F,0x20,0x00,0x07,0x18,0x3F,0x00,//N 46 0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00, 0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00,//O 47 0x08,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00, 0x20,0x3F,0x21,0x01,0x01,0x01,0x00,0x00,//P 48 0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00, 0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00,//Q 49 0x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00, 0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20,//R 50 0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00, 0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00,//S 51 0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00, 0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//T 52 0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08, 0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//U 53 0x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08, 0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00,//V 54 0xF8,0x08,0x00,0xF8,0x00,0x08,0xF8,0x00, 0x03,0x3C,0x07,0x00,0x07,0x3C,0x03,0x00,//W 55 0x08,0x18,0x68,0x80,0x80,0x68,0x18,0x08, 0x20,0x30,0x2C,0x03,0x03,0x2C,0x30,0x20,//X 56 0x08,0x38,0xC8,0x00,0xC8,0x38,0x08,0x00, 0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//Y 57 0x10,0x08,0x08,0x08,0xC8,0x38,0x08,0x00, 0x20,0x38,0x26,0x21,0x20,0x20,0x18,0x00,//Z 58 0x00,0x00,0x00,0xFE,0x02,0x02,0x02,0x00, 0x00,0x00,0x00,0x7F,0x40,0x40,0x40,0x00,//[ 59 0x00,0x0C,0x30,0xC0,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x01,0x06,0x38,0xC0,0x00,//\ 60 0x00,0x02,0x02,0x02,0xFE,0x00,0x00,0x00, 0x00,0x40,0x40,0x40,0x7F,0x00,0x00,0x00,//] 61 0x00,0x00,0x04,0x02,0x02,0x02,0x04,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//^ 62 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,//_ 63 0x00,0x02,0x02,0x04,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// 64 0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00, 0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20,//a 65 0x08,0xF8,0x00,0x80,0x80,0x00,0x00,0x00, 0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00,//b 66 0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00, 0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00,//c 67 0x00,0x00,0x00,0x80,0x80,0x88,0xF8,0x00, 0x00,0x0E,0x11,0x20,0x20,0x10,0x3F,0x20,//d 68 0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00, 0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00,//e 69 0x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x18, 0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//f 70 0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00, 0x00,0x6B,0x94,0x94,0x94,0x93,0x60,0x00,//g 71 0x08,0xF8,0x00,0x80,0x80,0x80,0x00,0x00, 0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//h 72 0x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00, 0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//i 73 0x00,0x00,0x00,0x80,0x98,0x98,0x00,0x00, 0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,//j 74 0x08,0xF8,0x00,0x00,0x80,0x80,0x80,0x00, 0x20,0x3F,0x24,0x02,0x2D,0x30,0x20,0x00,//k 75 0x00,0x08,0x08,0xF8,0x00,0x00,0x00,0x00, 0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//l 76 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00, 0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,//m 77 0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00, 0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//n 78 0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00, 0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//o 79 0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00, 0x80,0xFF,0xA1,0x20,0x20,0x11,0x0E,0x00,//p 80 0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00, 0x00,0x0E,0x11,0x20,0x20,0xA0,0xFF,0x80,//q 81 0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00, 0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00,//r 82 0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00, 0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00,//s 83 0x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00, 0x00,0x00,0x00,0x1F,0x20,0x20,0x00,0x00,//t 84 0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00, 0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20,//u 85 0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80, 0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00,//v 86 0x80,0x80,0x00,0x80,0x00,0x80,0x80,0x80, 0x0F,0x30,0x0C,0x03,0x0C,0x30,0x0F,0x00,//w 87 0x00,0x80,0x80,0x00,0x80,0x80,0x80,0x00, 0x00,0x20,0x31,0x2E,0x0E,0x31,0x20,0x00,//x 88 0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80, 0x80,0x81,0x8E,0x70,0x18,0x06,0x01,0x00,//y 89 0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00, 0x00,0x21,0x30,0x2C,0x22,0x21,0x30,0x00,//z 90 0x00,0x00,0x00,0x00,0x80,0x7C,0x02,0x02, 0x00,0x00,0x00,0x00,0x00,0x3F,0x40,0x40,//{ 91 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,//| 92 0x00,0x02,0x02,0x7C,0x80,0x00,0x00,0x00, 0x00,0x40,0x40,0x3F,0x00,0x00,0x00,0x00,//} 93 0x00,0x06,0x01,0x01,0x02,0x02,0x04,0x04, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//~ 94 }; #endif这段代码为我的OLED.Font.h。基于这三个OLED相关驱动代码,实现基于STM32 HAL库,使用STM32CUBEMX进行引脚配置,keil运行代码,生成hex文件,Proteus展示实验结果,展示如何使用TIM3外设配置为编码器模式(Encoder Mode)对两路正交的方波计数,计数结果用Proteus里的OLED12864I2C显示(没有使用I2C,使用PB6,PB7模拟SCL,SDA)。

最新推荐

recommend-type

二维码工具(1).zip

二维码工具(1).zip
recommend-type

基于ZXing修改的二维码扫描器.zip

基于ZXing修改的二维码扫描器.zip
recommend-type

在网页上生成二维码.zip

在网页上生成二维码.zip
recommend-type

四级流水线8位booth算法乘法器,有无符号都支持(verilog),含testbench(system verilog)

乘法器包含三个.v文件 乘法器可进行有符号与无符号的8位乘法计算,但是需要提前输入乘数是否为有符号的标识 【 顶层multiplier_8_special.v:对乘法器进行分割段数 booth2_pp_decoder.v:使用booth算法,将乘数进行转换 mult_pp_adder.v:执行部分积加法。(这里经过了部分优化,但是仍直接使用了‘+’符号,如果是asic设计,需要更加具体,也能进一步优化) tb_mult8_special.v:(tesetbench):仿真激励文件:20*4组随机数测试数据,会返回验证时出错的数据的部分原因。(system verilog) 】 经过初步仿真验证,无问题 经过vivado某个ultrascale型号的fpga实现过后能达到500mhz以上频率,资源使用量为120lut左右 此模块为tpu设计中的一个底层模块,(作为多复用单元,可以处理浮点数据的一个部分)后续会逐步上传tpu的其他部分以及功能原理介绍 注:sys_enable:模块启动信号,sys_enable=0时会暂停并暂存数据。 valid:valid=1输入乘数有效,valid=0无效则会不计算这个数据。
recommend-type

无限特征选择_一种基于图的特征过滤方法_Infinite Feature Selection_ a Graph-base

无限特征选择_一种基于图的特征过滤方法_Infinite Feature Selection_ a Graph-based Feature Filtering Approach.zip
recommend-type

Hyperledger Fabric v2与Accord Project Cicero智能合约开发指南

标题和描述中提到的“hlf-cicero-contract:Accord Project Cicero与Hyperledger Fabric v2签约”以及“半西约合同”暗示了与智能合约和区块链技术相关的知识点。下面详细说明这些知识点: ### 智能合约与区块链技术 智能合约是一套运行在区块链上的程序,当合约条款被触发时,合约会自动执行相应的操作。这种自动执行的特点使得智能合约特别适合于执行多方之间的可信交易,它能减少或消除中介服务的需要,从而降低交易成本并提高效率。 区块链技术是一种分布式账本技术,通过加密算法和共识机制保证了交易数据的不可篡改性和透明性。区块链上的每一笔交易都会被网络中的多个节点验证并记录,确保了交易记录的安全性。 ### Hyperledger Fabric v2 Hyperledger Fabric 是由Linux基金会托管的一个开源项目,它是企业级区块链框架,旨在为商业应用提供安全、模块化、可扩展的区块链平台。Hyperledger Fabric v2.2是该框架的一个版本。 Hyperledger Fabric v2支持链码(Chaincode)概念,链码是部署在Hyperledger Fabric网络上的应用程序,它可以被用来实现各种智能合约逻辑。链码在运行时与网络中的背书节点和排序服务交互,负责验证、执行交易以及维护账本状态。 ### Accord Project Cicero Accord Project Cicero 是一个开源的智能合同模板和执行引擎,它允许开发者使用自然语言来定义合同条款,并将这些合同转换为可以在区块链上执行的智能合约。CiceroMark是基于Markdown格式的一种扩展,它允许在文档中嵌入智能合约逻辑。 通过Accord Project Cicero,可以创建出易于理解、可执行的智能合约。这些合同可以与Hyperledger Fabric集成,利用其提供的安全、透明的区块链网络环境,从而使得合同条款的执行更加可靠。 ### 智能合约的安装与部署 描述中提到了“安装”和“启动”的步骤,这意味着为了使用HLF v2.2和Accord Project Cicero,需要先进行一系列的配置和安装工作。这通常包括设置环境变量(例如HLF_INSTALL_DIR)、安装区块链网络(Test-Net)以及安装其他必需的软件工具(如jq)。 jq是一个轻量级且灵活的命令行JSON处理器,常用于处理JSON数据。在区块链项目中,jq可以帮助开发者处理链码或智能合约的数据,特别是在与网络节点交互时。 ### JavaScript 标签 标签“JavaScript”表明本项目或相关文档中会涉及到JavaScript编程语言。Hyperledger Fabric v2支持多种智能合约语言,其中JavaScript是一个广泛使用的选项。JavaScript在编写链码时提供了灵活的语法和强大的库支持,是进行区块链开发的一个流行选择。 ### 文件结构 文件名称列表“hlf-cicero-contract-master”暗示这是一个包含所有相关文件和资源的项目源代码目录。这个名称通常表明开发者可以从该目录开始探索、安装和配置项目的所有组件。 ### 综合知识点 1. 智能合约与区块链技术可以自动化执行多方面可信交易,降低交易成本并提高效率。 2. Hyperledger Fabric v2为企业提供一个安全、模块化、可扩展的区块链平台。 3. Accord Project Cicero结合Markdown格式的CiceroMark,将自然语言定义的合同条款转换为可执行的智能合约。 4. 智能合约的安装和部署涉及到一系列配置步骤,包括设置环境变量、安装必要的软件工具等。 5. JavaScript是编写智能合约的流行语言之一,为区块链开发提供灵活性和强大的库支持。 6. 项目文件结构表明从一个主目录可以探索和配置所有项目相关文件和资源。 以上是根据文件标题、描述、标签以及文件名称列表所提取的相关知识点。这些知识点对于理解Hyperledger Fabric v2和Accord Project Cicero在智能合约中的应用尤为重要。
recommend-type

深度神经网络优化技巧全解析

# 深度神经网络优化技巧全解析 ## 1 超越 Sigmoid 函数 在神经网络中,Sigmoid 函数曾被广泛使用,但它存在一些问题,如梯度消失。研究人员一直在寻找更好的激活函数,且不同的激活函数在不同场景下表现各异。 ### 1.1 ReLU 函数登场 如今,修正线性单元(ReLU)成为了 Sigmoid 的常用替代函数。与 Sigmoid 相比,ReLU 非常简单,以下是其 Python 实现: ```python def relu(z): if z <= 0: return 0 else: return z ``` ReLU 由两段直
recommend-type

什么是噪声功率密度

<think> 嗯,用户这次问的是噪声功率密度的定义,结合之前的系统指令和站内引用,需要给出清晰准确的中文解释。用户可能是电子工程或通信专业的学生,正在学习噪声相关的理论基础,也可能是工程师需要实际应用概念。从引用来[^1]看,用户对相位噪声的定义有基础认知,但需要系统梳理核心概念。 噪声功率密度最本质的定义应该是单位带宽内的噪声功率。引用[^2]提到电阻热噪声的例子很典型,50Ω电阻在300K环境下功率谱密度是定值(0.9nV/√Hz)²,这说明: 1. 它描述的是噪声功率随频率分布的密度 2. 与带宽强相关(带宽加倍则总功率加倍) 3. 单位通常用W/Hz或V²/Hz 维纳-辛钦定理(
recommend-type

Libshare: Salesforce的高效可重用模块集合

Salesforce是一个云基础的CRM平台,它允许用户构建定制应用程序来满足特定的业务需求。Apex是Salesforce平台上的一个强类型编程语言,用于开发复杂的业务逻辑,通过触发器、类和组件等实现。这些组件使得开发者可以更高效地构建应用程序和扩展Salesforce的功能。 在提到的"libshare:经过测试的Salesforce可重用模块"文件中,首先介绍了一个名为Libshare的工具包。这个工具包包含了一系列已经过测试的可重用模块,旨在简化和加速Salesforce应用程序的开发。 Libshare的各个组成部分的知识点如下: 1. 设置模块:在Salesforce应用程序中,应用程序设置的管理是必不可少的一部分。设置模块提供了一种简便的方式存储应用程序的设置,并提供了一个易用的API来与之交互。这样,开发者可以轻松地为不同的环境配置相同的设置,并且可以快速地访问和修改这些配置。 2. Fluent断言模块:断言是单元测试中的关键组成部分,它们用于验证代码在特定条件下是否表现预期。Fluent断言模块受到Java世界中Assertj的启发,提供了一种更流畅的方式来编写断言。通过这种断言方式,可以编写更易于阅读和维护的测试代码,提高开发效率和测试质量。 3. 秒表模块:在性能调优和效率测试中,记录方法的执行时间是常见的需求。秒表模块为开发者提供了一种方便的方式来记录总时间,并跟踪每种方法所花费的时间。这使得开发者能够识别瓶颈并优化代码性能。 4. JsonMapper模块:随着Web API的广泛应用,JSON数据格式在应用程序开发中扮演了重要角色。JsonMapper模块为开发者提供了一个更高级别的抽象,用于读取和创建JSON内容。这能够大幅简化与JSON数据交互的代码,并提高开发效率。 5. utils模块:在软件开发过程中,经常会遇到需要重复实现一些功能的情况,这些功能可能是通用的,例如日期处理、字符串操作等。utils模块提供了一系列已经编写好的实用工具函数,可以用于节省时间,避免重复劳动,提高开发效率。 6. 记录器模块:记录器通常用于记录应用程序的运行日志,以便于问题诊断和性能监控。系统提供的System.debug功能虽然强大,但在大型应用中,统一的记录器包装器可以使得日志管理更加高效。记录器模块支持记录器名称,并且可以对日志进行适当的封装。 7. App Logger模块:App Logger模块扩展了记录器模块的功能,它允许开发者将日志语句保存到一个精心设计的App Log对象中。此外,App Logger模块支持存储长达56k字符的日志内容,这对于复杂应用的监控和调试非常有用。 8. 应用程序任务模块:在处理异步作业时,例如批量数据处理或定时任务,需要有一个框架来管理和跟踪这些任务。应用程序任务模块提供了一个框架,用于处理可排队的作业,并能够跟踪这些任务的执行情况。 通过Libshare提供的这些模块,Salesforce的开发者能够减少开发工作量,加快开发速度,并提高代码质量。这些模块能够帮助开发者避免重复的“造轮子”工作,专注于核心业务逻辑的实现。同时,由于Libshare作为托管程序包发布,开发者无需担心代码的维护和管理,只需将其添加到自己的Salesforce组织中即可使用。 Libshare的发布也强调了可重用性的重要性,这是软件工程领域中长期提倡的一个原则。通过使用可重用的组件,开发者能够遵循DRY(Don't Repeat Yourself)原则,从而减少代码的冗余,提高生产效率,同时降低因重复编写相同代码而导致错误的风险。 总之,Libshare是一个有价值的资源,对于那些希望在Salesforce平台上快速构建高效、可靠应用程序的开发者来说,这些预置的、经过测试的模块无疑是一个强大的助手。
recommend-type

机器学习技术要点与应用解析

# 机器学习技术要点与应用解析 ## 1. 机器学习基础概念 ### 1.1 数据类型与表示 在编程中,数据类型起着关键作用。Python 具有动态类型特性,允许变量在运行时改变类型。常见的数据类型转换函数包括 `bool()`、`int()`、`str()` 等。例如,`bool()` 函数可将值转换为布尔类型,`int()` 用于将值转换为整数类型。数据类型还包括列表(`lists`)、字典(`dictionaries`)、元组(`tuples`)等集合类型,其中列表使用方括号 `[]` 表示,字典使用花括号 `{}` 表示,元组使用圆括号 `()` 表示。 ### 1.2 变量与命名