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

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

QQ登錄

只需一步,快速開(kāi)始

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

單片機(jī)數(shù)碼管顯示的簡(jiǎn)易計(jì)算器 按下鍵后數(shù)碼管沒(méi)反應(yīng) 求幫助

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:470938 發(fā)表于 2019-2-15 18:52 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
為什么這個(gè)用數(shù)碼管顯示的簡(jiǎn)易計(jì)算器程序無(wú)法顯示,按下鍵后數(shù)碼管沒(méi)反應(yīng),按等號(hào)直接顯示235
求各位大佬救急
/*
    1 2 3 *
    4 5 6 /
    7 8 9 無(wú)
    + 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)         //沒(méi)有按下符號(hào)鍵
                {
                        a=a*10+x;        
                        output(a,1);
                }
                else
                {
                        b=b*10+x;
                        output(b,1);
                }                        
        }
        else
        {
                flag=1;
        }
}


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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久久精彩视频 | 欧美一区免费 | 国产精品久久久av | 91小视频在线 | 欧美日韩在线一区二区三区 | 国产分类视频 | 欧美精品中文字幕久久二区 | 激情福利视频 | 午夜视频免费网站 | 91国内精品久久 | 国产三级日本三级 | 亚洲人成免费 | 正在播放一区二区 | 午夜小电影 | 精品成人av | 亚洲精品久久久久久久久久久久久 | 国产精彩视频一区 | 一a级片| 日韩资源 | 欧美成人一区二区 | 国产高清精品在线 | 久久91av | 国产精品 欧美精品 | 一级欧美一级日韩片免费观看 | 亚洲精品视频在线看 | 91在线视频播放 | 一区二区三区影院 | 国产精品第2页 | 日韩视频在线一区 | 亚洲综合国产精品 | 91丨九色丨国产在线 | 亚洲成人一区二区 | 亚洲欧洲在线视频 | 91超碰在线观看 | 一级免费毛片 | 成人免费大片黄在线播放 | 欧美精品1区2区3区 精品国产欧美一区二区 | 特黄特色大片免费视频观看 | 99精品一区二区三区 | 岛国av免费观看 | 一本大道久久a久久精二百 国产成人免费在线 |