啊啊啊流水了啊操逼污污,与妇女日逼视频,亚洲国产日韩欧美一区二区,k8经典网在线观看电影

24小時(shí)聯(lián)系電話:18217114652、13661815404

中文

您當(dāng)前的位置:
首頁>
電子資訊>
行業(yè)資訊>
微控制器以高分辨率將...

行業(yè)資訊

微控制器以高分辨率將頻率轉(zhuǎn)換為電壓


當(dāng)您需要將測量信號從數(shù)字域轉(zhuǎn)換為模擬域時(shí),此設(shè)計(jì)是僅需兩個(gè)芯片的合適解決方案。頻率到電壓的轉(zhuǎn)換在儀器電路中有許多應(yīng)用。

該設(shè)計(jì)(圖1基于14引腳PIC單片機(jī)16F753 ,該單片機(jī)具有嵌入式16位計(jì)數(shù)器和9位數(shù)模轉(zhuǎn)換器(DAC)。此設(shè)計(jì)的輸入頻率范圍在050 KHz之內(nèi),其輸出電壓在04.99 V的范圍內(nèi),分辨率為10 mV


1. PIC微控制器是該頻率電壓轉(zhuǎn)換器的中心。

為了實(shí)現(xiàn)轉(zhuǎn)換,將輸入頻率分為四個(gè)刻度,這些刻度由輸入SEL1SEL2 (圖2手動(dòng)選擇。

2.通過DIP微型開關(guān)將輸入頻率分為四個(gè)刻度


當(dāng)輸入代碼為1FFh511d)時(shí),DAC的最大值為4.99 V;對于輸入值為000h的最大值,則DAC的最大值為0.000V。對于第一個(gè)比例,我們獲得在以下轉(zhuǎn)換方程式中替換的最大值和最小值:

 

替換這些值,我們得到兩個(gè)方程式:

 

求解兩個(gè)方程,我們得到:

 

求解M,我們得到:

 

將兩個(gè)值代入公式1中,我們得到偏移值,結(jié)果是公式3

 

現(xiàn)在,公式3可以用PIC基本代碼實(shí)現(xiàn)。但是首先,我們需要使用TIMER11.00秒的間隔測量輸入頻率,如下所示:

 

TMR1L = 0;                    清除TIMER1寄存器

TMR1H = 0;

T1CON.0 = 1;                 計(jì)時(shí)器1已啟用

暫停1000;                 持續(xù)1.00

T1CON.0 = 0;                定時(shí)器1已禁用

COUNTER.BYTE0 = TMR1L;    將兩個(gè)寄存器都存儲(chǔ)在兩個(gè)字節(jié)中

COUNTER.BYTE1 = TMR1H;  

 

現(xiàn)在我們可以將等式3應(yīng)用于:

 

DIV =計(jì)數(shù)器* 1000

DAC = DIV32 9784

DAC = DAC +失調(diào);     頻率偏移量= 0;

 

例如,如果在TIMER1中獲得2500個(gè)脈沖,則可以通過將讀取的脈沖除以我們先前發(fā)現(xiàn)的常數(shù)9.784來獲得DAC的值:

 

然后,將其轉(zhuǎn)換為軟件代碼,我們得到:

 

現(xiàn)在我們可以確定多少個(gè)脈沖等效于所測量的每個(gè)位(圖3。


3.該表顯示了刻度2的頻率到電壓的轉(zhuǎn)換。

對于每個(gè)刻度,必須通過執(zhí)行與公式123相同的方法來獲得常數(shù)。因此,對于第二個(gè)刻度(5-10 kHz),我們得到公式4

 

然后我們確定每個(gè)位相當(dāng)于多少個(gè)脈沖(圖4。


4.該表顯示了刻度3的頻率到電壓的轉(zhuǎn)換。

對于第三個(gè)音階(10-15 kHz),我們得到 公式5


然后,我們確定每個(gè)位相當(dāng)于多少個(gè)脈沖(圖5。


5.下表顯示了刻度3的頻率到電壓的轉(zhuǎn)換。

對于第四刻度(10-50 kHz),我們得到公式6


然后,最后,我們確定6中的每個(gè)位等效于多少個(gè)脈沖。


6.該表顯示了刻度4的頻率到電壓的轉(zhuǎn)換

7和圖8 顯示了針對不同輸入頻率及其各自的電壓輸出的兩種情況。下面的代碼清單顯示了在PIC16F753中實(shí)現(xiàn)的軟件代碼。



7.屏幕截圖描繪了以0-5 kHz的比例施加的5.000 kHz輸入頻率,以及其各自的5.04 V輸出。


8.此屏幕截圖顯示了以0-5 kHz的比例施加的1.000 kHz輸入頻率,以及其各自的1.00 V輸出。

基于PIC16F753的頻率電壓轉(zhuǎn)換器的軟件代碼

'*   名稱    FREQ-TO-VOLTAGE.BAS                                      

'*   作者:里卡多·希門尼斯和加布里埃爾··阿爾瓦雷斯                              

'*   版本:1

;     PIC16F753                                         

頻率至電壓轉(zhuǎn)換器

; 0hz-5khz = 0v-5 v;    第一尺度

; 5khz-10khz = 0-5v;    第二等級

; 10khz-15khz = 0-5v; 第三等級

; 10khz-50khz = 0-5v; 第四等級

; pic16f753

振蕩器和PORTS配置

OSCCON = 26美元;= $ 26; 時(shí)鐘設(shè)置為4 MHz

OSCTUNE = 0;

TRISA =111110;      RA0是輸出,RA1RA5作為輸入

ANSELA =000010; RA0RA5數(shù)字

TRISC =0000000;    RC0RC2作為輸入,RC3RC5作為  輸出

ANSELC =000000;   RC0RC5作為數(shù)字

WPUA =011100;RA2RA3拉動(dòng)使能

WPUC =000000

DEFINE LCD_DREG PORTC'PORTCLCD數(shù)據(jù)端口

DEFINE LCD_DBIT 0'PORTC.0是數(shù)據(jù)LSB

DEFINE LCD_RSREG PORTC'RS連接到PORTC.4

定義LCD_RSBIT 4

DEFINE LCD_EREG PORTC'E連接到PORTC.5

定義LCD_EBIT 5

使用DEFINE LCD_BITS 4'4數(shù)據(jù)線

DEFINE LCD_LINES 2'2行顯示

DEFINE LCD_COMMANDUS 1500'使用1500uS命令延遲

DEFINE LCD_DATAUS 44'使用44uS數(shù)據(jù)延遲

; ---------設(shè)置LCD ------------------------------------- -------------------

LCDOUT $ FE,$ 28  $ 28功能套裝,4

LCDOUT $ FE$ 10;  $ 10 SHIFT顯示

LCDOUT $ FE$ 0C;   $ 0C顯示

LCDOUT $ FE,$ 06;   $ 06進(jìn)入模式設(shè)定

; ------------定時(shí)器配置----------

T1CON =10000100;      $ 84定時(shí)器1禁用

; --- HPWM設(shè)置為250 Hz,需要時(shí)刪除分號-

; CCP1CON =00001100; PWM模式選擇和CCPx使能

; PR2 = 79;      從方程式獲得的值

; T2CON =00000100;    啟用計(jì)時(shí)器2,PRESCALER 16

; CCP1CON.5 = 0

; CCP1CON.4 = 0

; CCPR1L =000101000;                      

; ADC使能

ADCON0 =10000111; 使能ADC

ADCON1 =00000000; FOSC / 2

; -------- DAC   配置---------------------------------------

DAC1CON0 =11100000; $ E0DAC使能正確

; ---------聲明變量

COUNTER VAR WORD;             聲明計(jì)數(shù)變量

; COUNTER.BYTE0 VAR TMR1L

; COUNTER.BYTE1

DAC VAR WORD;               可能由DAC使用

SEL VAR BYTE;                    刻度選擇器

HZ VAR BYTE [5];                 赫茲的數(shù)字

DIV VAR WORD;

VAR BYTE中;

VBE var word

OUT VAR BYTE;

我是VAR WORD;

I2 VAR WORD

ID VAR BYTE [3];

VIN VAR WORD;

VID VAR BYTE [4];

VED VAR BYTE [4];

VIN2 VAR WORD;

INVERT VAR PORTA.2; 資料倒換密碼

x var字節(jié);

VO VAR WORD [4];

OPTION_REG.7 = 0;

; --------程序啟動(dòng)---------------- 

RPT

;第一測試,讓我們做第一尺度                                                                      

; DAC中的位數(shù)= 511,所以5KHZ / 511

; 5KHZ / 511 = 9.7843

; K = 9.7843

對于X = 05; 開始循環(huán)

HZ [X] =“ 0”;

VO [X] =“ 0”;

VIN = 0;     清算變量

IN = 0;

OUT = 0;

SEL = 0;

DAC = 0;

DIV = 0;

DAC = 0;

VID [X] =“ 0”;

ID [X] =“ 0”

NEXT X;

LCDOUT $ FE,$ C0,等待縮放

OBTAIN_PULSES :;   

LCDOUT $ FE,$ 80“ HZ =”,HZ [4],HZ [3],HZ [2]HZ [1],HZ [0]“ Vout =”,VO [2]。“ VO [1],VO [0]; 

TMR1L = 0;   TIMER1中清除寄存器

TMR1H = 0;

T1CON.0 = 1;     啟用計(jì)時(shí)器1

暫停1000;

T1CON.0 = 0;     定時(shí)器1已禁用

COUNTER.BYTE0 = TMR1L;   存儲(chǔ)低字節(jié)寄存器

COUNTER.BYTE1 = TMR1H;   存儲(chǔ)高字節(jié)寄存器

對于X = 04;     

IN = COUNTER DIG X;     獲取數(shù)字

LOOKUP IN,[“ 0123456789”],OUT;   解碼每個(gè)數(shù)字

HZ [X] = OUT;                    存儲(chǔ)數(shù)字

NEXT X; 

LCDOUT $ FE$ 80,“ HZ =”HZ [4],HZ [3]HZ [2],HZ [1],HZ [0],“ Vout =”,VO [2],,“ VO [1],VO [0];

; -----選擇------------

;對于X = 0255

SEL =PORTA&%011000>> 3; 讀取PORTA ANS SHIFT右位3

;選擇比例

如果SEL =00,則GOSUB ESC1;      0-5KHZ

如果SEL =01 THEN GOSUB ESC2;     10K-50K

如果SEL =10 THEN GOSUB ESC3;     10KHZ-15KHZ

如果SEL =11 THEN GOSUB ESC4;     5KHZ-10KHZ

 

如果INVERT   = 0,則DAC = 511-DAC;    反轉(zhuǎn)數(shù)據(jù)IF = 0

GOSUB V_DAC;

LCDOUT $ FE$ 80,“ HZ =”,HZ [4]HZ [3],HZ [2]HZ [1],HZ [0],“ Vout =”VO [2],。“ VO [1],VO [0];

GOSUB DAC_OUT;

轉(zhuǎn)到OBTAIN_PULSES; 轉(zhuǎn)到標(biāo)簽OBTAIN_PULSES;

; ------------------第一尺度  ----------------------------- --

ESC1 :;                 0HZ 5KHZ

;   獲取比例值

DIV =計(jì)數(shù)器* 1000

DAC = DIV32 9784

如果(COUNTER> 5000THEN DAC = 0; ; 如果不在范圍內(nèi),則等于零

LCDOUT $ FE$ C0,“ 0-5KHZ DAC =”,dec dac“       ”

返回;   

; ---------------------- 4th SCALE -------------------

ESC4 :;                     10KHZ-50KHZ

DIV =計(jì)數(shù)器* 100

DAC = DIV32 7827

DAC = DAC-127;

如果(計(jì)數(shù)器> 50000)或(計(jì)數(shù)器<10000)然后DAC = 0;如果不在范圍內(nèi)則等于零

LCDOUT $ FE,$ C0,“ 10-50KHZ DAC =”,DEC DAC“     ”

返回;

; ----------------------- 3rd scale -----------------

ESC3                      ; 埃斯卡拉10KHZ-15KHZ

DIV =計(jì)數(shù)器* 1000

DAC = DIV32 9784

DAC = DAC-1022;

如果(COUNTER> 15000)或(COUNTER <10000THEN DAC = 0; 如果不在范圍內(nèi)則DAC = 0

LCDOUT $ FE,$ C0,“ 10-15KHZ DAC =”,DEC DAC,“       ”

返回;

; ------------------------------------------------- -----------------------------

ESC2 :;比例5KHZ-10KHZ

; --------------獲取此標(biāo)度的值

如果(COUNTER> 10000)或(COUNTER <5000)然后DAC = 0; 如果不在范圍內(nèi)則DAC = 0

LCDOUT $ FE$ C0,“ 5-10KHZ DAC =”,DEC DAC“        ”

DIV =計(jì)數(shù)器* 1000

DAC = DIV32 9784

DAC = DAC-511;

如果(COUNTER> 10000)或(COUNTER <5000THEN DAC = 0

LCDOUT $ FE,$ C0,“ 5-10KHZ DAC =”,DEC DAC“        ”

返回;

;-伏打DAC ---------

V_DAC 

禁用

VO [1] = DAC * 976;         DAC獲取電壓

VO [3] = DIV32 100;       與數(shù)字有關(guān)

啟用

對于X = 02;           

IN = VO [3] DIGX + 1;     查找相應(yīng)的數(shù)字

LOOKUP IN,[“ 0123456789”]OUT;解碼數(shù)字

VO [X] = OUT;               商店數(shù)字

NEXT X;

返回;

; ------------------------------------------------- ------------------------------

DAC_OUT

DAC1REFL = DAC.BYTE0;       修改DAC0寄存器

DAC1REFH = DAC.8;               修改DAC08

返回;                                

; ------------------------------

結(jié)束;

 

請輸入搜索關(guān)鍵字

確定
库伦旗| 尉氏县| 宣城市| 富蕴县| 乡宁县| 平利县| 浮梁县| 元氏县| 靖江市| 麻栗坡县| 通辽市| 阳东县| 沙雅县| 石台县| 三门县| 汉川市| 淅川县| 嘉定区| 万全县| 巴林右旗| 石楼县| 新竹县| 安吉县| 大城县| 隆林| 鹿邑县| 阜宁县| 弥渡县| 孙吴县| 成都市| 乌审旗| 炎陵县| 贵定县| 金寨县| 尼木县| 山东| 故城县| 廊坊市| 杂多县| 凉山| 南丹县|