74hc165C语言程序,单片机驱动74hc165程序
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程序相关推荐
- c语言流水灯程序详细讲解,用c语言编写单片机流水灯程序详解
用C语言编写的单片机流水灯程序 一.硬件电路 因为电路用单片机控制,所以电路非常简洁.其电路原理图见下图,印制板图如下图所示. ? 电路的核心部分是AT89C2051单片机,前面提到它有Pl和P3两组 ...
- 单片机c语言程序编写步骤,用c语言编写单片机流水灯程序详解
用C语言编写的流水灯程序 一.硬件电路 因为电路用单片机控制,所以电路非常简洁.其电路原理图见下图,印制板图如下图所示. 电路的核心部分是AT89C2051单片机,前面提到它有Pl和P3两组I/O口, ...
- 时钟电路程序设计c语言,STC89C52单片机简易时钟程序电路设计(附源代码和电路图)...
51(STC89C52)单片机简易时钟程序电路设计(附源代码和电路图) 上一篇做了一个温湿度采集电路,觉得这东西玩起来还是挺有意思,然后就想做一个时钟,于是就有了下文 1.成品图 51hei图片_20 ...
- ds12c887程序C语言,51单片机驱动DS12C887的时钟芯片C语言程序
本程序旨在读出DS12C887的时间,显示部分只做了分和秒的部分,已通过测试,详细注释很好用的. #include < absacc.h > #include < reg51.h & ...
- 74hc165 c语言程序,单片机读取74HC165数据异常原因分析
描述 0.引言 74HC165是一款高速CMOS移位寄存器,电压为2.0-6.0V,驱动电流为+/-5.2mA.74HC165引脚兼容TTL(LSTTL)系列(定义于JEDEC标准№.7A). 74H ...
- 8路巡回检测c语言程序,单片机驱动ds18b20四路温度巡回检测程序
#include "reg52.h"//头文件 #include "intrins.h" #define uchar unsigned char//宏定义 #d ...
- 51单片机led点阵C语言,51单片机驱动LED点阵扫描显示C语言程序
#ifndef__Matrix_H__ #define__Matrix_H__ #ifdef__cplusplus extern"C" { #endif #define SET ...
- 单片机控制lcd序c语言,51单片机驱动1602液晶的C程序
# include /***************************************** 电路连接 P1------DB0-DB7 P2.0------RS P2.1------RW ...
- c语言编程ad7799,51单片机驱动AD7799程序(keil c)
#include"VRS51L3074_keil.h" #include#define uchar unsigned char #define uint unsigned ...
- dac0832三角波c语言程序,单片机驱动dac0832输出方波三角波正玄波程序
电路图 仿真文件及完整的源代码下载地址:http://www.51hei.com/bbs/dpj-20395-1.html 下面是汇编程序源码,可以用按键来控制 org 0000h ajmp main ...
最新文章
- R语言构建xgboost模型:使用xgboost模型训练tweedie回归模型,特征工程(dataframe转化到data.table、独热编码、缺失值删除、DMatrix结构生成)
- Xamarin.Forms特殊的视图BoxView
- Java领域的对象如何传输-了解序列化的意义
- Java虚拟机(四)——类加载机制
- C# 在采集数据时的验证与登录处理
- CCC认证有没有2019年新的具体的收费标准
- JAVA随机抽取一名幸运观众(手动输入观众)小实例
- 2022年陕西省职业院校技能大赛中职组网络安全赛项规程
- 菩提千年,你是我红尘中最美的缘
- Pale Moon 苍月浏览器 24.0.1 发布
- 【高德地图API】Web地图开发系列(一)
- android 创建多个闹钟,Android设置多个闹钟
- Android ExceptionThrowable 常见异常和解决方法 奔溃日志上报 monkey异常修改
- Android实现自适应正方形GridView(陌陌引导页面效果)
- 毫米波雷达相关知识调研
- 查看linux snmp状态,Linux开启snmp及查询
- 米卢:梅西是世界最佳 弗格森没有犯错误
- 测试点击屏幕次数的软件_变视读为聆听,解决老同志阅读困难的一款实用的文字转语音软件...
- ChatGPT玩法大全火了,一键复制就能get同款效果:脱口秀张口就来,还能扮演哈利波特...
- 导图解文 从梦想到财富(13)你的运气,为什么一直不好?
热门文章
- (附源码)计算机毕业设计ssm 航空订票系统
- c语言必背数据结构_c语言必背代码有哪些?
- 这才是真相,“轻点,疼”被禁却另有玄机
- 计算机网络科研项目申请书,科研项目申请书范文例.doc
- linux将数字转为科学计数法,Linux下科学计数法(e)转化为数字的方法
- 如何用一般方式获取C币可用分
- BSC(币安智能链)主网链部署
- 【经典算法实现 15】阿克曼函数(非递归实现)
- 【翻译】PDF格式详解
- 群晖服务器白群晖有哪些型号,白群晖和黑群晖,有什么区别?