美文网首页单片机学习16级单片机实践经验分享玩转51单片机
C51单片机实验:[自制抢答器]4*4按键对应八位数码管显示

C51单片机实验:[自制抢答器]4*4按键对应八位数码管显示

作者: Topus | 来源:发表于2018-10-14 18:43 被阅读5次

数码管电路图:

Pasted Graphic.jpg

4*4矩阵式键盘电路原理图:

Pasted Graphic.jpg

代码如下:

#include "reg52.h"
sbit oe = P1^3;
sbit le1 = P1^4;//传值
sbit le2 = P1^5;//片选
char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//共阴极的code
char code select[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
//延时函数
void delay(unsigned int ms){
          unsigned int x,y;
          for(x=0;x<ms;x++)
        for(y=0;y<110;y++);
      }
 //数码管显示函数(传入uint的数字,在八位数码管显示相应的数字)
    void display(unsigned int num){ 
    oe = 0;
    le1 = 0;
        le2 = 0;
    le1 = 1;
    P0 = table[num];
    le1 = 0;
    le2 = 1;
    P0 = select[0];
    le2 = 0;
    delay(5);
    }
      //按键检测函数(按下相应按键显示不同数字)
    void button_check(){
      unsigned int l,h,hex;
      P2 = 0xF0;//列输入,行输出
        delay(2);
        h = P2;
        delay(2);
        P2 = 0x0F;/行输入,列输出
        l = P2;
        delay(2);
        hex = l|h;//两个值相或的交点
        delay(2);
    switch(hex){
          case 0xEE://第一个E标识列,第二个E表示行
                display(0);
                break;
        
            case 0xDE:
                display(1);
                break;
            
            case 0xBE:
                display(2);
                break;
        
            case 0x7E:
                display(3);
                break;
            
            case 0xED:
                display(4);
                break;

            case 0xDD:
                display(5);
                break;
            case 0xBD:
                display(6);
                break;
            
            case 0x7D:
                display(7);
                break;
            
            
            case 0xEB:
                display(8);
                break;

            case 0xDB:
                display(9);
                break;
            
            case 0xBB:
                display(10);
                break;
            
            case 0x7B:
                display(11);
                break;
            
            case 0xE7:
                display(12);
                break;

            case 0xD7:
                display(13);
                break;
            
            case 0xB7:
                display(14);
                break;
            
            case 0x77:
                display(15);
                break;  
      }
     }
            void main(){
    while(1){
        button_check();
        delay(5);

    }
    }

相关文章

  • C51单片机实验:[自制抢答器]4*4按键对应八位数码管显示

    数码管电路图: 4*4矩阵式键盘电路原理图: 代码如下:

  • 实验二—杨金钰—0114

    按键加一4位显示 电教本1601 杨金钰 201612030114 一、实验原理 数码管的数字当按键加一时实现增一...

  • 实验二0206刘春平

    实验二:按键+1四位显示的移植 前期: 小板是四位数码管,大板是八位数码管。数管码的数字移动是数码管以十进制方式进...

  • 实验2-杨鑫鑫-0211

    一、实验目的 将按键加一 4位显示程序移植到小板上 二、实验器材 keil、单片机、PZ-ISP普中自动下载软件。...

  • 实验2—张洁—0127

    一、实验目的 将按键加一4位显示程序移植到小板上 二,实验步骤 1、观察大板与小板的差别 大板的数码管使用了3-8...

  • 实验二-闫荣荣-0134

    一、实验目的 将按键加一 4位显示程序移植到小板上(每按一次,数值增一) 二、实验器材 计算机、单片机、宏晶科技烧...

  • 实验二 赵惠美0222

    一、实验目的 将按键加一4位显示程序移植到小板上(每按一次,数值增一) 二、实验器材 计算机、单片机、普中科技烧录...

  • 实验二 卞小倩0217

    一、实验目的 将按键加一4位显示程序移植到小板上(每按一次,数值增一) 二、实验器材 小板单片机及数据线、Keil...

  • 实验二 薛淼淼0119

    一、实验目的 将按键加一4位显示程序移植到小板上(每按一次,数值增一) 二、实验器材 计算机、单片机、普中科技烧录...

  • 实验2-杨喜栋-0124

    一、实验目的 将按键加一四位显示移植到小板 二、实验步骤 1.大板是共阴极数码管,小板是共阳极数码管,修改字符码 ...

网友评论

    本文标题:C51单片机实验:[自制抢答器]4*4按键对应八位数码管显示

    本文链接:https://www.haomeiwen.com/subject/jeltzftx.html