标题: 单片机矩阵按键实验程序流程图与程序 [打印本页]

作者: 2388918962    时间: 2020-5-30 17:00
标题: 单片机矩阵按键实验程序流程图与程序
一、实验目的
1、学习矩阵式键盘工作原理。
2、学习矩阵式的电路设计和程序设计
二、设计要求
1、利用一位数码管显示4*4矩阵盘键号,单片机的p1口的p1.0~p1.7连接4*4矩阵键盘。数码管显示由p0口控制,当4*4矩阵键盘中的某一按键按下时。数码管显示对应键号。
三、实验流程图
四、源程序
  1. #include <reg51.h>
  2. #define uchar unsigned char
  3. sbit L1=P1^0;                                           // 定义列
  4. sbit L2=P1^1;
  5. sbit L3=P1^2;
  6. sbit L4=P1^3;         
  7. uchar dis[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e };              //共阳极字符0~F的段码
  8. unsigned int time;
  9. delay(time) {                            //延时子程序
  10.               unsigned int j;
  11.                  for(j=0;j<time;j++)                 
  12.               { }
  13.               }
  14. main() {              //主程序
  15.               uchar temp ;
  16.               uchar i              ;
  17.               while(1) {
  18. P1=0xef;  //行扫描初值,P1.4=0,P1.5、P1.6、P1.7=1
  19. for(i=0;i<=3;i++) {       //逐行为低,按行扫描,一共4行
  20.    if (L1==0) P0= dis [i*4+0];   //判第1列有无键按下,若有,键值可能为0,4,8.C,送显示
  21.    if (L2==0) P0= dis [i*4+1];   //判第2列有无键按下,若有,键值 可能为1,5,9,d,送显示
  22.    if (L3==0) P0= dis [i*4+2];   //判第3列有无键按下,若有,键值可能为2,6,A,E,送显示                 
  23.     if (L4==0) P0=dis [i*4+3];   //判第4列有无按键按下,若有,键值可能为3,7,b,F,送显示
  24.                 delay(500);
  25.                       temp=P1;                    //读入P1口的状态
  26.                      temp=temp|0x0f;      //置P1.3~P1.0为1,输入状态
  27.                      temp=temp<<1;                   //P1.7~ P1.4左移1位,准备下一行扫描
  28.                      temp=temp|0x0f;                 //置P1.3~P1.0为1,输入状态
  29.                       P1=temp;                            //下一行行扫描值送P1口,为下一行扫描做准备
  30.                      
  31.                  }
  32.     }
  33. }
复制代码

五、实验结论
1.这次试验我通过仿真实现对矩阵式按键有了深入的了解和学习
2.之前的三次实验让我知道了单片机和矩阵式按键的基本操作的同时也积累的- -些有关错误的经验。
3.现在又学习了有关矩阵式按键的实验和仿真,了解实验的工作原理和源程序是成功的必备条件。
4.在下次实验中会减少错误的发生率,也会通过单片机了解更多的知识和电子产品。

全部资料51hei下载地址:
实验五矩阵按键实验.rar (110.94 KB, 下载次数: 20)






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1