AVR单片机键盘子程序(中断方式和查询方式 )

发布者:wmghyu最新更新时间:2017-12-17 来源: eefocus关键字:AVR  单片机  键盘子程序  中断方式  查询方式 手机看文章 扫描二维码
随时随地手机看文章

AVR 单片机 键盘子程序

键盘扫描有中断方式和查询方式 
#include "jn8515def.h" 

/******以下是键盘排列图****** 
                   |       |       |


PC0  ___1|__2|__3|__ 
                    |      |        | 
PC1  ___4|__5|__6|__ 
                   |       |        | 
PC2  ___7|__8|__9|__ 
                    |       |       | 
PC3  ___C|__0|__S|__   
                    |       |       | 
                    |       |       | 
               PC4 PC5 PC6 
*****************************/    
//下沿为有效键值          0    1    2    3    4    5    6    7    8    9  s(10)  c0   c1   c4   c7   cs  c 
flash uchar cKeyTab[]={0x57,0x6e,0x5e,0x3e,0x6d,0x5d,0x3d,0x6b,0x5b,0x3b,0x37,0x47,0x66,0x65,0x63,0x27,0x67}; 
flash uchar cKeyOut[]={0xef,0xdf,0xbf};           //其中一列为0 
flash uchar cKeyDir[]={0x10,0x20,0x40};   
uchar cMenu=0;  

uchar cKeyVal() 
{  statIC uchar cLastKv,cSameKvNum=0;   
   static   bit bKeyPress=0; 
   uchar i,j,cKeytmp=0xff; 
   for(i=0;i<3;i++) 
   {  DDRC&=0x80; 
      DDRC|=cKeyDir[i]; 
      PORTC=cKeyOut[i];    
      #asm("nop") 
      #asm("nop") 
      cKeytmp=PINC&0x7f;    
      for(j=0;j<16;j++) 
      {  if(cKeyTab[j]==cKeytmp) 
         {  cWaitTime=10;          //延时去抖 
            goto Next;    
         } 
      } 
   } 
  // do{                           //等待按键释放 
   // }while(!bKeyPress);     
   cSameKvNum=0;   
   bKeyPress=0; 
   return 0xff; 
Next:  
//   delay_ms(2);     
   if(bKeyPress) return 0xff; 
   if(cKeytmp==cLastKv)                  
   {  if(++cSameKvNum>10) 
      {  cSameKvNum=0; 
         bKeyPress=1; 
         return j; 
      } 
   } 
   else 
   {  cSameKvNum=0;   
      cLastKv=cKeytmp; 
   } 
      
   return 0xff;//返回空键值      


关键字:AVR  单片机  键盘子程序  中断方式  查询方式 引用地址:AVR单片机键盘子程序(中断方式和查询方式 )

上一篇:ATmega16 HT1621B驱动程序
下一篇:AVR单片机8位数据产生随机数

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

单片机入门的方法与误区
单片机很简单,有点电子底子的都可以玩会。 玩单片机可以有以下几个等级: 1,纯硬件DIY:这一级玩法很简单,只要有一个ISP下载线(和手机数据线的性质差不多),自己制作硬件电路,然后把单片机的程序烧到单片机里就行了。不需要懂编程。在我的网站里有许多小制作,每一个制作都有提供HEX文件,是下载给单片机的程序。很简单,和玩数字电路一样简单。 2,半编程DIY:硬件制作也会了,纯硬件DIY已经熟悉的时候,就可以试着玩玩编程了。半编程DIY并不是自己从头开始写程序,一开始也没有这个水平,呵呵。这一部是照着别人已经写好的程序,然后在现在程序上改一改数值、换一换语句。比如我的SHOOK16摇摇棒,就可以自己在源程序里只改字幕部分的程序代
[单片机]
基于STC89C55RD+单片机的LED点阵显示系统的设计
  1 引言   在车站、商场、学校等一些需要发布多变的实时信息或进行广告宣传的场所,黑板、纸张或是霓虹灯广告牌这些传统的媒介手段,不论是在显示效果还是可修改性上都已无法满足当前的需求。而 LED点阵显示屏具有耗电省、成本低、寿命长、占用空间小以及能够实时显示等特点,而且显示内容的信息量大,用户可随时任意自行编辑修改显示内容,因此,近年来已得到了广泛应用。   2 总体设计   系统采用了上位机——下位机的结构构建,上位机为 PC机,通过串行通信接口与下位机显示系统进行通信 ,以实现对显示内容的实时擦除、更新等操作;下位机系统主要包括单片机控制电路和显示电路两部分,汉字显示采用 16x16点阵模式,通过单片机的控制,实现字符
[电源管理]
基于STC89C55RD+<font color='red'>单片机</font>的LED点阵显示系统的设计
89C51单片机定时/计数器、P1口编程举例
在89C51单片机的P1.0端口上接有一个发光二极管,P1.0输出低电平时发光二极管点亮,输出高电平时熄灭。P1.7接有一个开关,开关闭合时,P1.7为低电平,断开时为高电平。请设计一个控制程序,当开关闭合时,发光二极管每秒钟闪烁一次,当开关断开时,发光二极管每秒钟闪烁两次。已知系统使用12MHz的晶体。 LED BIT P1.0 ;发光二极管控制信号输出端口 KEY BIT P1.7 ;开关状态检测端口 CLOK EQU 20H ;时钟单元(单位:1/16秒) SEC BIT CLOK.3 ;秒闪烁控制位 DSEC BIT CLOK.2 ;半秒闪烁控制位 ORG 0000H LJMP MAIN ;至主程序 ORG
[单片机]
基于STM32单片机的简易电子琴设计(1)
1.1 系统功能 按照设计要求,本系统具有以下功能: 共有三个基本模式:电子琴模式、录音模式、播放器模式 电子琴模式:7个基本按键控制产生7种音调,功能键实现调节音阶和音量 录音模式:可分为录音和放音两个模块,录音状态下会记录弹奏的音调以及时间;放音模式调用音乐播放器某些模块,实现相同的功能。 音乐播放器模式:可以实现音乐的播放、暂停、切歌、调速、顺序播放、单曲循环、随机播放、以及进度条显示。 有两个全局按键中断,可控制模式切换和全局静音/暂停。 1.2 主要技术性能指标 基本按键:7个; 功能按键:6个; 全局中断按键:2个; 扬声器:1个; 扬声器功率:1w; LCD1602:1块; 主要模式:3个; 曲库:8首; 音
[单片机]
基于STM32<font color='red'>单片机</font>的简易电子琴设计(1)
基于单片机的数字电压表毕业设计
第一章 绪 论1.1 课题研究的背景及意义 数字电压表的高速发展,使它已成为实现测量自动化、提高工作效率不可缺少的仪表,数字化是当前计量仪器发展的主要方向之一,而高准度的DC-DVC的出现,又使数字电压表进入了精密标准测量领域。随着现代化技术的不断发展,数字电压表的功能和种类将越来越强,越来越多,其使用范围也会越来越广泛。采用智能化的数字仪器也将是必然的趋势,它们将不仅能提高测量准确度,而且能提高电测量技术的自动化程序,可以扩展成各种通用数字仪表、专用数字仪表及各种非电量的数字化仪表(如:温度计、湿度计、酸度计、重量、厚度仪等),几乎覆盖了电子电工测量、工业测量、自动化仪表等各个领域。从而提高计量检定人员的工作效率。 在电量的
[单片机]
基于<font color='red'>单片机</font>的数字电压表毕业设计
STMicroelectronics STM32 F3 混合信号微控制器 (MCU)现加入Mouser的产品阵营
2012年11月22日 – Mouser Electronics公司现已将STMicroelectronics公司的 STM32 F3 系列 MCU 纳入库存,该系列将数字信号处理 (DSP)、浮点运算单元 (FPU) 指令的 32 位 ARM Cortex-M4 内核与先进的模拟外设相结合于一身。 STM32 F3 系列在内嵌数字信号控制器 (DSC) 设计上大胆创新,将一个Cortex-M4 内核与快速 12 位 5 MSPS及精确的 16 位 sigma-delta 模数转换器 (ADC)、可编程增益放大器(4 增益,1% 精确度)、快速 50 毫微秒比较器以及以 144 MHz 频率运行的万用时控单元相结合,集成
[单片机]
MSP430单片机的端口介绍
  一、端口的定义   端口号是标识主机内唯一的一个进程,IP+端口号就可以标识网络中的唯一进程。在我们通常用的Socket编程中,IP+端口号就是套接字   端口号是由16比特进程编号,范围是0-65535,按照道理来讲,这些端口你都可以随便用。但是你不是vip用户,所以有一些端口被vip用户占着。比如FTP 21 Ssh 22等等,所以给端口分了类,规定你可以使用端口的范围。   二、端口分类   1.硬件端口   CPU通过接口寄存器或特定电路与外设进行数据传送,这些寄存器或特定电路称之为端口。   其中硬件领域的端口又称接口,如:并行端口、串行端口等。   2.网络端口   在网络技术中,端口(Port)
[单片机]
MSP430<font color='red'>单片机</font>的端口介绍
stc12c5a60s2复位电路说明
STC12C5A60S2在众多的51系列单片机中,要算国内STC 公司的1T增强系列更具有竞争力,因他不但和8051指令、管脚完全兼容,而且其片内的具有大容量程序存储器且是FLASH工艺的,如STC12C5A60S2单片机内部就自带高达60K FLASHROM,这种工艺的存储器用户可以用电的方式瞬间擦除、改写。而且STC系列单片机支持串口程序烧写。显而易见,这种单片机对开发设备的要求很低,开发时间也大大缩短。写入单片机内的程序还可以进行加密,这又很好地保护了你的劳动成果。 stc12c5a60s2内部结构图 stc12c5a60s2内部结构图如下: stc12c5a60s2复位电路 就是在复位引脚接1个10UF电容到电源+,
[单片机]
stc12c5a60s2复位电路说明
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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