标题: 关于蓝桥杯单片机组省赛三等奖的代码模组 [打印本页]

作者: hongyangyang    时间: 2022-9-28 18:36
标题: 关于蓝桥杯单片机组省赛三等奖的代码模组
以下是选用stc15f2k60s2的芯片
少了一个矩阵按键,后续会补上

#include<stc15f2k60s2.h>


#define uchar unsigned char
#define uint unsigned int

uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};
uchar yi,er,san,si,wu,liu,qi,ba;

void display1(uchar yi,uchar er);
void display2(uchar san,uchar si);
void display3(uchar wu,uchar liu);
void display4(uchar qi,uchar ba);
void keyscan(void);

void delayms(uint ms);

void allint(void);
void main(void)
{
        allint();
        yi=1;er=2;san=3;si=4;wu=5;liu=6;qi=7;ba=8;
        while(1)
        {
                keyscan();

                display1(yi,er);
                display2(san,si);
                display3(wu,liu);
                display4(qi,ba);
        }
}

void allint(void)
{
        P2 = 0X80;
        P0 = 0XFF;
        P2 = 0XA0;
        P0 = 0X00;
        P2 = 0XC0;
        P0 = 0XFF;
        P2 = 0XFF;
        P0 = 0XFF;
}

void display1(uchar yi,uchar er)
{
        P2 = 0XC0;
        P0 = 0X01;
       
        P2 = 0XFF;
        P0 = tab[yi];
        delayms(1);
       
        P2 = 0XC0;
        P0 = 0X02;
       
        P2 = 0XFF;
        P0 = tab[er];
        delayms(1);
}

void display2(uchar san,uchar si)
{
        P2 = 0XC0;
        P0 = 0X04;
       
        P2 = 0XFF;
        P0 = tab[san];
        delayms(1);
       
        P2 = 0XC0;
        P0 = 0X08;
       
        P2 = 0XFF;
        P0 = tab[si];
        delayms(1);
}

void display3(uchar wu,uchar liu)
{
        P2 = 0XC0;
        P0 = 0X10;
       
        P2 = 0XFF;
        P0 = tab[wu];
        delayms(1);
       
        P2 = 0XC0;
        P0 = 0X20;
       
        P2 = 0XFF;
        P0 = tab[liu];
        delayms(1);
}

void display4(uchar qi,uchar ba)
{
        P2 = 0XC0;
        P0 = 0X40;
       
        P2 = 0XFF;
        P0 = tab[qi];
        delayms(1);
       
        P2 = 0XC0;
        P0 = 0X80;
       
        P2 = 0XFF;
        P0 = tab[ba];
        delayms(1);
}



void keyscan()
{
        if(P30 == 0)
        {
                delayms(5);
                if(P30 == 0)
                {
                        yi = 0;
                }
                while(!P30);
        }
        else if(P31 == 0)
        {
                delayms(5);
                if(P31 == 0)
                {
                        er = 8;
                }
                while(!P31);
        }
        else if(P32 == 0)
        {
                delayms(5);
                if(P32 == 0)
                {
                        san = 10;
                }
                while(!P32);
        }
        else if(P33 == 0)
        {
                delayms(5);
                if(P33 == 0)
                {
                        si = 11;
                }
                while(!P33);
        }
}


void delayms(uint ms)
{
        uint i,j;
        for(i=ms;i>0;i--)
                for(j=845;j>0;j--);
}






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