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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? fc430_es417_iar.c

?? lcdcdode cor customized
?? C
?? 第 1 頁 / 共 2 頁
字號:
//-----------------------------------------------------------------------------
//  FC430 ES417 Demo - Digital Fan Control w/ Tachometer (IAR EW430 C Version)
//
//  Description: Drives cooling fan speed based on thermistor temperature
//  Results: Displays tachometer (RPM) and temperature (deg F) on SoftBaugh
//  SBLCDA4 LCD (ACLK = UCLK0 = LFXT1 = 32.768 kHz)
//  (MCLK = SMCLK = 32*ACLK = DCO = ~1.048576 MHz)
//  NOTE: external watch crystal is required on XIN XOUT for ACLK)	
//
//                  MSP430F417
//           ------------------------
//      /|\  |                   XIN|--- |
//       |   |                      |  32kHz
//       ----|RST               XOUT|--- |
//           |                      |
//   LED <---|P1.0        P2.1/TA1.1|---> PWM
//           |                      |
// Rsens --->|P1.4              P2.0|<--- TACH
//           |                      |
//  Rref --->|P1.5                  |
//           |                      |
//    Cm --->|P1.6/CA0              |
//           |                      |
//           |                      |
//           |  P2.2 -- P4.4, P5.1  |
//           ------------------------
//           | | | | | | | | | | | |
//           v v v v v v v v v v v v
//           ------------------------
//           |  SBLCDA4 LCD DISPLAY |
//           ------------------------
//
//
// Randy Wu
// Texas Instruments Inc.
// November 2005
// Built with IAR Embedded Workbench Version: 3.30A
//-----------------------------------------------------------------------------
//
// THIS PROGRAM IS PROVIDED "AS IS". TI MAKES NO WARRANTIES OR
// REPRESENTATIONS, EITHER EXPRESS, IMPLIED OR STATUTORY,
// INCLUDING ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE, LACK OF VIRUSES, ACCURACY OR
// COMPLETENESS OF RESPONSES, RESULTS AND LACK OF NEGLIGENCE.
// TI DISCLAIMS ANY WARRANTY OF TITLE, QUIET ENJOYMENT, QUIET
// POSSESSION, AND NON-INFRINGEMENT OF ANY THIRD PARTY
// INTELLECTUAL PROPERTY RIGHTS WITH REGARD TO THE PROGRAM OR
// YOUR USE OF THE PROGRAM.
//
// IN NO EVENT SHALL TI BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
// CONSEQUENTIAL OR INDIRECT DAMAGES, HOWEVER CAUSED, ON ANY
// THEORY OF LIABILITY AND WHETHER OR NOT TI HAS BEEN ADVISED
// OF THE POSSIBILITY OF SUCH DAMAGES, ARISING IN ANY WAY OUT
// OF THIS AGREEMENT, THE PROGRAM, OR YOUR USE OF THE PROGRAM.
// EXCLUDED DAMAGES INCLUDE, BUT ARE NOT LIMITED TO, COST OF
// REMOVAL OR REINSTALLATION, COMPUTER TIME, LABOR COSTS, LOSS
// OF GOODWILL, LOSS OF PROFITS, LOSS OF SAVINGS, OR LOSS OF
// USE OR INTERRUPTION OF BUSINESS. IN NO EVENT WILL TI'S
// AGGREGATE LIABILITY UNDER THIS AGREEMENT OR ARISING OUT OF
// YOUR USE OF THE PROGRAM EXCEED FIVE HUNDRED DOLLARS
// (U.S.$500).
//
// Unless otherwise stated, the Program written and copyrighted
// by Texas Instruments is distributed as "freeware".  You may,
// only under TI's copyright in the Program, use and modify the
// Program without any charge or restriction.  You may
// distribute to third parties, provided that you transfer a
// copy of this license to the third party and the third party
// agrees to these terms by its first use of the Program. You
// must reproduce the copyright notice and any other legend of
// ownership on each copy or partial copy, of the Program.
//
// You acknowledge and agree that the Program contains
// copyrighted material, trade secrets and other TI proprietary
// information and is protected by copyright laws,
// international copyright treaties, and trade secret laws, as
// well as other intellectual property laws.  To protect TI's
// rights in the Program, you agree not to decompile, reverse
// engineer, disassemble or otherwise translate any object code
// versions of the Program to a human-readable form.  You agree
// that in no event will you alter, remove or destroy any
// copyright notice included in the Program.  TI reserves all
// rights not specifically granted under this license. Except
// as specifically provided herein, nothing in this agreement
// shall be construed as conferring by implication, estoppel,
// or otherwise, upon you, any license or other right under any
// TI patents, copyrights or trade secrets.
//
// You may not use the Program in non-TI devices.
//-----------------------------------------------------------------------------

#include  <msp430x417.h>
#include  "fc430_es417.h"

const char LCD_Table[] = {
  a+b+c+d+e+f,                              // Displays "0"
  b+c,                                      // Displays "1"
  a+b+d+e+g,                                // Displays "2"
  a+b+c+d+g,                                // Displays "3"
  b+c+f+g,                                  // Displays "4"
  a+c+d+f+g,                                // Displays "5"
  a+c+d+e+f+g,                              // Displays "6"
  a+b+c,                                    // Displays "7"
  a+b+c+d+e+f+g,                            // Displays "8"
  a+b+c+d+f+g,                              // Displays "9"
  a+b+c+e+f+g,                              // Displays "A"
  0x00,                                     // Displays  Blank
  a+d+e+f,                                  // Displays "C"
  a+b+f+g,                                  // Displays "degrees" o
  a+d+e+f+g,                                // Displays "E"
  a+e+f+g,                                  // Displays "F"
  h,                                        // Displays ":" or "."
  g,                                        // Displays "-"
  f+g+e+d                                   // Displays "t"
};

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

                                            // Negative Temperature Table:
                                            // Thermistor resistance values
                                            // Each already divided by 100 and
                                            // must be modified for thermistor
//const unsigned int resTabNegativeC[NEGRANGE] =
//{6860, 6385, 5946, 5539, 5163, 4816, 4493, 4195, 3918, 3661, 3423, 3201,
//2996, 2805, 2627, 2462, 2308, 2165, 2030, 1907, 1791, 1682, 1581, 1487,
//1399, 1317,1240, 1168, 1100, 1037, 978, 923, 871, 822, 777, 734, 694,
//656, 621, 587, 556, 526, 499, 473, 448, 425, 403, 382, 363, 345};

                                            // Positive Temperature Table:
                                            // Thermistor resistance values
                                            // Each already divided by 100 and
                                            // must be modified for thermistor
const unsigned int resTabPositiveC[POSRANGE] =
{311, 296, 281, 267, 254, 242, 231, 220, 210, 200, 190, 181, 173, 165,
157, 150, 143, 137, 131, 125, 120, 114, 109, 105, 100, 96, 92, 88, 84,
81, 77, 74, 71, 68, 65, 63, 60, 58, 55, 53, 51, 49, 47, 45, 44, 42,
40, 39, 37, 36, 35, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23,
22, 22, 21, 20, 19, 19, 18, 18, 17, 16, 16, 15, 15, 14, 14,
13, 13, 13, 12, 12, 11, 11, 11, 10, 10, 10, 10, 9, 9, 9,
8, 8, 8, 8, 7, 7, 7};

FanLevel level = FANSLEVEL1;                // Cooling level
Status status;                              // Alarm status of system
unsigned int tachCount = 0;                 // Count revolutions of fan
unsigned int tachRPM = 0;                   // Stores RPM of fan
unsigned int lastRPM = 0;                   // Stores RPM of last reading
signed int currentDegC = 0;                 // Stores temp (degC) of system
signed int currentDegF = 0;                 // Stores temp (degF) of system
                                            // Duty cycles for each level
unsigned char dutyCycles[ MAXLEVELSETTINGS] =
  { L0DUTYCYCLE, L1DUTYCYCLE, L2DUTYCYCLE,
    L3DUTYCYCLE, L4DUTYCYCLE, L5DUTYCYCLE};
static char *LCD = LCDMEM;                  // Pointer to the LCD memory
int unitMode = ENGLISH;                     // Units of the system


void main(void)
{
   SYS_init();                              // Initialize the SYStem
   LCD_init();                              // Initialize the LCD
   PWM_init();                              // Initialize the PWM Generator
   TEMP_init();                             // Initialize TEMP sensing

  _EINT();                                  // Enable Global Interrupts

  for (;;)
  {
    _BIS_SR(LPM0_bits + GIE);               // Drop into Low Power Mode 0

    // *** Watchdog Interval Timer wakes us up here ***
    refreshTach();                          // Update Tachometer
    sampleTemp();
    displayTemp();                          // Update temperature on LCD
    setFanSpeed();                          // Set fan speed
    displayLevel(level);                    // Display current level
  }
}

void TEMP_init()
{
  P1SEL &= ~(REF+THERM);                    // Select I/O function
  P1DIR |=  (REF+THERM);                    // Change R(ref) pin for output
  P1OUT &= ~(REF+THERM);                    // Clear resistor outputs
  CAPD = (REF+THERM+CA_IN);                 // Disable sensor inputs
  CACTL2 = P2CA0;                           // Set up comparator
}

signed int cnvtTempDegC(long int rSENSE)
{
  signed int tempDegC;
  int        i = 0, k = 1;

  rSENSE /= 100;                            // Convert resistance value
                                            // Before traversing tables
  if ( (rSENSE < 326) && (rSENSE >= resTabPositiveC[POSRANGE-1]) ){
    while(( resTabPositiveC[i] - rSENSE) > 0) {
                                            // Use positive temp table
      i++;                                  // Increment to next value
      k++;                                  // k = value of temperature
    }
    tempDegC = k + 1;                       // Temperature in deg C
  }
  else if (rSENSE >= 326) {// Temperature is zero deg C
    k = 0;                                  // Thermistor temp is 0
    tempDegC = k;                           // Set temp variable to 0
  }
  else
    tempDegC = OUTOFRANGE;                  // rSENSE is out of range

  return (tempDegC + CALFACTORDEGC);        // Return temperature
}

unsigned int measureCount(int temperatureSource)
{
  unsigned int TIMERCCR_COUNT;              // Temporary holder for CCR count
                                            // On measure routine
  unsigned int TIMERA_COUNT;                // Temporary holder for TA
                                            // Discharge count on measure
                                            // Capacitor is charged up with
                                            // Reference resistor
  P1OUT |= REF;                             // Ref set
  CAPD &= ~REF;                             // Must be enabled for output func
  CCR1 = PERIOD5MSEC;                       // CCR1 ~ TAR+5ms (5tu)
  CCTL1 = CCIE;                             // Compare mode, interrupt
  TA0CTL = TASSEL1+TACLR+MC1;               // SMCLK, clear, continuous
  LPM0;                                     // Wait for CCR1 interrupt
  CAPD |= REF;                              // Input buffer disabled for
                                            // tri-state
  P1OUT &= ~REF;                            // Ref = reset
                                            // Measuring discharge time
  CACTL1 = CARSEL+CAREF0+CAON;              // -comp = 0.25*Vcc, comp on
  TA0CCTL1 = CM1+CCIS0+CAP+CCIE;            // Neg, CCIB, cap, interrupt
  TIMERA_COUNT = TAR;                       // Store TAR count in temporary
                                            // holder at start of conversion
  CAPD &= ~temperatureSource;               // Must be enabled for output
                                            // function
  LPM0;                                     // Wait for CCR1 interrupt
  TIMERCCR_COUNT = CCR1;                    // Save TAR (CCR1) at EOC
  TIMERCCR_COUNT -= TIMERA_COUNT;           // Calculate discharge time
                                            // count
  CAPD |= temperatureSource;                // Input buffer disabled for
                                            // tri-state
  CACTL1 = 0x00;                            // Disable comparator
  TA0CCTL1 = 0x00;                          // Disable CCTL1
  TA0CTL = 0x00;                            // Disable timer_A
  P2IE |= (TACH);                           // Re-enable tachometer interrupt
  return(TIMERCCR_COUNT);                   // Return discharge time count
}

void sampleTemp(void)
{
  long int tREF, tSENSE;
  float    rTHERM;

  tREF = measureCount(REF);                 // R(ref) discharge count
  tSENSE = measureCount(THERM);             // R(sense) discharge count
                                            // Calculate thermistor resist.
  rTHERM = SLOPEADrREF*((float)tSENSE/tREF);
  currentDegC = cnvtTempDegC(rTHERM);       // Convert Rtherm to temp
  currentDegF = ((((9.0/5.0) *              // Convert degC to degF
                (currentDegC)) + 32.0) + CALFACTORDEGF);
}

void PWM_init(void)
{
  P2DIR |= PWM;                             // Configure output direction
  P2SEL |= PWM;                             // Select peripheral option
  TA1CCR0 = PERIOD050USEC;                  // Set up the PWM Period
  TA1CTL = TASSEL_2 + MC_1;                 // Use SMCLK, count up mode
  TA1CCTL1 = OUTMOD_1;                      // Keep fan(s) off initially
}

void changeLevelAndSpeed(FanLevel systemLevel)
{
  float dutyCycle;

  level = systemLevel;                      // Set to the desired level
                                            // Convert duty cycle to a %
  dutyCycle = ((float)(dutyCycles[level]))/100;

  if (dutyCycle > 0.99)
      TA1CCTL1 = OUTMOD_5;                  // Output constant LOW signal
  else {
    TA1CCR1 = (dutyCycle * PERIOD050USEC);  // Update the compare register
    TA1CCTL1 = OUTMOD_3;                    // Generate PWM via out mode 3
  }
}

void setFanSpeed(void)
{
   FanLevel level;

  // Update current fan speed based on current temperature reading
  if (currentDegF <= L0)                    // Check if below range
    return;
  else if (currentDegF <= L1toL2)
    level = FANSLEVEL1;                     // Currently in L1
  else if (currentDegF <= L2toL3)
    level = FANSLEVEL2;                     // Currently in L2
  else if (currentDegF <= L3toL4)
    level = FANSLEVEL3;                     // Currently in L3
  else if (currentDegF <= L4toL5)
    level = FANSLEVEL4;                     // Currently in L4
  else
    level = FANSLEVEL5;                     // Currently in L5

   changeLevelAndSpeed(level);              // Update PWM and speed
}

void LCD_init()
{
  P3SEL = 0xFF;                             // Set segment outputs for LCD
  P3DIR = 0xFF;                             // Set output direction
  P4SEL = 0xFF;                             // Set segment outputs for LCD
  P4DIR = 0xFF;                             // Set output direction
  P5SEL = 0xFC;                             // Set Rxx and COM pins for LCD
  P5DIR = 0xFF;                             // Set output direction

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲与欧洲av电影| 一区二区三区四区精品在线视频| 欧日韩精品视频| 91精品在线观看入口| 国产亚洲精品精华液| 中文字幕精品三区| 亚洲一区二区三区自拍| 午夜久久久久久久久久一区二区| 精品一区二区三区久久久| 成人app在线观看| 欧美电影一区二区| 久久蜜桃av一区精品变态类天堂| 一区二区三区不卡视频| 久久成人av少妇免费| 色婷婷综合久久久久中文一区二区 | 亚洲精品美国一| 国产成人免费视频网站| 91精品国产色综合久久ai换脸 | 欧美精品一区二区三区一线天视频 | 水野朝阳av一区二区三区| 国内精品国产成人国产三级粉色| 欧美日韩国产欧美日美国产精品| 2021国产精品久久精品| 亚洲男人天堂av网| 99久久伊人精品| 国产精品婷婷午夜在线观看| 国产在线播放一区| 久久综合九色综合欧美98| 午夜精品一区在线观看| 欧洲一区二区三区在线| 亚洲精品国久久99热| 99精品国产91久久久久久| 国产偷国产偷亚洲高清人白洁 | 粉嫩欧美一区二区三区高清影视| 欧美亚洲综合另类| 中文字幕一区av| 国产一区二区在线观看视频| 精品国产1区2区3区| 美腿丝袜在线亚洲一区 | 欧美日韩aaaaaa| 香蕉av福利精品导航| 欧美视频中文字幕| 午夜欧美视频在线观看 | 久久久久久日产精品| 激情六月婷婷久久| 久久久久久一级片| 处破女av一区二区| 久久亚洲免费视频| 国内外成人在线| 日韩欧美不卡一区| 乱一区二区av| 国产清纯在线一区二区www| 国产高清亚洲一区| 亚洲另类中文字| 欧美区视频在线观看| 久久国产欧美日韩精品| 久久综合久久综合久久| 成人晚上爱看视频| 伊人开心综合网| 日韩一级片网站| 国产高清久久久久| 亚洲蜜臀av乱码久久精品| 欧美精品乱码久久久久久按摩 | 欧美精品在线一区二区| 裸体一区二区三区| 国产精品色在线| 欧美日韩www| 丰满放荡岳乱妇91ww| 亚洲国产成人va在线观看天堂| 88在线观看91蜜桃国自产| 国产老肥熟一区二区三区| 亚洲人精品午夜| 91精品视频网| 国产精品18久久久久| 一区二区三区自拍| 26uuu欧美| 欧美性淫爽ww久久久久无| 免费观看在线色综合| 最好看的中文字幕久久| 欧美一级欧美三级| 成人av在线资源网| 久久国产精品一区二区| 亚洲欧洲一区二区在线播放| 91精品久久久久久久91蜜桃| 国产成人免费视频网站高清观看视频| 亚洲午夜一区二区三区| 国产欧美日韩在线观看| 日韩视频免费观看高清完整版| 丁香一区二区三区| 免费观看日韩电影| 亚洲一卡二卡三卡四卡| 国产亚洲污的网站| 4438x亚洲最大成人网| 91亚洲国产成人精品一区二区三| 麻豆精品国产91久久久久久| 亚洲国产精品影院| 亚洲天堂福利av| 久久―日本道色综合久久| 欧美日韩和欧美的一区二区| 波多野结衣在线aⅴ中文字幕不卡| 精品夜夜嗨av一区二区三区| 亚洲国产cao| 一片黄亚洲嫩模| 中文字幕一区二区三区蜜月| 日本一区二区免费在线 | 国产精品少妇自拍| 久久综合精品国产一区二区三区| 在线不卡中文字幕| 色哟哟一区二区三区| 豆国产96在线|亚洲| 精品午夜一区二区三区在线观看| 一区二区三区四区在线免费观看| 亚洲国产精品精华液ab| 久久久欧美精品sm网站| 久久久国际精品| 久久久久国产精品厨房| 精品久久久久久久一区二区蜜臀| 欧美一级黄色片| 欧美人xxxx| 欧美日韩电影在线| 欧美精品视频www在线观看 | 99久久精品久久久久久清纯| 成人美女视频在线观看| 成人性视频网站| 99久久综合国产精品| 99riav久久精品riav| 色系网站成人免费| 日韩精品一区二区三区四区| 欧美日韩一区二区三区四区五区| 色呦呦一区二区三区| 欧美亚洲图片小说| 欧美在线你懂的| 欧美日韩国产天堂| 日韩免费性生活视频播放| 精品免费99久久| 国产精品久久久久久久久搜平片| 国产精品福利电影一区二区三区四区| 亚洲三级在线免费| 亚洲国产综合在线| 日本成人中文字幕在线视频| 久久精品国产精品亚洲精品| 国产乱淫av一区二区三区| 成人av在线一区二区三区| 色综合久久久久综合99| 欧美日韩国产美| 欧美午夜视频网站| 欧美日本一区二区三区四区| 日韩女优制服丝袜电影| 国产欧美精品一区二区色综合| 亚洲免费在线视频| 蜜桃视频第一区免费观看| 高清不卡一区二区在线| 色就色 综合激情| 欧美精品一区二区三区蜜臀| 最新高清无码专区| 麻豆视频一区二区| 成人性生交大片免费看中文| 欧美视频在线观看一区二区| 久久精品亚洲一区二区三区浴池| 亚洲日本中文字幕区| 蜜乳av一区二区三区| 91社区在线播放| 欧美电视剧免费全集观看| 亚洲视频网在线直播| 久久av老司机精品网站导航| 91丨porny丨蝌蚪视频| 日韩午夜在线播放| 日韩美女视频一区二区| 久久er精品视频| 在线观看国产一区二区| 久久久.com| 日韩国产欧美在线视频| 色乱码一区二区三区88| 久久久国产精品午夜一区ai换脸 | 国产精品国产三级国产三级人妇 | 激情图区综合网| 欧美色爱综合网| 国产精品电影一区二区| 韩国成人在线视频| 91精品国产免费| 一区二区免费视频| eeuss鲁片一区二区三区在线看| 久久影院午夜片一区| 青青草国产精品亚洲专区无| 99久久免费国产| 欧美高清在线视频| 国产乱一区二区| 26uuu精品一区二区在线观看| 亚洲电影一级黄| 91久久人澡人人添人人爽欧美| 欧美激情一区二区| 国产精品996| 久久久久久影视| 国产一区不卡视频| 久久亚洲综合av| 久久精工是国产品牌吗| 欧美岛国在线观看| 麻豆一区二区在线| www激情久久| 黄色精品一二区|