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

標(biāo)題: 單片機(jī)數(shù)碼管顯示的簡易計算器 按下鍵后數(shù)碼管沒反應(yīng) 求幫助 [打印本頁]

作者: 1209278232    時間: 2019-2-15 18:52
標(biāo)題: 單片機(jī)數(shù)碼管顯示的簡易計算器 按下鍵后數(shù)碼管沒反應(yīng) 求幫助
為什么這個用數(shù)碼管顯示的簡易計算器程序無法顯示,按下鍵后數(shù)碼管沒反應(yīng),按等號直接顯示235
求各位大佬救急
/*
    1 2 3 *
    4 5 6 /
    7 8 9 無
    + 0 - =  
*/
#include<reg52.h>
typedef unsigned char uchar;
typedef unsigned int uint;
sbit LS1=P2^2;
sbit LS2=P2^3;
sbit LS3=P2^4;
uint key,flag=0,x1=0,y1=0,x=10,a=0,b=0,fuhao=0,answer=0,m_1=0,m_2=0,m_3=0,m_4=0;

char led[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f };

void delay_ms(uint time)
{
        int i,j;
        for(i=0;i<100;i++)
        {
                for(j=0;j<time;j++);
        }
}

void output(uint answer,uint a//顯示函數(shù)
{
        if(answer>=0&&answer<=9)
                        {
                                LS1=0;
                                LS2=0;
                                LS3=0;
                                while(1)
                                {
                                        P0=led[answer];
                                        if(a==1)
                                                break;
                                }
                        }                 
                        if(answer>=10&&answer<=99)
                        {
                                m_1=answer%10;
                                m_2=answer/10;
                                while(1)
                                {
                                        LS1=0;LS2=0;LS3=0;
                                        P0=led[m_1];
                                        delay_ms(1);
                                        LS2=0;
                                        P0=led[m_2];
                                        delay_ms(1);
                                        if(a==1)
                                                break;
                                }
                        }
                           if(answer>=100&&answer<=999)
                        {
                                m_1=answer%10;
                                m_3=answer/100;
                                m_2=(answer-m_3*100)/10;
                                while(1)
                                {
                                        LS1=0;LS2=0;LS3=0;
                                        P0=led[m_1];
                                        delay_ms(1);
                                        LS1=1;LS2=0;LS3=0;
                                        P0=led[m_2];
                                        delay_ms(1);
                                        LS1=0;LS2=1;LS3=0;
                                        P0=led[m_3];
                                        delay_ms(1);
                                        if(a==1)
                                                break;
                                }
                        }
                        if(answer>=1000&&answer<=9999)
                        {
                                m_1=answer%10;
                                m_2=(answer/100)%10;
                                m_4=answer/1000;
                                m_3=(answer-m_4*1000)/100;
                                while(1)
                                {
                                        LS1=0;LS2=0;LS3=0;
                                        P0=led[m_1];
                                        delay_ms(1);
                                        LS1=1;LS2=0;LS3=0;
                                        P0=led[m_2];
                                        delay_ms(1);
                                        LS1=0;LS2=1;LS3=0;
                                        P0=led[m_3];
                                        delay_ms(1);
                                        LS1=1;LS2=1;LS3=0;
                                        P0=led[m_4];
                                        delay_ms(1);
                                        if(a==1)
                                                break;
                                }
                        }
}

void computer()
{
        P1=0xf0;
        if(P1!=0xf0)
        {
                delay_ms(100);
                a=P1;
        }
        P1=0x0f;
        if(P1!=0x0f)
        {
                b=P1;
                key=a|b;
        }
        switch(key)
        {
                case 0x77:x=1;flag=0;break;
                case 0x7b:x=2;flag=0;break;
                case 0x7d:x=3;flag=0;break;
                case 0xb7:x=4;flag=0;break;
                case 0xbb:x=5;flag=0;break;
                case 0xbd:x=6;flag=0;break;
                case 0xd7:x=7;flag=0;break;
                   case 0xdb:x=8;flag=0;break;
                case 0xdd:x=9;flag=0;break;
                case 0xeb:x=0;flag=0;break;
                case 0xe7:fuhao=1;break;// +
                case 0xed:fuhao=2;break;// -
                case 0xbe:fuhao=3;break;// *
                case 0xde:fuhao=4;break;// /
                case 0xee:
                                 
                                  if(fuhao==1)
                                  {
                                          answer=a+b;
                                        output(answer,0);        
                                  }
                                  if(fuhao==2)
                                  {
                                          answer=a-b;
                                        output(answer,0);        
                                  }
                                  if(fuhao==3)
                                  {
                                          answer=a*b;
                                        output(answer,0);        
                                  }
                                  if(fuhao==4)
                                  {
                                          answer=a/b;
                                        output(answer,0);        
                                  }
                              break;// =
        }//掃描出鍵的值        
        if(x>=0&&x<=9)
        {
                if(flag==0)         //沒有按下符號鍵
                {
                        a=a*10+x;        
                        output(a,1);
                }
                else
                {
                        b=b*10+x;
                        output(b,1);
                }                        
        }
        else
        {
                flag=1;
        }
}


void main()
{
        while(1)
        {
                computer();
        }
}





歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 一区二区三区精品视频 | 国产高清免费 | 亚洲视频在线观看免费 | 国产成人精品久久二区二区91 | 免费精品 | 国内91在线 | 亚洲高清视频一区二区 | 久久久久亚洲 | 91av亚洲 | aaa精品 | 农夫在线精品视频免费观看 | 精品国产乱码久久久久久老虎 | h网站在线观看 | 亚州影院| 毛片a级| 欧美日韩一区二区三区不卡视频 | 99久久婷婷国产综合精品 | 欧美日韩三区 | 亚洲一区二区av | 免费午夜视频 | 亚洲欧美精品一区 | 免费激情网站 | 69视频在线播放 | 国精产品一区二区三区 | 成人影院一区二区三区 | 国产精品免费一区二区三区四区 | 国产午夜精品一区二区三区在线观看 | 国产中文 | 一区二区三区在线免费观看 | 99re视频在线观看 | 国产美女在线观看 | 免费能直接在线观看黄的视频 | 久草久 | 91av免费看| 久久久久久国产精品免费免费 | 国产精品一区二区三区四区五区 | 少妇精品久久久久久久久久 | 99久久婷婷国产亚洲终合精品 | 亚洲人人 | 精品真实国产乱文在线 | 国产精品美女久久久久aⅴ国产馆 |