设为首页收藏本站淘宝杂货铺

从F到0 - From F to 0

 找回密码
 注册已关闭
搜索
查看: 1004|回复: 0
收起左侧

C51/STC单片机 使用3个I/O口实现驱动两片级联74HC165并行转串行芯片 并将结果存入数组

[复制链接]
发表于 2022-2-19 10:14:11 | 显示全部楼层 |阅读模式
1.png

  1. /*
  2. 单片机型号:STC任意
  3. 级联方法:两片74HC165分别为:U1、U2
  4. 所有级联的CLK、SH/LD脚全部并在一起接IO,INH全部接地。
  5. U1的SI接地,U1的SO接U2的SI,U2的SO接IO。
  6. D0~D7分别为并行数据输入,只需要3个IO口,多个级联以此类推。
  7. 74HC系列IC所有输入引脚严禁悬空,否则会受到干扰而出错。
  8. */
  9. #include "STC15.h"
  10. #define u8 unsigned char
  11. #define u16 unsigned int
  12. #define u32 unsigned long

  13. #define hc165_num 2                                //165级联数量
  14. u8 hc165_data[hc165_num];                //165数据容器
  15. sbit hc165_shld = P3 ^ 2;                //165移位置位控制
  16. sbit hc165_clk = P3 ^ 3;                //165时钟信号
  17. sbit hc165_so = P3 ^ 4;                        //165数据接收

  18. void hc165() {                        //读取74HC165数据 结果存入 hc165_data 数组
  19.         u8 i,j,k;
  20.         hc165_shld = 0;
  21.         hc165_shld = 1;
  22.         k = hc165_num - 1;
  23.         do {
  24.                 i = 7;
  25.                 j = 0;
  26.                 do {
  27.                         j |= (hc165_so ? 1 : 0) << i;
  28.                         hc165_clk = 0;
  29.                         hc165_clk = 1;
  30.                 } while (i--);
  31.                 hc165_data[k] = j;
  32.         } while (k--);
  33. }

  34. void main() {
  35.         while (1) {
  36.                 hc165();
  37.                 P1 = hc165_data[0];                //U1数据
  38.                 P2 = hc165_data[1];                //U2数据
  39.         }
  40. }
复制代码

相关帖子

您需要登录后才可以回帖 登录 | 注册已关闭

本版积分规则

QQ|手机版|Archiver|从F到0 ( 蒙ICP备17002595号-1 )
蒙公网安备15010402000325号

腾讯云安全认证

GMT+8, 2024-4-25 10:22 , Processed in 0.666038 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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