色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          LCD簡(jiǎn)易計(jì)算器

          作者: 時(shí)間:2016-11-21 來(lái)源:網(wǎng)絡(luò) 收藏
          #include
          #define uchar unsigned char
          #define uint unsigned int
          sbit rs=P2^6;
          sbit rw=P2^5;
          sbit en=P2^7;
          sbit k1=P3^0;
          sbit k2=P3^1;
          sbit k3=P3^2;
          sbit k4=P3^3;
          sbit k5=P3^4;
          sbit k6=P3^5;
          sbit k7=P3^6;
          sbit k8=P3^7;
          uchar t,k;
          uint a,b,c;
          uchar code table[]={+,-,*,/};
          void delayms(int z)
          {
          int x,y;
          for(x=z;x>0;x--)
          for(y=110;y>0;y--);
          }
          void write_com(uchar com)
          {
          rs=0;
          rw=0;
          en=0;
          P0=com;
          delayms(10);
          en=1;
          delayms(10);
          en=0;
          delayms(2);
          }
          void write_dat(uchar dat)
          {
          rs=1;
          rw=0;
          en=0;
          P0=dat;
          delayms(10);
          en=1;
          delayms(10);
          en=0;
          delayms(2);
          }
          void write_zfc(uchar *ch)
          {
          while(*ch!=0)
          write_dat(*ch++);
          }
          void init_1602()
          {
          write_com(0x38);
          delayms(5);
          write_com(0x0c);
          delayms(5);
          write_com(0x04);
          delayms(5);
          write_com(0x01);
          delayms(5);
          write_com(0x80+1);
          delayms(5);
          write_zfc("input =");
          delayms(5);
          write_com(0x80+0x40+2);
          delayms(5);
          write_zfc("output ");
          delayms(5);
          }
          void keyscan()
          {
          uchar bai,shi,ge;
          if(k1==0)
          {
          delayms(5);
          while(!k1);
          if(t==0)
          {
          write_com(0x80+8);
          delayms(5);
          write_com(0x0f);
          delayms(5);
          }
          if(t==1)
          {
          write_com(0x80+9);
          delayms(5);
          write_com(0x0f);
          delayms(5);
          }
          if(t==2)
          {
          write_com(0x80+11);
          delayms(5);
          write_com(0x0f);
          delayms(5);
          }
          t++;
          if(t>2)
          t=0;
          }
          if(k2==0)
          {
          delayms(5);
          while(!k2);
          write_com(0x0c);
          t=0;
          switch(k)
          {
          case 1:c=a+b;break;
          case 2:c=a-b;break;
          case 3:c=a*b;break;
          default :c=a/b;break;
          }
          bai=c/100;
          shi=(c-bai*100)/10;
          ge=c;
          write_com(0x80+0x40+9);
          delayms(5);
          write_dat(0x30+bai);
          delayms(5);
          write_com(0x80+0x40+10);
          delayms(5);
          write_dat(0x30+shi);
          delayms(5);
          write_com(0x80+0x40+11);
          delayms(5);
          write_dat(0x30+ge);
          delayms(5);
          }
          if(k3==0)
          {
          delayms(5);
          while(!k3);
          switch(t)
          {
          case 1:a++;
          shi=a/10;
          ge=a;
          write_com(0x80+7);
          delayms(5);
          write_dat(0x30+shi);
          delayms(5);
          write_com(0x80+8);
          delayms(5);
          write_dat(0x30+ge);
          delayms(5);
          write_com(0x80+8);
          break;
          case 2:
          write_com(0x80+9);
          delayms(5);
          write_dat(table[k]);
          write_com(0x80+9);
          k++;
          if(k>3)
          k=0;
          break;
          default :b++;
          shi=b/10;
          ge=b;
          write_com(0x80+10);
          delayms(5);
          write_dat(0x30+shi);
          delayms(5);
          write_com(0x80+11);
          delayms(5);
          write_dat(0x30+ge);
          delayms(5);
          write_com(0x80+11);
          break;
          }
          }
          if(k4==0)
          {
          delayms(5);
          while(!k4);
          switch(t)
          {
          case 1:a--;
          shi=a/10;
          ge=a;
          write_com(0x80+7);
          delayms(5);
          write_dat(0x30+shi);
          delayms(5);
          write_com(0x80+8);
          delayms(5);
          write_dat(0x30+ge);
          delayms(5);
          write_com(0x80+8);
          break;
          case 2:
          write_com(0x80+9);
          delayms(5);
          write_dat(table[k]);
          write_com(0x80+9);
          k++;
          if(k>3)
          k=0;
          break;
          default :b--;
          shi=b/10;
          ge=b;
          write_com(0x80+10);
          delayms(5);
          write_dat(0x30+shi);
          delayms(5);
          write_com(0x80+11);
          delayms(5);
          write_dat(0x30+ge);
          delayms(5);
          write_com(0x80+11);
          break;
          }
          }
          }
          void main()
          {
          init_1602();
          while(1)
          {
          keyscan();
          }
          }



          關(guān)鍵詞: LCD簡(jiǎn)易計(jì)算

          評(píng)論


          技術(shù)專(zhuān)區(qū)

          關(guān)閉