久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3760|回復: 0
打印 上一主題 下一主題
收起左側

AVR單片機驅動二相步進電機(單極驅動)簡易程序,帶串口控制

[復制鏈接]
跳轉到指定樓層
樓主
ID:76127 發表于 2015-4-8 21:15 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

  1. AVR單片機驅動二相步進電機(單極驅動)簡易程序,帶串口控制。
  2. 編譯器為ICC6.31A;
  3. #include"iom16v.h"
  4. #include"macros.h"
  5. #define uint unsigned int
  6. #define uchar unsigned char
  7. #pragma interrupt_handler usart:14
  8. uchar i;
  9. uchar  const *p;
  10. uchar zf=1; //電機正反轉標志;
  11. uchar  k1=5;
  12. //uchar const timer2dath[10]={};
  13. //uchar const timer2datl[10]={};
  14. unsigned char const suzhu1[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
  15.                       0x77,0x7c,0x39,0x5e,0x79,0x71};
  16. uchar const bjdjdat[48]={0x80,0xa0,0x20,0x60,0x40,0x50,0x10,0x90,
  17.                            0x80,0x90,0x10,0x50,0x40,0x60,0x20,0xa0,
  18.          0x80,0x20,0x40,0x10,0x80,0x20,0x40,0x10,
  19.          0x80,0x10,0x40,0x20,0x80,0x10,0x40,0x20,
  20.          0xa0,0x60,0x50,0x90,0xa0,0x60,0x50,0x90,
  21.          0xa0,0x90,0x50,0x60,0xa0,0x90,0x50,0x60
  22.           };//設置單片機IO口高低電平數據組,用以驅動步進電機的各相按需通電;
  23. uint const timer1dat[11]={36000,23000,13000,7000,4300,3000,2500,2100,1800,1700,0};//定時器1定時數據,用于控制電機的轉速,定時越短轉速越快;            
  24. uchar uartdat[4]={0,0,0,0}; //劃出串行通信時所需的寄存器;
  25. uchar add,open,jslopen;
  26. void siansi(unsigned int dat,unsigned char bit,unsigned int time)//數碼管顯示函數
  27. {
  28. //PORTA&=~BIT(4);
  29. PORTC&=~BIT(7);
  30. PORTA&=~0x17;
  31. PORTB=suzhu1[dat];
  32. PORTA|=bit ;
  33. PORTA|=BIT(4);
  34. PORTC|=BIT(7);
  35. while(time--);

  36. }        
  37. void ioinit()//IO口初始化;
  38. {
  39. DDRB=0XFF;
  40. DDRD=0XF3;
  41. DDRA|=0X17;
  42. DDRC|=0X80;
  43. PORTD|=0X0f;
  44. }
  45. void usart()//串行接收中斷處理;
  46. {
  47. uchar a;
  48. a=UDR;
  49. if(a==168)
  50. {
  51.   open=1;
  52.   add=0;
  53. }
  54. if(a==138&&open)
  55. {
  56.   open=0;
  57.   uartdat[add]=a;
  58.   jslopen=1;
  59. }
  60. if(open)
  61. {
  62. uartdat[add]=a;
  63. add++;
  64. }
  65. }
  66. void jsl()//一幀數據處理;
  67. {
  68. uchar j;
  69. jslopen=0;
  70. switch(uartdat[1])
  71. {
  72.   case 1:
  73.   if(uartdat[2])TIMSK|=0X04;
  74.   else TIMSK&=~0X04;
  75.   break;
  76.   case 2:
  77.   if(uartdat[2]>0)
  78.   k1=uartdat[2]-1;
  79.   else k1=10;
  80.   break;
  81.   case 3:
  82.   if(uartdat[2]&&!zf)p=p-8,zf=1;
  83.   if(!uartdat[2]&&zf)p=p+8,zf=0;
  84.   break;
  85.   case 4:
  86. if(uartdat[2]==1&&zf)p=bjdjdat;
  87. if(uartdat[2]==1&&!zf)p=bjdjdat+8;
  88. if(uartdat[2]==2&&zf)p=bjdjdat+16;
  89. if(uartdat[2]==2&&!zf)p=bjdjdat+24;
  90. if(uartdat[2]==3&&zf)p=bjdjdat+32;
  91. if(uartdat[2]==3&&!zf)p=bjdjdat+40;
  92.   break;
  93. }
  94. for(j=0;j<4;j++)
  95. {
  96.   /* 等待發送緩沖器為空 */
  97.   while ( !( UCSRA & (1<<UDRE)) )
  98. ;
  99. /* 將數據放入緩沖器,發送數據 */
  100. UDR=uartdat[j];
  101. }
  102. }
  103. void uartinit()//串行口初始化;
  104. {
  105. UCSRA=0X00;
  106. UCSRB=0X98;
  107. UCSRC=0X86;
  108. UBRRH=0X00;
  109. UBRRL=71;
  110. SREG|=0X80;
  111. }
  112. #pragma interrupt_handler timer1:9
  113. void timer1() //定時器1中斷處理;
  114. {
  115. TCNT1=65536-timer1dat[k1];
  116. i++;
  117. if(i>7)i=0;
  118. PORTD&=0X0F;
  119. if(k1==10)return;
  120. PORTD|=p[i];
  121. }
  122. void timer1init()
  123. {
  124. TCCR1A=0X00;
  125. TCCR1B=0X02;
  126. TIMSK|=0X04;
  127. }
  128. void main(void)//主程序;
  129. {
  130. p=bjdjdat;
  131. uartinit();
  132. ioinit();
  133. timer1init();
  134. while(1)
  135. {
  136.   siansi(timer1dat[k1]%10,7,1000);
  137.   siansi(timer1dat[k1]%100/10,6,1000);
  138.   siansi(timer1dat[k1]%1000/100,5,1000);
  139.   siansi(timer1dat[k1]%10000/1000,4,1000);
  140.   siansi(timer1dat[k1]/10000,3,1000);
  141.   if(zf)siansi(14,2,1000);
  142.   else siansi(15,2,1000);
  143.   if(jslopen)jsl();

  144. }
  145. }
復制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧区一欧区二欧区三免费 | 东京av男人的天堂 | 久久精品无码一区二区三区 | 第四色影音先锋 | 日本午夜一区 | 欧美日韩国产一区二区三区 | 日韩精品免费视频 | 欧美精品三区 | 精品粉嫩超白一线天av | 欧美日韩1区2区3区 欧美久久一区 | 91最新在线视频 | 男人电影天堂 | 中文在线亚洲 | 成人午夜电影在线观看 | 久久久久九九九女人毛片 | 成人亚洲在线 | 久久这里只有 | 亚洲视频一区二区三区 | 尤物在线精品视频 | 性色av香蕉一区二区 | 涩爱av一区二区三区 | 97精品久久 | 一级全黄少妇性色生活免费看 | 欧美国产91 | 精品国产区 | 国产综合精品一区二区三区 | 岛国毛片在线观看 | 天天夜夜人人 | 国产欧美视频一区 | 日韩有码在线观看 | 夜色www国产精品资源站 | 亚洲色图网址 | 国内av在线 | 亚洲国产精品久久久久婷婷老年 | 亚洲精品久久久久久久久久久久久 | 人人干人人玩 | 亚洲成人精选 | 波多野结衣电影一区 | 中文字幕一区二区在线观看 | 色婷婷狠狠 | 欧美韩一区二区 |