AVR ATMega16 步进电机驱动程序.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
AVR ATMega16 步进电机驱动程序 这两天做步进电机的驱动成功,现将程序共享,愿起到抛砖引玉的作用。 此程序可驱动五引线步进电机,通过按键可控制步进电机的转速、方向、三种驱动方式,三种驱动方式分别为:单四拍驱动、双四拍驱动、单双八拍驱动,其中以单双八拍驱动转速最慢。具体联接方式在程序中有说明。 /************************************ *? ?? ???步进电机的M16驱动程序? ?? ???* * 功? ?能:用M16驱动步进电机? ?? ???* *? ?? ?? ?? ?实现三种驱动方式? ?? ???* *? ?? ?? ?? ?单四拍驱动、双四拍驱动? ? * *? ?? ?? ?? ?单双八拍驱动? ?? ?? ?? ?* * 驱动芯片:ULN2803? ?? ?? ?? ?? ?? ???* * 联接方式:PC0-3分别通过2803接A-D? ? * *? ?? ?? ?? ?步进电机公共端接+5V电源? ? * * 建立日期:2008年04月05日? ?? ?? ?? ?* * 作? ?者:铜河? ?? ?? ?? ?? ?? ???* * 版? ?本:V1.0? ?? ?? ?? ?? ?? ???* * 修改日期:2008年04月06日? ?? ?? ?? ?* * 主控芯片:M16? ?? ?? ?? ?? ?? ?? ?? ?* * 时钟频率:外部晶体 7.3728MHZ? ?? ???* * 编 译 器:ICCAVR 6.31A? ?? ?? ?? ?* ************************************/ #include iom16v.h #include macros.h #include delay.h #define RD_KEY() ((~(PINC|0x0F))4)//四按键接于PC4-PC7 unsigned char i=0;? ?? ?? ?? ?//转动计数 unsigned char m=1;? ?? ?? ?? ?//驱动方式参数 unsigned char n=0;? ?? ?? ?? ?//转动方向参数 unsigned int zhuansu=61500;? ? //转速数据 /**************************** *? ?? ???端口配置函数? ?? ???* ****************************/ void port_init(void) ? ?{ ? ?PORTA = 0x40; ? ?DDRA = 0x40; ? ?PORTB = 0x00; ? ?DDRB = 0x00; ? ?PORTC = 0xF0; ? ?DDRC = 0x0F; ? ?PORTD = 0x00; ? ?DDRD = 0x00; ? ?} /**************************** *? ?? ???正转操作函数? ?? ???* * 入? ?口:a 三种工作方式? ? * ****************************/ void bj_fs(unsigned char a) ? ?{ ? ?switch(a) ? ?? ? { ? ?? ? case 1:? ?? ?? ?? ?? ? //单四拍方式驱动 ? ?? ?? ???PORTC |= 1i;? ? //A、B、C、D驱动 ? ?? ?? ???i++; ? ?? ?? ???if(i=4)i=0; ? ?? ?? ???break; ? ?? ? case 2:? ?? ?? ?? ?? ? //双四拍方式驱动 ? ?? ?? ???if(i!=4)? ?? ???//AB、BC、CD、DA驱动 ? ?? ?? ?? ?? ?PORTC |= (1i)|(1(i-1)); ? ?? ?? ???else ? ?? ?? ?? ?? ?PORTC |= (1(i-1))|1; ? ?? ?? ???i++; ? ?? ?? ???if(i=5)i=1; ? ?? ?? ???break; ? ?? ? case 3:? ?? ?? ?? ?? ? //单双八拍方式驱动 ? ?? ?? ???if(i%2)? ?? ?? ?? ?//A、AB、B、BC、C、CD、D、DA驱动 ? ?? ?? ?? ?? ?{ ? ?? ?? ?? ?? ?if(i!=7) ? ?? ?? ?? ?? ?? ? PORTC |= (1(i/2))|(1(i/2+1)); ? ?? ?? ?? ?? ?else ? ?? ?? ?? ?? ?? ? PORTC |= (1(i/2))|1; ? ?? ?? ?

文档评论(0)

gualu91111 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档