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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機控制步進電機的仿真LCD12864顯示 帶源程序

  [復制鏈接]
跳轉到指定樓層
樓主
里面含有單片機控制步進電機的C語言程序及proteus仿真圖。

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit CS1=P1^6;    /*片選1*/
  5. sbit CS2=P1^7;    /*片選2*/
  6. sbit SEG_LE=P1^0;
  7. sbit LCD_LE=P1^1;
  8. sbit SEG_OE=P1^2;
  9. sbit LCD_OE=P1^3;

  10. uchar code seg[]=//數碼管:正向位置;共陽極;正向連接
  11. {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//0-9

  12. uchar code table_speed_num1[]=
  13. {
  14. 0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,/*1*/
  15. 0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,/*5*/
  16. 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,/*0*/
  17. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,/*.*/
  18. 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00/*0*/
  19. };                                                        //150.0
  20. uchar code table_speed_num2[]={
  21. 0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,/*7*/
  22. 0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,/*5*/
  23. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,/*.*/
  24. 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,/*0*/
  25. 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00/*0*/
  26. };                                                  //75.00
  27. uchar code table_speed_num3[]={
  28. 0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,/*3*/
  29. 0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,/*7*/
  30. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,/*.*/
  31. 0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,/*5*/
  32. 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00/*0*/
  33. };                                                 //37.50
  34. uchar code table_speed_num4[]={
  35. 0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,/*1*/
  36. 0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,/*8*/
  37. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,/*.*/
  38. 0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,/*7*/
  39. 0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00/*5*/
  40. };                                                //18.75
  41. uchar code table_speed_num5[]={
  42. 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,/*9*/
  43. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,/*.*/
  44. 0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,/*3*/
  45. 0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,/*7*/
  46. 0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00/*5*/
  47. };                                           //9.375

  48. uchar code table_direct_state_Y[]=
  49. {
  50. 0x00,0xFE,0x00,0xFC,0x00,0xFE,0x00,0xF2,0x12,0x1A,0x96,0x12,0x12,0xF2,0x02,0x00,0x20,0x1F,0x00,0x0F,0x00,0x7F,0x00,0x47,
  51. 0x20,0x10,0x0F,0x10,0x20,0x67,0x00,0x00,

  52. 0x00,0xFC,0x44,0x44,0x44,0xFC,0x10,0x90,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x00,0x00,0x07,0x04,0x04,0x04,0x07,0x00,0x00,
  53. 0x03,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,

  54. 0x40,0x30,0x2C,0xEB,0x28,0x28,0x08,0x40,0x40,0x40,0xFF,0x40,0x40,0x40,0x40,0x00,0x01,0x01,0x01,0x7F,0x21,0x11,0x09,0x00,
  55. 0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00
  56. };                                          //順時針

  57. uchar code table_direct_state_N[]=
  58. {
  59. 0x40,0x42,0xCC,0x00,0x00,0x08,0xC9,0x0E,0x08,0xF8,0x0C,0x0B,0xC8,0x08,0x00,0x00,0x40,0x20,0x1F,0x20,0x40,0x40,0x51,0x49,
  60. 0x47,0x41,0x41,0x41,0x41,0x40,0x40,0x00,

  61. 0x00,0xFC,0x44,0x44,0x44,0xFC,0x10,0x90,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x00,0x00,0x07,0x04,0x04,0x04,0x07,0x00,0x00,
  62. 0x03,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,

  63. 0x40,0x30,0x2C,0xEB,0x28,0x28,0x08,0x40,0x40,0x40,0xFF,0x40,0x40,0x40,0x40,0x00,0x01,0x01,0x01,0x7F,0x21,0x11,0x09,0x00,
  64. 0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00
  65. };                                          //逆時針



  66. uchar code table_state_roll[]=
  67. {
  68. 0x40,0x41,0xCE,0x04,0x00,0x20,0x22,0xA2,0x62,0x22,0xA2,0x22,0x22,0x22,0x20,0x00,0x40,0x20,0x1F,0x20,0x28,0x4C,0x4A,0x49,
  69. 0x48,0x4C,0x44,0x45,0x5E,0x4C,0x40,0x00,

  70. 0x10,0x08,0x84,0xC6,0x73,0x22,0x40,0x44,0x44,0x44,0xC4,0x44,0x44,0x44,0x40,0x00,0x02,0x01,0x00,0xFF,0x00,0x00,0x00,0x00,
  71. 0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,

  72. 0x00,0x00,0xFC,0x08,0x08,0x08,0x08,0xFF,0x08,0x08,0x08,0x08,0xFC,0x08,0x00,0x00,0x00,0x00,0x07,0x02,0x02,0x02,0x02,0xFF,
  73. 0x02,0x02,0x02,0x02,0x07,0x00,0x00,0x00,

  74. 0x00,0xC0,0xC0,0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  75. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
  76. };                                         //運行中...

  77. uchar code table_state_pause[]=
  78. {
  79. 0x80,0x92,0x9A,0x96,0xFB,0x52,0x52,0x80,0x7E,0x12,0x12,0x12,0xF2,0x12,0x10,0x00,0x00,0x00,0x00,0x7E,0x4B,0x4A,0x4B,0x4A,
  80. 0x4A,0x4A,0x4A,0x7E,0x01,0x00,0x00,0x00,

  81. 0x80,0x40,0x20,0xF8,0x07,0x02,0x04,0x74,0x54,0x55,0x56,0x54,0x74,0x04,0x04,0x00,0x00,0x00,0x00,0xFF,0x00,0x03,0x01,0x05,
  82. 0x45,0x85,0x7D,0x05,0x05,0x05,0x03,0x00,

  83. 0x00,0x00,0xFC,0x08,0x08,0x08,0x08,0xFF,0x08,0x08,0x08,0x08,0xFC,0x08,0x00,0x00,0x00,0x00,0x07,0x02,0x02,0x02,0x02,0xFF,
  84. 0x02,0x02,0x02,0x02,0x07,0x00,0x00,0x00,

  85. 0x00,0xC0,0xC0,0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  86. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
  87. };                                        //暫停中...

  88. uchar code stepmotor_Y_table[]={0x02,0x06,0x04,0x0C,0x08,0x09,0x01,0x03};//B-BC-C-CD-D-DA-A-AB-B 順時針 八拍
  89. uchar code stepmotor_N_table[]={0x01,0x09,0x08,0x0C,0x04,0x06,0x02,0x03};//A-AD-D-DC-C-CB-B-BA-A 逆時針 八拍
  90. uchar p; //控制轉一圈的八次轉動
  91. uchar direct;        //轉動方向標志
  92. uchar speed=3,delay=0;        //轉動速度標志

  93. extern display(uchar page,uchar column,uchar code *hzk,uchar num);        //顯示漢字函數
  94. extern display_char(uchar page,uchar column,uchar code *hzk,uchar num);         //顯示字符函數
  95. extern Keys_Scan();                 //按鍵檢測函數
  96. extern LCD_DIS();                 //LCD初始化函數
  97. //x=1時延時2ms
  98. void DelayMS(unsigned int x)
  99. {
  100.         unsigned int i,j;
  101.          for(i=x;i>0;i--)
  102.          {
  103.                  for(j=0;j<247;j++)
  104.                 ;
  105.         }       
  106. }
  107. /*********顯示速度數值函數****************/
  108. void dis_speed_num(uchar *v)       
  109. {
  110.         CS1=0;
  111.         CS2=1;
  112.         display_char(2,48,v,2);       

  113.         CS1=1;
  114.         CS2=0;
  115.         display_char(2,0,&v[32],3);
  116. }
  117. /*********顯示方向函數****************/
  118. void dis_direct_Y_N(uchar dir)
  119. {
  120.         CS1=1;
  121.         CS2=0;
  122.         if(dir==1)
  123.                 display(4,0,table_direct_state_Y,3);
  124.         if(dir==2)
  125.                 display(4,0,table_direct_state_N,3);
  126. }
  127. /*********顯示電機狀態函數****************/
  128. void dis_state_P_R(uchar *buffer)
  129. {
  130.         CS1=1;
  131.         CS2=0;
  132.         display(6,0,buffer,4);
  133. }

  134. void main()
  135. {
  136.         uchar k=0,i=0,j=0,key=0;
  137.         TMOD=0x11;
  138.         TH0=(65536-50000)/256;
  139.         TL0=(65536-50000)%256;
  140.         EA=1;
  141.         ET0=1;
  142.         SEG_OE=1;          //關數碼管輸出使能
  143.         LCD_OE=0;          //開LCD輸出使能
  144.         LCD_LE=1;          //關LCD鎖存輸出
  145.         LCD_DIS();
  146. //        TR0=1;       
  147.         while(1)
  148.         {
  149.                 while(key==0)
  150.                         key=Keys_Scan();   //檢測按鍵鍵值
  151.                 if(key==3)
  152.                 {
  153.                         direct=1;         //轉動方向標志為1,順時針轉動
  154.                         dis_direct_Y_N(direct);          
  155.                         key=0;
  156.                 }
  157.                 if(key==4)
  158.                 {
  159.                         direct=2;           //轉動方向標志為2,逆時針轉動
  160.                         dis_direct_Y_N(direct);
  161.                         key=0;
  162.                 }
  163.                 if(key==5)
  164.                 {
  165.                         TR0=0;                //關T0中斷,電機暫停轉動
  166.                         dis_state_P_R(table_state_pause);
  167.                         key=0;
  168.                 }
  169.                 if(key==6)
  170.                 {
  171.                         TR0=1;           //開T0中斷,電機開始轉動
  172.                         dis_state_P_R(table_state_roll);
  173.                         key=0;
  174.                 }
  175.                 if(key==1)
  176.                 {                       
  177.                         speed=speed-1;;        //轉動一次所需延時時間減少,轉動加速
  178.                         if(speed<=1)
  179.                                 speed=1;        //最少延時一次
  180.                         key=0;
  181.                 }
  182.                 if(key==2)
  183.                 {         
  184.                         speed=speed+1; //轉動一次所需延時時間增加,轉動減速
  185.                         if(speed>=5)
  186.                                 speed=5;   //最多延時五次
  187.                         key=0;
  188.                 }
  189.                 if(speed==1)          //顯示相應延時時間的速度數值
  190.                         dis_speed_num(table_speed_num1);
  191.                 if(speed==2)
  192.                         dis_speed_num(table_speed_num2);
  193.                 if(speed==3)
  194.                         dis_speed_num(table_speed_num3);
  195.                 if(speed==4)
  196.                         dis_speed_num(table_speed_num4);
  197.                 if(speed==5)
  198.                         dis_speed_num(table_speed_num5);
  199.                 LCD_LE=0;           //關LCD輸出使能
  200.                 SEG_OE=0;           //開數碼管輸出使能
  201.                 SEG_LE=1;           //關數碼管鎖存輸出
  202.                 P0=seg[speed]; //輸出當前速度檔位1-5,也就是延時時間
  203.                 SEG_LE=0;           //開數碼管鎖存輸出,鎖存輸出值
  204.                 LCD_LE=1;           //關LCD鎖存輸出
  205.                 DelayMS(100);  //延時一會,等待外圍器件工作,
  206.                 //沒有延時,在加速加速時可能會產生多加速或多減速
  207.         }       
  208. }
  209. /**********電機轉動函數************/
  210. ……………………

  211. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
步進電機.zip (136.81 KB, 下載次數: 130)


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

使用道具 舉報

沙發
ID:310802 發表于 2018-4-18 14:18 | 只看該作者
你的protues呢
回復

使用道具 舉報

板凳
ID:202803 發表于 2018-4-18 15:47 | 只看該作者
6666666666666
回復

使用道具 舉報

地板
ID:308785 發表于 2018-5-11 10:44 | 只看該作者
只要是這個的 我都要學習
回復

使用道具 舉報

5#
ID:92810 發表于 2018-9-25 11:16 | 只看該作者
表示看不懂。。。】偢杏X有點難得
回復

使用道具 舉報

6#
ID:406128 發表于 2018-10-8 00:14 來自觸屏版 | 只看該作者
感謝!待我學有所成定將回報社會。
回復

使用道具 舉報

7#
ID:301797 發表于 2018-10-20 17:12 | 只看該作者
謝謝 你的資料!
回復

使用道具 舉報

8#
ID:497052 發表于 2019-3-26 11:04 | 只看該作者
源程序,下載來看看
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产成人在线播放 | 精彩视频一区二区三区 | 伊人激情网 | 精品中文字幕一区二区三区 | 国产精品视频 | 亚洲欧美日韩精品久久亚洲区 | h在线看| 91操操操| 婷婷激情综合 | 久久久久国产精品 | 亚洲欧美在线视频 | 中文字幕在线精品 | 日韩中文一区 | 成人午夜激情 | 亚洲国产一区二区三区在线观看 | 国产精品久久久久免费 | 国产视频第一页 | 日韩精品一区二区三区中文在线 | 免费午夜视频 | 国产亚洲人成a在线v网站 | 日日摸日日碰夜夜爽亚洲精品蜜乳 | 国产a区 | 久久久国产精品入口麻豆 | 国产精品一区二区三 | 久久久青草婷婷精品综合日韩 | 精品久久久久久亚洲综合网 | 国产综合精品一区二区三区 | 精品久久久久久久久久久久 | 久久精品国产一区二区电影 | 亚洲午夜电影 | 免费黄色av | 99reav| 久久99这里只有精品 | 国产免费一区二区 | 亚洲在线一区 | 最新国产视频 | 国产成人精品一区二区三区在线观看 | 久久久99精品免费观看 | 成人福利在线视频 | 精品国产黄a∨片高清在线 www.一级片 国产欧美日韩综合精品一区二区 | 国产一区在线免费观看 |