51单片机矩阵键盘设计
基于msc51单片机实现的四位4乘4矩阵键盘计算器的C语言程序及其PROTUES电路和仿真_课程设计报告

单片机原理及接口技术课程设计报告设计题目:计算器设计信息与电气工程学院二零一三年七月计算器设计单片机体积小,功耗小,价格低,用途灵活,无处不在,属专用计算机。
是一种特殊器件,需经过专门学习方能掌握应用,应用中要设计专用的硬件和软件。
近年来,单片机以其体积小、价格廉、面向控制等独特优点,在各种工业控制、仪器仪表、设备、产品的自动化、智能化方面获得了广泛的应用。
与此同时,单片机应用系统的可靠性成为人们越来越关注的重要课题。
影响可靠性的因素是多方面的,如构成系统的元器件本身的可靠性、系统本身各部分之间的相互耦合因素等。
其中系统的抗干扰性能是系统可靠性的重要指标。
数学是科技进步的重要工具,数据的运算也随着科技的进步越发变得繁琐复杂,计算器的出现可以大大解放人在设计计算过程中的工作量,使计算的精度、速度得到改善,通过msc51单片机,矩阵键盘和LED数码管可以实现简单的四位数的四则运算和显示,并当运算结果超出范围时予以报错。
注:这一部分主要描述题目的背景和意义,对设计所采取的主要方法做一下简要描述。
字数不要太多,300-500字。
另注:本文要当做模板使用,不要随意更改字体、字号、行间距等,学会使用格式刷。
文中给出的各项内容都要在大家的报告中体现,可采用填空的方式使用本模板。
1. 设计任务结合实际情况,基于AT89C51单片机设计一个计算器。
该系统应满足的功能要求为:(1) 实现简单的四位十进制数字的四则运算;(2) 按键输入数字,运算法则;(3) LED数码管移位显示每次输入的数据和运算结果;(4) 当运算结果超出范围时实现报错。
主要硬件设备:AT89C51单片机、LED数码管、矩阵键盘。
注:这一部分需要写明系统功能需求,用到的主要硬件(参考实验箱的说明书)。
2. 整体方案设计计算器以AT89C51单片机作为整个系统的控制核心,应用其强大的I/O功能和计算速度,构成整个计算器。
通过矩阵键盘输入运算数据和符号,送入单片机进行数据处理。
51单片机矩阵键盘原理

51单片机矩阵键盘原理51单片机矩阵键盘原理矩阵键盘是一种常用的输入设备,可以通过少量的I/O口控制多个按键。
51单片机作为嵌入式系统中常用的控制器,也可以通过控制矩阵键盘来实现输入功能。
1. 矩阵键盘的结构矩阵键盘由多个按键组成,每个按键都有一个引脚与其他按键共用,形成了一个按键矩阵。
例如,4x4的矩阵键盘有16个按键,其中每行和每列各有4个引脚。
2. 矩阵键盘的工作原理当用户按下某一个按键时,该按键所在行和列之间会形成一个电路通路。
这时,51单片机可以通过扫描所有行和列的电路状态来检测到用户所按下的具体按键。
具体实现过程如下:(1)将每一行引脚设置为输出状态,并将其输出高电平;(2)将每一列引脚设置为输入状态,并开启上拉电阻;(3)逐一扫描每一行引脚,当发现某一行被拉低时,则表示该行对应的某一个按键被按下;(4)记录下该行号,并将该行引脚设置为输入状态,其余行引脚设置为输出状态;(5)逐一扫描每一列引脚,当发现某一列被拉低时,则表示该列对应的是刚才所记录下的行号及其对应的按键;(6)通过行号和列号确定具体按键,并进行相应的处理。
3. 代码实现下面是一个简单的51单片机矩阵键盘扫描程序:```c#include <reg52.h> //头文件sbit row1 = P1^0; //定义引脚sbit row2 = P1^1;sbit row3 = P1^2;sbit row4 = P1^3;sbit col1 = P1^4;sbit col2 = P1^5;sbit col3 = P1^6;sbit col4 = P1^7;unsigned char keyscan(void) //函数定义{unsigned char keyvalue; //定义变量while(1) //循环扫描{row1=0;row2=row3=row4=1; //设置行状态 if(col1==0){keyvalue='7';break;} //读取按键值 if(col2==0){keyvalue='8';break;}if(col3==0){keyvalue='9';break;}if(col4==0){keyvalue='/';break;}row2=0;row1=row3=row4=1;if(col1==0){keyvalue='4';break;}if(col2==0){keyvalue='5';break;}if(col3==0){keyvalue='6';break;} if(col4==0){keyvalue='*';break;}row3=0;row1=row2=row4=1; if(col1==0){keyvalue='1';break;} if(col2==0){keyvalue='2';break;} if(col3==0){keyvalue='3';break;} if(col4==0){keyvalue='-';break;}row4=0;row1=row2=row3=1; if(col1==0){keyvalue='C';break;} if(col2==0){keyvalue='0';break;} if(col3==0){keyvalue='=';break;} if(col4==0){keyvalue='+';break;}}return keyvalue; //返回按键值}void main() //主函数{unsigned char key;while(1) //循环读取{key = keyscan(); //调用函数}}```以上代码实现了一个简单的矩阵键盘扫描程序,可以通过调用`keyscan()`函数来获取用户所按下的具体按键值。
基于msc51单片机实现的四位4乘4矩阵键盘计算器的C语言程序及其PROTUES电路和仿真_课程设计

单片机原理及接口技术课程设计报告设计题目:计算器设计信息与电气工程学院二零一三年七月计算器设计单片机体积小,功耗小,价钱低,用途灵活,无处不在,属专用运算机。
是一种特殊器件,需通过专门学习方能把握应用,应用中要设计专用的硬件和软件。
最近几年来,单片机以其体积小、价钱廉、面向操纵等独特优势,在各类工业操纵、仪器仪表、设备、产品的自动化、智能化方面取得了普遍的应用。
与此同时,单片机应用系统的靠得住性成为人们愈来愈关注的重要课题。
阻碍靠得住性的因素是多方面的,如组成系统的元器件本身的靠得住性、系统本身各部份之间的彼此耦合因素等。
其中系统的抗干扰性能是系统靠得住性的重要指标。
数学是科技进步的重要工具,数据的运算也随着科技的进步越发变得繁琐复杂,计算器的显现能够大大解放人在设计计算进程中的工作量,使计算的精度、速度取得改善,通过msc51单片机,矩阵键盘和LED数码管能够实现简单的四位数的四那么运算和显示,并当运算结果超出范围时予以报错。
注:这一部份要紧描述题目的背景和意义,对设计所采取的要紧方式做一下简要描述。
字数不要太多,300-500字。
另注:本文要当做模板利用,不要随意更改字体、字号、行间距等,学会利用格式刷。
文中给出的各项内容都要在大伙儿的报告中表现,可采纳填空的方式利用本模板。
1. 设计任务结合实际情形,基于AT89C51单片机设计一个计算器。
该系统应知足的功能要求为:(1) 实现简单的四位十进制数字的四那么运算;(2) 按键输入数字,运算法那么;(3) LED数码管移位显示每次输入的数据和运算结果;(4) 当运算结果超出范围时实现报错。
要紧硬件设备:AT89C51单片机、LED数码管、矩阵键盘。
注:这一部份需要写明系统功能需求,用到的要紧硬件(参考实验箱的说明书)。
2. 整体方案设计计算器以AT89C51单片机作为整个系统的操纵核心,应用其壮大的I/O功能和计算速度,组成整个计算器。
通过矩阵键盘输入运算数据和符号,送入单片机进行数据处置。
4×4矩阵键盘51单片机识别实验及程序

4×4矩阵键盘51单片机识别实验与程序1.实验任务如图4.14.2所示,用AT89S51的并行口P1接4×4矩阵键盘,以P1.0-P1.3作输入线,以P1.4-P1.7作输出线;在数码管上显示每个按键的“0-F〞序号。
对应的按键的序号排列如图4.14.1所示图4.14.12.硬件电路原理图图4.14.23.系统板上硬件连线〔1.把“单片机系统“区域中的P3.0-P3.7端口用8芯排线连接到“4*4行列式键盘〞区域中的C1-C4 R1-R4端口上;〔2.把“单片机系统〞区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块〞区域中的任一个a-h端口上;要求:P0.0/AD0对应着a,P0.1/AD1对应着b,……,P0.7/AD7对应着h。
4.程序设计容〔1.4×4矩阵键盘识别处理(2.每个按键有它的行值和列值,行值和列值的组合就是识别这个按键的编码。
矩阵的行线和列线分别通过两并行接口和CPU通信。
每个按键的状态同样需变成数字量“0〞和“1〞,开关的一端〔列线〕通过电阻接VCC,而接地是通过程序输出数字“0〞实现的。
键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么;还要消除按键在闭合或断开时的抖动。
两个并行口中,一个输出扫描码,使按键逐行动态接地,另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。
5.程序框图图4.14.3C语言源程序*include <AT89*51.H>unsigned char code table[]={0*3f,0*06,0*5b,0*4f,0*66,0*6d,0*7d,0*07,0*7f,0*6f,0*77,0*7c,0*39,0*5e,0*79,0*71};unsigned char temp;unsigned char key;unsigned char i,j;void main(void) {while(1){P3=0*ff;P3_4=0;temp=P3;temp=temp & 0*0f; if (temp!=0*0f) {for(i=50;i>0;i--) for(j=200;j>0;j--); temp=P3;temp=temp & 0*0f; if (temp!=0*0f) {temp=P3;temp=temp & 0*0f; switch(temp){case 0*0e:key=7;break;case 0*0d:key=8;break;case 0*0b:key=9;break;case 0*07:key=10;break;}temp=P3;P1_0=~P1_0;P0=table[key]; temp=temp & 0*0f; while(temp!=0*0f) {temp=P3;temp=temp & 0*0f; }}}P3=0*ff;P3_5=0;temp=P3;temp=temp & 0*0f; if (temp!=0*0f) {for(i=50;i>0;i--) for(j=200;j>0;j--); temp=P3;temp=temp & 0*0f; if (temp!=0*0f) {temp=P3;temp=temp & 0*0f; switch(temp){case 0*0e:key=4;break;case 0*0d:break;case 0*0b:key=6;break;case 0*07:key=11;break;}temp=P3;P1_0=~P1_0;P0=table[key]; temp=temp & 0*0f; while(temp!=0*0f) {temp=P3;temp=temp & 0*0f; }}}P3=0*ff;temp=P3;temp=temp & 0*0f; if (temp!=0*0f) {for(i=50;i>0;i--) for(j=200;j>0;j--); temp=P3;temp=temp & 0*0f; if (temp!=0*0f) {temp=P3;temp=temp & 0*0f; switch(temp){case 0*0e:key=1;break;case 0*0d:key=2;break;case 0*0b:break;case 0*07:key=12;break;}temp=P3;P1_0=~P1_0;P0=table[key]; temp=temp & 0*0f; while(temp!=0*0f) {temp=P3;temp=temp & 0*0f; }}}P3=0*ff;P3_7=0;temp=P3;temp=temp & 0*0f;if (temp!=0*0f) {for(i=50;i>0;i--) for(j=200;j>0;j--); temp=P3;temp=temp & 0*0f; if (temp!=0*0f) {temp=P3;temp=temp & 0*0f; switch(temp){case 0*0e:key=0;break;case 0*0d:key=13;break;case 0*0b:key=14;break;case 0*07:key=15;break;}temp=P3;P1_0=~P1_0;P0=table[key]; temp=temp & 0*0f; while(temp!=0*0f) {temp=P3;temp=temp & 0*0f; }}}}}。
51单片机矩阵键盘C语言编程

X1
19 X1
P20 P21 P22 P23 P24 P25 P26 P27
21 22 23 24 25 26 27 28
+5V
RES X1
+5V
C3 1uF
R1
C1
1K
X2
18 X2
RES
9 RESET
EA/VPP RD/P37 WR/P36 ALE/PRDG
PSEN
31 17 16 30 29
1
}
/****************************************************************************** 函数名称:void keyscan() 函数功能:键盘扫描及按键处理
******************************************************************************/
//如果有按键闭合
{ keyvalue=(~HSM)+(~(LJC|0x0f));
//计算键盘值
return(keyvalue);
//返回键值
} else HSM=(HSM<<1)|0x01;
//行扫描左移 1 位,准备扫描下一行}} Nhomakorabea}
return(0x00);
}
break;
case 0x12: P0=0x66; //4
break;
case 0x22: P0=0x6d; //5
break;
case 0x42: P0=0x7d; //6
break;
case 0x82: P0=0x07; //7
break;
基于51单片机4乘4矩阵键盘的设计

case 0x7d:KEY=7;break;
case 0xeb:KEY=8;break;
case 0xdb:KEY=9;break;
case 0xbb:KEY=10;break;
case 0x7b:KEY=11;break;
case 0xe7:KEY=12;break;
控制任务:
编程实现4乘4的矩阵键盘控制连接在P0口和P1口上的16个LED,当按下某键并释放后只有对应的LED灯亮,例如按S0后D0亮,按S1后D1亮。
程序及仿真:
#include<reg51.h>
unsigned char code led[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
b=P2;
a=a|b;
switch(a)
{
case 0xee:KEY=0;break;
case 0xde:KEY=1;break;
case 0xbe:KEY=2;break;
case 0x7e:KEY=3;break;
case 0xed:KEY=4;break;
case 0xdd:KEY=5;break;
{
P0=0xff;
P1=led[n-8];
}}
int main(void)
{
whilsplay(KEY);
}
return 0;
}
更多资源,请关注微博“风竹弈星”,私聊。
unsigned char KEY=0xff;
void keyscan(void)
{
unsigned char a,b;
P2=0xf0;//高四位作为输入(高电平),低四位输出低电平
基于单片机控制的矩阵键盘显示系统设计-精品

课程设计说明书单片机原理与接口技术专业 建筑电气与智能化学生姓名 葛益新班级 BD 电建101学号 1020602106指导教师 吴冬春完成日期2014年 1月 17日目录一理论部分 (1)1课题要求与内容 (1)2 系统方案设计 (1)3 系统硬件的设计 (1)3.1 STC89C51特性 (2)3.2 STC89C51内部结构框图 (2)3.3 STC89C51管脚图,实物图 (3)3.4 I/O口各种不同的工作模式及配置介绍 (3)3.5I/O线 (3)3.6单片机最小系统 (4)3.7矩阵键盘系统设计 (5)3.8数码管显示电路 (6)3.9数码管与单片机的连接电路 (7)4 系统软件设计 (8)5.仿真图片 (9)6.设计小结 (10)7.参考文献 (11)三附录 (12)一理论部分理论设计课题名称:基于单片机控制的矩阵键盘显示系统设计1课题要求与内容以51为核心的STC89C51单片机为控制芯片,设计制作数码管显示电路,矩阵键盘电路,单片机最小系统电路。
通过程序控制4*4的矩阵键盘,经过单片机处理之后显示在数码管上,当按下键盘上的任意一个键的时候,数码管上会显示相应的数字。
因为本系统采用的是单位数码管,所以我们这边用十六进制表示。
设计软件系统和硬件系统,画出硬件系统图和PCB图,最后制作PCB板,满足本次的课程设计要求。
2 系统方案设计本设计是由4*4的矩阵键盘,晶振电路,8051单片机,复位电路,数码显示电路等组成,矩阵键盘通过软件来控制8051单片机从来改变数码显示器上的数字,其组成框图如下所示:图1 系统框图3 系统硬件的设计本次选用的是以51为核心的STC89C51单片机为主控芯片。
此款单片机是STC推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可任选,HD版本 8051单片机MAX810专用复位电路。
3.1 STC89C51特性1. 增强型8051单片机,6时钟/机器周期和12时钟/机器周期可任意选择指令代码完全兼容传统80512. 工作电压:5.5V -3.3V (5V单片机) / 3.8V - 2.0V (3V单片机)3. 工作频率范围:0~40MHz,相当于普通8051的 0~80MHz,实际工作频率可达48MHz.4. 用户应用程序空间:4K / 8K / 13K / 16K / 32K / 64K字节5. 片上集成1280字节 512字节RAM6. 通用I/O口(35/39个),复位后为:P1/P2/P3/P4是准双向口/弱上拉(普通8051传统I/O口) P0口是开漏输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。
试述51系列单片机矩阵键盘编程

试述51系列单片机矩阵键盘编程摘要在单片机系统中,常常使用键盘向单片机输入信息。
键盘由一组常开的按键组成,当按键闭合时就会向单片机系统输入一个电平信息。
每个按键都被赋予了一个键码,单片机根据此代码执行任务。
在单片机系统按键数量较多时,为了减少I/O口的使用通常使用矩阵键盘。
关键词单片机;键盘;矩阵键盘;I/O口1 矩阵键盘的结构矩阵键盘的按键排成矩阵,一般是4×4矩阵,即4行4列,行和列的交叉点接一个常开的独立按键,按键被闭合时就接通行线和列线。
8个I/O口产生16个交叉点16个按键,按键数量比独立按键多了一倍,9个I/O口产生20个按键,I/O口越多产生的按键数量越多,效果越明显。
可以在键盘扫描程序中对每个按键进行编号,如第一行按键从左到右对应0、1、2、3,第二行按键从左到右对应4、5、6、7,第三行按键从左到右对应8、9、A、B,第四行按键左到右对应C、D、E、F,每按一次键让数码管显示该按键所代表的编号。
2 矩阵键盘的工作原理矩阵键盘结构比独立键盘复杂,识别难度也比独立按键大很多。
矩阵键盘的工作方式有程序扫描方式、定时扫描方式、中断扫描方式3种。
本文只讨论程序扫描方式。
程序扫描方式是CPU主动调用扫描子函数,响应键盘的输入要求。
在子函数里有以下步骤:1)判断键盘中有无按键闭合;2)延时去抖消除干扰;3)检测是否确实有按键闭合,确定闭合键的编号;4)等待闭合键的释放。
整个步骤中确定闭合键的编号是关键所在,常用的判断方法有逐行扫描法和反转扫描法。
3 硬件仿真4×4矩阵键盘无需外接电源,电位变化完全由编程来决定。
通过软件延时来消抖动,去干扰。
4×4矩阵键盘4行4列交叉,每个按键位于交叉点上对应的行列号唯一,共16个按键。
4×4矩阵键盘8个I/O口接P1口,7SEG-MPX2-AN-GREEN7段共阳极数码管通过上拉电阻接P0口。
键盘中每闭合一个按键让数码管显示对应的编号。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
51单片机矩阵键盘设计
一、引言
AT89C51单片机矩阵键盘设计是嵌入式系统中一个重要的技术,它的
作用是以矩阵形式把外部按键与MCU相连,使得系统可以对外部的按键进
行检测和响应。
矩阵键盘设计在可编程嵌入式系统的设计中占有重要的地位,如智能交通系统、智能家居系统、航空电子系统等。
本文主要介绍了矩阵键盘设计中硬件电路的设计,包括按键、拉电阻、和矩阵编码等,同时给出系统的控制算法,使得系统可以实现有效的按键
检测和响应。
二、矩阵键盘概述
矩阵键盘是将多个按键排布成列行形式进行连接,一般来说,矩阵键
盘是由按键、拉电阻、矩阵编码器和控制器组成,按键是系统中重要的部件,其作用是将外部输入信号传递给控制器。
拉电阻起到的作用是防止按
键耦合,一般可以使用4.7KΩ拉电阻来防止按键耦合。
矩阵编码器用来
识别按键的状态,通常通过硬件把按键信号编码为数字信号,输入到处理
器或控制器。
控制器用来实现按键信号的检测,通过定义硬件定时器和软
件定时器,实现按键检测和处理。
1、硬件电路设计
应用AT89C51单片机矩阵键盘。