74HC165简介

74HC165是八位并行输入/串行输出移位寄存器,两片74HC165串联在一起,在时钟脉冲的作用下,从KB-DAT读入串行数据,可完成对16位键盘数据扫描读取。

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

74HC165是8位并行输入串行输出移位寄存器,可在末级得到互斥的串行输出(Q0和Q7),当并行读取(PL)输入为低时,从D0到D7口输入的并行数据将被异步地读取进寄存器内。而当PL为高时,数据将从DS输入端串行进入寄存器,在每个时钟脉冲的上升沿向右移动一位(Q0→Q1→Q2,等等)。利用这种特性,只要把Q7输出绑定到下一级的DS输入,即可实现并转串扩展。

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

单片机驱动74hc165程序

当1脚拉低时,八位并行数据被压入锁存器,但与此同时,D7也已经从7脚输出,因此只要再循环7次将数据读出即可

ucharReadExport(void)

{

unsignedchari=0,receive_date=0;

ucharRead_Int;

Clr_P25;//使能控制。为低电平时,并行数据进入锁存器

Clr_P25;

Read_Int=(P2&0x10);//串行输出数据线

if(Read_Int==0x10)//把最高位读出

receive_date|=0x01;

Clr_P03;

Set_P25;//为高电平时,可以进行串行数据读出

for(i=1;i《=7;i++)//接下来只要进行7次循环

{

Clr_P03;

Set_P03;//时钟线,上升沿有效

Read_Int=(P2&0x10);//串行输出数据线

if(Read_Int==0x10)

{

receive_date|=(0x01《《i);

}

}

returnreceive_date;

}

基于51单片机之74HC165实验例程

**************************Copyright(C)CaKe*****************************************

==================================================

==============**文件名:main.c==============

==============**作者:CaKen==============

==============**版本号:V1.0==============

==============**时间:2014.08.16==============

==============**功能描述:74HC165实验测试==============

====================================================

**********************************************************

#include

#include

//SPI接口

sbitCLK=P3^6;//串行时钟

sbiTIN_PL=P1^6;//把数据加载到锁存器中

sbiTIN_Dat=P1^7;//数据通过P1.7脚移进单片机内处理

sbitRELAY=P1^4;//继电器

sbitBEEP=P1^5;//蜂鸣器

unsignedcharbdataKey;

sbitK0=Key^0;//位定义

sbitK1=Key^1;//位定义

sbitK2=Key^2;//位定义

sbitK3=Key^3;//位定义

sbitK4=Key^4;//位定义

sbitK5=Key^5;//位定义

sbitK6=Key^6;//位定义

sbitK7=Key^7;//位定义

bitM0,K0J;//位定义

**********************************************************

函数名:

调用:beep();

参数:

返回值:

结果:

备注:蜂鸣器(让蜂鸣器发出动听声音)

************************************************************

voidbeep()

{

unsignedchari,j;

for(i=0;i《2;i++)

{

for(j=0;j《255;j++)

{_nop_();}

BEEP=!BEEP;//BEEP取反

}

BEEP=1;//关闭蜂鸣器

}

*********************************************************

函数名:74HC165函数初始化

调用:HC165_Init();

参数:

返回值:

结果:

备注:IN_PL上升沿,CLK上升沿

********************************************************

unsignedlongHC165_Init(void)

{

unsignedchari;

unsignedinTIndata;

IN_PL=0;//上升沿

_nop_();//短暂延时产生一定宽度的脉冲

IN_PL=1;//将外部信号全部读入锁存器中

_nop_();

indata=0;//保存数据的变量清0

for(i=0;i《8;i++)

{

indata=indata《《1;//左移一位

if(IN_Dat==1)

indata=indata+1;//如果IN_Dat检测到高电平保存数据的变量加1

CLK=0;//时钟置0

_nop_();//上升沿

CLK=1;//时钟置1

}

return(~indata);//将保存数据的变量取反后返回

}

*********************************************************

函数名:主函数

调用:main

参数:

返回值:

结果:

备注:74HC165控制八个按键

********************************************************

main()

{

while(1)

{

unsignedlongInput=HC165_Init();//调用165驱动程序

Key=Input&0xff;//将数据传给位变量

RELAY=1;

P2=0xff;//清除

if(K0&K0J)

M0=~M0;//实现脉冲输入大家仔细体会

K0J=~K0;

if(M0){RELAY=0;P2=0x7f;}//实现脉冲输入

if(K1){beep();P2=0xbf;}//K1为1时开启蜂鸣器和2个灯

if(K2){beep();P2=0xdf;}

if(K3){beep();P2=0xef;}

if(K4){beep();P2=0xf7;}

if(K5){beep();P2=0xfb;}

if(K6){beep();P2=0xfd;}

if(K7){beep();P2=0xfe;}

}

}

74hc165C语言程序,单片机驱动74hc165程序相关推荐

  1. c语言流水灯程序详细讲解,用c语言编写单片机流水灯程序详解

    用C语言编写的单片机流水灯程序 一.硬件电路 因为电路用单片机控制,所以电路非常简洁.其电路原理图见下图,印制板图如下图所示. ? 电路的核心部分是AT89C2051单片机,前面提到它有Pl和P3两组 ...

  2. 单片机c语言程序编写步骤,用c语言编写单片机流水灯程序详解

    用C语言编写的流水灯程序 一.硬件电路 因为电路用单片机控制,所以电路非常简洁.其电路原理图见下图,印制板图如下图所示. 电路的核心部分是AT89C2051单片机,前面提到它有Pl和P3两组I/O口, ...

  3. 时钟电路程序设计c语言,STC89C52单片机简易时钟程序电路设计(附源代码和电路图)...

    51(STC89C52)单片机简易时钟程序电路设计(附源代码和电路图) 上一篇做了一个温湿度采集电路,觉得这东西玩起来还是挺有意思,然后就想做一个时钟,于是就有了下文 1.成品图 51hei图片_20 ...

  4. ds12c887程序C语言,51单片机驱动DS12C887的时钟芯片C语言程序

    本程序旨在读出DS12C887的时间,显示部分只做了分和秒的部分,已通过测试,详细注释很好用的. #include < absacc.h > #include < reg51.h & ...

  5. 74hc165 c语言程序,单片机读取74HC165数据异常原因分析

    描述 0.引言 74HC165是一款高速CMOS移位寄存器,电压为2.0-6.0V,驱动电流为+/-5.2mA.74HC165引脚兼容TTL(LSTTL)系列(定义于JEDEC标准№.7A). 74H ...

  6. 8路巡回检测c语言程序,单片机驱动ds18b20四路温度巡回检测程序

    #include "reg52.h"//头文件 #include "intrins.h" #define uchar unsigned char//宏定义 #d ...

  7. 51单片机led点阵C语言,51单片机驱动LED点阵扫描显示C语言程序

    #ifndef__Matrix_H__ #define__Matrix_H__ #ifdef__cplusplus extern"C" { #endif #define SET  ...

  8. 单片机控制lcd序c语言,51单片机驱动1602液晶的C程序

    # include /***************************************** 电路连接 P1------DB0-DB7 P2.0------RS P2.1------RW ...

  9. c语言编程ad7799,51单片机驱动AD7799程序(keil c)

    #include"VRS51L3074_keil.h" #include#define uchar   unsigned char #define uint    unsigned ...

  10. dac0832三角波c语言程序,单片机驱动dac0832输出方波三角波正玄波程序

    电路图 仿真文件及完整的源代码下载地址:http://www.51hei.com/bbs/dpj-20395-1.html 下面是汇编程序源码,可以用按键来控制 org 0000h ajmp main ...

最新文章

  1. R语言构建xgboost模型:使用xgboost模型训练tweedie回归模型,特征工程(dataframe转化到data.table、独热编码、缺失值删除、DMatrix结构生成)
  2. Xamarin.Forms特殊的视图BoxView
  3. Java领域的对象如何传输-了解序列化的意义
  4. Java虚拟机(四)——类加载机制
  5. C# 在采集数据时的验证与登录处理
  6. CCC认证有没有2019年新的具体的收费标准
  7. JAVA随机抽取一名幸运观众(手动输入观众)小实例
  8. 2022年陕西省职业院校技能大赛中职组网络安全赛项规程
  9. 菩提千年,你是我红尘中最美的缘
  10. Pale Moon 苍月浏览器 24.0.1 发布
  11. 【高德地图API】Web地图开发系列(一)
  12. android 创建多个闹钟,Android设置多个闹钟
  13. Android ExceptionThrowable 常见异常和解决方法 奔溃日志上报 monkey异常修改
  14. Android实现自适应正方形GridView(陌陌引导页面效果)
  15. 毫米波雷达相关知识调研
  16. 查看linux snmp状态,Linux开启snmp及查询
  17. 米卢:梅西是世界最佳 弗格森没有犯错误
  18. 测试点击屏幕次数的软件_变视读为聆听,解决老同志阅读困难的一款实用的文字转语音软件...
  19. ChatGPT玩法大全火了,一键复制就能get同款效果:脱口秀张口就来,还能扮演哈利波特...
  20. 导图解文 从梦想到财富(13)你的运气,为什么一直不好?

热门文章

  1. (附源码)计算机毕业设计ssm 航空订票系统
  2. c语言必背数据结构_c语言必背代码有哪些?
  3. 这才是真相,“轻点,疼”被禁却另有玄机
  4. 计算机网络科研项目申请书,科研项目申请书范文例.doc
  5. linux将数字转为科学计数法,Linux下科学计数法(e)转化为数字的方法
  6. 如何用一般方式获取C币可用分
  7. BSC(币安智能链)主网链部署
  8. 【经典算法实现 15】阿克曼函数(非递归实现)
  9. 【翻译】PDF格式详解
  10. 群晖服务器白群晖有哪些型号,白群晖和黑群晖,有什么区别?