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

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

?? fc430_es417_cce.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

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久免费午夜影院| www国产精品av| 国产不卡高清在线观看视频| 人人超碰91尤物精品国产| 一区二区三区中文在线观看| 中文字幕日韩欧美一区二区三区| 亚洲国产精品传媒在线观看| 国产欧美一区二区精品性色超碰| 久久精品视频在线免费观看| 精品国产乱码久久久久久图片| 精品国产露脸精彩对白| 一区二区三区中文在线| 国产精品久久久久久久久免费丝袜 | 成人免费av资源| 国产a精品视频| 99精品视频在线观看| 91麻豆国产在线观看| 91成人在线免费观看| 欧美日韩成人综合| 精品日韩欧美一区二区| 国产欧美日韩麻豆91| 亚洲欧美乱综合| 日韩av网站免费在线| 久久99精品国产麻豆婷婷| 国产精品亚洲第一| 色域天天综合网| 欧美一区二区三区不卡| 亚洲国产高清aⅴ视频| 亚洲综合在线第一页| 精品综合免费视频观看| 99久久er热在这里只有精品66| 欧美日韩成人综合在线一区二区| wwww国产精品欧美| 一区二区三区四区在线播放| 久久精品国产一区二区| 91片在线免费观看| 欧美一级二级在线观看| 国产精品国模大尺度视频| 亚洲第一搞黄网站| 国产成人精品免费在线| 欧美精品在线观看一区二区| 国产午夜精品一区二区三区嫩草 | 亚洲视频图片小说| 日本亚洲天堂网| gogo大胆日本视频一区| 欧美一二区视频| 国产精品久久久久久久蜜臀| 久久精品免费观看| 在线观看成人免费视频| 久久综合色一综合色88| 午夜伦欧美伦电影理论片| 不卡一卡二卡三乱码免费网站| 日韩三级免费观看| 亚洲综合免费观看高清完整版在线| 韩国av一区二区三区在线观看| 色婷婷激情一区二区三区| 国产偷国产偷精品高清尤物| 免费视频一区二区| 欧美日韩国产综合一区二区| 亚洲素人一区二区| 国产福利不卡视频| 欧美mv和日韩mv国产网站| 亚洲成av人片在线| 日本道免费精品一区二区三区| 国产欧美精品一区二区色综合| 久久不见久久见中文字幕免费| 在线一区二区三区四区五区| 最近中文字幕一区二区三区| 国产高清不卡一区二区| 久久亚洲二区三区| 激情欧美一区二区三区在线观看| 777午夜精品免费视频| 亚洲一区二区三区四区不卡| 91传媒视频在线播放| 一区二区欧美国产| 色美美综合视频| 亚洲精品亚洲人成人网在线播放| 99久久精品国产一区二区三区| 国产亚洲一本大道中文在线| 国产成人精品一区二区三区四区| 久久久久久久性| 国产精品12区| 国产精品国产三级国产普通话蜜臀 | 美日韩一级片在线观看| 91精品欧美综合在线观看最新 | 久久先锋影音av鲁色资源| 久久精品久久99精品久久| 欧美大片日本大片免费观看| 美女视频黄久久| 久久影院电视剧免费观看| 国产精品亚洲一区二区三区妖精 | www国产成人免费观看视频 深夜成人网| 美国三级日本三级久久99 | 久久综合久久综合久久| 国产在线不卡视频| 国产精品美女久久久久aⅴ| 成人三级在线视频| 一区二区三区小说| 欧美一区二区三区爱爱| 国产一区二区美女| 亚洲视频电影在线| 欧美一区二区三区在线看| 国模一区二区三区白浆| 国产精品二三区| 欧美亚洲国产一区在线观看网站| 日韩国产欧美在线播放| 久久久久久毛片| 91精品办公室少妇高潮对白| 日本三级亚洲精品| 国产精品久久久久久久久晋中| 在线免费不卡电影| 久久精品久久精品| 亚洲色图制服诱惑| 日韩免费视频一区| 色综合激情久久| 久久99国内精品| 亚洲精品乱码久久久久久黑人| 9191久久久久久久久久久| 国产二区国产一区在线观看| 洋洋成人永久网站入口| 2021中文字幕一区亚洲| 欧美一a一片一级一片| 国产69精品久久久久777| 亚洲成人一区在线| 中文字幕日韩一区二区| 精品少妇一区二区三区在线播放| 色婷婷一区二区三区四区| 九九**精品视频免费播放| 亚洲午夜精品在线| 国产精品久久久99| ww久久中文字幕| 欧美一区二区女人| 欧美在线视频全部完| 粉嫩久久99精品久久久久久夜| 蜜臀a∨国产成人精品| 亚洲成在人线免费| 亚洲欧美偷拍另类a∨色屁股| 久久只精品国产| 精品国产乱码久久久久久夜甘婷婷| 欧美日韩视频专区在线播放| 色偷偷一区二区三区| 高清日韩电视剧大全免费| 精品无码三级在线观看视频| 奇米精品一区二区三区四区| 亚洲国产综合在线| 亚洲一区在线观看视频| 亚洲欧美激情小说另类| 亚洲欧美国产77777| 亚洲色图制服诱惑| 亚洲日本va在线观看| 中文字幕在线播放不卡一区| 欧美激情一区在线| 中文字幕亚洲在| 毛片av中文字幕一区二区| 亚洲成人tv网| 午夜av电影一区| 天堂蜜桃一区二区三区| 日日嗨av一区二区三区四区| 亚洲18色成人| 欧美aaaaaa午夜精品| 精品一区二区影视| 国产主播一区二区三区| 国产精品一二三四| 99在线精品免费| 色婷婷综合久久久中文字幕| 欧美无乱码久久久免费午夜一区| 欧美吻胸吃奶大尺度电影| 欧美日韩精品一二三区| 欧美一区二区精品在线| 精品国产伦一区二区三区观看体验| 欧美精品一区二区三区高清aⅴ | 欧美日韩精品一区二区三区 | 一区二区在线观看免费视频播放| 亚洲精品成人少妇| 偷拍一区二区三区| 国产一区二区网址| www.日本不卡| 欧美日韩久久一区二区| 精品国产电影一区二区| 1024成人网| 亚洲狠狠爱一区二区三区| 精品一区二区在线播放| av网站免费线看精品| 欧美人与禽zozo性伦| 久久综合999| 亚洲国产精品尤物yw在线观看| 蜜臀a∨国产成人精品| 成人免费va视频| 欧美精品九九99久久| 国产日韩精品一区二区三区在线| 亚洲精选视频免费看| 美女免费视频一区二区| 99久久精品国产网站| 日韩午夜精品电影| 亚洲人一二三区| 国产高清精品网站| 欧美日韩国产成人在线91| 国产欧美1区2区3区| 日韩国产欧美三级| 色婷婷精品大视频在线蜜桃视频|