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

目录

1、仿真图

2、程序 

资料下载地址:MSP430直流电机控制以及测速+仿真+源代码

1、仿真图

2、程序 

/*
 * LCD_12864.c
 *
 *  Created on: 2016年6月15日
 *      Author: Jack zhao
 */
#include<MSP430F249.h>
#include "LCD_12864.h"
#define uchar unsigned char
#define uint unsigned int

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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


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

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



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

};

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

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

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

};

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

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

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

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

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

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

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

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

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

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

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

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

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

};

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

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

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

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

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

void left()                 //左半屏
{
        P6OUT&=~BIT0;//cs1=0;
        P6OUT|=BIT1;//cs2=1;
}

void right()                 //右半屏
{
        P6OUT|=BIT0;//cs1=1;
        P6OUT&=~BIT1;//cs2=0;
}
//判忙
void busy_12864()
{
        do{
        P6OUT&=~BIT4;//e=0;
        _NOP();
        P6OUT&=~BIT2;//rs=0;
        P6OUT|=BIT3;//rw=1;
            P5OUT=0x00;
        P6OUT|=BIT4;//e=1;

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

          }while(!(bflag==0X00));
}
//命令写入
void wreg(uchar c)
{
        busy_12864();
        P6OUT&=~BIT2;//rs=0;
        P6OUT&=~BIT3;//rw=0;
        P6OUT&=~BIT4;//E=0
        _NOP();
        _NOP();
        P5OUT=c;
        _NOP();
        _NOP();
        _NOP();
        _NOP();
        P6OUT|=BIT4;//e=1;
        _NOP();
        _NOP();
        _NOP();
        _NOP();
        P6OUT&=~BIT4;//e=0;
}
 //数据写入
void wdata(uchar c)
{
        busy_12864();
        P6OUT|=BIT2;//rs=1
        P6OUT&=~BIT3;//rw=0
        P5OUT=c;
        _NOP();
        _NOP();
        _NOP();
        _NOP();
        P6OUT|=BIT4;//e=1
        _NOP();
        _NOP();
        _NOP();
        _NOP();
        P6OUT&=~BIT4;
}
 //显示初始页
void pagefirst(uchar c)
{
        uchar i=c;
        c=i|0xb8;
        busy_12864();
        wreg(c);
}
 //设置显示初始列
void linefirst(uchar c)
{
        uchar i=c;
        c=i|0x40;
        busy_12864();
        wreg(c);}
//清屏
void ready_12864()
{
        uint i,j;
        left();
        wreg(0x3f);
        right();
        wreg(0x3f);
        left();
        for(i=0;i<8;i++)
    {
                pagefirst(i);
            linefirst(0x00);
                   for(j=0;j<64;j++)
                {
                        wdata(0x00);
                }
        }
        right();
        for(i=0;i<8;i++)
        {
                pagefirst(i);
                linefirst(0x00);
                for(j=0;j<64;j++)
                {
                        wdata(0x00);
                }
        }
}
//16*16汉字显示,纵向取模,字节倒序
void display(uchar *s,uchar page,uchar line)
{
        uchar i,j;
        pagefirst(page);
        linefirst(line);
        for(i=0;i<16;i++)
        {
                wdata(*s);s++;
        }
        pagefirst(page+1);
        linefirst(line);
        for(j=0;j<16;j++)
        {
                wdata(*s);s++;
        }
}

//8*16汉字显示,纵向取模,字节倒序
void display_sz(uchar *s,uchar page,uchar line)
{
        uchar i,j;
        pagefirst(page);
        linefirst(line);
        for(i=0;i<8;i++)
        {
                wdata(*s);s++;
        }
        pagefirst(page+1);
        linefirst(line);
        for(j=0;j<8;j++)
        {
                wdata(*s);s++;
        }
}

  • 10
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

森旺电子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值