led点阵
- 作用:通过16*16点阵显示一些字符汉字等。
- 实现方式:通过74HC595芯片,用4个595芯片串联把三个I/O口扩展成32个。
汉字的实现和动态数码管一样是动态实现。(我这里是每次显示一列)
几个注意点:
- 前面的二维数组是通过软件取模生成的。
- 核心重点在 _74hc595( ) 函数
输入的顺序依次是点阵的下右,下左,右下,右上。(下面高位到低位,右边高位到低位) - 仔细去对应二维数组里面内容
(数字是软件生成的,上8位一列一列生成的,下八位一列一列生成的)
(位底是为了对应只让当前动态扫描的那一列亮,其余不亮。)
代码如下:
#include <REGX52.H>
#include <intrins.h>
sbit sck=P0^1;
sbit ser=P0^0;
sbit rck=P0^2;
//typedef P1 led;
typedef unsigned char u8;
u8 code shuzi[22][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}, //wo
{
0x80,0x64,0x2C,0x34,0x24,0x24,0xEC,0x32,0x22,0x22,0x32,0x2E,0x23,0xA2,0x60,0x00,
0x00,0x41,0x21,0x91,0x89,0x87,0x4D,0x55,0x25,0x25,0x55,0x4D,0x81,0x80,0x80,0x00}, //ai
{
0x40,0x30,0x11,0x96,0x90,0x90,0x91,0x96,0x90,0x90,0x98,0x14,0x13,0x50,0x30,0x00,
0x04,0x04,0x04,0x04,0x04,0x44,0x84,0x7E,0x06,0x05,0x04,0x04,0x04,0x04,0x04,0x00}, //xue
{
0x00,0x02,0x02,0x02,0x12,0x22,0xC2,0x02,0x02,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,
0x00,0x08,0x18,0x08,0x04,0x04,0x04,0x02,0x02,0x41,0x81,0x40,0x3F,0x00,0x00,0x00}, //xi
{
0x40,0x30,0x11,0x96,0x90,0x90,0x91,0x96,0x90,0x90,0x98,0x14,0x13,0x50,0x30,0x00,
0x04,0x04,0x04,0x04,0x04,0x44,0x84,0x7E,0x06,0x05,0x04,0x04,0x04