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

📄 lcd.c

📁 MSP430单片机常用模块与综合系统实例精讲 的:“程序代码”、“实例插图”、“电路图”3个文件夹。以及MSP430F14X系列单片机的官方源码"CODE-MSP430F14X" 其中各个文件夹主要
💻 C
字号:
#include <msp430x42x.h>

#include "lcd.h"

// LCD 定义
//h为小数点控制
#define h       0x80
#define e       0x40                            //  AAAA
#define g       0x20                            // F    B
#define f       0x10                            // F    B
#define d       0x08                            //  GGGG
#define c       0x04                            // E    C
#define b       0x02                            // E    C
#define a       0x01                            //  DDDD  h

const char LCD_Tab[] = {
  a + b + c + d + e + f,                        // 显示 "0"
  b + c,                                        // 显示 "1"
  a + b + d + e + g,                            // 显示 "2"
  a + b + c + d + g,                            // 显示 "3"
  b + c + f + g,                                // 显示 "4"
  a + c + d + f +g,                             // 显示 "5"
  a + c + d + e + f + g,                        // 显示 "6"
  a + b + c,                                    // 显示 "7"
  a + b + c + d + e + f + g,                    // 显示 "8"
  a + b + c + d + f + g,                        // 显示 "9"
  0x00                                          // 显示 黑
};

#undef a
#undef b
#undef c
#undef d
#undef e
#undef f
#undef g

int procData(char *pBuf,int value,int *neg)
{
    int len = 0;
    int temp;
    
    //数据是否为负
    if(value < 0)
    {
        value = -value;
        *neg = 1;
    }
    
    //取出小数部分
    temp = (value & 0x011);
    //小数处理
    switch(temp)
    {
        case 0x00:
        {
            //小数部分为0
            pBuf[0] = 0;
            pBuf[1] = 0;
            break;
        }
        case 0x01:
        {
            //小数部分为0.25
            pBuf[0] = 5;
            pBuf[1] = 2;
            break;
        }
        case 0x10:
        {
            //小数部分为0.5
            pBuf[0] = 0;
            pBuf[1] = 5;
            break;
        }
        case 0x11:
        {
            //小数部分为0.75
            pBuf[0] = 5;
            pBuf[1] = 7;
            break;
        }
    }
    //小数的长度为2位    
    len += 2;
    
    //整数部分处理
    value >>= 2;
    temp = value;
    //最大的处理范围为白位数
    if(temp >= 100)
    {
        //整数有3位数
        len += 3;
        temp = value / 100;
        //百位
        pBuf[4] =temp;
        //十位处理
        temp = (value - (value / 100) * 100) / 10;
        pBuf[3] =temp;
        //个位处理
        temp = value - pBuf[4] * 100 - pBuf[3] * 10;
        pBuf[2] = temp;
    } 
    else if((temp >= 10) && (temp < 100))
    {
        //整数有2位数
        len += 2;
        //十位处理
        temp = value / 10;
        pBuf[3] =temp;
        //个位处理
        temp = value - pBuf[3] * 10;
        pBuf[2] = temp;
    }
    else if(temp < 10)
    {
        //整数有1位数
        len += 1;
        pBuf[2] = value;
    }
    //返回长度信息
    return len;
}
void dispData(char *pBuf,int len,int neg)
{
    int i;
    int temp;
    //指向LCD显示存储器
    char *pLCD = (char *)&LCDM6;
    
    //显示小数
    temp = pBuf[0];
    *pLCD = LCD_Tab[temp];
    //指针移动
    pLCD += 1;
    
    temp = pBuf[1];
    //显示数据并显示小数点
    *pLCD = LCD_Tab[temp] | h;
    //指针移动
    pLCD += 1;
    //小数占2位
    len -= 2;
    
    //显示整数
    for(i = 0;i < len;i++)
    {
        *pLCD = pBuf[2 + i];
        pLCD += 1;
    }
    
    //负号处理
    if(neg == 1)
    {
        //显示"-"
        LCDM4 |= 0x40;
    }
    else 
    {
        //不显示"-"
        LCDM4 &= ~0x40;
    }
}

⌨️ 快捷键说明

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