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

上传人:b****6 文档编号:8830398 上传时间:2023-02-02 格式:DOCX 页数:17 大小:384.90KB
下载 相关 举报
单片机矩阵键盘与数码管课程设计.docx_第1页
第1页 / 共17页
单片机矩阵键盘与数码管课程设计.docx_第2页
第2页 / 共17页
单片机矩阵键盘与数码管课程设计.docx_第3页
第3页 / 共17页
单片机矩阵键盘与数码管课程设计.docx_第4页
第4页 / 共17页
单片机矩阵键盘与数码管课程设计.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

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

《单片机矩阵键盘与数码管课程设计.docx》由会员分享,可在线阅读,更多相关《单片机矩阵键盘与数码管课程设计.docx(17页珍藏版)》请在冰豆网上搜索。

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

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

矩阵键盘与数码管显示

摘要

矩阵式键盘乃是目前使用较为广泛的一种键盘模式,该系统以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八位微处理器,与IntelMCS-51系列单片机的指令和输出管脚相兼容。

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

其最小系统电路图如下:

单片机最小系统电路图

三、矩阵键盘的电路介绍

AT89C51单片机的并行口P3接4×4矩阵键盘,以P3.0-P3.3作行输入线,以P3.4-P3.7作列输出线;P3口输出按键信息,在数码管上显示每个按键的“0-F”序号。

实际电路图连接如下图所示。

矩阵式键盘电路

四、数码管显示原理及译码电路

本系统输出结果选用8个LED数码管显示。

数码管有共阴共阳之分,本系统采用8段共阴型LED,其原理图如

下图所示:

符号和引脚共阳极共阴极

LED数码管结构

数码管内部有8个发光二极管,公共端由8个发光二极管的阴极并接而成,正常显示时公共端接低电平(GND),各发光二极管是否点亮取决于a-dp各引脚上是否是高电平。

LED数码管的外部有10个引脚,其中3,8脚为公共端也称位选端,其余8个引脚称为段选端,当要使某一位数码管显示某一数字((0-9中的一个)必须在这个数码管的段选端加上与数字显示数字对应的8位段选码(也称字形码),在位选端加上低电平即可。

由于系统要显示的内容比较简单,显示量不多,所以选用数码管既方便又经济。

LED有共阴极和共阳极两种,二极管的阴极连接在一起,通常此公共阴极接地,而共阳极则将发光二极管的阳极连接在一起,接入+5V的电压。

一位显示器由8个发光二极管组成,其中7个发光二极管构成字型“8”的各个笔划(段)a~g,另一个小数点为dp发光二极管。

当在某段发光二极管施加一定的正向电压时,该段笔划即亮;不加电压则暗。

五、时钟电路与复位电路

时钟信号用来提供单片机片内各种微操作的时间基准,时钟信号通常用两种电路形式得到:

内部振荡和外部振荡。

MCS-51单片机内部有一个用于构成振荡器的高增益反向放大器,引脚XTALl和XTAL2分别是此放大电器的输入端和输出端,由于采用内部方式时,电路简单,所得的时钟信号比较稳定,实际使用中常采用这种方式,如图2-2所示在其外接晶体振荡器(简称晶振)或陶瓷谐振器就构成了内部振荡方式,片内高增益反向放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起可构成一个自激振荡器并产生振荡时钟脉冲。

电路图中外接晶体以及电容C2和C3构成并联谐振电路,它们起稳定振荡频率、快速起振的作用,其值为30pF左右,晶振频率选11.0592MHz。

为了初始化单片机内部的某些特殊功能寄存器,必须利用复位电路,复位

后可使CPU及系统各部件处于确定的初始状态,并从初始状态开始正常工作。

单片机的复位是靠外电路来实现的,在正常运行情况下,只要RST引脚上出现两

个机器周期时间以上的高电平,即可引起系统复位,但如果RST引脚上持续为高电平,单片机就处于循环复位状态。

复位后系统将输入/输出(1/0)端口寄存器置为FFH,堆栈指针SP置为07H,SBUF内置为不定值,其余的寄存器全部清0,内部RAM的状态不受复位的影响,在系统上电时RAM的内容是不定的。

复位操作有两种情况,即上电复位和手动(开关)复位。

本系统采用上电复位方式。

电路图中R1和Cl组成上电复位电路,其值R取为1KΩ,C取为10pF。

六、软件系统设计

1、程序流程图:

2、按键检测与数码管显示

P3口的低4位控制行输入,高4位控制列输入当没有按键按下时,P3.0—P3.3与P3.4—P3.7之间开路。

当有键闭合时,与闭合键相连的两条I/O口线之间短路。

判断有无按键按下的方法是:

第一步,置行线P3.0—P3.3为输入状态,从列线P3.4—P3.7输出低电平,读入行线数据,若某一行线为低电平,则该行线上有键闭合。

第二步,列线轮流输出低电平,从行线P3.0—P3.3读入数据,若有某一行为低电平,则对应的列线上有键按下。

综合一二两步的结果,可确定按键编号。

但是按键闭合一次只能进行一次键功能操作,因此须等到按键释放后,再进行键功能操作,否则按一次键,有可能会连续多次进行同样的按键操作。

当确定了是哪一个按键按下后,通过软件程序的设计,返回键盘扫描的键值,转化成十六进制的数据后由PO口输出给数码管显示。

3、LED显示段码表

字型

共阳极段

共阴极段

字型

共阳极段

共阴极段

0

C0H

3FH

9

90H

6FH

1

F9H

06H

A

88H

77H

2

A4H

5BH

B

83H

7CH

3

B0H

4FH

C

C6H

39H

4

99H

66H

D

A1H

5EH

5

92H

6DH

E

86H

79H

6

82H

7DH

F

84H

71H

7

F8H

07H

空白

FFH

00H

8

80H

7FH

P

8CH

73H

 

七、PROTEUS仿真图

 

八、系统的程序:

#include

#defineuintunsignedint

#defineucharunsignedchar

ucharcodetable[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71,0};

ucharcodewe[]={

7,6,5,4,3,2,1,0};

uinti;

sbitdula=P2^6;

sbitwela=P2^7;

ucharnum,num1,temp;

voiddelay(uintz)

{

ucharx,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

 

ucharkeyscan();

voidmain()

{

num=17;//打开时数码管什么也不显示

dula=1;//关闭数码管

P0=0;

dula=0;

//P2=2;

while

(1)

{

num1=keyscan();

for(i=0;i<8;i++)

{

P0=table[num1-1];

P2=we[i];

delay

(1);

}

}

}

ucharkeyscan()//带有返回值的函数

{

P3=0xfe;//检测第一行

temp=P3;

temp=temp&0xf0;

while(temp!

=0xf0)

{

delay(5);//延时去抖

temp=P3;

temp=temp&0xf0;

while(temp!

=0xf0)//不等于0xf0说明确实是有建按下

{

temp=P3;//再读回P3口的值

switch(temp)

{

case0xee:

num=1;

break;

case0xde:

num=2;

break;

case0xbe:

num=3;

break;

case0x7e:

num=4;

break;

}

while(temp!

=0xf0)//检测是否松手,不佳松手检测退不出第二个while循环

{

temp=P3;

temp=temp&0xf0;

}

}

}

P3=0xfd;//检测第二行

temp=P3;

temp=temp&0xf0;

while(temp!

=0xf0)

{

delay(5);//延时去抖

temp=P3;

temp=temp&0xf0;

while(temp!

=0xf0)

{

temp=P3;//读回P3口的值

switch(temp)

{

case0xed:

num=5;

break;

case0xdd:

num=6;

break;

case0xbd:

num=7;

break;

case0x7d:

num=8;

break;

}

while(temp!

=0xf0)//检测是否松手

{

temp=P3;

temp=temp&0xf0;

}

}

}

P3=0xfb;//检测第三行

temp=P3;

temp=temp&0xf0;

while(temp!

=0xf0)

{

delay(5);//延时去抖

temp=P3;

temp=temp&0xf0;

while(temp!

=0xf0)

{

temp=P3;//读回P3口的值

switch(temp)

{

case0xeb:

num=9;

break;

case0xdb:

num=10;

break;

case0xbb:

num=11;

break;

case0x7b:

num=12;

break;

}

while(temp!

=0xf0)//检测是否松手

{

temp=P3;

temp=temp&0xf0;

}

}

}

P3=0xf7;//检测第四行

temp=P3;

temp=temp&0xf0;

while(temp!

=0xf0)

{

delay(5);//延时去抖

temp=P3;

temp=temp&0xf0;

while(temp!

=0xf0)

{

temp=P3;//读回P3口的值

switch(temp)

{

case0xe7:

num=13;

break;

case0xd7:

num=14;

break;

case0xb7:

num=15;

break;

case0x77:

num=16;

break;

}

while(temp!

=0xf0)//检测是否松手

{

temp=P3;

temp=temp&0xf0;

}

}

}

returnnum;

}

实验总结与讨论

通过这次单片机课程设计,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。

创新可以是在原有的基础上进行改进,使之功能不断完善,成为真己的东西。

这个设计过程中,我们由P3.0—P3.3(行)和P3.4—P3.7(列)组成4*4矩阵键盘,P0口接LED数码管静态显示电路。

由于P0口内部无上拉电阻,因此必须外部接上拉电阻,其阻值的选择可以根据LED数码管发光电流及其亮度来决定,参考值为560欧姆。

编写4*4键盘的驱动程序。

编写主程序,当按键按下时,能够在数码管显示器与按键的键值对应的数字。

设计结果能够符合题意,成功完成了此次实习要求,我们不只在乎这一结果,更加在乎的,是这个过程。

这个过程中,我们花费了大量的时间和精力,更重要的是,我们在学会创新的基础上,同时还懂得合作精神的重要性,学会了与他人合作,也非常感谢老师在实习过程中的指导与帮助。

 

实物演示图

序号

器件名称

器件数量

1

AT89S51

1

2

插座

1

3

单片机开发板

1

4

1位数码管

1

5

12MHZ晶振

1

6

30pF电容

2

7

20uF电容

1

8

9脚排阻(470*8)

1

9

按钮

17

10

10K电阻

4

11

1K电阻

1

200欧姆电阻

2

电源插孔

1

电源开关

1

发光二极管

1

下载接口

1

实验电源(220V转5V)

1

元件清单

 

参考文献

[1]51单片机开发与应用.中国石油大学出版社,2009

[2] 谢自美.电子线路设计•实验•测试.:

华中科技大学出版社,2008

[3] 陈小忠.单片机实用接口技术子程序[M].人民邮电出版社,2005

[4] 阎石.数字电子技术基础(第三版).北京:

高等教育出版社,2003

[5] 廖常初.现场总线概述[J].电工技术,2001

[6]电子工业出版社.单片机设计与应用[M].

 

 

单片机原理与应用课程设计

 

题目:

矩阵键盘与数码管显示

专业班级:

电气工程及其自动化09级4班

学号:

20092186

姓名:

温连朋

 

2012年11月27日

..

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1