Professional Documents
Culture Documents
h>
#include <stdio.h>
int speed = 0;
void LCD_init() {
P1DIR |= (LCD_RS | LCD_E | LCD_D4 | LCD_D5 | LCD_D6 | LCD_D7);
P1OUT &= ~LCD_RS;
P1OUT &= ~LCD_E;
P1OUT &= ~(LCD_D4 | LCD_D5 | LCD_D6 | LCD_D7);
delay(100);
LCD_command(0x33);
LCD_command(0x32);
LCD_command(0x28);
LCD_command(0x0E);
LCD_command(0x01);
delay(2);
}
void LCD_clear() {
LCD_command(0x01);
delay(2);
}
void main(void) {
WDTCTL = WDTPW | WDTHOLD; // T?t theo dõi
BCSCTL1 = CALBC1_1MHZ; // Ð?t t?n s? ho?t d?ng cho MSP430 là 1 MHz
DCOCTL = CALDCO_1MHZ; // Ð?t t?n s? DCO cho MSP430 là 1 MHz
P1SEL |= IN1 + IN2; // B?t ch? d? ch?c nang PWM cho các chân P1.2 (IN1) và P1.3
(IN2)
P1DIR |= (IN1 + IN2 ); // Ð?t là d?u ra
P1OUT &= ~(IN2 + IN1); // Xóa bit tuong ?ng c?a các chân P1.2 (IN1) và P1.3
(IN2)
P2REN |= (ON_OFF + + UP + DOWN); // B?t di?n tr? kéo lên
P2OUT |= (ON_OFF + UP + DOWN); // Ð?t m?c logic cao (1) cho các chân
P2DIR |= (ON_OFF + UP + DOWN); // Ð?t là d?u ra
// Chuy?n d?i giá tr? pulseWidth thành chu?i và luu vào speed_str
sprintf(speed_str, "%04d",(pulseWidth)));
// In giá tr? t?c d? (s? d?ng LCD_display_string_at)
LCD_display_string_at(speed_str, 2, 9);