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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1501|回復: 0
收起左側

單片機數碼管顯示的簡易計算器 按下鍵后數碼管沒反應 求幫助

[復制鏈接]
ID:470938 發表于 2019-2-15 18:52 | 顯示全部樓層 |閱讀模式
為什么這個用數碼管顯示的簡易計算器程序無法顯示,按下鍵后數碼管沒反應,按等號直接顯示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//顯示函數
{
        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();
        }
}
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩国产精品激情在线播放 | 国产一区二区不卡 | 久久久黑人 | 亚洲免费观看视频网站 | 亚洲网站免费看 | 日日摸夜夜爽人人添av | 国产精品爱久久久久久久 | 婷婷综合激情 | 农村真人裸体丰满少妇毛片 | 欧美精三区欧美精三区 | 福利国产| av在线播放不卡 | 国产成人99久久亚洲综合精品 | 国内精品视频一区二区三区 | 久久精品国产99国产精品 | 国产精品av久久久久久久久久 | 一区二区三区国产精品 | av片在线观看网站 | 一级片在线观看 | aⅴ色国产 欧美 | 国产一区二区 | 国产91视频免费 | 免费在线色| 一级片在线播放 | 中文字幕 在线观看 | 亚洲区一区二区 | 中文字幕精品一区二区三区精品 | 欧美亚洲视频 | 天天躁日日躁性色aⅴ电影 免费在线观看成年人视频 国产欧美精品 | 亚洲91精品 | 亚洲免费一区二区 | 中文字幕国产第一页 | 亚洲日本免费 | 亚洲在线中文字幕 | 国产亚洲一区精品 | 你懂的在线视频播放 | 欧美一级免费看 | 欧美三区在线观看 | xx视频在线观看 | 一级看片免费视频 | www.婷婷亚洲基地 |