这是作者个人参加51单片机比赛的资料,欢迎参考
单片机源程序如下:
- //=======================================================
- //工程名称:步进电机精准定位、转向、转速
- //工程作者:冯奇
- //工程硬件:STC89C52RC
- //======================包含文件=================================
- #include<reg52.h> //包含头文件
- #include"LCD1602.H" //包含文件---LCD1602显示屏
- #include"Stepmotor.H" //包含文件---两相五线步进电机
- #include"DELAY.H" //包含文件---延时
- #include"KEYx3.H" //包含文件---三个按键
- //======================定义变量=================================
- unsigned int count=256; //角度初始值
- float t;
- unsigned char mode=0; //按键1设置模式
- extern unsigned int speed;//速度值
- bit stop,zf; //stop=1 步进电机启动
- //stop=0 步进电机暂停
- //zf=1 右转
- //zf=0 左转
- //======================主函数=================================
- void main()
- {
- // KEYx3_Init();//初始化按键
- Step_Init();//步进电机复位
- Step_R();
- // speed=3; //初始化转速
- // delay_ms(100);
- //zf=1;
- //Init_LCD1602(); //LCD1602初始化
- // LCD1602_ShowStr(6,1,"R");
- // while(1)
- // {
- // if(KEYx3_1_Gets())
- // {
- // mode++; //模式切换
- // delay_ms(10);
- // }
- // switch(mode)
- // {
- // case 1: //模式1控制转动角度
- // {
- // if(KEYx3_2_Gets())
- // {
- // count=count+2; //加步进电机角度的度数
- // delay_ms(10);
- // if(count>512)
- // {
- // count=0;
- // }
- // }
- // if(KEYx3_3_Gets())
- // {
- // count=count-2; //加步进电机角度的度数
- // delay_ms(10);
- // if(count<0)
- // {
- // count=512;
- // }
- // }
- // break;
- // }
- // case 2: //模式2控制转动方向
- // {
- // if(KEYx3_2_Gets())
- // {
- // zf=1;
- // LCD1602_ShowStr(6,1,"R");//LCD1602显示方向--右
- // }
- // if(KEYx3_3_Gets())
- // {
- // zf=0;
- // LCD1602_ShowStr(6,1,"L");//LCD1602显示方向--左
- // }
- // break;
- // }
- // case 3: //模式3控制转动速度
- // {
- // if(KEYx3_2_Gets())
- // {
- // speed++; //加速度
- // delay_ms(5);
- // if(speed>6)
- // {
- // speed=1;
- // }
- // }
- // if(KEYx3_3_Gets())
- // {
- // speed--; //减速度
- // delay_ms(5);
- // if(speed<1)
- // {
- // speed=6;
- // }
- // }
- // break;
- // }
- // case 4: //模式4控制启动/暂停
- // {
- // if(KEYx3_3_Gets())
- // {
- // stop=~stop;
- // }
- // break;
- // }
- // default:
- // {
- // mode=0;
- // break;
- // }
- // }
- // LCD1602_ShowStr(0,0,"Angle:");//LCD1602显示名词
- // LCD1602_ShowStr(0,1,"Direc:");
- // LCD1602_ShowStr(10,0,"mode:");
- // LCD1602_ShowStr(9,1,"speed:");
- // LCD1602_SetsArea(0,0);
- // LCD1602_Show_1_Numb(15,1,speed);//LCD1602显示速度
- // LCD1602_Show_1_Numb(15,0,mode);//LCD1602显示模式
- // Step_An(count);//转动角度
- // t=count*0.703125+0.05;//角度转换
- // LCD1602_Show_3_Numb(6,0,t); //LCD1602显示角度
- // }
- }
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
Desktop.7z
(346.04 KB, 下载次数: 100)
|