最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

基于单片机的矩阵键盘操作实验

来源:动视网 责编:小OO 时间:2025-09-24 23:28:22
文档

基于单片机的矩阵键盘操作实验

实验十二基于单片机的矩阵键盘操作实验12.1实验目的1.掌握单片机ATC52与矩阵键盘的接口技术。2.用protues实现该接口的电路设计和程序设计,并进行实时交互仿真。3.ATC52单片机对4×4矩阵键盘进行动态扫描,当按完一次键盘时,可将相应按键值(0-F)实时显示在数码管上。12.2PROTUES电路设计单片机与矩阵键盘的接口电路原理图如图12-1所示。图12-1单片机与矩阵键盘的接口电路原理图12.3实验内容键盘分编码键盘和非编码键盘。键盘上闭合键的识别由专用的硬件编码器实现,
推荐度:
导读实验十二基于单片机的矩阵键盘操作实验12.1实验目的1.掌握单片机ATC52与矩阵键盘的接口技术。2.用protues实现该接口的电路设计和程序设计,并进行实时交互仿真。3.ATC52单片机对4×4矩阵键盘进行动态扫描,当按完一次键盘时,可将相应按键值(0-F)实时显示在数码管上。12.2PROTUES电路设计单片机与矩阵键盘的接口电路原理图如图12-1所示。图12-1单片机与矩阵键盘的接口电路原理图12.3实验内容键盘分编码键盘和非编码键盘。键盘上闭合键的识别由专用的硬件编码器实现,
实验十二  基于单片机的矩阵键盘操作实验

12.1 实验目的

    1. 掌握单片机ATC52与矩阵键盘的接口技术。

    2. 用protues实现该接口的电路设计和程序设计,并进行实时交互仿真。

3. ATC52单片机对4×4矩阵键盘进行动态扫描,当按完一次键盘时,可将相应按键值(0-F)实时显示在数码管上。

12.2 PROTUES电路设计

    单片机与矩阵键盘的接口电路原理图如图12-1所示。

图 12-1 单片机与矩阵键盘的接口电路原理图

12.3 实验内容

键盘分编码键盘和非编码键盘。键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如计算机键盘。在单片机组成的各种系统中,用的最多的是非编码键盘,也有用到编码键盘的。

    1.从PROTUES库中选取元器件

    ① ATC52:单片机;

    ② RES:电阻;

    ③ 7SEG-MPX2-CC-BLUE:七段共阴绿色数码管;

    ④ CAP/CAP-ELEC:电容、电解电容;

    ⑤ CRYSTAL:晶振;

    ⑥ BUTTON:按键。

    2.放置元器件

    3.放置电源和地(终端)

    4.连线

    5.元器件属性设置

    6.电气检测

12.4 程序设计

1. 流程图 

矩阵键盘操作程序流程图如图12-2所示。

图 12-2 矩阵键盘操作程序流程图

2.源程序设计

C程序设计:

#include

#define uint unsigned int

#define uchar unsigned char

sbit we1=P1^0;

uchar code table[]={

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

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

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

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

uchar num,temp,num1;

void delay(uint z)

{

    uint x,y;

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

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

}

uchar keyscan();

void display(uchar aa);

void main()

{

    num=17;

    while(1)

        {

            display(keyscan());

        }

}

void display(uchar aa)

{

            P2=table[aa-1];

            we1=0;        

}

uchar keyscan()

{

            P3=0xfe;

            temp=P3;

            temp=temp&0xf0;

            while(temp!=0xf0)

                {

                    delay(5);

                    temp=P3;

                    temp=temp&0xf0;

                    while(temp!=0xf0)

                    {

                        temp=P3;

                    switch(temp)

                        {

                            case 0xee:num=1;

                                break;

                            case 0xde:num=2;

                                break;

                            case 0xbe:num=3;

                                break;

                            case 0x7e:num=4;

                                break;

                        }

                    while(temp!=0xf0)

                        {

                            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;

                    switch(temp)

                        {

                            case 0xed:num=5;

                                break;

                            case 0xdd:num=6;

                                break;

                            case 0xbd:num=7;

                                break;

                            case 0x7d: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;

                    switch(temp)

                        {

                            case 0xeb:num=9;

                                break;

                            case 0xdb:num=10;

                                break;

                            case 0xbb:num=11;

                                break;

                            case 0x7b: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;

                    switch(temp)

                        {

                            case 0xe7:num=13;

                                break;

                            case 0xd7:num=14;

                                break;

                            case 0xb7:num=15;

                                break;

                            case 0x77:num=16;

                                break;

                        }

                    while(temp!=0xf0)

                        {

                            temp=P3;

                            temp=temp&0xf0;

                        }

                    }

                }

return num;

}

12.5 PROTUES仿真

    矩阵键盘仿真图如图12-3所示。

图 12-3 矩阵键盘与单片机仿真片段图

文档

基于单片机的矩阵键盘操作实验

实验十二基于单片机的矩阵键盘操作实验12.1实验目的1.掌握单片机ATC52与矩阵键盘的接口技术。2.用protues实现该接口的电路设计和程序设计,并进行实时交互仿真。3.ATC52单片机对4×4矩阵键盘进行动态扫描,当按完一次键盘时,可将相应按键值(0-F)实时显示在数码管上。12.2PROTUES电路设计单片机与矩阵键盘的接口电路原理图如图12-1所示。图12-1单片机与矩阵键盘的接口电路原理图12.3实验内容键盘分编码键盘和非编码键盘。键盘上闭合键的识别由专用的硬件编码器实现,
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top