⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fet440_lcd_03(测试文件).c

📁 基于MSP430F447的LCD控制程序
💻 C
字号:
//*****************************************************************************
//  MSP-FET430P440 Demo - LCD, Displays Numbers on a 4-Mux LCD
//
//  Description: This program displays digits stored in the
//  variable "value" 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 variable "value".
//  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.                  T.I.
//                           MSP430x44x MCU   STK/EVK 6.5 digit 4 mux LCD
//                                                    #T218010
//                           ---------------       --------------
//                          |          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 (bits C,E,H |
//                          |               |     |   of digit 7)|
//                          |               |      --------------
//                          |               |
//                           ---------------
//
//                   NOTE: Pin R03 on the MSP430 must be connected to GND
//
//  G. Morton / H. Grewal
//  Texas Instruments Inc.
//  Feb 2005
//  Built with IAR Embedded Workbench Version: 3.21A
//*****************************************************************************
#include  <msp430x44x.h>

void lcd_config(void);
// NOTE: DO NOT use leading zeros or it will be interpreted as octal data
unsigned long value = 0x43044;              // Number to display,
                                            // range = 0 to 65535
char* LCD = LCDMEM;


/*const char digit[10] =
{
  0x7B,  // "0"    LCD segments a+b+c+d+e+f
  0x60,  // "1"    LCD segments b+c
  0xC7,  // "2"    LCD segments a+b+d+e+g
  0xE5,  // "3"    LCD segments a+b+c+d+g
  0x6C,  // "4"    LCD segments b+c+f+g
  0xAD,  // "5"    LCD segments a+c+d+f+g
  0xAF,  // "6"    LCD segments a+c+d+e+f+g
  0xE0,  // "7"    LCD segments a+b+c
  0xEF,  // "8"    LCD segments a+b+c+d+e+f+g
  0xEC   // "9"    LCD segments a+b+c+f+g
};*/
//LCD液晶控制为d e g f h c b a
const char digit[10] =
{
  0xD7,  // "0"    LCD segments a+b+c+d+e+f
  0x06,  // "1"    LCD segments b+c
  0xE3,  // "2"    LCD segments a+b+d+e+g
  0xA7,  // "3"    LCD segments a+b+c+d+g
  0x36,  // "4"    LCD segments b+c+f+g
  0xB5,  // "5"    LCD segments a+c+d+f+g
  0xF5,  // "6"    LCD segments a+c+d+e+f+g
  0x07,  // "7"    LCD segments a+b+c
  0xF7,  // "8"    LCD segments a+b+c+d+e+f+g
  0x37   // "9"    LCD segments a+b+c+f+g
};

const char let_Test[8] =
{
  0x01,  // "0"    LCD segments a+b+c+d+e+f
  0x02,  // "1"    LCD segments b+c
  0x04,  // "2"    LCD segments a+b+d+e+g
  0x08,  // "3"    LCD segments a+b+c+d+g
  0x10,  // "4"    LCD segments b+c+f+g
  0x20,  // "5"    LCD segments a+c+d+f+g
  0x40,  // "6"    LCD segments a+c+d+e+f+g
  0x80,  // "7"    LCD segments a+b+c
};
void lcd_config(void){
  volatile unsigned int i;
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  FLL_CTL0 |= XCAP14PF;                     // Configure load caps
  for (i = 0; i < 10000; i++);              // Delay for 32 kHz crystal to
                                            // stabilize

  LCDCTL = LCDSG0_1 + LCD4MUX + LCDON;      // 4-Mux LCD, segments S0-S15
  BTCTL  = BT_fLCD_DIV64;                  // LCD clock freq is ACLK/64
  P5SEL  = 0xFC;                            // Select P5.2-7 as Com and Rxx
  // Clear LCD memory to clear display
  for (i=0; i<15; i++)
  {
    LCD[i] = 0;
  }
}
void main(void)
{
  volatile unsigned int i,j;                  // Use volatile to prevent removal
                                            // by compiler optimization
  lcd_config();

  // Display contents of the variable value
 /* for (i=0; i<5; i++)
  {
    LCD[i] = digit[value & 0xF];            // Remainder = character in table
                                            // to display
    value >>= 4;                            // Shifts right so next character
                                            // can be displayed
  }*/
/*  for (i=0; i<10; i++)
  {
    LCD[i] = digit[i]|0x08;            // Remainder = character in table
                                            // to display
  }*/
  //第一段文字测试
  j=0;
  LCD[j]=0xff;
  j=1;
  LCD[j]=0xff; 
  LCD[j]=0;
  j=0;
  for (i=0; i<8; i++)
  {
    LCD[j] = let_Test[i];
  }  
  LCD[j]=0;
  //第二段文字测试
  j=1;
  for (i=0; i<8; i++)
  {
    LCD[j] = let_Test[i];
  }  
  LCD[j]=0;
  LPM3;                                     // Enter LPM3
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -