一、何为字模
(1)如何记录组成字的LED点阵亮灭信息(16*16点阵一共有256点,显示一个特定的字需要其中有些点亮而另一些不亮,如何记录哪些点亮哪些点不亮?用字模)
字模如何工作?256个点用256个二进制位表示,1表示这个点亮,0表示不亮。256个点就是256个二进制位,也就是256/8=32个字节。所以一个大小为16*16的字的字模是32个字节大小。所以字模的表现形式就是32个unsigned char型数据。
(2)字模如何获取。一般都是用专门的字模提取软件去提取的。这种软件的作用就是给一个字就能自动得到这个字对应的32个字节的字模编码。
(3)字模的结果不是唯一的,和你提取字模的方式有关的。(横向纵向、从上到下之类区分)提取字模时是没有标准的,怎么做都是对的或者都是错的,关键是你提取字模的方式和你用来在点阵上显示这个字模的函数必须对应。
字模软件如下图:
可以看到c代码里面有个数组,数组编码是从D0-D7,横向取模的结果
一、横向取模函数
#include #define uchar unsigned char //宏定义 sbit SER = P3^4; sbit RCLK = P3^5; sbit SCLK = P3^6; //函数原型声明 void SendData (uchar d1,uchar d2, uchar d3, uchar d4); void Display(uchar zimo[32],uchar hang[32]); unsigned char peng[32] ={16,16,16,16,254,8,16,4,124,18,0,16,124,8,68,4,68,34,124,32,0,16,68,8,232,4,30,2,0,0,0,0}; unsigned char hang[32] = { 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x00, }; void main(void) { // d1 d2 对应负极(列), d3,d4对应正极(行) // d1 d3 对应9-16, d2 d4对应的是1-8 // d1的bit7对应最右边一列,bit0对应第九列; //d2的bit7对应第八列,bit0对应左边第一列; //d3的bit7对应最下面一行,bit0对应第九行; //d4的bit7对应第八行,bit0对应最上面一行; Display(peng, hang); } //字模显示函数 void Display(uchar zimo[32],uchar hang[32]) { uchar i = 0; for(i = 0; i < 16 ; i++) { SendData(~zimo[2*i+1], ~zimo[2*i], hang[2*i], hang[2*i+1]); /*取反的意义在于字模亮一颗表示1,而d1,d2表示 负极,0led小灯才会亮,故而1取反 */ } } void SendData(uchar d1, uchar d2, uchar d3, uchar d4) { unsigned char i = 0; // unsigned char还可以用,和uchar是一样的 SCLK = 0; RCLK = 0; for (i=0; i<8; i++) { SER = d1 >> 7; // 将d1的最高bit取出来给SER SCLK = 0; SCLK = 1; // 2步制造了一个SCLK的上升沿 d1 = d1 << 1; } for (i=0; i<8; i++) { SER = d2 >> 7; // 将d2的最高bit取出来给SER SCLK = 0; SCLK = 1; // 2步制造了一个SCLK的上升沿 d2 = d2 << 1; } for (i=0; i<8; i++) { SER = d3 >> 7; // 将d3的最高bit取出来给SER SCLK = 0; SCLK = 1; // 2步制造了一个SCLK的上升沿 d3 = d3 << 1; } for (i=0; i<8; i++) { SER = d4 >> 7; // 将d4的最高bit取出来给SER SCLK = 0; SCLK = 1; // 2步制造了一个SCLK的上升沿 d4 = d4 << 1; } RCLK = 0; RCLK = 1; }
上一篇:51单片机之外设——玩转数码管
下一篇:数码管显示1314-520(普中51-单核-A2)
推荐阅读最新更新时间:2024-11-07 23:47
设计资源 培训 开发板 精华推荐
- 使用 Analog Devices 的 LT3693 的参考设计
- 用于处理器电源管理的 1.2 至 3.5V DC 至 DC 多输出电源
- 7107数字电压表头-DIY
- 【训练营】物联网时钟+1489322A
- 电梯按钮DA211B102
- TDA2005 20W 车载收音机桥式放大器的典型立体声应用
- MIC94345-GYCS 1.8V 输出电压、500mA LDO 与纹波阻断技术的典型应用
- RD-331,用于 LCD 显示器的 29.6W、5V、14V AC 到 DC 多输出电源的参考设计
- LTC2946HDE 电源、电荷和能量监视器在 -48V 恶劣环境中的典型应用,使用 INTVCC 并联稳压器来耐受 200V 瞬态
- 使用 Infineon Technologies AG 的 OMR186 的参考设计