【正文】
}3:ifndef __LCD12864_H__define __LCD12864_H__include include define uchar unsigned chardefine uint unsigned int/************* 12864LCD引腳定義 *************/define LCD_data P0 //數(shù)據(jù)口sbit LCD_RS = P2^0。void lcd_wcmd(uchar cmd)。4 include include include define on 1define off 0define FFT_N 32define PI uchar xdata figure[10]=0123456789。 =**。 lcd_wdat(figure[bai])。 for(i=0。 } j=j+k。 struct px t。m=l。i=lei1。 value[j].imag=value[j].imag+。j++) {if(value[i]value[j]) {t=value[j]。 TH0=(65536625)/256。//液晶初始化 InitADC()。//開定時器 EA=1。 zhongzhi1=(max1+min1)/2。 for(n=0。 } daoxufun(s1,32)。 delayms_12864(50)。 disfigure(2,6,fabs(advalue[0]*))。 } } }void isr_timer0() interrupt 1{ static int sum=0。 二:硬件原理圖及PCB圖 } else {flag=1。 EA=1。n3。n++) advalue[n]=sqrt(s1[n].real*s1[n].real+s1[n].imag*s1[n].imag)/16。n++) {s2[n].real=s2[n].realzhongzhi2。 min2=advalue[31]。 max1=advalue[0]。 display_12864(4,0,二次:)。 uchar xdata n。 EX1=1。i++) {for(j=i+1。 value[ip].imag=value[j].。// =sin(PI/lei)。l++)。//控制不同蝶形結(jié)計算 uint j=0。 while(k=j) {j=jk。}void daoxufun(struct px *value,int num)//FFT運算倒序函數(shù){uint i,k,j=0。 shi=value%100/10。//待進行FFT運算的數(shù)據(jù) struct px xdata s2[FFT_N]。void lcd_pos(uchar X,uchar Y)。void delayms_12864(uint n)。\039。 if (X==1) {X=0x80。 delayms_12864(5)。 delayms_12864(400)。j++) lcd_wdat(*bmp++)。j++) //再寫入兩個8位元的數(shù)據(jù) lcd_wdat(*bmp++)。}/********************************************************** ** 圖形顯示 ** **********************************************************/void photodisplay(uchar *bmp) { uchar i,j。 lcd_wcmd(0x34)。 //NOP()。 *//* *//*******************************************************************/void lcd_wdat(uchar dat){ while(lcd_busy())。 P0 = cmd。 return(result)。 LCD_RS = 0。 while(n) { x=0。 while (!(ADC_CONTR amp。 //清除結(jié)果寄存器 ADC_CONTR = ADC_POWER | ADC_SPEEDHH。如果想要提高測量精度,可以換更高端的MCU或者擴展存儲器,采用128或者256點的FFT運算,可以大大提高相位差測量的精度?! ? 單相全橋整流電路圖7 單相全波整流電路橋式整流電路的工作原理如圖11所示。 實用電路設(shè)計由于STC12C5A60S2單片機的片內(nèi)AD只能測05V的模擬信號,所以如果直接把信號接到單片機的AD輸入通道上,信號負半波是測不到的,所以考慮先把該交流信號與一個直流信號相加,使得該正弦信號的電壓值在任何時刻都大于0,再用單片機AD進行采樣,最終結(jié)果在減去直流信號。通過一定的算法,可以將在屏幕的固定區(qū)域?qū)懭胱址蛯懭胱址@兩個功能封裝,得到兩個函數(shù)原型如下:void display_12864(uchar x,uchar y,uchar *str)void dischar_12864(uchar x,uchar y,uchar zifu)圖4 12864液晶屏漢字區(qū)分布示意圖 軟件設(shè)計部分總結(jié)可移植性一直是評價程序好壞的一個很重要的標(biāo)準(zhǔn),該項目所用到的三個算法全部由個人完成,在算法復(fù)雜度盡可能低的情況下,把算法的可移植性做好。圖3 ADC轉(zhuǎn)換模塊的構(gòu)成示意圖 定時器的使用STC12C5A60S2單片機與89C51單片機的定時器類似,不同的是它的定時器時鐘信號可以是是單片機的震蕩周期,也可以是其12分頻(與普通的89C51單片機相同),在本設(shè)計中采用定時器0,使其工作在方式1,時鐘信號為震蕩周期的12分頻。首先,通過CH0:CH2可以選擇AD轉(zhuǎn)換的通道。上電復(fù)位后P1口為弱上拉型I/O口,用戶還可以通過軟件設(shè)置將任何一路設(shè)置為AD轉(zhuǎn)換,不需作為AD轉(zhuǎn)換的口可繼續(xù)做IO口使用。而位倒序數(shù)的下面一個數(shù)是上面一個數(shù)最高位加1并向低位進位得到的。對于一個N(N=2n)點采樣的信號,我們將其的離散序列 分成奇偶兩組,并且令 ,則k次諧波的大小可表示為利用旋轉(zhuǎn)因子的對稱性和周期性可得: 再根據(jù)旋轉(zhuǎn)因子的對稱性可得: 至此,一個N點的離散傅里葉變換就被分解成了兩個點的離散傅里葉變換(DFT),依此類推,兩個點的DFT變換可以分解成四個點的DFT變換,最終可以分解成個兩點的DFT變換。本設(shè)計主要是研究如何利用最小二乘法和快速傅立葉變換算法來測量相位差。此外還有天津中環(huán)科儀電子儀器公司HG4180型數(shù)字相位計,其特點包括:頻率范圍覆蓋范圍廣、測量精度高、不但能測量相位,而且能測量頻率、在全部頻率范圍內(nèi)都能直接得到五位有效數(shù)字的頻率讀數(shù)、具有IEE488借口選件,主要用于工業(yè)測量領(lǐng)域。微波為177。此外,俄羅斯,英國以及德國在此領(lǐng)域也具有較高水平。其優(yōu)點是可以進行功能仿真,而且FPGA和CPLD的片內(nèi)資源豐富,設(shè)計的流程簡單,缺點是開發(fā)成本高。 相位差測量的研究現(xiàn)狀隨著電子技術(shù)和計算機技術(shù)的發(fā)展,相位測量技術(shù)的發(fā)展也非常迅速,尤其在電氣、電力電子技術(shù)方面得到了極大的重視和發(fā)展。關(guān)鍵詞:最小二乘法,快速傅里葉變換The lowfrequency digital phase detector based on leastsquare method researchAbstract: the phase difference detection method in mon is the zero passage method and through external hardware circuit of zero point of sine signal detection, produce the pulse signal of the external interrupt of MCU by MCU timer to calculate the frequency and phase difference of signals.Sine signal in real life, however, especially the alternating current power grid provided, there will be more or less distortion, if alternating current (ac) in a zero distortion is extremely serious, is likely to lead to detect the zero or detect more than zero, and the test method of external hardware circuit is more plex, high cost. So, in this paper, the least square method because of its low cost, wide use, high reliability and is widely used. The main method is, in a single cycle of two signals 2 n sampling points,After the discretization