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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

基于51的簡(jiǎn)易計(jì)算器

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:355780 發(fā)表于 2018-6-21 10:08 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#include<reg52.h>
#define  uchar unsigned char
#define  ulong  unsigned long

//uchar code num[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};                        //共陰極
               //   0    1           2    3         4    5    6    7    8     9   熄滅  -
//uchar code loc[]={0xff,0xfe,0xfd,0xfb,0xf7};        
//uchar code ero[]={0x79,0x50,0x5c};

uchar code num[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0x40};                        //共陽(yáng)極
uchar code loc[]={~0x00,~0x10,~0x20,~0x40,~0x80,~0x08,~0x04,~0x02,~0x01};        
uchar code ero[]={~0x79,~0x77,~0x3f};

ulong  n=0,n1=0,n2=0;           //賦初值                                                                                                                        

uchar flag=0;               //計(jì)算類型選擇關(guān)鍵字

void delay(int t);
void display(int n);
void error();

main()
{

        while(1)
        {        
                uchar temp;
            //第一行檢測(cè)
            P1=0xfe;
                temp=P1;
                temp=temp&0xf0;
                if(temp!=0xf0)
                {
                        delay(10);
                        temp=P1;
                        temp=temp&0xfe;
                        if(temp!=0xfe)
                        {
                                temp=P1;
                                switch(temp)
                                {
                                        case 0xee:n1=0;n2=0;n=0;flag=0;break;                                //清零
                                        case 0xde:n1=10*n1+0;n=n1;break;                                                             //0
                                        case 0xbe: if(flag==1)n=n2+n1;                                        //=
                                                          if(flag==2)n=n2-n1;
                                                          if(flag==3)n=n2*n1;
                                                          if(flag==4)n=n2/n1;
                                                            n1=0;                        
                                                      break;
                                        case 0x7e:                                                            // +
                                             n2=n1;n1=0;
                                                     flag=1;break;
                                }
                                while(temp!=0xf0)
                                {
                                                temp=P1;
                                                temp=temp&0xf0;

                            }        

                        }


                }
        //掃描第二行
                P1=0xfd;
                temp=P1;
                temp=temp&0xf0;
                if(temp!=0xf0)
                {
                        delay(10);
                        temp=P1;
                        temp=temp&0xf0;
                        if(temp!=0xf0)
                        {
                                temp=P1;
                                switch(temp)
                                {
                                        case 0xed:n1=10*n1+1;n=n1;break;                                //4
                                        case 0xdd:n1=10*n1+2;n=n1;break;                        //5
                                        case 0xbd:n1=10*n1+3;n=n1;break;                                //6
                                        case 0x7d:                                      // -        
                                                          n2=n1;n1=0;
                                                          flag=2;break;

                                }
                                while(temp!=0xf0)
                                {
                                temp=P1;
                                temp=temp&0xf0;
                                }               

                        }


                }
        //掃描第三行
          P1=0xfb;
                temp=P1;
                temp=temp&0xf0;
                if(temp!=0xf0)
                {
                        delay(10);
                        temp=P1;
                        temp=temp&0xf0;
                        if(temp!=0xf0)
                        {
                                temp=P1;
                                switch(temp)
                                {
                                        case 0xeb:n1=10*n1+4;n=n1;break;
                                        case 0xdb:n1=10*n1+5;n=n1;break;
                                        case 0xbb:n1=10*n1+6;n=n1;break;
                                        case 0x7b:                                                     // *                                                                                
                                                      n2=n1;n1=0;
                                                  flag=3;break;
                                }               
                                while(temp!=0xf0)
                                {
                                        temp=P1;
                                        temp=temp&0xf0;
                                }        
                        }
                }
        //掃描第四行
                P1=0xf7;
                temp=P1;
                temp=temp&0xf0;
                if(temp!=0xf0)
                {
                        delay(10);
                        temp=P1;
                        temp=temp&0xf0;
                        if(temp!=0xf0)
                        {
                                temp=P1;
                                switch(temp)
                                {
                                        case 0xe7:n1=10*n1+7;n=n1;break;                           //7
                                        case 0xd7:n1=10*n1+8;n=n1;break;                           //8
                                        case 0xb7:n1=10*n1+9;n=n1;break;                           //9

                                        case 0x77:                                    // /        
                                                      n2=n1;n1=0;
                                                  flag=4;break;                                                        

                                }
                                while(temp!=0xf0)
                                {
                                        temp=P1;
                                        temp=temp&0xf0;
                                }                        
                    }
            }
                display(n);
        }
}


//延時(shí)函數(shù)
void delay(int t)
{
        int x,y;
        for(x=0;x<t;x++)
                for(y=0;y<t;y++);        
}



//數(shù)碼管顯示
void display(int n)
{
                //溢出處理
                uchar g,s,b,q,a,c;
                int abs;
                if((n>999999)||(n<-99999))
                error();

                //正數(shù)
                if((n>=0)&&(n<=999999))               
                {
                                g=n%10;
                                s=n/10%10;
                                b=n/100%10;
                                q=n/1000%10;
                                a=n/10000%10;
                                c=n/100000%10;
                                P0=num[g];
                                delay(5);            
                                P2=loc[4];     
                                delay(2);      
                                P2=loc[0];
                                delay(3);
                                if(n>=10)        
                                {
                                        P0=num[s];
                                        P2=loc[3];
                                        delay(2);
                                        P2=loc[0];
                                        delay(3);
                                }                                            

                                if(n>=100)        
                                {
                                        P0=num[b];
                                        P2=loc[2];
                                        delay(2);
                                        P2=loc[0];
                                        delay(3);
                                }

                                if(n>=1000)        
                                {        
                                        P0=num[q];
                                        P2=loc[1];
                                        delay(2);
                                        P2=loc[0];
                                        delay(3);
                                }
                                        if(n>=10000)        
                                {
                                        P0=num[a];
                                        P2=loc[5];
                                        delay(2);
                                        P2=loc[0];
                                        delay(3);
                                }
                                if(n>=100000)        
                                {
                                        P0=num[c];
                                        P2=loc[6];
                                        delay(2);
                                        P2=loc[0];
                                        delay(3);
                                }
                }

                //負(fù)數(shù)
                if((n<0)&&(n>=-999))
                {
                        abs=-n;
                        g=abs%10;
                        s=abs/10%10;
                        b=abs/100%10;
                        q=abs/1000%10;
                        P0=num[g];        
                        P2=loc[4];
                        delay(2);
                        P2=loc[0];
                        delay(2);
                        if((abs/10%10>0)||(abs/100%10>0))        
                                {
                                        P0=num[s];
                                        P2=loc[3];;
                                        delay(2);
                                        P2=loc[0];
                                        delay(2);
                                if((abs/100%10>0))        
                                        {
                                                P0=num[b];
                                                P2=loc[2];
                                                delay(2);
                                                P2=loc[0];
                                                delay(2);
                                                if((abs/1000%10>0))        
                                                        {        
                                                                P0=num[q];
                                                                P2=loc[1];
                                                                delay(2);
                                                                P2=loc[0];
                                                                delay(2);

                                                        }
                                                else
                                                        {
                                                                P0=num[11];
                                                                P2=loc[1];
                                                                delay(2);
                                                                P2=loc[0];
                                                                delay(2);
                                                        }
                                        }
                                else
                                        {
                                                P0=num[11];
                                                P2=loc[2];
                                                delay(2);
                                                P2=loc[0];
                                                delay(2);
                                        }

                                }
                        else
                                {
                                        P0=num[11];
                                        P2=loc[3];
                                        delay(2);
                                        P2=loc[0];
                                        delay(2);
                                }

                }

}

//溢出顯示
void error()
{
                P2=loc[5];
                P0=ero[0];
                delay(2);
                P2=loc[0];
                delay(3);

                P2=loc[1];
                P0=ero[1];
                delay(2);
                P2=loc[0];
                delay(3);

                P2=loc[2];
                P0=ero[1];
                delay(2);
                P2=loc[0];
                delay(3);

                P2=loc[3];
                P0=ero[2];
                delay(2);
                P2=loc[0];
                delay(3);

                P2=loc[4];
                P0=ero[1];
                delay(2);
                P2=loc[0];
                delay(3);

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美精品一区在线发布 | 99亚洲视频 | 欧美一二区 | 色综合天天天天做夜夜夜夜做 | 一级久久久久久 | 1204国产成人精品视频 | 午夜视频在线 | 狠狠躁夜夜躁人人爽天天高潮 | 午夜精品久久久久久久久久久久 | 亚洲视频免费在线看 | 99精品视频在线观看免费播放 | 91免费观看在线 | 久久久精品一区 | 精品一区二区电影 | 免费亚洲一区二区 | 欧美在线观看一区 | 精品在线一区 | 一区二区在线 | 精品久久久久久久久久久久 | 成人一区二区视频 | 久久精品一区二区三区四区 | 日韩成人在线播放 | 成人一区二区视频 | 亚洲国产成人精品女人久久久 | 91精品国产一区二区在线观看 | 日韩电影免费观看中文字幕 | 日韩一区二区在线视频 | 国产精品自拍视频 | 在线免费小视频 | 国产高清一区二区 | 欧洲成人午夜免费大片 | 中文av在线播放 | av一级| 久久久久久久久久久久一区二区 | 国产精品成人一区二区三区夜夜夜 | 亚洲成人免费av | 在线视频a | 欧美精品在线一区二区三区 | 一级一级一级毛片 | 国产视频一区二区 | 亚洲人成网站777色婷婷 |