74HC165的级联电路图

74HC165是一款高速CMOS器件,74HC165遵循JEDEC标准no.7A。74HC165引脚兼容低功耗肖特基TTL(LSTTL)系列。

74HC165是8位并行读取或串行输入移位寄存器,可在末级得到互斥的串行输出(Q7和Q7),当并行读取(PL)输入为低时,从D0到D7口输入的并行数据将被异步地读取进寄存器内。

而当PL为高时,数据将从DS输入端串行进入寄存器,在每个时钟脉冲的上升沿向右移动一位(Q0→Q1→Q2,等等)。利用这种特性,只要把Q7输出绑定到下一级的DS输入,即可实现并转串扩展。

74HC165的时钟输入是一个“门控或”结构,允许其中一个输入端作为低有效时钟使能(CE)输入。CP和CE的引脚分配是独立的并且在必要时,为了布线的方便可以互换。只有在CP为高时,才允许CE由低转高。在PL上升沿来临之前,不论是CP还是CE,都应当置高,以防止数据在PL的活动状态发生位移。

74HC165是一种并入串出的芯片,我们可以用它来做按键检测。它可以外接8个接键,然后将数据转成串行的送入单片机。如果用74HC165做键盘的话,能节省很多IO口。

74hc165使用方法与级联程序

LCD程序是采用wang1jin带您从零学单片机里面的1602程序修改。

#include《AT89X52.H》

#include“LCD.h”

#defineuint16unsignedint

#defineuint8unsignedchar

#defineAUDIO_OUTP0

///

sbitHC165_CE=P1^1;//HC165控制端L有效

sbitHC165_PL=P1^2;//HC165锁存引脚H高效

sbitHC165_CLK=P1^0;//HC165时钟引脚

sbitHC165_IN=P1^3;//HC165数据输出引脚

uint8Address=0;//本地地址变量

uint8Priority=0;//优先级变量

///

uint8LCD_DATA1[]={

‘0’,‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’,‘8’,‘9’,‘A’,‘B’,‘C’,‘D’,‘E’,‘F’

};

voidInit_INT(void);

voidRead_HC165(void);

voidmain(void){

Init_INT();LCD1602();

Init_Lcd();while(1){

Read_HC165();

Display_LCD_Byte(0,0,‘0’);

Display_LCD_Byte(0,1,‘x’);

Display_LCD_Byte(0,2,LCD_DATA1[Address/16]);

Display_LCD_Byte(0,3,LCD_DATA1[Address%16]);

Display_LCD_Byte(1,0,‘0’);

Display_LCD_Byte(1,1,‘x’);

Display_LCD_Byte(1,2,LCD_DATA1[Priority/16]);

Display_LCD_Byte(1,3,LCD_DATA1[Priority%16]);

}

}

定时器初始化

//voidInit_INT(void)

{

TMOD=0x01;

ET0=1;

TR0=1;

EA=1;

TH0=0xF8;

TL0=0xC5;

}

//

//读取优先级和本机地址

//当执行本次程序时

//函数会将165的信号优先级

//以及本机的地址送到Priority和Address

//

voidRead_HC165(void)

{

uint8i=0;//临时变量

uint8BJ_Address=0;

uint8BJ_Priority=0;

HC165_CE=0;//打开165选通端

HC165_PL=0;//允许数据进入165

for(i=0;i《8;i++)//读8次数据

{

HC165_PL=1;//允许数据移位

HC165_CLK=0;//低电平时读取数据

if(HC165_IN)//数据高位在前

{

BJ_Priority|=0x80》》i;

}

HC165_CLK=1;//数据移位

}

for(i=0;i《8;i++)//读取下一个165的数据

{

HC165_CLK=0;

if(HC165_IN)

{

BJ_Address|=0x80》》i;

}

HC165_CLK=1;

}

HC165_CE=1;

HC165_PL=0;

Address=BJ_Address;

Priority=BJ_Priority;

}

#ifndef_LCD_H_

#define_LCD_H_

#include《AT89X52.H》

#defineLCD_DATAP3

sbitRS=P1^5;

sbitRW=P1^6;

sbitEN=P1^7;

voidLCD1602(void);

voidRead_Busy(void);

voidWrite_Lcd(unsignedcharValue,biTI);voidInit_Lcd(void);

voidDelay(unsignedinTI);

voidDisplay_LCD_Byte(unsignedchary,unsignedcharx,unsignedcharValue);

#endif

#include“LCD.h”

voidLCD1602(void)

{

EN=0;

RS=1;

RW=1;

LCD_DATA=0xFF;

}

voidRead_Busy(void)

{

LCD_DATA=0xFF;

RS=0;

RW=1;

EN=1;

//while(LCD_DATA&0x80);

Delay(100);

EN=0;}

voidWrite_Lcd(unsignedcharValue,biTI)//i=0写指令.i=1写数据;

{

Read_Busy();

LCD_DATA=Value;

RS=i;RW=0;

EN=1;

EN=0;

}

voidInit_Lcd(void)

{

Delay(15000);

Write_Lcd(0x38,0);

Delay(5000);

Write_Lcd(0x38,0);

Delay(5000);

Write_Lcd(0x38,0);

Write_Lcd(0x08,0);

Write_Lcd(0x01,0);

Write_Lcd(0x06,0);

Write_Lcd(0x0c,0);

}

voidDisplay_LCD_Byte(unsignedchar

y,unsignedcharx,unsignedcharValue)

{

y&=0x01;//y不能大于1x&=0x0F;//x不能大于15

if(y)//是否显示在第二行;

{

x+=0x40;//显示在第二行,加0X40;

}

x+=0x80;

Write_Lcd(x,0);//写入显示的位置

Write_Lcd(Value,1);//写入显示数据}

voidDelay(unsignedinTI)

{

while(--i);

}

74hc165C语言程序,74hc165级联用法(74hc165级联电路图及程序)相关推荐

  1. 74hc165C语言程序,74hc165使用方法(74hc165功能_内部结构图_时序图)

    描述 74HC165概述 74HC165是一款高速CMOS器件,74HC165遵循JEDEC标准no.7A.74HC165引脚兼容低功耗肖特基TTL(LSTTL)系列. 74HC165是8位并行读取或 ...

  2. STM32F103C8T6读取8个级联的74HC165移位寄存器 (级联74HC165,单片机读数据不正常的问题)

    1.读取8个级联的74HC165移位寄存器 74hc165.h #ifndef _74HC165_H #define _74HC165_H #include "sys.h" #in ...

  3. 微信小程序____小程序的组件用法与HTML5标签的区别

    熟悉一门开发语言或是一种框架,除了了解它的基本语法.基本控件.基本属性之外,最好的方式莫过于追根溯源,与同类型的.自己熟悉的语言比较并了解它的异同,这样才能更好的去理解并记忆. 下面我们先探究下它们之 ...

  4. 微信小程序的组件用法与传统HTML5标签的区别

    小程序与传统HTML5的区别 小程序刚开放公测,互联网圈内开始了各种解读和猜测.其中有观点认为小程序和HTML5有着紧密关联,甚至小程序就是基于HTML5开发. 经过仔细研究文档和代码开发,从视图层的 ...

  5. 利用Console来调试JS程序、Console用法总结

    利用Console来调试JS程序.Console用法总结(1) 一 .什么是 Console Console 是用于显示 JS和 DOM 对象信息的单独窗口.并且向 JS 中注入1个 console ...

  6. c语言中的指针语法,C语言中指针的用法介绍

    C语言中指针的用法介绍 for(int i=0;i { num+=*s;s++; } return num; ) 这个例子中的函数 fun统计一个字符串中各个字符的 ASCII 码值之和.前面说了,数 ...

  7. [NHibernate]一对多关系(级联删除,级联添加)

    目录 写在前面 文档与系列文章 一对多关系 一个例子 级联删除 级联保存 总结 写在前面 在前面的文章中,我们只使用了一个Customer类进行举例,而在客户.订单.产品中它们的关系,咱们并没有涉及, ...

  8. linux之getcwd函数解析,Linux 中C语言getcwd()函数的用法

    Linux 中C语言getcwd()函数的用法 先来看该函数的声明: #include char *getcwd(char *buf,size_t size); 介绍: 参数说明:getcwd()会将 ...

  9. c语言get()的作用,c语言get函数的用法有哪些

    C语言中gets从标准输入设备读字符串函数,可以无限读取,不会判断上限,今天学习啦小编在这里为大家介绍C语言get函数的用法,欢迎大家阅读! c语言get函数的用法:int getc(FILE *st ...

最新文章

  1. Active Directory 账号迁移配置介绍
  2. java 下载文件选择下载路径_Java后台如何根据路径地址下载文件?
  3. cocos2dX改变锚点位置
  4. Windows下SVN回滚到旧版本(TortoiseSVN)
  5. DataTables基本搭建攻略(后台分页)
  6. 【kafka】kafka 零拷贝 技术
  7. 对比了6家交易所的下币规则,我们发现……
  8. 算法:24.两两交换链表中的节点
  9. SpringBoot工程中,如果不继承spring-boot-starter-parent ,还可以怎么做到的版本管理?
  10. Azkaban安装部署(附资源)
  11. 网易云音乐的所有歌手列表
  12. 硬件工程师的真实前途我说出来可能你们不信
  13. java九宫格代码_Java实现九宫格的简单实例
  14. 解决SQLServer复制到Excel中内容换行问题
  15. linux oracle lsnrctl start,linux 下lsnrctl start问题
  16. H3C对接外部Portal+Radius认证计费系统实现mac-trigger快速认证Mac无感知认证并结合L2TP实现阿里云部署对接配置
  17. Linux系列:给网卡添加IP地址方法
  18. 使用ajax 实现用户的用户名注册验证,如果该用户已存在则提示该用户已存在
  19. 微信直播:视频号如何开通直播?功能有哪些?
  20. nginx前端网页小图标配置(favicon.ico not found问题)

热门文章

  1. kindlenbsp;3nbsp;开箱、注册、装多…
  2. java对象强制类型转换,看完直接跪服
  3. 集合——数组容器笔记
  4. ACL Tutorial|开放域问答综述 -- 陈丹琦和Scott
  5. P3387 【模板】缩点 Tarjan强连通分量/树上dp
  6. 老男孩教育春节假期安排
  7. 通过贝壳物联,让小度或天猫精灵语音控制你的8266
  8. HTML5前端开发入门之H系列标签,P标签和Hr标签
  9. mysql我没压岁钱了,你压没压我?岁没岁我?该不该给我压岁钱表情包
  10. maven下载jar包下载不下来的解决方法