亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標題:
基于51單片機的直流電機PWM調速控制系統Proteus仿真設計
[打印本頁]
作者:
sunshanle
時間:
2020-1-6 14:22
標題:
基于51單片機的直流電機PWM調速控制系統Proteus仿真設計
本文主要研究了利用
MCS-51
系列單片機控制
PWM
信號從而實現對直流電機轉速進行控制的方法。
本文
中采用了
三極管
組成了
PWM
信號的
驅動
系統,并且對
PWM
信號的原理、產生方法以及如何通過軟件編程對
PWM
信號占空比進行調節,從而控制其輸入信號波形等均作了詳細的闡述。另外,本系統中使用了
霍爾元件
對直流電機的轉速進行測量,經過
處理
后,將測量值送到
液晶顯示出來
。
附件含代碼,仿真。
51hei.png
(22.03 KB, 下載次數: 81)
下載附件
2020-1-6 15:21 上傳
單片機源程序如下:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
void displaym();
sbit en=P2^5; //1602 6管腳
sbit rs=P2^7; //1602端口 4管腳
sbit rw=P2^6;//lcd1602控制端口 5管腳
sbit num1=P1^0; //占空比加1
sbit num2=P1^1; //占空比減一
sbit num3=P1^2; //正傳
sbit num4=P1^3; //反轉
sbit num5=P1^4; //開始停止切換
sbit out=P3^4; //PWM輸出用于正傳
sbit out1=P3^7; //PWM輸出用于反轉
uint zhuansu,flag,z1,z2,m,flag_1,zheng,fan,kai;
void delay(uint z)//延時1ms函數
{
uint x,y;
for(x=0;x<z;x++)
for(y=0;y<110;y++);
}
void write_com(uchar com)//向1602寫一字節(控制指令)
{
rs=0;
P0=com;
delay(5);
en=0;
delay(10);
en=1;
}
void write_data(uchar date)//向1602寫一字節(數據)
{
rs=1;
P0=date;
delay(5);
en=0;
delay(5);
en=1;
}
void init()//初始化函數
{
en=0;
rw=0;
write_com(0x01); //lcd初始化
write_com(0x38); //5X7顯示
write_com(0x0c); //關閉光標
TMOD=0x01; //定時器方式1
TH0=0xdc;
TL0=0x00; //定時器裝入初值
EA=1; //開總中斷
ET0=1; //定時器0開中斷
TR0=1;
EX1=1;
IT1=1; //定時器啟動
TH1=0xfc;
TL1=0x66;//定時100us
ET1=1; //定時器1開中斷
TR1=1;
write_com(0x80);
write_data('V');
write_data(':');
write_com(0x87); //第一行顯示轉速
write_data('r');
write_data('p');
write_data('m');
write_com(0xc0);
write_data('z');
write_data('h');
write_data('a');
write_data('n');
write_data('k');
write_data('o');
write_data('n');
write_data('g');
write_data('b');
write_data('i'); //在第二行顯示zhankongbi:
write_data(':');
displaym();
}
void keyscan() //鍵盤掃描函數
{
if(num1==0)
{
delay(5); //消除抖動
if(num1==0)
{
if(m<=199)
m++;
displaym(); //設定占空比加一
}
}
if(num2==0)
{
delay(5);
if(num2==0)
{
if(m>=1)
m--;
displaym(); //設定占空比減一
}
}
if(num3==0)
{
delay(5);
if(num3==0)
{
zheng=1; //正傳標志置1
fan=0; // 反轉標志置0
}
}
if(num4==0)
{
delay(5);
if(num4==0)
{
zheng=0; //正傳標志置0
fan=1; // 反轉標志置1
}
}
if(num5==0)
{
delay(5);
if(num5==0)
{
while(num5==0) ;
kai=1-kai;
}
}
}
void display()
{
write_com(0x82);
zhuansu=zhuansu*30; //將兩秒內的計數乘以30得到轉每分
if(zhuansu/10000!=0)
write_data(zhuansu/10000+0x30); //如果轉速的萬位不為0 正常顯示否則顯示空格
else
write_data(' ');
if(zhuansu/1000==0)
write_data(' ');
else
write_data(zhuansu%10000%1000+0x30); //如果轉速小于1000 千位為空格 否則正常顯示
if(zhuansu/100==0)
write_data(' ');
else
write_data(zhuansu%10000%1000/100+0x30); //如果轉速小于100 百位為空格 否則正常顯示
if(zhuansu/10==0)
write_data(' ');
else
write_data(zhuansu%10000%1000%100/10+0x30); //如果轉速小于10 十位為空格 否則正常顯示
write_data(zhuansu%10000%1000%100%10+0x30);
write_com(0xd0); //如果沒有這句,當中斷內的顯示函數執行完,就會在轉速的位置顯示占空比數據,導致亂碼
}
void displaym()
{
write_com(0xcb);
if(m/200%10!=0)
write_data(m/200%10+0x30); //如果占空比百位不為0則顯示百位否則顯示空格
else
write_data(' ');
if(m/200%10==0&&m/20%10==0)
write_data(' ');
else
write_data(m/20%10+0x30); //如果占空比小于10 十位正常顯示 否則顯示空格
write_data(m/2%10+0x30); //顯示個位
}
void main()
{
flag_1=0;
m=100; //占空比為100
zhuansu=0; //轉速初值0
flag=0;
zheng=1; //初始化電機正轉動
fan=0;
init(); //初始化
while(1)
{
keyscan(); //鍵盤掃描程序
}
}
void int1()interrupt 2 //外部中斷1脈沖技術記錄電機的轉速 電機轉一圈zhuansu加一
{
zhuansu++;
}
void int2()interrupt 3 //定時器0顯示轉速
{
TH0=0xdc;
TL0=0x00;//定時10ms
flag++;
if(flag==200) //計時到達2s
{
display(); //顯示轉速
zhuansu=0; //轉速置0
flag=0;
}
}
void int3()interrupt 1 //產生PWM
{
TH1=0xff;
TL1=0x00;//定時100us
flag_1++;
if(flag_1>199)
flag_1=1;
if(kai==1) //如果kai==1電機啟動
{
if(zheng==1) //電機正轉
{
if(flag_1<m) //小于占空比m輸出PWM=0輸出電壓為1
{out=0;
out1=1;}
else
{
out=1;
out1=1;
}
}
if(fan==1) //電機反轉
{
if(flag_1<m) //小于占空比m輸出PWM=0輸出電壓為1
{
out=1;
out1=0;
}
else //大于m輸出PWM=1輸出電壓為0
{
out=1;
out1=1;
}
}
}
if(kai==0) //kai=0電機停止轉動
{
out=1;
out1=1;
}
}
復制代碼
全部資料51hei下載地址:
28__proteus仿真.zip
(113.13 KB, 下載次數: 277)
2020-1-6 14:22 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
08__參考文檔.zip
(700.03 KB, 下載次數: 182)
2020-1-6 14:22 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
01__c程序 注釋.zip
(55.35 KB, 下載次數: 209)
2020-1-6 14:22 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
小毛孩子
時間:
2020-2-17 13:32
樓主,這個程序并不能實現調速,但是你的仿真文件里自帶的那個hex文件可以實現,你這個程序是有什么問題嗎
作者:
lindeijun1
時間:
2020-3-2 07:51
謝謝樓主分享!!!
作者:
1023653674
時間:
2020-6-2 08:52
樓主,很棒棒,謝謝你,我要仔細研讀
作者:
lhzsg
時間:
2020-6-8 15:22
愛了愛了,很有參考價值
作者:
cx301
時間:
2020-10-25 23:20
與此文基本一致,
http://www.denmoz.com/bbs/dpj-119249-1.html
,程序有刪減或改動
作者:
最菜召喚師
時間:
2021-6-19 19:11
學到了,謝謝樓主
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1