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

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

51單片機驅動步進電機protues仿真

作者:佚名   來源:本站原創   點擊數:  更新時間:2013年08月07日   【字體:

電路圖:
protues仿真文件和完整代碼下載地址:http://www.zg4o1577.cn/bbs/dpj-20399-1.html
下面是部分程序代碼:
#include"reg51.h"
#include"intrins.h"
#include"math.h"
#include"absacc.h"
#define  PORTA  XBYTE[0x8500]
#define  PORTB  XBYTE[0x8502]
#define  PORTC  XBYTE[0x8504]
#define  PORTC0 XBYTE[0x8506]
#define nop _nop_()
#define Right_RUN  1
#define Left_RUN  0
unsigned long RunSpeed=76;
unsigned  char  RUNState=1;
sbit  RS=P2^0;
sbit  RW=P2^1;
sbit  E=P2^2;
sbit P17=P1^7;
bit   flag=0;
unsigned char xx[]="speed(n/min):";
unsigned char SD[]="76";
char  state[2][14]={"direction:cw","direction:ccw"};
unsigned char  FLG,INMA=0;
unsigned  char  t,s=0x01;
unsigned  int   a;
main()
{
  void  OPJIAN();
  unsigned char JIAN();
  unsigned char JIANZHI();
   void  speed();
 void  SHOW_LCD();
 void  show_state();
 void  write1();
 void  writ2(unsigned char i);
 void  delay();
 void time();
 void  busy();
 unsigned  char  i;
  i=0x90;
  PORTC0=i;
  i=0x01;
  TMOD=i;
  t=0x10;
  a=0x0f;
  TH0=0x10;
  TL0=0x0f;
  FLG=INMA; 
  SHOW_LCD();
  show_state();
  EA=1;
  ET0=1;
  TR0=1;
while(1)
{
 i=JIAN();
     if(i!=0)
 {
   time();
   time();
  }
 i=JIAN();
 if(i!=0)
 {
 INMA=JIANZHI();
   OPJIAN();
  time();
 }
  if(FLG!=INMA||flag==1)
   {  FLG=INMA;
  SHOW_LCD();
      show_state();
  flag=0;
  }
  }
  }
 void SHOW_LCD()/*lcd設置程序*/
 {
  P1=0x38;
  write1();
  delay();
  P1=0x38;
  write1();
  delay();
  P1=0x38;
  write1();
  delay();
  P1=0x01;
  write1();
 delay();
  P1=0x0f;
  write1();
 delay();
  P1=0x06;
  write1();
  delay();
  P1=0x0c;
  write1();
 
 }
void  show_state()/*狀態顯示程序*/
  {
   unsigned char i=0;
   P1=0x80;
 write1();
 while(xx[i]!='\0')
   {
     writ2(xx[i]);
   i++;
   delay();
   }
   i=0;
  while(SD[i]!='\0')
    {
   writ2(SD[i]);
   delay();
   i++;
 
   }
   P1=0xc0;
  write1();
  i=0;
  if(RUNState==Right_RUN)
  while(state[0][i]!='\0')
    {
    writ2(state[0][i]);
    i++;
   }
 else
   if(RUNState==Left_RUN)
    while(state[1][i]!='\0')
     {
     writ2(state[1][i]);
      i++;
    }
   }
void  write1()/*lcd寫控制字*/
 {
   RS=0;
 RW=0;
 E=0;
 busy();
 E=1;
  }
void  writ2( unsigned char i)/*lcd寫數據*/
 { P1=i;
   RS=1;
 RW=0;
 E=0;
   busy();
 E=1;
 }
 
 void delay()/*延時程序*/
{
  unsigned char  i;
  for(i=0;i<100;i++)
    {
    i=i;
  }
 
}
void time()
{ unsigned char i,j;
for(i=0;i<100;i++)
 {
for(j=0;j<30;j++)
 {
   j=j;
  }
  }
}

void busy()         //判斷LCD是否忙
{   
  do
  {
  P1=0xff;
   RS=0;
     RW=1;
     E=0;
   nop;
   E=1;
   }while(P17==1);
 
 }
 unsigned char JIAN()/*判斷是否有鍵按下*/
 {
  unsigned char  i,j;
     i=0xff;
     PORTA=i;
     time();
     i=0x00;
     PORTB=i;
     j=PORTA;
     j=~j;
     j=j&(0x0f);
     return  j;
 }
unsigned char JIANZHI()/*讀鍵值程序*/
 {
   unsigned i,j,d,k,m=1;
  i=0xfe;
  k=0x01;
  do
  {
  PORTB=i;
  j=PORTA;
  m=j&(0x01);
    if(m==0)
    d=k/2;
  else
     {
  m=j&(0x02);
      if(m==0)
     d=k/2+4;
    else
      {
     m=j&(0x04);
      if(m==0)
      d=k/2+8;
       else
      {
       m=j&(0x08);
                  if(m==0)
      d=k/2+12;
      }
         }
       }
 k=k+2;
 i=i<<1;
 i=i|(0x01);
 }while(m!=0);
 return  d;
}
void OPJIAN() /* 鍵值處理程序*/
{
   switch(INMA)
 {
   case 0x08:  {RUNState=Right_RUN;s=0xf7;}break;
   case 0x09:  {RUNState=Left_RUN;s=0x01;}break;
   case 0x0b:  {
            flag=1;
      t=t-2;
      RunSpeed=5000000/(65536-t*256-a);
      speed();}break;
   case 0x0f:  {flag=1;
                t=t+2;
                 RunSpeed=5000000/(65536-t*256-a);
                 speed();}
 }
}
void speed()/*速度處理程序*/
 {
  unsigned  char  i=0;
  SD[0]=RunSpeed/100+48;
  SD[1]=RunSpeed%100/10+48;
  SD[2]=RunSpeed%10+48;
  }
  void time1(void) interrupt 1 using 2
  {

   TR0=0;
   PORTC=s;
 if(RUNState==0)
 {
 s=(s<<1);
 if(s==0x10)
   s=0x01;

 }
   else
 {
  s=s>>1;
 if(s==0x0f)
 s=0xf7;
  }
   TH0=t;
  TL0=a;
  TR0=1;
  }

   
 
 

關閉窗口

相關文章

主站蜘蛛池模板: 久久综合狠狠综合久久综合88 | 国产精品99久久久久久动医院 | 日本黄色影片在线观看 | 成人免费视频网站在线观看 | 欧美电影免费观看高清 | 中文字幕国产高清 | 亚洲精品成人av久久 | 在线一区| 91麻豆产精品久久久久久夏晴子 | 免费激情网站 | 一区二区在线 | 天天拍天天操 | 久久久精品视频一区二区三区 | 亚洲精品一区二区二区 | 欧美韩一区二区三区 | 玖玖玖在线观看 | 欧美精品一区二区三区在线播放 | 成人福利网 | 国产精品久久国产精品99 gif | 中文字幕在线看第二 | 韩国久久精品 | 综合久久久 | 99精品视频在线观看免费播放 | 情侣av| 国产精品久久久久久久久久久久久 | 日本特黄a级高清免费大片 国产精品久久性 | 日本一道本视频 | 福利视频二区 | 98成人网 | 国产精品精品久久久 | 一区二区三区在线播放视频 | 中文字幕 在线观看 | 一区二区三区免费看 | 午夜精品一区二区三区在线视频 | 青青草华人在线视频 | 亚洲精品电影在线观看 | 欧美一区二区三区在线看 | 久久人人网 | 亚洲精品1区| 黑人中文字幕一区二区三区 | 在线国产视频 |