74HC595驱动8*8点阵屏

该项目使用国产M0核单片机,驱动方式类似于stm32平台;点阵驱动芯片:74HC595;点阵屏:8*8

1、74HC595及8*8点阵驱动原理图如下

       74HC595是移位寄存器,它具有输出锁存和输出使能控制端,可以很方便的发挥出串口转并口的功能,可以方便的用于扩展单片机的IO口。74HC595的主要时钟参数如下

 

2、8*8的点阵原理如下

 

        图为8×8点阵LED外观及引脚图,只要其对应的RO、CO轴顺向偏压,即可使LED发亮。例如如果想使左上角LED点亮,则RO(1)=1,CO(1)=0即可。 

        LED一般采用扫描式显示,主要分为三种方式:点扫描、行列扫描;扫描时注意视觉暂留的时间(度娘表示是0.1~0.4,这里可以尽可能的调小),即扫描的间隔。

        这里采用行列扫描的方式。所谓行扫描即是先让第一行全部置于有效位,再送所需的列码,接着再按同样的方法依次扫描所有行,并同时送去所有所需的相应列码即可。所谓列扫描即是先让第一列全部至于有效位,再送所需的行码,接着再按同样的方法依次扫描所有列,并同时送去所需的相应行码即可。

 

3、点阵取模工具

     PCtoLCD2002是常用点阵取模软件,主要配置参数如下

   (1)阴码和阳码

     如果行接的是二极管的阳极,列接的是二极管的阴极,则采用行扫描时列取模方式即为阳码,采用列扫描时行的取模方式即为阴码。对应的若行接二极管阴极,列接二极管阳极,则采用行扫描时取模方式为阴码,采用列扫描时取模方式为阳码。

   (2)逆向和顺向

      一、若采用行扫描,当点阵横向的数据位从左到右依次为高位到低位时,此时的取模方式为顺向取模,反之则为逆向取模;

      二、若采用列扫描,当点阵纵向的数据位从上到下依次为高位到低位时,此时的取模方式为顺向取模,反之为逆向取模。

      总之:顺向即是指点阵数据位上高下低,左高右低

      本项目采用行扫描的方式实现,通过该取模工具,可以实现字母,图片,汉字的显示,由于是8*8的点阵,显示不是很细腻,可以根据显示图片做调整,生成优化。

 

4、驱动如下,这里采用行扫描的方式

(1)引脚配置

#define  STCLK_1 LED_74HC595_STCLK_GPIO_PORT->DOSET = LED_74HC595_STCLK_GPIO_PIN
#define  STCLK_0 LED_74HC595_STCLK_GPIO_PORT->DOCLR = LED_74HC595_STCLK_GPIO_PIN

#define  SHCLK_1 LED_74HC595_SHCLK_GPIO_PORT->DOSET = LED_74HC595_SHCLK_GPIO_PIN
#define  SHCLK_0 LED_74HC595_SHCLK_GPIO_PORT->DOCLR = LED_74HC595_SHCLK_GPIO_PIN

#define  DIN_1   LED_74HC595_DIN_GPIO_PORT->DOSET = LED_74HC595_DIN_GPIO_PIN
#define  DIN_0   LED_74HC595_DIN_GPIO_PORT->DOCLR = LED_74HC595_DIN_GPIO_PIN

(2)向74HC595的移位寄存器发送数据,根据首部的时钟参数,对于低速的单片机,可以不需要延迟

void led_74hc595_send_byte(uint8_t data)
{
	uint8_t i=0;
	for(i=0;i<8;i++)
	{	
		if(data & 0x80)
		{
			DIN_1;
		}
		else
		{
			DIN_0;
		}
		data<<=1;
		SHCLK_0;
//		delay_us(1);
		SHCLK_1;
//		delay_us(1);
	}
}

(3)74HC595 存储器输出

void led_74hc595_output(void)
{
	STCLK_0;
//	delay_us(1);
	STCLK_1;
//	delay_us(1);
}

(4)逐行扫描

void led_74hc595_display(uint8_t * data)
{
	uint8_t row = 0;
	for(row = 0;row < 8;row++)
	{
	    led_74hc595_send_byte(LED_ROW[row]);//行
	    led_74hc595_send_byte(data[row]);//列
	    led_74hc595_output();
	}

}

 

示例显示一个心形图标,如下所示

 

  • 12
    点赞
  • 79
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值