在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 單片機設計的帶余數的簡易計算器

            單片機設計的帶余數的簡易計算器

            作者: 時間:2016-11-17 來源:網絡 收藏
            原理圖:

            本文引用地址:http://www.biyoush.com/article/201611/315353.htm

            程序設計:

            #include

            #include

            #include

            #define uchar unsigned char

            #define uintunsigned int

            sbit BEEP = P3^6;//蜂鳴器驅動

            unsigned char code disp_code[]={

            0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,

            0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf};//數碼管顯示

            ucharkey;//鍵盤值

            uchar num;//掃描位數

            int temp1=0;//結果整數部分

            uint temp2=0;//結果余數部分

            int m=0;//

            uchar ss[8];//

            uchar flag;//運算標志位

            bit c_flag=0;//輔助標志位

            unsigned char code key_code[]={

            0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,

            0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77 }; //鍵盤編碼

            unsigned char code num_code[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; //顯示位數

            /**********************************************************

            延時子函數

            **********************************************************/

            void delayms(uint ms)

            {

            uchar t;

            while(ms--)

            {

            for(t = 0; t < 120; t++);

            }

            }

            /**********************************************************

            x*0.14MS延時子函數

            **********************************************************/

            void delay0(uchar x)

            {

            uchar i;

            while(x--)

            {

            for (i = 0; i<13; i++);

            }

            }

            /**********************************************************

            蜂鳴器驅動子函數

            **********************************************************/

            void beep()

            {

            uchar i;

            for (i=0;i<180;i++)

            {

            delay0(5);

            BEEP=!BEEP;//BEEP取反

            }

            BEEP=1;//關閉蜂鳴器

            delayms(250);//延時

            }

            /**********************************************************

            鍵盤掃描子函數

            **********************************************************/

            ucharkeyscan()

            {

            ucharscan1,scan2,keycode,j;

            P1=0xf0;

            scan1=P1;

            if((scan1&0xf0)!=0xf0)//判鍵是否按下

            {

            delayms(10);//延時30ms

            scan1=P1;

            if((scan1&0xf0)!=0xf0)//二次判鍵是否按下

            {

            P1=0x0f;

            scan2=P1;

            keycode=scan1|scan2;//組合成鍵編碼

            for(j=0;j<=15;j++)

            {

            if(keycode== key_code[j])//查表得鍵值

            {

            key=j;

            return(key);

            }

            }

            }

            }

            elseP1=0xff;

            return (16);

            }

            /*****************************************************

            顯示數據子程序

            ********************************************************/

            void display(int xx,uint yy)

            {uchartt=0;

            uint x1;

            uint y1=yy;

            while(yy!=0)//顯示余數

            {ss[tt]=yy%10;

            yy=yy/10;

            tt++ ;

            num=tt;

            }

            if(y1!=0)//顯示——

            {ss[tt]=16;

            tt++;

            ss[tt]=16;

            tt++;

            }

            x1=abs(xx);//顯示整數

            while(x1!=0)

            {ss[tt]=x1%10;

            x1=x1/10;

            tt++ ;

            num=tt;

            }

            if(xx<0)//顯示符號

            { ss[tt]=16;

            tt++;

            num=tt;}

            for(tt=0;tt

            {

            P0=disp_code[ss[tt]];

            delayms(5);

            if(P2==num_code[num-1])

            P2=0x7f;

            elseP2=_cror_(P2,1);

            }

            }

            /**********************************************************

            判鍵是否按下子函數

            **********************************************************/

            voidkeydown()

            {

            uchar tt=0;

            P1=0xf0;

            if((P1&0xf0)!=0xf0)

            {

            keyscan();

            beep();

            if(key>9&&c_flag==0)

            {switch(key)

            {case 10:flag=1;temp1=m;c_flag=1;m=0;break;

            case 11:flag=2;temp1=m;c_flag=1;m=0;break;

            case 12:flag=3;temp1=m;c_flag=1;m=0;break;

            case 13:flag=4;temp1=m;c_flag=1;m=0;break;

            case 14:m=-m;break;

            case 15:break;

            }

            }

            if(key==14&&c_flag==1)

            m=-m;

            if(key<=9)

            {if(m>=0) m=m*10+key;

            if(m<0) m=m*10-key; }

            if(key<=9&&flag==5)

            {

            flag=0;

            c_flag=0;

            temp1=temp2=0;

            }

            }

            if(key==15)

            {switch(flag)

            {case 1:temp1=temp1+m;break;

            case 2:temp1=temp1-m;break;

            case 3:temp1=temp1*m;break;

            case 4:temp2=abs(temp1)%m;temp1=temp1/m;break;

            default:;

            }

            flag=5;

            m=0;

            }

            }

            void main()

            {

            P0 = 0xc0;

            P2 = 0x7f;//數碼管顯示"0"

            P1 = 0xff;

            while(1)

            {

            keydown();

            if(flag==5)

            display(temp1,temp2);

            else display(m,0);

            }

            }

            實物照片:



            評論


            技術專區(qū)

            關閉