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

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

// 芯片 ATMEGA16L 
// 时钟 4MHz 内部
// 采用系统自带延时程序   
#include
#include

void leddisplay();                  // 数码管显示
unsigned char 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 i=0,keyword=0;
   delay_ms(200); 
   DDRA=0xff;
   DDRC=0xff; 
   while(1)
   {  
      for(i=0;i<38;i++)   // 按下一个按键300ms后再响应下一个,不检测按键弹起  
      {
        ledxs[6]=keyword/10;
        ledxs[7]=keyword%10;
        leddisplay();        
      }  
      i=keyin();         //  读取按键值     
      switch(i)
      {  
         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;  
      }                   
      
   }
}
//4*4矩阵键盘扫描,PB高四位为行输出口,低四位为列输入口
unsigned char keyin(void)
{
  unsigned char i,j,key; 
  DDRB = 0xf0;                // 设置PB高四位为输出口,低四位为输入口
  PORTB = 0x00;               // 初始运行输出全为0
  if((PINB & 0x0f) == 0x0f) 
    return 0;                 // 判断有无按键动作,没有,返回0     
  else
  {
     leddisplay();             // 按键消抖    
     if((PINB & 0x0f) == 0x0f) 
 return 0;               // 再次判断是否有按键动作
     else
     {
 for(i = 4;i < 8;i++)    // 逐行扫描,输出0
 {
    PORTB = ~(1 << i) | 0x0f;    //第i行输出0
    for(j = 0;j < 4;j++)
    {   
       if((PINB & (1 << j)) == 0)        //逐列检测 
         key =  ((~(1 << i)) | 0x0f) &  ((~(1 << j)) | 0xf0);     //计算键值   
          
    }
 }
      return key; 
     }
   }
}

void leddisplay()                // 数码管显示,A口送段码,C口的高三位接74ls138提供位码。
{
  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扩展4*4矩阵键盘的CVAVR程序

上一篇:AVR 的灌电流和拉电流
下一篇:1602的CVAVR程序

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

AVR单片机对外部RAM的扩展
我采用的是GCC编译器,并且在项目中采用C++来编写程序,根据理论上来讲,只要外部存储器使能了并且配置完成,那么变量的地址分配完全可以交给编译器来做,但是前提是存储器使能及配置代码要在上电复位后最先得到执行,而采用C或者C++来编写程序,上电复位之后最先得到执行的代码是由编译器自动增加的启动代码以及构造函数代码。我不清楚如何让存储器使能及配置代码在上电复位后最先得到执行,所以就写了下面一段宏来控制外部存储器的访问。 代码如下: //ex te rn_ ram .h #ifndef _H_EXTERN_RAM_H_ #define _H_EXTERN_RAM_H_ #include “type.h” #define DEF_E
[单片机]
<font color='red'>AVR</font>单片机对外部RAM的<font color='red'>扩展</font>
基于AVR32铁路隧道施工安全监测系统
  1.1 引言   铁路隧道的开采、施工和使用过程中,隧道围岩变形是围岩应力分布、整体力学形态变化和稳定状态最直接和可靠的反映,围岩净空位移的测量是隧道施工过程中一个重要环节,是判断围岩稳定性和指导施工的重要依据。对隧道围岩变形进行及时的监测和分析预报成为铁路隧道施工中保证施工安全、防止事故发生、合理确定隧道支护的十分重要的工作。   1.2 项目背景/选题动机   传统的隧道围岩位移测量方法主要有两种:一种是在施工过程中布置测量断面,间隔一定的时间由人工使用各种机械式或机械-电子式收敛计测量;另一种是借助隧道断面仪定时定点测量待测断面。两者的不足之处在于:   (1)不能实时监测:即不能随时监测待测断面的变形情况,因而不能及时
[单片机]
基于<font color='red'>AVR</font>32铁路隧道施工安全监测系统
基于LabVIEW和AVR单片机的镇痛仪系统实现
摘要:通过对穴位施加低频的脉冲电压刺激穴位神经释放内源性物质,从而达到减轻疼痛的作用已经被证实。基于此医学原理,本系统使用LabVIEW编写上位机控制界面,通过NIVISA模块驱动USB进行实时通信,采用高性能AVR主控芯片设计下位机,从而实现宽范围数字升压(12~100V)的高质量互补对称脉冲波稳定输出特性。在疼痛疾病的治疗以及医疗保健治未病等领域将有广泛的应用。 疼痛治疗一向是临床医学深感棘手的问题之一,在疼痛治疗领域,穴位刺激镇痛一直备受推崇,即通过对穴位施加低频的脉冲电压实现对神经系统的刺激,使其释放阿片肽,达到减轻疼痛的目的。上世纪80年代以来,电子技术在疾病诊疗领域的取得广泛应用,穴位刺激镇痛治疗仪器成为其中的一个研
[测试测量]
基于LabVIEW和<font color='red'>AVR</font>单片机的镇痛仪系统实现
第83节:矩阵键盘输入任意数字或小数点的液晶屏显示程序
开场白: 本来这节打算讲调用液晶屏内部字库时让某行内容反显的,但是在昨天调试过程中,发现一个很奇怪的问题,当调用内部字库时,按照数据手册,我执行一条反显指令时,应该是仅仅某一行反显,但是却同时出现两行反显。比如,当我执行 WriteCommand(0x34); //扩充指令集 WriteCommand(0x04); //第1行反显 指令时,发现第一行和第三行反显,后来想想,我猜测这种12864的屏应该是25632折成左右半屏,左半屏在上面,右半屏在下面。经过这次经验,我觉得大家以后尽量不要用液晶屏的内部字库模式,应该用自构字库的模式(图形模式)。因为我觉得用内部字库模式的时候,这个集成的反显扩展指令不好用。而用自构字
[单片机]
第83节:<font color='red'>矩阵键盘</font>输入任意数字或小数点的液晶屏显示程序
第十四节:矩阵键盘的单个触发
开场白: 上一节讲了按键的加速匀速触发。这节开始讲矩阵键盘的单个触发。 具体内容,请看源代码讲解。 (1)硬件平台:基于朱兆祺51单片机学习板。。 (2)实现功能:16个按键中,每按一个按键都能触发一次蜂鸣器发出 滴 的一声。 (3)源代码讲解如下: #include REG52.H #define const_voice_short 40 //蜂鸣器短叫的持续时间 #define const_key_time 20 //按键去抖动延时的时间 void initial_myself(); void initial_peripheral(); void delay_long(unsigned int uiDel
[单片机]
基于AVR单片机的自由立体显示背光控制系统
0 引言 人眼视觉是立体的,立体的视觉带给人类的不仅仅是可以判断观看对象的空间状态,它和颜色一起,使这个世界更加丰富多彩、变化万千。2010年伊始,随着立体电影《阿凡达》的热映,在世界各地掀起了一股3D的热潮,3D技术成为各界关注的焦点。三菱、索尼、LG、三星等各大显示器厂商相继推出自己的立体电视,并寄希望于立体电视市场的开发。 立体显示技术经历了多年的发展,无论在显示质量,还是实现方法上都有了很大的进步,自由立体显示由于不需要佩戴任何辅助工具,因此正在成为立体显示发展的方向。其中,以LCD为基础,基于视差的立体显示技术由于技术成熟且实现工艺不复杂,成为最有可能实现商业化的热门技术之一。基于AVR单片机的自由立体显示系统正是
[单片机]
基于<font color='red'>AVR</font>单片机的自由立体显示背光控制系统
avr单片机proteus仿真第四课:控制继电器
继电器(Relay),作用是用弱电控制强电。比如,我们用avr单片控制一个220V电压的灯泡,这就必须用到继电器。 本课用avr单片机来控制继电器的吸合与断开。 Proteus仿真实验器件: 1 atmega128一块 2 button,按键一个 3 relay,通用继电器一个,并把继电器的Component Value设置为5V 4 pnp三极管一个 5 LAMP,灯泡一个改为220V 6 resistor 1k 7 DIODE 二极管一个 这个程序实际上很简单,主要要学习继电器的用法,注意的是,继电器必须接一个二极管。 仿真程序如下: #include avr/io.h #include util/delay.h #def
[单片机]
<font color='red'>avr</font>单片机proteus仿真第四课:控制继电器
爱特梅尔32位AVR UC3L微控制器降低功耗达90%
爱特梅尔公司(Atmel® Corporation)宣布,其采用picoPower®技术、嵌入电容式触摸控制器外设的新一代爱特梅尔32位AVR® UC3L微控制器(MCU) 现已在产供货。爱特梅尔通过将静态功耗降低90%,动态功耗降低45%,为微控制器市场带来了无与伦比的性能/功耗比。新型微控制器具有1.5 DMIPS/MHz性能以及唾手可得的数字信号处理(DSP)指令,可为嵌入式系统工程师带来超越以往的性能指标。这些产品的目标应用包括:USB和蓝牙耳机等音频处理应用、游戏操纵杆和高级语音或触摸人机接口装置。爱特梅尔32位AVR UC3L系列采用非常紧凑的5.5 x 5.5mm TLLGA封装,具有高性能和低功耗特性,以满足
[单片机]
爱特梅尔32位<font color='red'>AVR</font> UC3L微控制器降低功耗达90%
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

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

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

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