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

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

?? main14.c

?? 一個采用C8051F020+CH372實現的帶USB功能的流量測控系統
?? C
?? 第 1 頁 / 共 3 頁
字號:
/********************************************************************************************************
**				                                  RidenFlow
**
**                                          版權所有 (c) 2007,羅建
**                                               保留所有權利
**
**                                                  V1.0
**
**
**-------------------------------------------------文件信息----------------------------------------------
**文   件   名: Main.C
**設   計   者: 羅建
**最后修改日期: 2007年11月24日
**描        述: 源程序。
**其        它:MCU采用C8051F020,外部晶振為22.1184MHz,采用臺達3.8'LCD觸摸屏顯示測量數據和輸入配置信息,
**              并控制電磁閥和比例閥對,
**所屬項目概述:RIDEN FLOW流量計是用于測試氣體流量的裝置,其工作原理為:壓縮空氣經空氣過濾器到達比例控制閥,
**              經比例控制閥調壓穩定后,通過氣路通斷控制閥,到達氣體流量計,然后進入產品。該裝置功能就是測
**              量流過氣體的質量流量。
**              各部件的作用如下:
**              1、比例控制閥:其作用是調節前端的高壓氣體以使其穩定在設置的壓力值附近,為測試提供一個穩定的
**                 氣源。
**              2、氣路通斷控制閥:在每一個測量周期內,此閥通斷一次,即在測試檢測過程中打開,測試完成后關閉,
**                 直到下一個測試開始。
**              3、氣體流量計:用于測量流經該傳感器的壓縮空氣的流量。
**基本技術參數:1、被測介質:            壓縮空氣,<0.8MPa;
**              2、氣體流量范圍:        0-50L/min(超量程50% 顯示 Out Range);
**              3、流量精度:            0.01L/min;
**              4、采集及顯示頻率:      3Hz;
**              5、測試壓力:            0-50KPa(自動調節,穩壓);
**              6、測試壓力精度:        0.1KPa;
**              7、充氣時間:            0-999.9S;
**              8、測試時間:            0-999.9S;
**              9、校準系數:            5段;
**              10、通訊接口(To PC):  RS232。
**
**-----------------------------------------------歷史版本信息--------------------------------------------
** 設計者: 羅建
** 版  本: V1.00
** 日 期: 2007年11月24日
** 描 述: 原始版本
**
**-----------------------------------------------當前版本修訂--------------------------------------------
** 修改者: 羅建
** 版  本: V1.00
** 日 期: 2007年11月24日
** 描 述: 原始版本。
**
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#include <c8051f020.h>                      // SFR declarations
//#include <Intrins.h>
//#include <String.h>
#include "GlobeDef.h"

//-------------------------------------------------------------------------------------------------------
/* C8051F02x單片機的16位SFR定義 */
sfr16 DP          =  0x82;                  // data pointer
sfr16 TMR3RL      =  0x92;                  // Timer3 reload value
sfr16 TMR3        =  0x94;                  // Timer3 counter
sfr16 ADC0        =  0xbe;                  // ADC0 data
sfr16 ADC0GT      =  0xc4;                  // ADC0 greater than window
sfr16 ADC0LT      =  0xc6;                  // ADC0 less than window
sfr16 RCAP2       =  0xca;                  // Timer2 capture/reload
sfr16 T2          =  0xcc;                  // Timer2
sfr16 RCAP4       =  0xe4;                  // Timer4 capture/reload
sfr16 T4          =  0xf4;                  // Timer4
sfr16 DAC0        =  0xd2;                  // DAC0 data
sfr16 DAC1        =  0xd5;                  // DAC1 data

//-------------------------------------------------------------------------------------------------------
/* 本項目對C8051F02x單片機的引腳重定義,其中,XBR0 = 0x1F,XBR1 = 0x14,XBR2 = 0x44,P0MDOUT = 0x15,P1MDOUT = 0x01,P2MDOUT = 0x00,P3MDOUT = 0x80 */
// P0
sbit  UART0_TX    =  P0^0;                  // XBR0.2 = 1(UART0EN = 1),P0MDOUT.0 = 1,TX0作為推挽方式
sbit  UART0_RX    =  P0^1;
sbit  SPI_SCK     =  P0^2;                  // XBR0.1 = 1(SPI0EN = 1),P0MDOUT.2 = 1,P0MDOUT.4 = 1,SPI_SCK和SPI_MOSI作為推挽方式
sbit  SPI_MISO    =  P0^3;
sbit  SPI_MOSI    =  P0^4;
sbit  SPI_NSS     =  P0^5;
sbit  I2C_SDA     =  P0^6;                  // XBR0.0 = 1(SMB0EN = 1)
sbit  I2C_SCL     =  P0^7;
// P1
sbit  UART1_TX    =  P1^0;                  // XBR2.2 = 1(UART1EN = 1),P1MDOUT.0 = 1,TX1作為推挽方式
sbit  UART1_RX    =  P1^1;
sbit  PCA0_CEX0   =  P1^2;                  // XBR0.[5..3] = 011(PCA0ME = 011),CEX0、CEX1和CEX2連到三個端口上
sbit  PCA0_CEX1   =  P1^3;
sbit  PCA0_CEX2   =  P1^4;
sbit  INT0_SCK    =  P1^5;                  // XBR1.2 = 1(INT0E = 1),P1MDOUT.5 = 0,漏極開路方式,并使INT0_SCK = 1將其配置為數字輸入
sbit  INT1_CS     =  P1^6;                  // XBR1.4 = 1(INT1E = 1),P1MDOUT.6 = 0,漏極開路方式,并使INT1_CS = 1將其配置為數字輸入
sbit  INT2_MOSI   =  P1^7;                  // GPIO,P1MDOUT.7 = 0,漏極開路方式,并使INT2_MOSI = 1將其配置為數字輸入
// P2
sbit  KEY_START   =  P2^0;                  // P2MDOUT.0 = 0,漏極開路方式,并使KEY_START = 1將其配置為數字輸入
sbit  KEY_STOP    =  P2^1;                  // P2MDOUT.1 = 0,漏極開路方式,并使KEY_STOP = 1將其配置為數字輸入
sbit  PORT_P22    =  P2^2;                  // 保留
sbit  PORT_P23    =  P2^3;                  // 保留
sbit  DRV_PASS    =  P2^4;                  // P2MDOUT.4 = 0,漏極開路方式,作為數字輸出,高電平由外部上拉電阻確定
sbit  DRV_FAIL    =  P2^5;                  // P2MDOUT.5 = 0,漏極開路方式,作為數字輸出,高電平由外部上拉電阻確定
sbit  DRV_WARN    =  P2^6;                  // P2MDOUT.6 = 0,漏極開路方式,作為數字輸出,高電平由外部上拉電阻確定
sbit  DRV_VALVE   =  P2^7;                  // P2MDOUT.7 = 0,漏極開路方式,作為數字輸出,高電平由外部上拉電阻確定
// P3
sbit  LCD_RS      =  P3^0;                  // P3MDOUT.0 = 0,漏極開路方式,作為數字輸出,高電平由外部上拉電阻確定
sbit  LCD_RW      =  P3^1;                  // P3MDOUT.1 = 0,漏極開路方式,作為數字輸出,高電平由外部上拉電阻確定
sbit  LCD_E       =  P3^2;                  // P3MDOUT.2 = 0,漏極開路方式,作為數字輸出,高電平由外部上拉電阻確定
sbit  LCD_CS1     =  P3^3;                  // P3MDOUT.3 = 0,漏極開路方式,作為數字輸出,高電平由外部上拉電阻確定
sbit  LCD_CS2     =  P3^4;                  // P3MDOUT.4 = 0,漏極開路方式,作為數字輸出,高電平由外部上拉電阻確定
sbit  LCD_LED     =  P3^5;                  // P3MDOUT.5 = 0,漏極開路方式,作為數字輸出,高電平由外部上拉電阻確定
sbit  LCD_RST     =  P3^6;                  // P3MDOUT.6 = 0,漏極開路方式,作為數字輸出,高電平由外部上拉電阻確定
sbit  SPI_CS      =  P3^7;                  // P3MDOUT.7 = 1,推挽方式,作為數字輸出,高電平由內部弱上拉電阻確定
// P4
sfr   LCD_DBX     =  0x84;                  // P4,P74OUT = 0x00,P4口被配置為漏極開路方式,作為數字輸出,高電平由外部上拉電阻確定

// ------------------------------------------------------------------------------------------------------
/* 定義位變量 */
bit       gbReadyWarn;                           /* 指示是否進入告警超時檢測過程,0~否,1~是 */
bit       gbCanGetKey;                           /* 指示是否可以再次檢測按鍵,0~否,1~是 */
bit       gbTimeOver;                            /* 指示規定的定時間隔時間(100ms)時否到,0~未到,1~已到 */
bit       gbTestOver;                            /* 指示當前是否已完成或退出了檢測狀態,0~非檢測狀態或檢測過程未結束,1~檢測完成(但未退出檢測進程) */
bit       gbSyncOneOK0;                          /* 指示串口0數據幀的第一個同步字節是否接收完畢,0~未收到,1~收到 */
bit       gbSyncTwoOK0;                          /* 指示串口0數據幀的第二個同步字節是否接收完畢,0~未收到,1~收到 */
bit       gbSyncOneOK1;                          /* 指示串口1數據幀的第一個同步字節是否接收完畢,0~未收到,1~收到 */
bit       gbSyncTwoOK1;                          /* 指示串口1數據幀的第二個同步字節是否接收完畢,0~未收到,1~收到 */
bit       gbStarted;                             /* 指示<啟動鍵>是否按下,0~未按下,1~按下 */
bit       gbFilling;                             /* 指示當前是否工作于充氣狀態,0~否,1~是 */
bit       gbTesting;                             /* 指示當前是否工作于測試狀態,0~否,1~是 */

/* 定義字節變量 */
INT8U     data  gnCntADC;                        /* ADC0采集間隔時間計數器(為了降低LCD的刷新率) */
INT8U     data  gnCntWarn;                       /* 壓力告警超時計數器 */
INT8U     data  gnCntAdjust;                     /* 壓力調節時間計數器 */
INT8U     data  gnCnt10ms;                       /* 10ms定時計數器,用于實現100ms定時 */
INT8U     data  gnCntGetKey;                     /* 兩次檢測按鍵之間的時間間隔(實際間隔是該值乘以100ms */
INT8U     data  gnTxdID0;                        /* 串口UART0發送緩沖區數組索引 */
INT8U     data  gnRxdID0;                        /* 串口UART0接收緩沖區數組索引 */
INT8U     data  gnRxdID1;                        /* 串口UART1接收緩沖區數組索引 */
INT8U     data  gnTxdNums0;                      /* 串口UART0發送緩沖區數組中的數據個數,即要發送的數據個數 */
INT8U     data  gnT0OverCnt;                     /* 代表T0中斷溢出的次數 */
INT8U     idata gnRxdBuf0[64];                   /* 代表串口UART0接收緩沖區數組 */
INT8U     idata gnRxdBuf1[2];                    /* 代表串口UART1接收緩沖區數組,高字節在前 */
INT8U     idata gnTxdBuf0[16];                   /* 代表串口UART0發送緩沖區數組 */

/* 定義字變量 */
INT16U    data  gnADC0Res=0;                     /* ADC0的轉換結果(數字量) */
INT16U    data  gnPressGet=0;                    /* 測得的氣體壓力(單位為0.1KPa) */
INT16U    data  gnLeakGet=0;                     /* 測得的氣體流量(單位為0.01L/min) */
INT16U    data  gnPressSet=0;                    /* 用戶通過觸摸屏設定的氣體壓力(單位為0.1KPa) */
INT16U    data  gnPressMax=0;                    /* 用戶通過觸摸屏設定的允許最大氣體壓力(單位為0.1KPa) */
INT16U    data  gnPressMin=0;                    /* 用戶通過觸摸屏設定的允許最小氣體壓力(單位為0.1KPa) */
INT16U    data  gnLeakMax =0;                    /* 用戶通過觸摸屏設定的允許最大氣體流量(單位為0.01L/min) */
INT16U    data  gnLeakMin =0;                    /* 用戶通過觸摸屏設定的允許最小氣體流量(單位為0.01L/min) */
INT16U    data  gnCurrTime=0;                    /* 代表當前操作正在進行的時間 */
INT16U    data  gnFillTime=0;                    /* 用戶通過觸摸屏設定的充氣時間 */
INT16U    data  gnTestTime=0;                    /* 用戶通過觸摸屏設定的測試時間 */
INT16U    idata gnLeakAreaMax[6];                /* 用戶通過觸摸屏設定的分段修正流量最大值(單位為0.01L/min) */
INT16U    idata gnLeakAreaCoef[6];               /* 用戶通過觸摸屏設定的分段修正流量系數 */
INT16U    data  gnPressOut=0;                    /* 輸出到比例控制閥的壓力信號值(單位為0.1KPa) */

// ------------------------------------------------------------------------------------------------------
/* 函數聲明 */
void DeviceInit(void);
void SysInit(void);
void SetRxd0OK(void);
void SetRxd1OK(void);
void AdjustPress(void);
void DoneKey(void);
void DoneTest(void);

// ------------------------------------------------------------------------------------------------------
/********************************************************************************************************
** 函數名稱: main
** 功能描述: 主程序。
** 輸  入: 無
** 輸  出: 無
** 全局變量: 略
** 全局常量:略
** 調用模塊:略
** 設 計 者:羅建                                                                日  期:2007年12月09日
** 版    本:V1.00,原始版本
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void main(void)
{
  WDTCN = 0xDE;                             // 禁止看門狗定時器
  WDTCN = 0xAD;
  DeviceInit();                             // 初始化片上系統外圍設備   
  EIP2|=0x40;
  SysInit();                                // 初始化系統變量

  while (TRUE)                              // 主程序循環
  {
    while (!gbTimeOver);                    // 檢查定時間隔是否到(0.1秒)
    gbTimeOver = FALSE;                     // 準備重新延時
	if (gnCntADC-- == 0)
	{
	  gnCntADC = ADC_WAIT;
      AD0EN = TRUE;
    }
	// 檢查壓力是否超出設定的最大與最小值,是則警告  
    if ((gnPressGet > gnPressMax) || (gnPressGet < gnPressMin))
	{
	  if (!gbReadyWarn)                     // 當首次檢測到壓力超出設定值時,開始計時
	  {
	    gbReadyWarn = TRUE;
	    gnCntWarn = WARN_WAIT;
      }
      else if (gnCntWarn-- == 0)            // 當壓力超出設定值的時間持續10秒后,輸出報警指示
	  {
	    gbReadyWarn = FALSE;
        DRV_WARN = OPEN;        
	  }
    }
	else                                    // 壓力在設定值區間內,不用報警
	{
	  gbReadyWarn = FALSE;
      gnCntWarn = 0;
      DRV_WARN = CLOSE;
    }
    AdjustPress();                          // 進行壓力調節
    DoneKey();                              // 按鍵檢測處理
    DoneTest();                             // 執行流量測試
  }
}

// ------------------------------------------------------------------------------------------------------
/********************************************************************************************************
** 函數名稱: DeviceInit
** 功能描述: 片上系統外圍設備初始化子程序。
** 輸  入: 無
** 輸  出: 無
** 全局變量: 略
** 全局常量:略
** 調用模塊:略
** 其它說明:外部系統時鐘啟動過程建議為:
**           1)允許外部振蕩器;
**           2)等待至少1ms;
**           3)查詢XTLVLD是否由“0”=>“1”;
**           4)將系統時鐘切換到外部振蕩器。
**
** 設 計 者:羅建                                                                日  期:2007年12月09日
** 版    本:V1.00,原始版本
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void DeviceInit(void)
{
  int i;                                    // 延時計數器

  // 系統時鐘初始化
  OSCXCN = 0x67;                            // 啟動外部22.1184MHz晶體振蕩器
  for (i=0;i<3000;i++);                     // 等待XTLVLD消隱期(>1ms)
  while ((OSCXCN & 0x80) == 0);             // 等待外部晶振穩定
  OSCICN = 0x08;                            // 選擇外部振蕩器作為系統時鐘SYSCLK,同時禁止時鐘丟失檢測功能

  // 數字量輸入輸出端口初始化
  P0MDOUT = 0x15;                           // TX0、SPI_SCK和SPI_MOSI作為推挽方式
  P1MDOUT = 0x01;                           // TX1作為推挽方式

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人午夜精品一区二区三区| 亚洲伦理在线精品| 中文字幕免费一区| 亚洲成人av一区| 成人午夜激情影院| 日韩精品影音先锋| 亚洲线精品一区二区三区八戒| 国产一区二区女| 5月丁香婷婷综合| 一区二区激情小说| 99视频在线精品| 中文字幕国产一区| 国产在线精品视频| 日韩欧美中文字幕制服| 亚洲国产精品久久久久婷婷884| 成人精品在线视频观看| 精品99999| 久久精品国产免费看久久精品| 日本韩国欧美在线| 亚洲色图第一区| 99re视频精品| 国产精品久久久一本精品| 国产一区在线精品| 精品国产制服丝袜高跟| 日精品一区二区三区| 欧美无砖砖区免费| 亚洲蜜臀av乱码久久精品蜜桃| 成人黄色小视频| 亚洲国产精华液网站w | 日韩亚洲欧美中文三级| 亚洲永久精品国产| 欧美自拍偷拍一区| 亚洲资源在线观看| 欧美日韩一区小说| 亚洲国产aⅴ天堂久久| 日本乱人伦aⅴ精品| 亚洲影院理伦片| 欧美日韩国产电影| 石原莉奈在线亚洲三区| 欧美一区二区女人| 久久99蜜桃精品| 国产欧美日韩在线| 99国产精品99久久久久久| 日韩一区在线看| 欧美性生活一区| 日韩专区欧美专区| 精品电影一区二区| 91免费视频大全| 亚洲一区在线播放| 欧美一区午夜精品| 国产精品99久久久久久久女警| 欧美激情一区二区三区不卡 | 亚洲狼人国产精品| 国模套图日韩精品一区二区 | 日韩一级片网站| 久久不见久久见免费视频1| 精品少妇一区二区三区日产乱码| 国产一区二区三区在线观看精品 | 九色综合狠狠综合久久| 精品国产乱码久久久久久蜜臀 | 中日韩免费视频中文字幕| 91在线高清观看| 日日噜噜夜夜狠狠视频欧美人| 欧美精品一区二区在线播放| 99免费精品在线| 午夜精品久久久久久久久久| 久久精品视频一区二区| 日本乱人伦一区| 激情综合色综合久久| 日韩理论片中文av| 综合色中文字幕| 91麻豆精品国产91久久久久久| 国产成人综合网| 午夜精品福利视频网站| 久久久99精品久久| 欧美高清视频在线高清观看mv色露露十八 | 精品一区二区三区免费视频| 国产精品久久久久久久久免费桃花| 欧美揉bbbbb揉bbbbb| 韩国精品主播一区二区在线观看| 综合久久国产九一剧情麻豆| 日韩欧美国产精品一区| 日本韩国欧美一区二区三区| 国产精品1区2区| 日韩精品乱码免费| 亚洲日韩欧美一区二区在线| 欧美不卡123| 欧美精品九九99久久| 99精品国产91久久久久久| 国产原创一区二区| 男人的天堂久久精品| 一区二区三区不卡在线观看| 久久久高清一区二区三区| 在线播放日韩导航| 精品视频全国免费看| 99视频精品在线| 国产精品原创巨作av| 日本亚洲最大的色成网站www| 一区二区三区日韩欧美| 国产精品麻豆久久久| 国产亚洲一区二区三区在线观看 | 成人性生交大合| 毛片av中文字幕一区二区| 一区二区三区中文字幕电影| 国产精品久久久一本精品| 久久久久久久综合日本| 欧美草草影院在线视频| 欧美电影免费观看高清完整版在线观看| 欧美专区亚洲专区| 在线观看网站黄不卡| 日本道在线观看一区二区| 99精品视频一区二区三区| 国产成人免费视频精品含羞草妖精| 久久疯狂做爰流白浆xx| 久久成人18免费观看| 久久精品国产精品亚洲精品| 日欧美一区二区| 免费人成黄页网站在线一区二区| 日本va欧美va欧美va精品| 日韩精品免费专区| 久久er精品视频| 国产成人综合在线| 99vv1com这只有精品| 在线观看欧美日本| 777午夜精品免费视频| 91麻豆精品国产综合久久久久久| 欧美一卡2卡三卡4卡5免费| 欧美电影免费观看高清完整版在 | 国产精品国产馆在线真实露脸| 欧美极品另类videosde| 国产精品美女久久久久aⅴ| 亚洲人成亚洲人成在线观看图片 | 色老汉av一区二区三区| 色狠狠色狠狠综合| 欧美日韩免费一区二区三区 | 午夜精品久久久久久久99水蜜桃 | 欧美日韩国产美| 日韩欧美成人一区二区| 久久综合99re88久久爱| 国产精品乱人伦| 一区二区三区在线观看动漫| 亚洲成人精品一区二区| 美国av一区二区| 99久久精品国产观看| 欧美日韩一区 二区 三区 久久精品| 91精品国产91久久综合桃花 | 国模娜娜一区二区三区| 成人福利电影精品一区二区在线观看| 成人午夜免费av| 欧美肥妇bbw| 中文字幕久久午夜不卡| 亚洲一区二区av电影| 极品瑜伽女神91| 色噜噜狠狠成人网p站| 欧美一级专区免费大片| 国产精品欧美久久久久无广告| 一区二区在线观看免费视频播放| 日韩激情在线观看| 99久久伊人精品| 欧美一级理论性理论a| 国产精品欧美一区二区三区| 日韩影院在线观看| 国产a精品视频| 91精品国产综合久久久久久| 国产精品久久影院| 久草中文综合在线| 在线免费精品视频| 久久精品视频一区二区三区| 丝袜美腿亚洲色图| 91在线高清观看| 亚洲国产高清不卡| 国模一区二区三区白浆| 欧美日韩不卡一区二区| 国产精品久久久久一区| 久久99热这里只有精品| 欧美色窝79yyyycom| 国产欧美日韩视频在线观看| 美女一区二区在线观看| 欧美综合一区二区三区| 亚洲欧美在线视频观看| 国产原创一区二区| 日韩你懂的在线观看| 亚洲国产精品精华液网站| 91丨国产丨九色丨pron| 精品国产亚洲一区二区三区在线观看| 亚洲最新在线观看| 99久久久无码国产精品| 中文字幕不卡三区| 国产美女在线精品| 欧美精品一区二区蜜臀亚洲| 蜜桃在线一区二区三区| 欧美肥胖老妇做爰| 日本女人一区二区三区| 91精品国产福利在线观看| 亚洲成av人片在线| 欧美日韩国产bt| 视频一区二区欧美| 国产精品久久久久影院老司| 懂色av噜噜一区二区三区av| 久久久激情视频|