欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
基于單片機AT89C51的直流電機PWM調速控制系統
[打印本頁]
作者:
51黑er
時間:
2015-11-2 14:09
標題:
基于單片機AT89C51的直流電機PWM調速控制系統
仿真整體圖如下:
這是我用洞洞板與腐蝕板制作的樣品,僅供參考
元件
數量(個)
元件
數量(個)
光電耦合器:TLP521-2
1
三極管8550
4
按鍵
5
三極管8050
5
自鎖按鍵
1
1N4007
4
At89s52
1
四位一體數碼管
1
12M晶振
1
電容104
1
Led
1
直流電機
1
電阻1K
3
電容22P
2
電阻10K
1
電解電容47P/16V
2
74LS04
1
下載口
1
以下是Keil 4 編寫的源程序
/************頭文件*********/
#include<reg51.h>
#include<absacc.h>
#include <intrins.h>
/********自定義變量********/
#define uint unsigned int //自定義變量
#define uchar unsigned char
char gw,sw,bw,qw;
uchar j; //定時次數,每次20ms
uchar f=5; //計數的次數
sbit P10=P1^0; //PWM輸出波形1
sbit P11=P1^1; //PWM輸出波形2
sbit P12=P1^2; //正反轉
sbit P13=P1^3; //加速
sbit P14=P1^4; //減速
sbit P15=P1^5; //停止
sbit P16=P1^6; //啟動
uchar k;
uchar t; //脈沖加減
/**************************/*
/*********控制位定義********************/
uchar code smg[12]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x73,0x71};//程序存儲區定義字型碼表
char data led[4]={0x08,0x04,0x02,0x01}; //位碼
uint x; //數碼管顯示的數值
display(); //數碼管顯示
delays(); //延時函數
key();
displays();
/*****************************************/
/***************主函數********************/
main (void)
{
TMOD=0x51; //T0方式1 定時計數T1方式1計數
TH0=0xb1; //裝入初值 20MS
TL0=0xe0;
TH1=0x00; // 計數567
TL1=0x00;
TR0=1; //啟動 t0
TR1=1; //啟動t1
gw=sw=bw=qw=0; //數碼管初始化
P0=0xc0;
P2=1;
while(1) //無限循環
{
display(); //數碼管顯示
key();
}
}
/*****************************************/
/***************數碼管顯示****************/
display()
{
uchar i;
gw=x%10; //求速度個位值,送到個位顯示緩沖區
sw=(x/10)%10; //求速度十位值,送到十位顯示緩沖區
bw=(x/100)%10; //求速度百位值,送到百位顯示緩沖區
qw=x/1000; //求速度千位值,送到千位顯示緩沖區
for(i=0;i<4;)
{
P2=led[i];
if(i==0) //顯示個位
{
P0=smg[gw];
delays();
}
else if(i==1) //顯示十位
{
P0=smg[sw];
delays();
}
else if(i==2) //顯示百位
{
P0=smg[bw];
delays();
}
else if(i==3) //顯示千位
{
if(k==0)//正轉時顯示"三"
{
P0=0x49;
delays();
}
else
{
P0=0x71; //反轉時顯示"F"
}
}
i++;
}
}
/*******************************************************/
/*****************延時函數*************************/
delays()
{
uchar i;
for(i=5000;i>0;i--);
}
/************************************************/
/*********t0定時*中斷函數*************/
void t0() interrupt 1 using 2
{
TH0=0xb1; //重裝t0
TL0=0xe0;
f--;
if(k==0)
{
if(f<t)
P10=1;
else
P10=0;
P11=0;
}
else
{
if(f<t)
P11=1;
else
P11=0;
P10=0;
}
if(f==0)
{
f=5;
}
j++;
if(j==50)
{
j=0;
x=TH1*256+TL1; //t1方式1計數,讀入計數值
TH1=0x00;
TL1=0x00;
x++;
display();
}
}
/****************按鍵掃描**************/
key()
{
if(P12==0) //如果按下,
{
while(!P12) //去抖動
display();
k=~k;
}
if(P16==0) //啟動
{
while(P16==0);
IE=0x8a;
}
if(P13==0) //加速
{
while (P13==0);
t++;
}
if(t>=5)
t=5;
if(P14==0) //減速
{
while(P14==0);
t--;
}
if(t<1)
t=1;
if(P15==0) //停止
{
while(P15==0);
EA=0;
P10=0;
P11=0;
}
}
/******************************************************/
復制代碼
作者:
lxa0
時間:
2015-11-2 20:35
好似H橋有點~~~~~~~~~
作者:
一見你就笑123
時間:
2016-5-2 12:14
謝謝分享
作者:
一見你就笑123
時間:
2016-5-3 11:09
請問大神,H橋左邊的那一部分是什么
作者:
哈哈嘻嘻
時間:
2016-6-30 11:21
有沒有 仿真程序啊 我需要
作者:
qiyezao
時間:
2016-7-1 13:37
請問STC89C52RC可用直接代用嗎?
作者:
G流星雨
時間:
2016-8-16 16:56
樓主的頭文件有嗎?新手借鑒,非常感謝
作者:
松山虎
時間:
2016-11-2 19:20
有沒有排列好的程序圖
作者:
wenwen520
時間:
2016-12-26 15:39
有個仿真圖就好了
作者:
sjg119110
時間:
2016-12-28 13:44
電路感覺有點問題
作者:
大大29
時間:
2017-1-11 04:33
頂一下 謝謝分享
作者:
mslong
時間:
2017-2-14 14:21
c43和141有錯誤
編譯不了
作者:
li3
時間:
2017-3-24 10:48
非常給力
作者:
ca2008
時間:
2017-5-4 17:56
厲害,大神
作者:
鳳凰123
時間:
2017-5-8 20:19
謝謝樓主,非常有用
作者:
館長
時間:
2017-5-12 14:16
不知道怎么下載下來
作者:
1191562740
時間:
2017-6-23 10:13
沒有仿真文件么
作者:
51黑電子會員
時間:
2017-9-20 11:25
程序錯那么多,還敢放出來,真是丟人啊。
作者:
51黑電子會員
時間:
2017-9-20 11:28
程序錯那么多,還敢放出來,哎,還是高級工程師,還不如業余的。
作者:
小小弟弟
時間:
2017-9-23 15:44
可以啊
作者:
GUOXUAN
時間:
2017-11-26 21:46
這個H橋驅動與MCU供電是分開的,還用上了光耦隔離,比較靠普!
作者:
GUOXUAN
時間:
2017-11-26 21:49
正反轉轉,啟動,停止,加速,減速.功能算是比較完善啦,還可以在H橋下端接一個電流取樣電阻,產生壓降電壓給到MCU,輸出過流保護功能.
作者:
mlo
時間:
2018-4-12 11:22
很好 謝謝
作者:
lijun1025
時間:
2018-5-20 22:39
頂一下 謝謝分享
作者:
139584
時間:
2018-11-30 19:57
弱弱問一句P2=0;是什么意思?
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1