欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3930|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

基于c51單片機(jī)的直流電機(jī)調(diào)速代碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:127742 發(fā)表于 2016-6-22 22:55 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#include<reg52.h>  //包含頭文件
#define uint unsigned int  //宏定義
#define uchar unsigned char
                                                                 
sbit KEY1 = P3^0;    // 定義調(diào)速按鍵S1
sbit KEY2 = P3^5;    // 定義調(diào)速按鍵S2
sbit PWM = P1^6;    // 定義調(diào)速端口
sbit PWM2= P1^7
;   
sbit lcden = P1^0;     //定義1602 使能端、RS
sbit lcdrs = P1^1;
uchar code table1[]="+ 3  dang " ;   //定義直流電機(jī)正轉(zhuǎn)檔位顯示
uchar code table2[]="+ 2  dang ";
uchar code table3[]="+ 1  dang ";
uchar code table0[]="+ 0  dang ";
uchar code table11[]="- 3  dang " ;     //定義直流電機(jī)反轉(zhuǎn)檔位顯示
uchar code table22[]="- 2  dang ";
uchar code table33[]="- 1  dang ";
uchar code table00[]="- 0  dang ";
unsigned char CYCLE;  //定義周期
unsigned char PWM_ON ;  //定義正轉(zhuǎn)高電平時(shí)間
unsigned char PWM_DOWN ;  //定義正轉(zhuǎn)高電平時(shí)間
unsigned char PWM_Num2;
unsigned char PWM_Num;
uchar num;
/******************************************************************/
/*                       延時(shí)函數(shù)1 2                           */
/******************************************************************/
void delayms(uint z)
{
uint x,y;
for(x=z;x>0;x--)                                                                                 
for(y=110;y>0;y--);     
}
void delay(unsigned int cnt)
{
while(--cnt);
}
/******************************************************************/
/*                          1602顯示函數(shù)                           */
/******************************************************************/
void write_com(uchar com)
{
lcdrs=0;
P2=com;                                                            
delayms(5);
lcden=1;
delayms(5);
lcden=0;
}
void write_data(uchar date)
{
lcdrs=1;
P2 = date;
delayms(5);
lcden=1;
delayms(5);
lcden=0;
}
void init()   //1602初始化
{
lcden=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);}
void Display0()  //正轉(zhuǎn)檔位零顯示
{
init();
write_com(0x80);
for(num=0;num<11;num++)
{write_data(table0[num]);
delayms(5);}
}     
void Display3()  //正轉(zhuǎn)檔位一顯示
{
init();
write_com(0x80);
for(num=0;num<11;num++)
{write_data(table3[num]);
delayms(5);}
}     
void Display2()  //正轉(zhuǎn)檔位二顯示
{
init();
write_com(0x80);
for(num=0;num<11;num++)
{write_data(table2[num]);
delayms(5);}
}                  
void Display1()   //正轉(zhuǎn)檔位三顯示
{
init();
write_com(0x80);
for(num=0;num<11;num++)
{write_data(table1[num]);
delayms(5);}
}                  
void Display00()   //反轉(zhuǎn)  檔位零顯示  
{
init();
write_com(0x80);
for(num=0;num<11;num++)
{write_data(table00[num]);
delayms(5);}
}     
void Display33()  //反轉(zhuǎn)檔位一顯示
{
init();
write_com(0x80);
for(num=0;num<11;num++)
{write_data(table33[num]);
delayms(5);}
}     
void Display22()  //反轉(zhuǎn)檔位二顯示
{
init();
write_com(0x80);
for(num=0;num<11;num++)
{write_data(table22[num]);
delayms(5);}
}                  
                     
void Display11()  //反轉(zhuǎn)檔位三顯示
{
init();
write_com(0x80);
for(num=0;num<11;num++)
{write_data(table11[num]);
delayms(5);}
}                  
      
/******************************************************************/
/*                          主函數(shù)                                */
/******************************************************************/
main()
{
TMOD |=0x01;           //定時(shí)器設(shè)置
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;  //定時(shí)1ms
IE= 0x82;               //打開中斷
TR0=1;                 //啟動(dòng)定時(shí)器0
CYCLE = 10;            //時(shí)間可以調(diào)整
P3=0x21;
while(1)
{
if(!KEY1)               //按下按鍵S1  使直流電機(jī)正轉(zhuǎn)
{
delay(10000);
  if(!KEY1)
    {
         PWM2=0;
         PWM_Num2=0;
         PWM_ON=11;
      PWM_Num++;
         if(PWM_Num==4)
PWM_Num=0;
     switch(PWM_Num)  //調(diào)制占空比
{
      case 0:Display0();PWM_DOWN=10;break; //占空比為0
      case 1:Display1();PWM_DOWN=1;break;  //占空比為90
case2:Display2();PWM_DOWN=5;break;   //占空比為50%
case 3:Display3();PWM_DOWN=8;break;  //占空比為20%
default:break;
      }
         if(PWM_Num==4)
PWM_Num=0;
   }
  }
if(!KEY2)               ///按下按鍵S2  使直流電機(jī)反轉(zhuǎn)
{
delay(10000);
if(!KEY2)
  {
PWM=0;
PWM_DOWN=11       ;
PWM_Num=0;
  PWM_Num2++;
if(PWM_Num2==4)
PWM_Num2=0;
  switch(PWM_Num2)  //調(diào)制占空比
{
      case 0:Display00();PWM_ON=10;break; //占空比為0
      case 1:Display11();PWM_ON=1;break;  //占空比為90
      case 2:Display22();PWM_ON=5;break;  //占空比為50
      case 3:Display33();PWM_ON=8;break;  //占空比為20
      default:break;
      }
if(PWM_Num2==4)
PWM_Num2=0;
   }
  }
}                                                         
}

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表