搜索
bottom↓
回复: 1

msp430 lcd 问题

[复制链接]

出0入0汤圆

发表于 2014-6-3 10:15:35 | 显示全部楼层 |阅读模式
TI官方自带的驱动程序。 LCDM1 = LCD_Char_Map[hun_thou] & 0xFF;        // Lower byte
                  LCDM2 = (LCD_Char_Map[hun_thou] >> 8) & 0xFF; // Upper byte
这两句是什么意思?  右移了8位。不是全部为零了吗?怎么把一个数分为了 lower byte 和upper byte了呢?求解!
/* --COPYRIGHT--,BSD_EX
* Copyright (c) 2012, Texas Instruments Incorporated
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* *  Redistributions of source code must retain the above copyright
*    notice, this list of conditions and the following disclaimer.
*
* *  Redistributions in binary form must reproduce the above copyright
*    notice, this list of conditions and the following disclaimer in the
*    documentation and/or other materials provided with the distribution.
*
* *  Neither the name of Texas Instruments Incorporated nor the names of
*    its contributors may be used to endorse or promote products derived
*    from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*******************************************************************************
*
*
*                       MSP430 CODE EXAMPLE DISCLAIMER
*
* MSP430 code examples are self-contained low-level programs that typically
* demonstrate a single peripheral function or device feature in a highly
* concise manner. For this the code may rely on the device's power-on default
* register values and settings such as the clock configuration and care must
* be taken when combining code from several examples to avoid potential side
* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware
* for an API functional library-approach to peripheral configuration.
*
* --/COPYRIGHT--*/
//******************************************************************************
//   MSP430F67791 Demo - LCD_C, Display 6 digit numbers
//
//   Description: Displays "000000" to "999999" in sequence on the LCD.
//                ACLK = REF0 = 32Khz, MCLK = SMCLK = DCO = Default
//
//                MSP430F67791
//             -----------------
//         /|\|                 |
//          | |                 |
//          --|RST              |
//            |                 |    TI LCD
//            |              S0 |     -----------------
//            |               - |--> | +  5 4 3 2 1 0 |
//            |             S23 |     -----------------
//            |             COM0|-----||||
//            |             COM1|------|||
//            |             COM2|-------||
//            |             COM3|--------|
//            |                 |
//
//
//   C. Fu
//   Texas Instruments Inc.
//   October 2012
//   Built with CCS Version: 5.1.0 and IAR Embedded Workbench Version: 5.51
//******************************************************************************
#include <msp430.h>

// LCD Segment Mapping
const unsigned char LCD_Char_Map[] =
{
    BIT2 | BIT3 | BIT4 | BIT5 | BIT6 | BIT7,                // '0' or 'O'
    BIT5 | BIT6,                                            // '1' or 'I'
    BIT0 | BIT1 | BIT3 | BIT4 | BIT6 | BIT7,                // '2' or 'Z'
    BIT0 | BIT1 | BIT4 | BIT5 | BIT6 | BIT7,                // '3'
    BIT0 | BIT1 | BIT2 | BIT5 | BIT6,                       // '4' or 'y'
    BIT0 | BIT1 | BIT2 | BIT4 | BIT5 | BIT7,                // '5' or 'S'
    BIT0 | BIT1 | BIT2 | BIT3 | BIT4 | BIT5 | BIT7,         // '6' or 'b'
    BIT5 | BIT6 | BIT7,                                     // '7'
    BIT0 | BIT1 | BIT2 | BIT3 | BIT4 | BIT5 | BIT6 | BIT7,  // '8' or 'B'
    BIT0 | BIT1 | BIT2 | BIT4 | BIT5 | BIT6 | BIT7,         // '9' or 'g'
};

char hun_thou, ten_thou, thou, hun, ten, unit;

void main(void)
{
    volatile unsigned char i;

    WDTCTL = WDTPW | WDTHOLD;               // Stop WDT

    // Setup LCD_C
    // LCD_FREQ = ACLK/32/4, LCD Mux 4, turn on LCD
    LCDCCTL0 =  LCDDIV_31 | LCDPRE_1 | LCD4MUX | LCDON;

    //Charge pump generated internally at 2.96V, external bias (V2-V4) generation
    //Internal reference for charge pump
    LCDCVCTL = LCDCPEN | VLCD_2_96;
    REFCTL0 &= ~REFMSTR;

    LCDCPCTL0 = 0xFFFF;                     //Select LCD Segments 0-23
    LCDCPCTL1 = 0x00FF;                     //

    while (1)
    {
      for (hun_thou=0; hun_thou<=9; hun_thou++)
      {
       for (ten_thou=0; ten_thou<=9; ten_thou++)
       {
         for (thou =0; thou<=9; thou++)
         {
           for (hun=0; hun<=9; hun++)
           {
             for (ten=0; ten<=9; ten++)
             {
                for (unit=0; unit<=9; unit++)
                {
                  LCDM1 = LCD_Char_Map[hun_thou] & 0xFF;        // Lower byte
                  LCDM2 = (LCD_Char_Map[hun_thou] >> 8) & 0xFF; // Upper byte
                  LCDM3 = LCD_Char_Map[ten_thou] & 0xFF;        // Lower byte
                  LCDM4 = (LCD_Char_Map[ten_thou] >> 8) & 0xFF; // Upper byte
                  LCDM5 = LCD_Char_Map[thou] & 0xFF;          // Lower byte
                  LCDM6 = (LCD_Char_Map[thou] >> 8) & 0xFF;   // Upper byte
                  LCDM7 = LCD_Char_Map[hun] & 0xFF;          // Lower byte
                  LCDM8 = (LCD_Char_Map[hun] >> 8) & 0xFF;   // Upper byte
                  LCDM9 = LCD_Char_Map[ten] & 0xFF;          // Lower byte
                  LCDM10 = (LCD_Char_Map[ten] >> 8) & 0xFF;   // Upper byte
                  LCDM11 = LCD_Char_Map[unit] & 0xFF;          // Lower byte
                  LCDM12 = (LCD_Char_Map[unit] >> 8) & 0xFF;   // Upper byte
                  __delay_cycles(500000);
                }
             }
           }
         }
       }
     }
    }//Display the number's digits on the LCD
}

出0入0汤圆

 楼主| 发表于 2014-6-4 10:46:31 | 显示全部楼层
求高手解答啊!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-10 17:30

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表