亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? emeter-basic-display.c

?? msp430F437三相電表DEMO(編譯器 IAR 3.42A)
?? C
?? 第 1 頁 / 共 3 頁
字號(hào):
//--------------------------------------------------------------------------
//
//  Software for MSP430 based e-meters.
//
//  You may not use the Program in non-TI devices.
//
//  File: basic_display.c
//
//  Steve Underwood <steve-underwood@ti.com>
//  Texas Instruments Hong Kong Ltd.
//
//  $Id: emeter-basic-display.c,v 1.16 2005/11/17 09:25:23 a0754793 Exp $
//
/*! \file emeter-structs.h */
//
//--------------------------------------------------------------------------
//
//  MSP430 simple LCD display routines for e-meters
//
#include <stdint.h>
#include <stdlib.h>
#include <io.h>
#include <emeter-toolkit.h>
#include "emeter.h"
#include "emeter-structs.h"
#if defined(MULTI_RATE_SUPPORT)
#include "emeter-multirate.h"
#endif

#if defined(__MSP430__)  &&  CUSTOM_LCD_SUPPORT
#include <lcd-segments.h>
/* Define hex digits and the minus sign to match the allocation of segments we are using. */
const lcd_cell_t lcd_digit_table[] =
{
    CHAR_0,
    CHAR_1,
    CHAR_2,
    CHAR_3,
    CHAR_4,
    CHAR_5,
    CHAR_6,
    CHAR_7,
    CHAR_8,
    CHAR_9,
    CHAR_A,
    CHAR_B,
    CHAR_C,
    CHAR_D,
    CHAR_E,
    CHAR_F
};

const lcd_cell_t char_minus = CHAR_MINUS;

const int lcd_cells = LCD_CELLS;
const int lcd_pos_base = LCD_POS_BASE;
const int lcd_pos_step = LCD_POS_STEP;
#endif

#if defined(MULTI_RATE_SUPPORT)
uint8_t info_step;
uint8_t info_substep;
#endif

#if defined(__MSP430__)  &&  defined(BASIC_LCD_SUPPORT)
#include <lcd-segments.h>

/* Define hex digits and the minus sign to match the allocation of segments we are using. */
const lcd_cell_t lcd_digit_table[] =
{
    CHAR_0,
    CHAR_1,
    CHAR_2,
    CHAR_3,
    CHAR_4,
    CHAR_5,
    CHAR_6,
    CHAR_7,
    CHAR_8,
    CHAR_9,
    CHAR_A,
    CHAR_B,
    CHAR_C,
    CHAR_D,
    CHAR_E,
    CHAR_F
};

    #if defined(USE_STARBURST)
const lcd_cell_t lcd_alpha_table[] =
{
    CHAR_A,
    CHAR_B,
    CHAR_C,
    CHAR_D,
    CHAR_E,
    CHAR_F,
    CHAR_G,
    CHAR_H,
    CHAR_I,
    CHAR_J,
    CHAR_K,
    CHAR_L,
    CHAR_M,
    CHAR_N,
    CHAR_O,
    CHAR_P,
    CHAR_Q,
    CHAR_R,
    CHAR_S,
    CHAR_T,
    CHAR_U,
    CHAR_V,
    CHAR_W,
    CHAR_X,
    CHAR_Y,
    CHAR_Z
};
    #endif

    #if defined(ASCII_LCD)
static const lcd_cell_t lcd_ascii_table[] =
{
    CHAR_SPACE,
    CHAR_SPACE,         //exclamation
    CHAR_DOUBLEQUOTE,
    CHAR_SPACE,         //hash
    CHAR_DOLLAR,
    CHAR_SPACE,         //percent
    CHAR_SPACE,         //ampersand
    CHAR_QUOTE,
    CHAR_LEFTBRACKET,
    CHAR_RIGHTBRACKET,
    CHAR_ASTERISK,
    CHAR_PLUS,
    CHAR_SPACE,         //comma
    CHAR_MINUS,
    CHAR_SPACE,         //full stop
    CHAR_SLASH,
    CHAR_0,
    CHAR_1,
    CHAR_2,
    CHAR_3,
    CHAR_4,
    CHAR_5,
    CHAR_6,
    CHAR_7,
    CHAR_8,
    CHAR_9,
    CHAR_SPACE,         //colon
    CHAR_SPACE,         //semi-colon
    CHAR_LT,
    CHAR_EQUALS,
    CHAR_GT,
    CHAR_QUESTION,
    CHAR_SPACE,         //at sign
    CHAR_A,
    CHAR_B,
    CHAR_C,
    CHAR_D,
    CHAR_E,
    CHAR_F,
    CHAR_G,
    CHAR_H,
    CHAR_I,
    CHAR_J,
    CHAR_K,
    CHAR_L,
    CHAR_M,
    CHAR_N,
    CHAR_O,
    CHAR_P,
    CHAR_Q,
    CHAR_R,
    CHAR_S,
    CHAR_T,
    CHAR_U,
    CHAR_V,
    CHAR_W,
    CHAR_X,
    CHAR_Y,
    CHAR_Z,
    CHAR_LEFTBRACKET,
    CHAR_BACKSLASH,
    CHAR_RIGHTBRACKET,
    CHAR_CARET,
    CHAR_UNDERSCORE,
    CHAR_BACKQUOTE,
    CHAR_a,
    CHAR_b,
    CHAR_C,
    CHAR_d,
    CHAR_e,
    CHAR_f,
    CHAR_g,
    CHAR_h,
    CHAR_i,
    CHAR_j,
    CHAR_k,
    CHAR_l,
    CHAR_m,
    CHAR_n,
    CHAR_o,
    CHAR_p,
    CHAR_q,
    CHAR_r,
    CHAR_s,
    CHAR_t,
    CHAR_u,
    CHAR_v,
    CHAR_w,
    CHAR_x,
    CHAR_y,
    CHAR_z,
    CHAR_LEFTBRACKET,
    CHAR_VERTICALBAR,
    CHAR_RIGHTBRACKET,
    CHAR_SPACE,         //squiggle
    CHAR_SPACE          //delete
};

void lcd_text(char *s, int pos)
{
    int x;

    if (lcd_pos_step < 0)
        pos = -pos;
    if (abs(lcd_pos_step) > 1)
        pos <<= 1;
    pos = lcd_pos_base + pos;
    while (*s)
    {
        x = lcd_ascii_table[*s++ - 0x20];
        LCDMEM[pos] = x & 0xFF;
        pos += (lcd_pos_step >> 1);
        LCDMEM[pos] = x >> 8;
        pos += (lcd_pos_step >> 1);
    }
}
    #endif

const lcd_cell_t char_minus = CHAR_MINUS;

const int lcd_cells = LCD_CELLS;
const int lcd_pos_base = LCD_POS_BASE;
const int lcd_pos_step = LCD_POS_STEP;

static const lcd_cell_t lcd_high[TEXT_MESSAGE_LENGTH] =
{
    CHAR_H,
    CHAR_i,
    CHAR_g,
    CHAR_h,
    CHAR_SPACE,
    CHAR_SPACE,
    #if TEXT_MESSAGE_LENGTH == 7
    CHAR_SPACE
    #endif
};

static const lcd_cell_t lcd_startup[TEXT_MESSAGE_LENGTH] =
{
    #if defined(USE_STARBURST)
    CHAR_S,
    CHAR_T,
    CHAR_A,
    CHAR_R,
    CHAR_T,
    CHAR_SPACE,
    #else
    CHAR_S,
    CHAR_t,
    CHAR_a,
    CHAR_r,
    CHAR_t,
    CHAR_SPACE,
        #if TEXT_MESSAGE_LENGTH == 7
    CHAR_SPACE
        #endif
    #endif
};

static const lcd_cell_t lcd_no_power[TEXT_MESSAGE_LENGTH] =
{
    CHAR_b,
    CHAR_l,
    CHAR_SPACE,
    CHAR_o,
    CHAR_u,
    CHAR_t,
    #if TEXT_MESSAGE_LENGTH == 7
    CHAR_SPACE
    #endif
};

static const lcd_cell_t lcd_4v2_power[TEXT_MESSAGE_LENGTH] =
{
    CHAR_SPACE,
    CHAR_SPACE,
    CHAR_SPACE,
    CHAR_4,
    #if defined(USE_STARBURST)
    CHAR_V,
    #else
    CHAR_U,
    #endif
    CHAR_2,
    #if TEXT_MESSAGE_LENGTH == 7
    CHAR_SPACE
    #endif
};

static const lcd_cell_t lcd_normal_power[TEXT_MESSAGE_LENGTH] =
{
    CHAR_SPACE,
    CHAR_SPACE,
    CHAR_SPACE,
    CHAR_8,
    #if defined(USE_STARBURST)
    CHAR_V,
    #else
    CHAR_U,
    #endif
    CHAR_4,
    #if TEXT_MESSAGE_LENGTH == 7
    CHAR_SPACE
    #endif
};

    #if !defined(SINGLE_PHASE)  &&  defined(ICON_PHASE_A)  &&  defined(ICON_PHASE_B)  &&  defined(ICON_PHASE_C)
static uint8_t phase_icons[NUM_PHASES] =
{
    ICON_PHASE_A,
    ICON_PHASE_B,
    ICON_PHASE_C
};
    #endif

    #if defined(__MSP430__)
enum
{
        #if defined(PER_PHASE_ENERGY_SUPPORT)
            #if !defined(TWO_LINE_LCD)
    DISPLAY_STAGE_PHASE_POWER,
            #endif
    DISPLAY_STAGE_PHASE_ENERGY,
        #endif
        #if defined(IRMS_SUPPORT)  &&  defined(VRMS_SUPPORT)  &&  defined(POWER_FACTOR_SUPPORT)
            #if defined(REACTIVE_POWER_SUPPORT)
    DISPLAY_STAGE_REACTIVE_POWER,
            #endif
            #if defined(VA_POWER_SUPPORT)
    DISPLAY_STAGE_VA,
            #endif
    DISPLAY_STAGE_POWER_FACTOR,
        #endif
        #if defined(VRMS_SUPPORT)
    DISPLAY_STAGE_VOLTAGE,
        #endif
        #if defined(IRMS_SUPPORT)
    DISPLAY_STAGE_CURRENT,
        #endif
        #if defined(MAINS_FREQUENCY_SUPPORT)
    DISPLAY_STAGE_MAINS_FREQUENCY,
        #endif
        #if !defined(SINGLE_PHASE)
    DISPLAY_STAGE_PHASE_LAST,
        #endif
        #if !defined(SINGLE_PHASE)  &&  defined(NEUTRAL_MONITOR_SUPPORT)  &&  defined(IRMS_SUPPORT)
    DISPLAY_STAGE_NEUTRAL_CURRENT,
        #endif
        #if defined(TOTAL_ENERGY_SUPPORT)
    DISPLAY_STAGE_TOTAL_POWER,
            #if !defined(TWO_LINE_LCD)
    DISPLAY_STAGE_TOTAL_ENERGY,
            #endif
        #endif
        #if defined(RTC_SUPPORT)
    DISPLAY_STAGE_DATE,
            #if !defined(DEDICATED_TIME_FIELD)  &&  !defined(TWO_LINE_LCD)
    DISPLAY_STAGE_TIME,
            #endif
        #endif
        #if defined(TEMPERATURE_SUPPORTx)
    DISPLAY_STAGE_TEMPERATURE,
        #endif
        #if defined(MULTI_RATE_SUPPORT)
    DISPLAY_STAGE_CURRENT_TARIFF,
        #endif
    DISPLAY_STAGE_LAST
};

static int8_t display_stage;
        #if !defined(SINGLE_PHASE)
static int8_t display_phase;
        #endif

        #if !defined(USE_STARBURST)
#define LCDcharsx LCDchars
        #else
void LCDcharsx(const lcd_cell_t *s, int pos, int len)
{
    if (lcd_pos_step < 0)
        pos = -pos;
    if (abs(lcd_pos_step) > 1)
        pos <<= 1;
    pos = lcd_pos_base + pos;
    for (  ;  len > 0;  --len)
    {
        LCDMEM[pos] = *s & 0xFF;
        pos += (lcd_pos_step >> 1);
        LCDMEM[pos] = *s >> 8;
        s++;
        pos += (lcd_pos_step >> 1);
    }
}
        #endif

void display_clear_line_1(void)
{
    int i;
    
    for (i = FIRST_ROW_START;  i < FIRST_ROW_START + FIRST_ROW_CHARS;  i++)
        LCDchar(CHAR_SPACE, i);
}

void display_clear_line_2(void)
{
    int i;
    
    for (i = SECOND_ROW_START;  i < SECOND_ROW_START + SECOND_ROW_CHARS;  i++)
        LCDchar(CHAR_SPACE, i);
}

void display_power_fail_message(void)
{
    LCDchar(CHAR_SPACE, 1);
    LCDcharsx(lcd_no_power, FIRST_POSITION, TEXT_MESSAGE_LENGTH);
}

void display_startup_message(void)
{
    LCDchar(CHAR_SPACE, 1);
    LCDcharsx(lcd_startup, FIRST_POSITION, TEXT_MESSAGE_LENGTH);
}

void display_power_4v2_message(void)
{
    LCDchar(CHAR_SPACE, 1);
    LCDcharsx(lcd_4v2_power, FIRST_POSITION, TEXT_MESSAGE_LENGTH);
}

void display_power_normal_message(void)
{
    LCDchar(CHAR_SPACE, 1);
    LCDcharsx(lcd_normal_power, FIRST_POSITION, TEXT_MESSAGE_LENGTH);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线视频欧美区| 成人高清视频在线| 久久一区二区视频| 亚洲第一在线综合网站| 精品播放一区二区| 香蕉成人啪国产精品视频综合网| 色菇凉天天综合网| 亚洲自拍偷拍麻豆| 亚洲色欲色欲www在线观看| 欧美三级在线看| 久久99在线观看| 国产精品欧美极品| 国产一区二区精品久久| 亚洲午夜激情网站| 中文字幕av免费专区久久| 92国产精品观看| 日韩成人免费电影| 中文字幕日本不卡| 91精品国产91综合久久蜜臀| 成人av资源下载| 国产99久久久国产精品潘金| 久久99久久久久久久久久久| 亚洲卡通动漫在线| 国产女同互慰高潮91漫画| 日本韩国一区二区三区视频| 丁香婷婷综合色啪| 99国产麻豆精品| 欧美最猛黑人xxxxx猛交| 欧美又粗又大又爽| 色呦呦网站一区| 成人亚洲一区二区一| 日日摸夜夜添夜夜添精品视频| 亚洲国产乱码最新视频| 欧美一级黄色大片| 99精品欧美一区| 国内精品在线播放| 午夜精品一区二区三区免费视频 | 国产精品影视天天线| 国产精品自在欧美一区| 日韩成人一区二区三区在线观看| 中文字幕亚洲成人| 国产日韩精品一区二区三区在线| 欧美一区二区三区四区视频| 欧美日韩国产123区| 欧美日韩中文字幕精品| 在线国产电影不卡| 色婷婷综合在线| 一本色道久久综合精品竹菊| 91久久一区二区| 色琪琪一区二区三区亚洲区| 一本一本大道香蕉久在线精品| 国产精品羞羞答答xxdd| 国产在线播放一区| 久久精品国产第一区二区三区| 日韩国产精品91| 精品影视av免费| 国产在线国偷精品产拍免费yy| 国产乱码一区二区三区| 国产美女视频一区| 波多野结衣欧美| 欧洲精品一区二区| 欧美日韩高清一区二区| 欧美一级理论片| 精品福利在线导航| 日本一区二区综合亚洲| 中文字幕日本乱码精品影院| 亚洲精品欧美在线| 国产做a爰片久久毛片| 99久久久国产精品| 日韩欧美国产综合一区 | 精品国产乱子伦一区| 亚洲精品一区二区三区香蕉| 亚洲欧美日韩国产综合在线| 亚洲二区视频在线| 婷婷国产在线综合| 在线视频国内自拍亚洲视频| 中文字幕日韩一区| 国产乱人伦偷精品视频不卡| 91精品91久久久中77777| 久久中文娱乐网| 亚洲成人自拍网| 国产不卡视频在线播放| 欧美日韩高清不卡| 久久综合九色综合久久久精品综合| 亚洲综合一区在线| 欧美性生活久久| 中文字幕中文乱码欧美一区二区| 久久精品99久久久| 欧美四级电影在线观看| 国产精品成人免费在线| 日本欧美一区二区| 欧美一区二区三区免费大片 | 精品久久久久99| 高清av一区二区| 亚洲欧美日韩成人高清在线一区| 99亚偷拍自图区亚洲| 国产精品国产自产拍在线| 欧美日韩精品是欧美日韩精品| 亚洲男人电影天堂| 成人激情小说网站| 91精品免费在线| 老司机精品视频线观看86 | 91国偷自产一区二区三区观看 | 奇米影视一区二区三区小说| 亚洲国产精品黑人久久久| 99国产精品视频免费观看| 日本麻豆一区二区三区视频| 国产欧美日本一区二区三区| 在线观看成人免费视频| 国产一区二区电影| 日本sm残虐另类| 亚洲精品成a人| 一区在线播放视频| 久久在线观看免费| 欧美精品久久天天躁| 久久久91精品国产一区二区精品| 在线观看91精品国产麻豆| 精品视频在线免费看| 91丨porny丨国产入口| 国产精品一区二区三区99| 精品一区二区在线播放| 日一区二区三区| 丝袜a∨在线一区二区三区不卡| 亚洲欧美日韩国产手机在线| 欧美激情一区二区三区蜜桃视频| 日韩一区二区三区观看| 欧美一级黄色片| 欧美一区二区三区免费观看视频| 91精品久久久久久久99蜜桃| 3d动漫精品啪啪一区二区竹菊| 91国产福利在线| 欧美日韩国产影片| 精品美女被调教视频大全网站| 精品少妇一区二区三区在线视频 | 亚洲欧洲国产日本综合| 午夜精品成人在线| 另类小说图片综合网| 国产一区二区免费在线| 91麻豆蜜桃一区二区三区| 91精品一区二区三区久久久久久| 精品福利一区二区三区免费视频| 国产精品免费av| 香蕉成人伊视频在线观看| 国产一区二区看久久| 色综合久久综合| 久久蜜桃av一区精品变态类天堂| 亚洲欧洲国产日韩| 老色鬼精品视频在线观看播放| 99视频在线精品| 国产三级精品视频| 亚洲欧美国产77777| 极品销魂美女一区二区三区| gogogo免费视频观看亚洲一| 欧美日韩中文精品| 久久麻豆一区二区| 性欧美疯狂xxxxbbbb| 国产.欧美.日韩| 欧美精品粉嫩高潮一区二区| 亚洲精品一区在线观看| 国产精品人妖ts系列视频 | 91精品国产综合久久小美女| 国产精品乱码人人做人人爱| 久久成人18免费观看| 欧美体内she精高潮| 亚洲人123区| 99久久久精品| 精品美女在线观看| 亚洲自拍另类综合| 国产麻豆欧美日韩一区| 91麻豆精品国产91久久久更新时间| 国产精品免费aⅴ片在线观看| 老鸭窝一区二区久久精品| 欧美性猛交一区二区三区精品| 久久久久久久久一| 国产一区二区三区四| 91精品国产高清一区二区三区| 亚洲视频免费在线观看| 成人黄色大片在线观看| 国产精品国产自产拍在线| 99久久99久久久精品齐齐| 亚洲婷婷综合久久一本伊一区| 成人午夜视频免费看| 国产精品久久久久aaaa樱花 | 国产成人精品午夜视频免费| 国产亚洲欧美中文| av不卡免费在线观看| 欧美激情综合在线| 99精品国产热久久91蜜凸| 亚洲女人的天堂| 日韩欧美国产综合| 懂色中文一区二区在线播放| 一区二区三区在线免费| 久久天堂av综合合色蜜桃网| 国产成人精品www牛牛影视| 亚洲欧洲无码一区二区三区| 欧美视频第二页| 国产一区二区看久久| 亚洲国产一区二区三区青草影视| 欧美大片在线观看| 欧美天堂一区二区三区|