找回密码
 立即注册

QQ登录

只需一步,快速开始

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

STC89C52单片机+74HC595扩展IO口原理图+源程序

  [复制链接]
跳转到指定楼层
楼主
百度了很久, 扩展IO的贴子说的都不是很详细

现在把我测试出来的程序详细标注
方便新人理解

电路原理图如下:











单片机源程序如下:
  1. /*************************************************
  2. *                单片机: STC89C52
  3.                 芯  片: 74HC595
  4.                 功  能: 扩展单片机IO口
  5.                 实  现: 可自由控制74HC595(QA~QH高低电平)
  6. *************************************************/
  7. #include <reg51.h>
  8. #include <intrins.h>
  9. #define  NOP() _nop_()  /* 定义空指令 */

  10. //SPI IO
  11. sbit MOSIO =P3^4;
  12. sbit R_CLK =P3^5;
  13. sbit S_CLK =P3^6;

  14. //0xff 全灭
  15. //0xfe 1111 1110 (二进制八位,从左到右代表QH-QA, 0代表高电平,1代表低电平,所以这一组只亮QA)
  16. //0xfd 1111 1101 (二进制八位,从左到右代表QH-QA, 0代表高电平,1代表低电平,所以这一组只亮QB)
  17. //0xfb 1111 1011 (二进制八位,从左到右代表QH-QA, 0代表高电平,1代表低电平,所以这一组只亮QC)
  18. //0xf7 1111 0111 (二进制八位,从左到右代表QH-QA, 0代表高电平,1代表低电平,所以这一组只亮QD)
  19. //0xef 1110 1111 (二进制八位,从左到右代表QH-QA, 0代表高电平,1代表低电平,所以这一组只亮QE)
  20. //0xdf 1101 1111 (二进制八位,从左到右代表QH-QA, 0代表高电平,1代表低电平,所以这一组只亮QF)
  21. //0xbf 1011 1111 (二进制八位,从左到右代表QH-QA, 0代表高电平,1代表低电平,所以这一组只亮QG)
  22. //0x7f 0111 1111 (二进制八位,从左到右代表QH-QA, 0代表高电平,1代表低电平,所以这一组只亮QH)
  23. unsigned char LED_HL[9]={0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
  24. unsigned int i1;

  25. void delay(unsigned int i);      //函数声名
  26. void HC595SendData(unsigned char SendVal);


  27. main()
  28. {  
  29.    HC595SendData(0xff);            //初始化595使他为高电平 让LED处于熄灭状态

  30.   while(1)
  31.   {
  32.                   //循环9次,先全灭,在从QA亮到QH
  33.                 for(i1=0;i1<9;i1++) {
  34.                         HC595SendData(LED_HL[i1]);        //调用595驱动程序 把LED的数据送到595
  35.                         delay(200);
  36.                 }

  37.                 //只亮QC
  38.                 HC595SendData(LED_HL[3]);        //调用595驱动程序 把LED的数据送到595
  39.                 delay(500);

  40.                 //只亮QD和QH        0x77=01110111
  41.                 HC595SendData(0x77);        //调用595驱动程序 把LED的数据送到595               
  42.                 delay(500);

  43.                 //循环8次,让QF高低电平
  44.                 for(i1=0;i1<8;i1++) {
  45.                         HC595SendData(LED_HL[0]);        //调用595驱动程序 把LED的数据送到595
  46.                         delay(200);
  47.                         HC595SendData(LED_HL[6]);        //调用595驱动程序 把LED的数据送到595
  48.                         delay(200);
  49.                 }

  50.                 //需要更多玩法可自行用"进制转换工具"手动输入想要的二进制自己转换成十六进制
  51.   }   
  52. }

  53. //未完, 请下载附件
复制代码

全部资料51hei下载地址:
STC89C52 74HC595扩展IO口.zip (62.36 KB, 下载次数: 170)

评分

参与人数 1黑币 +100 收起 理由
admin + 100 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:314000 发表于 2019-4-22 00:36 | 只看该作者
13脚不是低电平有效吗?
回复

使用道具 举报

板凳
ID:541953 发表于 2019-5-19 16:14 | 只看该作者
感谢大佬
回复

使用道具 举报

地板
ID:425846 发表于 2019-6-16 14:46 | 只看该作者
很明显,13引脚是使能引脚,低电平有效,原理图接错了
回复

使用道具 举报

5#
ID:847721 发表于 2020-12-1 09:09 | 只看该作者
13脚应该直接接低电平
回复

使用道具 举报

6#
ID:718523 发表于 2021-3-7 22:52 | 只看该作者
谢谢,注释详细能看懂
回复

使用道具 举报

7#
ID:882420 发表于 2021-3-9 09:08 | 只看该作者
OE为啥不接低电平呢
回复

使用道具 举报

8#
ID:145511 发表于 2024-1-27 16:40 | 只看该作者
电平都接错,这什么水平
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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