51单片机步进电机正反转调速1602显示

合集下载

国旗升降自动控制系统

国旗升降自动控制系统

目录设计任务........................................................2 摘要.............................................................4 第 1 节系统方案论证与比较..................................51.1 设计思路...............................................51.2 方案选择与论证.........................................51.2.1、电机的选择与论证.....................................51.2.2、电机驱动方案的选择与论证.............................51.2.3、显示部分方案的选择与论证.............................61.2.4、语音部分的方案选择与论证.............................6 第 2 节电路框图设计.......................................82.1 总体框图设计..........................................82.2 整体程序流程图........................................9第 3 节系统的具体设计...........................103.1 系统的硬件设计........................................103.1.1、电机驱动模块.........................................103.1.2、键盘与显示模块.......................................113.1.3、语音模块.............................................12 3.2 系统的软件设计.......................................133.2.1、各部分程序流程图.....................................14 第 4 节测试方法与仪器...............................164.1 测试设备.............................................16 4.2 测试方法.............................................16第 5 节测试数据及测试结果析............................19第 6 节结论.................................................21 第 7 节心得.................................................22 附录.............................................................23 参考文献.........................................................24自动控制升降旗系统设计报告设计任务设计一个自动控制升降旗系统,该系统能够自动控制升旗和降旗,升旗时,在旗杆的最高端自动停止;降旗时,在最低端自动停止。

89C51单片机对步进电动机的C语言控制程序

89C51单片机对步进电动机的C语言控制程序

89C51单片机对步进电动机的控制程序啊?兄弟做的如何了?我也是不懂啊,真是有点同病相怜了这个程序是课程设计的,现在老师要复杂点的,不让用延时程序了,因为浪费CPU时间,改为定时器扫描防抖,还有显示是用四个数码管,用四个键控制,其中一个起停,一个正反转,两个加减速。

我只能写到这些了,你有何进展,交流一下吧#define uchar unsigned char //定义一下方便使用#define uint unsigned int#define ulong unsigned long#include <reg52.h> //包括一个52标准内核的头文件sbit P10 = P1^0; //头文件中没有定义的IO就要自己来定义了sbit P11 = P1^1;sbit P12 = P1^2;sbit P13 = P1^3;sbit K1 = P3^2;sbit K2 = P3^5;sbit K3 = P3^6;sbit K4 = P3^7;sbit P20=P2^0;sbit P21=P2^1;bit ldelay=0; //长定时溢出标记,预置是0uchar a,m=50;uchar result;uint b,n;uint i,j;char code dx516[3] _at_ 0x003b;//这是为了仿真设置的/*********************************************************************** ***********///电机正转void zheng_z(){ uchar code ledp1[8]={0xfe,0xfc,0xfd,0xf9,0xfb,0xf3,0xf7,0xf6};//预定的写入P1的值正转uchar ledi1; //用来指示正转显示顺序P1=ledp1[ledi1];//读出一个值送到P1口ledi1++;//指向下一个if(ledi1==8)ledi1=0; //到了最后一个灯就换到第一个}//电机反转void fan_z(){ uchar code ledp2[8]={0xf6,0xf7,0xf3,0xfb,0xf9,0xfd,0xfc,0xfe};//预定的写入P1的值反转uchar ledi2; //用来指示反转显示顺序P1=ledp2[ledi2];//读出一个值送到P1口ledi2++; //指向下一个if(ledi2==8)ledi2=0; //到了最后一个灯就换到第一个}//减速void jian_s(){m+=5;if(m>=50)m=50;}//加速void jia_su(){ m-=5;if(m<=10)m=10;}/*******************************************************************/ void delay(uint j){j=100;for(i=0;i<j;i++){;}}void display(uint x){switch(x){case 0: P0=0xC0;break;case 1: P0=0xF9;break;case 2: P0=0xA4;break;case 3: P0=0xB0;break;case 4: P0=0x99;break;case 5: P0=0x92;break;case 6: P0=0x82;break;case 7: P0=0xF8;break;case 8: P0=0x80;break;case 9: P0=0x90;break;}}void sudu(uint c){switch(c){case 50: result=15;break;case 45: result=17;break;case 40: result=19;break;case 35: result=21;break;case 30: result=25;break;case 25: result=30;break;case 20: result=38;break;case 15: result=50;break;case 10: result=75;break;}}/*******************************************************************/ //主程序void main(void){TMOD = 0x01; //设定时器0为16位模式TH0 =0xdb; //赋T0的预置值0xdbTL0 =0xff;TR0=1; //启动定时器ET0=1; //打开定时器0中断EA=1; //打开总中断while(1) //主程扫描各键值{if(ldelay) //发现有时间溢出标记,进入处理{ldelay=0; //清除标记zheng_z();if(!K3)a=1; //如果读到K3为0if(!K4)a=0; //如果读到K4为0if(a==1)zheng_z();elsefan_z();if(!K1) //如果读到K1为0jian_s(); //减速if(!K2) //如果读到K2为0jia_su(); //加速/*********************************************************************** ************/sudu(m);b=result/10;n=result%10;P20=1;P21=0;display(b);delay (2);P20=~P20;P21=~P21;display(n);delay (2);}}}//定时器0中断timer0() interrupt 1{static uchar t;TH0 =0xdb; //赋T0的预置值0xdbTL0 =0xff;//TF0=0;t++;if(t==m){ t=0;ldelay=1;}}//定时器1中断/*timer1() interrupt 3{static uchar t;TF0=0;t++;if(t==20) { t=0; ldelay=1; } }*/。

top51 单片机开发板 说明书

top51 单片机开发板 说明书

T O P51单片机开发板使用说明书VER1.0 09-6-20TOP51单片机综合实验系统主要特点:▲ 1、 业界第一款全面支持STC最新1T单片机的开发板。

STC公司在09年推出了革命性的51单片机---1T单片机,执行一条指令仅需要1个时钟周期,比传统51单片机快8--12倍。

1T单片机不仅速度超快,而且其内部集成了A/D、SPI 、PWM、PCA等原本只有PIC、AVR单片机才有的高级模块,这意味着以前无法用51做的项目,现在也可以用51来做了;而且更让人欣喜的是,它在与传统51单片机如89C51、89C52保持100%兼容的同时,价格更低。

STC公司将逐步停止89C51、89C52的生产和销售,强烈建议大家立刻学习更先进的1T单片机!一步到位、避免二次学习!(支持89C51、89C52,但不推荐大家使用)▲ 2、 26合1。

TOP51开发板是目前集成模块数最多的开发板之一,集成有26个模块,模块多,意外着学习内容多,花同样的钱,你将学到更多的知识。

另外,TOP51开发板集成了许多最新外围模块,如TF卡(微型SD卡)、PS/2电脑键盘、AD、DA、点阵管、光电转速仪等、支持TFT真彩屏显示,让你的学习与时代同步!▲ 3、 全电控设计、傻瓜化操作。

板上没有一个跳线和拨码开关,使用中,你无需要进行繁杂的跳线和拨码开关设置,非常适合初学者使用,同时我们配套推出TOP51函数集,让C语言编程象BASIC一样简单!▲ 4、 真正实现“一线打天下”。

大部分其他开发板在使用的时候,需要外接许多根电缆,如串口线、USB线、USB转串口线、甚至还有笨重的并口线、外接电源线,这么多线,连接和携带都很不方便; TOP51开发板只需要一根USB 线(注意是轻巧的USB线、不是USB转串口线),就实现了USB供电、USB烧写、USB仿真、串口通信4项功能,使用非常方便、特别是笔记本电脑用户无需要另付钱配置USB转串口线,更显方便和实惠。

YL-51开发板使用手册

YL-51开发板使用手册

YL-51单片机学习开发板使用手册在使用前请详细阅读本手册………………………………………………………………………………………………版本号:2011012.22.001目录前言: 拿到实验板后首先需要做的几件事 (4)第一章YL-51单片机学习开发系统介绍1.1 YL-51单片机学习开发板简介 (5)1.1.1 YL-51学习板功能简介 (5)1.1.2 YL-51学习板硬件配置说明(标配+选配) (7)1.2 硬件说明 (10)1.2.1 I/O口分配说明 (10)1.2.2 跳线说明 (11)第二章 YL-51单片机学习开发板使用说明2.1 单片机开发环境的建立 (12)2.1.1 usb口驱动安装 (12)2.1.2 STC-ISP下载软件安装 (14)2.1.3 KEIL单片机开发软件安装 (14)2.2 开发流程 (14)2.2.1 单片机开发平台的建立 (14)2.2.2 STC单片机程序下载方法 (15)2.2.4 Keil工程文件的建立、设置与编译 (16)第三章 YL-51单片机学习方法介绍 (23)第四章 经典实验例程详细解答,更多请查看光盘相关程序文件夹4.01 闪烁灯 (25)4.02 流水灯 (26)4.03 单键识别 (28)4.04 设计一个59秒计数器 (31)4.05 矩阵键盘检测 (33)4.06 利用定时器和蜂鸣器唱歌.............................................................................,.. (39)4.07 模数转换ADC0804的应用 (43)4.08 数模转换DAC0832的应用 (46)4.09 DS18B20 温度测量显示实验 (48)4.10 1602 字符液晶显示 (54)4.11 EEPROM AT24C02 实验 (61)4.12串口通讯实验 (66)4.13 DS1302时钟+LCD1602显示 (68)第五章 扩展配件应用说明5.1 USB-ISP下载器使用 (76)5.1.1 USB-ISP下载器功能简述 (76)5.1.2 USB-ISP下载器驱动安装 (77)5.1.3 USB-ISP下载器使用安装图示 (81)5.1.4 USB-ISP下载器程序下载方法 (82)第六章 产品服务 (86)前言: 拿到实验板后首先需要做的几件事……当用户拿到实验板后的第一件事是先看实验板供电是否正常、下载程序功能是否正常、各芯片功能是否都能成功实现,检测方法如下所示:1. 先把产品包装中的四个铜柱及镙母安装在实验板上。

智能步进电机控制器设计

智能步进电机控制器设计

表 1力矩控制选择模式
TQ2

TQ1

电流 值
1O0%


75%


50%


20%
表 2 电流 衰 减 控 制
电机 驱 动 器种 类 很 多 ,但 是 大 部分 功 能 比 现 自动 细 分 、 电流 和 力矩 自动控 制 、过 流 DCY2 DCY1
片机 的定 时器 产 生 ;显示 采 用数 码 管 :存 软件 实 现细 分 ; 圈数 和速 度 必 须牢 靠 的存 储采 用 单 片机 内部 的特殊 存 储 单元 。 这种 储起 来 ,方 便 应用 ,因此 必 须使 用 专业 的
3.主要 模块设 计 3.1驱 动模块
方法 侧 重 于软 件 设计 ,当脉 冲太 快 时 ,定 时器 中断就 会 和细 分 程序 产 生冲 突 ,造 成 程序 的混 乱 ;存储 的数据 容 易 丢失 ; 显示 内容 比较 单一 ;控 制 的 实时 性不 易保证 , 调试 也 比较 烦 琐 ,可 靠性 较 低 ;而 且 效率 较 低 ,大 部 分 能 量 消 耗 在 三 极 管得 发 热 上 。
CurrentDecaySetting
较 单一 ,很 多是 针对 固定 的步进 电机 或者 和温 度 过 高 自动保 护 等 功 能 。掉 电存储 电
固定 的应 用领 域 ,而 且价 格 一般 较 高 ,很 路采 用Atmel公司 的AT24C04 (EEPROM) ;
多 不带 细 分功 能 ,很 难满 足 现 实生 活 中 需 显示 电路采 用 1602液 晶 显示 模 块 ;输入 设
掉 电存 储 芯片 ;使 用 中必 须 实 时显 示速 度 和 圈数 , 因此 应该 选 用 能显 示 多个 数据 的 1602液 晶显示 模 块 ;使 用 中对 稳定 性和 实 用性 有 很 高的 要求 ,使用 集 成 芯片 外 围 电 路简 单 、功 能 强大 ,可 以把 单 片机 大量 的 资源 用在 其 他 地方 ,不仅 增 加 了系 统 的整 体稳 定 性和 实 用性 ,而且 还 能增 加 许 多其

【GL9型51单片机开发学习系统】原理图集V7.1

【GL9型51单片机开发学习系统】原理图集V7.1

湿度传感器 7 U6 6 5 R59 4 3 2 N 超声波测距模块接口 温度传感器
10 3
XT1
P10
P17
C3
P30
C4
P37
P30 P31
N N 2 3 4 5 6 7
+
R56
STC
MAX485
S1
102
S2
U8
89C54RD+ 40C-PDIP40 1039C1P746907
IIC存储器
51单片机 学习开发系统 型号:GL9
C8
100 16V RVT
E2
103
103
103
R45 R44
T1 K2
102
T2 K3 K4
红外接收
RS485接口
101
U9 R63 R64 R62
U7
R61
B A
CN11
CN10
K1
K9
K10
K11
K12
CN1
R60
温度传感器
10 3
P1
P2
P3
P4
U5
PS /2键盘接口
N
GND ECHO TRIG +5V
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0
液晶接口 液晶接口
1602
CN26 VR3 CN27
VR2
K A Vlcd RST CS2 CS1 DB7 CN29 DB6 h g DB5 DB4 f DB3 e DB2 d DB1 c DB0 b E a 1位静态数码管 R/W RS Vo Vdd Vss

步进电机正反转启停控制的设计

步进电机正反转启停控制的设计

成绩鱼陂科扶号院电机控制课程设计报告书题目步进电机正反转启停控制的设计院部名称____________ 机电工程学院__________________专业 _________ 电气工程及其自动化______________班级 __________________________________________组长姓名______________________________________________学号 __________________________________________同组学生______________________________________________设计地点__________________ 工科楼C_________________ 设计学时_____________________1^ ___________________ 指导教师______________________________________________金陵科技学院教务处制02目录一、设计任务和要求二、设计思路2.1系统总框图----------------------------------2.2设计原理------------------------------------ 03三、系统硬件设置3.1时钟信号控制电路原理介绍--------------------------- 033.1.1 芯片89C51 介绍 --------------------------- 033.1.2 芯片管脚说明------------------------------ 033.1.3 时钟信号控制电路-------------------------- 053.2系统复位电路原理介绍----------------------------- 063.2.1 系统复位电路------------------------------ 063.3驱动电路原理介绍-------------------------------- 063.3.1 步进电机原理介绍--------------------------- 063.3.2 驱动电路-------------------------------- 083.4正反转控制电路原理介绍----------------------------- 083.4.1 正反转控制电路----------------------------- 08四、系统软件设置4.1 主程序流程图-------------------------------- 094.2源程序-------------------------------------- 09五、调试过程与结果------------------------ 18六、总结与体会---------------------------- 18七、--------------------------------------- 参考资料19八、附录------------------------------- 20 附录一总电路图02一、设计任务和要求电机控制课程设计是考察学生利用所学过的电机控制专业知识,进行综合的电机控制系统设计并最终完成实际系统连接,能够使学生对电气与自动化的专业知识进行综合应用,培养学生的创新能力和团队协作能力,提高学生的动手实践能力。

以ULN2003A为驱动器单片机的步进电机的控制系统毕业论文

以ULN2003A为驱动器单片机的步进电机的控制系统毕业论文

以ULN2003A为驱动器单片机的步进电机的控制系统毕业论文目录摘要 (1)Abstract (2)第一章绪论 (3)1.1 引言 (3)1.2 国外步进电机控制的研究 (3)1.3 本文研究容 (4)第二章步进电机概述 (6)2.1 步进电机的分类 (6)2.2 步进电机的特点 (6)2.3 步进电机的结构及工作原理 (8)2.3.1 结构 (8)2.3.2 对齿和错齿 (9)2.3.3 工作原理 (10)2.3.4 工作方式 (11)2.4 步进电机的常用术语 (11)2.5 步进电机的振荡和失步 (12)2.5.1 振荡 (12)2.5.2 失步 (13)2.6 步进电机的细分 (13)2.7 步进电机的矩频特性 (14)第三章步进电机的驱动系统 (15)3.1 步进电机的驱动系统简介 (15)3.2 单片机模块 (15)3.2.1 单片机简介 (15)3.2.2 STC89C52RC引脚功能说明 (17)3.2.3 单片机控制电路 (18)3.2.4 步进电机控制系统原理 (20)3.2.5步进电机的速度控制 (23)3.2.6 步进电机的位置控制 (24)3.3 步进电机驱动模块 (24)3.3.1 ULN驱动器简介 (24)3.3.2 ULN2003的作用 (24)3.4 显示模块 (26)3.4.1 1602LCD简介 (26)3.4.2 1602LCD的基本参数及引脚功能 (28)第四章步进电机控制器驱动程序的设计 (30)4.1 主程序流程图 (30)4.2 电机运行主流程 (30)4.3 键盘子程序流程 (31)总结 (33)参考文献 (34)致谢 (35)附录 (36)第一章绪论1.1 引言历史证明,一个国家的制造业水平在很大程度上可以体现国家的实力,国家的发展也在很大程度上依赖于先进的制造业,所以大多数国家都非常重视大力发展造业,二战后,计算机控制技术、微电子技术、信息和自动化技术有了迅速的发展,并在制造业中得到了愈来愈广泛的应用,先后出现了数控(NC)、计算机数控(CNC)、柔性制造单元(FMC)、柔性制造系统(FMS)、计算机辅助设计与制造(CAD/CAM)、计算机集成制造系统(CIMS)等多项先进制造技术与制造模式,推动着世界制造业进入一个崭新的阶段。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

51单片机步进电机正反转调速1602显示 - C51源代码 #include //51芯片管脚定义头文件 #include //内部包含延时函数 _nop_(); #define uchar unsigned char #define uint unsigned int #define delayNOP(); {_nop_();_nop_();_nop_();_nop_();}; uchar code FFW[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9}; uchar code REV[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1}; sbit K1 = P3^2; //运行与停止 sbit K2 = P3^3; //设定圈数 sbit K3 = P3^4; //方向转换 sbit K4 = P3^5; //速率调整 sbit BEEP = P3^6; //蜂鸣器 sbit LCD_RS = P2^0; sbit LCD_RW = P2^1; sbit LCD_EN = P2^2; bit on_off=0; //运行与停止标志 bit direction=1; //方向标志 bit rate_dr=1; //速率标志 bit snum_dr=1; //圈数标志 uchar code cdis1[ ] = {" STEPPING MOTOR "}; uchar code cdis2[ ] = {"CONTROL PROCESS"}; uchar code cdis3[ ] = {" STOP "}; uchar code cdis4[ ] = {"NUM: RATE: "}; uchar code cdis5[ ] = {" RUNNING "}; uchar m,v=0,q=0; uint number=0,number1=0; uchar snum=10,snum1=10; //预设定圈数 uchar rate=2; //预设定速率 uchar data_temp,data_temP1,data_temp2; /********************************************************/ /* /* 延时t毫秒 /* 11.0592MHz时钟,延时约1ms /* /********************************************************/ void delay(uint t) { uchar k; while(t--) { for(k=0; k<125; k++) { } } } /********************************************************/ void delayB(uchar x) //x*0.14MS { uchar i; while(x--) { for (i=0; i<13; i++) { } } } /********************************************************/ void beep() { uchar j; for (j=0;j<100;j++) { delayB(4); BEEP=!BEEP; //BEEP取反 } BEEP=1; //关闭蜂鸣器 delay(170); } /********************************************************/ /* /*检查LCD忙状态 /*lcd_busy为1时,忙,等待。为0时,闲,可写指令与数据。 /* /********************************************************/ bit lcd_busy() { bit result; LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; delayNOP(); result = (bit)(P0&0x80); LCD_EN = 0; return(result); } /********************************************************/ /* /*写指令数据到LCD /*RS=L,RW=L,E=高脉冲,D0-D7=指令码。 /* /********************************************************/ void lcd_wcmd(uchar cmd) { while(lcd_busy()); LCD_RS = 0; LCD_RW = 0; LCD_EN = 0; _nop_(); _nop_(); P0 = cmd; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0; } /********************************************************/ /* /*写显示数据到LCD /*RS=H,RW=L,E=高脉冲,D0-D7=数据。 /* /********************************************************/ void lcd_wdat(uchar dat) { while(lcd_busy()); LCD_RS = 1; LCD_RW = 0; LCD_EN = 0; P0 = dat; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0; } /********************************************************/ /* /* LCD初始化设定 /* /********************************************************/ void lcd_init() { delay(30); lcd_wcmd(0x38); //16*2显示,5*7点阵,8位数据 delay(5); lcd_wcmd(0x38); delay(5); lcd_wcmd(0x38); delay(5); lcd_wcmd(0x0c); //显示开,关光标 delay(5); lcd_wcmd(0x06); //移动光标 delay(5); lcd_wcmd(0x01); //清除LCD的显示内容 delay(5); } /********************************************************/ /* /* 设定显示位置 /* /********************************************************/ void lcd_pos(uchar pos) { lcd_wcmd(pos | 0x80); //数据指针=80+地址变量 } /********************************************************/ /* /* LCD1602初始显示子程序 /* /********************************************************/ void LCD_init_DIS() { delay(10); //延时 lcd_init(); //初始化LCD lcd_pos(0); //设置显示位置为第一行的第1个字符 m = 0; while(cdis1[m] != '\0') { //显示字符 lcd_wdat(cdis1[m]); m++; } lcd_pos(0x40); //设置显示位置为第二行第1个字符 m = 0; while(cdis2[m] != '\0') { lcd_wdat(cdis2[m]); //显示字符 m++; } delay(3000); //延时 lcd_pos(0); //设置显示位置为第一行的第1个字符 m = 0; while(cdis3[m] != '\0') { //显示字符 lcd_wdat(cdis3[m]); m++; } lcd_pos(0x40); //设置显示位置为第二行第1个字符 m = 0; while(cdis4[m] != '\0') { lcd_wdat(cdis4[m]); //显示字符 m++; } for(m=0;m<2;m++) {

相关文档
最新文档