zoukankan      html  css  js  c++  java
  • STC-51开发板-单片机控制数码管&按键&点阵综合操作

    操作:

    实现按下一个按键,对应的数码管和点阵显示相应的数字

    代码:

    /*  *******************数码管按键综合项目********************* */

    #include <reg52.h>

    int local(unsigned int i);

    sbit ADDR0 = P1^0; sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit ENLED = P1^4;

    sbit key1 = P2^4; sbit key2 = P2^5; sbit key3 = P2^6;

    unsigned char leds[] = {  0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,  0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E };

    unsigned char ledss[10][8]={  {0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55},  {0xE7,0xE3,0xE7,0xE7,0xE7,0xE7,0xE7,0xC3},  {0x81,0x81,0x9F,0x81,0x81,0xF9,0x81,0x81},  {0x81,0x81,0x9F,0x81,0x81,0x9F,0x81,0x81},  {0x8F,0x87,0x93,0x99,0x9C,0x00,0x00,0x9F},  {0x81,0x81,0xF9,0x81,0x81,0x9F,0x81,0x81},  {0x81,0x81,0xF9,0x81,0x81,0x99,0x81,0x81},  {0x83,0x83,0x9F,0x9F,0x9F,0x9F,0x9F,0x9F},  {0x81,0x81,0x99,0x81,0x81,0x99,0x81,0x81},  {0x81,0x81,0x99,0x81,0x81,0x9F,0x81,0x81}, };

    unsigned int locals = 0;

    void main() {

     ADDR3 = 0;  

    ENLED = 0;

     EA = 1;  

    TMOD = 0x01;

     ET0 = 1;  

    TH0 = 0xFC;  

    TL0 = 0x67;  

    TR0 = 1;

     //开启九位输入键,其它键关闭

     P2 = 0xF1;

     while(1)  { 

    //得到键位所在KeyIn1输入列  

     if(key1==0)  

     {    locals = local(1);

       TR0 = 1;      

     }   

    //得到键位所在KeyIn2输入列  

     else if(key2==0)   {    

    locals = local(2);    

    TR0 = 1;    }   

    //得到键位所在KeyIn3输入列  

     else if(key3==0)   {   

     locals = local(3);    

    TR0 = 1;  

     }

     }

     //对应键位赋值数码管

    }

    void InterruptTimer0() interrupt 1 {

     static unsigned char i = 0;  

    TH0 = 0xFC;  TL0 = 0x67;  P0 = 0xFF;  ADDR3 = 0;

     switch(i)  {  

     case 0: ADDR0 = 0;ADDR1 = 0;ADDR2 = 0; P0 = ledss[locals][i];i++;break;  

     case 1: ADDR0 = 1;ADDR1 = 0;ADDR2 = 0; P0 = ledss[locals][i];i++;break;   

    case 2: ADDR0 = 0;ADDR1 = 1;ADDR2 = 0; P0 = ledss[locals][i];i++;break;   

    case 3: ADDR0 = 1;ADDR1 = 1;ADDR2 = 0; P0 = ledss[locals][i];i++;break;   

    case 4: ADDR0 = 0;ADDR1 = 0;ADDR2 = 1; P0 = ledss[locals][i];i++;break;  

     case 5: ADDR0 = 1;ADDR1 = 0;ADDR2 = 1; P0 = ledss[locals][i];i++;break;  

     case 6: ADDR0 = 0;ADDR1 = 1;ADDR2 = 1; P0 = ledss[locals][i];i++;break;   

    case 7: ADDR0 = 1;ADDR1 = 1;ADDR2 = 1; P0 = ledss[locals][i];i++;break;   

    case 8: ADDR3 = 1;ADDR0 = 0;ADDR1 = 0;ADDR2 = 0; P0 = leds[locals];i++;break;    

     case 9: ADDR3 = 1;ADDR0 = 1;ADDR1 = 0;ADDR2 = 1; P0 = leds[locals];i=0;break;   default: break;  } }

    int local(unsigned int i) {

     unsigned int b;  

    //判断当前键位

     switch(i)  {

    //得到键位所在KeyIn1输入列

     case 1:      

    P2 = 0xF7;  //仅仅开启out1    

     if(key1 == 0){      b = 1;     }     

    P2 = 0xFB;  //仅仅开启out2     

    if(key1 == 0){      b = 4;     }   

     P2 = 0xFD;  //仅仅开启out3    

     if(key1 == 0){      b = 7;     }   break;

    //得到键位所在KeyIn2输入列  

     case 2:      

    P2 = 0xF7;  //仅仅开启out1     

    if(key2 == 0){      b = 2;     }     

    P2 = 0xFB;  //仅仅开启out2     

    if(key2 == 0){      b = 5;     }    

    P2 = 0xFD;  //仅仅开启out3    

     if(key2 == 0){      b = 8;     }      

     break;

    //得到键位所在KeyIn3输入列   

    case 3:    

    P2 = 0xF7;  //仅仅开启out1    

     if(key3 == 0){      b = 3;     }    

     P2 = 0xFB;  //仅仅开启out2    

     if(key3 == 0){      b = 6;        }    

    P2 = 0xFD;  //仅仅开启out3     

    if(key3 == 0){      b = 9;     }   

     break;

      default: break;  }

     //重置开启九位输入键,其它键关闭

     P2 = 0xF1;  

    return b; }

  • 相关阅读:
    127.0.0.1:8080 不在以下 request 合法域名列
    [SAP] 34. System Manager
    [SAP] 33. Deployment and instance management
    [Angular] State provider solutions
    [Cloud Architect] 9. Securing Access to Cloud Services
    [Git] Squash commits
    [Angular] Overlay CDK
    [Cloud Architect] 8. Infrastructure as Code
    [DevOps] Terraform Remote State Management
    [DevOps] Using Terraform to Create an EC2 Instance
  • 原文地址:https://www.cnblogs.com/fire-7/p/7456919.html
Copyright © 2011-2022 走看看