一、何为字模
(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-17 11:36
设计资源 培训 开发板 精华推荐
- GPRS无线网络控制器
- LT1587CT 3A 低压差稳压器的典型应用
- m365-esp32
- NVG800A75L4DSC-EVK:VE-Trac 双 EZ 套件
- 具有电缆压降补偿功能的 LTC3623IUDD 12V 至 2.5V、1MHz 降压稳压器的典型应用电路
- Protues仿真实例(8051)-8x8点阵
- 使用 Semtech 的 SC2677TSTR 的参考设计
- DC1705C-D,用于具有集成 VCO 的 LTC6946-4 超低噪声和杂散 700MHz 至 6.39GHz 整数 N 合成器的演示板
- AM3GW-4803SZ 3.3V 3W DC/DC 转换器的典型应用
- ESP8266-Node-Alarm
- 大联大品佳集团推出以复旦微和ams OSRAM产品为主的汽车氛围灯方案
- 为啥车载操作系统(Vehicle OS)越来越重要了呢?
- 车载传感器 — 一文详解激光雷达
- 汽车(超声波、毫米波、激光)雷达之间的简单区别
- 汽车电路相关知识大全
- Bourns 推出两款厚膜电阻系列,具备高功率耗散能力, 采用紧凑型 TO-220 和 DPAK 封装设计
- SABIC进一步深化与博鳌亚洲论坛的战略合作伙伴关系
- 使用 3.3V CAN 收发器在工业系统中实现可靠的数据传输
- 凌华智能推出AmITX Mini-ITX 主板,助力边缘人工智能和物联网创新
- 英飞凌携手马瑞利采用AURIX™ TC4x MCU系列推动区域控制单元创新