找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1312|回復: 0
收起左側

51單片機加法器按鍵清屏再恢復求解

[復制鏈接]
ID:876918 發(fā)表于 2021-2-12 23:51 | 顯示全部樓層 |閱讀模式
屏幕截圖 2021-02-12 141032.png 這是一個加法器,一個5道題,答對一題亮1盞燈,需要在按鍵增加其他功能,目前我完成了一部分功能,我就想請教那個按一下清屏,再按一下恢復那個怎么實現,程序是什么。。。。 阿里旺旺圖片20210208160930.png


程序如下圖
#include<reg51.h>
unsigned char guan[13]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x48,0x00};
unsigned char shu[8]={0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff};
unsigned char ggboy[6]={0xff,0xf7,0xe7,0xc7,0x87,0x07};
unsigned char hang[4]={0x08,0x04,0x02,0x01};
unsigned char lie[4]={0xef,0xdf,0xbf,0x7f};
unsigned char key;
int seg1[6]={1,2,3,4,5,6};
int seg2;
int sum;int n=0,p=9,t=0;
int c=0,d=0,v=0,z=0,num=0;
int n13=1;
void delay(int a)
{int j;
j=a;while(j--);}





void df() interrupt 1    //計時功能
{   int h;
        TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
n=n+1;
        if(n==100)
        {for(h=0;h<=4;h++)
                {P0=shu[6]&ggboy[5];
                        P1=guan[seg1[d]];
                        delay(10000000);
                        P0=shu[7]&ggboy[0];
                        P1=0X00;
      delay(10000000);}n=0;}}












void sdwoig()    //換題按鈕
{ if(v==1)
        {d=d+1;
        if(d==6)
        {d=0;}}
        if(v==2)
        {d=d-1;
  if(d==-1)
  {d=5;}}
        if(v==3)
        {d=d-1;z=z-1;
         }}


        
        
        



void chengjichaxun()        //查成績功能
{int j=1000;
        while(j--)
        {P0=(shu[0]&ggboy[z]);
   P1=0x00;
          delay(1000);
        P0=(shu[1]&ggboy[z]);
   P1=0x5e;
        delay(1000);
         P0=(shu[2]&ggboy[z]);
          P1=guan[z];
                delay(1000);
         P0=(shu[3]&ggboy[z]);
          P1=0x40;
                delay(1000);
         P0=(shu[4]&ggboy[z]);
         P1=0x39;
          delay(1000);
   P0=shu[5]&ggboy[z];
   P1=guan[(5-z)];
                delay(1000);
   P0=shu[6]&ggboy[z];
   P1=0x40;
                delay(1000);
        P0=shu[7]&ggboy[z];
   P1=0x00;
           delay(1000);
           }
         
}


void sg1()         //數碼管顯示內容
{
        P0=(shu[1]&ggboy[z]);
   P1=guan[seg1[d]];
        delay(1000);
         P0=(shu[2]&ggboy[z]);
         P1=guan[10];
                delay(1000);
         P0=(shu[3]&ggboy[z]);
                seg2=seg1[d]-1;
     sum=seg1[d]+seg2;
         P1=guan[seg2];
                delay(1000);
         P0=(shu[4]&ggboy[z]);
         P1=guan[11];
          delay(1000);
   P0=shu[5]&ggboy[z];
   P1=guan[num];
     delay(1000);      }


void ig()        //按鍵掃描與鍵盤功能
{ int a,t;
        P2=0x0f;
        if(P2!=0x0f)
        { delay(10000);
        if(P2!=0x0f)
        {
  for(a=0;a<=3;a++)
        {P2=lie[a];
        for(t=0;t<=3;t++)
        {if((P2&hang[t])==0)
  { key=a+4*t;}}}
         switch(key)
         { case 0:num=9;break;
     case 1:num=8;break;
                 case 2:num=6;break;
                 case 3:num=3;break;
                 case 4:num=7;break;
                 case 5:num=5;break;
                 case 6:num=2;break;
                 case 7:v=2;num=12;break;     //上一題
                 case 8:num=4;break;
                 case 9:num=1;break;
                 case 10:                      //功能一彩燈功能
                 case 11:v=1;num=12;break;     //下一題
                 case 12:num=0;break;
                 case 13:                       //功能二關機重啟
                 case 14:chengjichaxun();break;    //功能三成績查詢
     case 15:   //重做功能




if(num==sum)
{z=z+1;
if(z==6)
{z=1;}P0=(shu[5]&ggboy[z]);}
     delay(1000);

if(num<=9)
{v=1;}
if(v!=0)
{sdwoig();}
}}}}


void main()
{           TMOD=0x11;
                        TH0=(65536-50000)/256;
                        TL0=(65536-50000)%256;
         



            TR0=1;
           
           
            IE=0x9f;
         while(1)
        {sg1();delay(1000);{ig();delay(100);}}}

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表