直流电机调速系统

上传人:daj****de 文档编号:189957372 上传时间:2023-02-24 格式:DOCX 页数:15 大小:11.89KB
返回 下载 相关 举报
直流电机调速系统_第1页
第1页 / 共15页
直流电机调速系统_第2页
第2页 / 共15页
直流电机调速系统_第3页
第3页 / 共15页
点击查看更多>>
资源描述
#include #define uchar unsigned char#define uint unsigned int#define LED_DAT P0#define LED_SEG P2#define TIME_CYLC 100 /定时器T0 10ms中断一次 我们1秒计算一次转速/ 1000ms/10ms = 100#define PLUS_PER 10码盘的齿数,这里假定码盘上有10个齿,即传感器检测到10个脉冲,认为1圈#define K 100.0校准系数unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;uchar data Disbuf3;显示缓冲区uint Tcounter = 0;时间计数器uint cmp = 5;调节转速(PWM占空比调节)初始占空比50%,即初始转速20r/sbit Flag_Fresh = 0;刷新标志bit Flag_calculate = 0;计算转速标志sbit PWM = P1A2;/PWM输出sbit speedup = P3A0;/速度加sbit speeddown = P3A1;速度减void Display();在数码管上显示实际转速void CalculateSpeed();计算转速,并把结果放入数码管缓冲区void init_timer0();/初始化定时器T0void init_timer1();/初始化定时器T1void Delay(uint ms);/延时函数void PWM_WAVE();/PWM输出void speedcontrol();/速度加减void main(void)(Disbuf0 = 0; /开机时,初始化为000Disbuf1 = 0;Disbuf2 = 0;init_timer0();init_timer1();while(1)(Flag_Fresh = 0;Display(); /定时刷新数码管显示if(Flag_calculate)(Flag_calculate = 0;CalculateSpeed(); /计算转速,并把结果放入数码管缓冲区Tcounter = 0;周期定时 清零TH1=TL1 = 0x00;脉冲计数清零void PWM_WAVE()(if(Tcounter10) /PWM 周期为 10*10ms(Tcounter=0;if(Tcounter = cmp) 改变cmp可以改变直流电机的速度PWM=1;else(PWM=0;void speedcontrol()电动机速度加减调节(if(speedup=0)Delay(10);if(speedup=0)(if(cmp1)cmp-;elsecmp=1;初始化定时器T0void init_timer0()(TMOD &= 0xf0;TMOD |= 0x01;TH0 = 0xC0;定时10毫秒TL0 = 0x00;ET0=1;EA=1;TR0=1;初始化定时器T1(TMOD &= 0x0F;计数方式TMOD |= 0x50;TH1 = 0x00;TL1 = 0x00;ET1=1;EA=1;TR1 = 1;void it_timer0() interrupt 1 定时器T0用于数码管的动态刷新(TF0 = 0;TH0 = 0xC0;TL0 = 0x00;Flag_Fresh = 1;Tcounter+;if(TcounterTIME_CYLC)Flag_calculate = 1;周期到,重新计算转速void it_timer1() interrupt 3 /定时器T1用于计数单位时间内收到的脉冲数(TF1 = 0;计算转速,并把结果放入数码管缓冲区void CalculateSpeed()(uint speed ;uint PlusCounter;PlusCounter = TH1*256 + TL1;speed = K*(PlusCounter/PLUS_PER)/60; /K是校准系数,如速度不准,调节K的大小Disbuf0 = speed/100;Disbuf1 = (speed/10)%10;Disbuf2 = speed%10;在数码管上显示实际转速 void Display()(LED_SEG = 0xfb;LED_DAT = tableDisbuf0;Delay(1);LED_SEG = 0xfd;LED_DAT = tableDisbuf1;Delay(1);LED_SEG = 0xfe;LED_DAT = tableDisbuf2;Delay(1);延时函数void Delay(uint ms)(uint i,j;for (i=ms;i0;i-)for (j=110;j0;j-)
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸设计 > 毕设全套


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!