找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 10300|回复: 12
打印 上一主题 下一主题
收起左侧

MSP430直流电机控制以及测速+仿真+源代码

  [复制链接]
跳转到指定楼层
楼主
本设计测试部分采用测周期发,12864液晶显示,如有不足,欢迎指教


MSP430直流电机控制仿真原理图

下面是部分单片机程序源码预览:
  1. /*
  2. * LCD_12864.c
  3. *
  4. *  Created on: 2016年6月15日
  5. *      Author: Jack zhao
  6. */
  7. #include<MSP430F249.h>
  8. #include "LCD_12864.h"
  9. #define uchar unsigned char
  10. #define uint unsigned int

  11. uchar DIR_S[]={
  12.                 /*--  文字:  顺  --*/
  13.                 /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  14.                 0x00,0xFE,0x00,0xFC,0x00,0xFF,0x00,0xF2,0x12,0x1A,0xD6,0x12,0x12,0xF2,0x02,0x00,
  15.                 0x40,0x3F,0x00,0x3F,0x00,0xFF,0x80,0x4F,0x20,0x18,0x07,0x10,0x20,0x4F,0x80,0x00,

  16.                 /*--  文字:  时  --*/
  17.                 /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  18.                 0x00,0xFC,0x84,0x84,0x84,0xFC,0x00,0x10,0x10,0x10,0x10,0x10,0xFF,0x10,0x10,0x00,
  19.                 0x00,0x3F,0x10,0x10,0x10,0x3F,0x00,0x00,0x01,0x06,0x40,0x80,0x7F,0x00,0x00,0x00,

  20.                 /*--  文字:  针  --*/
  21.                 /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  22.                 0x40,0x20,0x38,0xE7,0x24,0x24,0x44,0x40,0x40,0x40,0xFF,0x40,0x40,0x40,0x40,0x00,
  23.                 0x01,0x01,0x01,0x7F,0x21,0x11,0x09,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,
  24. };

  25. uchar DIR_N[]={
  26.                 /*--  文字:  逆  --*/
  27.                 /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  28.                 0x40,0x42,0xCC,0x00,0x08,0xC8,0x09,0x0E,0x08,0xF8,0x08,0x0C,0x0B,0xC8,0x08,0x00,
  29.                 0x40,0x20,0x1F,0x20,0x40,0x63,0x52,0x4A,0x46,0x43,0x42,0x42,0x42,0x47,0x40,0x00,

  30.                 /*--  文字:  时  --*/
  31.                 /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  32.                 0x00,0xFC,0x84,0x84,0x84,0xFC,0x00,0x10,0x10,0x10,0x10,0x10,0xFF,0x10,0x10,0x00,
  33.                 0x00,0x3F,0x10,0x10,0x10,0x3F,0x00,0x00,0x01,0x06,0x40,0x80,0x7F,0x00,0x00,0x00,

  34.                 /*--  文字:  针  --*/
  35.                 /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  36.                 0x40,0x20,0x38,0xE7,0x24,0x24,0x44,0x40,0x40,0x40,0xFF,0x40,0x40,0x40,0x40,0x00,
  37.                 0x01,0x01,0x01,0x7F,0x21,0x11,0x09,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,
  38. };

  39. uchar  num1[]={
  40.                 /*--  文字:  课  --*/
  41.                 /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  42.                 0x40,0x42,0xCC,0x00,0x00,0x00,0xFE,0x92,0x92,0xFE,0x92,0x92,0xFE,0x00,0x00,0x00,
  43.                 0x00,0x00,0x3F,0x10,0x08,0x22,0x12,0x0A,0x06,0xFF,0x06,0x0A,0x12,0x22,0x20,0x00,

  44.                 /*--  文字:  程  --*/
  45.                 /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  46.                 0x24,0x24,0xA4,0xFE,0x23,0x22,0x00,0x3E,0x22,0x22,0x22,0x22,0x22,0x3E,0x00,0x00,
  47.                 0x08,0x06,0x01,0xFF,0x01,0x06,0x40,0x49,0x49,0x49,0x7F,0x49,0x49,0x49,0x41,0x00,

  48.                 /*--  文字:  设  --*/
  49.                 /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  50.                 0x40,0x40,0x42,0xCC,0x00,0x40,0xA0,0x9E,0x82,0x82,0x82,0x9E,0xA0,0x20,0x20,0x00,
  51.                 0x00,0x00,0x00,0x3F,0x90,0x88,0x40,0x43,0x2C,0x10,0x28,0x46,0x41,0x80,0x80,0x00,

  52.                 /*--  文字:  计  --*/
  53.                 /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  54.                 0x40,0x40,0x42,0xCC,0x00,0x40,0x40,0x40,0x40,0xFF,0x40,0x40,0x40,0x40,0x40,0x00,
  55.                 0x00,0x00,0x00,0x7F,0x20,0x10,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
  56. };

  57. uchar  num[]={
  58.                 /*--  文字:  电  --*/
  59.                 /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  60.                 0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0xFF,0x88,0x88,0x88,0x88,0xF8,0x00,0x00,0x00,
  61.                 0x00,0x00,0x1F,0x08,0x08,0x08,0x08,0x7F,0x88,0x88,0x88,0x88,0x9F,0x80,0xF0,0x00,

  62.                 /*--  文字:  机  --*/
  63.                 /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  64.                 0x10,0x10,0xD0,0xFF,0x90,0x10,0x00,0xFE,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,
  65.                 0x04,0x03,0x00,0xFF,0x00,0x83,0x60,0x1F,0x00,0x00,0x00,0x3F,0x40,0x40,0x78,0x00,



  66.                 /*--  文字:  控  --*/
  67.                 /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  68.                 0x10,0x10,0x10,0xFF,0x90,0x20,0x98,0x48,0x28,0x09,0x0E,0x28,0x48,0xA8,0x18,0x00,
  69.                 0x02,0x42,0x81,0x7F,0x00,0x40,0x40,0x42,0x42,0x42,0x7E,0x42,0x42,0x42,0x40,0x00,

  70.                 /*--  文字:  制  --*/
  71.                 /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  72.                 0x40,0x50,0x4E,0x48,0x48,0xFF,0x48,0x48,0x48,0x40,0xF8,0x00,0x00,0xFF,0x00,0x00,
  73.                 0x00,0x00,0x3E,0x02,0x02,0xFF,0x12,0x22,0x1E,0x00,0x0F,0x40,0x80,0x7F,0x00,0x00,

  74.                 /*--  文字:  调  --*/
  75.                 /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  76.                 0x40,0x42,0xCC,0x00,0x00,0xFE,0x82,0x92,0x92,0xFE,0x92,0x92,0x82,0xFE,0x00,0x00,
  77.                 0x00,0x00,0x3F,0x10,0x88,0x7F,0x00,0x1E,0x12,0x12,0x12,0x5E,0x80,0x7F,0x00,0x00,


  78.                 /*--  文字:  速  --*/
  79.                 /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  80.                 0x40,0x40,0x42,0xCC,0x00,0x04,0xF4,0x94,0x94,0xFF,0x94,0x94,0xF4,0x04,0x00,0x00,
  81.                 0x00,0x40,0x20,0x1F,0x20,0x48,0x44,0x42,0x41,0x5F,0x41,0x42,0x44,0x48,0x40,0x00,

  82.                 /*--  文字:  系  --*/
  83.                 /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  84.                 0x00,0x00,0x22,0x32,0x2A,0xA6,0xA2,0x62,0x21,0x11,0x09,0x81,0x01,0x00,0x00,0x00,
  85.                 0x00,0x42,0x22,0x13,0x0B,0x42,0x82,0x7E,0x02,0x02,0x0A,0x12,0x23,0x46,0x00,0x00,



  86.                 /*--  文字:  统  --*/
  87.                 /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  88.                 0x20,0x30,0xAC,0x63,0x30,0x00,0x88,0xC8,0xA8,0x99,0x8E,0x88,0xA8,0xC8,0x88,0x00,
  89.                 0x22,0x67,0x22,0x12,0x12,0x80,0x40,0x30,0x0F,0x00,0x00,0x3F,0x40,0x40,0x71,0x00,

  90. };

  91. uchar num2[]={
  92.                 /*--  文字:  转  --*/
  93.                 /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  94.                 0xC8,0xB8,0x8F,0xE8,0x88,0x88,0x40,0x48,0x48,0xE8,0x5F,0x48,0x48,0x48,0x40,0x00,
  95.                 0x08,0x18,0x08,0xFF,0x04,0x04,0x00,0x02,0x0B,0x12,0x22,0xD2,0x0A,0x06,0x00,0x00,

  96.                 /*--  文字:  速  --*/
  97.                 /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  98.                 0x40,0x40,0x42,0xCC,0x00,0x04,0xF4,0x94,0x94,0xFF,0x94,0x94,0xF4,0x04,0x00,0x00,
  99.                 0x00,0x40,0x20,0x1F,0x20,0x48,0x44,0x42,0x41,0x5F,0x41,0x42,0x44,0x48,0x40,0x00,

  100.                 /*--  文字:  :  --*/
  101.                 /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  102.                 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  103.                 0x00,0x00,0x36,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  104. };

  105. uchar num3[]={
  106.                 /*--  文字:  转  --*/
  107.                 /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  108.                 0xC8,0xB8,0x8F,0xE8,0x88,0x88,0x40,0x48,0x48,0xE8,0x5F,0x48,0x48,0x48,0x40,0x00,
  109.                 0x08,0x18,0x08,0xFF,0x04,0x04,0x00,0x02,0x0B,0x12,0x22,0xD2,0x0A,0x06,0x00,0x00,

  110.                 /*--  文字:  向  --*/
  111.                 /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  112.                 0x00,0xF8,0x08,0x08,0x0C,0xCA,0x49,0x48,0x48,0xC8,0x08,0x08,0x08,0xF8,0x00,0x00,
  113.                 0x00,0xFF,0x00,0x00,0x00,0x1F,0x08,0x08,0x08,0x1F,0x00,0x40,0x80,0x7F,0x00,0x00,

  114.                 /*--  文字:  :  --*/
  115.                 /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  116.                 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  117.                 0x00,0x00,0x36,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  118. };

  119. uchar shuzi[]={
  120.                 /*--  文字:  0  --*/
  121.                 /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
  122.                 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,

  123.                 /*--  文字:  1  --*/
  124.                 /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
  125.                 0x00,0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,

  126.                 /*--  文字:  2  --*/
  127.                 /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
  128.                 0x00,0x70,0x08,0x08,0x08,0x08,0xF0,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,

  129.                 /*--  文字:  3  --*/
  130.                 /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
  131.                 0x00,0x30,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x18,0x20,0x21,0x21,0x22,0x1C,0x00,

  132.                 /*--  文字:  4  --*/
  133.                 /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
  134.                 0x00,0x00,0x80,0x40,0x30,0xF8,0x00,0x00,0x00,0x06,0x05,0x24,0x24,0x3F,0x24,0x24,

  135.                 /*--  文字:  5  --*/
  136.                 /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
  137.                 0x00,0xF8,0x88,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x20,0x20,0x20,0x11,0x0E,0x00,

  138.                 /*--  文字:  6  --*/
  139.                 /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
  140.                 0x00,0xE0,0x10,0x88,0x88,0x90,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x20,0x1F,0x00,

  141.                 /*--  文字:  7  --*/
  142.                 /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
  143.                 0x00,0x18,0x08,0x08,0x88,0x68,0x18,0x00,0x00,0x00,0x00,0x3E,0x01,0x00,0x00,0x00,

  144.                 /*--  文字:  8  --*/
  145.                 /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
  146.                 0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,

  147.                 /*--  文字:  9  --*/
  148.                 /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
  149.                 0x00,0xF0,0x08,0x08,0x08,0x10,0xE0,0x00,0x00,0x01,0x12,0x22,0x22,0x11,0x0F,0x00,

  150. };

  151. uchar RMP[]={
  152.                 /*--  文字:  r  --*/
  153.                 /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
  154.                 0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00,

  155.                 /*--  文字:  /  --*/
  156.                 /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
  157.                 0x00,0x00,0x00,0x00,0xC0,0x38,0x04,0x00,0x00,0x60,0x18,0x07,0x00,0x00,0x00,0x00,

  158.                 /*--  文字:  m  --*/
  159.                 /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
  160.                 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,

  161.                 /*--  文字:  i  --*/
  162.                 /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
  163.                 0x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,

  164.                 /*--  文字:  n  --*/
  165.                 /*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
  166.                 0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,
  167. };

  168. void left()                 //左半屏
  169. {
  170.         P6OUT&=~BIT0;//cs1=0;
  171.         P6OUT|=BIT1;//cs2=1;
  172. }

  173. void right()                 //右半屏
  174. {
  175.         P6OUT|=BIT0;//cs1=1;
  176.         P6OUT&=~BIT1;//cs2=0;
  177. }
  178. //判忙
  179. void busy_12864()
  180. {
  181.         do{
  182.         P6OUT&=~BIT4;//e=0;
  183.         _NOP();
  184.         P6OUT&=~BIT2;//rs=0;
  185.         P6OUT|=BIT3;//rw=1;
  186.             P5OUT=0x00;
  187.         P6OUT|=BIT4;//e=1;

  188.         P6OUT&=~BIT4;//e=0;

  189.           }while(!(bflag==0X00));
  190. }
  191. //命令写入
  192. void wreg(uchar c)
  193. {
  194.         busy_12864();
  195.         P6OUT&=~BIT2;//rs=0;
  196.         P6OUT&=~BIT3;//rw=0;
  197.         P6OUT&=~BIT4;//E=0
  198.         _NOP();
  199.         _NOP();
  200.         P5OUT=c;
  201.         _NOP();
  202.         _NOP();
  203.         _NOP();
  204.         _NOP();
  205.         P6OUT|=BIT4;//e=1;
  206.         _NOP();
  207.         _NOP();
  208.         _NOP();
  209.         _NOP();
  210.         P6OUT&=~BIT4;//e=0;
  211. }
  212. //数据写入
  213. void wdata(uchar c)
  214. {
  215.         busy_12864();
  216.         P6OUT|=BIT2;//rs=1
  217.         P6OUT&=~BIT3;//rw=0
  218.         P5OUT=c;
  219.         _NOP();
  220.         _NOP();
  221.         _NOP();
  222.         _NOP();
  223.         P6OUT|=BIT4;//e=1
  224.         _NOP();
  225.         _NOP();
  226.         _NOP();
  227.         _NOP();
  228.         P6OUT&=~BIT4;
  229. }
  230. //显示初始页
  231. void pagefirst(uchar c)
  232. {
  233.         uchar i=c;
  234.         c=i|0xb8;
  235.         busy_12864();
  236.         wreg(c);
  237. }
  238. //设置显示初始列
  239. void linefirst(uchar c)
  240. {
  241.         uchar i=c;
  242.         c=i|0x40;
  243.         busy_12864();
  244.         wreg(c);}
  245. //清屏
  246. void ready_12864()
  247. {
  248.         uint i,j;
  249.         left();
  250.         wreg(0x3f);
  251.         right();
  252.         wreg(0x3f);
  253.         left();
  254.         for(i=0;i<8;i++)
  255.     {
  256.                 pagefirst(i);
  257.             linefirst(0x00);
  258.                    for(j=0;j<64;j++)
  259.                 {
  260.                         wdata(0x00);
  261.                 }
  262.         }
  263.         right();
  264.         for(i=0;i<8;i++)
  265.         {
  266.                 pagefirst(i);
  267.                 linefirst(0x00);
  268.                 for(j=0;j<64;j++)
  269.                 {
  270.                         wdata(0x00);
  271.                 }
  272.         }
  273. }
  274. //16*16汉字显示,纵向取模,字节倒序
  275. void display(uchar *s,uchar page,uchar line)
  276. {
  277.         uchar i,j;
  278.         pagefirst(page);
  279.         linefirst(line);
  280.         for(i=0;i<16;i++)
  281.         {
  282.                 wdata(*s);s++;
  283.         }
  284.         pagefirst(page+1);
  285.         linefirst(line);
  286.         for(j=0;j<16;j++)
  287.         {
  288.                 wdata(*s);s++;
  289.         }
  290. }

  291. //8*16汉字显示,纵向取模,字节倒序
  292. void display_sz(uchar *s,uchar page,uchar line)
  293. {
  294.         uchar i,j;
  295.         pagefirst(page);
  296.         linefirst(line);
  297.         for(i=0;i<8;i++)
  298.         {
  299.                 wdata(*s);s++;
  300.         }
  301.         pagefirst(page+1);
  302.         linefirst(line);
  303.         for(j=0;j<8;j++)
  304.         {
  305.                 wdata(*s);s++;
  306.         }
  307. }

复制代码



MSP430直流电机控制的所有资料下载:
DC_Motor.rar (127.51 KB, 下载次数: 248)

评分

参与人数 2黑币 +51 收起 理由
麦基菌 + 1 很给力!
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:103087 发表于 2016-6-26 10:24 | 只看该作者
51黑有你更精彩!!!
回复

使用道具 举报

板凳
ID:135306 发表于 2016-7-28 09:22 | 只看该作者
下载来看看,新人学习一下
回复

使用道具 举报

地板
ID:160654 发表于 2017-1-7 19:59 | 只看该作者
hao !!
回复

使用道具 举报

5#
ID:224482 发表于 2017-8-3 18:20 | 只看该作者
下载来跑一下,嘿嘿
回复

使用道具 举报

6#
ID:224482 发表于 2017-8-4 10:46 | 只看该作者
下在不了    求解
回复

使用道具 举报

7#
ID:244311 发表于 2017-10-30 19:12 | 只看该作者
好东西
回复

使用道具 举报

8#
ID:249545 发表于 2017-11-24 17:44 | 只看该作者
测速软件写得很好,给我们新的思路!
回复

使用道具 举报

9#
ID:308395 发表于 2018-4-27 11:21 | 只看该作者
现在已经不能下载资料了,楼主
回复

使用道具 举报

10#
ID:385001 发表于 2018-8-17 23:00 | 只看该作者
测速程序,让我们有了新的思路。我们现在缺的就是把这些程序连起来。感谢楼主,引领了思想。
回复

使用道具 举报

11#
ID:557309 发表于 2019-6-7 19:34 | 只看该作者
为什么打开后直接运行,没有效果啊,显示屏不亮,电机也不转动
回复

使用道具 举报

12#
ID:727764 发表于 2020-4-14 01:01 来自手机 | 只看该作者
很好用啊
回复

使用道具 举报

13#
ID:718725 发表于 2020-5-28 22:21 | 只看该作者
学习中进步。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表