久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2119|回復: 1
收起左側

基于c51單片機數碼管的簡易計算器

[復制鏈接]
ID:629640 發表于 2019-10-24 20:13 | 顯示全部樓層 |閱讀模式
為學校實驗周做的簡單計算器,希望對大家有用,第一次發帖,不喜勿噴。

#include <reg51.h>

#define uchar unsigned char
#define uint unsigned int
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x40};
long n=0,g,s,b,q,w1,w2,w3,w4,fuhao,n1,n2;
void delayms(uint xms)
{
uint i,j;
  for(i=xms;i--;i>0)
   for(j=110;j--;j>0);
}
void display(uchar g,uchar s,uchar b,uchar q,uchar w1,uchar w2,uchar w3,uchar w4)
{
  long n4;
  if(n>=0)
  {
   if(n==0)
   {
   P0=0Xfe;
   P1=table[0];
   }
   if(n>0&n<=10)
   {
    g=n%10;
    P1=table[g];
    P0=0xfe;
    delayms(1);
   }
   if(n>=10&n<100)
   {
    g=n%10;
    P1=table[g];
    P0=0xfe;
    delayms(1);
    s=n/10%10;
    P1=table[s];
    P0=0xfd;
    delayms(1);
   }
   if(n>=100&n<1000)
   {
    g=n%10;
    P1=table[g];
    P0=0xfe;
    delayms(1);
    s=n/10%10;
    P1=table[s];
    P0=0xfd;
    delayms(1);
    b=n/100%10;
    P1=table[b];
    P0=0xfb;
    delayms(1);
   }
   if(n>=1000&n<10000)
    {
    g=n%10;
    P1=table[g];
    P0=0xfe;
    delayms(1);
    s=n/10%10;
    P1=table[s];
    P0=0xfd;
    delayms(1);
    b=n/100%10;
    P1=table[b];
    P0=0xfb;
    delayms(1);
    q=n/1000%10;
    P1=table[q];
    P0=0xf7;
    delayms(1);
    }
   if(n>=10000&n<100000)
   {
    g=n%10;
    P1=table[g];
    P0=0xfe;
    delayms(1);
    s=n/10%10;
    P1=table[s];
    P0=0xfd;
    delayms(1);
    b=n/100%10;
    P1=table[b];
    P0=0xfb;
    delayms(1);
    q=n/1000%10;
    P1=table[q];
    P0=0xf7;
    delayms(1);
    w1=n/10000%10;
    P1=table[w1];
    P0=0xef;
    delayms(1);
   }
   if(n>=100000&n<1000000)
   {
    g=n%10;
    P1=table[g];
    P0=0xfe;
    delayms(1);
    s=n/10%10;
    P1=table[s];
    P0=0xfd;
    delayms(1);
    b=n/100%10;
    P1=table[b];
    P0=0xfb;
    delayms(1);
    q=n/1000%10;
    P1=table[q];
    P0=0xf7;
    delayms(1);
    w1=n/10000%10;
    P1=table[w1];
    P0=0xef;
    delayms(1);
    w2=n/100000%10;
    P1=table[w2];
    P0=0xdf;
    delayms(1);
   }
   if(n>=1000000&n<10000000)
   {
    g=n%10;
    P1=table[g];
    P0=0xfe;
    delayms(1);
    s=n/10%10;
    P1=table[s];
    P0=0xfd;
    delayms(1);
    b=n/100%10;
    P1=table[b];
    P0=0xfb;
    delayms(1);
    q=n/1000%10;
    P1=table[q];
    P0=0xf7;
    delayms(1);
    w1=n/10000%10;
    P1=table[w1];
    P0=0xef;
    delayms(1);
    w2=n/100000%10;
    P1=table[w2];
    P0=0xdf;
    delayms(1);
    w3=n/1000000%10;
    P1=table[w3];
    P0=0xbf;
    delayms(1);
   }
   if(n>=10000000&n<100000000)
   {
    g=n%10;
    P1=table[g];
    P0=0xfe;
    delayms(1);
    s=n/10%10;
    P1=table[s];
    P0=0xfd;
    delayms(1);
    b=n/100%10;
    P1=table[b];
    P0=0xfb;
    delayms(1);
    q=n/1000%10;
    P1=table[q];
    P0=0xf7;
    delayms(1);
    w1=n/10000%10;
    P1=table[w1];
    P0=0xef;
    delayms(1);
    w2=n/100000%10;
    P1=table[w2];
    P0=0xdf;
    delayms(1);
    w3=n/1000000%10;
    P1=table[w3];
    P0=0xbf;
    delayms(1);
    w4=n/10000000%10;
    P1=table[w4];
    P0=0x7f;
    delayms(1);
   }
   if(n>=100000000)
   {
   P0=0X00;
   P1=table[0];
   }
  }
  if(n<0)
  {
  uchar fu=10;
  n4=0-n;
  if(n4<10)
   {
    g=n4%10;
    P1=table[g];
    P0=0xfe;
    delayms(1);
    P0=0xfd;
    P1=0x40;
    delayms(1);
   }
   if(n4>=10&n4<100)
   {
    g=n4%10;
    P1=table[g];
    P0=0xfe;
    delayms(1);
    s=n4/10%10;
    P1=table[s];
    P0=0xfd;
    delayms(1);
    P1=0x40;
    P0=0xfb;
    delayms(1);
   }
   if(n4>=100&n4<1000)
   {
    g=n4%10;
    P1=table[g];
    P0=0xfe;
    delayms(1);
    s=n4/10%10;
    P1=table[s];
    P0=0xfd;
    delayms(1);
    b=n4/100%10;
    P1=table[b];
    P0=0xfb;
    delayms(1);
    P1=0x40;
    P0=0xf7;
    delayms(1);
   }
   if(n4>=1000&n4<10000)
    {
    g=n4%10;
    P1=table[g];
    P0=0xfe;
    delayms(1);
    s=n4/10%10;
    P1=table[s];
    P0=0xfd;
    delayms(1);
    b=n4/100%10;
    P1=table[b];
    P0=0xfb;
    delayms(1);
    q=n4/1000%10;
    P1=table[q];
    P0=0xf7;
    delayms(1);
    P1=0x40;
    P0=0xef;
    delayms(1);
    }
   if(n4>=10000&n4<100000)
   {
    g=n4%10;
    P1=table[g];
    P0=0xfe;
    delayms(1);
    s=n4/10%10;
    P1=table[s];
    P0=0xfd;
    delayms(1);
    b=n4/100%10;
    P1=table[b];
    P0=0xfb;
    delayms(1);
    q=n4/1000%10;
    P1=table[q];
    P0=0xf7;
    delayms(1);
    w1=n4/10000%10;
    P1=table[w1];
    P0=0xef;
    delayms(1);
    P1=0x40;
    P0=0xdf;
    delayms(1);
   }
   if(n4>=100000&n4<1000000)
   {
    g=n4%10;
    P1=table[g];
    P0=0xfe;
    delayms(1);
    s=n4/10%10;
    P1=table[s];
    P0=0xfd;
    delayms(1);
    b=n4/100%10;
    P1=table[b];
    P0=0xfb;
    delayms(1);
    q=n4/1000%10;
    P1=table[q];
    P0=0xf7;
    delayms(1);
    w1=n4/10000%10;
    P1=table[w1];
    P0=0xef;
    delayms(1);
    w2=n4/100000%10;
    P1=table[w2];
    P0=0xdf;
    delayms(1);
    P1=0x40;
    P0=0xbf;
    delayms(1);
   }
   if(n4>=1000000&n4<10000000)
   {
    g=n4%10;
    P1=table[g];
    P0=0xfe;
    delayms(1);
    s=n4/10%10;
    P1=table[s];
    P0=0xfd;
    delayms(1);
    b=n4/100%10;
    P1=table[b];
    P0=0xfb;
    delayms(1);
    q=n4/1000%10;
    P1=table[q];
    P0=0xf7;
    delayms(1);
    w1=n4/10000%10;
    P1=table[w1];
    P0=0xef;
    delayms(1);
    w2=n4/100000%10;
    P1=table[w2];
    P0=0xdf;
    delayms(1);
    w3=n4/1000000%10;
    P1=table[w3];
    P0=0xbf;
    delayms(1);
    P1=0x40;
    P0=0xef;
    delayms(1);
   }
   if(n4>=10000000)
   {
    P0=0X00;
     P1=table[0];
   }
  }
}
void matrixkeyscan()
{
  uchar temp;
  P2=0xfe;
  temp=P2;
  temp=temp&0xf0;
   if(temp!=0xf0)
   {
   delayms(10);
   temp=P2;
   temp=temp&0xf0;
   if(temp!=0xf0)
   {
   temp=P2;
   switch(temp)
    {
    case 0xee:
     n=1+10*n;
     n2=n;
     break;
    case 0xde:
     n=2+10*n;
     n2=n;
     break;
    case 0xbe:
     n=3+10*n;
     n2=n;
     break;
    case 0x7e:
     fuhao=1;
     n1=n;
     n=0;
     break;
    }
    while(temp!=0xf0)
    {
    temp=P2;
    temp=temp&0xf0;
    }
    display(g,s,b,q,w1,w2,w3,w4);
   }
  }
  P2=0xfd;
  temp=P2;
  temp=temp&0xf0;
   if(temp!=0xf0)
   {
   delayms(10);
   temp=P2;
   temp=temp&0xf0;
   if(temp!=0xf0)
   {
   temp=P2;
   switch(temp)
    {
    case 0xed:
     n=4+10*n;
     n2=n;
     break;
    case 0xdd:
     n=5+10*n;
     n2=n;
     break;
    case 0xbd:
     n=6+10*n;
     n2=n;
     break;
    case 0x7d:
     fuhao=2;
     n1=n;
     n=0;
     break;
    }
    while(temp!=0xf0)
    {
    temp=P2;
    temp=temp&0xf0;
    }
    display(g,s,b,q,w1,w2,w3,w4);
   }
  }
  P2=0xfb;
  temp=P2;
  temp=temp&0xf0;
   if(temp!=0xf0)
   {
   delayms(10);
   temp=P2;
   temp=temp&0xf0;
   if(temp!=0xf0)
   {
   temp=P2;
   switch(temp)
    {
    case 0xeb:
     n=7+10*n;
     n2=n;
     break;
    case 0xdb:
     n=8+10*n;
     n2=n;
     break;
    case 0xbb:
     n=9+10*n;
     n2=n;
     break;
    case 0x7b:
     fuhao=3;
     n1=n;
     n=0;
     break;
    }
    while(temp!=0xf0)
    {
    temp=P2;
    temp=temp&0xf0;
    }
    display(g,s,b,q,w1,w2,w3,w4);
   }
  }
  P2=0xf7;
  temp=P2;
  temp=temp&0xf0;
   if(temp!=0xf0)
   {
   delayms(10);
   temp=P2;
   temp=temp&0xf0;
   if(temp!=0xf0)
   {
   temp=P2;
   switch(temp)
    {
    case 0xe7:
     n=0;
     break;
    case 0xd7:
     n=0+10*n;
     n2=n;
     break;
    case 0xb7:
      if(fuhao==1)
      {
      n=n1+n2;
      }
      if(fuhao==2)
      {
      n=n1-n2;
      }
      if(fuhao==3)
      {
      n=n1*n2;
      }
      if(fuhao==4)
      {
      n=n1/n2;
      }
      break;
     case 0x77:
      fuhao=4;
      n1=n;
      n=0;
      break;
    }
    while(temp!=0xf0)
    {
    temp=P2;
    temp=temp&0xf0;
    }
    display(g,s,b,q,w1,w2,w3,w4);
   }
  }
}
void main()
{
while(1)
  {
  display(g,s,b,q,w1,w2,w3,w4);
  matrixkeyscan();
  }
}
回復

使用道具 舉報

ID:1 發表于 2019-10-25 15:54 | 顯示全部樓層
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产福利二区 | 精品国产一区二区三区四区在线 | 欧美做暖暖视频 | 免费高潮视频95在线观看网站 | 国内自拍偷拍视频 | 国内精品视频 | 欧美一区二区三区在线视频 | 一级在线观看 | 在线a视频网站 | 久草网站 | 国产精品片aa在线观看 | 亚洲一区黄色 | 久久免费高清视频 | 欧美精品一区二区三区四区五区 | 成人精品一区二区 | 国产精品3区 | 久久久国产一区 | 亚洲成av人片在线观看 | 91在线精品秘密一区二区 | 国产精品高清在线 | 日韩精品久久 | 欧美99久久精品乱码影视 | 在线观看成人小视频 | 亚洲一二三区在线观看 | 欧美激情亚洲 | 人人爽人人爽人人片av | 黄色播放| 91视频入口 | 日韩欧美国产精品一区二区 | 天天草狠狠干 | 精品国产一区二区三区四区在线 | 成人av观看 | 久久中文字幕一区 | 亚洲午夜网 | 久久不卡| 99欧美精品 | 亚洲欧美在线观看 | 97色免费视频| 日本精品一区二区三区视频 | 亚洲成人免费视频在线观看 | www成人免费 |