-
大小: 113KB文件类型: .zip金币: 1下载: 0 次发布日期: 2021-06-09
- 语言: 其他
- 标签:
资源简介
本设计采用STC12C5A60S2单片机作为主控芯片实现了PID电机调速控制器。传感器采用欧姆龙的200线编码器。电机驱动模块采用L298N,使用LM2596来对电机供电。设计中的重点是电机转速的获取和基于PID的电机控制算法的实现。
代码片段和文件信息
#include “12864Serial.h“
#include
uchar str[4];
#define DelayNop() {_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}
void delay_ms(uint z)
{
uint ij;
for(i=110;i>0;i--)
for(j=z;j>0;j--);
}
void sendbyte(uchar date) //从高位开始,一位一位发送
{
uchar i;
for(i=0;i<8;i++)
{
//LCD_SCLK=0;
if((date< {
LCD_SID=1;
}
else
{
LCD_SID=0;
}
LCD_SCLK=0;
LCD_SCLK=1;
}
}
//从12864接收数据
uchar receivebyte(void)
{
uchar itemp1=0temp2=0;
for(i=0;i<8;i++)
{
temp1=temp1<<1;
LCD_SCLK=0;
LCD_SCLK=1;
LCD_SCLK=0;
if(LCD_SID)
temp1++;
}
for(i=0;i<8;i++)
{
temp2=temp2<<1;
LCD_SCLK=0;
LCD_SCLK=1;
LCD_SCLK=0;
if(LCD_SID)
temp2++;
}
return((temp1&0xf0)+(temp2&0x0f));
}
void CheckBusy(void)
{
do sendbyte(0xfc);
while(0x80&receivebyte());
}
void LCD_WriteCmd(uchar cmd)
{
LCD_CS=1;
CheckBusy();
sendbyte(0xf8); //0xf8代表发送命令
sendbyte(cmd & 0xf0); //先发送指令的高四位
sendbyte((cmd<<4) & 0xf0); //在发送指令的底四位
delay_ms(2);
}
void LCD_WriteDat(uchar dat)
{
LCD_CS=1;
CheckBusy();
sendbyte(0xfa); //0xfa代表发送数据
sendbyte(dat&0xf0); //先发送数据的高四位
sendbyte((dat<<4)&0xf0); //在发送数据的底四位
delay_ms(2);
}
void LCD_Init()
{
LCD_WriteCmd(0x30);
LCD_WriteCmd(0x0c);
LCD_WriteCmd(0x01);
}
//====================================================================//
// 语法格式:void Lcd_SetPos(uchar Xuchar Y)
// 实现功能:设定显示位置
// 参 数:X - 行,Y - 列
// 返 回 值:无
//====================================================================//
void Lcd_SetPos(uchar Xuchar Y)
{
uchar pos;
if (X==0)
{X=0x80;}
else if (X==1)
{X=0x90;}
else if (X==2)
{X=0x88;}
else if (X==3)
{X=0x98;}
pos = X+Y ;
LCD_WriteCmd(pos); //显示地址
}
//====================================================================//
// 语法格式:uchar *uchartostr(uchar num)
// 实现功能:将一个字节的num转换为字符串
//====================================================================//
uchar *uchartostr(uchar num)
{
uchar baishigen;
bai=num/100;
shi=num%100/10;
ge=num%10;
n=0;
if(bai!=0)
{
str[n]=bai+48; //值增加48即为字符
n++;
}
if(!(bai==0&shi==0))
{
str[n]=shi+48;
n++;
}
str[n]=ge+48;
n++;
str[n]=‘\0‘;
return str;
}
//====================================================================//
// 语法格式:void Lcd_DispLine(uchar line uchar pos uchar *str)
// 实现功能:显示一行字符
// 参 数:line - 指定行,pos - 指定位置(列) str - 字符串
// 返 回 值:无
//====================================================================//
void Lcd_DispLine(uchar line uchar pos uchar *str)
{
int i = 0;
Lcd_SetPos(line pos);
while (str[i] != ‘\0‘)
{
LCD_WriteDat(str[i]);
i++;
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2013-09-15 21:59 PID测速\
目录 0 2013-09-04 14:00 PID测速\Application\
目录 0 2013-09-04 14:00 PID测速\Application\header\
文件 17733 2013-06-24 18:37 PID测速\Application\header\STC12C5A60S2.H
目录 0 2013-09-04 14:00 PID测速\Hardware\
目录 0 2013-09-04 14:00 PID测速\Hardware\12864 Serial\
文件 3022 2013-08-04 09:10 PID测速\Hardware\12864 Serial\12864Serial.c
文件 513 2013-08-03 09:29 PID测速\Hardware\12864 Serial\12864Serial.h
目录 0 2013-09-04 14:00 PID测速\Hardware\PWM\
文件 423 2013-08-04 20:43 PID测速\Hardware\PWM\PWM.c
文件 82 2013-08-03 00:40 PID测速\Hardware\PWM\PWM.h
目录 0 2014-05-16 08:32 PID测速\Lis\
文件 8684 2013-08-01 22:32 PID测速\Lis\12864.lst
文件 6941 2014-05-16 08:31 PID测速\Lis\12864Serial.lst
文件 25372 2014-05-16 08:32 PID测速\Lis\PID测速.lst
文件 44051 2014-05-16 08:32 PID测速\Lis\PID测速.m51
文件 1647 2014-05-16 08:31 PID测速\Lis\PWM.lst
文件 14157 2014-05-16 08:31 PID测速\Lis\STARTUP.lst
目录 0 2014-05-16 08:32 PID测速\Obj\
文件 156 2013-08-01 22:32 PID测速\Obj\12864.__i
文件 8339 2013-08-01 22:32 PID测速\Obj\12864.obj
文件 9332 2014-05-16 08:31 PID测速\Obj\12864Serial.obj
文件 43197 2014-05-16 08:32 PID测速\Obj\PID测速
文件 176 2014-05-16 08:32 PID测速\Obj\PID测速.__i
文件 18441 2014-05-16 08:32 PID测速\Obj\PID测速.hex
文件 157 2014-05-16 08:32 PID测速\Obj\PID测速.lnp
文件 38125 2014-05-16 08:32 PID测速\Obj\PID测速.obj
文件 2512 2014-05-16 08:32 PID测速\Obj\PID测速.plg
文件 2459 2014-05-16 08:31 PID测速\Obj\PWM.obj
文件 809 2014-05-16 08:31 PID测速\Obj\STARTUP.obj
文件 399 2011-05-09 18:17 PID测速\keilkill.bat
............此处省略12个文件信息
- 上一篇:Hyperledger Fabric 超级账本视频教程
- 下一篇:坐标批量转换
评论
共有 条评论