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单片机键盘子程序(中断方式和查询方式 )
推荐阅读最新更新时间:2024-03-16 15:49
单片机入门的方法与误区
单片机很简单,有点电子底子的都可以玩会。 玩单片机可以有以下几个等级: 1,纯硬件DIY:这一级玩法很简单,只要有一个ISP下载线(和手机数据线的性质差不多),自己制作硬件电路,然后把单片机的程序烧到单片机里就行了。不需要懂编程。在我的网站里有许多小制作,每一个制作都有提供HEX文件,是下载给单片机的程序。很简单,和玩数字电路一样简单。 2,半编程DIY:硬件制作也会了,纯硬件DIY已经熟悉的时候,就可以试着玩玩编程了。半编程DIY并不是自己从头开始写程序,一开始也没有这个水平,呵呵。这一部是照着别人已经写好的程序,然后在现在程序上改一改数值、换一换语句。比如我的SHOOK16摇摇棒,就可以自己在源程序里只改字幕部分的程序代
[单片机]
基于STC89C55RD+单片机的LED点阵显示系统的设计
1 引言 在车站、商场、学校等一些需要发布多变的实时信息或进行广告宣传的场所,黑板、纸张或是霓虹灯广告牌这些传统的媒介手段,不论是在显示效果还是可修改性上都已无法满足当前的需求。而 LED点阵显示屏具有耗电省、成本低、寿命长、占用空间小以及能够实时显示等特点,而且显示内容的信息量大,用户可随时任意自行编辑修改显示内容,因此,近年来已得到了广泛应用。 2 总体设计 系统采用了上位机——下位机的结构构建,上位机为 PC机,通过串行通信接口与下位机显示系统进行通信 ,以实现对显示内容的实时擦除、更新等操作;下位机系统主要包括单片机控制电路和显示电路两部分,汉字显示采用 16x16点阵模式,通过单片机的控制,实现字符
[电源管理]
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首; 音
[单片机]
基于单片机的数字电压表毕业设计
第一章 绪 论1.1 课题研究的背景及意义 数字电压表的高速发展,使它已成为实现测量自动化、提高工作效率不可缺少的仪表,数字化是当前计量仪器发展的主要方向之一,而高准度的DC-DVC的出现,又使数字电压表进入了精密标准测量领域。随着现代化技术的不断发展,数字电压表的功能和种类将越来越强,越来越多,其使用范围也会越来越广泛。采用智能化的数字仪器也将是必然的趋势,它们将不仅能提高测量准确度,而且能提高电测量技术的自动化程序,可以扩展成各种通用数字仪表、专用数字仪表及各种非电量的数字化仪表(如:温度计、湿度计、酸度计、重量、厚度仪等),几乎覆盖了电子电工测量、工业测量、自动化仪表等各个领域。从而提高计量检定人员的工作效率。 在电量的
[单片机]
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)
[单片机]
stc12c5a60s2复位电路说明
STC12C5A60S2在众多的51系列单片机中,要算国内STC 公司的1T增强系列更具有竞争力,因他不但和8051指令、管脚完全兼容,而且其片内的具有大容量程序存储器且是FLASH工艺的,如STC12C5A60S2单片机内部就自带高达60K FLASHROM,这种工艺的存储器用户可以用电的方式瞬间擦除、改写。而且STC系列单片机支持串口程序烧写。显而易见,这种单片机对开发设备的要求很低,开发时间也大大缩短。写入单片机内的程序还可以进行加密,这又很好地保护了你的劳动成果。 stc12c5a60s2内部结构图 stc12c5a60s2内部结构图如下: stc12c5a60s2复位电路 就是在复位引脚接1个10UF电容到电源+,
[单片机]