• 大小: 214KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-10
  • 语言: 其他
  • 标签: 51单片机  L298  

资源简介

这是我在课程设计中做的一个题目,以L298为电机驱动,实现51单片机对小电机的降压调速。经过测试在电机最高转速为3900r/min的情况下可以实现+-10r/min的高精度调速。

资源截图

代码片段和文件信息

 #include
 #include 
 #define maxn 500
 #define wc 0.03  //wc允许误差

/********************************************************************************/
                  // 主要变量说明与函数功能说明//
  // P0给字型码
  //P1第三位控制字位
/*********************************************************************************/
 sbit in1=P3^0;      //L298通道1
 sbit in2=P3^1;  //L298通道2
 sbit P32=P3^2;
 sbit len=P2^3;  //L298使能
 unsigned int t0t1;   //时间因子
 unsigned char burf[10];
 unsigned char sskey;
 unsigned char set;  //调速命令标志
 float minmax;  //用于PWM调制
 unsigned char rd;
 int n0ntemp;        //n0:标准转速,n:实际转速 
 unsigned char on;   //电机开机关机标志
 void changespeed(float h);//调速函数,入口参数:标准转速n0;功能将电机转速跳到n0    键盘:   7   8   9  rd(反转)
 void getspeed();  //获取实际转速函数,功能:返回电机的实际转速 4   5   6
 void display();  //显示函数,功能:显示转速值 1   2   3
 void keyscan();         //键盘扫描函数,功能:读键盘,并返回输入的数字 on/off 0   set
 void init();  //初始化函数
 int juge();  //比较函数,功能:把实际转速与标准转速进行比较,用于反馈控制
 void changedata();  //数字拆分函数,功能:把数字拆分成字符串形式,用于显示
 void delay20();         //延时函数

 /*********************************************************************************/
  //编码说明:keytab[12]键盘编码;tab[12]:keytab[12]对应数字码;word[10]字型码
 /*********************************************************************************/
 code unsigned keytab[12]={0xed0xde0xdd0xdb0xbe0xbd0xbb0x7e0x7d0x7b0xee0xeb};
 //0 1 2 3 4 5 6 7 8 9 on/off set
 code unsigned char tab[10]={0123456789};
 code unsigned char word[10]={0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f};

 /*********************************************************************************/
                            //主要函数实现//
 /**********************************************************************************/
 void init()
 {
  EA=0;
TMOD=0X01;
TH0=(65535-1000)/256;
TL0=(65535-1000)%256;
t0=0;
 }
 void display()
 {
  unsigned char i;
changedata();
P2=0x07;
for(i=0;i<8;i++)
{
P1=burf[i];
delay20();
        P2--;
}
 }
void changedata()
{
unsigned char i=0;
int b=1000;
while(n0>0)
{
burf[i++]=n0/b;
n0%=b;
b/=10;
}
b=1000;
while(n>0)
{
burf[i++]=n/b;
n%=b;
b/=10;
}
}
char panduan()
{
char c=n0*wc;
return ((n-n0)>=(-c)&&(n-n0)<=c);
}
int juge()
{
if(panduan()) return 0;
return n-n0;
}
void changespeed(float h)
{
min=h/maxn;
}
void getspeed()
{
TMOD&=0X50;
TH1=(65535-120)/256;
TL0=(65535-120)%256;
t1=0;
ss=1;
TR0=1;
}
void delay20()
{
int ij;
for(i=0;i<50;i++)
for(j=0;j<100;j++)
;
}
void timer0_isr() interrupt 1 using 0
{
TH0=1000/256;
TL0=1000%256;
t0++;
    if(ss==1) t1++;
if(t0<=min*max)
{
if(rd==1)
{
in1=0;
in2=1;
}
in1=1;
in2=0;
}
else if(t0 {
in1=0;
in2=0;
}
else t0=0;
 
}
void int0_isr() interrupt 0 using 0
{
delay20();
P32=1;
if(P32==0) keyscan();
else
{
P

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     139197  2012-12-17 23:58  电机调速\Backup Of 电机.DBK

     文件       4356  2012-12-07 16:45  电机调速\C文件\main.c

     文件     132798  2012-12-15 17:05  电机调速\C文件\电机.DSN

     文件      62620  2012-12-09 09:48  电机调速\ISIS.dmp

     文件     139167  2012-12-18 17:32  电机调速\Last Loaded 电机.DBK

     文件      12069  2012-11-23 17:33  电机调速\main.lst

     文件      12284  2012-11-23 17:33  电机调速\main.obj

     文件       6376  2005-03-22 15:22  电机调速\STARTUP.A51

     文件      14048  2012-11-23 17:33  电机调速\STARTUP.LST

     文件        758  2012-11-23 17:33  电机调速\STARTUP.OBJ

     文件        768  2012-11-19 18:59  电机调速\工程1.PWI

     文件       6376  2005-03-22 15:22  电机调速\新建文件夹\STARTUP.A51

     文件      14048  2012-11-16 17:34  电机调速\新建文件夹\STARTUP.LST

     文件        758  2012-11-16 17:34  电机调速\新建文件夹\STARTUP.OBJ

     文件       5873  2012-11-16 17:34  电机调速\新建文件夹\test

     文件        876  2012-11-16 17:35  电机调速\新建文件夹\test.c

     文件       1410  2012-11-16 17:34  电机调速\新建文件夹\test.hex

     文件         41  2012-11-16 17:34  电机调速\新建文件夹\test.lnp

     文件       3002  2012-11-16 17:34  电机调速\新建文件夹\test.LST

     文件       8118  2012-11-16 17:34  电机调速\新建文件夹\test.M51

     文件       5507  2012-11-16 17:34  电机调速\新建文件夹\test.OBJ

     文件       1026  2012-11-16 17:35  电机调速\新建文件夹\test.Opt

     文件      19029  2012-11-16 17:34  电机调速\新建文件夹\test.plg

     文件       2146  2012-11-16 17:35  电机调速\新建文件夹\test.Uv2

    .......         0  2012-11-16 15:55  电机调速\新建文件夹\test_Uv2.Bak

     文件       1437  2012-12-16 12:34  电机调速\测试\dianji

     文件         92  2012-12-16 12:34  电机调速\测试\dianji.hex

     文件         44  2012-12-16 12:34  电机调速\测试\dianji.lnp

     文件       3904  2012-12-16 12:34  电机调速\测试\dianji.M51

     文件       1024  2012-12-16 17:14  电机调速\测试\dianji.Opt

............此处省略73个文件信息

评论

共有 条评论