在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)設(shè)計(jì)的帶余數(shù)的簡(jiǎn)易計(jì)算器

            單片機(jī)設(shè)計(jì)的帶余數(shù)的簡(jiǎn)易計(jì)算器

            作者: 時(shí)間:2016-09-29 來(lái)源:網(wǎng)絡(luò) 收藏

              原理圖:

            本文引用地址:http://www.biyoush.com/article/201609/310574.htm

              

             

              

             

              

             

              程序設(shè)計(jì):

              #include

              #include

              #include

              #define uchar unsigned char

              #define uint unsigned int

              sbit BEEP = P3^6; //蜂鳴器驅(qū)動(dòng)線

              unsigned char code disp_code[]={

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

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

              uchar key; //鍵盤值

              uchar num; //掃描位數(shù)

              int temp1=0; //結(jié)果整數(shù)部分

              uint temp2=0; //結(jié)果余數(shù)部分

              int m=0; //

              uchar ss[8]; //

              uchar flag; //運(yùn)算標(biāo)志位

              bit c_flag=0; //輔助標(biāo)志位

              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}; //顯示位數(shù)

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

              延時(shí)子函數(shù)

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

              void delayms(uint ms)

              {

              uchar t;

              while(ms--)

              {

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

              }

              }

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

              x*0.14MS 延時(shí)子函數(shù)

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

              void delay0(uchar x)

              {

              uchar i;

              while(x--)

              {

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

              }

              }

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

              蜂鳴器驅(qū)動(dòng)子函數(shù)

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

              void beep()

              {

              uchar i;

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

              {

              delay0(5);

              BEEP=!BEEP; //BEEP取反

              }

              BEEP=1; //關(guān)閉蜂鳴器

              delayms(250); //延時(shí)

              }

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

              鍵盤掃描子函數(shù)

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

              uchar keyscan()

              {

              uchar scan1,scan2,keycode,j;

              P1=0xf0;

              scan1=P1;

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

              {

              delayms(10); //延時(shí)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);

              }

              }

              }

              }

              else P1=0xff;

              return (16);

              }

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

              顯示數(shù)據(jù)子程序

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

              void display(int xx,uint yy)

              { uchar tt=0;

              uint x1;

              uint y1=yy;

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

              {ss[tt]=yy%10;

              yy=yy/10;

              tt++ ;

              num=tt;

              }

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

              {ss[tt]=16;

              tt++;

              ss[tt]=16;

              tt++;

              }

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

              while(x1!=0)

              {ss[tt]=x1%10;

              x1=x1/10;

              tt++ ;

              num=tt;

              }

              if(xx<0) //顯示符號(hào)

              { 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;

              else P2=_cror_(P2,1);

              }

              }

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

              判鍵是否按下子函數(shù)

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

              void keydown()

              {

              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; //數(shù)碼管顯示"0"

              P1 = 0xff;

              while(1)

              {

              keydown();

              if(flag==5)

              display(temp1,temp2);

              else display(m,0);

              }

              }

              實(shí)物照片:

              



            關(guān)鍵詞: 單片機(jī) 計(jì)算器

            評(píng)論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉