找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2625|回复: 0
打印 上一主题 下一主题
收起左侧

使用单片机+74HC595芯片驱动点阵和跑马灯的心得与程序分享

[复制链接]
跳转到指定楼层
楼主
使用这个芯片还是上个帖子有位前辈说74HC595芯片对IO口的扩展能力优于三八译码器。(它有个级联接口,可以直接接下一个74HC595芯片),其实想想生活中的广告位显示器就能用到它。刚好发现自己的板子上有两块74HC595芯片。通过看它的数据手册我发现这个芯片的特点可以用下图描述:(字写得不好)。大家可以想想入栈和出栈的原理,其实一样的。(如有不对,恳请指正)。例如:单片机P1^1口输出0x01至该芯片,当SRCLK上升沿到来时,该数据被从高到低位依次移入移位寄存器当中,此时数据为:0x80;SRCLK下降沿到来时,禁止置入数据,然后当RCLK的上升沿到来时,移位寄存器当中的数据从高位到地位依次移到数据寄存器当中,QA->QH,此时数据为原来的数据:0x01。下面分享两个代码,一个是对这个芯片的基础理解。另一个是驱动两个8*8点阵显示♥。关于♥的位码生成大家可以了解一下字符取模软件。


单片机源程序如下:
  1. #include "reg51.h"
  2. #include "intrins.h"        // 包含_nop_()函数原型

  3. typedef unsigned char u8;
  4. typedef unsigned int u16;

  5. sbit SRCLK = P1^0;
  6. sbit RCLK = P1^1;
  7. sbit SER = P1^2;

  8. void HC595SendByte(u8 dat);   

  9. void delay(u16 i)
  10. {
  11.         while(i--);
  12. }

  13. void Hc595SendByte(u8 dat)
  14. {
  15.         u8 i;
  16.         SRCLK = 0;
  17.         _nop_();
  18.         SRCLK = 1;

  19.         for(i = 0; i < 8; i++)  //用循环依次读入8位数据。
  20.         {                                               
  21.                 SER = dat >> 7;                //把dat的最高位直接移到最低位。dat不变。
  22.                 dat <<= 1;
  23.                
  24.                 SRCLK = 0;
  25.                 _nop_();
  26.                 _nop_();
  27.                 SRCLK = 1;                
  28.         }
  29.         RCLK = 0;
  30.         _nop_();
  31.         _nop_();
  32.         RCLK = 1;
  33. }

  34. void main(void)
  35. {
  36.         u8 led = 0xfe;
  37.         u8 i;
  38.         while(1)
  39.         {
  40.                  for(i = 0; i < 7; i++)
  41.                 {
  42.                          HC595SendByte(led);
  43.                         P0 = _crol_(led,1);
  44.                         delay(50000);
  45.                 }
  46.                 for(i = 0; i < 7; i++)
  47.                 {
  48.                          HC595SendByte(led);
  49.                         P0 = _cror_(led,1);
  50.                         delay(50000);
  51.                 }
  52.         }
  53. }
复制代码

所有资料51hei提供下载:
LED点阵.rar (18.25 KB, 下载次数: 20)
_HC595.zip (18.91 KB, 下载次数: 16)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表