历史上的今天
返回首页

历史上的今天

今天是:2025年05月14日(星期三)

正在发生

2019年05月14日 | arm7 力天电子lpc2148 GPIO之按键输入试验

2019-05-14 来源:eefocus

此实验中摁下某个按键后,把相关的信号并行传递到74HC165上,然后再通过串行方式传到处理器中,处理器在通过控制P0.22口(MAT0.0)来控制蜂鸣器


部分电路图如下所示:

 注意:9号引脚接的是2148的MISO0(P0.5)

                          

#include


//宏定义

#define         SCLK  0x01<<24

#define         SCK0  0x01<<4 

#define         MISO  0x01<<5

#define         MOSI  0x01<<6

#define         RCK   0x01<<7


void HC595_Init(void);

void WriteByte(unsigned char data);

void Write595(void);

void HC165_CS(char flag);

unsigned char Read165(void);

void Delayn(unsigned long n);

//595扩展接口的数据显示缓存

unsigned int HC595_DATA = 0xFFFFFFFF;

//初始化595接口

void HC595_Init(void)

{

  IO0DIR |= MOSI|RCK|SCK0;

  IO1DIR |= SCLK;

  IO1CLR |= SCLK;

  IO0DIR |= RCK;

  HC595_DATA = 0xFFFFFFFF;Write595();

}

//写字节

void WriteByte(unsigned char data)

{

  unsigned char i;

  //IO0CLR = RCK;

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

  {

    if(data&0x01)      IO0SET=MOSI;

    else      IO0CLR=MOSI;

    IO1SET=SCLK;

    data>>=1;

    IO1CLR=SCLK;

  }

  //IO0SET = RCK;

}

//刷新595的数据

void Write595(void)

{

  IO0CLR = RCK;

  WriteByte(HC595_DATA&0xff);

  WriteByte((HC595_DATA&0xff00)>>8);

  WriteByte((HC595_DATA&0xff0000)>>16);

  WriteByte((HC595_DATA&0xff000000)>>24);

  IO0SET = RCK;

}

//165片选

void HC165_CS(char flag)

{

  if(flag)   ////CLK INH写入高电平,

    HC595_DATA &= ~(1<<1);

  else

    HC595_DATA |= (1<<1);

  Write595();

}

//读165的数据

unsigned char Read165(void)

{

  unsigned char RD=0,i;  

  HC165_CS(1);  //

  IO1CLR_bit.P1_25 = 1; //写入1使对应引脚输出低电平,即使S/L(管脚1)得到低电平,在arm板接收数据前,必须将该引脚拉低,目的是为了将并行数据A--H上得数据装载到内部寄存器中,这里体现的时LOAD功能

  Delayn(10);

  IO1SET_bit.P1_25 = 1; //写入1使对应引脚输出高电平,接下来在接收数据的过程中必须将该引脚拉高,目的是为了使寄存器中的数据可以移动,从而从QH或QN'中移入单片机。这里体现的是SHIFT功能。

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

  {  

    RD <<= 1;  //左移一位 

    if(IO0PIN&MISO)   //MISO0是74HC165输出的串行数据,看74HC165是否接收到数据,如果MISO0不为0则说明接收到了数据,

      RD |= 1;  //先接受高位

    IO0SET=SCK0; //时钟为高,上升沿下一个数据移出(只有在CP为高时,才允许CE由低转高)

    Delayn(10);

    IO0CLR=SCK0; //时钟低电平 (我们只需将arm处理器的某一个端口拉低或抬高即可,这样数据就一步一步的被接收了。请务必记得上升沿有效。)

  } 

  HC165_CS(0);

  return RD;

}

main()

{

  PINSEL0=0x000000;

  PINSEL1=0x000000;    //所有引脚连接GPIO

  

  unsigned char HC165_DATA;

  IO1DIR_bit.P1_25 = 1;

  IO1SET_bit.P1_25 = 1;

  PINSEL0_bit.P0_5 = 0;

  //IO0DIR_bit.P0_5 = 0;    //HC165输入管脚


  IO0DIR=1<<22;     //蜂鸣器控制口设置为输出,其余输入

  HC595_Init();

   

  while(1)

  {

     HC165_DATA = Read165();

     if((HC165_DATA&(1<<4))==0) IO0SET=1<<22; //当KEY2按下的时候,蜂鸣器响起(此处解释见下面)

     else  IO0CLR=1<<22; //松开KEY2,蜂鸣器停止蜂鸣

  }

}

//延时周期数

void Delayn(unsigned long n)

{

  while(n--);

}


最后说明:


对主函数中if((HC165_DATA&(1<<4))==0) IO0SET=1<<22的解释,1<<4位使得第4位变为1,有74HC165数据手册中功能方图:

  可知第4位对应的外围引脚是3,再由上面的第一个图74HC165的连接图可发现它与KEY INT2相连,所以对应的是KEY2键


关于程序中74HC165的数据传送的方式自己还有待研究,之所以用到了74HC595,是因为力天电子的这款板子在进行设计是把把74HC165 的片选(165 CS)连接到了595上,所以必须得对595进行相应操作

推荐阅读

史海拾趣

DBS Microwave Inc公司的发展小趣事

随着公司产品的不断成熟和技术的不断进步,DBS Microwave开始积极拓展国际市场。公司参加了多个国际电子展会,与全球各地的客户建立了联系。同时,公司还积极寻求与国际知名企业的合作机会,通过技术交流和合作研发等方式,不断提升自身的技术水平和市场竞争力。这些努力使得DBS Microwave在国际市场上取得了良好的业绩。

Greenliant公司的发展小趣事

随着电动汽车市场的爆发式增长,GPS在2025年决定涉足电动汽车充电基础设施领域。公司推出了一系列快速、智能的电动汽车充电桩,支持多种充电标准和支付方式,满足了不同用户的需求。同时,GPS还开发了充电站管理软件,实现了充电桩的远程监控和运维管理,提高了充电服务的可靠性和便捷性。GPS的电动汽车充电基础设施解决方案在多个城市得到广泛应用,为电动汽车的普及提供了有力支持。

ADI(亚德诺半导体)公司的发展小趣事

在光伏产业快速发展的背景下,GPS于2020年进军光伏逆变器市场。公司凭借其深厚的技术积累和创新能力,开发出了一系列高效、可靠的光伏逆变器产品。这些产品不仅转换效率高,而且具备智能监控和远程控制功能,大大提升了光伏电站的运行效率和安全性。GPS的光伏逆变器产品迅速获得市场认可,成为众多光伏项目的首选设备。

Blue Creation公司的发展小趣事

作为一家有社会责任感的企业,Blue Creation公司始终关注环保和可持续发展。公司积极采用环保材料和节能技术,努力降低生产过程中的环境影响。同时,公司还积极参与公益事业,捐资助学、扶贫济困,回馈社会。这些举措不仅提升了Blue Creation的企业形象,也为其赢得了社会各界的广泛赞誉。

以上五个故事分别从不同角度展现了Blue Creation公司在电子行业发展的历程和成就。虽然这些故事是虚构的,但它们所蕴含的企业发展理念和经验对于现实中的企业来说仍具有一定的借鉴意义。

Crystalfontz America Inc公司的发展小趣事

为了保证产品质量和客户满意度,Crystalfontz America Inc公司建立了完善的质量管理体系。公司从原材料采购、生产制造到产品出厂等各个环节都严格把控质量,确保产品符合相关标准和客户要求。同时,公司还不断优化生产流程和管理制度,提高生产效率和产品质量稳定性。这些措施为公司赢得了良好的市场声誉和客户口碑。

Gruner AG公司的发展小趣事
在需要高安全性的控制系统中,如工业自动化、医疗设备等领域,光耦合器可以实现电路之间的电气隔离,提高系统的安全性和可靠性。

问答坊 | AI 解惑

有块 JCT028WA2 屏 谁能用单片机驱动啊?

从P4上拆下来的 彩屏 JCT028WA2 不知道怎么用单片机驱动 要不扔着也是浪费啊…

查看全部问答>

年轻人是怎样倒在职场上的

没有钱可以挣,没有权可以争取,没有知识可以学习,没有技能可以讨教,一切没有的东西都可以用我们的双手创造出来。人最缺少的永远都只是态度和精神而已。很多年轻人都总是要在职业上经历大量的失败和挫折。那么他们究竟缺乏的是什么呢?   ...…

查看全部问答>

【T叔藏书阁】微型计算机电源原理与维修

目录 第一章 概述 第二章 微机及其外设电源电路 第三章 电源维修方面 第四章 不间断电源 第五章 微机直流稳压电源 第六章 显示器电源 第七章 打印机电源 [ 本帖最后由 wzt 于 2010-3-10 18:10 编辑 ]…

查看全部问答>

教你识别电阻值的技巧

每种颜色代表不同的数字,如下: 棕1 红2 橙3 黄4 绿5 蓝6 紫7 灰8 白9 黑0 ,金、银表示误差 色环电阻是应用于各种电子设备的最多的电阻类型,无论怎样安装,维修者都能方便的读出其阻值,便于检测和更换。但在实践中发现,有些色环电阻的排列 ...…

查看全部问答>

基于FT245BM的简易USB接口开发

1  概述   当前,USB外设的开发是一个热点。由于USB总线具有传输速度快、占用资源少及真正的即插即用等优点,越来越受到业界的青睐。可是,USB的开发要求设计人员对USB的标准、Firmware(固件)编程及驱动程序的编写等有较深入的理解,因 ...…

查看全部问答>

关于STM32,串口1和PWM间的问题

现在我用TIM4产生PWM,然后TIM2定时中断往TIM4扔音频数据,现在播放正常,但是发现在配置打开TIM4,TIM2后,USART1好像就失效了,就是串口1不能首发数据了,请问是TIM4,TIM2和串口一有冲突么?…

查看全部问答>

TC35I与MC39I差别

TC35I与MC39I差别,我就是想知道这里面有什么差别,知道的请支持一下谢谢。呵呵…

查看全部问答>

关于CEDDK的READ_PORT_UCHAR(<端口号地址>),其中的端口号地址是在哪里定义的呢?

小弟最近在写一个GPIO驱动,在GPI_Read()流接口函数中想用READ_PORT_UCHAR()从指定的GPIO的端口接受数据。我用的是PXA270,其中的GPIO的端口号地址是在哪里定义的呢?我看了PXA270的datasheet好像没有发现。…

查看全部问答>

波形产生和变换

第九章 波形产生和变换 file:///E> §9.2 电压比较器 电压比较器功能    电压比较器中运放的工作特点   1. 工作在开环或正反馈状态  2. 大多数情况下工作在非线性区域, 输 ...…

查看全部问答>

手机饰品的闪光原理

本帖最后由 jameswangsynnex 于 2015-3-3 19:54 编辑 一、CDMA手机饰品的闪光原理   为什么中国移动GSM手机饰品挂在中国联通CDMA手机上不闪光?这要从CDMA和GSM手机的工作原理谈起,GSM手机是采取将语音打包压缩后发射出去的,也就是说间隙脉冲工 ...…

查看全部问答>