乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      求指導(dǎo) 51單片機(jī)控制 57步進(jìn)電機(jī)|我愛單片機(jī)

       tmxk0574 2019-02-06
      灌水-------------------------u哦發(fā)哦

      N年以前寫的步進(jìn)電機(jī)測(cè)試程序,可以供樓主可以參考參考

      #include<reg52.h>
      #define uchar unsigned char
      #define uint unsigned int
      sbit CP=P1^4;           //脈沖輸出
      sbit DIR=P1^5;         //方向控制
      sbit enable=P1^6;     //松電機(jī)或緊電機(jī)

      sbit key_dir=P3^3;    //正反轉(zhuǎn)按鍵
      sbit key_up=P3^4;      //轉(zhuǎn)速增加按鍵
      sbit key_down=P3^2;     //轉(zhuǎn)速降低按鍵
      sbit key_en=P2^7;         //使能驅(qū)動(dòng)器按鍵

      sbit lcd_rs=P3^7;   //LCD1602 Port
      sbit lcden=P3^5;
      sbit lcd_rw=P3^6;

      uchar table1[]='SPEED:';
      uchar table2[]='DIR:';
      uchar table3[]='ENABLE ';
      uchar table4[]='DISABLE';
      uchar table5[]='HAND   ';
      uchar num=0,num1=0,speed=140,aa=0;
      uchar temp=12;
      void delay(uint x)
      {
          uint a,b;
          for(a=x;a>0;a--)
              for(b=10;b>0;b--);
      }


      void delay1(uint z)
      {
          uchar i,j;
          for(i=z;i>0;i--)
           for(j=110;j>0;j--);
      }

      void write_com(uchar com)     //寫命令,RS=0
      {
          P0=com;
          lcd_rs=0;
          lcden=0;
          delay(10);
          lcden=1;
          delay(10);
          lcden=0;
          
      }

      void write_data(uchar dat)       //寫數(shù)據(jù),RS=1
      {
          P0=dat;
          lcd_rs=1;
          lcden=0;
          delay(10);
          lcden=1;
          delay(10);
          lcden=0;
          
      }

      void init_LCD()
      {
          lcd_rw=0;
          write_com(0x38);   //顯示模式設(shè)置:16×2顯示,5×7點(diǎn)陣,8位數(shù)據(jù)接口
          delay(20);
          write_com(0x0c);   //顯示模式設(shè)置
          delay(20);
          write_com(0x06);   //顯示模式設(shè)置:光標(biāo)右移,字符不移
          delay(20);
          write_com(0x01);   //清屏幕指令,將以前的顯示內(nèi)容清除
          delay(20);    
      }



      void keyscan()
      {
          if(key_dir==0)
          {
              delay1(5);
              if(key_dir==0)
              {
                  while(!key_dir);
                  delay1(10);
                  while(!key_dir);
                  
                  num++;
                  if(num==2)
                  {
                      num=0;
      }
      }
      }

          if(key_en==0)
          {
              delay1(5);
              if(key_en==0)
              {
                  while(!key_en);
                  delay1(10);
                  while(!key_en);
                  
                  num1++;
                  if(num1==3)
                  {
                      num1=0;
      }
      }
      }

          if((key_down==0)&&((num1==0)||(num1==1)))
          {
              delay1(5);
              if((key_down==0)&&((num1==0)||(num1==1)))
              {
                  while(!key_down);
                  delay1(10);
                  while(!key_down);
                  
                  speed+=10;
                  temp--;
                  if(temp<=1)
                  {
                      temp=1;
      }
                      
                  if(speed>=240)
                  {
                      speed=240;
      }
      }
      }

          if((key_up==0)&&((num1==0)||(num1==1)))
          {
              delay1(5);
              if((key_up==0)&&((num1==0)||(num1==1)))
              {
                  while(!key_up);
                  delay1(10);
                  while(!key_up);
                  speed-=10;
                  temp++;
                  if(temp>=24)
                  {
                      temp=24;
      }
                  if(speed<=20)
                  {
                      speed=20;
      }
      }
      }
      }

      void display(uchar date)
      {
          uchar shi,ge;
          shi=date/10;
          ge=date%10;
          write_com(0x80+0x07);
          write_data(0x30+shi);
          write_data(0x30+ge);
      }



      void main()
      {
          uchar ss;
          init_LCD();
          DIR=1;
          enable=0;
          TMOD=0x01;         //模式設(shè)置,00000001,可見采用的是定時(shí)器0,工作與模式1(M1=0,M0=1)。
          TR0=1;             //打開定時(shí)器
          TH0=0Xff;         //定時(shí)器設(shè)置,每隔100微秒發(fā)起一次中斷。
          TL0=0Xda;
          ET0=1;             //開定時(shí)器0中斷
          EA=1;             //開總中斷    
          
          while(1)
          {
              keyscan();
              
                  write_com(0x80);  //設(shè)置所要顯示字符的位置為第一行第一列
          ss=0;
          while(table1[ss]!='\0')    //只要沒有寫到結(jié)束標(biāo)志,就繼續(xù)寫
              {                    //這是寫字符的第一種方法,用while循環(huán)。
              write_data(table1[ss]);
              ss++;
              }
          write_com(0x80+0x40);  //設(shè)置第二行首字符顯示的位置,為第二行,第一列
          ss=0;
          for(ss=0;ss<4;ss++)       //總共要顯示13個(gè)字符,故循環(huán)十三次。
          {                       //這是寫字符的第二種方法,用for循環(huán)
          write_data(table2[ss]);
          delay(10);

          }        
          
                      if(num==0)
              {
                  DIR=0;
          write_com(0x80+0x40+0x05);
          write_data(0x30);
      }
              
              if(num==1)
              {
                  DIR=1;
          write_com(0x80+0x40+0x05);
          write_data(0x31);
         }
            
           if(num1==0)
           {
               enable=0;
               TR0=1;
              
                        write_com(0x80+0x40+0x09);
               ss=0;
               for(ss=0;ss<7;ss++)    
               {
          write_data(table4[ss]);
               }
      }
                  
           if(num1==1)
           {
               enable=1;
              
                write_com(0x80+0x40+0x09);
               ss=0;
               for(ss=0;ss<7;ss++)    
               {
          write_data(table3[ss]);
               }

              
      }
        
           if(num1==2)
           {
               enable=1;
               TR0=0;
              
                write_com(0x80+0x40+0x09);
               ss=0;
               for(ss=0;ss<7;ss++)    
               {
          write_data(table5[ss]);
               }
          
               if((key_up==0)&&(num1==2))
               {
                   delay1(5);
                   if((key_up==0)&&(num1==2))
                   {
                       TR0=1;
                       DIR=1;
                           write_com(0x80+0x40+0x05);
                  write_data(0x31);
                       while(!key_up);
      }
            else
                  {
                      TR0=0;
      }
      }
                       if((key_down==0)&&(num1==2))
               {
                   delay1(5);
                   if((key_down==0)&&(num1==2))
                   {
                       TR0=1;
                       DIR=0;
                        write_com(0x80+0x40+0x05);
                  write_data(0x30);
                       while(!key_down);
                      
      }
            else
                  {
                      TR0=0;
      }
      }


      }

      display(temp);
        }
      }

      void time0() interrupt 1
      {    TH0=0Xff;
          TL0=0xda;  //b4
          aa++;
          if(aa==speed)
          {
              CP=0;
              aa=0;
      }
        else
          {
              CP=1;
          }

      }

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多