<video id="5jvlp"></video>

                  24小時聯系電話:18217114652、13661815404

                  中文

                  您當前的位置:
                  首頁>
                  電子資訊>
                  行業資訊>
                  微控制器以高分辨率將...

                  行業資訊

                  微控制器以高分辨率將頻率轉換為電壓


                  當您需要將測量信號從數字域轉換為模擬域時,此設計是僅需兩個芯片的合適解決方案。頻率到電壓的轉換在儀器電路中有許多應用。

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


                  1. PIC微控制器是該頻率電壓轉換器的中心。

                  為了實現轉換,將輸入頻率分為四個刻度,這些刻度由輸入SEL1SEL2 (圖2手動選擇。

                  2.通過DIP微型開關將輸入頻率分為四個刻度


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

                   

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

                   

                  求解兩個方程,我們得到:

                   

                  求解M,我們得到:

                   

                  將兩個值代入公式1中,我們得到偏移值,結果是公式3

                   

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

                   

                  TMR1L = 0;                    清除TIMER1寄存器

                  TMR1H = 0;

                  T1CON.0 = 1;                 計時器1已啟用

                  暫停1000;                 持續1.00

                  T1CON.0 = 0;                定時器1已禁用

                  COUNTER.BYTE0 = TMR1L;    將兩個寄存器都存儲在兩個字節中

                  COUNTER.BYTE1 = TMR1H;  

                   

                  現在我們可以將等式3應用于:

                   

                  DIV =計數器* 1000

                  DAC = DIV32 9784

                  DAC = DAC +失調;     頻率偏移量= 0;

                   

                  例如,如果在TIMER1中獲得2500個脈沖,則可以通過將讀取的脈沖除以我們先前發現的常數9.784來獲得DAC的值:

                   

                  然后,將其轉換為軟件代碼,我們得到:

                   

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


                  3.該表顯示了刻度2的頻率到電壓的轉換。

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

                   

                  然后我們確定每個位相當于多少個脈沖(圖4。


                  4.該表顯示了刻度3的頻率到電壓的轉換。

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


                  然后,我們確定每個位相當于多少個脈沖(圖5。


                  5.下表顯示了刻度3的頻率到電壓的轉換。

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


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


                  6.該表顯示了刻度4的頻率到電壓的轉換

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



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


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

                  基于PIC16F753的頻率電壓轉換器的軟件代碼

                  '*   名稱    FREQ-TO-VOLTAGE.BAS                                      

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

                  '*   版本:1

                  ;     PIC16F753                                         

                  頻率至電壓轉換器

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

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

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

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

                  ; pic16f753

                  振蕩器和PORTS配置

                  OSCCON = 26美元;= $ 26; 時鐘設置為4 MHz

                  OSCTUNE = 0;

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

                  ANSELA =000010; RA0RA5數字

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

                  ANSELC =000000;   RC0RC5作為數字

                  WPUA =011100;RA2,RA3拉動使能

                  WPUC =000000

                  DEFINE LCD_DREG PORTC'PORTCLCD數據端口

                  DEFINE LCD_DBIT 0'PORTC.0是數據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數據線

                  DEFINE LCD_LINES 2'2行顯示

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

                  DEFINE LCD_DATAUS 44'使用44uS數據延遲

                  ; ---------設置LCD ------------------------------------- -------------------

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

                  LCDOUT $ FE,$ 10;  $ 10 SHIFT顯示

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

                  LCDOUT $ FE,$ 06;   $ 06進入模式設定

                  ; ------------定時器配置----------

                  T1CON =10000100;      $ 84定時器1禁用

                  ; --- HPWM設置為250 Hz,需要時刪除分號-

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

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

                  ; T2CON =00000100;    啟用計時器2,PRESCALER 16

                  ; CCP1CON.5 = 0

                  ; CCP1CON.4 = 0

                  ; CCPR1L =000101000;                      

                  ; ADC使能

                  ADCON0 =10000111; 使能ADC

                  ADCON1 =00000000; FOSC / 2

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

                  DAC1CON0 =11100000; $ E0,DAC使能正確

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

                  COUNTER VAR WORD;             聲明計數變量

                  ; COUNTER.BYTE0 VAR TMR1L

                  ; COUNTER.BYTE1

                  DAC VAR WORD;               可能由DAC使用

                  SEL VAR BYTE;                    刻度選擇器

                  HZ VAR BYTE [5];                 赫茲的數字

                  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字節;

                  VO VAR WORD [4];

                  OPTION_REG.7 = 0;

                  ; --------程序啟動---------------- 

                  RPT

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

                  ; DAC中的位數= 511,所以5KHZ / 511

                  ; 5KHZ / 511 = 9.7843

                  ; K = 9.7843

                  對于X = 05; 開始循環

                  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;     啟用計時器1

                  暫停1000;

                  T1CON.0 = 0;     定時器1已禁用

                  COUNTER.BYTE0 = TMR1L;   存儲低字節寄存器

                  COUNTER.BYTE1 = TMR1H;   存儲高字節寄存器

                  對于X = 04;     

                  IN = COUNTER DIG X;     獲取數字

                  LOOKUP IN,[“ 0123456789”],OUT;   解碼每個數字

                  HZ [X] = OUT;                    存儲數字

                  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;    反轉數據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;

                  轉到OBTAIN_PULSES; 轉到標簽OBTAIN_PULSES;

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

                  ESC1 :;                 0HZ 5KHZ

                  ;   獲取比例值

                  DIV =計數器* 1000

                  DAC = DIV32 9784

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

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

                  返回;   

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

                  ESC4 :;                     10KHZ-50KHZ

                  DIV =計數器* 100

                  DAC = DIV32 7827

                  DAC = DAC-127;

                  如果(計數器> 50000)或(計數器<10000)然后DAC = 0;如果不在范圍內則等于零

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

                  返回;

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

                  ESC3                      ; 埃斯卡拉10KHZ-15KHZ

                  DIV =計數器* 1000

                  DAC = DIV32 9784

                  DAC = DAC-1022;

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

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

                  返回;

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

                  ESC2 :;比例5KHZ-10KHZ

                  ; --------------獲取此標度的值

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

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

                  DIV =計數器* 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;       與數字有關

                  啟用

                  對于X = 02;           

                  IN = VO [3] DIGX + 1;     查找相應的數字

                  LOOKUP IN,[“ 0123456789”],OUT;解碼數字

                  VO [X] = OUT;               商店數字

                  NEXT X;

                  返回;

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

                  DAC_OUT

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

                  DAC1REFH = DAC.8;               修改DAC08

                  返回;                                

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

                  結束;

                   

                  請輸入搜索關鍵字

                  確定
                  中文字幕亚洲无线码在线一区_国产日产韩国精品视频_自拍偷精品亚洲手机在线_加勒比中文无码久久综合

                          <video id="5jvlp"></video>