基于51單片機(jī)頻率計(jì)的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
基于51單片機(jī)頻率計(jì)的設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
基于51單片機(jī)頻率計(jì)的設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
基于51單片機(jī)頻率計(jì)的設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
基于51單片機(jī)頻率計(jì)的設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩19頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、武漢理工大學(xué)單片機(jī)課程設(shè)計(jì)說(shuō)明書(shū)摘要本設(shè)計(jì)提出了一種基于AT89C52單片機(jī)開(kāi)發(fā)的數(shù)字頻率、相位測(cè)量?jī)x的設(shè)計(jì)。系統(tǒng)以單片機(jī)AT89C52及異或器件為核心,構(gòu)成完備的測(cè)量系統(tǒng)。可以對(duì)信號(hào)進(jìn)行頻率、相位等參數(shù)的精確測(cè)量,測(cè)頻絕對(duì)誤差不大于0.1HZ,測(cè)相位差絕對(duì)誤差不大于0.1°。采用液晶LCD1602顯示被測(cè)信號(hào)的頻率、相位差。與傳統(tǒng)的電路系統(tǒng)相比,其有處理速度快、穩(wěn)定性高、性價(jià)比高、硬件結(jié)構(gòu)簡(jiǎn)單的優(yōu)點(diǎn)。關(guān)鍵詞:?jiǎn)纹瑱C(jī);低頻;絕對(duì)誤差1、設(shè)計(jì)方案此次課程設(shè)計(jì)采用間接測(cè)量法來(lái)測(cè)量。此次設(shè)計(jì)涉及到相位差,即兩列波形異或得到的波形只需要測(cè)高電平,要用到GATE信號(hào),GATE=1時(shí),TR0=1

2、,INTO=1才能啟動(dòng)計(jì)數(shù)器,而計(jì)數(shù)器0是通過(guò)外部中斷INTO的下降沿開(kāi)始觸發(fā)的,計(jì)時(shí)器從0開(kāi)始計(jì)時(shí),計(jì)數(shù)器只能測(cè)高電平,因此測(cè)得的時(shí)間為半個(gè)周期。當(dāng)計(jì)數(shù)器0計(jì)時(shí)溢出,執(zhí)行m加1的操作。則測(cè)量時(shí)間為:t1=TH0*256+TL0+m*65536 ,所求頻率F=1000000/(2*t1) 測(cè)量?jī)煞讲ǖ南辔徊顣r(shí),先將兩方波信號(hào)異或,得到的新波形輸入外部中斷1的入口,在信號(hào)的第n個(gè)下跳沿時(shí),進(jìn)入外部中斷的程序,開(kāi)啟計(jì)數(shù)器1。第n+1個(gè)下跳沿到來(lái)時(shí),則關(guān)閉計(jì)數(shù)器1,當(dāng)GATE=1時(shí),只有在INT1=1 時(shí),TR1=1時(shí),計(jì)數(shù)器T1才開(kāi)始計(jì)數(shù),當(dāng)計(jì)數(shù)器0計(jì)時(shí)溢出,執(zhí)行m加1的操作,所以讀的的時(shí)間只為高

3、電平的持續(xù)時(shí)間,即為兩方波的相隔時(shí)間t2,相位差可計(jì)算如下:t2=TH1*256+TLI+N*65536 ;則相位差P=t2/(2*t1)*360 1.1設(shè)計(jì)基本原理 1.1.1測(cè)量頻率的原理 定時(shí)/計(jì)數(shù)器工作在方式1,每產(chǎn)生一次定時(shí)器0中斷,計(jì)數(shù)65536個(gè)脈沖,此時(shí)的脈沖來(lái)自振蕩器的12分頻后的脈沖,其周期為1uS。根據(jù)產(chǎn)生外部中斷0時(shí),定時(shí)器0中斷的次數(shù)u,以及此時(shí)定時(shí)/計(jì)數(shù)器0計(jì)數(shù)寄存器的數(shù)值X,即可求得待測(cè)方波的周期為:T=(65536*u+X)us ,取其倒數(shù)即可求得待測(cè)方波的頻率,小數(shù)點(diǎn)后保留兩位,即可使得頻率精度為0.1HZ。1.1.2相位差的測(cè)量原理將兩路同頻不同相的方波信號(hào)

4、進(jìn)過(guò)鑒相器(即異或)后得到的脈沖寬度t與方波信號(hào)的周期T的比值(占空比),即對(duì)應(yīng)為兩信號(hào)的相位差,此時(shí)相位差。其中,脈沖寬度的測(cè)量方法與方波周期的測(cè)量方法相同。相位差測(cè)量的原理圖如下:圖1 相位差測(cè)量原理圖1.2系統(tǒng)設(shè)計(jì)框圖經(jīng)過(guò)方案論證和比較后,最終確定的系統(tǒng)框圖如圖1所示,主要由AT89C52單片機(jī)、異或器件、LCD1602、電源等組成。 圖2 系統(tǒng)設(shè)計(jì)框圖2、系統(tǒng)硬件線路設(shè)計(jì)圖2.1 單片機(jī)最小系統(tǒng)設(shè)計(jì)單片機(jī)最小系統(tǒng)是能補(bǔ)足單片機(jī)工作的最簡(jiǎn)單電路,它由單片機(jī)、電源、晶體振蕩器、復(fù)位電路等構(gòu)成。它是本系統(tǒng)的處理單元也是控制單元,負(fù)責(zé)處理信號(hào)、外設(shè)的接口與控制,同時(shí)它也是所有軟件的載體。本系統(tǒng)

5、采用AT89C52是美國(guó)Atmel公司生產(chǎn)的低電壓、高性能CMOS 8位單片機(jī),片內(nèi)含8KB的可反復(fù)檫寫(xiě)的程序存儲(chǔ)器和12B的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用Atmel公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)配置通用8位中央處理器(CPU)和Flash存儲(chǔ)單元,功能強(qiáng)大的AT89C52單片機(jī)可靈活應(yīng)用于各種控制領(lǐng)域。AT89C52單片機(jī)屬于AT89C51單片機(jī)的增強(qiáng)型,與Intel公司的80C52在引腳排列、硬件組成、工作特點(diǎn)和指令系統(tǒng)等方面兼容。主要管腳有:XTAL1(19 腳)和XTAL2(18 腳)為振蕩器輸入輸出端口,外接12MHz 晶振。RST/V

6、pd(9 腳)為復(fù)位輸入端口,外接電阻電容組成的復(fù)位電路。VCC(40 腳)和VSS(20 腳)為供電端口,分別接+5V電源的正負(fù)端。P0P3 為可編程通用I/O 腳,其功能用途由軟件定義。其管腳如下圖所示:圖3 AT89C52單片機(jī)管腳圖本設(shè)計(jì)中,P0 端口(3239 腳)被定義為N1 功能控制端口,分別與N1的相應(yīng)功能管腳相連接。單片機(jī)正常工作時(shí),都需要有一個(gè)時(shí)鐘電路和一個(gè)復(fù)位電路。本設(shè)計(jì)中選擇了內(nèi)部時(shí)鐘方式和按鍵電平復(fù)位電路,來(lái)構(gòu)成單片機(jī)的最小電路。如圖3所示。圖4 單片機(jī)最小系統(tǒng)2.2液晶LCD1602顯示電路字符型液晶顯示模塊是一種專門(mén)用于顯示字母、數(shù)字、符號(hào)等點(diǎn)陣式LCD,目前常用

7、16*1,16*2,20*2和40*2行等的模塊。LCD1602分為帶背光和不帶背光兩種,基控制器大部分為HD44780,帶背光的比不帶背光的厚,是否帶背光在應(yīng)用中并無(wú)差別。LCD1602采用標(biāo)準(zhǔn)的14腳(無(wú)背光)或16腳(帶背光)接口,各引腳接口說(shuō)明如下表1所示:表 1 LCD1602引腳接口說(shuō)明編號(hào)符號(hào)引腳說(shuō)明編號(hào)符號(hào)引腳說(shuō)明1VSS電源地9D2數(shù)據(jù)2VDD電源正極10D3數(shù)據(jù)3VL液晶顯示偏壓11D4數(shù)據(jù)4RS數(shù)據(jù)/命令選擇12D5數(shù)據(jù)5R/W讀/寫(xiě)選擇13D6數(shù)據(jù)6E使能信號(hào)14D7數(shù)據(jù)7D0數(shù)據(jù)15BLA背光源正極8D1數(shù)據(jù)16BLK背光源負(fù)極1602液晶模塊的讀寫(xiě)操作、屏幕和光標(biāo)的

8、操作都是通過(guò)指令編程來(lái)實(shí)現(xiàn)的。1602液晶模塊內(nèi)部的控制器共有11條控制指令,如下表2所示,其中1為高電平、0為低電平。表 2 LCD1602控制指令序號(hào)指令RSR/WD7D6D5D4D3D2D1D01清顯示00000000012光標(biāo)返回000000001*3置輸入模式00000001I/DS4顯示開(kāi)/關(guān)控制0000001DCB5光標(biāo)或字符移位000001S/CR/L*6置功能00001DLNF*7置字符發(fā)生存貯器地址0001字符發(fā)生存貯器地址8置數(shù)據(jù)存貯器地址001顯示數(shù)據(jù)存貯器地址9讀忙標(biāo)志或地址01BF計(jì)數(shù)器地址10寫(xiě)數(shù)到CGRAM或DDRAM)10要寫(xiě)的數(shù)據(jù)內(nèi)容指令1:清顯示,指令碼0

9、1H,光標(biāo)復(fù)位到地址00H位置。指令2:光標(biāo)復(fù)位,光標(biāo)返回到地址00H。指令3:光標(biāo)和顯示模式設(shè)置 I/D:光標(biāo)移動(dòng)方向,高電平右移,低電平左移 S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無(wú)效。指令4:顯示開(kāi)關(guān)控制。 D:控制整體顯示的開(kāi)與關(guān),高電平表示開(kāi)顯示,低電平表示關(guān)顯示 C:控制光標(biāo)的開(kāi)與關(guān),高電平表示有光標(biāo),低電平表示無(wú)光標(biāo) B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍。指令5:光標(biāo)或顯示移位 S/C:高電平時(shí)移動(dòng)顯示的文字,低電平時(shí)移動(dòng)光標(biāo)。指令6:功能設(shè)置命令 DL:高電平時(shí)為4位總線,低電平時(shí)為8位總線 N:低電平時(shí)為單行顯示,高電平時(shí)雙行顯示 F: 低電平

10、時(shí)顯示5x7的點(diǎn)陣字符,高電平時(shí)顯示5x10的點(diǎn)陣字符。指令7:字符發(fā)生器RAM地址設(shè)置。指令8:DDRAM地址設(shè)置。指令9:讀忙信號(hào)和光標(biāo)地址 BF:為忙標(biāo)志位,高電平表示忙,此時(shí)模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。指令10:寫(xiě)數(shù)據(jù)。與HD44780相兼容的芯片時(shí)序如下表3所示:表 3 基本操作時(shí)序表讀狀態(tài)輸入RS=L,R/W=H,E=H輸出D0D7=狀態(tài)字寫(xiě)指令輸入RS=L,R/W=L,D0D7=指令碼,E=高脈沖輸出無(wú)讀數(shù)據(jù)輸入RS=H,R/W=H,E=H輸出D0D7=數(shù)據(jù)寫(xiě)數(shù)據(jù)輸入RS=H,R/W=L,D0D7=數(shù)據(jù),E=高脈沖輸出無(wú)其操作時(shí)序圖如下所示:圖5 讀操作時(shí)序圖

11、圖6 寫(xiě)操作時(shí)序圖本設(shè)計(jì)中采用液晶LCD1602顯示輸入方波A和B的頻率和相位差,其D0D7與單片機(jī)的P0端口連接,使能端E、RS、RW分別與單片機(jī)P2.4、P1.7、P1.6連接,此電路原理簡(jiǎn)單,電路連接方便,如圖7所示。圖7 液晶LCD1602顯示電路2.3頻率、相位差測(cè)量電路本設(shè)計(jì)中將方波A輸入,采用定時(shí)中斷測(cè)量其頻率,同時(shí)將方波A和方波B經(jīng)過(guò)異或門(mén)74LS86異或后輸入即可測(cè)量出兩路方波的相位差。如圖7所示。圖8 頻率、相位差測(cè)量電路異或門(mén)74LS86真值表如表4所示:表4 74LS86真值表ABC000011101110綜上所述,頻率、相位表的總體電路圖如圖9所示:圖9 頻率相位表的

12、總體電路圖3程序設(shè)計(jì)3.1資源分配表表5 資源分配表I/O口作用P0LCD1602數(shù)據(jù)接口P1.6LCD1602 RW接口P1.7LCD1602 RS接口P2.4LCD1602 E接口P3.2頻率測(cè)量接口P3.3相位差測(cè)量接口3.2程序流程框圖頻率、相位表的程序流程圖如圖9所示:圖10 程序流程圖4.系統(tǒng)仿真和測(cè)試結(jié)果在仿真軟件PROTUES中按照電路圖連接好電路。輸入兩待測(cè)方波信號(hào)波形,當(dāng)測(cè)試頻率時(shí),先依次設(shè)置好方波A和B的頻率,進(jìn)行仿真測(cè)得數(shù)據(jù);當(dāng)測(cè)試相位差,先將方波A和B頻率設(shè)置為500HZ,然后依次設(shè)置相位差,測(cè)試波形和結(jié)果如圖11所示:圖11 仿真波形表6 仿真頻率測(cè)試結(jié)果輸入頻率/

13、HZ051050100150200250測(cè)得頻率/HZ0.995.0010.0050.00100.00150.01200.00250.00輸入頻率/HZ300350400450500550600650測(cè)得頻率/HZ299.94349.95400.00450.04500.00550.05600.24650.19輸入頻率/HZ70075080085090095010001050測(cè)得頻率/HZ699.94750.26800.64850.98899.92950.211000.641050.06表7 仿真相位差測(cè)試結(jié)果輸入相位差/度030456090120135150測(cè)得相位差/度030.0645.00

14、59.9490.00120.06135.00149.945、性能分析根據(jù)表6測(cè)試所得結(jié)果可以看出:當(dāng)輸入頻率0-550HZ時(shí),頻率誤差大約為0.05HZ,小于0.1HZ;當(dāng)輸入頻率大于600HZ時(shí),頻率誤差大于0.1HZ,并且隨著輸入頻率增大,頻率誤差均大于0.1HZ,故輸入頻率為0-550HZ時(shí)滿足要求。根據(jù)表7測(cè)試所得結(jié)果可以看出:當(dāng)輸入的兩路方波的相位差0-180度時(shí),測(cè)試相位差大約為0度,小于0.1度,測(cè)試所得相位差性能比較好。由此可得如下結(jié)論:本次所設(shè)計(jì)的頻率/相位差表適合測(cè)試低頻信號(hào),最佳頻率范圍為0-550HZ,輸入方波相位差任意均可。6、心得與體會(huì)7、參考文獻(xiàn)附錄一:源程序#i

15、nclude<reg52.h> #include<math.h>#define uint unsigned int#define uchar unsigned charuchar m=0,n=0;uchar u,v;uint i,j;uint x,y;uint c,d; /相位數(shù)據(jù)結(jié)果保存float t0,t1,f,p;uint a=70,61,48,48,48,48,48,46,48,48,72,90; /頻率數(shù)據(jù)結(jié)果保存/F,=,0,0,0,0,0,.,0,0,H,Zuint b=80,61,48,48,48,46,48,48,34; /相位數(shù)據(jù)結(jié)果保存 /P,=,

16、0,0,0,.,0,0," /相位數(shù)據(jù)結(jié)果保存sbit lcdrw=P16;sbit lcdrs=P17;sbit lcden=P24;/LCD1602的設(shè)置/void delay(uint s)/延時(shí)1MS uint r,g; for(r=s;r>0;r-) for(g=110;g>0;g-); void write_com(uchar com) / 寫(xiě)指令 lcdrs=0; P0=com; delay(5); lcden=1; delay(5); lcden=0;void write_data(uchar date) / 寫(xiě)數(shù)據(jù) lcdrs=1; P0=date; d

17、elay(5); lcden=1; delay(5); lcden=0;void initlcd()/初始化 lcdrw=0; lcden=0; /write_com(0x01);/顯示清屏 write_com(0x38);/顯示模式設(shè)置 write_com(0x0c); /顯示開(kāi),開(kāi)游標(biāo),不閃爍 write_com(0x06); / 字符時(shí)整體不移動(dòng) /LCD1602設(shè)置/定時(shí)器的設(shè)置/ void CT_init() /定時(shí)計(jì)數(shù)器初始化TMOD=0x99; /GATE=1,T1、T0工作在方式1,定時(shí)方式TH0=0; /定時(shí)計(jì)數(shù)器初值清零TL0=0;TH1=0;TL1=0;TR0=1; /T

18、R0,TR1置位,此時(shí)定時(shí)計(jì)數(shù)器的啟動(dòng)有INT0,INT1引腳電平?jīng)Q定TR1=1;ET0=1; /開(kāi)中斷ET1=1;void ITC0() interrupt 0 /外部中斷0服務(wù)程序u=m; /讀定時(shí)計(jì)數(shù)器0溢出次數(shù)m=0; /溢出次數(shù)清零x=TH0*256+TL0; /讀定時(shí)計(jì)數(shù)器0當(dāng)前值TH0=0; /定時(shí)計(jì)數(shù)器0清零TL0=0;void TIME0() interrupt 1 /定時(shí)計(jì)數(shù)器0溢出中斷m+; /溢出次數(shù)加1void ITC1() interrupt 2 /外部中斷1服務(wù)程序v=n; /讀定時(shí)計(jì)數(shù)器1溢出次數(shù)n=0; /溢出次數(shù)清零y=TH1*256+TL1; /讀定時(shí)計(jì)數(shù)器1當(dāng)前值TH1=0; /定時(shí)計(jì)數(shù)器1清零TL1=0; void TIME1() interrupt 3 /定時(shí)計(jì)數(shù)器1溢出中斷n+; /溢出次數(shù)加1/定時(shí)器的設(shè)置/void main()initlcd(); /液晶顯示初始化 CT_init(); /定時(shí)計(jì)數(shù)器初始

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論