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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3758|回復: 0
收起左側

基于c51單片機的直流電機調速代碼

[復制鏈接]
ID:127742 發表于 2016-6-22 22:55 | 顯示全部樓層 |閱讀模式
#include<reg52.h>  //包含頭文件
#define uint unsigned int  //宏定義
#define uchar unsigned char
                                                                 
sbit KEY1 = P3^0;    // 定義調速按鍵S1
sbit KEY2 = P3^5;    // 定義調速按鍵S2
sbit PWM = P1^6;    // 定義調速端口
sbit PWM2= P1^7
;   
sbit lcden = P1^0;     //定義1602 使能端、RS
sbit lcdrs = P1^1;
uchar code table1[]="+ 3  dang " ;   //定義直流電機正轉檔位顯示
uchar code table2[]="+ 2  dang ";
uchar code table3[]="+ 1  dang ";
uchar code table0[]="+ 0  dang ";
uchar code table11[]="- 3  dang " ;     //定義直流電機反轉檔位顯示
uchar code table22[]="- 2  dang ";
uchar code table33[]="- 1  dang ";
uchar code table00[]="- 0  dang ";
unsigned char CYCLE;  //定義周期
unsigned char PWM_ON ;  //定義正轉高電平時間
unsigned char PWM_DOWN ;  //定義正轉高電平時間
unsigned char PWM_Num2;
unsigned char PWM_Num;
uchar num;
/******************************************************************/
/*                       延時函數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顯示函數                           */
/******************************************************************/
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()  //正轉檔位零顯示
{
init();
write_com(0x80);
for(num=0;num<11;num++)
{write_data(table0[num]);
delayms(5);}
}     
void Display3()  //正轉檔位一顯示
{
init();
write_com(0x80);
for(num=0;num<11;num++)
{write_data(table3[num]);
delayms(5);}
}     
void Display2()  //正轉檔位二顯示
{
init();
write_com(0x80);
for(num=0;num<11;num++)
{write_data(table2[num]);
delayms(5);}
}                  
void Display1()   //正轉檔位三顯示
{
init();
write_com(0x80);
for(num=0;num<11;num++)
{write_data(table1[num]);
delayms(5);}
}                  
void Display00()   //反轉  檔位零顯示  
{
init();
write_com(0x80);
for(num=0;num<11;num++)
{write_data(table00[num]);
delayms(5);}
}     
void Display33()  //反轉檔位一顯示
{
init();
write_com(0x80);
for(num=0;num<11;num++)
{write_data(table33[num]);
delayms(5);}
}     
void Display22()  //反轉檔位二顯示
{
init();
write_com(0x80);
for(num=0;num<11;num++)
{write_data(table22[num]);
delayms(5);}
}                  
                     
void Display11()  //反轉檔位三顯示
{
init();
write_com(0x80);
for(num=0;num<11;num++)
{write_data(table11[num]);
delayms(5);}
}                  
      
/******************************************************************/
/*                          主函數                                */
/******************************************************************/
main()
{
TMOD |=0x01;           //定時器設置
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;  //定時1ms
IE= 0x82;               //打開中斷
TR0=1;                 //啟動定時器0
CYCLE = 10;            //時間可以調整
P3=0x21;
while(1)
{
if(!KEY1)               //按下按鍵S1  使直流電機正轉
{
delay(10000);
  if(!KEY1)
    {
         PWM2=0;
         PWM_Num2=0;
         PWM_ON=11;
      PWM_Num++;
         if(PWM_Num==4)
PWM_Num=0;
     switch(PWM_Num)  //調制占空比
{
      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  使直流電機反轉
{
delay(10000);
if(!KEY2)
  {
PWM=0;
PWM_DOWN=11       ;
PWM_Num=0;
  PWM_Num2++;
if(PWM_Num2==4)
PWM_Num2=0;
  switch(PWM_Num2)  //調制占空比
{
      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;
   }
  }
}                                                         
}

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜精品久久久久久久久久久久 | www.久久久久久久久 | 激情欧美日韩一区二区 | 日韩精品一区二区三区久久 | 伊人久久综合影院 | 亚洲国产精品久久久久婷婷老年 | 成年免费在线观看 | 日日天天 | 国产伊人久久久 | 亚洲狠狠丁香婷婷综合久久久 | 狠狠躁夜夜躁人人爽天天高潮 | 亚洲小视频在线播放 | 精品一区二区久久久久久久网站 | 尤物视频在线免费观看 | 国产一区亚洲 | 超级黄色一级片 | 嫩草视频在线看 | 毛片网在线观看 | 亚洲第一福利视频 | 亚洲麻豆| 男人天堂网站 | 高清18麻豆 | 亚洲成人久久久 | 久久精品中文字幕 | 欧美1区2区 | 97国产精品 | 81精品国产乱码久久久久久 | 国产精品久久久久久久久久久久冷 | 成人国产精品免费观看视频 | 亚洲国产精品一区二区三区 | 在线男人天堂 | 亚洲一区二区在线播放 | jizz中国日本| 精品久久久久久18免费网站 | 日本人做爰大片免费观看一老师 | 久久精品二区亚洲w码 | 亚洲欧美中文日韩在线v日本 | 欧美影院 | 九九精品在线 | 国产91亚洲精品一区二区三区 | 久久久国产一区二区三区 |