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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1620|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

基于51單片機(jī)的簡易計算器

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:442545 發(fā)表于 2018-12-11 13:58 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
/******************************************************************
                                                        按鍵說明
                        s6-s8為數(shù)字123,s10-s12為數(shù)字456,s14-s16為789,s19為數(shù)字0,
                        s9為加,s13為減,s17為乘,s18為清零,s20為除,s21為等于。
程序功能:        本程序?yàn)楹喴子嬎闫?梢运阏麛?shù)且正數(shù)類型的運(yùn)算。
                        但是暫時沒有實(shí)現(xiàn)其連算功能,故在每次運(yùn)算之后,請按下清零鍵。
******************************************************************/
#include<reg51.h>

#define uchar unsigned char

uchar a0=16,b0=16,c0=16,d0=16,e0=16,f0=16,wei,temp,key,i,j,k;
uchar jia,jian,cheng,chu,dengyu,jia0,jian0,cheng0,chu0,qingling;
uchar s0,s1,s2,s3,s4,s5; //參加運(yùn)算的各個位
unsigned long qian,hou;//定義參于運(yùn)算的第一個數(shù)和第二個數(shù)。
sbit dula=P2^6;
sbit wela=P2^7;
sbit beep=P2^3;

unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
                        0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};
/*******************************************************************
函數(shù)名:delay
功能:延時
形式參數(shù):i
返回值:無
**********************************************************************/
void delay(uchar i)
{
        for(j=i;j>0;j--)
        for(k=125;k>0;k--);
}

/******************************************************************
函數(shù)名:display
功能:顯示[ ][ ][ ][ ][ ][ ][ ][ ]
           效果[a][b][c][d][e][f][ ][ ]
形式參數(shù):a b c d e f
           若參數(shù)是0-9,a-f正常顯示;
           若參數(shù)是16,不顯示。
返回值:無
*****************************************************************/
void display(uchar a,uchar b,uchar c,uchar d,uchar e,uchar f)
{

   dula=0;
   P0=table[a];
   dula=1;
   dula=0;

   wela=0;
   P0=0xfe;
   wela=1;
   wela=0;
   delay(5);

   P0=table[b];
   dula=1;
   dula=0;

   P0=0xfd;
   wela=1;
   wela=0;
   delay(5);

   P0=table[c];
   dula=1;
   dula=0;

   P0=0xfb;
   wela=1;
   wela=0;
   delay(5);

   P0=table[d];
   dula=1;
   dula=0;

   P0=0xf7;
   wela=1;
   wela=0;
   delay(5);

   P0=table[e];
   dula=1;
   dula=0;

   P0=0xef;
   wela=1;
   wela=0;
   delay(5);

   P0=table[f];
   dula=1;
   dula=0;

   P0=0xdf;
   wela=1;
   wela=0;
   delay(5);
}

void keyscan()
{
  {       
    P3=0xfe;
    temp=P3;
    temp=temp&0xf0;
    if(temp!=0xf0)
    {
      delay(10);
      if(temp!=0xf0)
      {       
        temp=P3;
        switch(temp)
        {
          case 0xee:
               key=1;
                           wei++;
               break;

          case 0xde:
               key=2;
                           wei++;
               break;

          case 0xbe:
               key=3;
                           wei++;
               break;

          case 0x7e:
               jia=1;
               break;
         }
         while(temp!=0xf0)
        {
           temp=P3;
           temp=temp&0xf0;
           beep=0;
         }
         beep=1;
      }
    }
    P3=0xfd;
    temp=P3;
    temp=temp&0xf0;
    if(temp!=0xf0)
    {
      delay(10);
      if(temp!=0xf0)
      {
        temp=P3;
        switch(temp)
        {
          case 0xed:
               key=4;
                           wei++;
               break;

          case 0xdd:
               key=5;
                           wei++;
               break;

          case 0xbd:
               key=6;
                           wei++;
               break;

          case 0x7d:
               jian=1;
               break;
         }
         while(temp!=0xf0)
         {
           temp=P3;
           temp=temp&0xf0;
           beep=0;
         }
         beep=1;
      }
      }
    P3=0xfb;
    temp=P3;
    temp=temp&0xf0;
    if(temp!=0xf0)
    {
      delay(10);
      if(temp!=0xf0)
      {
        temp=P3;
        switch(temp)
        {
          case 0xeb:
               key=7;
                           wei++;
               break;

          case 0xdb:
               key=8;
                           wei++;
               break;
                          
          case 0xbb:
                           key=9;
                           //key=10;
                           wei++;
               break;

          case 0x7b:
                        cheng=1;
                           //key=11;
                           //wei++;
               break;
         }
        while(temp!=0xf0)
         {
           temp=P3;
           temp=temp&0xf0;
           beep=0;
         }
         beep=1;
      }
      }
              P3=0xf7;
    temp=P3;
    temp=temp&0xf0;
    if(temp!=0xf0)
    {
      delay(10);
      if(temp!=0xf0)
      {
        temp=P3;
        switch(temp)
        {
          case 0xe7:
                            qingling=1;
               //key=12;
                          // wei++;
               break;

          case 0xd7:
               key=0;
                           wei++;
               break;

          case 0xb7:
               chu=1;
               break;

          case 0x77:
              dengyu=1;
               break;
         }
         while(temp!=0xf0)
         {
           temp=P3;
           temp=temp&0xf0;
           beep=0;
         }
         beep=1;
      }
    }
  }
}                               

void display0()
{
        if(key!=20)
        {
        switch(wei)
                {
                        case 1: a0=key;
                                        b0=16;
                                        c0=16;
                                        d0=16;
                                        e0=16;
                                        f0=16;
                                        break;
                        case 2: b0=key;
                                        c0=16;
                                        d0=16;
                                        e0=16;
                                        f0=16;
                                        break;
                        case 3: c0=key;
                                        d0=16;
                                        e0=16;
                                        f0=16;
                                        break;
                        case 4: d0=key;
                                        e0=16;
                                        f0=16;
                                        break;
                        case 5: e0=key;
                                        f0=16;
                                        break;
                        case 6: f0=key;
                                        //wei=0;
                                        break;
        }
        key=20;
        }
        display(a0,b0,c0,d0,e0,f0);
        if(a0!=16) s5=a0;
        if(b0!=16) s4=b0;
        if(c0!=16) s3=c0;
        if(d0!=16) s2=d0;
        if(e0!=16) s1=e0;
        if(f0!=16) s0=f0;
}


void main()
{        uchar gongneng,yunsuan;           //功能變量、運(yùn)算變量
          while(1)
        {
                  keyscan();
                gongneng=jia|jian|cheng|chu|dengyu|qingling;
                if(gongneng==0)
                {
                        display0();       
                }
                else
                {         
                    yunsuan=jia|jian|cheng|chu;
                        if(yunsuan)
                        {       
       
                                a0=16;
                                b0=16;
                                c0=16;
                                d0=16;
                                e0=16;
                                f0=16;
                                //wei=0;
                                if(jia)
                                {jia=0;        jia0=1;jian0=0;cheng0=0;chu0=0;}
                                if(jian)
                                {jian=0;jia0=0;jian0=1;cheng0=0;chu0=0;}
                                if(cheng)
                                {cheng=0;jia0=0;jian0=0;cheng0=1;chu0=0;}
                                if(chu)
                                {chu=0;        jia0=0;jian0=0;cheng0=0;chu0=1;}
                                switch(wei)
                                {
                                        case 6:
                                        qian=s5*100000+s4*10000+s3*1000+s2*100+s1*10+s0;break;
                                        case 5:
                                        qian=s5*10000+s4*1000+s3*100+s2*10+s1;break;
                                        case 4:
                                        qian=s5*1000+s4*100+s3*10+s2;break;
                                        case 3:
                                        qian=s5*100+s4*10+s3;break;
                                        case 2:
                                        qian=s5*10+s4;break;
                                        case 1:
                                        qian=s5;break;
                                }
                                wei=0;
                                s0=0;s1=0;s2=0;s3=0;s4=0;s5=0;
                                display(a0,b0,c0,d0,e0,f0);
                                //P1=0x55;
                        }
                        if(dengyu)
                        {
                                 dengyu=0;
                                 //display(16,16,16,16,16,16);
                                 switch(wei)
                                {
                                        case 6:
                                        hou=s5*100000+s4*10000+s3*1000+s2*100+s1*10+s0;break;
                                        case 5:
                                        hou=s5*10000+s4*1000+s3*100+s2*10+s1;break;
                                        case 4:
                                        hou=s5*1000+s4*100+s3*10+s2;break;
                                        case 3:
                                        hou=s5*100+s4*10+s3;break;
                                        case 2:
                                        hou=s5*10+s4;break;
                                        case 1:
                                        hou=s5;break;
                                }
                                wei=0;
                                s0=0;s1=0;s2=0;s3=0;s4=0;s5=0;
                                 if(jia0)
                                 {jia0=0;        hou=qian+hou;}
                                 if(jian0)
                                 {jian0=0;        hou=qian-hou;}
                                 if(cheng0)
                                 {cheng0=0;        hou=qian*hou;}
                                 if(chu0)
                                 {chu0=0;        hou=qian/hou;}
                                 if(hou<10)
                                 {
                                         a0=hou;b0=16;c0=16;d0=16;e0=16;f0=16;
                                 }
                                 else
                                 {
                                         if(hou<100)
                                        {a0=hou/10;b0=hou%10;c0=16;d0=16;e0=16;f0=16;}
                                        else
                                        {
                                                if(hou<1000)
                                                {a0=hou/100;b0=hou%100/10;c0=hou%10;d0=16;e0=16;f0=16;}
                                                else
                                                {
                                                        if(hou<10000)
                                                        {a0=hou/1000;b0=hou%1000/100;c0=hou%100/10;d0=hou%10;e0=16;f0=16;}
                                                        else
                                                        {
                                                                if(hou<100000)
                                                                {a0=hou/10000;b0=hou%10000/1000;c0=hou%1000/100;d0=hou%100/10;e0=hou%10;f0=16;}
                                                                else
                                                                {
                                                                        if(hou<1000000)
                                                                        {a0=hou/100000;b0=hou%100000/10000;c0=hou%10000/1000;d0=hou%1000/100;e0=hou%100/10;f0=hou%10;}
                                                                }
                                                        }
                                                }
                                        }
                                 }
                                 display(a0,b0,c0,d0,e0,f0);
                                 P1=hou;
       
                        }
                        if(qingling)
                        {
                                a0=16;b0=16;c0=16;d0=16;e0=16;f0=16;
                                s0=0;s1=0;s2=0;s3=0;s4=0;s5=0;
                                jia=0;jian=0;cheng=0;chu=0;
                                jia0=0;jian0=0;cheng0=0;chu0=0;
                                qingling=0;dengyu=0;
                                qian=0;hou=0;
                                display(a0,b0,c0,d0,e0,f0);
                        }
                       
                }

        }
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:1 發(fā)表于 2018-12-11 20:47 | 只看該作者
補(bǔ)全原理圖或者詳細(xì)說明一下電路連接即可獲得100+黑幣
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久一二三区 | 亚洲福利网站 | 国产精品一区二区三区久久 | 日韩成人免费视频 | 午夜欧美 | 国产成人免费视频网站高清观看视频 | 日韩精品一区二区三区中文在线 | 久久一区精品 | 99在线观看视频 | 精品欧美一区二区在线观看欧美熟 | 免费视频一区 | 伊人网在线综合 | 国产精品一区二区免费 | 蜜臀久久| 中文字幕在线一区 | 国产在线一区二区三区 | 成人免费观看视频 | 亚洲精品乱码久久久久久按摩观 | 九九九久久国产免费 | 99精品一区 | 日韩成人精品在线观看 | 久久激情网 | 自拍偷拍视频网 | 国产精品久久久久久久久久不蜜臀 | 色偷偷888欧美精品久久久 | 久99久视频 | 欧美日韩视频在线第一区 | 99精品欧美一区二区三区 | 久久av一区二区三区 | 狠狠做深爱婷婷综合一区 | 久久精品国产99国产精品 | 一区二区中文字幕 | 免费在线a视频 | 成人亚洲视频 | 日韩精品久久久久久 | 国产精品日韩在线观看 | 亚洲精品免费在线观看 | 亚洲国产日本 | 中文字幕一区二区三区精彩视频 | 国产精品久久久久久久 | 久久99精品久久久久久国产越南 |