找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 770|回复: 0
收起左侧

关于蓝桥杯单片机组省赛三等奖的代码模组

[复制链接]
ID:1046164 发表于 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--);
}

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表