步进电机驱动程序资料.doc_第1页
步进电机驱动程序资料.doc_第2页
步进电机驱动程序资料.doc_第3页
步进电机驱动程序资料.doc_第4页
步进电机驱动程序资料.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

此文档收集于网络,如有侵权,请联系网站删除步进电机驱动程序 采用热转印制作 PCB ,电路采用2相推挽全桥驱动,单片机采用 STC54C12C5404 学生的设计要求:具体的模式如下:五种模式选择 一:停止 二:顺时针转2分钟,停6分钟,循环; 三:逆时针转2分钟,停6分钟,循环; 四:顺指针转2分钟停6分钟,逆时针转2分钟停6分钟,循环; 五:顺指针转5分钟,逆时针转5分钟持续3小时,停9小時,循环 请将模式四和五放在首选用数字码显示模式 步进电机39BYG250 品牌: 北斗 型号: 39BYG 技术参数 步距角: 1.8 电流: 0.4 A 电阻: 27 重量: 0.130 kg 驱动电压: 12 V 相电流: 0.4 A 相数: 2 环境温度: 130 1代表程式1,2代表程式2 1位数码管,1个按钮 8圈/分, 每圈要分4步跳 /2010.8.26 /* 具体的模式如下:五种模式选择 0:停止 1:顺时针转2分钟,停6分钟,循环; 2:逆时针转2分钟,停6分钟,循环; 3:顺指针转2分钟停6分钟,逆时针转2分钟停6分钟,循环; 4:顺指针转5分钟,逆时针转5分钟持续3小时,停9小時,循环 模式四和五放在首选用数字码显示模式 1代表程式1,2代表程式2 1位数码管,1个按钮 8圈/分,68 每圈要分4步跳 ;*/ #include STC12C5410AD.H/头文件 #include intrins.h/头文件 #define uchar unsigned char/宏定义 #define uint unsigned int/宏定义 #define DPDR P2/并行数据接口定义 sbit key=P32;/按键 sbit AB=P35; sbit CP=P33; /sbit HHH=P16; sbit CLL=P34; bit Forward_Inversion_bit;/正转,/反转,标志 bit bit_bit; /1:正转 /0:反转 bit Start_Stop_bit;/启动,停止,标志 /1:启动 /0:停止 /uchar count_2; uint counter_3; uchar counter_4; uchar Forward_Tolerance_Counter;/正转容错记数器,保持步进电机不跳步 uchar Inversion_Tolerance_Counter;/反转容错记数器,保持步进电机不跳步 uchar Mode_Selection;/模式选择/数码管显示值 /0:停止 /1:顺时针转2分钟,停6分钟,循环; /2:逆时针转2分钟,停6分钟,循环; /3:顺指针转2分钟停6分钟,逆时针转2分钟停6分钟,循环; /4:顺指针转5分钟,逆时针转5分钟持续3小时,停9小時,循环 uchar Time_Counter_5;/时间计数器:200*5=1秒 uchar Time_Counter_60;/时间计数器:1秒*60=1分钟 uchar Time_Counter_x;/时间计数器:1分钟*x=x分钟 uchar Time_3_by_3;/时间计数器:3小时*3=9小时 uchar Time_30_by_30;/时间计数器:3小时*3=9小时 #define ISP_IAP_BYTE_READ 0x01/读 #define ISP_IAP_BYTE_PROGRAM 0x02/编程 #define ISP_IAP_SECTOR_ERASE 0x03/扇区擦除 #define ENABLE_ISP 0x85/等待时间,和对ISP_CONTR设置初值 #define EEPROM_ADDRESS_1 0x2800/第一扇区地址 2800-29FF #define EEPROM_ADDRESS_2 0x2A00/第二扇区地址 2A00-2BFF #define EEPROM_ADDRESS_3 0x2A01/第二扇区地址 2A00-2BFF /#define EEPROM_ADDRESS_3 0x2C00/第三扇区地址 2C00-2DFF /#define EEPROM_ADDRESS_4 0x2E00/第四扇区地址 2E00-2FFF uchar DATA_H_ADDRESS;/单片机内部 EEPROM 地址高字节 uchar DATA_L_ADDRESS;/单片机内部 EEPROM 地址低字节 uint sfr_16;/双字节缓存对单片机内部 EEPROM 地址字节的处理 uchar code DispTab_Digital=0xa0,0xf3,0x34,0x32,0x63,0x2a,0x28,0xb3,0x20,0x22,0xff;/数码管显示 /0;1;2;3;4;5; ; uchar code DispTab_Inversion=0x60,0x09,0x12,0x84;/反转 /d=+,c=-; /b=+,a=-; /c=+,d=-; /a=+,b=-; /* uchar code DispTab_Forward=0xa3,0x3a,0xac,0xca;/正转 /a=-,b=+;1010 0011=0xa3 /c=-,d=+;0011 1010=0x3a /a=+,b=-;1010 1100=0xac /c=+,d=-;1000 1010=0xca*/ uchar code DispTab_Forward=0x84,0x12,0x09,0x60;/正转 /a=-,b=+;1010 0011=0xa3 /c=-,d=+;0011 1010=0x3a /a=+,b=-;1010 1100=0xac /c=+,d=-;1000 1010=0xca void delay(uint z)/延时为 1ms uchar x,x1; for(;z0;z-) for(x=0;x114;x+) for(x1=0;x1=8; DATA_H_ADDRESS=sfr_sfr;/高地址字节 ISP_CONTR=ENABLE_ISP; ISP_CMD=ISP_IAP_BYTE_READ; ISP_ADDRH=DATA_H_ADDRESS; ISP_ADDRL=DATA_L_ADDRESS; /EA=0; ISP_TRIG=0x46; ISP_TRIG=0xb9; _nop_(); /EA=1; /ISP_DATA/读出的数据在 ISP_DATA IAP_Disable(); void Byte_program(uchar Byte_data)/编程/Byte_data为要保存的数据 uint sfr_sfr; sfr_sfr=sfr_16; DATA_L_ADDRESS=sfr_sfr;/低地址字节 sfr_sfr=8; DATA_H_ADDRESS=sfr_sfr;/高地址字节 ISP_CONTR=ENABLE_ISP; ISP_CMD=ISP_IAP_BYTE_PROGRAM; ISP_ADDRH=DATA_H_ADDRESS; ISP_ADDRL=DATA_L_ADDRESS; ISP_DATA=Byte_data; /EA=0; ISP_TRIG=0x46; ISP_TRIG=0xb9; _nop_(); /EA=1; / IAP_Disable(); void Sector_Erase()/扇区擦除 uint sfr_sfr; sfr_sfr=sfr_16; DATA_L_ADDRESS=sfr_sfr;/低地址字节 sfr_sfr=8; DATA_H_ADDRESS=sfr_sfr;/高地址字节 ISP_CONTR=ENABLE_ISP; ISP_CMD=ISP_IAP_SECTOR_ERASE; ISP_ADDRH=DATA_H_ADDRESS; ISP_ADDRL=DATA_L_ADDRESS; /EA=0; ISP_TRIG=0x46; ISP_TRIG=0xb9; _nop_(); /EA=1; /IAP_Disable();/关闭 IAP void Digital_Tube()/数码管显示 /uchar ii,temp,a; /P1=DispTab_Digital2; P1=DispTab_DigitalMode_Selection; /HHH=0; void Key_Detection()/按键检测 if(Mode_Selection4) Mode_Selection=0; if(key=0) delay(20); if(key=0) Digital_Tube();/数码管显示 while(key=0); delay(20); if(Mode_Selection=0) Mode_Selection=1; Start_Stop_bit=1; Forward_Inversion_bit=1; else if(Mode_Selection=1) Mode_Selection=2; Start_Stop_bit=1; Forward_Inversion_bit=0; else if(Mode_Selection=2) Mode_Selection=3; Start_Stop_bit=1; Forward_Inversion_bit=1; else if(Mode_Selection=3) Mode_Selection=4; Start_Stop_bit=1; Forward_Inversion_bit=1; else if(Mode_Selection=4) Mode_Selection=0; Start_Stop_bit=0; Forward_Inversion_bit=1; else if(Mode_Selection=0) Mode_Selection=1; /Start_Stop_bit=0; /Forward_Inversion_bit=1; Time_Counter_5=0;/时间计数器:200*5=1秒 Time_Counter_60=0;/时间计数器:1秒*60=1分钟 Time_Counter_x=0;/时间计数器:1分钟*x=x分钟 Time_3_by_3=0;/时间计数器:3小时*3=9小时 counter_3=0; counter_4=0; bit_bit=0; sfr_16=EEPROM_ADDRESS_1; Sector_Erase();/扇区擦除 Byte_program(Mode_Selection);/编程 IAP_Disable(); Digital_Tube();/数码管显示 void Database_Refresh()/刷新数据库 sfr_16=EEPROM_ADDRESS_1; Byte_read();/读 Mode_Selection=ISP_DATA; if(Mode_Selection4) Mode_Selection=0; sfr_16=EEPROM_ADDRESS_2; Byte_read();/读 Forward_Tolerance_Counter=ISP_DATA; sfr_16=EEPROM_ADDRESS_3; Byte_read();/读 Inversion_Tolerance_Counter=ISP_DATA; if(Mode_Selection=0) Start_Stop_bit=0; if(Mode_Selection=2) Start_Stop_bit=1; Forward_Inversion_bit=0; if(Mode_Selection=1)|(Mode_Selection=1) Start_Stop_bit=1; Forward_Inversion_bit=1; /if(Mode_Selection=3) / / Start_Stop_bit=1; / Forward_Inversion_bit=1; / /else / / Start_Stop_bit=1; / Forward_Inversion_bit=1; / void main() /uchar i; init();/单片机硬件资源初始化 Database_Refresh();/刷新数据库 Digital_Tube();/数码管显示 TR1=0; while(1) Key_Detection();/按键检测 WDT_CONTR=0x3d;/看门狗 delay(27);/27 if(Start_Stop_bit=1)/启动,停止,标志 if(Forward_Inversion_bit=1)/正转,/反转,标志 Forward_Tolerance_Counter+; if(Forward_Tolerance_Counter3) Forward_Tolerance_Counter=0; DPDR=DispTab_ForwardForward_Tolerance_Counter; if(Forward_Tolerance_Counter=0) Inversion_Tolerance_Counter=1; if(Forward_Tolerance_Counter=1) Inversion_Tolerance_Counter=0; if(Forward_Tolerance_Counter=2) Inversion_Tolerance_Counter=3; if(Forward_Tolerance_Counter=3) Inversion_Tolerance_Counter=2; else if(Forward_Inversion_bit=0)/反转 Inversion_Tolerance_Counter+; if(Inversion_Tolerance_Counter3) Inversion_Tolerance_Counter=0; DPDR=DispTab_InversionInversion_Tolerance_Counter; if(Inversion_Tolerance_Counter=0) Forward_Tolerance_Counter=1; if(Inversion_Tolerance_Counter=1) Forward_Tolerance_Counter=0; if(Inversion_Tolerance_Counter=2) Forward_Tolerance_Counter=3; if(Inversion_Tolerance_Counter=3) Forward_Tolerance_Counter=2; sfr_16=EEPROM_ADDRESS_2; Sector_Erase();/扇区擦除 Byte_program(Forward_Tolerance_Counter);/编程 sfr_16=EEPROM_ADDRESS_3; Byte_program(Inversion_Tolerance_Counter);/编程 IAP_Disable(); if(bit_bit=0) counter_3+; if(counter_3=50) counter_3=0; Start_Stop_bit=0; bit_bit=1; if(bit_bit=1) counter_4+; if(counter_4=20) counter_4=0; Start_Stop_bit=1; bit_bit=0; if(Start_Stop_bit=0)/启动,停止,标志 DPDR=0xaa; 精品文档励志美文美句摘抄 1不要放弃自己就是真正的坚强,虚心就是坚强,努力就是坚强,从头再来就是坚强,正直就是坚强,学会坚强之前要学会如何爱惜自己 2人生,就没有,永远的悲痛;也没有,永远的欢欣能使我们坚强的,往往不是顺境,而是逆境;能让我们醒悟的,往往不是高兴,而是伤心学会忍受,懂得艰辛,于曲折中前进 3人都说比天空和大地更远的距离是人与人的距离,因为人心里都会藏匿太多的猜忌和戒备,想要快乐就甩开生命中这些过于沉重,却又不必要的行李吧,生命中有爱就足够了试着给周围你所熟识的还有你还陌生的人一个真诚无惕的微笑吧,它可以触摸到他人的心灵,微笑是有感染力有连带性的,它会无声的渗透进每个易感的心灵,更会让更多的心灵为之感动,心中有爱就会快乐,就会让微笑发自心底,灿烂在脸上 4千万不要因为自己已经到了结婚年龄而草率结婚想结婚,就要找一个能和你心心相印相辅相携的伴侣不要因为放纵和游戏而恋爱,不要因为恋爱而影响工作和事业,更不要因一桩草率而失败的婚姻而使人生受阻感情用事往往会因小失大 5你要从现在开始,微笑着面对生活,不要抱怨生活给了你太多的磨难,不要抱怨生活中有太多的曲折,不要抱怨生活中存在的不公当你走过世间的繁华与喧嚣,阅尽世事,你会幡然明白:人生不会太圆满,再苦也要笑一笑! 6不要让灰色的乌云笼罩一辈子,生命中还有很多美好的不要让其遮盖,不要因为一片乌云毁了一切,人生中还有很多可以去把握 7每一个成功者的背后都有一个心路的旅程,雨中漫步你不会比别人先一步看到彩虹 8面对人生的烦恼与挫折,最重要的是摆正自己的心态,积极面对一切再苦再累,也要保持微笑笑一笑,你的人生会更美好! 9命运,不过是失败者无聊的自慰,不过是懦怯者的解嘲人们的前途只能靠自己的意志自己的努力来决定 10你或许无法改变身高和体形,但是可以改变你的态度我们每个人都有力量去培养和保持为我所用的积极态度,提高我们的人生质量,完成我们的人生目标态度是人生理想的昭示,而非既有成果的反映改变你的态度,就可以改变你的人生 11不要像玻璃那样脆弱有的人眼睛总盯着自己,所以长不高看不远;总是喜欢怨天尤人,也使别人无比厌烦没有苦中苦,哪来甜中甜?不要像玻璃那样脆弱,而应像水晶一样透明,太阳一样辉煌,腊梅一样坚强既然睁开眼睛享受风的清凉,就不要埋怨风中细小的沙粒 12常言道,失败是成功之母,而我却认为,失败是一种解脱和潇洒,也是一种“得”人生中,有成功有失败,成功是鲜花,失败同样也精彩 13该来的会来,该走的会走,有时候离开并不意味着结束,而是另一种开始 14人生,无非只有三天,昨天,今天,明天昨天很长,说不清有多少天,但不管有多少天,不管是受到挫折,还是取得辉煌,都只能代表过去,昨天你失败了,将来可能会成功,昨天你辉煌了,将来你可能会萎靡不振,只有把过去的挫折和辉煌都变成今天的基石,才能登上美好的明天 15每个人都有每个人的做法,每个人都有每个人的想法,别人做什么,想什么,我们无法掌握,也无法控制我们能做的,就是做好自己,管

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论