• 大小: 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个文件信息

评论

共有 条评论

相关资源