s3c2440按键扫描

发布者:Meiren520最新更新时间:2022-10-08 来源: csdn关键字:s3c2440  按键扫描  初始化 手机看文章 扫描二维码
随时随地手机看文章

/***********************************************

Function  name  :   key_scan_init

Description     :   按键扫描初始化

Input parameter :   none

Return          :   none

Others     :                                          

*************************************************/

void key_scan_init()

{

unsigned temp;

//配置GPG0,3,5,6,7,11为输出模式

rGPGCON &= ~((0x3<<22)|(0x3<<14)|(0x3<<12)|(0x3<<10)|(0x3<<6)|(0x3<<0));

temp = (0x1<<22)|(0x1<<14)|(0x1<<12)|(0x1<<10)|(0x1<<6)|(0x1<<0);

rGPGCON |= temp;

//配置GPG0,3,5,6,7,11不使能上拉电阻

temp = (0x1<<11)|(0x1<<7)|(0x1<<6)|(0x1<<5)|(0x1<<3)|(0x1<<0);

rGPGUP |= temp;

}

 

/***********************************************

Function  name  :   key_scan

Description     :   按键扫描

Input parameter :   none

Return          :   key:按键值

Others     :                                          

*************************************************/

unsigned int key_scan(void)

{

    volatile unsigned temp;

    unsigned int key = NOKEY;

    temp = ~rGPGDAT;

    temp &= (1<<11)|(1<<7)|(1<<6)|(1<<5)|(1<<3)|1;

    switch(temp)

    {

    case 1:

    {

    key = KEY1;

    break;


    }

    case 1<<3:

    {

    key = KEY2;

    break;

    }

    case 1<<5:

    {

    key = KEY3;

    break;

    }

    case 1<<6:

    {

    key = KEY4;

    break;

    }

    case 1<<7:

    {

    key = KEY5;

    break;

    }

    case 1<<11:

    {

    key = KEY6;

    break;

    }

  default: 

  {

  key = NOKEY;

  break;

  }

    }

    

return key;

}


/***********************************************

Function  name  :   get_keyvalue

Description     :   获取键值

Input parameter :   none

Return          :   key:按键值

Others     :                                          

*************************************************/

unsigned int get_keyvalue(void)

{

      int key = NOKEY;

      if((key=key_scan()) != NOKEY)  //电平有拉低

      {

         Delay_MS(10);  //去抖动处理

       if((key=key_scan()) != NOKEY)  //确实是按键按下

       {

           while(key_scan()!=NOKEY);  //去重复的处理

           return key;

       }            

      }

      return NOKEY; 

}


关键字:s3c2440  按键扫描  初始化 引用地址:s3c2440按键扫描

上一篇:s3c2440串口编程
下一篇:s3c2440 LCD(sony x35)

推荐阅读最新更新时间:2024-11-13 10:44

GNU ARM汇编--(十一)小结一下
对s3c2440的一部分做了学习,更深的了解了汇编以及arm体系,还有中断,调试底层汇编过程的最大感触就是仔细阅读datasheet,因为那是英文文档. 前面写的都是嵌入式底层比较基础的东西,后面要做的内容: 1.先裸机搞定iic,iic包括用控制器实现的和用GPIO模拟的,这样可以加深时序的理解. 2.spi也想看一下,虽然2440有spi,但是没有外设,这个比较麻烦. 3.搞清楚嵌入式系统中的存储系统,主要是内存(MMU)和flash 4.在前面的基础上可以整体上把握bootloader了 5.因为对linux的文件系统和设备模型有一定的了解,在3的基础上可以开始
[单片机]
stm32中ADC初始化程序
void Adc_Init(void) { uint32_t tmpreg1 = 0; ADC_InitTypeDef ADC_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC |RCC_APB2Periph_ADC1 , ENABLE ); //使能ADC1通道时钟 RCC_ADCCLKConfig(RCC_PCLK2_Div6); //设置ADC分频因子6 72M/6=12,ADC最大时钟不能超过14M /* PC0 作为模拟通道输入引脚 - ADC_IN10 */
[单片机]
S3c2440ARM异常与中断体系详解1---概念引入与处理流程
取个场景解释中断。 假设有个大房间里面有小房间,婴儿正在睡觉,他的妈妈在外面看书。 问:这个母亲怎么才能知道这个小孩醒? 过一会打开一次房门,看婴儿是否睡醒,让后接着看书 一直等到婴儿发出声音以后再过去查看,期间都在读书 第一种 叫做查询方式: *优点:简单 *缺点: 累 写程序如何: while(1) { 1 read book(读书) 2 open door(开门) if(睡) return(read book) else 照顾小孩 } 第二种叫中断方式: 优点:不累 缺点:复杂 写程序: while(1) { read book 中断服务程序()//如何
[单片机]
S3c2440ARM异常与中断体系详解1---概念引入与处理流程
s3c2440裸机触摸屏
1.0、触摸屏与LCD 触摸屏与lcd是两个独立的屏,但是他们之间有对应关系,简单的说就是一个触摸屏的坐标点对应lcd的一个像素点,这样当我们按下触摸屏后,系统通过计算得到该地方的坐标,然后通过对应关系找到相应位置的lcd显示的内容。因为触摸屏和lcd是独立的,总是因为一些物理的原因会有一些位置上的改变,所以这种对应关系不是不变的,我们可以通过开机的时候的校验来确定这种关系,比如 LCD上每个点PD的坐标为 ,触摸屏上每个点PT的坐标为 。要实现触摸屏上的坐标转换为LCD上的坐标,需要下列公式进行转换: XD=A×XT+B×YT+C YD=D×XT+E×YT+F 这样我们只有确定了ABCDEF六个参数我们就可以
[单片机]
S3C2440内存控制器详解
S3C2440的内存空间划分为不同的块,当CPU向内存控制器发出地址,内存控制器根据地址范围,发出对应片选信号到片选引脚,实现对不同设备的控制。 BANK0 BUS WIDTH The data bus of BANK0 (nGCS0) should be configured with a width as one of 16-bit and 32-bit ones. Because the BANK0 works as the booting ROM bank (map to 0x0000_0000), the bus width of BANK0 should be determined before the fir
[单片机]
<font color='red'>S3C2440</font>内存控制器详解
【STM32电机方波】记录3——TIM1时基初始化配置
定时器分类 : STM32F1x 系列中,除了互联型的产品,共有 8 个定时器,分为基本定时器,通用定时器和高级定时器。 基本定时器 TIM6 和 TIM7 是一个 16 位的只能向上计数的定时器,只能定时,没有外部 IO。 通用定时器 TIM2/3/4/5 是一个 16 位的可以向上/下计数的定时器,可以定时,可以输出比较,可以输入捕捉,每个定时器有四个外部 IO。 高级定时器 TIM1/8是一个 16 位的可以向上/下计数的定时器,可以定时,可以输出比较,可以输入捕捉,还可以有三相电机互补输出信号,每个定时器有 8 个外部 IO。 高级定时器TIM1的库函数: 定时器TIM1时基结构体缺省值: { TI
[单片机]
【STM32电机方波】记录3——TIM1时基<font color='red'>初始化</font>配置
07-S3C2440驱动学习(一)嵌入式linux字符设备驱动-查询+中断+引入poll机制的按键驱动程序
一、查询方式的按键驱动程序 查询方式的按键驱动程序,与LED驱动程序类似,我们来复习一下上节的写好的字符设备驱动程序框架,改写出查询方式的按键驱动程序。 (1)按键驱动程序如下: Open中配置引脚 Read中返回引脚状态 入口函数:地址映射 虚拟地址 #include linux/module.h #include linux/kernel.h #include linux/fs.h #include linux/init.h #include linux/delay.h #include asm/uaccess.h #include asm/irq.h #include asm/io.h #
[单片机]
07-S3C2440驱动学习(一)嵌入式linux字符设备驱动-查询+中断+引入poll机制的按键驱动程序
基于S3C2440的LED背光源节电系统设计方案
  节能环保技术是当前世界所关注的焦点,在液晶显示模组中,背光源的功耗最高可占总功耗的50%以上。尤其在10in 以下显示产品如手机、PDA、MP3 等便携式设备中,基本采用电池供电,功耗问题尤为突出。为有效降低液晶显示器背光源的亮度,以达到节电目的,本文在ARM开发平台上实现了一种基于直方图变换的背光源调光方法,实验证明,本文提出的方法在失真度为5%的情况下可实现背光节电约35%.   1 背光源调光方案   以TFT 液晶面板结构为例,包括背光、偏光片、液晶阵列、彩色滤光片等部分,人眼所感知的显示图像为上述各部分的综合效果。假设背光亮度归一化后设为b(为 区间实数),0 对应于背光关闭情况,1 对应于背光发光亮度最大情况。
[电源管理]
基于<font color='red'>S3C2440</font>的LED背光源节电系统设计方案
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved