MSP430 判断 旋转编码开关转动方向

msp430 是一款超低功耗的单片机,个人感觉市面上看到的教程远远少于Adrunio ,51和 stm32,可能是太底层了的原因吧。本文将使用MSP430F5529PL 来完成对于旋转编码开关转动方向的判断,以及使用串口工具进行结果显示。

目录

1. 旋转编码开关
2. 线路连接实物
3. 程序讲解
4. 效果展示

1、旋转编码开关

旋转编码开关,也就是所说的旋转编码器、数码电位器、Rotary Encoder 。它具有左转,右转功能,有的旋转编码开关还有按下功能。(本质上可以理解为3个开关)
在这里插入图片描述
端口接法
(1)A、B脚要接上拉电阻

(2)C 脚一般接地

(3)VCC、GDN 脚是下按键的开关接线

下面这张图是AC ,BC的信号
在这里插入图片描述
可以看到,要想获取到他的旋转方向,只要让A在上升沿或者下降沿来临时,检测B的电平即可。例如以A的上升沿为例,A在上升沿时,如果B的电位是低,那么是向右转,否则向左。那么怎么在A上升沿或者下降沿来临时获取B的值呢?聪明的大家一定想到了中断。

2、线路连接实物

在这里插入图片描述
A – P2.3
B – P2.4
C – GND
由于不用检测下压 VCC 和 GND 直接 空接。
上面两个导线,和旁边的短路环作用一样。

3. 程序讲解

#include <msp430f5529.h>

#define uchar unsigned char

uchar buffer0[] = {"逆时针\n"};
uchar buffer1[] = {"顺时针\n"};


// 启用串口调试, 波特率设置为9600
void setUart(){
  P4SEL = BIT4 +BIT5;           // 设置 4.4 和 4.5 为输出位
  UCA1CTL1 |= UCSWRST;          // **Put state machine in reset**
  UCA1CTL1 |= UCSSEL_1;                     // CLK = ACLK 
  UCA1BR0 = 0x03;               // 32kHz/9600=3.41 (see User's Guide)
  UCA1BR1 = 0x00;               
  UCA1MCTL = UCBRS_3+UCBRF_0;   // Modulation UCBRSx=3, UCBRFx=0
  UCA1CTL1 &= ~UCSWRST;         // **Initialize USCI state machine**
}

// 串口输出字符串
void uartPrint(uchar code[], int len){
  unsigned int i;
  for(i=0; i<len; i++){
    UCA1TXBUF = code[i];
    while (!(UCA1IFG&UCTXIFG)); 
  }
}

// 主程序
void main(void)
{
  // 停止看门狗
  WDTCTL=WDTPW+WDTHOLD;
  // 设置1.0为输出啊端口,并且初始为低电平
  P1DIR |= BIT0; P1OUT &=~ BIT0;
  // 设置2.3为输入位, 接上拉电阻, 设置初始值为高电平
  P2DIR &=~ BIT3; P2REN |= BIT3; P2OUT |= BIT3;
  // 允许2.3触发中断, 中断标志位复位,设置中断
  P2IES &=~ BIT3; P2IFG &=~ BIT3; P2IE |= BIT3;
  // 设置2.4也位输入位, 接上拉电阻, 设置初始值位高电平
  P2DIR &=~ BIT4; P2REN |= BIT4; P2OUT |= BIT4;
  // 设置串口
  setUart();
  // CPU休息,GIE:打开全局中断使能
  __bis_SR_register(LPM0_bits +GIE);
  // 停止操作指令
  __no_operation();
}

// 进入中断
#pragma vector = PORT2_VECTOR
__interrupt void Port_2(void){
  if(P2IN & BIT4){  // 如果是2.4高电平
    // 串口打印 ”逆时针“
    uartPrint(buffer0, sizeof(buffer0));
  }else{
    // 串口打印 ”顺时针“
    uartPrint(buffer1, sizeof(buffer1));
  }
  // 中断标复位
  P2IFG &=~ BIT3;
}

4. 效果展示

在这里插入图片描述
结语:MSP430 的 生态等待大家一起去丰富,一起加油吧。

posted @ 2020-09-02 02:32  世幻水  阅读(408)  评论(0编辑  收藏  举报