单片机12 矩阵键盘控制数码管

合集下载

单片机矩阵键盘,数码管,双机通信完美版

单片机矩阵键盘,数码管,双机通信完美版

学生实习报告学生姓名:王耀辉专业班级:通信1304指导教师:撒继铭工作单位:信息工程学院题目: 单片机原理与应用初始条件: 单片机最小系统、下载电路、扩展电路、软件(PROTEUS等)、万用表、电烙铁等工具完成的主要任务:1)利用PROTEL等软件进行硬件设计;2)利用Keil uV2软件完成应用系统软件设计;3)利用stc-isp软件完成在系统编程、下载,并完成系统软件调试;4)题目由指导教师提供;5)要求每个学生单独完成硬件软件设计、仿真、焊接、调试任务;6)写出实习报告,实习报告主要包括以下内容:目录、摘要、关键词、基本原理、方案论证、硬件设计、软件设计(带流程图、程序清单)、仿真结果、实物运行结果照片、结论、参考文献等;7)实习完成后通过答辩;8)答辩时交实习报告电子文档,通过答辩后根据修改意见修改并打印、装订成册。

实习时间安排:序阶段内容所需时间号1 方案设计1天2 硬件设计2天3 软件设计2天4 系统仿真1天5 电路板焊接2天6 系统调试1天7 答辩1天合计10天指导教师签名:年月日系主任(或责任教师)签名:年月日目录摘要 -------------------------------------------------------------------------------------------------------I Abstract -------------------------------------------------------------------------------------------------- II 1设计任务及要求 -------------------------------------------------------------------------------------- 1 2 基本原理 ---------------------------------------------------------------------------------------------- 32.1基本原理及原理框图------------------------------------------------------------------------ 32.2 STC89C52结构功能介绍 ------------------------------------------------------------------ 33 硬件电路原理与设计 ------------------------------------------------------------------------------- 63.1复位电路--------------------------------------------------------------------------------------- 63.2振荡电路--------------------------------------------------------------------------------------- 73.3单片机最小系统------------------------------------------------------------------------------ 83.4数码管显示电路------------------------------------------------------------------------------ 93.4.1 数码管选择--------------------------------------------------------------------------- 93.4.2 LED芯片7SEG-MPX6-CA -------------------------------------------------------- 93.4.3 数码管电路设计------------------------------------------------------------------- 103.5 矩阵键盘电路 ------------------------------------------------------------------------------- 113.6串口通信电路------------------------------------------------------------------------------- 123.7 总设计电路 --------------------------------------------------------------------------------- 134 软件设计 -------------------------------------------------------------------------------------------- 144.1软件介绍------------------------------------------------------------------------------------- 144.1.1程序编写软件Keil ---------------------------------------------------------------- 144.1.2仿真软件Proteus ------------------------------------------------------------------- 144.2数码管显示设计---------------------------------------------------------------------------- 144.3串行通信接收程序------------------------------------------------------------------------- 155 仿真结果与分析 ----------------------------------------------------------------------------------- 175.1 数据输入 ------------------------------------------------------------------------------------ 175.2 数据显示 ------------------------------------------------------------------------------------ 185.3 实现串口通信 ------------------------------------------------------------------------------ 196实物展示 --------------------------------------------------------------------------------------------- 20 7心得体会 --------------------------------------------------------------------------------------------- 20 参考文献 ----------------------------------------------------------------------------------------------- 22 附录Ⅰ:元件清单 ----------------------------------------------------------------------------------- 24 附录Ⅱ:总程序设计 -------------------------------------------------------------------------------- 25摘要单片机最小系统,无论对单片机初学人员还是开发人员都具有十分重要的意义,可以利用最小系统进行编程实现工业控制。

单片机入门-矩阵键盘控制数码管显示

单片机入门-矩阵键盘控制数码管显示

} } }
t=P2; t=t&0xf0;
单片机晶振复位电路:
锁存器、上拉电阻:
4x4矩阵键盘:
代码实现:
void key44scan(void)//键盘扫描函数 {
uint t; P2=0xfe; t=P2; t=t&0xf0; if(t!=0xf0) {
delay(); t=P2;
switch(t) {
case 0xee:keynum=1; break; case 0xde:keynum=5; break; case 0xbe:keynum=9; break; case 0x7e:keynum=13; break; } P0=table[keynum]; while(t!=0xf0) { t=P2; t=t&0xf0; } }
t=P2; t=t&0xf0; } }
P2=0xf7; t=P2; t=t&0xf0; if(t!=0xf0) {
delay(); t=P2;
switch(t) {
case 0xe7:keynum=4; break; case 0xd7:keynum=8; break; case 0xb7:keynum=12; break; case 0x77:keynum=0; break; } P0=table[keynum]; while(t!=0xf0) {
} P0=table[keynum]; while(t!=0xf0) {
t=P2; t=t&0xf0; } }
P2=0xfb; t=P2; t=t&0xf0; if(t!=0xf0) {
delay(); t=P2;
switch(t) {
case 0xeb:keynum=3; break; case 0xdb:keynum=7; break; case 0xbb:keynum=11; break; case 0x7b:keynum=15; break; } P0=table[keynum]; while(t!=0xf0) {

矩阵键盘 数码管显示

矩阵键盘 数码管显示

/****************************************************************************** **** 【函数功能】:矩阵键盘数码管显示* 【晶振】: 11.0592M* 【使用说明】:依次按下矩阵键盘的16个按键数码管上会显示1-16数字使用usb下载时,矩阵键盘B2按键会受到影响解决办法:取下下载选择2个红色短路帽即可******************************************************************************* ***//*预处理命令*/#include<reg52.h> //包含单片机寄存器的头文件#define uchar unsigned char#define uint unsigned int/* 函数申明-----------------------------------------------*/void delay(uint z);uint scan(void);void send595(uchar dat);void out595(void);void disp(uchar w,uchar d);void dispoff(void);/* 变量定义-----------------------------------------------*/sbit MOSIO=P2^2;sbit R_CLKa=P2^3;sbit S_CLKa=P2^4;uchar code duan[]={~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F};//此表为LED数码管段选字模uchar code wei[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //此表为LED数码管位选字模uchar num_key; //扫描按键计数uint num;/******************************************************************************** *** 函数名称:main(void)** 函数功能:主函数******************************************************************************* **/void main(){uint shi,ge;uint numb;while(1){ dispoff();numb=scan(); //调用键盘扫描if(numb<10){disp(6,0);delay(8);disp(7,numb);delay(8);}else{shi=numb/10;ge=numb%10;disp(6,shi);delay(8);disp(7,ge);delay(8);}}}/******************************************************************************** *** 函数名称:delay(uint z)** 函数功能:延时函数******************************************************************************* **/void delay(uint z){uint i,j;for(i=z;i>0;i--)for(j=100;j>0;j--);}/*********************************************************************************** 函数名称:scan(void)** 函数功能:按键扫描******************************************************************************* **/uint scan(void){uint num;P3=0xf7; //扫描第四排num_key=P3;num_key=num_key&0xf0;if(num_key!=0xf0){delay(5);P3=0xf7; //去抖动num_key=P3;num_key=num_key&0xf0;if(num_key!=0xf0)num_key=num_key|0x07;while(P3 !=0xf7){}}else{P3=0xfb; //扫描第三排num_key=P3;num_key=num_key&0xf0;if(num_key!=0xf0){delay(5);P3=0xfb; //去抖动num_key=P3;num_key=num_key&0xf0;if(num_key!=0xf0)num_key=num_key|0x0b;// while(P3 !=0xfb){}}else{P3=0xfd; //扫描第二排num_key=P3;num_key=num_key&0xf0;if(num_key!=0xf0){delay(5);P3=0xfd; //去抖动num_key=P3;num_key=num_key&0xf0;if(num_key!=0xf0)num_key=num_key|0x0d;// while(P3 !=0xfd){}}else{P3=0xfe; //扫描第一排num_key=P3;num_key=num_key&0xf0;if(num_key!=0xf0){delay(5);P3=0xfe; //去抖动num_key=P3;num_key=num_key&0xf0;if(num_key!=0xf0)num_key=num_key|0x0e;// while(P3 !=0xfe){}}}}}switch(num_key) //键盘扫描值num_key判断,即几号按键被按下{case 0xee :num=1;break; //B1按键case 0xde :num=2;break; //B2按键case 0xbe :num=3;break; //B3按键case 0x7e :num=4;break; //B4按键case 0xed :num=5;break; //B5按键case 0xdd :num=6;break; //B6按键case 0xbd :num=7;break; //B7按键case 0x7d :num=8;break; //B8按键case 0xeb :num=9;break; //B9按键case 0xdb :num=10;break; //B10按键case 0xbb :num=11;break; //B11按键case 0x7b :num=12;break; //B12按键case 0xe7 :num=13;break; //B13按键case 0xd7 :num=14;break; //B14按键case 0xb7 :num=15;break; //B15按键case 0x77 :num=16;break; //B16按键}return num;}/******************************************************************************** *** 函数名称:send595(uchar dat)** 函数功能:数据输入******************************************************************************* **/void send595(uchar dat) //数据输入{uchar i;for(i=0;i<8;i++){if((dat<<i)&0x80)MOSIO=1;else MOSIO=0;S_CLKa=0;S_CLKa=1;}}/******************************************************************************** *** 函数名称:out595** 函数功能:数据输出******************************************************************************* **/void out595(void) // 数据输出{R_CLKa=0;R_CLKa=1; //上升沿}/******************************************************************************** *** 函数名称:disp(uchar w,uchar d)** 函数功能:数码管显示函数******************************************************************************* **/void disp(uchar w,uchar d) //数码管显示函数:w-位码,d-段码{send595(wei[w]);send595(duan[d]);out595();}/******************************************************************************** *** 函数名称:dispoff(void)** 函数功能:关闭共阳数码管******************************************************************************* **/void dispoff(void) //关闭共阳数码管{send595(0);send595(0);out595();send595(0xff);out595();}。

单片机实验报告——矩阵键盘数码管显示

单片机实验报告——矩阵键盘数码管显示

单片机实验报告信息处理实验实验二矩阵键盘专业:电气工程及其自动化指导老师:***组员:明洪开张鸿伟张谦赵智奇学号:152703117 \152703115\152703118\152703114室温:18 ℃日期:2017 年10 月25日矩阵键盘一、实验内容1、编写程序,做到在键盘上每按一个键(0-F)用数码管将该建对应的名字显示出来。

按其它键没有结果。

二、实验目的1、学习独立式按键的查询识别方法。

2、非编码矩阵键盘的行反转法识别方法。

3、掌握键盘接口的基本特点,了解独立键盘和矩阵键盘的应用方法。

4、掌握键盘接口的硬件设计方法,软件程序设计和贴士排错能力。

5、掌握利用Keil51软件对程序进行编译。

6、会根据实际功能,正确选择单片机功能接线,编制正确程序。

对实验结果能做出分析和解释,能写出符合规格的实验报告。

三、实验原理1、MCS51系列单片机的P0~P3口作为输入端口使用时必须先向端口写入“1”。

2、用查询方式检测按键时,要加入延时(通常采用软件延时10~20mS)以消除抖动。

3、识别键的闭合,通常采用行扫描法和行反转法。

行扫描法是使键盘上某一行线为低电平,而其余行接高电平,然后读取列值,如读列值中某位为低电平,表明有键按下,否则扫描下一行,直到扫完所有行。

行反转法识别闭合键时,要将行线接一并行口,先让它工作在输出方式,将列线也接到一个并行口,先让它工作于输入方式,程序使CPU通过输出端口在各行线上全部送低电平,然后读入列线值,如此时有某键被按下,则必定会使某一列线值为0。

然后,程序对两个并行端口进行方式设置,使行线工作于输入方式,列线工作于输出方式,并将刚才读得的列线值从列线所接的并行端口输出,再读取行线上输入值,那么,在闭合键所在行线上的值必定为0。

这样,当一个键被接下时,必定可以读得一对唯一的行线值和列线值。

由于51单片机的并口能够动态地改变输入输出方式,因此,矩阵键盘采用行反转法识别最为简便。

单片机培训第3讲——矩阵键盘、数码管、中断

单片机培训第3讲——矩阵键盘、数码管、中断

拓展部分
1. 利用仪器设备或自己计算频率,,实现一个按键控制的简易电子琴,发 出声音的音调级别可通过数码管显示出来。
Page
36
感谢您的关注
Weihei 2013.05.12
用Delay延时函数方式,加入人为制造的CPU阻塞(既是在调用完显 示函数后,加一个1S的Delay延时函数),观察其效果并分析原因。 Note:Delay延时函数定义为
for(i=0;i<100;i++) for(j=0;j<200;j++);//让单片机连续200*100个时钟周期都不执行操作 此类让单片机不执行任何操作的延时即是阻塞CPU方式的延时。
13
数码管的原理---如何点亮一只数码管
16进制表示为 0X06 P1.0 | | | | | | | P1.7 0X5B
利用80C51单片机P1口点亮一只数码管原理图
Page
14
数码管---断码查询小工具
Page
15
点亮单只数码管---代码
Page
16
数码管---多位数码管一起亮的原理
余晖效应
让手里的单片机“有声有色”
Weihei 2013.05.12
温习---利用单片机IO输出
直接对IO口赋值
Unsigned char LEDVal = 0xFE; P1 = 0X5FE; P1 = LEDVal;
利用位运算或移位函数改变LEDVal值,即可实现多种方式流水效果
LEDVal = LEDVal >> 1; LEDVal |= 0x80;//左移一位 LEDVal = _crol_(LEDVal ,1);//循环左移,每次移动1位

51单片机数码管显示及矩阵键盘扫描程序

51单片机数码管显示及矩阵键盘扫描程序

51单片机数码管显示及矩阵键盘扫描程序硬件实验十一八段数码管实验一、实验任务1、在静态数码管上轮流显示数字0-9。

2、在两个4位数码管上动态显示数字0-9二、流程图及程序静态显示:流程图:程序代码:#include#define uchar unsigned chucharcodevalue[10]={0xC0,0xF9,0xA4,0xB0,0X99,0x92,0x82,0xF8,0 x80,0x90};//0 -9数码管显示段码void delay(char x) //延时子程序{uchar i;for(i=0;i<200;i++);}main() //主函数{int i;while(1){for(i=0;i<10;i++) //显示0-9{P0=codevalue[i];delay(500); //延时1秒}}}动态显示:#include#includetab1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6D,0x7D,0x07,0x7f,0x6f}; //数码管显示数字字段unsigned char tab2[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//片选字段unsigned char i,k,j,x;void delay(x); //声明延时子函数void main() //主函数{while(1){for(i=0;i<8;i++) //显示0-7{ P1=tab1[i];P0=tab2[i];delay(5); //延时}P1=tab1[8]; P0=tab2[0]; delay(5); //显示8-9P1=tab1[9]; P0=tab2[1]; delay(5);}}void delay(x) //延时函数定义{do{for(j=0;j<250;j++)for(k=0;k<250;k++);}}硬件实验十二矩阵键盘扫描显示一、实验任务1、把矩阵键盘上的按键输入的键码在静态数码管上显示出来。

单片机矩阵键盘与数码管课程设计

单片机矩阵键盘与数码管课程设计

单片机矩阵键盘与数码管课程设计(总16页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--矩阵键盘与数码管显示摘要矩阵式键盘乃是目前使用较为广泛的一种键盘模式,该系统以N个端口连接控制N*N个按键,即时在LED数码管上。

单片机控制的据这是键盘显示系统,该系统可以对不同的按键进行实时显示,其核心是单片机和键盘矩阵电路部分,主要对按键与显示电路的关系、矩阵式技术及设备系统的硬件、软件等各个部分进行实现。

4*4矩阵式键盘采用89C51单片机为核心,主要由矩阵式键盘电路、译码电路、显示电路等组成,软件选用C语言编程,单片机将检测到的按键信号转换成数字量,显示于数码管显示器,系统灵活性强,易于操作,可靠性能好。

单片机简介及主系统电路单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换444器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域的广泛应用。

从上世纪80年代,由当时的4位、8位单片机,发展到现在的32位300M的高速单片机。

单片机在工业控制领域广泛应用,它由芯片内仅有CPU的专用处理器发展而来。

最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中,本次课程设计我们采用的是AT89C51型号的单片机。

AT89C51单片机是51系列单片机的一个成员,是8051单片机的简化版。

内部自带2K字节可编程FLASH存储器的低电压、高性能COMS八位微处理器,与Intel MCS-51系列单片机的指令和输出管脚相兼容。

由于将多功能八位CPU和闪速存储器结合在单个芯片中,因此,AT89C2051构成的单片机系统是具有结构最简单、造价最低廉、效率最高的微控制系统,省去了外部的RAM、ROM和接口器件,减少了硬件开销,提高了系统的性价比。

实验四:矩阵按键与数码管显示

实验四:矩阵按键与数码管显示

switch(P2) { case(0X70): KeyValue=3;break; case(0XB0): KeyValue=2;break; case(0XD0): KeyValue=1;break; case(0XE0): KeyValue=0;break; } //测试行 P2=0X0F; switch(P2) { case(0X07): KeyValue=KeyValue+12;break; case(0X0B): KeyValue=KeyValue+8;break; case(0X0D): KeyValue=KeyValue+4;break; case(0X0E): KeyValue=KeyValue;break; } //此处是流程图中所缺少的部分请尝试理解与运用 while((a<50)&&(P2!=0x0F)) { Delay(1000); a++; } } } return KeyValue; }
图 4 数码管动态显示
实例:
B C D E F G H
RP1
RESPACK-8 P0.0 P0.1 P0.2 P0.3 P0.7 P0.6 P0.5 P0.4 P1.3 P1.2 P1.1 P1.0
C2
100pF
1 1
U1 X1
19 XTAL1 CRYSTAL P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD 39 38 37 36 35 34 33 32 21 22 23 24 25 26 27 28 10 11 12 13 14 15 16 17

基于单片机的键盘和LED数码管工作原理

基于单片机的键盘和LED数码管工作原理

基于单片机的键盘和LED数码管工作原理单片机是一种集成电路芯片,它包含了中央处理器、存储器和各种输入输出接口等核心功能。

而键盘和LED数码管则是单片机中常用的输入和输出设备之一键盘通常由多个按键组成,每个按键对应一个电路开关。

当按键按下时,电路闭合,形成通路,使电流流过。

按键抬起时,电路断开,通路被切断。

在单片机的键盘应用中,常用的键盘有矩阵键盘和独立按键两种。

矩阵键盘是将多个按键排列成矩阵的形式,通过行和列两个方向上的电极连接到单片机的输入输出引脚上。

当一些按键按下时,对应的行和列的电极会形成电路,单片机通过扫描行和列的方式,来检测按键的状态。

具体的工作原理如下:1.单片机通过输出行电平信号,将每行的引脚设置为输出模式,并将行的电平拉低;2.单片机通过输入列电平信号,将每列的引脚设置为输入模式,并开启输入状态;3.单片机依次扫描每行,检测是否有按键按下;4.如果有按键按下,则表示该行对应的列电平会被单片机检测到;5.单片机根据行和列的组合,确定按下的按键。

独立按键则是将每个按键对应的引脚直接连接到单片机的输入引脚上,按键按下时,直接检测到引脚的电平信号。

LED数码管是一种显示设备,它由多个LED组成,可以用于显示数字、字母和符号等信息。

在单片机的LED数码管应用中,常见的数码管有共阳和共阴两种类型,在工作时,需要通过单片机的输出引脚来控制数码管的亮灭。

共阳数码管的工作原理如下:1.单片机通过输出引脚产生一个高电平信号,与数码管的相应位相连接;2.当输出引脚电平为高时,该位的LED被通电,发出光亮;3.当输出引脚电平为低时,该位的LED断电,熄灭。

共阴数码管的工作原理与共阳相反:1.单片机通过输出引脚产生一个低电平信号,与数码管的相应位相连接;2.当输出引脚电平为低时,该位的LED被通电,发出光亮;3.当输出引脚电平为高时,该位的LED断电,熄灭。

通常,为了达到流水灯效果或同时显示多位数字,需要使用多个输出引脚来控制多个LED数码管。

矩阵键盘按键的数码管显示矩阵键盘按键的数码管显示

矩阵键盘按键的数码管显示矩阵键盘按键的数码管显示

一、矩阵键盘按‎键的数码管‎显示1.实验目的(1)掌握VHD‎L语言的语‎法规范,掌握时序电‎路描述方法‎(2)掌握多个数‎码管动态扫‎描显示的原‎理及设计方‎法2.实验所用仪‎器及元器件‎计算机一台‎实验板一块‎电源线一根‎扁平线一根‎下载线一根‎3.实验任务要求设计出‎4*4矩阵键盘‎对某一按键‎按下就在数‎码管显示一‎个数字。

按键从左上‎角到右下角‎依次为1,2, (16)4.实验原理按键模块原‎理键盘扫描的‎实现过程如‎下:对于4×4键盘,通常连接为‎4行、4列,因此要识别‎按键,只需要知道‎是哪一行和‎哪一列即可‎,为了完成这‎一识别过程‎,我们的思想‎是,首先固定输‎出4行为高‎电平,然后输出4‎列为低电平‎,在读入输出‎的4行的值‎,通常高电平‎会被低电平‎拉低,如果读入的‎4行均为高‎电平,那么肯定没‎有按键按下‎,否则,如果读入的‎4行有一位‎为低电平,那么对应的‎该行肯定有‎一个按键按‎下,这样便可以‎获取到按键‎的行值。

同理,获取列值也‎是如此,先输出4列‎为高电平,然后在输出‎4行为低电‎平,再读入列值‎,如果其中有‎哪一位为低‎电平,那么肯定对‎应的那一列‎有按键按下‎。

键盘键值的‎获取:键盘上的每‎一个按键其‎实就是一个‎开关电路,当某键被按‎下时,该按键的接‎点会呈现0‎的状态,反之,未被按下时‎则呈现逻辑‎1的状态。

扫描信号由‎r o w进入‎键盘,变化的顺序‎依次为11‎10-1101-1011-0111-1110。

每一次扫描‎一排,依次地周而‎复始。

例如现在的‎扫描信号为‎1011,代表目前正‎在扫描9,10,11,12这一排‎的按键,如果这排当‎中没有按键‎被按下的话‎,则由col‎umn读出‎的值为11‎11;反之当9这‎个按键被按‎下的话,则由col‎u mn读出‎的值为11‎10。

根据上面所‎述原理,我们可得到‎各按键的位‎置与数码关‎系如表所示‎:1110 1110 1110 1110 1101 1101 1101 1101row1110 1101 1011 0111 1110 1101 1011 0111 colum‎n1 2 3 4 5 6 7 8键值row 1011 1011 1011 1011 0111 0111 0111 0111colum‎n1110 1101 1011 0111 1110 1101 1011 0111键值9 10 11 12 13 14 15 16动态显示原‎理为使得输入‎控制电路简‎单且易于实‎现,采用动态扫‎描的方式实‎现设计要求‎。

单片机12 矩阵键盘控制数码管

单片机12  矩阵键盘控制数码管
方法
独立按键控制单个数码管的显示
矩阵式键盘由P3口控制,P3.0、P3.1、P3.2、P3.3 引脚分别控制第一、二、三、四行(从上到下), P3.4、P3.5、P3.6、P3.7引脚分别控制第一、二、 三、四列(从左到右)。动态数码管由P0口和P2 口控制,P0口控制数码管的数值,P2口控制数码 管的位码。
(2)若P1.0至P1.3有引脚产生了电平变化,则说明被拉低 电平那一列有按钮被按下,用变量(这里假设是变量a) 将IO口的二进制信息存储起来(a=P0;),其中高四位为 行信息,所以一定为0,低四位为有效信息(反应出那一 列有按钮按下),一共有以下四种情况:
P1.0 0 0 0 0 1 1 1 0 第一列有按钮按下0x0e; P1.1 0 0 0 0 1 1 0 1第二列有按钮按下0x0d; P1.2 0 0 0 0 1 0 1 1第三列有按钮按下0x0b; P1.3 0 0 0 0 0 1 1 1第四列有按钮按下0x07;
程序编写及讲解
程序较长(略),参照课本程序讲解
矩阵式键盘的工作原理
当单片机高电平的引脚与低电平的引脚相连接,高电平的 引脚将被低电平的引脚“拉”至低电平。根据这个规律, 我们常用“行扫描法”对矩阵式键盘进行识别,过程如下:
(1)引脚P1.4至P1.7输出底电平,引脚 P1.0至P1.3输出高 电平(P0=0x0f;),观察引脚 P1.0至P1.3引脚有没有电 平变化,若无,则无按键被按下。
的位置,将按钮行与列的信息存于同一变量中 (c=a|b),此时c变量中存储的就是被按下按键的键 码,从键码就能判断按钮的位置,
(31.0至P1.3输出低电 平(P0=0xf0;),这时,有按键按下的那一行将 会把该行的引脚电平拉低,将此时的IO口的二进 制信息存于另一变量中(假设是变量b).

矩阵键盘控制数码管

矩阵键盘控制数码管
JNB ACC.4,KND;已扫完最后一列,转KND
RR A;扫描码循环右移一位
MOV R2,A;新的扫描码送R2
AJMP LK4 ;进行左边一列的扫描
KND:LJMP MAIN ;一轮扫描完毕,开始新的一轮扫描
ks:MOV P0,#0FH ;P0口高四位输入0 。这个函数用来检查是否有键按下
LK3:ACALL DELAY
ACALL KS ;查键是否继续闭合,若闭合则再延时。
JNZ LK3 ;键不释放就一直等待
POP ACC
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P1,A
NEXT:INC R4
MOV A,R2
DB 92H ;"5"
DB 82H ;"6"
DB 0F8H ;"7"
DB 80H ;"8"
DB 90H ;"9"
ቤተ መጻሕፍቲ ባይዱB 88H ;"A"
实现功能:按下一个键,数码管亮对应的一个数字(0~F)
电路连接:单个数码管连P1口,矩阵键盘连P0口
配套教材:北航李广弟那个版本
如果还不会, 问勇哥
ORG 00H
MAIN: LCALL KS;检查是否有键闭合
JNZ LK1;A非0,则转移,说明有键按下
ACALL DELAY;(延时)
DB 83H ;"B"
DB 0C6H ;"C"
DB 0A1H ;"D"
DB 86H ;"E"
DB 8EH ;"F"

矩阵键盘扫描与数码管显示实验结果分析

矩阵键盘扫描与数码管显示实验结果分析

矩阵键盘扫描与数码管显示实验结果分析
矩阵键盘扫描与数码管显示实验是一种常见的数字电路实验。

在这个实验中,我们可以通过按下矩阵键盘上的按键,控制数码管上的数字显示。

实验结果分析主要包括以下几个方面:
1. 矩阵键盘扫描:在实验中按下键盘上的某个按键,可以通过扫描算法检测到按键的位置,并将对应按键的行列信息送入微处理器或控制电路。

分析实验结果时,可以观察是否可以正常检测到按键的位置,并且是否能够正确传递给其他部分的电路或处理器。

2. 数码管显示:通过实验中的控制电路,可以将微处理器或其他控制器输出的数字信号转换成数码管上的对应数字显示。

在分析实验结果时,可以观察数码管是否能够正常显示所期望的数字,并且是否能够响应输入信号的变化。

3. 信号传递与处理:在整个实验电路中,信号的传递和处理是关键部分。

可以分析信号在各个部分的传递过程中是否出现错误或干扰,是否能够实现正确的数据传输和处理。

4. 稳定性和可靠性:实验结果的分析还需要考虑电路的稳定性和可靠性。

即在长时间使用或复杂环境条件下,电路能否保持正常工作,并且不出现意外错误或故障。

总结来说,矩阵键盘扫描与数码管显示实验结果的分析需要关注按键的检测和传递、数码管的正确显示、信号传递与处理等方面,同时也需要考虑电路的稳定性和可靠性。

矩阵式键盘控制数码管显

矩阵式键盘控制数码管显
去抖动处理
为了避免按键抖动造成的误判,微 控制器会对检测到的按键状态进行 去抖动处理,确保按键状态的准确 性。
键盘编码方式
行码与列码组合
01
每个按键都有一个唯一的行码和列码组合,用于标识按键的位
置。
编码表
02
建立一个包含所有按键行码和列码组合的编码表,用于将按键
位置映射到对应的编码值。
编码输出
03
键盘扫描程序
根据矩阵式键盘的原理,编写键盘扫描程序,实 现按键的检测与识别。
数码管显示程序
根据数码管的显示原理,编写数码管显示程序, 实现数码管的显示和控制。
主程序
主程序负责调用键盘扫描程序和数码管显示程序, 实现整个系统的控制逻辑。
系统调试与测试
硬件调试
检查硬件电路连接是否正确,确保各模块工作正常。
矩阵式键盘控制数码管显示系 统
目录
CONTENTS
• 矩阵式键盘控制原理 • 数码管显示技术 • 矩阵式键盘控制数码管显示系统设计 • 系统性能优化与改进 • 应用前景与发展趋势

01 矩阵式键盘控制原理
CHAPTER
矩阵式键盘结构
4x4矩阵式键盘结构
由16个按键组成的矩阵,行线和列线 交叉连接,每个按键位于行线和列线 的交叉点上。
根据按键位置在编码表中找到对应的编码值,通过微控制器输
出相应的编码信号,控制数码管显示相应的字符或数字。
02 数码管显示技术
CHAPTER
数码管工作原理
数码管由多个LED段组成,通过控制各段的亮灭来显示数字或字符。
数码管内部有8个LED段,通过电流的通断控制每个段的亮灭,从而显示不同的数字 或字符。
数码管驱动方式
点驱动方式

矩阵按键控制数码管显示

矩阵按键控制数码管显示

定时消抖 Case 0xee; P0口送0 段码 Case 0xed; P0口送1 段码 Case 0x77; …… P0口送F 段码
有键按下?


存储当前P2的状态1 Break P2=0X0F 结束 存储当前P2的状态2
返回(状态1|状态2)
返回0XFF
程序编写
//========================================== //函数名称: keyscan() //函数功能: 检测按键 //入口参数:无 //出口参数:cord_h|cord_1 //备注: //========================================== UINT8 keyscan(void) { INT8 cord_h=0; INT8 cord_1=0; P2=0xf0; if(P2!=0xf0) { delay_ms(10); if(P2!=0xf0) { cord_h=P2; P2=0x0f; cord_1=P2; return(cord_h|cord_1); } } return(0xff); }
在没有按键按下时,即DS2450 的输入量时0,当有丌 同的按键按下时,DS2450 的输入量丌同,微处理器就会 得到丌同的数字量,微处理器根据采集到的数字量可判断 按键情况。
单片机控制的“机电一体化产品”中按键的接口设计 科技咨询,李迚波
键盘扫描子程序一般包括以下内容:
1.判别有无键按下;
2.消除键盘机械抖动;
出线输出为全低电平,则列线中电平由高变低所在列为按
键所在列。
两步即可确定按键所在的行和列,从而识别出所按的键。
采用线反转法的矩阵式键盘
假设键3被按下。
第一步,P1.0~P1.3输出全为“0”,然后,读入 P1.4~P1.7线的状态,结果P1.4=0,而P1.5~P1.7均为 1,因此,第1行出现电平的变化,说明第1行有键按下; 第二步,让P1.4~P1.7输出全为“0”,然后,读入 P1.0~P1.3位,结果P1.0=0,而P1.1~P1.3均为1,因 此第4列出现电平的变化,说明第4列有键按下。

矩阵式键盘控制数码管显示

矩阵式键盘控制数码管显示
矩阵式键盘控制数码 管显示
目录
CONTENTS
• 矩阵式键盘工作原理 • 数码管显示原理 • 矩阵式键盘控制数码管显示方案 • 矩阵式键盘控制数码管显示应用 • 矩阵式键盘控制数码管显示常见问题及
解决方案
01 矩阵式键盘工作原理
按键检测方式
直接检测法
通过直接检测按键是否按下,判断按键状态。
间接检测法
按键与数码管显示不匹配
01
总结词
按键与数码管显示不匹配是矩阵式键盘控制数码管显示中 常见的问题之一,表现为按下某个按键后数码管显示的内 容与预期不符。
02
详细描述
这可能是由于键盘编码与数码管显示编码不匹配导致的问题。 例如,按下数字键“1”,数码管却显示字母“A”。
03
解决方案
可以通过调整键盘编码与数码管显示编码的对应关系来解 决这个问题。具体来说,需要检查键盘编码与数码管显示 编码的映射关系,确保它们一一对应。同时,也需要检查 键盘扫描程序和数码管显示驱动程序的实现是否正确。
静态驱动
每个数码管的每个段都由一个独立的 I/O口控制,适用于数码管数量较少 的情况。
动态驱动
通过扫描方式逐个点亮数码管的各个 段,可以节省I/O口资源,适用于数码 管数量较多的情况。
03 矩阵式键盘控制数码管显 示方案
硬件连接方案
矩阵式键盘与微控制器连接
将矩阵式键盘的行和列连接到微控制器的输入/输出端口,以便读取按键状态。
优化显示逻辑
优化数码管显示的逻辑,例如使用动态扫描技术,减少数码管的亮灭时间,提高显示效果。
04 矩阵式键盘控制数码管显 示应用
电子密码锁
总结词
矩阵式键盘控制数码管显示在电子密码锁中应用广泛,能够实现密码输入、显示和安全 验证等功能。

单片机控制的矩阵键盘

单片机控制的矩阵键盘

引言概述:
单片机控制的矩阵键盘已经成为现代电子设备中常见的输入方式之一。

该键盘具有结构简单、易于实现和使用方便等优点,广泛应用于各种电子产品中。

本文将对单片机控制的矩阵键盘的原理、设计和应用进行详细阐述。

正文内容:
一、矩阵键盘的原理
1.1矩阵键盘的基本结构
1.2矩阵键盘的电路连接方式
1.3矩阵键盘的工作原理
二、单片机控制的矩阵键盘的设计
2.1单片机的选择和配置
2.2键盘扫描算法的设计
2.3矩阵键盘的接口设计
2.4程序的编写和调试
2.5键盘输入的处理和应用
三、单片机控制的矩阵键盘的应用
3.1家电控制系统中的使用
3.2工控设备中的应用
3.3智能家居中的应用
3.4安防系统中的应用
3.5医疗设备中的应用
四、单片机控制的矩阵键盘的优缺点
4.1优点:
4.1.1结构简单,易于实现
4.1.2使用方便,操作灵活
4.1.3成本低廉,适合大规模生产
4.2缺点:
4.2.1键盘数量限制
4.2.2受到干扰可能导致误触发
五、单片机控制的矩阵键盘的发展趋势
5.1多功能键盘的设计
5.2无线键盘与蓝牙技术的结合
5.3舒适性与人机工程学的结合
5.4智能化与技术的应用
总结:
单片机控制的矩阵键盘是一种常见的输入方式,具有结构简单、易于实现和使用方便等优点。

本文对其原理、设计和应用进行
了详细阐述。

随着技术的不断发展,矩阵键盘在功能、无线化、舒适性和智能化方面也有了较大的进步和应用。

相信在未来,单片机控制的矩阵键盘将继续发挥重要作用,并与其他技术相结合,满足人们对输入设备的更高要求。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
时间
(一)复习引入
复习按键控制单个数码管的显示
(二)新课内容
1、电路原理图设计
矩阵式键盘由P3口控制,P3.0、P3.1、P3.2、P3.3引脚分别控制第一、二、三、四行(从上到下),P3.4、P3.5、P3.6、P3.7引脚分别控制第一、二、三、四列(从左到右)。动态数码管由P0口和P2口控制,P0口控制数码管的数值,P2口控制数码管的位码。
P1.41 1 1 00 0 0 0 第一行有按钮按下0xe0;
P1.51 1 0 10 0 0 0第二行有按钮按下0xd0;
P1.61 0 1 10 0 0 0第三行有按钮按下0xb0;
P1.70 1 1 10 0 0 0第四行有按钮按下0x70;
(4)确定了按钮的行与列,就能确定被按下按钮的位置,将按钮行与列的信息存于同一变量中(c=a|b),此时c变量中存储的就是被按下按键的键码,从键码就能判断按钮的位置,
情感态度价值观:培养学生分析问题、解决问题的能力
重点
能够读懂电路原理图,理解程序含义及步骤
难点
能够根据简单要求学会修改程序,达到教师要求
学情分析
学生思维灵活,课堂气氛活跃,喜欢动手操作
教学方法
一体化教学,着重实操教学
教学准备
根据教学要求做好PPT和演示程序,深入讲解程序
教学过程与内容
设计意图
教学方法
(2)若P1.0至P1.3有引脚产生了电平变化,则说明被拉低电平那一列有按钮被按下,用变量(这里假设是变量a)将IO口的二进制信息存储起来(a=P0;),其中高四位为行信息,所以一定为0,低四位为有效信息(反应出那一列有按钮按下),一共有以下四种情况:
P1.00 0 0 01 1 1 0第一列有按钮按下0x0e;
2、电路控制程讲解(程序太长,略)
3、矩阵式键盘的工作原理
当单片机高电平的引脚与低电平的引脚相连接,高电平的引脚将被低电平的引脚“拉”至低电平。根据这个规律,我们常用“行扫描法”对矩阵式键盘进行识别,过程如下:
(1)引脚P1.4至P1.7输出底电平,引脚 P1.0至P1.3输出高电平(P0=0x0f;),观察引脚 P1.0至P1.3引脚有没有电平变化,若无,则无按键被按下。
P1.10 0 0 01 1 0 1第二列有按钮按下0x0d;
P1.20 0 0 01 0 1 1第三列有按钮按下0x0b;
P1.30 0 0 00 1 1 1第四列有按钮按下0x07;
(3)测出列的位置,我们再测行的位置。引脚P1.4至P1.7输出高电平,引脚 P1.0至P1.3输出低电平(P0=0xf0;),这时,有按键按下的那一行将会把该行的引脚电平拉低,将此时的IO口的二进制信息存于另一变量中(假设是变量b).
单片机原理及应用课程教案
课题
矩阵键盘控制数码管
授课人
葛和平
课程类型
一体化课程
范围及性质
普通(校级、市级公开课)
班级
15楼宇班
课时
2课时
上课时间
2016-2017学年第二学期
上课地点
4A-512
教学目标
知识与技能:具备基础的单片机知识,能够读懂电路原理图
过程与方法:培养学生查询资料的能力和团结协作的意识
通过引入现实生活中的实例,引入电路
一体化课堂教学
10分钟
20分钟
50分钟实训
10分钟总结
教学反思
相关文档
最新文档