51单片机驱动16*64点阵

单片机驱动74HC595做行控制,74HC154做列控制。

74HC595说明:一个串行输入,并行输出的芯片

引脚12:寄存器时钟 RCK (REGISTER CLOCK)

引脚14:数据串行输入引脚DS (DATA SERIAL)

引脚11:数据输入时钟,在上升沿给数据到14引脚(SERIAL CLOCK)。

例如送一个八位的数据,00110011 ,先送高位,后送低位。

 

0

0

1

1

0

0

1

1

 

11↑

 0

  11↑

 0

  11↑

 0

  11↑

 0

 

 

 

 0

 

 0

 

 0

 

 

 

 

 

 1

 

 1

 

 

 

 

 

 

 

 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  11↑

 0

  11↑

 0

  11↑

 0

  11↑

 0

 

 0

 

 0

 

 0

 

 0

 

 1

 

 1

 

 1

 

 1

 

 1

 

 1

 

 1

 

 1

 

 0

 

 0

 

 0

 

 0

 

 

 

 0

 

 0

 

 0

 

 

 

 

 

 1

 

 1

 

 

 

 

 

 

 

 1

 

这个时候,数据已经在数据寄存器中安顿好了,这个时候根据74HC595特性,在寄存器时钟引脚进行下降沿将其并行送出。

 

14↓

 

这个时候就把数据从并行口送出了,并行口就有数据了(Q7高位 Q0低位)。

 

此时A0 – A7 就有数据了 00110011输出。

A7

A6

A5

A4

A3

A2

A1

A0

0

0

1

1

0

0

1

1

 

 

但是如果想级联呢?

 

将第一个的Q7’引脚接下一个级联的DS 串行数据输入引脚。

 

如果说我们在上面描述的00110011 在传送一个 11001100 呢?

0

0

1

1

0

0

1

1

1

1

0

0

1

1

0

0

第二个74HC59511↑   11↑   11↑   11↑ 11↑   11↑   11↑   11↑0
             0 0
           0 0 1
         0 0 1 1
       0 0 1 1 0
     0 0 1 1 0 0
   0 0 1 1 0 0 1
 0 0 1 1 0 0 1 1
Q7'---DS                
第一个74HC59511↑0  11↑1  11↑1  11↑011↑0  11↑1  11↑1  11↑1
 1 1 0 0 1 1 1 1
 1 0 0 1 1 1 1 0
 0 0 1 1 1 1 0 0
 0 1 1 1 1 0 0 1
 1 1 1 1 0 0 1 1
 1 1 1 0 0 1 1 0
 1 1 0 0 1 1 0 0
DS(数据串行输入引脚)                


 此时所有数据已经就位,在在寄存器时钟上来一个下降沿,这16位数据就被送出去了。

 

如果在级联一个74HC595呢?电路上Q7’连接下一个595的DS数据继续串行输入,直到你的数据给级联的74HC595都吃饱了在进行14引脚的下降沿,将吃进去的数据并行吐出来。

A15

A14

A13

A12

A11

A10

A9

A8

A7

A6

A5

A4

A3

A2

A1

A0

0

0

1

1

0

0

1

1

1

1

0

0

1

1

0

0

点阵的行列连接方式

 

级联了4个 16*16

 

列驱动选择的74HC154,相当于4-16译码器,它在电路中的主要作用就是从Y0-Y15 ,不停的挨个给每个16*16同时一个列低电平,速度加快,因为行已经把数据送到位了,就看到了整体的一个字了。

74HC154 逻辑图

154电路图

 

电路整体如下图

字模软件,可以自己研究一下取模,研究多了就有经验了~

程序如下:

#include<reg51.h>
#include <intrins.h>

#define uchar unsigned char
#define uint unsigned int

sbit si=P3^0;  //数据线  74hc595的14管脚
sbit rck=P3^2;  //输出储存器锁存时钟线 74hc595的12管脚
sbit sck=P3^1;  //数据输入时钟线  74hc595的11管脚

unsigned char code tt1[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",0*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",1*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",0*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",1*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",0*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",1*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",0*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",1*/
0x08,0x40,0x44,0x22,0x82,0x14,0x41,0x08,0x3F,0xF4,0x80,0x02,0x43,0xC8,0x32,0x48,
0x0F,0xFF,0x02,0x48,0x02,0x48,0xFF,0xFF,0x12,0x48,0x22,0x78,0x1E,0x00,0x00,0x00,/*"  ",2*/
0x08,0x40,0x44,0x22,0x82,0x14,0x41,0x08,0x3F,0xF4,0x80,0x02,0x43,0xC8,0x32,0x48,
0x0F,0xFF,0x02,0x48,0x02,0x48,0xFF,0xFF,0x12,0x48,0x22,0x78,0x1E,0x00,0x00,0x00,/*" ",3*/
0x80,0x00,0x60,0x02,0x1F,0xC2,0x00,0x4A,0x00,0x52,0x00,0x42,0x00,0x7E,0x00,0x42,
0x00,0x42,0x00,0x7E,0x00,0x42,0x00,0x52,0x00,0x4A,0x00,0x42,0x00,0x40,0x00,0x00,/*" ",4*/
0x80,0x00,0x60,0x02,0x1F,0xC2,0x00,0x4A,0x00,0x52,0x00,0x42,0x00,0x7E,0x00,0x42,
0x00,0x42,0x00,0x7E,0x00,0x42,0x00,0x52,0x00,0x4A,0x00,0x42,0x00,0x40,0x00,0x00,/*" ",5*/
0x00,0x80,0x41,0x64,0x21,0x2C,0x91,0x34,0x89,0x24,0x87,0x24,0x4D,0xEC,0x55,0x32,
0x25,0x22,0x25,0x22,0x55,0x32,0x4D,0x2E,0x81,0x23,0x80,0xA2,0x80,0x60,0x00,0x00,/*" ",6*/
0x00,0x00,0x0F,0xFC,0x04,0x04,0x04,0x04,0x0F,0xFC,0x00,0x20,0x30,0x10,0x48,0x4C,
0x44,0x4B,0x42,0x48,0x42,0x48,0x41,0x48,0x40,0xC8,0x40,0x08,0x70,0x08,0x00,0x00,/*" ",7*/
0x80,0x00,0x81,0x00,0x40,0xC0,0x20,0x38,0x10,0x00,0x0C,0x00,0x03,0x00,0x00,0xFF,
0x03,0x00,0x0C,0x00,0x10,0x40,0x20,0x20,0x40,0x18,0x80,0x00,0x80,0x00,0x00,0x00,/*" ",8*/
0x80,0x10,0x40,0x10,0x20,0x10,0x18,0x10,0x06,0x10,0x41,0xFF,0x20,0x10,0x10,0x10,
0x3F,0xF0,0x44,0x10,0x42,0x11,0x41,0x16,0x40,0xD0,0x40,0x10,0x78,0x10,0x00,0x00,/*" ",9*/
0x44,0x00,0x44,0x00,0x24,0x00,0x25,0xFE,0x14,0x92,0x0C,0x92,0x04,0x92,0xFF,0xFE,
0x04,0x92,0x0C,0x92,0x14,0x92,0x25,0xFE,0x24,0x00,0x44,0x00,0x44,0x00,0x00,0x00,/*" ",10*/
0x00,0x00,0x00,0x00,0x58,0x00,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,/*",",11*/
0x02,0x10,0x42,0x10,0x81,0x10,0x7F,0xFF,0x00,0x90,0x40,0x40,0x40,0x10,0x41,0x90,
0x5E,0x10,0x40,0x11,0x40,0x16,0x70,0x10,0x4E,0x10,0x41,0xD0,0x40,0x10,0x00,0x00,/*" ",12*/
0x22,0x20,0x67,0x30,0x22,0xAC,0x12,0x63,0x12,0x20,0x12,0x18,0x40,0x00,0x40,0x04,
0x40,0x04,0x40,0x04,0x7F,0xFC,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x00,0x00,0x00,/*" ",13*/
0x00,0x20,0x00,0x10,0x3F,0xE8,0x42,0x24,0x42,0x27,0x42,0x24,0x42,0x24,0x43,0xE4,
0x42,0x24,0x42,0x34,0x42,0x2C,0x42,0x20,0x43,0xE0,0x40,0x00,0x78,0x00,0x00,0x00,/*" ",14*/
0x00,0x00,0x7F,0xF8,0x21,0x0C,0x21,0x0B,0x21,0x08,0x21,0x08,0x7F,0xF8,0x00,0x40,
0x00,0x30,0x00,0x8F,0x43,0x08,0x80,0x08,0x40,0x08,0x3F,0xF8,0x00,0x00,0x00,0x00,/*" ",15*/
0x00,0x80,0x00,0x60,0xFF,0xF8,0x00,0x07,0x80,0x00,0x83,0xFA,0x46,0x4A,0x2A,0x4A,
0x12,0x4A,0x2F,0xFE,0x42,0x4A,0x42,0x4A,0x82,0x4A,0x83,0xFA,0x80,0x02,0x00,0x00,/*" ",16*/
0x00,0x80,0x00,0x60,0xFF,0xF8,0x00,0x07,0x80,0x00,0x83,0xFA,0x46,0x4A,0x2A,0x4A,
0x12,0x4A,0x2F,0xFE,0x42,0x4A,0x42,0x4A,0x82,0x4A,0x83,0xFA,0x80,0x02,0x00,0x00,/*" ",17*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",18*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",19*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",0*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",1*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",0*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",1*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",0*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",1*/
};

unsigned char code taba[16]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,};//列扫描显示编码

void delay(unsigned int p)
{  
    unsigned char i;  
    while(p--)  
    {   
    	for(i=110;i>0;i--);  
    }   
}   
void sendHC595Byte(uchar pp)
{     
    uchar i;   
    for(i=0;i<8;i++)  
    {   
	    sck=0;   
        if(pp&0x80)
	    {
	        si=1;   
	    }
        else 
	    {
	        si=0;
	    }   
       	sck=1;   
        pp<<=1;   
    }
}   

void sendHC154(uint i) 
{
    P1 = i;
}


void main()
{
    uchar i;
    uint k,m,n;
    char j;
    m = sizeof(tt1);
   
    while(1)
    {
        for(k=0;k<m;k=k+2) // 动态选择控制数据
		{   
			for(n=0;n<1;n++) // 控制速度
			{
                for(i=0;i<16;i++) // 一次出16个数据
                {       
                    for(j=3;j>=0;j--) // 多少个16*16点阵块
                    {
                        sendHC595Byte(tt1[(32*j+2*i+k)%m]);
                        sendHC595Byte(tt1[(32*j+2*i+k+1)%m]);
                    }
                    sendHC154(taba[i]);
                    rck=1;
					_nop_();
                    rck=0;
                }
			}
		}
    }
}

 

  • 11
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 24
    评论
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值