標(biāo)題:
一個(gè)有proteus,單片機(jī)源程序的電機(jī)測(cè)速文件
[打印本頁]
作者:
fsafa
時(shí)間:
2019-5-9 21:54
標(biāo)題:
一個(gè)有proteus,單片機(jī)源程序的電機(jī)測(cè)速文件
電機(jī)測(cè)速,大家一起學(xué)習(xí)下。仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png
(13.95 KB, 下載次數(shù): 59)
下載附件
2019-5-10 03:47 上傳
單片機(jī)源程序如下:
#include "AT89X51.h"
int delay();
void inti_lcd();
void show_lcd(int);
void cmd_wr();
void ShowState();
void clock(unsigned int Delay) ;
void DoSpeed();
#define RIGHT_RUN 1
#define LEFT_RUN 0
sbit RS=0xA0;
sbit RW=0xA1;
sbit E=0xA2;
char SpeedChar[]="SPEED(n/min):";
char StateChar[]="RUN STATE:";
char STATE_CW[]="CW";
char STATE_CCW[]="CCW";
char SPEED[3]="050";
unsigned int RunSpeed=50; //速度
unsigned char RunState=RIGHT_RUN; //運(yùn)行狀態(tài)
main()
{
TMOD=0x66; //定時(shí)器0,1都為計(jì)數(shù)方式;方式2;
EA=1; //開中斷
TH0=0xff; //定時(shí)器0初值FFH;
TL0=0xff;
ET0=1;
TR0=1;
TH1=0xff; //定時(shí)器1初值FFH;
TL1=0xff;
ET1=1;
TR1=1;
IT0=1; //脈沖方式
EX0=1; //開外部中斷0:加速
IT1=1; //脈沖方式
EX1=1; //開外部中斷1:減速
inti_lcd();
DoSpeed();
ShowState();
while(1)
{
clock(RunSpeed);
P0_1=P0_1^0x01;
}
}
//定時(shí)器0中斷程序:正轉(zhuǎn)
void t_0(void) interrupt 1
{
RunState=RIGHT_RUN;
P0_0=1;
P1=0x01;
cmd_wr();
ShowState();
}
//定時(shí)器1中斷:反轉(zhuǎn)
void t_1(void) interrupt 3
{
RunState=LEFT_RUN;
P0_0=0;
P1=0x01;
cmd_wr();
ShowState();
}
//中斷0:加速程序
void SpeedUp() interrupt 0
{
if(RunSpeed>=12)
RunSpeed=RunSpeed-2;
DoSpeed();
P1=0x01;
cmd_wr();
ShowState();
}
//中斷1:減速程序
void SpeedDowm() interrupt 2
{
if(RunSpeed<=100)
RunSpeed=RunSpeed+2;
DoSpeed();
P1=0x01;
cmd_wr();
ShowState();
}
void inti_lcd()
{
P1=0x38;
cmd_wr();
delay();
P1=0x01; //清除
cmd_wr();
delay();
P1=0x0f;
cmd_wr();
delay();
P1=0x06;
cmd_wr();
delay();
P1=0x0c;
cmd_wr();
delay();
}
void cmd_wr() //寫控制字
{
RS=0;
RW=0;
E=0;
E=1;
}
void show_lcd(int i) //LCD顯示子程序
{
P1=i;
RS=1;
RW=0;
E=0;
E=1;
}
delay();
P1=0x80 | 0x0d;
cmd_wr();
i=0;
while(SPEED[i]!='\0')
{
delay();
show_lcd(SPEED[i]);
i++;
}
delay();
P1=0xC0;
cmd_wr();
i=0;
while(StateChar[i]!='\0')
{
delay();
show_lcd(StateChar[i]);
i++;
}
delay();
P1=0xC0 | 0x0A;
cmd_wr();
i=0;
if(RunState==RIGHT_RUN)
while(STATE_CW[i]!='\0')
{
delay();
show_lcd(STATE_CW[i]);
i++;
}
else
while(STATE_CCW[i]!='\0')
{
delay();
show_lcd(STATE_CCW[i]);
i++;
}
}
void clock(unsigned int Delay) //1ms延時(shí)程序
{ unsigned int i;
for(;Delay>0;Delay--)
for(i=0;i<124;i++);
}
void DoSpeed()
{
SPEED[0]=(1000*6/RunSpeed/100)+48;
SPEED[1]=1000*6/RunSpeed%100/10+48;
SPEED[2]=1000*6/RunSpeed%10+48;
}
復(fù)制代碼
所有資料51hei提供下載:
電機(jī)測(cè)速.zip
(24.26 KB, 下載次數(shù): 67)
2019-5-9 21:53 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
466162659
時(shí)間:
2019-10-12 18:12
非常感謝
作者:
夢(mèng)醒荒唐
時(shí)間:
2019-10-25 21:52
非常感謝!加上閉環(huán)調(diào)速就是我們這次的課后作業(yè)了
作者:
perseverance51
時(shí)間:
2021-10-28 21:56
程序有問題,大家不要浪費(fèi)積分下載,程序源碼有問題(146行處,即使修復(fù)能編譯,但是不能運(yùn)行仿真),除了hex文件能仿真用,編譯的文件不能仿真。
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1