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

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

?? mcuunit.c

?? 一個完整的個人產(chǎn)品開發(fā)源代碼,包括對單片機STC12C5410的編程(含內(nèi)部AD采樣、自創(chuàng)的內(nèi)部Flash編程源碼等)、LCD1602的驅(qū)動編程等。
?? C
?? 第 1 頁 / 共 4 頁
字號:
**-------------------------------------------------------------------------------------------------------
** 修 改 人: 羅建
** 日  期: 2007年09月20日(增加了正負數(shù)符號顯示功能,輸入?yún)?shù)為有符號整數(shù),取消了千位數(shù)顯示功能)
**-------------------------------------------------------------------------------------------------------
** 修 改 人:
** 日  期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void DataToLCDBuf(INT16 nData, INT8U nBufID)
{
  INT16U nTemp1;
  INT8U  nTemp2;

  if (nData >= 0)                                     // 檢查要轉(zhuǎn)換的數(shù)據(jù)是正數(shù)還是負數(shù),負數(shù)需要顯示負號
  {
    gnLcdBuf[nBufID][0] = ' ';
    nTemp1 = nData;
  }
  else
  {
    gnLcdBuf[nBufID][0] = '-';
    nTemp1 = nData * (-1);
  }
  nTemp2 = nTemp1/100;                                // 得到百位數(shù)字
  nTemp1 = nTemp1 - nTemp2*100;                       // 計算余數(shù)
  gnLcdBuf[nBufID][1] = nTemp2 + 0x30;                // 十進制數(shù)字轉(zhuǎn)換為ASCII碼
  nTemp2 = nTemp1/10;                                 // 得到十位數(shù)字
  gnLcdBuf[nBufID][3] = nTemp2 + 0x30;                // 十進制數(shù)字轉(zhuǎn)換為ASCII碼
  nTemp2 = nTemp1 - nTemp2*10;                        // 得到個位數(shù)字
  gnLcdBuf[nBufID][4] = nTemp2 + 0x30;                // 十進制數(shù)字轉(zhuǎn)換為ASCII碼
}

// ------------------------------------------------------------------------------------------------------																										
/********************************************************************************************************
** 函數(shù)名稱: SendDataToPC
** 功能描述: 利用RS-232串行口向上位機發(fā)送測量數(shù)據(jù)。本方法分解要發(fā)送的數(shù)據(jù)到發(fā)送緩沖區(qū)中,然后發(fā)送幀頭,后
**           面的數(shù)據(jù)發(fā)送工作在串口中斷服務(wù)程序中完成。
** 輸  入: 無
** 輸  出: 無
** 全局變量: gbIsTxHeadOK>>>>>>>指示是否已將幀頭全部發(fā)送至上位機,0~否,1~是;
**           gbIsTxDataOK>>>>>>>指示是否已將幀數(shù)據(jù)全部發(fā)送至上位機,0~否,1~是;
**           gnDisData[]>>>>>>>>存放前三個測量通道及其平均值的工程量結(jié)果,對應(yīng)于顯示緩沖區(qū);
**           gnTxBuf[]>>>>>>>>>>串行接口發(fā)送緩沖區(qū)(不含幀頭及校驗和)。
** 全局常量:無
** 調(diào)用模塊: 無
** 其它說明:無
**
** 作  者: 羅建
** 日  期: 2007年07月03日
**-------------------------------------------------------------------------------------------------------
** 修 改 人: 羅建
** 日  期: 2007年07月29日(數(shù)據(jù)發(fā)送方式改為了串口中斷發(fā)送方式,效率會更高)
**-------------------------------------------------------------------------------------------------------
** 修 改 人: 羅建
** 日  期: 2007年09月20日(發(fā)送的數(shù)據(jù)與顯示的數(shù)據(jù)一致,并且包含符號位,同時修改了開關(guān)的狀態(tài))
**-------------------------------------------------------------------------------------------------------
** 修 改 人:
** 日  期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void SendDataToPC(void)
{
  bit       bIsNeg;
  INT8U     i;
  TWordType nDisData;

  for (i=0;i<4;i++)                              // 準備要發(fā)送的測量數(shù)據(jù),高位在前,低位在后
  {
    if (gnDisData[i] >= 0)                       // 檢查要發(fā)送的數(shù)據(jù)是正數(shù)還是負數(shù)
    {
      bIsNeg = FALSE;
      nDisData.Word = gnDisData[i];
    }
    else
    {
      bIsNeg = TRUE;
      nDisData.Word = gnDisData[i] * (-1);
    }
    gnTxBuf[i*2]   = nDisData.Byte[0];           // 先高位MSB
    gnTxBuf[i*2+1] = nDisData.Byte[1];           // 后低位LSB
	if (bIsNeg)                                  // 檢查數(shù)據(jù)是否是負數(shù)
      gnTxBuf[i*2] = gnTxBuf[i*2] | 0x80;        // 將最高位置為1表示負數(shù)
  }
  gnTxBuf[8] = 0;                                // 準備要發(fā)送的開關(guān)(含輸入和輸出)狀態(tài),位6、7備用
  if (!SW_TEST)									 // 位0表示測試按扭是否按下,1為按下
    gnTxBuf[8] |= 0x01;
  if (!SW_CLR)									 // 位1表示清除按扭是否按下,1為按下
    gnTxBuf[8] |= 0x02;
  if (!SW_KEY3)									 // 位2表示輸入開關(guān)3是否按下,1為按下
    gnTxBuf[8] |= 0x04;
  if (!SW_KEY4)									 // 位3表示輸入開關(guān)4是否按下,1為按下
    gnTxBuf[8] |= 0x08;
  if (!OUT1)									 // 位4表示輸出開關(guān)1是否有輸出,1為有輸出
    gnTxBuf[8] |= 0x10;
  if (!OUT2)									 // 位5表示輸出開關(guān)2是否有輸出,1為有輸出
    gnTxBuf[8] |= 0x20;
  TI = FALSE;                                    // 準備發(fā)送數(shù)據(jù)到上位機
  gbIsTxHeadOK = FALSE;
  gbIsTxDataOK = FALSE;
  SBUF = 0xFF;									 // 開始發(fā)送數(shù)據(jù)
}

// ------------------------------------------------------------------------------------------------------																										
/********************************************************************************************************
** 函數(shù)名稱: DoneADC
** 功能描述: 執(zhí)行一次STC12C5408AD的前四個通道的ADC。
** 輸  入: 無
** 輸  出: 無
** 全局變量: 略
** 全局常量:無
** 調(diào)用模塊: 無
** 其它說明:本函數(shù)對STC12C5408AD的前四個通道執(zhí)行FILTER次的AD轉(zhuǎn)換,并對轉(zhuǎn)換結(jié)果進行初步的工程量轉(zhuǎn)換及平均
**           值濾波,結(jié)果最后放在gnADData[i].Word全局變量中。
**
** 作  者: 羅建
** 日  期: 2007年09月20日
**-------------------------------------------------------------------------------------------------------
** 修 改 人:
** 日  期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void DoneADC(void)
{
  INT8U     i;                                   // i為循環(huán)變量
  INT8U     nADChan;                             // nADChan指向當前AD轉(zhuǎn)換通道
  INT8U     nFilteCnt;                           // nFilteCnt為軟件濾波器計數(shù)器
  INT16U    nADRes[4];                           // 存放四個測量通道的AD轉(zhuǎn)換結(jié)果

  nFilteCnt = FILTER;
  while (nFilteCnt-- > 0)						 // 檢查濾波是否完成
  {
    nADChan = 0;
	do{
	  ADC_CONTR &= 0xF8;                         // 選擇nADChan通道進行AD轉(zhuǎn)換
      ADC_CONTR |= nADChan;
      ADC_CONTR |= 0x08;                         // 啟動AD轉(zhuǎn)換
      while (!(ADC_CONTR & 0x10));               // 等待AD轉(zhuǎn)換完成
      ADC_CONTR &= 0xE7;                         // 清除AD轉(zhuǎn)換標志
      nADRes[nADChan] = 0;
      nADRes[nADChan] = nADRes[nADChan] | ADC_DATA;  // 讀取AD轉(zhuǎn)換結(jié)果
      nADRes[nADChan] = nADRes[nADChan] << 2;
      nADRes[nADChan] = nADRes[nADChan] & 0xFFFC;
      nADRes[nADChan] = nADRes[nADChan] | (ADC_LOW2 & 0x03);
	  nADChan++;
    }while (nADChan < 4);					     // 檢查是否所有的通道都測量完畢,是則顯示
    gnADData[0].Word += (INT32U)nADRes[0] * VREF / nADRes[3];    // 對通道1的測量值進行工程量轉(zhuǎn)換
    gnADData[1].Word += (INT32U)nADRes[1] * VREF / nADRes[3];    // 對通道2的測量值進行工程量轉(zhuǎn)換
    gnADData[2].Word += (INT32U)nADRes[2] * VREF / nADRes[3];    // 對通道3的測量值進行工程量轉(zhuǎn)換
  }  
  for (i=0;i<3;i++)                              // 進行均值濾波處理
  {
    gnADData[i].Word /= FILTER;
	if (nADRes[i] >= 2)							 // 對測量值進行微量調(diào)整
	  gnADData[i].Word += 2;
	else if (nADRes[i] >= 1)
	  gnADData[i].Word += 1;
  }
}

// ------------------------------------------------------------------------------------------------------																										
/********************************************************************************************************
** 函數(shù)名稱: SaveBase
** 功能描述: 將三個測量通道的基準值寫入STC5408AD芯片內(nèi)部的EEPROM中。
** 輸  入: 無
** 輸  出: 無
** 全局變量: gnBaseVal[]>>>>>>>>存放前三個測量通道的基準測量值。
** 全局常量:無
** 調(diào)用模塊: WriteBytes()>>>>>>>向STC5408AD芯片內(nèi)部的EEPROM中的指定地址處寫入指定個數(shù)的數(shù)據(jù)。
** 其它說明:每個通道的基準值均為16位無符號整數(shù),讀取時先讀低地址的高位字節(jié),再讀高地址的低位字節(jié),最后組
**           合成為一個16位無符號整數(shù)作為基準值。
**
** 作  者: 羅建
** 日  期: 2007年09月20日
**-------------------------------------------------------------------------------------------------------
** 修 改 人:
** 日  期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void SaveBase(void)
{
  WriteBytes(ADDR_BASE_VAL1, 2, gnBaseVal[0].Byte);
  WriteBytes(ADDR_BASE_VAL2, 2, gnBaseVal[1].Byte);
  WriteBytes(ADDR_BASE_VAL3, 2, gnBaseVal[2].Byte);
}

// ------------------------------------------------------------------------------------------------------																										
/********************************************************************************************************
** 函數(shù)名稱: LoadBase
** 功能描述: 從STC5408AD芯片內(nèi)部的EEPROM中讀取三個測量通道的基準值。
** 輸  入: 無
** 輸  出: 無
** 全局變量: gnBaseVal[]>>>>>>>>存放前三個測量通道的基準測量值。
** 全局常量:無
** 調(diào)用模塊: ReadBytes()>>>>>>>>從STC5408AD芯片內(nèi)部的EEPROM中的指定地址處讀取指定個數(shù)的數(shù)據(jù)至指定的緩沖區(qū)。
** 其它說明:每個通道的基準值均為16位無符號整數(shù),讀取時分成兩個字節(jié),低地址放高位字節(jié),高地址放低位字節(jié)。
**
** 作  者: 羅建
** 日  期: 2007年09月20日
**-------------------------------------------------------------------------------------------------------
** 修 改 人:
** 日  期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void LoadBase(void)
{
  ReadBytes(ADDR_BASE_VAL1, 2, gnBaseVal[0].Byte);
  ReadBytes(ADDR_BASE_VAL2, 2, gnBaseVal[1].Byte);
  ReadBytes(ADDR_BASE_VAL3, 2, gnBaseVal[2].Byte);
}

// ------------------------------------------------------------------------------------------------------																										
/********************************************************************************************************
** 函數(shù)名稱: DisLCD
** 功能描述: 將測試結(jié)果(減去基準值后)顯示在LCD上。
** 輸  入: 無
** 輸  出: 無
** 全局變量: gbClring>>>>>>>>>>>指示當前是否正處于清除LCD顯示狀態(tài),0~否,1~是;
**           gbDisInfo>>>>>>>>>>指示當前是否正在顯示INFO字符信息,0~否,1~是;
**           gnDisData[]>>>>>>>>存放要在LCD上顯示及要發(fā)送給PC的前三個測量通道及其平均值的測量數(shù)據(jù);
**           gnLcdBuf[]>>>>>>>>>代表四組LCD顯示緩沖區(qū)內(nèi)容(如:2.35mm);
**           gnADData[]>>>>>>>>>存放前三個測量通道的工程量結(jié)果;
**           gnBaseVal[]>>>>>>>>存放前三個測量通道的基準測量值。
** 全局常量:無
** 調(diào)用模塊: DataToLCDBuf()>>>>>把一個整型數(shù)據(jù)按個、十、百進行分解,再轉(zhuǎn)換為對應(yīng)數(shù)字的ASCII碼存放到LCD顯
**                              示緩沖區(qū)中;
**           DisplayListChar()>>在LCD顯示屏的指定位置處顯示一串字符。

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品亚洲人在线观看| 日韩美女视频一区二区| 99久久精品免费| 国产精品综合网| 成人综合激情网| 亚洲欧洲一区二区在线播放| 日韩一区二区电影在线| 一本久久精品一区二区| 成人永久免费视频| 麻豆精品在线观看| 日日嗨av一区二区三区四区| 亚洲色图19p| 亚洲婷婷综合色高清在线| 久久久久国产精品免费免费搜索| 7777精品伊人久久久大香线蕉最新版 | 粉嫩13p一区二区三区| 天天色图综合网| 亚洲欧美日韩久久| **网站欧美大片在线观看| 久久久久久久久蜜桃| 久久久美女艺术照精彩视频福利播放| 欧美最猛性xxxxx直播| 久久嫩草精品久久久精品| 国产亚洲女人久久久久毛片| 国产精品动漫网站| 一本一本大道香蕉久在线精品 | 国产一区二区三区黄视频 | 麻豆国产精品视频| 国产亚洲精品免费| 国产亚洲精品资源在线26u| 国产精品福利一区二区| 亚洲欧洲三级电影| 奇米888四色在线精品| 激情丁香综合五月| 97久久人人超碰| 91精品国产综合久久福利| 亚洲国产精品精华液ab| 日本美女一区二区| 亚洲久草在线视频| 亚洲另类春色校园小说| 日本不卡的三区四区五区| av一区二区三区黑人| 欧美一级片在线看| 亚洲日本免费电影| 日本一区二区三区久久久久久久久不 | 欧美成人精精品一区二区频| 欧美一区二区美女| 欧美丰满少妇xxxxx高潮对白| 日本一区二区视频在线| 国产一区日韩二区欧美三区| 欧美二区三区91| 免费观看一级欧美片| 3d动漫精品啪啪1区2区免费| 男男视频亚洲欧美| 日本一区二区免费在线 | 日韩一区二区三区电影| 日韩精品视频网| 日韩欧美的一区二区| 成人福利视频在线看| 欧美精品一区二区高清在线观看| 午夜欧美一区二区三区在线播放 | 日韩一级在线观看| 国产精品911| 亚洲天堂免费在线观看视频| 欧美在线观看视频一区二区三区| 一区二区三区国产精华| 欧美人牲a欧美精品| 蜜臀久久99精品久久久久久9| 精品美女一区二区三区| 成人精品免费网站| 午夜影视日本亚洲欧洲精品| 日韩精品一区二区三区中文不卡 | 蜜臀av亚洲一区中文字幕| 久久一留热品黄| 91小视频在线免费看| 美女在线观看视频一区二区| 国产精品拍天天在线| 日韩一级大片在线| 97久久精品人人做人人爽| 日本麻豆一区二区三区视频| 国产精品久久久久久妇女6080 | 精品一区二区av| 国产免费成人在线视频| 欧美综合视频在线观看| 另类小说一区二区三区| 日韩理论片网站| 日韩一二在线观看| 成人一道本在线| 综合激情成人伊人| 欧美一级欧美一级在线播放| 高清不卡在线观看| 亚洲精品视频自拍| 精品国产一区二区亚洲人成毛片| 国内精品伊人久久久久av影院| 亚洲人快播电影网| 精品国产网站在线观看| 色久综合一二码| 免费人成网站在线观看欧美高清| 国产夜色精品一区二区av| 欧美性生交片4| 91原创在线视频| 国产·精品毛片| 国产一区二区三区免费看| 国产精品日韩成人| 欧美视频三区在线播放| 国内外成人在线| 亚洲蜜桃精久久久久久久| 日韩欧美一卡二卡| 欧洲一区二区三区在线| 国内精品写真在线观看| 天天av天天翘天天综合网 | 日本一区二区在线不卡| 日韩一级黄色片| 91麻豆精品国产自产在线| 日本精品一区二区三区高清| 国产成人亚洲综合a∨婷婷| 九九视频精品免费| 韩国成人在线视频| 日韩国产一二三区| 日日夜夜免费精品| 天涯成人国产亚洲精品一区av| 夜夜嗨av一区二区三区网页| 亚洲欧美自拍偷拍色图| 国产精品久久久久久久久免费相片| 2020国产精品自拍| 国产精品视频一二三区 | 中文字幕第一区二区| 国产精品网站在线| 17c精品麻豆一区二区免费| 8x8x8国产精品| 91久久国产综合久久| 日韩美女天天操| 一区二区理论电影在线观看| 久久电影网站中文字幕| 99精品桃花视频在线观看| 日韩午夜激情av| 亚洲激情校园春色| 国产米奇在线777精品观看| 亚洲一区二区精品视频| 蜜桃视频在线一区| 91网站最新地址| 日韩免费高清av| 日本一区免费视频| 日本午夜精品视频在线观看 | 国产精品久久久久久妇女6080| 亚洲资源中文字幕| 国内精品视频666| 欧美日韩国产免费一区二区 | 日韩电影免费在线观看网站| 成人综合婷婷国产精品久久免费| 欧美在线999| 国产精品视频一二三区| 蜜臀久久久99精品久久久久久| 日本精品一级二级| 成人欧美一区二区三区在线播放| 国产精品综合在线视频| 风间由美一区二区av101| 国产精品国产三级国产| 91久久免费观看| 天天免费综合色| 欧美刺激午夜性久久久久久久| 国产一区二区三区四区在线观看| 国产三区在线成人av| voyeur盗摄精品| 亚洲国产综合在线| 欧美精品在线观看一区二区| 免费观看日韩av| 久久久不卡网国产精品一区| 成人一二三区视频| 亚洲国产中文字幕| 国产日产欧产精品推荐色| 91视频com| 国内成+人亚洲+欧美+综合在线| 国产亚洲视频系列| 欧美日韩免费电影| 国产原创一区二区三区| 亚洲精品成a人| www亚洲一区| 欧美男女性生活在线直播观看| 天堂影院一区二区| 久久欧美中文字幕| av不卡在线播放| 美女一区二区久久| 欧美成人艳星乳罩| 不卡一区在线观看| 日韩**一区毛片| 中文在线免费一区三区高中清不卡| 91网上在线视频| 免费观看在线综合| 亚洲欧美在线视频| 日韩亚洲欧美高清| 91成人在线精品| 国产精品66部| 男女男精品网站| 亚洲成av人片观看| 欧美韩日一区二区三区四区| 欧美日韩1234| 色婷婷精品久久二区二区蜜臀av| 婷婷夜色潮精品综合在线| 国产精品国产三级国产三级人妇|