51单片机步进电机的正反转。加减速控制
电路原理图如下:
仿真原理图如下
单片机源程序如下:
#include #include #include #define uchar unsigned char #define uint unsigned int sbit RS = P2^4;//1602数据/命令选择端(H:数据寄存器L:指令寄存器) sbit RW = P2^5;//1602读/写选择端 sbit E = P2^6;//1602使能信号端 sbit key1=P3^0;//用户按键 sbit key2=P3^1; sbit key3=P3^2; sbit key4=P3^3; sbit key5=P3^4; uchar code B_Rotation[8]={0x7f,0x3f,0xbf,0x9f,0xdf,0xcf,0xef,0x6f}; //反转表格 uchar code F_Rotation[8]={0xef,0xcf,0xdf,0x9f,0xbf,0x3f,0x7f,0x6f}; //正转表格 uchar table1[]="dir: + spe:005"; uchar table2[]="cir:000 ang:000"; uchar num; uint key,flag,speed=5,zflag,znum,fflag,fnum,select,pp,qq; //1键值2键值标志3速度4正转标志5正转圈数6反转标志7反转圈数8正转角度9反转角度10选择 float zang,fang; /******************************************************************/ /* 延时函数 Xms */ /******************************************************************/ void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } /******************************************************************/ /* LCD1602写命令操作 */ /******************************************************************/ void WriteCommand(uchar com) { delay(5);//操作前短暂延时,保证信号稳定 E=0; RS=0; RW=0; P0=com; E=1; delay(5); E=0; } /******************************************************************/ /* LCD1602写数据操作 */ /******************************************************************/ void WriteData(uchar dat) { delay(5); //操作前短暂延时,保证信号稳定 E=0; RS=1; RW=0; P0=dat; E=1; delay(5); E=0; } /******************************************************************/ /* 1602初始化程序 */ /******************************************************************/ void InitLcd()//1602初始化程序 { delay(15); WriteCommand(0x38); //display mode WriteCommand(0x38); //display mode WriteCommand(0x38); //display mode WriteCommand(0x06); //当读或写一个字符后地址指针加一,且光标加一 WriteCommand(0x0c); //显示开及光标不显示 WriteCommand(0x01); //清屏 WriteCommand(0x80); for(num=0;num<15;num++)//第一行的显示 { WriteData(table1[num]); delay(15); } WriteCommand(0x80+0x40);//第二行的显示 for(num=0;num<15;num++) { WriteData(table2[num]); delay(15); } } /******************************************************************/ /* 独立键盘扫描函数 */ /******************************************************************/ void keyscan() { P3=0xff;//拉高P3口,以读取P3口的值 if(key1==0)//键1被按下 { delay(5);//延时消抖 if(key1==0) { flag=1; } while(!key1); delay(5);//延时消抖 while(!key1);//松手检测 } if(key2==0) { delay(5); if(key2==0) { flag=2; } while(!key2); delay(5); while(!key2); } if(key3==0)//键1被按下 { delay(5);//延时消抖 if(key3==0) { flag=3; } while(!key3); delay(5);//延时消抖 while(!key3);//松手检测 } if(key4==0) { delay(5); if(key4==0) { flag=4; } while(!key4); delay(5); while(!key4); } if(key5==0) { delay(5); if(key5==0) { flag=5; } while(!key5); delay(5); while(!key5); } } /******************************************************************/ /* 1602显示3位数 */ /******************************************************************/ void write_sfm(uchar add,uint date)//1602显示 { uchar bai,shi,ge; bai=date/100; shi=date%100/10; ge=date%10; WriteCommand(0x80+add);//设置数据地址指针 WriteData(0x30+bai); WriteData(0x30+shi); WriteData(0x30+ge); WriteData(0x20); } /******************************************************************/ /* 键值处理 */ /******************************************************************/ void handle_flag() { uchar select1; if(TR0==0&&TR1==0) { if(flag==1) //正转 { WriteCommand(0x80+0x05); WriteData('+'); delay(20); select=0; } if(flag==2) //反转 { WriteCommand(0x80+0x05); WriteData('-'); delay(20);
上一篇:单片机自行车测速系统+源程序+proteus仿真
下一篇:非常完备的按键操作系统,单击、双击、N击,长按。可移植
推荐阅读最新更新时间:2024-11-19 10:06
设计资源 培训 开发板 精华推荐
- NCP5212AGEVB,用于笔记本电脑的 0.8 至 3.3V DC 至 DC 单输出电源的评估板
- 基于esp32的5路插座控制板
- 具有 5V 输出的 LT1076CT 正负转换器的典型应用
- AUIPS7111S 电流检测高端开关的典型应用
- LTC3632EDD 小尺寸、有限峰值电流、4mA 稳压器的典型应用电路
- EVAL-AD7294-2SDZ,用于评估 AD7294-2 12 位监控系统的评估板
- Lumi_Robot
- 基于X-NUCLEO-IHM07M1和NUCLEO-F302R8板的电机控制Nucleo套件
- LT1021CCN8-5 的典型应用从 5V 电源运行 5V 基准
- 采用毫米波传感器的区域扫描仪参考设计
- 智能家电解决方案 互联品质生活
- 直播已结束【通过集成隔离数据和电源 IC 降低辐射】
- 你是课代表——TI培训最受欢迎课程由你做主 发帖荐课即可参与幸运抽奖!
- 试用Vishay新型“IHLP磁芯损耗计算器”,抢楼赢好礼
- 任选下载有礼|《新概念模拟电路》全五册合集/《ADI 参考电路合集》
- 阅读是德科技 Power Supply、汽车电子精彩专题,让您的设计更精准!参与答题赢好礼!
- 【EEWORLD大学堂】玩转LaunchPad及TI MSP430G2XX系列超值单片机!!!
- 参与有礼|欢迎来到泰克高速串行知识星球
- 报名赢京东卡:安路FPGA研讨会-成都站
- 【EEWORLD第三十六届】2012年03月社区明星人物揭晓!