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

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

?? main.c

?? 24位AD壓力實驗板 protell99se打開
?? C
?? 第 1 頁 / 共 3 頁
字號:
//========================================================================================
//HX601公司:華信儀表
//   開發(fā)者:覃道堂  鄭穎   沈嘉榮
// 開發(fā)時間:2008年6月5日 
// 主要功能:低功耗,高精密壓力測量計算顯示
//========================================================================================
//         MSP-FET430f149 Program - press_measure
//		          MSP430F149
//  Built with IAR Embedded Workbench Version: 3.42A              
//                        _ _子任務(wù)
//                       |
//                       |_ _1,鍵盤掃描
//                       |
//                       |_ _2,液晶顯示
//                       |
//      壓力測量 ------->|_ _3,溫度測量
//  (壓力校準(zhǔn),溫度測量) |
//                       |_ _4,壓力計算
//                       |   
//                       |_ _5,壓力校準(zhǔn)綜合計算
//                       |
//                       |_ _6,功耗管理
//
//         一個主進(jìn)程,三個輔進(jìn)程;  進(jìn)程
//                                     _ _1,(1)AD 壓力測量,(2)AD未進(jìn)行溫度補(bǔ)償?shù)膲毫τ嬎悖?//                                    |
//                                    |
//                                    |
//                                    |
//                                    |
// 低功耗,高精密壓力測量計算顯進(jìn)程--->|_ _2,溫度測量
//                                    |
//                                    |
//                                    |
//                                    |
//                                    |
//                                    |_ _3,壓力校準(zhǔn)
//========================================================================================
#include <msp430x14x.h>
#include <math.h>
#include "lcd.h" 
#include "init.h"
#include "ADS1240.h"
#include "uart.h"
#include "24C64.h"
#include "Key.h"

#define  Mode_num1    0    //MODE 0顯示壓力值
#define  Mode_num2    1    //MODE 1校準(zhǔn)模式
#define  Mode_num3    2
#define  AD_Sampling_Time  3
#define  wuchar  1500

extern unsigned char Open_AD_Power(void);
extern void adc_init(void);
extern unsigned char PGA_Plus;
void Password_check(void);

void Mode_Check(void);
void Password_LCD_Display(unsigned char Cursor_Addr, unsigned char *LCD_data);
void Data_LCD_Display(unsigned char Cursor_Addr, unsigned char *LCD_data,unsigned char radixPoint);
float User_input(float input_data);
float Other_unit_to_KPa(unsigned char unit,float data);
unsigned char Line_num_Input(unsigned char line_num);
void rest_LCD_data(void);

void Long_TO_Char(long int data,unsigned char *s);
void Foat_TO_Char(float data,unsigned char *s);
 extern void UP_num_Display(unsigned char Point, long Value);
//========================================================================================
//系統(tǒng)變量
//========================================================================================
unsigned char Task_Mode;//主任務(wù)變量
unsigned char Exit_Modify_flag;//主任務(wù)變量
unsigned char Unitage;//主任務(wù)變量

//========================================================================================
//壓力變量變量
//========================================================================================




//========================================================================================
//AD變量
//========================================================================================
unsigned char EN_AD_Measure,AD_Task_Start,AD_Task_Complete;//AD采樣任務(wù)變量
unsigned char AD_Sampling_Num,line_revise_num;
union AD_Sampling_Data{                       
                        long int Sampling_AD_Num[5];
                       unsigned char Data_8Bit[4];
                       } Sampling_AD;

long int  ad1240_test[5],ad1240,Reset_AD_Data;
float  ad1240_test1[5],pressure;
unsigned long int  AD_Error[5];
unsigned long int ad1240_PGA;
long int ad12401;
float Standard_Press[100];//存入標(biāo)準(zhǔn)壓力值下的用戶輸入值
long int Measure_Press[100];//存入標(biāo)準(zhǔn)壓力值下的采樣的AD值
float user_zero,user_basinful;
float Press_Data,Press_Data1;
extern unsigned char P_RangeFlag;
//========================================================================================
//壓力校正變量
//========================================================================================
unsigned char Press_Adjust_state;
//========================================================================================
//LCD變量
//========================================================================================
unsigned char Back_Light_Task_Start,Back_Light_Time_num;//背光任務(wù)變量

unsigned char LCD_Cursor_Addr;                         //液晶光標(biāo)位置變量
unsigned char password[6]={0,1,2,3,4,5};               //密碼數(shù)組
unsigned char LCD_Key_bar[6]={0,0,0,0,0,0};            //液晶顯示的值數(shù)組
unsigned char Password_ok_flag;                        //密碼正確標(biāo)志
unsigned char LCD_NUM=6;                               //液晶顯示位數(shù)總數(shù)
unsigned char WDT_num;
//========================================================================================
//KEY變量
//========================================================================================
unsigned char key_data;//0x01背光   0x02校正  0x04清零 0x20單位
unsigned char KeyDown_flag;
//========================================================================================
//函數(shù):long ADS1240ReadData(int fWaitForDataReady)
//功能:讀取AD1240積存器
//變量:Byte
//返回:無
//========================================================================================
void Delay_1ms( long int value)
{ 
  unsigned char i;
  while(value>0)
  { 
    value--;  
    for(i=0;i<93;i++)
      _NOP();  
  } 
}
//========================================================================================
//函數(shù):long ADS1240ReadData(int fWaitForDataReady)
//功能:讀取AD1240積存器
//變量:Byte
//返回:無
//========================================================================================
long int AD_Data_Manage( long int *data,unsigned char num)
{
unsigned char i;
 long int max_data,min_data,ad_data=0;
  long  int *data1;

data1=data;
max_data=data1[0];
min_data=data1[0];
for(i=0;i<num;i++)
{
  ad_data=ad_data+data[i];
  if(data[i]>max_data)  max_data=data1[i];
  else 
    if(data[i]<min_data)  min_data=data1[i];
}
ad_data=ad_data-max_data-min_data;
ad_data=(unsigned long)(ad_data/(num-2));
return ad_data; 
}
//========================================================================================
//函數(shù):void main(void)
//功能:HX601產(chǎn)品主函數(shù) 主要實現(xiàn)高精度,低功耗壓力測量
//變量:無
//返回:無
//========================================================================================
void main(void)
{
unsigned char i=3,j,flag,char_data[4],modify_num; 
unsigned long int k;
long int bar,bar2;
unsigned long int bar1;
float data,data_ad;

//ky=powf(user_zero,user_basinful);

//================================================================================
//初始化端口
//================================================================================   
 WDTCTL=WDTPW+WDTHOLD;  //Stop WDT  
 init_port();  
 Delay_1ms(200); 
 Task_Mode=0;
 //================================================================================
//初始化壓力校驗變量
//================================================================================
Press_Adjust_state=0; 
 Press_Adjust_state=ReadWord(Adjust_state);  
 //========================================================================================
//讀取EE中校正參數(shù)
//========================================================================================
  if(Press_Adjust_state==0x01)
    {    
    // AD_negative_flag=ReadWord(AD_negative_ee_flag); 
      
    PGA_Plus=ReadWord(AD_PGA_Plus);  
    //=============================================
    //讀取零點校正值
    //=============================================
    for(i=0;i<4;i++)
       char_data[i]=ReadWord(Press_Zero+i);
    bar=0;
    bar=(bar+char_data[3])<<8;
    bar=(bar+char_data[2])<<8;
    bar=(bar+char_data[1])<<8;
    bar=(bar+char_data[0]);
    user_zero=(float)bar;
    user_zero=user_zero/10;
    for(i=0;i<4;i++)    
      char_data[i]=ReadWord(Press_Most+i);    
    bar=0;
    bar=(bar+char_data[3])<<8;
    bar=(bar+char_data[2])<<8;
    bar=(bar+char_data[1])<<8;
    bar=(bar+char_data[0]); 
    user_basinful=(float)bar;
    user_basinful=user_basinful/10;  
    if(user_basinful>10000) P_RangeFlag=1;    
    //=============================================
    //讀取線性校正值數(shù)量
    //=============================================
    line_revise_num=ReadWord(Press_line_modify_num);
    //=============================================
    //讀取線性校正值
    //=============================================
   for(i=0;i<line_revise_num;i++)    
   {
   for(j=0;j<4;j++)
    {
      char_data[j]=0;
      bar1=Press_Standard+i*8+j;
      char_data[j]=ReadWord(bar1);        
    }
    bar=0;
    bar=(bar+char_data[3])<<8;
    bar=(bar+char_data[2])<<8;
    bar=(bar+char_data[1])<<8;
    bar=(bar+char_data[0]);
    Standard_Press[i]=(float)bar;
    Standard_Press[i]=Standard_Press[i]/10;
    for(j=0;j<4;j++)
    {
      char_data[j]=0;
      bar1=Press_Measure+i*8+j;
      char_data[j]=ReadWord(bar1);       
    }
    bar=0;
    bar=(bar+char_data[3])<<8;
    bar=(bar+char_data[2])<<8;
    bar=(bar+char_data[1])<<8;
    bar=(bar+char_data[0]);
     Measure_Press[i]=bar; 
  }    
   
 }
  else
    {//各參數(shù)的默認(rèn)值
    PGA_Plus=0;//ADS1240_GAIN_32;
   // Zero_data=0x00;
    //Most_data=0xbb8;//3000
   // Most_decimal_num=0x04;
   // line_modify_num=0x00;
   // Most_Flag=0x00;
    P_RangeFlag=0;
    } 
//========================================================================================
//看門狗初始化
//========================================================================================  
 WDT_num=0;
 WDTCTL =WDT_ADLY_250;                  // WDT 1s/4 interval timer
 IE1 |= WDTIE;                          // Enable WDT interrupt 
//========================================================================================
//初始化液晶
//======================================================================================== 
init_lcd(); 
//I_VDisplay(6,pressure);
//set_lcd_powdn();
//WriteData(UP, 14, 3<<3);
			
 
//========================================================================================
//打開全局中斷
//======================================================================================== 
  

EN_AD_Measure=1;
AD_Task_Start=0;
AD_Task_Complete=0;
Task_Mode=0;
Reset_AD_Data=0;
_EINT(); 
CS2_1();
Unitage=0;
En_key_INT();
while(1)
{ 
//================================================================================
//進(jìn)入休眠
//================================================================================
_BIS_SR(LPM3_bits + GIE);                 // Enter LPM3  w/ interrupt
_NOP(); 
if(KeyDown_flag==1)
   {
    Mode_Check();
    KeyDown_flag=0;       
   }
switch( Task_Mode)
 {
case 0://壓力計算  子任務(wù) 壓力測量,壓力計算
    if(AD_Task_Complete)    
      {    
	      for(i=0;i<(AD_Sampling_Time-1);i++)
	      {
	       ad1240_test[i]=Sampling_AD.Sampling_AD_Num[i+1];
	      //if (ad1240_test[i]& 0x800000)      
	       // ad1240_test[i] |= 0xff000000;         
	       //ad1240_test1[i]=(float)ad1240_test[i];
	      }
              ad12401=AD_Data_Manage(ad1240_test,AD_Sampling_Time);
	      //ad12401=(long int)((ad1240_test[0]+ad1240_test[1])/2);
              ad12401=ad12401-Reset_AD_Data;
              modify_num=150;
              for(i=0;i<line_revise_num-1;i++)
             {              
              if((ad12401>=Measure_Press[i+1])&&(ad12401<Measure_Press[i]) )
              { modify_num=i;  break;}
             }
             if(modify_num==150)     
             {
               if(ad12401>=Measure_Press[0])                       
                  { modify_num=0;}
               else
               {  if(ad12401<Measure_Press[line_revise_num-1]) 
                    modify_num=(line_revise_num-2);                    
                 //else{break;}
               }             
             }      
             bar =Measure_Press[modify_num]-Measure_Press[modify_num+1];
             
             bar2=ad12401-Measure_Press[modify_num+1];
             data=Standard_Press[modify_num]-Standard_Press[modify_num+1];
             if(ad12401<Measure_Press[line_revise_num-1])
               Press_Data=Standard_Press[line_revise_num-1]+(((float)bar2/(float)bar)*data); 
             else 
               {
                 if(ad12401>Measure_Press[0])
                   Press_Data=(((float)bar2/(float)bar)*data)+Standard_Press[0];
                 else
                   Press_Data=(((float)bar2/(float)bar)*data)+Standard_Press[modify_num+1]; 
               }
             Press_Data=Press_Data*100;
             Press_Data1=Press_Data;
             //Press_Data=Press_Data-Reset_AD_Data;            
              PressureDisplay(0,4,Press_Data);
             // UP_num_Display(3,Press_Data);
	      AD_Task_Complete=0;
	      AD_Task_Start=0;
      }
   _NOP();
   _NOP();
break; 
case 0x01://壓力校準(zhǔn)任務(wù),

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
天堂成人免费av电影一区| 欧美一二三区在线观看| 毛片av中文字幕一区二区| 亚洲一级在线观看| 亚洲国产人成综合网站| 亚洲国产视频网站| 午夜免费久久看| 男人的天堂久久精品| 九九精品视频在线看| 国产精品中文字幕欧美| 成人动漫在线一区| 色综合激情五月| 欧美日韩国产首页在线观看| 欧美精品日日鲁夜夜添| 5月丁香婷婷综合| 精品捆绑美女sm三区| 国产日韩欧美不卡在线| 亚洲日韩欧美一区二区在线| 亚洲综合视频网| 免费成人深夜小野草| 国产精品69久久久久水密桃| 国产999精品久久久久久| 91色|porny| 日韩午夜激情电影| 国产欧美日韩三级| 亚洲一区在线观看免费| 蜜桃在线一区二区三区| 成人影视亚洲图片在线| 欧美影院一区二区三区| 日韩亚洲欧美综合| 亚洲天天做日日做天天谢日日欢| 亚洲va欧美va国产va天堂影院| 美女国产一区二区三区| 成人av动漫在线| 91精品欧美久久久久久动漫| 国产亚洲一区字幕| 亚洲高清中文字幕| 丁香天五香天堂综合| 欧美日韩一区精品| 国产精品美女久久久久久久| 亚洲国产cao| thepron国产精品| 日韩片之四级片| 亚洲欧美电影一区二区| 免费高清在线一区| 91久久久免费一区二区| 久久久亚洲午夜电影| 亚洲国产日韩av| 99视频精品在线| 国产亚洲精品aa午夜观看| 91精品国产91久久综合桃花| 日韩欧美黄色影院| 综合久久久久综合| 国产成人丝袜美腿| 欧美一级片免费看| 亚洲午夜电影在线观看| 成人蜜臀av电影| 2023国产精品自拍| 日韩黄色片在线观看| 在线观看日韩一区| 亚洲美女视频一区| 91丨porny丨最新| 中文字幕免费不卡| 国内外精品视频| 精品国精品国产尤物美女| 婷婷久久综合九色国产成人 | 亚洲另类在线制服丝袜| 精品一区二区三区在线观看 | 欧美电影免费观看高清完整版在 | 在线精品观看国产| 国产精品免费久久| 国产98色在线|日韩| 久久亚洲捆绑美女| 精品一区二区影视| 精品99一区二区三区| 精品亚洲国产成人av制服丝袜 | 国产精品日日摸夜夜摸av| 国产精品2024| 国产精品全国免费观看高清| 国产黄色成人av| 国产精品天干天干在观线 | 国产日韩影视精品| 国产成人综合自拍| 中文字幕va一区二区三区| 国产精品亚洲一区二区三区妖精 | 欧美色图第一页| 亚洲国产成人tv| 日韩亚洲欧美综合| 国产成人aaa| 亚洲精品亚洲人成人网在线播放| 色噜噜狠狠色综合中国| 亚洲一级在线观看| 精品国产免费人成在线观看| 激情综合网激情| 国产精品久久久久久久裸模| 91丨porny丨户外露出| 一区二区三区在线视频观看| 欧美日韩国产另类一区| 麻豆高清免费国产一区| 国产免费观看久久| 日本黄色一区二区| 久久国产三级精品| 国产精品高潮呻吟久久| 欧美中文字幕久久| 欧美麻豆精品久久久久久| 亚洲免费在线电影| 欧美一区二区三区在线电影 | 日韩一区二区免费在线电影| 九色综合狠狠综合久久| 中文字幕亚洲电影| 欧美一区二区在线观看| www.久久久久久久久| 午夜精品123| 中文字幕av不卡| 91麻豆精品国产自产在线 | 亚洲午夜激情网页| 久久众筹精品私拍模特| 色八戒一区二区三区| 久久99热99| 亚洲一区二区av在线| 国产三级一区二区| 日韩午夜三级在线| 91小视频在线免费看| 免费视频一区二区| 亚洲免费观看高清完整版在线观看熊| 日韩欧美专区在线| 欧美三级日韩三级| 91日韩在线专区| 国产a区久久久| 精品一区二区三区在线观看| 一区二区三区欧美日| 国产日韩欧美激情| 精品久久一区二区| 欧美日韩一级黄| 一本色道a无线码一区v| 床上的激情91.| 国产福利电影一区二区三区| 日韩成人免费看| 亚洲成a人v欧美综合天堂| 亚洲激情在线激情| 国产精品视频看| 国产欧美精品一区二区色综合朱莉 | 91精品国产欧美一区二区| 日本韩国欧美在线| 99久久国产综合精品女不卡| 国产成人亚洲综合a∨猫咪| 久久国产福利国产秒拍| 免费精品99久久国产综合精品| 亚洲国产精品久久久久秋霞影院| 亚洲精品免费看| 一区二区激情视频| 亚洲国产欧美日韩另类综合| 亚洲精品第1页| 亚洲一二三专区| 亚洲18色成人| 麻豆免费看一区二区三区| 蜜桃av一区二区三区电影| 麻豆精品一区二区综合av| 久久精品国产999大香线蕉| 久久精品国产精品青草| 理论电影国产精品| 国产一区二区精品久久91| 国产精品一区二区黑丝| 成人综合婷婷国产精品久久| 成人av在线一区二区三区| 91小视频在线观看| 欧美日本乱大交xxxxx| 日韩三级高清在线| 国产欧美一区二区三区在线看蜜臀| 国产午夜亚洲精品羞羞网站| 国产精品视频第一区| 一区二区三区在线播放| 日韩精品色哟哟| 国产成人av电影在线观看| 9l国产精品久久久久麻豆| 欧美这里有精品| 日韩欧美一区二区在线视频| 久久综合久色欧美综合狠狠| 国产精品欧美极品| 亚洲电影视频在线| 国产精品自在欧美一区| av一区二区久久| 欧美日韩国产一区二区三区地区| 精品久久人人做人人爽| 亚洲视频一区在线观看| 日韩国产精品久久久| 波多野洁衣一区| 欧美一区二区三区思思人| 亚洲国产精品黑人久久久| 亚洲成人av一区二区| 国产·精品毛片| 欧美老肥妇做.爰bbww| 国产亚洲欧美色| 国产精品美女久久久久高潮| 精品国产1区二区| 亚洲三级视频在线观看| 肉色丝袜一区二区| 成人av在线资源| 日韩一区二区麻豆国产| 一区二区三区鲁丝不卡|