📄 lab-13.c
字号:
//*****************************************************************************
// MSP430xG46x Demo - LCD, Displays Numbers on a 4-Mux LCD
//
// Description: This program displays digits stored in the
// variable "LSD-430" on a 4-mux LCD then waits in low power mode 3.
// To use the program run it as is or assign a different BCD number
// (digits 0-9) to the data.
// ACLK = LFXT1 = 32768Hz, MCLK = SMCLK = default DCO = 32 x ACLK = 1048576Hz
// //* An external watch crystal between XIN & XOUT is required for ACLK *//
//
// Connections MSP430 -> LCD
// -------------------------
//
// T.I. LSD
// MSP430xG46x MCU LSD048 4 mux LCD
//
// --------------- --------------
// | COM3 |-----|2 COM4 |
// | COM2 |-----|1 COM3 |
// | COM1 |-----|3 COM2 |
// | COM0 |-----|4,20 COM1 |
// | SEG0 |-----|19 |
// | SEG1 |-----|18 |
// | SEG2 |-----|17 |
// | SEG3 |-----|16 |
// | SEG4 |-----|15 |
// | SEG5 |-----|14 |
// | SEG6 |-----|13 |
// | SEG7 |-----|12 |
// | SEG8 |-----|11 |
// | SEG9 |-----|10 |
// | SEG10|-----|9 |
// | SEG11|-----|8 |
// | SEG12|-----|7 |
// | SEG13|-----|6 |
// | SEG14|-----|5 |
// | | | |
// | | --------------
// | |
// ---------------
//
// NOTE: Pin R03 on the MSP430 must be connected to GND
//
// FengLF
// LSD SCIENCE& TECHNOLOGY CO.,LTD
// 2007.06
// Built with IAR Embedded Workbench Version: 3.42A
//*****************************************************************************
#include <msp430xG46x.h>
char* LCD = LCDMEM;
#define SEG_a 0x01
#define SEG_b 0x02
#define SEG_d 0x04
#define SEG_g 0x08
#define SEG_c 0x10
#define SEG_f 0x20
#define SEG_h 0x40
#define SEG_e 0x80
#define CHAR_ALL (SEG_a|SEG_b|SEG_c|SEG_d|SEG_e|SEG_f|SEG_g|SEG_h)
#define CHAR_SPACE 0
#define CHAR_MINUS (SEG_g)
#define CHAR_0 (SEG_a|SEG_b|SEG_c|SEG_d|SEG_e|SEG_f)
#define CHAR_1 (SEG_b|SEG_c)
#define CHAR_2 (SEG_a|SEG_b|SEG_d|SEG_e|SEG_g)
#define CHAR_3 (SEG_a|SEG_b|SEG_c|SEG_d|SEG_g)
#define CHAR_4 (SEG_b|SEG_c|SEG_f|SEG_g)
#define CHAR_5 (SEG_a|SEG_c|SEG_d|SEG_f|SEG_g)
#define CHAR_6 (SEG_a|SEG_c|SEG_d|SEG_e|SEG_f|SEG_g)
#define CHAR_7 (SEG_a|SEG_b|SEG_c)
#define CHAR_8 (SEG_a|SEG_b|SEG_c|SEG_d|SEG_e|SEG_f|SEG_g)
#define CHAR_9 (SEG_a|SEG_b|SEG_c|SEG_d|SEG_f|SEG_g)
#define CHAR_A (SEG_a|SEG_b|SEG_c|SEG_e|SEG_f|SEG_g)
#define CHAR_B (SEG_c|SEG_d|SEG_e|SEG_f|SEG_g)
#define CHAR_C (SEG_a|SEG_d|SEG_e|SEG_f)
#define CHAR_D (SEG_b|SEG_c|SEG_d|SEG_e|SEG_g)
#define CHAR_E (SEG_a|SEG_d|SEG_e|SEG_f|SEG_g)
#define CHAR_F (SEG_a|SEG_e|SEG_f|SEG_g)
#define CHAR_t (SEG_d|SEG_e|SEG_f|SEG_g)
#define CHAR_L (SEG_d|SEG_e|SEG_f)
#define CHAR_X (SEG_g)
const char digit[13] =
{
CHAR_0, // "0"
CHAR_1, // "1"
CHAR_2, // "2"
CHAR_3, // "3"
CHAR_4, // "4"
CHAR_5, // "5"
CHAR_6, // "6"
CHAR_7, // "7"
CHAR_8, // "8"
CHAR_9, // "9"
CHAR_X, // "10"
CHAR_D, //"11"
CHAR_L // "12"
};
void main(void)
{
volatile unsigned int i;
WDTCTL = WDTPW + WDTHOLD; // 关看门狗
FLL_CTL0 |= XCAP14PF; // 设置装载电容
for (i = 0; i < 10000; i++); // 延时
BTCTL = BT_fCLK2_DIV128 | BT_fCLK2_ACLK_DIV256;
// 设置基本定时器
for (i = 0; i < 20; i++)
LCDMEM[i] = 0;
P5SEL |= (BIT4 | BIT3 | BIT2);
P5DIR |= (BIT4 | BIT3 | BIT2);
LCDACTL = LCDFREQ_128 | LCD4MUX | LCDSON | LCDON;
LCDAPCTL0 = LCDS0 | LCDS4 | LCDS8 | LCDS12 | LCDS16 | LCDS20 | LCDS24;
LCDAPCTL1 = 0;
LCDAVCTL0 = LCDCPEN;
LCDAVCTL1 = 1 << 1;
LCDMEM[2] = digit[0];
LCDMEM[3] = digit[3];
LCDMEM[4] = digit[4];
LCDMEM[5] = digit[10];
LCDMEM[6] = digit[11];
LCDMEM[7] = digit[5];
LCDMEM[8] = digit[12];
LPM3;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -