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

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

?? 87c752.c

?? 87C52單片機(jī)在氣流測量中的應(yīng)用(過量保護(hù)
?? C
字號:
#include <reg752.h>
#include <stdio.h>

/**************************** 定義符號常數(shù) *******************************/
#define  ZERO_K      	   2730      /* 0 攝氏度, 1/10 kelvin */
#define  ONE_TENTH_CFM	   4444444L  /* 1/10 CFM 微秒 */
#define  CORRECTION	       0x11      /* 時鐘頻率為12MHz時計算CFM校正值 */
#define  STD_TEMP	       2980      /* 25 攝氏度, 1/10 kelvin */
#define  STD_ATM	           147	     /* 一個大氣壓 1/10 PSI */
#define  LOWEST_CFM	       0x40      /* 轉(zhuǎn)速表的最大周期值 0x400000 */
#define  START_ADC0	       0x28      /* 各個通道A/D轉(zhuǎn)換啟動命令 */
#define  START_ADC1	       0x29      
#define  START_ADC2	       0x2a
#define  START_ADC3	       0x2b
#define  START_ADC4	       0x2c
#define  ADCI		       0x10      /* A/D 轉(zhuǎn)換狀態(tài)標(biāo)志 */
#define  ADCS		       0x08
#define  FREERUN_I	       0x10
#define  SEG_A		       0x01      /* 七段LED中的 'a' 段 */
#define  CFM		       0x01      /* CFM  LED */
#define  SEG_B		       0x02      /* 七段LED中的 'b' 段 */
#define  DEGREES	       0x02      /* DEGREES  LED */
#define  SEG_C		       0x04      /* 七段LED中的 'c' 段 */
#define  PSI		       0x04      /* PSI  LED */
#define  SEG_D		       0x08      /* 七段LED中的 'd' 段 */
#define  SETPOINT	       0x08      /* SETPOINT  LED */
#define  SEG_E		       0x10      /* 七段LED中的 'e' 段 */
#define  SEG_F		       0x20      /* 七段LED中的 'f' 段 */
#define  SEG_G		       0x40      /* 七段LED中的 'g' 段 */
#define  SEG_DP 	       0x80      /* 七段LED中的 'dp'段 */

typedef  unsigned char byte;	         /* 8位無符號字節(jié)型數(shù)據(jù) */
typedef  unsigned int  word;	         /* 16位無符號字型數(shù)據(jù) */
typedef  unsigned long I_word;	     /* 32位無符號長字型數(shù)據(jù) */ 

#define  TRUE		       1
#define  FALSE		       0

/********************** 定義七段LED的顯示段碼表 ***************************/
code byte segments []=
 {
	     SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F	   , /* 0 */
		         SEG_B | SEG_C				               , /* 1 */
	     SEG_A | SEG_B |	         SEG_D | SEG_E	           , /* 2 */
	     SEG_A | SEG_B | SEG_C | SEG_D |		     SEG_G     , /* 3 */
		         SEG_B | SEG_C |		     SEG_F | SEG_G     , /* 4 */
	     SEG_A |	         SEG_C | SEG_D |	 SEG_F | SEG_G     , /* 5 */
	     SEG_A |	         SEG_C | SEG_D | SEG_E | SEG_F | SEG_G  , /* 6 */
	     SEG_A | SEG_B | SEG_C				                    , /* 7 */
	     SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F | SEG_G  , /* 8 */
	     SEG_A | SEG_B | SEG_C | SEG_D |	         SEG_F | SEG_G  , /* 9 */
	     SEG_A |		             SEG_D | SEG_E | SEG_F | SEG_G  , /* E */
 };

/******************* 定義87C752中用于I/O線的特殊功能位 *******************/
sfr   PWMP      = 0x8F;   /* 定義87C752的PWM預(yù)分頻寄存器 */

sbit  RELAY   	= 0x96;   /* 為高時閉合SETPOIN 繼電器 */
sbit  STROBE_0	= 0x80;   /* 為高時允許點(diǎn)亮各個狀態(tài)LED */
sbit  STROBE_1	= 0x81;   /* 為高時允許點(diǎn)亮cr15 (十分之一位) */
sbit  STROBE_2	= 0x82;   /* 為高時允許點(diǎn)亮cr14 (個位) */
sbit  NO_FLOW	= 0x83;   /* 未檢測到氣流量時的標(biāo)志位 */
sbit  STROBE_3	= 0x84;   /* 為高時允許點(diǎn)亮cr13 (十位) */
sbit  SEL_0	    = 0x93;   /* 為低時用于按鍵輸入, 選擇顯示模式 */
sbit  SEL_1	    = 0x94;   
sbit  INTR	    = 0x95;
sbit  UPDATE	    = 0x97;   /* 顯示更新標(biāo)志 */

/***************************** 定義內(nèi)存變量 ******************************/
data  word    cfm;	      /* 十分之一氣流量 CFM */
data  word    setpoint;   /* 十分之一氣流量 CFM 的繼電器設(shè)定值 */
data  word    degree_c;   /* 十分之一攝氏度 */
data  I_word  corr;	      /* 計算值 */
data  word    psi;	      /* 十分之一 PSI */
data  byte    display0;   /* 顯示更新值 */
data  byte    display1;   /* display0=status LEDs, display1=cr15,*/
data  byte    display2;  /* display2=cr14, display3=cr13,*/
data  byte    display3;   
data  byte    disp_pntr;  /* 下一個要點(diǎn)亮的LED指針 */
data  byte    refresh;	  /* 顯示更新計數(shù) */
data  byte    high;	      /* 24位計數(shù)器的第16 - 23位 */
data  byte    middle;	  /* 24位計數(shù)器的第 8 - 15位 */
data  byte    low;	      /* 24位計數(shù)器的第 0 - 7 位 */
data  byte    ticks;	      /* 定時器溢出加一計數(shù)  */

/**************************************************************************
*  函數(shù)原型	      : void multiplex() interrupt 3;
*  功    能	      : 利用自由運(yùn)行的定時器T1對顯示器進(jìn)行動態(tài)更新, 更新速度
*                    約為1000Hz。 
**************************************************************************/
void multiplex() interrupt 3 {
  	switch(disp_pntr) {
	       case 0x00:
		    STROBE_3 = FALSE;  /* 關(guān)閉cr13 */
		    P3 = 0xff;	       /* 關(guān)閉七段LED */
		    P3 = display0;     /* 裝入段碼 */
		    STROBE_0 = TRUE;   /* 點(diǎn)亮狀態(tài) LEDs */
		    disp_pntr = 1;     /* 指向下一個顯示器 */
		    break;
	       case 0x01:
		    STROBE_0 = FALSE;  /* 關(guān)閉狀態(tài) LEDs */
		    P3 = 0xff;	       /* 關(guān)閉七段 LED */
		    P3 = display1;     /* 裝入十分之一位LED段碼 */
		    STROBE_1 = TRUE;   /* 點(diǎn)亮cr15 */
		    disp_pntr = 2;     /* 指向下一個顯示器 */
		    break;
	       case 0x02:
		    STROBE_1 = FALSE;  /* 關(guān)閉cr15 */
		    P3 = 0xff;	       /* 關(guān)閉七段 LED */
		    P3 = display2;     /* 裝入個位LED段碼 */
		    STROBE_2 = TRUE;   /* 點(diǎn)亮cr14 */
		    disp_pntr = 3;     /* 指向下一個顯示器 */
		    break;
	       case 0x03:
		    STROBE_2 = FALSE;  /* 關(guān)閉cr14 */
		    P3 = 0xff;	       /* 關(guān)閉七段 LED */
		    P3 = display3;     /* 裝入十位LED段碼 */
		    STROBE_3 = TRUE;   /* 點(diǎn)亮cr13*/
		    disp_pntr = 0;     /* 指向下一個顯示器 */
	    }
 }

/**************************************************************************
*  函數(shù)原型	      : void read_switch() interrupt 6;
*  功    能	      : 利用自由運(yùn)行的PWM預(yù)分頻器產(chǎn)生92Hz周期的中斷。每中斷
*                   32次將UPDATE標(biāo)志置位, main()函數(shù)將根據(jù)該標(biāo)志位的狀
*                   態(tài)來采樣按鍵并進(jìn)行顯示更新。 
**************************************************************************/
void read_switch() interrupt 6 {
 	if (refresh++ == 32) {
	         UPDATE = TRUE;
	         refresh = 0;
	    }
 }

/**************************************************************************
*  函數(shù)原型	      : void overflow() interrupt 1;
*  功    能	      : 每當(dāng)定時器T1溢出(從0xffff到0x0000)時將變量'ticks'的
*                   值加1, 該值表示24位氣流量周期微秒計數(shù)器的高8位(16~
*                   23位)。如果'ticks'的值太大則將NO_FLOW標(biāo)志置位, 從而
*                   使main()函數(shù)在LED上顯示00.0。 
**************************************************************************/
void overflow() interrupt 1 {
  	if (++ticks > LOWEST_CFM) {
	      cfm = 0;
	      ticks = 0;
	      NO_FLOW = TRUE;
	    }
 }

/**************************************************************************
*  函數(shù)原型	      : void cal_cfm() interrupt 0;
*  功    能	      : 由轉(zhuǎn)速計脈沖產(chǎn)生的外部中斷(INT0)將定時器T0的當(dāng)前計
*                   數(shù)值送到24位微秒計數(shù)器的'low'(低8位)和'middle'(中
*                   8位), 同時復(fù)位定時器T0。將前面的'ticks'值拷貝到
*                   'high'中同時使'ticks'復(fù)位為0。清除NO_FLOW標(biāo)志, 從而
*                   使main()函數(shù)能在LED上顯示計算出的cfm值。 
**************************************************************************/
void cal_cfm() interrupt 0 {
 	 low = TL;
	     TL = 0;
  	 middle = TH;
	     TH = 0;
 	 high = ticks;
	     ticks = 0;
 	 NO_FLOW = FALSE;
 }

/**************************************************************************
*  函數(shù)原型	      : void main();
*  功    能	      : 在完成各個I/O引腳和變量的初始化之后進(jìn)入一個連續(xù)循
*                   環(huán)并完成以下任務(wù):
*                   -根據(jù)轉(zhuǎn)速計脈沖、輸入的溫度值和壓力值計算氣流量;
*                   -將氣流量與設(shè)定輸入值進(jìn)行比較, 并控制繼電器的開、閉;
*                   -在UPDATE標(biāo)志置位時采樣按鍵狀態(tài)并進(jìn)行顯示更新。 
**************************************************************************/
void main() {
   RELAY     = 0;	     /* 初始化輸出引腳 */
   INTR      = 1;
   UPDATE    = 1;
   STROBE_0  = 0;
   STROBE_1  = 0;
   STROBE_2  = 0;
   STROBE_3  = 0;
   NO_FLOW   = 0;
   I2CFG     = FREERUN_I; /* 不使用I2C, 定時器T1自由運(yùn)行 */
   RTL	     = 0;         /* 定時器T0裝入初值, 定時時間為0x10000 微秒 */
   RTH	     = 0;
   PWMP      = 255;	      /* PWM 中斷周期約為 93 Hz */
   TR	     = 1;	      /* 啟動定時器T0 */
   IT0	     = 1;	      /* 外部中斷INT0 為邊沿觸發(fā) */
   ticks     = 0;	      /* 變量初始化 */
   cfm	     = 0;
   low	     = 0 ;
   middle    = 0;
   high      = 0;
   degree_c  = 250;	     
   psi	     = 147;	    
   corr      = 0;
   refresh   = 0;
   disp_pntr = 0;
   IE	     = 0xab;	      /* 開中斷 */
   
   /*  進(jìn)入連續(xù)循環(huán)  */
   while(1) {
    
       /* 計算氣流量CFM */
       corr = high * 0x10000L;
       corr += (middle * 0x100L);
       corr = low;
       corr -= CORRECTION;
       corr = ONE_TENTH_CFM / corr;
     
       /* 讀取溫度測量值 */
       ADCON = START_ADC1;
       while (ADCON & ADCS);
       degree_c = ADAT;
       degree_c *= 2;
      
       /* 對CFM進(jìn)行溫度補(bǔ)償 */
       corr *= STD_TEMP;
       corr /= (ZERO_K + degree_c);
      
       /* 讀取壓力測量值 */
       ADCON = START_ADC0;
       while (ADCON & ADCS);
       psi = ADAT;
      
       /* 對CFM進(jìn)行壓力補(bǔ)償 */
       corr *= psi;
       corr /= STD_ATM;
       cfm = corr;
       
       /* 讀取氣流量設(shè)定值 */ 
       ADCON = START_ADC2;
       while (ADCON & ADCS);
       setpoint = ADAT;
       
       /* 測試CFM速率是否大于或等于設(shè)定值, 若是則觸發(fā)控制繼電器 */
       if (setpoint > cfm)
	            RELAY = 0;
       else
     	    RELAY = 1;
       
       /* 測試UPDATE標(biāo)志是否置位, 若是則將其復(fù)位 */
      if (UPDATE)	{
            UPDATE = 0;
       
       /* 測試NO_FLOW標(biāo)志是否置位, 若是則顯示'00.0' */
	            if (NO_FLOW)    {
                display0 = ~CFM;
                display1 = ~segments[0];
                display2 = ~(segments[0] | SEG_DP);
     		    display3 = ~segments[0];
	            }
         
       /* 若NO_FLOW標(biāo)志未置位, 采樣按鍵并顯示合適的數(shù)據(jù) */
	       else if (SEL_0) {
		          if (SEL_1) {
       
       /* 無鍵按下時則顯示氣流量值。若氣流量值大于或等于30cfm則顯示過
          載信息'EEE', 否則以'××.×'格式顯示氣流量值 */
 		     	   if (cfm <= 300) {
 			           display0 = ~CFM;
	     		           display1 = ~segments[cfm % 10];
		     	           cfm /= 10;
			               display2 = ~(segments[cfm % 10]);
			               cfm /= 10;
 			           display3 = ~segments[cfm % 10];
			           }
			           else  {
     			       display0 = ~CFM;
		          	       display1 = ~segments[10];
	         		       display2 = ~segments[10];
     			       display3 = ~segments[10];
		          	   }
		   }
        
       /* 若溫度鍵(SW1)按下則顯示氣體溫度測量值 */
		   else	{
 			   display0 = ~DEGREES;
	     		   display1 = ~segments[degree_c % 10];
		      	   degree_c /= 10;
			       display2 = ~(segments[degree_c % 10] | SEG_DP);
 			   degree_c /= 10;
	     		   display3 = ~segments[degree_c % 10];
		   	}
	      }
	      else   {
        
       /* 若PSI鍵(SW2)按下則顯示氣體壓力測量值 */
		       if (SEL_1) {
 			   display0 = ~PSI;
	     		   display1 = ~segments[psi % 10];
	     		   psi /= 10;
  			   display2 = ~(segments[psi %10] | SEG_DP);
 			   psi /= 10;
 			   display3 = ~segments[psi % 10];
	     		}
        
       /* 若設(shè)定值鍵(SW3)按下則顯示設(shè)定值 */
		        else  {
 			   display0 = ~SETPOINT;
	     		   display1 = ~segments[setpoint % 10];
	     		   setpoint /= 10;
 			   display2 = ~(segments[setpoint % 10] | SEG_DP);
 			   setpoint /= 10;
 			   display3 = ~segments[setpoint % 10];
	      		}
	        }
	      }
    }
 }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国内精品久久久久影院色 | 国产主播一区二区| 国产成人免费视频精品含羞草妖精| 一本大道综合伊人精品热热| 日韩免费成人网| 亚洲国产精品天堂| 成人av在线资源网| 久久久久综合网| 日精品一区二区| 色综合久久综合网| 国产精品免费久久| 久久se精品一区二区| 欧美日韩精品电影| 亚洲欧美韩国综合色| 国产福利一区二区三区视频| 91精品国产综合久久香蕉麻豆| 亚洲免费毛片网站| 本田岬高潮一区二区三区| 精品国产伦理网| 男女性色大片免费观看一区二区| 在线精品国精品国产尤物884a | 4hu四虎永久在线影院成人| 中文字幕一区二区三区在线观看| 国内成人精品2018免费看| 欧美精品乱码久久久久久按摩| 亚洲精品免费电影| 一本到不卡免费一区二区| 中文字幕av不卡| 成人免费毛片片v| 国产丝袜欧美中文另类| 国产精品一区二区久久精品爱涩| 精品国产伦一区二区三区观看体验| 日本免费在线视频不卡一不卡二 | 国产91丝袜在线观看| 亚洲精品一区二区三区在线观看| 美女网站在线免费欧美精品| 欧美高清你懂得| 日本不卡1234视频| 欧美mv日韩mv亚洲| 国产专区综合网| 国产精品日产欧美久久久久| 丁香婷婷综合激情五月色| 国产精品免费视频一区| 99久久伊人网影院| 亚洲免费观看在线视频| 欧美日韩一区在线| 蜜臀av性久久久久蜜臀aⅴ| 欧美成人精品福利| 成人午夜短视频| 日韩码欧中文字| 欧美精选午夜久久久乱码6080| 日本中文字幕一区| 久久久久久电影| 色哟哟日韩精品| 美女在线视频一区| 国产精品美女久久久久久久久久久| 99视频热这里只有精品免费| 亚洲蜜臀av乱码久久精品| 欧美日韩国产天堂| 国产夫妻精品视频| 亚洲免费观看高清| 精品精品国产高清a毛片牛牛 | 一区二区久久久久久| 欧美日韩国产一区二区三区地区| 久久av资源站| 亚洲欧美成aⅴ人在线观看 | 精品一区二区国语对白| 国产亚洲精品aa| 欧美特级限制片免费在线观看| 另类小说一区二区三区| 国产精品色呦呦| 日韩视频一区二区在线观看| 从欧美一区二区三区| 视频一区在线播放| 日本一区二区不卡视频| 9191国产精品| 北岛玲一区二区三区四区| 青青草91视频| 一区二区三区.www| 久久精品这里都是精品| 欧美日韩午夜在线视频| 丁香啪啪综合成人亚洲小说 | 亚洲蜜臀av乱码久久精品蜜桃| 制服丝袜成人动漫| 色综合久久久久久久久| 久久99精品久久久久| 亚洲一区二区三区小说| 国产精品国模大尺度视频| 欧美哺乳videos| 欧美日韩亚洲高清一区二区| 99精品1区2区| 国产激情一区二区三区| 青青草精品视频| 香蕉久久夜色精品国产使用方法| 国产精品久久久久影院亚瑟| 精品奇米国产一区二区三区| 精品视频免费在线| 色天使色偷偷av一区二区| 国产精品一区二区视频| 麻豆成人久久精品二区三区小说| 亚洲香肠在线观看| 亚洲三级久久久| 国产精品福利一区二区| 久久久国产综合精品女国产盗摄| 日韩欧美一二三区| 欧美肥大bbwbbw高潮| 欧美日韩在线一区二区| 欧美在线视频你懂得| 色狠狠一区二区| 色婷婷亚洲婷婷| 色噜噜久久综合| 91久久线看在观草草青青| 99久久久精品| 91麻豆蜜桃一区二区三区| caoporm超碰国产精品| 成人黄色av网站在线| 成人爱爱电影网址| 东方aⅴ免费观看久久av| 岛国精品在线播放| 成人精品gif动图一区| eeuss鲁片一区二区三区在线看| 成人性生交大片免费看在线播放 | 亚洲大型综合色站| 亚洲国产精品久久不卡毛片 | 欧美猛男男办公室激情| 69久久夜色精品国产69蝌蚪网| 欧美精品日韩精品| 日韩精品一区二区在线观看| 精品成人一区二区| 国产欧美一区二区精品久导航| 国产日韩欧美制服另类| 国产精品久久99| 亚洲.国产.中文慕字在线| 日韩高清中文字幕一区| 精品亚洲成a人| 成a人片亚洲日本久久| 欧美性感一类影片在线播放| 欧美一区日韩一区| 久久久噜噜噜久久人人看| 中文字幕一区二区三区在线播放| 一区二区三区精品| 蜜桃视频免费观看一区| 东方欧美亚洲色图在线| 欧洲精品视频在线观看| 日韩精品中文字幕在线一区| 中文字幕不卡一区| 亚洲国产精品精华液网站| 激情六月婷婷久久| 91污片在线观看| 日韩免费电影一区| 最新不卡av在线| 奇米色一区二区| 成人午夜在线播放| 欧美一区二区三区四区高清| 日本一区二区免费在线| 亚洲自拍偷拍av| 国产大陆a不卡| 91精品久久久久久久91蜜桃| 亚洲国产精品成人综合| 亚洲国产成人va在线观看天堂| 激情深爱一区二区| 欧美手机在线视频| 欧美韩日一区二区三区四区| 三级精品在线观看| 成人国产一区二区三区精品| 欧美一级专区免费大片| 亚洲人123区| 国产馆精品极品| 91精品欧美福利在线观看| 国产精品国产三级国产aⅴ原创| 美女免费视频一区二区| 在线视频一区二区三| 国产精品久久三区| 国产呦萝稀缺另类资源| 欧美精品一二三| 亚洲最大的成人av| 99视频有精品| 中文字幕精品在线不卡| 久久成人18免费观看| 欧美一区日韩一区| 亚洲第一电影网| 欧美性生活影院| 亚洲女同女同女同女同女同69| 粉嫩高潮美女一区二区三区 | 国产精品久久午夜夜伦鲁鲁| 国内外精品视频| 日韩午夜精品电影| 天天亚洲美女在线视频| 欧美性色黄大片| 一区二区三区欧美久久| 99国产精品久久久| 国产精品久久久久影院色老大| 国产精品亚洲午夜一区二区三区| 精品少妇一区二区| 蜜臀久久久99精品久久久久久| 欧美日韩成人综合| 天堂蜜桃91精品| 欧美一区二区三区日韩视频| 偷窥国产亚洲免费视频| 91精品免费在线观看|