avr 矩阵键盘扫描,一种比较简单的方法

发布者:fnfeecjknquc最新更新时间:2016-08-21 来源: eefocus关键字:avr  矩阵键盘扫描 手机看文章 扫描二维码
随时随地手机看文章
  avr 矩阵键盘扫描,一种比较简单的方法。 - liuyunqian@yeah - 嵌入式学习

 

#include
#include
#define uchar unsigned char
#define uint unsigned int
#pragma data:code   //随后的数据将存贮在程序区,即FLASH区,此区只能存贮常量,比如表格之类。
const table[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c ,
       0x39,0x5e,0x79,0x71,0};
#pragma data:data//随后的数据将存贮在数据区,即RAM区,此区可存贮常量和变量。         
void delay(uint ms)
{
   uint i,j;
for(i=0;i for(j=0;j<1141;j++);
}
void show_init()
{
    DDRA|=BIT(3);
   DDRB=0XFF;
   DDRA|=BIT(4);
}
void show(uchar aa,uchar bb)//第aa个数码管显示bb
{
    
    //PORTB=0XFF;
    PORTA|=BIT(4);
    PORTB=~BIT(aa);
    PORTA&=~BIT(4);
    
     PORTA|=BIT(3);
    PORTB=table[bb];
    PORTA&=~BIT(3);

    
    delay(10);
}

uchar key_scan()
{
    
uchar i,j,m,n;
uchar key=0;
uchar t[4]={0x7f,0xbf,0xdf,0xef};

for(i=0;i<4;i++)
{
   DDRD=0XF0;
   j=t[i];
  
   PORTD=j;
  
   if((PIND&0X01)==0)
   {
    delay(5);
    if((PIND&0X01)==0)
    {
     while((PIND&0X01)==0);
     return key;
     break;
    }
   }
   key++;
  
   if((PIND&0X02)==0)
   {
    delay(5);
    if((PIND&0X02)==0)
    {
     while((PIND&0X02)==0);
     return key;
     break;
    }
   }
   key++;
   if((PIND&0X04)==0)
   {
    delay(5);
    if((PIND&0X04)==0)
    {
     while((PIND&0X04)==0);
     return key;
     break;
    }
   }
   key++;
   if((PIND&0X08)==0)
   {
    delay(5);
    if((PIND&0X08)==0)
    {
     while((PIND&0X08)==0);
     return key;
     break;
    }
   }
   key++;
}
return 0xff;//如果没有健按下返回0xff

}

void main()
{
   uchar s=0;
   show_init();
while(1)
{
   s=key_scan();
   if(s!=0xff)//如果有健按下,,显示
    show(0,s);
  
}
   
}

关键字:avr  矩阵键盘扫描 引用地址:avr 矩阵键盘扫描,一种比较简单的方法

上一篇:max7219控制8段数码管 spi接口
下一篇:AT24C1024 proteus 2-wire Serial EEPROM 1

推荐阅读最新更新时间:2024-03-16 15:06

AVR看门狗详解
简介:AVR看门狗 一个硬件单元,当程序由于某种原因跑“飞”了,它就Reset程序。就像小狗看门一样。 AVR看门狗 一个硬件单元,当程序由于某种原因跑“飞”了,它就Reset程序。就像小狗看门一样。 //Watchdog initialize // prescale: 2048K void watchdog_init(void) { WDR(); //this prevents a timout on enabling WDTCR = 0x0F; //WATCHDOG ENABLED - dont forget to issue WDRs } 上面是用ICC的App Builder生成的看门狗
[单片机]
<font color='red'>AVR</font>看门狗详解
AVR Stduio安装与使用
从光盘中找到AVR Stduio安装文件,或者从网上下载AVR Stduio 4.13版,该软件是免费软件,可以直接到AVR的官方网站上下载。 双击安装文件,出现如下画面, 接着出现如下画面 然后出现如下画面,点击“NEXT“ 出现如下画面,选择“I accept…”,点击“NEXT”,继续安装。 根据出现的画面,选择“NEXT”安装。 点击Finish完成安装。 注意:打开电源,等JTAG上的小灯不闪了之后再打开软件。否则会出现错误。 可在“开始”,所有程序中找到Atmel AVR Tools里面的AVR Studio 4。 打开AV
[单片机]
<font color='red'>AVR</font> Stduio安装与使用
IAR For AVR 关于 comp_a90.h 头文件的使用
使用comp_a90.h头文件时最好包括intrinsics.h头文件,intrinsics.h内在函数提供最简单的操作处理器底层特征。休眠,看门狗,FLASH函数。 /************************************************************** ** - INAVR.H - ** ** Backwards compatibility macros for iccAVR ** ** Used with iccAVR. ** ** Copyright IAR Systems 1999. All rights reserved. ** ** File versi
[单片机]
avr中断使用例子
在ICCAVR下,用以下语句可定义中断程序 #pragma interrupt_handler 函数名:中断向量 要注意不同的AVR芯片的中断向量是不同的,因此在ICCAVR下编译,除了要在程序上注明芯片的类型外,还要在PROJECT的OPTION页选择正确的芯片,否则有可能导致程序运行不正常;而GCC只要在MFILE里面选定芯片型号就可以,GCC在这点上的使用比ICCAVR的方便。 附:定时器1溢出中断例子,每溢出一次就令i自加1,然后在LCD1602上显示出来 ------------------------------------------------------------------------------------
[单片机]
基于AVR单片机的某车型CAN总线系统设计
引言 现场总线技术 是目前自动化控制领域发展比较迅速的一门技术,其中CAN(Controller Area Network)总线 是在国际上应用最广泛的现场总线之一。近几年随着汽车电子行业的发展,现代汽车中CAN总线已经成为必须采用的装置之一。本文以ATMEL公司新近生产的一款内置CAN控制器的单片机——AT90CAN128为基础,设计了一款车载CAN总线系统,通过CAN智能测控仪表对车中部分单元参数量进行实时监控,使各单元之间协调运转。另外,传输线束大大简化,可靠性得到了极大的提高,有效节约了线束安装空间和系统成本。 1 AT90CAN128特性概述 1.1 基本特性 AT90CAN128 是基于AVR
[单片机]
基于<font color='red'>AVR</font>单片机的某车型CAN总线系统设计
基于AVR单片机LED显示屏的灰度设计与实现
  led点阵块具有亮度高、发光均匀、可靠性好、拼装方便等优点,能构成各种尺寸的显示屏。目前,led显示屏已被广泛应用于文字显示并取得了很好的效果,但是大部分仅能显示滚动的文字信息而不能显示图像,并且还存在系统复杂等缺点。本文提出了一种主从式单片机的LED显示屏解决方案,该设计方案利用AVR单片机自身的FLASHROM和RAM,外部无需任何存储电路,电路结构简单。该系统实现了图像的16阶灰度显示,可广泛用于商场、车站等公共场合。 1 AVR单片机简介   AVR单片机是增强型内置FLASH的RISC(ReducedInstructionSetCPU)精简指令集高速8位单片机,硬件采用哈佛(Harward)结构,达到一个时钟周期可
[单片机]
基于<font color='red'>AVR</font>单片机LED显示屏的灰度设计与实现
基于AVR单片机与CH375的多通道核辐射探测数据采集系统
该系统采用了AVR单片机、高速器件及USB接口技术,采集速度快,死时间短,计数率高,通信量大。USB所具有的即插即用、通用性强、易扩展、可靠性高等优点改善了各探测通道的使用性能。它不仅是4MeV静电加速器不可缺少的重要组成部分,而且为加速器防辐射安全提供确切依据,同时还为加速器在动植物育种、放射治疗、材料改性、放射化学等诸多方面的应用研究提供可靠的技术数据。整个系统已通过省级科技成果鉴定,实际运行良好。在更换探头和稍作参数调整后,还可将该系统用于其它大范围场地多种辐射的监测。 0 引言 文中介绍了多个探测通道组成的多道核数据采集系统,对4MeV静电加速器核辐射进行监测防护。各个通道采用AVR单片机ATmega128作为主控
[单片机]
基于<font color='red'>AVR</font>单片机与CH375的多通道核辐射探测数据采集系统
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved