直流电机调速控制系统的C语言程序 (2)

上传人:cn****1 文档编号:479161687 上传时间:2023-11-22 格式:DOCX 页数:16 大小:11.49KB
返回 下载 相关 举报
直流电机调速控制系统的C语言程序 (2)_第1页
第1页 / 共16页
直流电机调速控制系统的C语言程序 (2)_第2页
第2页 / 共16页
直流电机调速控制系统的C语言程序 (2)_第3页
第3页 / 共16页
直流电机调速控制系统的C语言程序 (2)_第4页
第4页 / 共16页
直流电机调速控制系统的C语言程序 (2)_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《直流电机调速控制系统的C语言程序 (2)》由会员分享,可在线阅读,更多相关《直流电机调速控制系统的C语言程序 (2)(16页珍藏版)》请在金锄头文库上搜索。

1、细心整理/MCU:AT89S51/晶振:12M#include regX52.H#include math.h#include intrins.h#define LCDIO P0 /定义P0口及LCD1602数据口相接#define ON 1#define OFF 0 sbit LCD_RS=P26; sbit LCD_RW=P25; sbit LCD_EN=P24; sbit LCD_BUSY=LCDIO7; sbit SW4=P20; / 速度设置加 sbit SW3=P21; / 速度设置减 sbit SW2=P22; /停 sbit SW1=P23; / 反转 sbit IN2=P34

2、; /红色线 sbit PWM=P35; /黄色线 sbit IN1=P36; /紫色线 int display; int flag; int time; int a; int s=25; unsigned long int p; unsigned long int xiao; unsigned long int h; unsigned long int v; unsigned char dispbuff4; /存放各位数据/*1ms延时子程序*/void delay_nms(unsigned int n) unsigned int i; unsigned char j; for(i=0;in

3、;i+) for(j=0;j120;j+) ; /空操作/*1ms延时子程序*/*0.1ms延时子程序*/void control_speed(unsigned int n) unsigned char j; for(j=0;jn;j+) ; /空操作/*0.1ms延时子程序*/#define uchar unsigned char#define uint unsigned int/LCD驱动void LCD_check_busy(void) /检测LCD状态,看它是不是还在忙呢do LCD_EN=0; LCD_RS=0; LCD_RW=1; LCDIO=0xff; LCD_EN=1; whi

4、le(LCD_BUSY=1); LCD_EN=0;/*LCD1602写叮嘱*/void LCD_send_command(uchar command,busy1)if(busy1) LCD_check_busy();LCD_RS=0;LCD_RW=0;LCD_EN=1;LCDIO=command;LCD_EN=0;/*LCD1602写数据*/void LCD_send_data(uchar dat)LCD_check_busy();LCD_RS=1;LCD_RW=0;LCD_EN=1;LCDIO=dat;LCD_EN=0;void LCD_write_char(uchar x,uchar y,

5、uchar dat) unsigned char address; if (x=0) address=0x80+y; else address=0xc0+y; LCD_send_command(address,0); LCD_send_data(dat);/*LCD1602显示字符串*/void LCD_disp_string(uchar x,uchar y,uchar *Data)if(x=0) if(y16) LCD_send_command(0x80+y,0); for(;y16&*Data!=0;y+) LCD_send_data(*(Data); Data+; if(*Data!=0

6、) y=0; x=1; if(x=1) LCD_send_command(0xc0+y,0); for(;y100) xiao=0;vs+;if(vs100)vs=100; if(SW3=0)/设定速度减 xiao+;if(xiao100) xiao=0;vs-;if(vs8)vs=8; if(SW2=0)/开关键 delay_nms(100); if(SW2=0)if(mode!=0) mode=0;elsemode=1; delay_nms(150); if(SW1=0)/正反转 delay_nms(100); if(SW1=0)if(mode=2) mode=1;elsemode=2;

7、delay_nms(150); /*按键模式一些限制*/*电机运行模式选择*/switch(mode) case 0x00: /关闭电机 PWM = OFF; break; case 0x01: /正转 IN1 = 0; /p36 紫线IN2 = 1; /p34 红线PWM = 1; /p35 黄线 限制速度control_speed(s);PWM = 0; /p35 黄线control_speed(100-s); break; case 0x02: /反转 IN1 = 1; /p36 紫线IN2 = 0; /p34 红线PWM = 1; /p35 黄线control_speed(s);PWM = 0; /p35 黄线control_speed(100-s);break; default:break; /*电机运行模式选择*/*速度计算显示*/if(display=1)display=0;/一秒钟显示一次dispbuff3=(v/100); dispbuff2=(v/10%10); / dispbuff1=(v%10); /

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号