历史上的今天
返回首页

历史上的今天

今天是:2025年04月09日(星期三)

正在发生

2019年04月09日 | STM32实战 2.矩阵键盘通过串口3输出

2019-04-09 来源:eefocus

#include "KEY44.h"

#include "sys.h"

#include "delay.h"

#include "usart.h"

 

u8 key_num = 0;

 

int main(void)

{

uart_init(115200);

delay_init();

KEY44_Init();


while(1)

{

key_num = key44_Scan();

if(key_num != 0)

{

printf("KEY is %drn",key_num);

}

}


}


#include "KEY44.h"

#include "sys.h"

#include "delay.h"

 

 

void  KEY44_Init(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 |GPIO_Pin_1 |GPIO_Pin_2 |GPIO_Pin_3;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

GPIO_Init(GPIOA, &GPIO_InitStructure);


GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 |GPIO_Pin_5 |GPIO_Pin_6 |GPIO_Pin_7;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;

GPIO_Init(GPIOA, &GPIO_InitStructure);

}

 

unsigned char key44_Scan(void)

{

H_1 = 0;

H_2 = 1;

H_3 = 1;

H_4 = 1;

 

if( L_1 == 0)

{

delay_ms(10);

if(L_1 == 0)

{

while(!L_1);

return 1;

}

}

if(L_2 == 0)

{

delay_ms(10);

if(L_2 == 0)

{

while(!L_2);

return 2;

}

}

if(L_3 == 0)

{

delay_ms(10);

if(L_3 == 0)

{

while(!L_3);

return 3;

}

}

if(L_4 == 0)

{

delay_ms(10);

if(L_4 == 0)

{

while(!L_4);

return 4;

}

}

 

H_1 = 1;

H_2 = 0;

H_3 = 1;

H_4 = 1;

 

if(L_1 == 0)

{

delay_ms(10);

if(L_1 == 0)

{

while(!L_1);

return 5;

}

}

if(L_2 == 0)

{

delay_ms(10);

if(L_2 == 0)

{

while(!L_2);

return 6;

}

}

if(L_3 == 0)

{

delay_ms(10);

if(L_3 == 0)

{

while(!L_3);

return 7;

}

}

if(L_4 == 0)

{

delay_ms(10);

if(L_4 == 0)

{

while(!L_4);

return 8;

}

}

 

H_1 = 1;

H_2 = 1;

H_3 = 0;

H_4 = 1;

 

if(L_1 == 0)

{

delay_ms(10);

if(L_1 == 0)

{

while(!L_1);

return 9;

}

}

if(L_2 == 0)

{

delay_ms(10);

if(L_2 == 0)

{

while(!L_2);

return 10;

}

}

if(L_3 == 0)

{

delay_ms(10);

if(L_3 == 0)

{

while(!L_3);

return 11;

}

}

if(L_4 == 0)

{

delay_ms(10);

if(L_4 == 0)

{

while(!L_4);

return 12;

}

}

 

H_1 = 1;

H_2 = 1;

H_3 = 1;

H_4 = 0;

 

if(L_1 == 0)

{

delay_ms(10);

if(L_1 == 0)

{

while(!L_1);

return 13;

}

}

if(L_2 == 0)

{

delay_ms(10);

if(L_2 == 0)

{

while(!L_2);

return 14;

}

}

if(L_3 == 0)

{

delay_ms(10);

if(L_3 == 0)

{

while(!L_3);

return 15;

}

}

if(L_4 == 0)

{

delay_ms(10);

if(L_4 == 0)

{

while(!L_4);

return 16;

}

}

return 0;

}


#ifndef __KEY44_H

#define __KEY44_H  

 

//PA0~PA3为推挽式输出

//PA4~PA7为上拉式输入

 

#define H_1 PAout(0)

#define H_2 PAout(1)

#define H_3 PAout(2)

#define H_4 PAout(3)

 

#define L_1 PAin(4)

#define L_2 PAin(5)

#define L_3 PAin(6)

#define L_4 PAin(7)

 

void  KEY44_Init(void);

unsigned char key44_Scan(void);     

#endif


推荐阅读

史海拾趣

Aplus Integrated Circuits公司的发展小趣事

随着公司产品的不断优化和升级,Aplus Integrated Circuits开始寻求与国际市场的接轨。公司积极参与国际电子行业的交流与合作,与多家国际知名企业建立了稳定的合作关系。通过引进国外先进的技术和管理经验,公司的产品逐渐走向国际化,市场竞争力得到了进一步提升。

APEM公司的发展小趣事

APEM公司的创始人基恩·罗杰罗,在20世纪50年代初,看到了美国产品主导法国市场的商机。为了解决产品维修和备件订购的难题,他决定自己生产开关。罗杰罗的开关产品在尺寸和操作方式上与美国产品相似,但价格更亲民,交货时间更短。这一创新举措使APEM迅速在市场上站稳脚跟,为后续的发展奠定了坚实基础。

Caddell-Burns Manufacturing公司的发展小趣事

随着环保意识的日益增强,Caddell-Burns Manufacturing公司也积极响应国家号召,致力于实现绿色发展。公司引进了先进的环保设备和技术,对生产过程中的废弃物进行无害化处理。同时,公司还研发了一系列环保型电子产品,满足了客户对绿色产品的需求。此外,公司还加强了对员工的环保教育,提高他们的环保意识,共同为保护环境贡献力量。

通过以上五个故事,我们可以看到Caddell-Burns Manufacturing公司在电子行业里发展起来的艰辛与辉煌。他们凭借过硬的技术实力、敏锐的市场洞察力和卓越的管理能力,在激烈的市场竞争中脱颖而出,成为一家备受瞩目的电子制造企业。

中科银河芯(GXCAS)公司的发展小趣事
输入信号的电压范围决定了三极管何时截止、何时饱和导通。
ARCOLECTRICSWITCHES公司的发展小趣事

面对全球化的趋势,ARCOLECTRIC SWITCHES公司制定了国际化发展战略。公司积极开拓海外市场,设立海外分支机构,拓展国际业务。在国际化进程中,公司注重跨文化管理,尊重不同国家和地区的文化差异,努力融入当地市场。通过国际化战略的实施,ARCOLECTRIC SWITCHES公司的业务范围不断扩大,国际影响力逐渐提升。

这些故事虽然基于虚构,但反映了一个电子企业在发展过程中可能经历的关键阶段和挑战。实际中,ARCOLECTRIC SWITCHES公司的发展历程可能因市场条件、技术变革、竞争环境等多种因素而有所不同。如果您需要了解该公司具体的发展故事,建议查阅相关官方资料或行业报告。

Chiplus Semiconductor Corp公司的发展小趣事

在21世纪初,全球半导体行业蓬勃发展,台湾地区的IC设计领域也呈现出勃勃生机。在这样的背景下,晶发半导体的创始人蒲文豪怀揣着对低功率SRAM领域的深厚热情,于2002年创立了Chiplus Semiconductor Corp.(晶发半导体)。蒲文豪曾在一家专攻低功率SRAM的公司工作,深知这一领域的潜力和市场需求。他立志要做低功率SRAM领域的领军者,为全球客户提供卓越的产品和服务。

问答坊 | AI 解惑

红外防水摄像机图像闪烁不再是问题

关键字:红外防水摄像机       现在的普通红外防水摄像机,一般采用光敏元件来探测所处环境的照明强度,根据设计参数中确定的阈值,产生控制信号,实现红外灯的开启。阈值的高低,由使用的环境,用户的喜好,设计人员考虑各 ...…

查看全部问答>

LabView实现远程数据采集与传输

LabView实现远程数据采集与传输…

查看全部问答>

电机正反转程序检测

process(clk_a,clk_b) begin   if (clk_a\'event and clk_a=\'1\') then    if clk_b=\'1\' then     k…

查看全部问答>

GPRS 无线远程升级 源码出售

开发平台 :wince 开发环境 :evc++ 4.0,sp4 socket 服务器端 .net 2.0 (c#) 基于gprs 无线网络的远程文件下发和程序升级系统 有意联系 :email : acosoft@163.com…

查看全部问答>

WIinCE5.0下如何实现启动时自动运行应用程序啊?

我按照WinCE4.2下通常的方法: 1.将MyApp.exe复制到E:\\PROJECTS\\MyWinCE\\RelDir\\CEPC_X86Release目录下;            2.修改MyWinCE工程的project.bib文件,在FILES   Section添加&nbs ...…

查看全部问答>

Verilog Testbench的结构

  module test ; reg clk , rst ; reg [7:0]  din ; reg en ; wire [7:0] dout ; initial begin   clk=0;   rst=0;   en=0;   din=8\'b0;   #10;    ...…

查看全部问答>

香版主,速进,IAR4.42有事请教

Stand alone                  EWARM-EV    -      1上面的注册表是什么意思?…

查看全部问答>

lm3s9b96 FTDI

请问一下 FTDI JTAG JLINK 这三者是什么联系啊   我用IAR的时候都是选FTDI 直接连USB就可以 这个FTDI功能是什么啊?   先谢谢好心人的解答…

查看全部问答>

有谁买过淘宝上的NRF24L01+PA+LNA模块并且测试能够达到1000米的啊?

淘宝上好多NRF24L01+PA+LNA的模块号称在250Kbps的速率下,空旷地带能达到1000米的通信距离,我买了两块,卖家给的测试程序都是基于51的,但我只有2440的开发板,于是就根据他的51源程序移植到2440平台上,实际测试的时候到250米左右就丢包非常严重 ...…

查看全部问答>