AVR扩展4*4矩阵键盘的CVAVR程序2

发布者:EtherealGrace最新更新时间:2016-10-30 来源: eefocus关键字:AVR  扩展4*4  矩阵键盘  AVR程序 手机看文章 扫描二维码
随时随地手机看文章
// 8位LED动态显示按键值

// 芯片 ATMEGA16L 
// 时钟 4MHz 内部
// 采用系统自带延时程序   
#include
#include
unsigned char KeyNumber;     // 全局变量,保存按键值
void leddisplay();                    // 数码管显示
void keyin(void);                     // 键盘扫描
unsigned char ledxs[8]={16,16,16,16,16,16,0,0}; // 数码管显示缓冲区
flash unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0,0xff};
                          //共阴极代码 0-F,  全灭,全亮
void main()
{
   unsigned char keyword=0;
   delay_ms(200); 
   DDRA=0xff;
   DDRC=0xff; 
   while(1)
   {  
      keyin();            //  键盘扫描   
      switch(KeyNumber)
      {  
         case 0x77: keyword=6;break;
         case 0x7b: keyword=7;break;
         case 0x7d: keyword=8;break;
         case 0x7e: keyword=9;break;
         case 0xb7: keyword=10;break;
         case 0xbb: keyword=11;break;
         case 0xbd: keyword=12;break;
         case 0xbe: keyword=13;break;
         case 0xd7: keyword=14;break;
         case 0xdb: keyword=15;break;
         case 0xdd: keyword=16;break;
         case 0xde: keyword=17;break;
         case 0xe7: keyword=18;break;
         case 0xeb: keyword=19;break;
         case 0xed: keyword=20;break;
         case 0xee: keyword=21;break;
         default:break;  
      }                   
      ledxs[6]=keyword/10;
      ledxs[7]=keyword%10;
      leddisplay();         
   }
}
//4*4矩阵键盘扫描,PB高四位为行输出口,低四位为列输入口
void keyin(void)
{
  unsigned char i,j; 
  DDRB = 0xf0;                // 设置PB高四位为输出口,低四位为输入口
  PORTB = 0x00;               // 初始运行输出全为0
  if((PINB & 0x0f) != 0x0f)   // 判断有无按键动作,有健按下,继续扫描   
  {
     delay_ms(10);             // 按键消抖    
     if((PINB & 0x0f) != 0x0f) // 再次判断是否有按键动作
     {
 for(i = 4;i < 8;i++)    // 逐行扫描,输出0
 {
    PORTB = ~(1 << i) | 0x0f;    //第i行输出0
    for(j = 0;j < 4;j++)
    {   
       if((PINB & (1 << j)) == 0)        //逐列检测 
         KeyNumber =  ((~(1 << i)) | 0x0f) &  ((~(1 << j)) | 0xf0);     //计算键值        
    }
 } 
     }
  }
}

void leddisplay()              
{
  PORTC=0xdf;
  PORTA=tab[ledxs[0]];
  delay_ms(1);
  PORTA=0x00;

  PORTC=0x5f;
  PORTA=tab[ledxs[1]];
  delay_ms(1);
  PORTA=0x00;

  PORTC=0x9f;
  PORTA=tab[ledxs[2]];
  delay_ms(1);
  PORTA=0x00;

  PORTC=0x1f;
  PORTA=tab[ledxs[3]];
  delay_ms(1);
  PORTA=0x00;

  PORTC=0xff;
  PORTA=tab[ledxs[4]];
  delay_ms(1);
  PORTA=0x00;

  PORTC=0x7f;
  PORTA=tab[ledxs[5]];
  delay_ms(1);
  PORTA=0x00;

  PORTC=0xbf;
  PORTA=tab[ledxs[6]];
  delay_ms(1);
  PORTA=0x00;

  PORTC=0x3f;
  PORTA=tab[ledxs[7]];
  delay_ms(1);
  PORTA=0x00;
}

关键字:AVR  扩展4*4  矩阵键盘  AVR程序 引用地址:AVR扩展4*4矩阵键盘的CVAVR程序2

上一篇:1602的CVAVR程序
下一篇:AVR扩展4*4矩阵键盘的CVAVR程序

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

avr单片机工作经验总结
AVR与传统类型的单片机相比,除了必须能实现原来的一些基本的功能,其在结构体系、功能部件、性能和可靠性等多方面有很大的提高和改善。 但使用更好的器件只是为设计实现一个好的系统创造了一个好的基础和可能性,如果还采用和沿袭以前传统的硬件和软件设计思想和方法的话,是不能用好AVR的,甚至也不能真正的了解AVR的特点和长处。 功能越好的器件,需要具备更高技术和能力的人来使用和驾驭它。就象一部好的F1赛车,只有具备高超技术的驾驶员才能充分体会到车的特点,并能最大限度的发挥出车的性能。 AVR具有上手入门快,开发方便简单的特点,但要充分体会和发挥AVR的优点,还需要应用工程师本身的硬软件设计开发能力的不断学习、实践提高。
[单片机]
基于AVR单片机的太阳能发电量检测装置的设计
简介:文中提出并设计了一种基于AVR单片机的太阳能发电量检测系统。系统能够将所测得值实时显示在液晶屏幕上。 摘要:发电量检测是太阳能光伏发电系统的重要组成部分。本文设计了一种精度更高,功耗、成本更低的太阳能发电量检测系统。系统以AVR单片机为控制器,避免了数模转换器等引起的能量消耗并最大程度地简化了系统结构。同时引入了霍尔电流传感器,可以几乎无损耗地将电流信号转换为电压信号。实验结果表明:太阳能发电系统正常工作时,太阳能发电量能够实时显示在显示屏上,且误差率不超过5%。 太阳能的利用已经成为化解能源危机的一条途径。因而,国内外的相关科研、技术和产业部门都在积极致力于太阳能相关设备的研究和开发,并取得了相当的成就与发展。如高
[单片机]
基于<font color='red'>AVR</font>单片机的太阳能发电量检测装置的设计
基于AVR微控制器的电力机车智能辅保系统的实现
    摘要: 给出了以AVR微控制器为核心的电力机车智能辅保系统的设计方案,并介绍了系统硬件及软件的具体实现方法。     关键词: 智能辅保系统 AVR微控制器 硬件 软件 电气机车辅助系统中有劈相机、空气压缩机、通风机及制动风机等各种类型的电机。运行中为了防止出现短路、过流等异常情况而烧毁电机,通常配置辅助保护系统,起到及时监测电机故障并加以处理的作用。目前电力机车上安装的辅保系统都是模拟电路装置,系统硬件复杂,又不方便司机使用和维修。因此,设计一种实时性高、性能可靠的智能辅保系统替代原有的模拟电路装置势在必行。本文将介绍笔者开发的用于韶山型电力机车的智能辅助保护系统的设计及实现。 1 系统的主要功能
[嵌入式]
LCD1602液晶显示模块深入详解之软件篇(AVR)
LCD1602液晶显示模块的驱动虽然比七段数码管之类的显示要复杂一些,但实际上也并不是很难,最主要的还是初始化,为什么这么说呢?我们在调试一块新液晶屏的时候,都会先初始化看看有没有光标在闪,没有光标前是一番努力(PROTEUS上也是这么做的),光标出来之后就相对很容易了。 那初始化的流程是怎么样的呢?我们还是看看HD44780的数据手册吧,如下图所示: 可以看到,初始化的主要步骤如下: (1)上电:这特么也算是一个步骤么?是的!如果你用的是其它液晶模块,比如LCD12864,会发现有一个复位引脚,LCD1602是没有复位引脚的,HD44780本身已经有内部复位逻辑。上电后复位其实会做很多事情的,主要如下: a. 清除屏
[单片机]
LCD1602液晶显示模块深入详解之软件篇(<font color='red'>AVR</font>)
AVR单片机熔丝位的配置
(1)在AVR的器件手册中,对熔丝位使用已编程(Programmed)和未编程(Unprogrammed)定义熔丝位的状态, “Unprogrammed”表示熔丝状态为“1”(禁止);“Programmed”表示熔丝状态为“0”(允许)。因此,配置熔丝位的过程实际上是 “配置熔丝位成为未编程状态“1”或成为已编程状态“0””。 (2)在使用通过选择打钩“√”方式确定熔丝位状态值的编程工具软件时,请首先仔细阅读软件的使用说明,弄清楚“√”表示设置熔丝位状态为“0”还是为“1”。 (3)使用CVAVR中的编程下载程序时应特别注意,由于CVAVR编程下载界面初始打开时,大部分熔丝位的初始状态定义为“1”,因此不要使用其编程菜单选
[单片机]
Microchip AVR® MCU开发板轻松一点,即可创建安全连网应用
传统上,创建可连接到云端的应用需要占用大量的时间和资源供嵌入式应用设计师开发通信协议、安全和硬件兼容性等方面的必要专业技术。开发人员通常利用大型的软件框架和实时操作系统(RTOS)来克服这些困难,但又导致开发时间、工作量、成本和安全漏洞增加等问题。为了扩大与 Google Cloud的合作,美国微芯科技公司(Microchip Technology Inc. )推出了全新的物联网快速开发板,让设计人员能够在几分钟内创建连网设备原型。该解决方案结合了强大的AVR® 单片机(MCU),这是一款CryptoAuthentication™安全组件集成电路和经过全面认证的Wi-Fi® 网络控制器,可以为连接嵌入式应用提供简单、有效的方式。连
[物联网]
Microchip <font color='red'>AVR</font>® MCU开发板轻松一点,即可创建安全连网应用
基于AVR-BootLoader,通过霜蝉远程串口可实现单片机的远程升级
最近一直利用业余时间写自己的“基于AVR-BootLoader”,启发是由于一次在ourAVR论坛看到了绍子阳的bootloader,联想到公司在用AVR MCU,但每次升级程序都要花费很大的力气车马劳顿的跑到工程现场,而且很多机器还安装在国外,为了升级一次程序发费了很多的人力物力财力,加上公司的机器目前大部分都配有远程监控系统,所以本人决定写一个具有自有产权的“AVR-BootLoader”。 特别说明:本“AVR-BootLoad”软件代码属上海霜蝉版权所有,在此贡献发布,仅限于个人免费使用不得用于商业用途,本人也不保证代码的严谨性,如在升级中出现任何问题与本人无关,本人已测试过Atmega64A与Atmega12
[单片机]
基于<font color='red'>AVR</font>-BootLoader,通过霜蝉远程串口可实现单片机的远程升级
爱特梅尔发布用于汽车密匙应用带防盗器超低功率AES-128 AVR微控制器
微控制器及触摸解决方案的领导厂商爱特梅尔公司(Atmel® Corporation)宣布提供带有AES-128防盗器协议堆栈的全新超低功率AVR®微控制器(MCU)产品ATA5790N。该器件在单一5mm x 7mm 封装中集成有低频(LF)防盗器(immobilizer)功能和一个3D LF接收器。爱特梅尔 ATA5790N配合ATA5830射频(RF)发送器使用,可用于大批量单向和双向的汽车无源门禁和无源启动系统密匙。 AVR微控制器具有16kB闪存和2kB EEPROM。在16kB闪存中,14kB容量用于应用软件,2kB容量则用于防盗器功能。控制器核心周围配有专用硬件加速器,允许以软件实现任何防盗器协议,而不会影响典型的
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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