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

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

?? hvda.c

?? Cygnal C8051Fxxx系列單片機的 Keil C 51 例程 代碼 共20章
?? C
字號:
//////////HVDA高差壓差動輸入,定時啟動,由T2定時////////////////
/////////選擇4,5通道為ADC0差動轉化通道//////////////
/////////儀表為某速度儀,輸出Vout:0-10V,且帶有參考電壓輸出Vref:5V////
/////////儀表特性:Vout-Vref與速度成線性關系,量程為-1m/s至1m/s///////
/////////對于電壓超過3.6V的AD轉化,只能采用HVDA通道////////////////
/////////儀表輸出端與HVAIN+相連,儀表參考電平輸出與HVAIN-相連////
/////////HVREF端與1V相連(可由DAC輸出產生)//////////////////////////
///////////HVCAP連接30pf,濾波轉折頻率在1KHZ左右//////////////////
/////////程序中對速度積分求取位移//////////////////////////////////////
//////HVDA.c///////////////////////////////////
#include "mylcd.h"
#include "math.h"
#include "stdio.h"
extern bit isline0;
#define ADC0START temppage=SFRPAGE;SFRPAGE=0x00;AD0BUSY=1;SFRPAGE=temppage
#define RATE_P 680L
#define RATE_N 680L
#define VEL_RATE 119L
#define ADJRATEDIF 593L
#define STATIC_ERROR 8
#define NOISE_LIM 10

/*
REAL_RATE為物理量轉化系數,由具體對象而定
ADJRATEDIF為差動模式下,增益為0.5時ADC0轉化值與真實電壓的轉換系數
ADJRATESE為單端輸入模式下,增益為0.5時ADC0轉化值與真實電壓的轉換系數
STATIC_ERROR為HVDA運方靜態誤差,由實際使用標定,標定方法將HVAIN+與HVAIN-接在一起觀察轉化值
NOISE_LIM為噪聲門限,由于測量噪聲的存在,速度為0時,檢測值不一定為0
當檢測值大于噪聲門限后,才認為速度不為0,對其積分,否則認為速度為0,這樣能一定程度克服靜態漂移
*/

sfr16 RCAP2=0xca;
sfr16 RCAP3=0xca;
sfr16 RCAP4=0xca;
sfr16 TMR4=0xcc;
sfr16 TMR3=0xcc;
sfr16 TMR2=0xcc;
sfr16 PCA0CP0=0xfb;
sfr16 PCA0CP1=0xfd;
sfr16 PCA0CP2=0xe9;
sfr16 PCA0CP3=0xeb;
sfr16 PCA0CP4=0xed;
sfr16 PCA0CP5=0xe1;
sfr16 ADC0VAL=0xbe;//將ADC0H-ADC0L通過sfr16實現
sfr16 ADC0GT=0xc4;
sfr16 ADC0LT=0xc6;
uchar temppage;
bit isnewdata;
int kk;
xdata long vel_val;//速度值
xdata long vol_val;//電壓值
xdata long dis_val;//小位移值
xdata long vel_rate_p;
xdata long vel_rate_n;
xdata long dis;//大位移值
xdata long tempk;
void adc0_mux(uchar type,uchar source);
void adc0_source(uchar source);
void p3anolog_ini(uchar port);
void HVDA_ini(uchar gaind);
void adc0_ini();
void config();
void t2_ini();
void t2_baud(uint t2reload);
void dispini(){	//lcd顯示初始化
	delay1ms(100);
	SFRPAGE=0xf;
	lcdcs=0;         
	lcdrs=1;
	lcdrw=1;
	delay1ms(30);
	sendc(0x38);//8位,2行,5*7字體
	delay1ms(100);
	sendc(0x0c);//顯示開,光標關;不閃
	delay1ms(100);
	sendc(0x06);//增量方式,現不移動
	delay1ms(100);
	sendc(0x01);//清屏
	delay1ms(100);
}
void t2_ini(){
	SFRPAGE = 0x00;
	TMR2CF = 0x08;  // T2時鐘為系統時鐘,計數方向為增值計數
	TMR2CN = 0x04;  // T2為16bit定時器模式,并啟動定時器運行
}
void t2_baud(uint t2reload){//每隔t2reload個T2時鐘,產生一次定時溢出
	SFRPAGE = 0x00;
	RCAP2=~t2reload+1;//相當于65536-t2reload
	TMR2=RCAP2;
	vel_rate_n=RATE_N*(long)t2reload;
	vel_rate_p=RATE_P*(long)t2reload;
}
void adc0_mux(uchar type,uchar source){//type 配置測量方式為差動還是單端輸入
//source 為ADC0通道選擇(共有9個通道)
	SFRPAGE=0x00;
	AMX0CF=type;
	AMX0SL=source;
}
void adc0_source(uchar source){//ADC0通道選擇,為adc0_mux()的簡化函數
	SFRPAGE=0x00;
	AMX0SL=source;
}
void p3anolog_ini(uchar port){//配置p3口模擬輸入管腳
	SFRPAGE=0x00;
	AMX0PRT=port;
	SFRPAGE=0x0f;
	P3MDIN&=~port;//將相應管腳配置成模擬輸入口
}
void HVDA_ini(uchar gaind){
/*高壓差動放大器配置,調的只是第二級的增益,整體增益還需再乘以0.05;*/
//HVDA禁止時,HCAP+上檢測到的是HVAIN+的電壓
	SFRPAGE=0x00;
	HVA0CN=gaind;
}
void adc0_ini(){
	SFRPAGE=0x00;
	ADC0CF=0x18;//ADC0時鐘為系統時鐘4分頻,PGA增益為1
	ADC0CN=0x8c;//AD0TM=0,ADC0為連續跟蹤模式,由T2溢出率啟動ADC0
	//AD0LJST=0,數據存儲格式右對齊,即ADC0H存放12bit高四位
	REF0CN&=0x0f;//AD0VRS=0,ADC0參考電壓為VREFA
	REF0CN|=0x07;//TEMPE=1,內部溫度傳感器工作
	//BIASE=1,偏移產生器工作
	
	/*REFBE=1,內部參考電平工作,電路部分須將VREF參考輸出(C8051F40的第12管腳)與	VREF0(C8051F040的16管腳相連,并最好并聯一個4.7uF和0.1uF的旁路電容以電平濾波*/

	HVDA_ini(0x83);//啟用HVDA高壓差動放大器,增益為0.2
	adc0_mux(0x0c,4);//PORT3IC=1,ADC0 6、7通道為差動模式
	//HVDA2C=1,4、5通道為差動輸入模式
	//AIN0.0-AIN0.3均為單端模式
	//選擇4,5通道為ADC0差動轉化通道
	/*
	進入ADC轉化的電壓為:
	HVDA(out)-HVREF=[(HVAIN+)-(HVAIN-)]*Gain+HVREF-HVREF=[(HVAIN+)-(HVAIN-)]*Gain
	其中整體增益Gain=Gain_HVDA*Gain_PGA=0.2*0.1=0.2
	所以進入ADC0轉化的HVDA差動電壓為:
	[(HVAIN+)-(HVAIN-)]*0.2,其值范圍為-1V至1V
	引入HVREF的目的是在[(HVAIN+)-(HVAIN-)]*Gain為負電平時,通過HVREF抬升,使其落在ADNG-AV+范圍內
	*/
	
	EIE2 |= 0x02;        //開ADC0中斷
	t2_ini();
	t2_baud(30000);//每隔3000個T2時鐘產生一次ADC0采樣,約1ms采樣一次
	SFRPAGE=0x00;
	TR2=1;
}
void config (void) {
//看門狗禁止
    WDTCN = 0x07;	
    WDTCN = 0xDE;   
    WDTCN = 0xAD;
    SFRPAGE = 0x0F;
    XBR0 = 0x00;	
    XBR1 = 0x00;	
    XBR2 = 0x40;	//交叉開關使能,使得P0-P3口能輸出
    XBR3 = 0x00;    
    SFRPAGE = 0x0F;
    P0MDOUT = 0x00; //端口配置,P0-P3,P6-P7口為開漏輸出
    P1MDOUT = 0x00; 
    P2MDOUT = 0x00; 
    P3MDOUT = 0x00; 
    P4MDOUT = 0x00; //P4口為開漏,也可推挽
    P5MDOUT = 0x07; 
    P6MDOUT = 0x00; 
    P7MDOUT = 0x00; 
    P1MDIN = 0xFF;  //所有端口為數字輸入,沒有模擬輸入端口
    P2MDIN = 0xFF;  
    P3MDIN = 0xFF; 
    SFRPAGE = 0x0F;
    CLKSEL = 0x00;  
    OSCXCN = 0x00;	
    OSCICN = 0x84;	
    //采用內部晶振,為24.5MHZ8分頻
}   

void main(){
	xdata float showfloat;
	xdata uint i;
	bit isfirst1=1,isfirst2=1,isfirst3=1;
	config();
	dispini();//LCD初始化,具體見LCD章節部分
	adc0_ini();//ADC0初始化
	EA=1;
	i=0;
	dis_val=0;
	dis=0;
	isline0=1;
	printf("\nhello");
	printf("\ntesting");
	while(1){
		if(isnewdata){//輪流顯示三組數據
			i++;
			if(i>80&&i<160){
				if(isfirst1){
					showfloat=vol_val/100000.0;
					printf("\nvol=%.2f",showfloat);
					isfirst1=0;
				}
				isfirst2=1;
				isfirst3=1;
			}
			if(i>160&&i<240){
				if(isfirst2){
					showfloat=vel_val/100000.0;
					printf("\nvel=%.5f",showfloat);
					isfirst2=0;

			}
			isfirst1=1;
			isfirst3=1;
			}
			if(i>240&&i<300){
				if(isfirst3){
					showfloat=dis/1000.0;
					printf("\ndis=%.3f",showfloat);
					i=0;
					isfirst3=0;
				}
				isfirst1=1;
				isfirst2=1;
			}
			isnewdata=0;
		}
	}
}
void ADC0_ISR() interrupt 15{
	SFRPAGE=0x00;
	AD0INT=0;
	kk=ADC0VAL;
	kk+=STATIC_ERROR;//轉化值加上靜態誤差,進行測量修正
	vel_val=(long)kk*VEL_RATE;
	vol_val=(long)kk*ADJRATEDIF;
	/*
	ADC0轉化值乘以速度轉化系數,其結果為速度真實值乘以100000
	例如ADC0VAL=65136時,即kk=-400,則vel_val=-400*119=-47600,即表示真實速度值為-0.476m/s 
	*/

	if(abs(kk)>NOISE_LIM){//與噪聲門限比較,決定是否積分
		tempk=kk;
		if(tempk>0)
			tempk*=vel_rate_p;//正向系數
		else
			tempk*=vel_rate_n;//反向系數
		dis_val+=tempk;
		if(labs(dis_val)>=1.0e9L){//當小位移絕對值大于1.0e9L時,將其值與1.0e9L的比值賦給大位移
		//這是long運算位數不夠的一種處理方法
			tempk=dis_val/1.0e9L;
			dis+=tempk;//dis*10e-3為物理量值(單位為米)
			dis_val-=tempk*1.0e9L;
		}
		
	}
	isnewdata=1;
	
	/*
	對速度等進行數字積分,由于測量噪聲的存在,往往需要考慮濾波問題
	本程序以調試為目的,實際使用中,要結合具體測量對象,可能要考慮卡爾曼濾波等算法提高測量精度
	vel_rate_p與檢測周期和RATE_P有關,在t2_baud()中賦值,用戶只需改變RATE_P便可進行標定調整
	vel_rate_n與檢測周期和RATE_N有關,實際當中測量對象正向增益與反向增益可能不同
	通過調整RATE_P和RATE_N能一定程度克服回差
	RATE_P理論計算值如下推導:
	采樣時間:tf=1/[24.5MHZ/(8*t2_baud)],t2_baud為T2定時周期
	速度值:(2.43/2048)*Val_AD,  Val_AD為ADC轉化值
	采樣時間*速度值=采樣周期內的位移=Val_AD*vel_rate_p=Val_AD*t2_baud*RATE_P
	從而得:RATE_P=(2.43*8)/(2048*24.5M)=3.874e-10
	若不采用浮點運算,取RATE_P=387L,則運算結果相當于放大1.0e12倍
	分析運算溢出可能性:
	long型數據為32位,由于是帶符號,則絕對值為31位,即最大數據為2^31約為2.1e9>1.0e9,所以小位移采用1.0e9為程序控制溢出值合理
	當速度為1m/s時,ADC轉化值為842,則采樣周期內位移計算為:842*387*T2_baud<1.0e9,則有T2_baud<3068
	大位移值為10e-3m,將大位移與小位移數據合并,大位移相當于整個數據的10進制高于1.0e9部分
	而整個數據與真實物理值為1.0e12倍關系,所以大位移數據與真實物理值為1.0e-3關系
	若要使得定時周期可調范圍更大,則通過改變vel_rate_p和vel_rate_n的計算公式即可
	比如不是乘以t2reload,而是乘以t2reload的1/100,則定時時間可增長100倍
		
	*/
	
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
麻豆极品一区二区三区| 亚洲天堂网中文字| 亚洲欧洲精品一区二区三区 | 成人免费毛片嘿嘿连载视频| a在线欧美一区| 欧美va亚洲va香蕉在线| 亚洲欧美一区二区久久 | 成人亚洲一区二区一| 日韩精品每日更新| 亚洲国产精品尤物yw在线观看| 国产精品白丝jk白祙喷水网站| 欧美日韩免费一区二区三区| 中文字幕中文字幕在线一区 | 久久久综合九色合综国产精品| 亚洲综合无码一区二区| 国产成人亚洲综合色影视| 欧美一区二区三区系列电影| 亚洲自拍偷拍九九九| 99久久精品一区二区| 亚洲国产精品成人综合色在线婷婷 | 国产日韩欧美高清| 九九国产精品视频| 91麻豆精品国产自产在线观看一区| 一区二区三区中文字幕精品精品| 成人av资源在线| 国产夜色精品一区二区av| 激情综合一区二区三区| 日韩一区二区精品在线观看| 午夜精品福利在线| 欧美色窝79yyyycom| 亚洲综合自拍偷拍| 在线观看亚洲一区| 亚洲自拍另类综合| 欧美美女喷水视频| 日韩精品乱码免费| 日韩免费在线观看| 精品一区二区三区免费毛片爱 | 欧美中文字幕一区二区三区 | 久久香蕉国产线看观看99| 激情欧美一区二区三区在线观看| 日韩精品一区二区在线观看| 91麻豆6部合集magnet| 亚洲男人天堂av| 91老师片黄在线观看| 亚洲美女偷拍久久| 欧美日韩免费在线视频| 老汉av免费一区二区三区| 久久久影视传媒| 福利电影一区二区| 亚洲人成7777| 制服.丝袜.亚洲.中文.综合| 美国三级日本三级久久99| 久久亚洲精华国产精华液 | 日韩美女精品在线| 欧美在线短视频| 欧美bbbbb| 欧美国产欧美综合| 日本乱码高清不卡字幕| 毛片一区二区三区| 国产精品欧美久久久久一区二区 | 91精品福利在线一区二区三区 | 免费成人小视频| 精品国产污污免费网站入口| 国产91丝袜在线观看| 亚洲视频每日更新| 日韩欧美国产综合一区| 成人高清av在线| 日韩主播视频在线| 亚洲国产精品黑人久久久| 欧美三级日韩三级| 久久99久久99精品免视看婷婷| 国内精品视频666| 综合电影一区二区三区 | 亚洲美女偷拍久久| 精品国产精品一区二区夜夜嗨| 成人国产电影网| 免费精品99久久国产综合精品| 1024精品合集| 26uuu国产一区二区三区| 91高清视频在线| 成人自拍视频在线| 另类小说色综合网站| 亚洲精品视频在线看| 2020国产精品自拍| 91精品福利在线一区二区三区| 97久久精品人人澡人人爽| 美女网站一区二区| 亚洲欧美日韩国产另类专区| 精品女同一区二区| 色香蕉成人二区免费| 久久99精品久久久久久国产越南| 日韩欧美在线123| 欧美日本韩国一区二区三区视频| 激情另类小说区图片区视频区| 亚洲欧美另类小说视频| 精品奇米国产一区二区三区| 色视频欧美一区二区三区| 国产在线一区二区| 亚洲免费在线观看| 久久久久久久久99精品| 欧美精品乱码久久久久久 | 免费欧美高清视频| 亚洲v日本v欧美v久久精品| 国产午夜精品福利| 日韩欧美国产综合一区| 色婷婷激情久久| 国产盗摄精品一区二区三区在线| 爽好久久久欧美精品| 亚洲与欧洲av电影| 中文字幕巨乱亚洲| 精品美女被调教视频大全网站| 欧美做爰猛烈大尺度电影无法无天| 国产一区不卡视频| 久久国产麻豆精品| 午夜伦理一区二区| 天天综合天天做天天综合| 综合久久久久久| 国产精品国产三级国产普通话蜜臀 | 欧美系列在线观看| 91亚洲精华国产精华精华液| 国产成人精品影视| 555www色欧美视频| 欧美日本一区二区三区四区| 一本色道久久综合亚洲aⅴ蜜桃| 亚洲成人中文在线| 一区二区三区电影在线播| 亚洲激情av在线| 亚洲精品国产a久久久久久 | 日韩天堂在线观看| 91精品国产一区二区三区蜜臀 | 国产精品亚洲第一| 国产大片一区二区| www.亚洲精品| 99久久久久久99| 色婷婷精品大在线视频| 欧洲精品在线观看| 欧美日韩中文字幕一区二区| 欧美午夜精品久久久久久孕妇 | 中文字幕一区二| 亚洲一区二区三区在线看| 亚洲一区二区三区四区在线观看| 洋洋成人永久网站入口| 亚洲一区二区在线观看视频| 亚洲va欧美va人人爽午夜 | 日本高清无吗v一区| 欧美性感一类影片在线播放| 91美女视频网站| 欧美一区二区三区在线视频| 精品国产乱码久久久久久图片| www久久精品| 综合欧美一区二区三区| 亚洲国产成人av网| 日本欧美久久久久免费播放网| 国产91露脸合集magnet| av毛片久久久久**hd| 欧美日韩亚洲综合一区二区三区| 欧美一区国产二区| 国产色综合久久| 亚洲美女电影在线| 日本中文一区二区三区| 国产一区二区三区高清播放| 成人午夜视频网站| 欧美日韩国产综合草草| 制服丝袜亚洲色图| 久久久久国产精品人| 国产精品情趣视频| 天天影视色香欲综合网老头| 日本美女一区二区三区视频| 国产伦精品一区二区三区视频青涩| www.亚洲色图.com| 91精品国产一区二区| 国产精品拍天天在线| 亚洲6080在线| 91猫先生在线| 久久久久国产一区二区三区四区| 一区二区三区 在线观看视频| 日本欧美加勒比视频| 国产成a人亚洲精| 久久亚洲精品国产精品紫薇| 一区二区三区在线观看网站| 国产精品影视网| 欧美三级午夜理伦三级中视频| 日韩欧美色综合网站| 亚洲www啪成人一区二区麻豆| 成人三级伦理片| 欧美大度的电影原声| 亚洲自拍偷拍综合| 91在线看国产| 中文字幕一区二区三| 国产盗摄精品一区二区三区在线| 欧美日韩夫妻久久| 国产精品一区二区你懂的| 欧美疯狂做受xxxx富婆| 亚洲日本在线看| 国产一区视频导航| 91精品国产一区二区| 亚洲一区二区三区国产| av电影在线观看一区| 国产欧美日韩在线观看| 国产在线精品国自产拍免费|