历史上的今天
返回首页

历史上的今天

今天是:2025年08月10日(星期日)

正在发生

2019年08月10日 | STM32三线检测八个按键(74HC165)

2019-08-10 来源:eefocus

STM32三线检测八个按键是典型的IO扩展应用(并转串),思路和学习51单片机时一致,下面直接上图和代码!

在这里插入图片描述
按键为检测低电平
在这里插入图片描述

简述:


1.74HC165使用1、2、9脚,15脚可直接接地

2.按键低电平为按下

PA1-> SL 并行数据加载

PA2-> CLK 时钟

PA3-> DAT 串行数据输出


代码:


#include "74HC165.h"

#include "delay.h"


void Init_74HC165(void)

{

GPIO_InitTypeDef  GPIO_InitStructure;


RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);  


GPIO_InitStructure.GPIO_Pin   = SL_PIN|CLK_PIN;  

GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_Out_PP;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(PORT_74HC165, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin   = DAT_PIN;  

GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_IPU;

GPIO_Init(PORT_74HC165, &GPIO_InitStructure);


}


u8 ReadByte_165(void)

{

u8 i,dat=0;

CLK=1;

Latch_165();

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

{

dat=dat<<1;

if(DAT==1)

dat=dat+1;

CLK=0;

delay_us(1);

CLK=1;

}

CLK=0;

return ~dat;

}


void Latch_165(void)

{

SL=0;

delay_us(1);

SL=1;

}


u8 Scan_Key(void)  //该函数仅支持1次按下1个按键

{

u8 key;

key=ReadByte_165();

if(key==0)

;

else

{

switch(key)

{

case 1:

key=1;

break;

case 2:

key=2;

break;

case 4:

key=3;

break;

case 8:

key=4;

break;

case 16:

key=5;

break;

case 32:

key=6;

break;

case 64:

key=7;

break;

case 128:

key=8;

break;

default:

key=0;

break;

}

}

return key;

}


头文件:


#ifndef __74HC165_H

#define __74HC165_H  

#include "sys.h"


#define PORT_74HC165 GPIOA

#define SL PAout(1) //SL

#define SL_PIN GPIO_Pin_1


#define CLK PAout(2) //CLK

#define CLK_PIN GPIO_Pin_2


#define DAT_PIN GPIO_Pin_3

#define DAT GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_3)//DAT


void Init_74HC165(void);

u8 ReadByte_165(void)

void Latch_165(void);

u8 Scan_Key(void);

#endif


推荐阅读

史海拾趣

ESTEK公司的发展小趣事

ESTEK公司深知产品质量对于企业发展的重要性。因此,公司从源头上把控原材料的质量,并在生产过程中严格执行质量管理体系标准。通过一系列严格的质量管控措施,ESTEK公司的产品质量得到了有效保障。在市场上,ESTEK公司的产品以高质量、高可靠性著称,赢得了广大客户的信赖和好评。

Dynawave Incorporated公司的发展小趣事

在快速发展的过程中,Dynawave意识到企业文化的重要性。他们注重培养员工的团队合作精神和创新能力,鼓励员工积极参与公司的各项活动。同时,公司还建立了完善的激励机制和福利制度,为员工提供了良好的工作环境和发展空间。这些举措增强了员工的归属感和忠诚度,为公司的长期发展奠定了坚实的基础。

FCI / Amphenol公司的发展小趣事

FCI公司起源于1988年,当时由Framatome组建,其初衷是作为核能领域外的一个多样化经营项目。然而,随着市场的变化和公司的战略调整,FCI逐渐将重心转向连接器制造。经过20多次的精心收购和策略性扩张,FCI在短短20年内便成长为全球最大的连接器制造公司之一。这一转变不仅展现了FCI对市场敏锐的洞察力,也体现了其卓越的管理能力和执行力。

ECLIPSE公司的发展小趣事

随着Eclipse项目的不断发展,越来越多的知名公司加入到这一开源社区中,如Oracle、Red Hat等。这些公司不仅为Eclipse贡献了代码,还提供了资金支持。Eclipse的功能日益完善,逐渐成为了Java开发领域的佼佼者。同时,Eclipse也支持其他编程语言,如C/C++、Python等,进一步扩大了其用户群体。

安路科技(Anlogic)公司的发展小趣事

安路科技(Anlogic)的创立可以追溯到XXXX年,由一群具有深厚技术背景的工程师共同创立。起初,公司规模虽小,但怀揣着在国产FPGA(现场可编程门阵列)领域实现技术突破的梦想。早期,安路科技面临着资金短缺、市场竞争激烈等挑战,但团队凭借着对技术的执着和不懈的努力,逐步研发出了具有竞争力的FPGA产品,并在市场上获得了一定的认可。

Elcos AG公司的发展小趣事

在电子科技日新月异的21世纪初,Elcos AG由一群志同道合的电子工程师创立。他们看到了电子元器件市场中的机遇,决定专注于研发和生产高性能的电子元器件。初始阶段,公司面临着资金紧张、技术挑战和市场认知度低的困境。然而,凭借对技术的执着和对市场的敏锐洞察,Elcos AG逐步攻克了技术难题,并通过与几家小型电子产品制造商的合作,打开了市场的大门。

问答坊 | AI 解惑

我对如何编写高质量的程序的看法

我对嵌入式软件开发的时间也不是很长,仅仅只有5年,算不上高手,也不是老手只能算是5岁的老菜鸟 ,在前面的3年里没有高人指点,靠着自己摸索也写了不少的程序吧,那时侯我没有想过要写出容易理解 和维护以及移植的问题,仅仅想着如何把这个功能 ...…

查看全部问答>

USB转串口

USB转串口的电路图…

查看全部问答>

【藏书阁】半导体集成电路(朱正涌编著)

目录: 一,集成电路的基本制造工艺 二,集成电路中的晶体管及其寄生效应 三,集成电路中的无源元件 四,晶体管-晶体管逻辑电路 五,发射极耦合逻辑电路 六,集成注入逻辑电路 七,MOS反相器 八,MOS基本逻辑单元 九,MOS逻辑功能部件 ...…

查看全部问答>

伤透脑筋--2812pwm加入死区问题求解

这个论坛真的相当不错~~又遇到棘手问题,再次求教各位大哥 我做的是用2812去实现直接转矩控制去控制电机,通过查表方式得到矢量 现在我做了个测试,按我的要求强制输出上桥臂依次是 011,接着输出001,然后101,然后是111,然后是110,然后是0 ...…

查看全部问答>

哪个有电力拖动系统的优秀视频教程不??

电机看了西交大阎治安的非常牛 电力拖动西交大的水,,,其他大学的也不杂的,,哪个有牛点的视频教程不?? 看了省很多工夫的那种视频教程…

查看全部问答>

使用SetDevicePower开启wifi,几秒钟之后自动关闭

        string path = \"{98C5250D-C29A-4985-AE5F-AFE5367E5006}\\\\\"; string deviceName=\"SDIO86881\";   DevicePowerNotify(path2 + deviceName, DevicePowerState.FullOn, POWER_NAME);   ...…

查看全部问答>

wince5.0如何显示电源电量百分比

大家好,如题啦! 我把自己搜到点东西说说啊。 1:据说wince5.0自带显示电源电量的,但是我弄不出来啊,有人说是在cplmain.cpl这个文件中修改什么的,他没说清楚,我也没搞懂!   懂的麻烦说具体些哈 2:有些人说AP是自己做的,AP是 ...…

查看全部问答>

谁的MMA7455驱动成功了啊?

怎么这个活动办了这么久,开始见有人驱动MMA7260成功了,也没有见驱动MMA7455驱动成功啊。 另:希望MMA7260驱动成功的同志分享一下代码,多谢了。 …

查看全部问答>

【资料搜捕】神马硬件解读——电容之宝典入库篇

在这里欢迎大家晒出自家的秘集(可以是前人的,更欢迎自创的独门武功),让群雄共舞。 活动主题: 【电容之宝典入库篇】——网友们可以推荐并上传关于电容的优秀文献:制造工艺 (材料,结构,原理,测试原理)、选择应用  (容量,耐 ...…

查看全部问答>

有人用过CCS5.2吗

有人用过CCS5.2来开发LaunchPad吗?今天我试了一下,发现点击debug时,报这样的错误: could not find MSP-FET430UIF on specified com port.但是我不知道如何设置端口呢?论坛中的教程很多好像是用4.x版本的吧,求指点!…

查看全部问答>