资源简介
这是我在课程设计中做的一个题目,以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个文件信息
- 上一篇:华通条形码批量打印软件+V3.82+破解版
- 下一篇:安装nginx必备rpm
相关资源
- 51单片机12864显示波形程序
- 传送带产品计数器的设计LCD显示51单片
- 基于单片机的心型灯设计.rar
- 51单片机控制GSM模块发短信程序
- 基于51单片机的简易频率计程序
- 用SST89系列单片机读取SD卡与TLC5620播放
- 基于51单片机矩阵键盘的实现含仿真原
- 用51单片机驱动DS1302时间模块+DS18B20温
- 51单片机与PS2鼠标C程序带滚轮识别,
- 单片机产生SPWM设计报告
- 组态王与51单片机ASCII通信
- 基于51单片机的两轮平衡车程序
- 基于51单片机的RFID智能门禁系统源码
- 基于51单片机的电子密码锁源码+电路
- 51单片机超声波测距数码管显示
- 51单片机超声波测距1602LCD显示
- 51单片机+tlc5615+信号发生器正弦波 方
- 电能收集充电器 51单片机实现
- 51单片机超声波测距HC-SR04程序
- 51单片机小车巡线L298N驱动
- 基于51单片机的多路温湿度实时监测的
- 51单片机实现的485通讯程序
- 利用51单片机来完成频率测量的程序
- 八路抢答器代码
- 基于51单片机温控系统C程序
- 51单片机抢答器源代码+系统图
- 单片机AT89S51与ADC0809设计一个数字电压
- l298p封装库
- 51单片机+蜂鸣器音乐播放
- 基于s51单片机的直流电机测速系统
评论
共有 条评论