标题:
直流电动机转速控制proteus仿真与代码
[打印本页]
作者:
也尽天明
时间:
2017-5-22 16:18
标题:
直流电动机转速控制proteus仿真与代码
直流电动机转速控制用C写的程序
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
0.png
(30.13 KB, 下载次数: 127)
下载附件
2017-5-22 17:11 上传
0.png
(78 KB, 下载次数: 124)
下载附件
2017-5-22 17:10 上传
单片机源程序如下:
#include<reg51.h>
sbit k1=P3^1;
sbit k2=P3^0;
sbit k3=P3^2;
sbit k4=P3^3;
sbit motor1=P1^1;
unsigned int speed;
unsigned int value;
unsigned int T;
unsigned char code ZF[]=" Speed= "; //8个字符
void INIT();
void INIT0();
void INIT1();
void Timer();
void Timer0();
void delay(unsigned t);
void init_lcd(void);
void writecom(unsigned char com);
void writedate(unsigned char date);
void motor(int speed);
main()
{
int i;
T=0;
speed=0;
INIT();
Timer();
init_lcd();
for(i=0;i<8;i++)
{
writedate(ZF[i]);
}
while(1)
{
if(k1==0)
{
delay(10);
if(k1==0)
{ int a;
motor1=0;
while((a<50)&&k1==0)
{
delay(10);
a++;
}
a=0;
}
motor(speed);
writecom(0x88);
writedate('1');
}
else
{
if(k2==0)
{
delay(10);
if(k2==0)
{ int b;
motor1=1;
while((b<50)&&k2==0)
{
delay(10);
b++;
}
b=0;
}
}
motor(speed);
writecom(0x88);
writedate('2');
}
}
}
void INIT() //k2,k3外部中断初始化
{
IT0=1;
EX0=1;
IT1=1;
EX1=1;
EA=0;
}
void INIT0()interrupt 0 //外部中断0服务函数
{
delay(10);
if(k3==0)
{
speed++;
}
}
void INIT1()interrupt 2//外部中断1服务函数
{
delay(10);
if(k4==0)
{
if(speed>0)
{
speed--;
}
else
speed=0;
}
}
void Timer() //定时器初始化
{
TMOD=0x01;
TH0=0xfc; //初值fc18---1ms
TL0=0x18;
EA=1;
ET0=1;
TR0=1;
}
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
直流电机实验.rar
(69.69 KB, 下载次数: 143)
2017-5-22 16:18 上传
点击文件名下载附件
直流电动机
下载积分: 黑币 -5
作者:
cjhahang
时间:
2017-5-24 22:52
这个仿真设计可用
作者:
度半
时间:
2017-5-30 18:11
可以给我一份吗?下载积分不够
作者:
zikking
时间:
2019-12-27 09:33
很棒,但是加上解释就更好了
作者:
orangexochan
时间:
2020-5-14 09:16
程序里有些还是看不太懂
作者:
Jeff_BlindCat
时间:
2020-5-14 11:00
这个需要学习,多谢通过。
作者:
jfz9
时间:
2020-6-24 10:18
请问液晶显示速度不变是怎么回事?
作者:
Jeff_BlindCat
时间:
2020-6-24 21:18
看着代码工整度,猜测楼主就是一个规矩人。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1