已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
此文檔收集于網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系網(wǎng)站刪除目錄1 設(shè)計(jì)題目12 設(shè)計(jì)原理12.1 設(shè)計(jì)原理12.2 設(shè)計(jì)原理13 系統(tǒng)的硬件設(shè)計(jì)23.1 系統(tǒng)的硬件電路圖23.2 系統(tǒng)的硬件資源34 系統(tǒng)的軟件設(shè)計(jì) 64.1設(shè)計(jì)源程序 64.2程序流程圖165 電路仿真 176 仿真測試分析 197 心得體會(huì) 218 參考文獻(xiàn) 221設(shè)計(jì)題目設(shè)計(jì)并實(shí)現(xiàn)頻率/相位表要求:輸入兩路方波信號(hào),測量信號(hào)的頻率和兩信號(hào)的相位差,能顯示頻率值和相位差,精度:0.1Hz,0.10。在滿足精度的前提下分析和證實(shí)系統(tǒng)的測量范圍。2設(shè)計(jì)原理2.1 設(shè)計(jì)原理利用單片機(jī)實(shí)現(xiàn)頻率和相位表的方法我了解的有兩種:第一、利用輸入信號(hào)的下降沿產(chǎn)生中斷,對(duì)信號(hào)進(jìn)行計(jì)數(shù),然后根據(jù)計(jì)數(shù)的結(jié)果,乘以計(jì)數(shù)的周期,就是輸入信號(hào)的周期了,然后求倒數(shù),并輸出值就是頻率了。而相位則是利用相似的方法,既是第一個(gè)輸入信號(hào)的下降沿觸發(fā)外中斷INT0,T0和T1開始計(jì)數(shù),第二個(gè)信號(hào)輸入到INT1,下降沿觸發(fā),并輸出計(jì)數(shù)的值,然后將計(jì)數(shù)的值與之前的計(jì)算頻率的值進(jìn)行計(jì)算,就可以計(jì)算出相位的值。這種方法比較適合測量頻率的值比較低的時(shí)候。第二、可以利用計(jì)數(shù)器進(jìn)行計(jì)時(shí),在計(jì)時(shí)的時(shí)間里面統(tǒng)計(jì)有多少個(gè)下降沿,然后就可以通過對(duì)計(jì)數(shù)的時(shí)間和下降沿的值計(jì)算出輸入信號(hào)的周期。計(jì)算出周期之后就可以得到頻率的值。至于相位也是這樣,通過統(tǒng)計(jì)下降沿的值,然后與之間的方式一樣,就可以得到相位的值了。這種方法比較適合測量高頻的時(shí)候。在這次的單片機(jī)的課程設(shè)計(jì)中我采用的是第一種方法,所以在測量時(shí)的頻率范圍很小,而且能滿足要求的測量準(zhǔn)確的頻率也比較低。至于相位滿足要求的頻率范圍就更加的小了,而且也不是特別的準(zhǔn)確。2.2 系統(tǒng)框圖設(shè)計(jì)的頻率/相位表的系統(tǒng)框圖如下圖1所示。圖13 系統(tǒng)的硬件設(shè)計(jì)3.1 系統(tǒng)的硬件電路圖系統(tǒng)的硬件電路圖如下所示:圖23.2 系統(tǒng)的硬件資源(1)89C52單片機(jī)如圖所示為89C52單片機(jī)的引腳圖圖3P0口:P0口為一個(gè)8位漏極開路雙向I/O口,沒腳可吸收8TTL門電路,當(dāng)P1口的電路第一次寫時(shí),被定義為高阻輸入。P0能夠用于外部數(shù)據(jù)存儲(chǔ)器,它被定義數(shù)據(jù)/地址的第八位在flash編程時(shí),P0口作為原碼輸入口,當(dāng)flash進(jìn)行校驗(yàn)時(shí),P0口輸出原碼,此時(shí)P0口外部必須拉高。P2口在設(shè)計(jì)中,P2.0設(shè)置為LCD的寄存器RS控制端,P2.1設(shè)置為LCD的RW控制端,P2.2設(shè)置為LCD的使能E控制端。P3口管腳 備選功能P3.2 /INT0(外部中斷0)P3.3 /INT1(外部中斷1)P3.4 T0(計(jì)時(shí)器0外部輸入)P3.5 T1(計(jì)時(shí)器1外部輸入)P3.6 /WR(外部數(shù)據(jù)存儲(chǔ)器寫通道)P3.7 /RD(外部數(shù)據(jù)存儲(chǔ)器讀通道)(2)1602LCD顯示器如圖所示為1602顯示器的引腳圖圖41602LCD通常有14條引腳線或16條引腳線的LCD,多出來的2條線是背光電源線。 表1 1602LCD引腳說明表引腳符號(hào)功能說明1VSS一般接地2VDD接電源(+5V)3V0液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比度最高(對(duì)比度過高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過一個(gè)10K的電位器調(diào)整對(duì)比度)。4RSRS為寄存器選擇,高電平1時(shí)選擇數(shù)據(jù)寄存器、低電平0時(shí)選擇指令寄存器。5R/WR/W為讀寫信號(hào)線,高電平(1)時(shí)進(jìn)行讀操作,低電平(0)時(shí)進(jìn)行寫操作。6EE(或EN)端為使能(enable)端,下降沿使能。7DB0低4位三態(tài)、 雙向數(shù)據(jù)總線 0位(最低位)8DB1低4位三態(tài)、 雙向數(shù)據(jù)總線 1位9DB2低4位三態(tài)、 雙向數(shù)據(jù)總線 2位10DB3低4位三態(tài)、 雙向數(shù)據(jù)總線 3位11DB4高4位三態(tài)、 雙向數(shù)據(jù)總線 4位12DB5高4位三態(tài)、 雙向數(shù)據(jù)總線 5位13DB6高4位三態(tài)、 雙向數(shù)據(jù)總線 6位14DB7高4位三態(tài)、 雙向數(shù)據(jù)總線 7位(最高位)(也是busy flag)15BLA背光電源正極16BLK背光 電源負(fù)極表2 寄存器選擇控制表RSR/W操作說明00寫入指令寄存器(清除屏等)01讀busy flag(DB7),以及讀取位址計(jì)數(shù)器(DB0DB6)值10寫入數(shù)據(jù)寄存器(顯示各字型等)12從數(shù)據(jù)寄存器讀取數(shù)據(jù)(3)異或門異或門管腳圖如下所示;圖5其真值表如下:表3 異或門真值表4 系統(tǒng)的軟件設(shè)計(jì)4.1設(shè)計(jì)源程序#include#include#define uchar unsigned char#define uint unsigned int/*/sbit Pin_RS = P20;sbit Pin_RW = P21;sbit Pin_E = P22;#define Pin_Data P0/*/char m=0,n=0;char u,v;float t0,t1,f,p;uint a=48,48,48,48,48,46,48,48; /頻率數(shù)據(jù)結(jié)果保存uint b=48,48,48,46,48,48; /相位數(shù)據(jù)結(jié)果保存uint i,j;uint x,y;uint c,d;void Lcd_Reset();void Display(uint x, uint y, uint data1);void ShortDelay(uchar i);void LongDelay(uint i);void Set_RS(bit i);void Set_RW(bit i);void Set_E(bit i);void Sc_P0(bit i);void Write_Instruc(uintInstruc);void Write_Data(uint data1);void Display(uint x, uint y, uint data1);uint Read_BF_AC(void);uint Read_Data(void);bit Lcd_Busy();#define ClearScreen()Write_Instruc(0x01)#define CursorReturn()Write_Instruc(0x02)#define InputMode(temp)Write_Instruc(temp)#define DispControl(temp)Write_Instruc(temp)#define FunctionSet(temp)Write_Instruc(temp)#define DispShift(temp)Write_Instruc(temp)#define SetCGRAM_Add(Address)Write_Instruc(0x40 | Address)#define SetDDRAM_Add(Address)Write_Instruc(0x80 | Address)/* LCD初始化 */void LCD_Init()Lcd_Reset();InputMode(0x06); /增量方式,不移位DispControl(0x0c);/顯示開,光標(biāo)關(guān),閃爍關(guān)FunctionSet(0x38);/8位,2行,57/定時(shí)計(jì)數(shù)器初始化void CT_init()TMOD=0x99; /GATE=1,T1、T0工作在方式1,定時(shí)方式TH0=0; /定時(shí)計(jì)數(shù)器初值清零TL0=0;TH1=0;TL1=0;TR0=1; /TR0,TR1置位,此時(shí)定時(shí)計(jì)數(shù)器的啟動(dòng)有INT0,INT1引腳電平?jīng)Q定TR1=1;ET0=1; /開中斷ET1=1;/外部中斷0服務(wù)程序void ITC0() interrupt 0 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;/定時(shí)計(jì)數(shù)器0溢出中斷void TIME0() interrupt 1 m+; /溢出次數(shù)加1/外部中斷1服務(wù)程序void ITC1() interrupt 2 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;/定時(shí)計(jì)數(shù)器1溢出中斷void TIME1() interrupt 3 n+; /溢出次數(shù)加1/* 主函數(shù) */ void main()LCD_Init(); /液晶顯示初始化CT_init(); /定時(shí)計(jì)數(shù)器初始化EA=1; /開總中斷EX0=1; /允許外部中斷EX1=1;IT0=1; /設(shè)置外部中斷方式為下降沿觸發(fā)IT1=1;P3=0xff;while(1)t0=u*65536+x; /計(jì)算脈沖時(shí)間寬度f=1000000/(2*t0); /計(jì)算頻率c=f*100; /計(jì)算結(jié)果逐位保存a7=c%10+48;a6=(c/10)%10+48;c=f;a4=c%10+48;a3=(c/10)%10+48;a2=(c/100)%10+48;a1=(c/1000)%10+48;a0=(c/10000)%10+48;Display(0,1,F); /將顯示單元數(shù)據(jù)送液晶屏顯示Display(0,3,=);for(i=0,j=5;i=7;i+,j+)Display(0,j,ai);Display(0,14,H);Display(0,15,Z);t1=v*65536+y; /計(jì)算脈沖寬度p=(t1/(2*t0)*360; /計(jì)算相位差d=p*100; /將計(jì)算結(jié)果逐位保存b5=d%10+48;b4=(d/10)%10+48;d=p;b2=d%10+48;b1=(d/10)%10+48;b0=(d/100)%10+48;Display(1,1,P); /將顯示數(shù)據(jù)送液晶屏顯示Display(1,3,=);for(i=0,j=5;i0;i-) ;/長延時(shí)函數(shù):LongDelay()void LongDelay(uint i)uint j;for(;i0;i-) for(j=1000;j0;j-);/寄存器選擇信號(hào):Set_RS()void Set_RS(bit i)if(i=1) Pin_RS = 1;else Pin_RS = 0;/讀寫操作控制信號(hào):Set_RW()void Set_RW(bit i)if(i=1) Pin_RW = 1;else Pin_RW = 0;/使能信號(hào):Set_E()void Set_E(bit i)if(i=1) Pin_E = 1;else Pin_E = 0;/IO輸入輸出控制void Sc_P0(bit i) if(i=1) P0 = 0xff;else P0 = 0x00; /寫指令函數(shù):Write_Instruc()void Write_Instruc(uintInstruc)while(Lcd_Busy();Sc_P0(0);Set_RS(0);Set_RW(0);/ShortDelay(1);Set_E(0);Pin_Data = Instruc;/ShortDelay(1);Set_E(1);ShortDelay(10);Set_E(0);/ShortDelay(1);Set_RW(1);Set_RS(1);/讀BF以及AC的值函數(shù):Read_BF_AC()uint Read_BF_AC()uint temp;Sc_P0(1);Set_RS(0);Set_RW(1);/ShortDelay(1);Set_E(0);/ShortDelay(1);Set_E(1);ShortDelay(1);temp = Pin_Data;ShortDelay(10);Set_E(0);/ShortDelay(1);Set_RW(0);Set_RS(1);return(temp);/寫數(shù)據(jù)到RAM函數(shù):Write_Data()void Write_Data(uint data1)Sc_P0(0);Set_RS(1);Set_RW(0);/ShortDelay(1);Set_E(0);Pin_Data = data1;/ShortDelay(1);Set_E(1);ShortDelay(10);Set_E(0);/ShortDelay(1);Set_RW(1);Set_RS(0);/從RAM讀數(shù)據(jù)函數(shù):Read_Data()uint Read_Data(void)uint temp;Sc_P0(1);Set_RS(1);Set_RW(1);/ShortDelay(1);Set_E(0);/ShortDelay(1);Set_E(1);ShortDelay(1);temp = Pin_Data;ShortDelay(10);Set_E(0);/ShortDelay(1);Set_RW(0);Set_RS(0);return(temp);/檢測LCD控制器狀態(tài)函數(shù):Lcd_Busy()/返回一bit數(shù):1 忙;0 閑bit Lcd_Busy()return(bit)(Read_BF_AC() & 0x80);/在指定位置顯示字符函數(shù): Display()/ x為行號(hào),y為列號(hào),/ data為顯示字符的碼字?jǐn)?shù)據(jù)void Display(uint x, uint y, uint data1)uint temp; while(Lcd_Busy(); /若LCD控制器忙,則等待temp = y & 0x0f;x&= 0x01;if(x) temp |= 0x40;SetDDRAM_Add(temp); /設(shè)置顯示位置Write_Data(data1);/LCD復(fù)位函數(shù):Lcd_Reset()void Lcd_Reset()ClearScreen();CursorReturn();4.2程序流程圖圖65 電路仿真仿真電路總圖:圖7電路輸入方波信號(hào):圖8分別輸入兩路的方波的信號(hào),通過異或門控制相位差。單片機(jī)中斷控制:圖9INT0和INT1分別輸入兩路的方波的信號(hào),有相位差LCD顯示:圖10利用P0口輸出數(shù)據(jù),而P2.0、P2.1、P2.2控制LCD顯示器,從而得到頻率及相位差的顯示結(jié)果。6仿真測試分析仿真測試分析:(1) 輸入信號(hào)頻率:圖11仿真時(shí)輸入信號(hào)頻率可調(diào),并可通過數(shù)碼管測試得到輸入信號(hào)的頻率,通過異或門控制兩個(gè)輸入信號(hào)的相位差。(2) 輸入信號(hào)波形兩個(gè)輸入信號(hào)的波形及相位差如圖所示。圖12(3) 輸出信號(hào)頻率及相位差圖13當(dāng)兩個(gè)輸入信號(hào)同頻率為220Hz時(shí),LCD輸出所示。其中,F(xiàn)為頻率,P為相位差。性能分析:這是利用單片機(jī)的內(nèi)部的計(jì)數(shù)器T0和T1對(duì)頻率和相位進(jìn)行計(jì)算。首先通過輸入信號(hào)的下降沿觸發(fā)中斷INT0和INT1,對(duì)信號(hào)進(jìn)行計(jì)數(shù),然后根據(jù)計(jì)數(shù)的結(jié)果,乘以計(jì)數(shù)的周期,就是輸入信號(hào)的周期了,然后求倒數(shù),并輸出值就是頻率了。而相位則是通過第一個(gè)輸入信號(hào)的下降沿觸發(fā)外中斷INT0,T0和T1開始計(jì)數(shù),第二個(gè)信號(hào)輸入到INT1,下降沿觸發(fā)中斷INT1,并輸出計(jì)數(shù)的值,然后將計(jì)數(shù)的值與之前的計(jì)算頻率的值進(jìn)行計(jì)算,就可以計(jì)算出相位的值。只是在實(shí)物測試時(shí)發(fā)現(xiàn),輸入信號(hào)頻率在比較低的時(shí)候,LCD的顯示比較穩(wěn)定,隨著輸入信號(hào)的頻率的增加,誤差慢慢增大,達(dá)到7kHz左右時(shí),誤差較大,而且LCD顯示開始不穩(wěn)定了。7心得體會(huì)為期一周的單片機(jī)課程設(shè)計(jì)就要結(jié)束了,在這一周內(nèi),我遇到了很多問題,也學(xué)到了很多東西。課程設(shè)計(jì)開始時(shí),由于沒有經(jīng)驗(yàn),不知如何下手,所以就去圖書管找了一些書看,盡管有許多的設(shè)計(jì)方案,可是總感覺自己還是有許多的東西弄不太清楚,于是就請(qǐng)教同學(xué)。他常做一些設(shè)計(jì),有一些經(jīng)驗(yàn)。大概知道設(shè)計(jì)的方向后,就自己上網(wǎng)查資料,到圖書館借閱一些相關(guān)書籍,然后自己就開始編寫程序進(jìn)行設(shè)計(jì)了。開始編寫程序的時(shí)候,最主要的就是要頭腦清醒,并且要對(duì)大概程序的布局,和每個(gè)功能的實(shí)現(xiàn)方法要有個(gè)邏輯。這樣在遇到?jīng)]有辦法實(shí)現(xiàn)的功能的時(shí)候,才能快速的解決問題。我設(shè)計(jì)的是頻率/相位表,設(shè)計(jì)要求:輸入兩路方波信號(hào),測量信號(hào)的頻率和兩信號(hào)的相位差,能顯示頻率值和相位差,精度:0.1Hz,0.10。在滿足精度的前提下分析和證
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025出租車司機(jī)用工合同范本
- 2025商鋪?zhàn)赓U合同簡單的范本
- 全新清算協(xié)議合同-二零二五年度清算與債務(wù)重組3篇
- 2025年度全新合同:人工智能輔助駕駛系統(tǒng)研發(fā)與推廣協(xié)議3篇
- 2025年度環(huán)保設(shè)備安裝與環(huán)保技術(shù)咨詢合同3篇
- 2025年度農(nóng)村房屋改造裝修與農(nóng)村光伏發(fā)電項(xiàng)目合同
- 二零二五年度出國工人勞務(wù)輸出與職業(yè)規(guī)劃合同
- 二零二五年度智能漁業(yè)養(yǎng)魚設(shè)備共享合作協(xié)議3篇
- 2025年度農(nóng)業(yè)科技賒銷合作協(xié)議3篇
- 2025年度水上安全事故處理與救援合作協(xié)議3篇
- ISO 56001-2024《創(chuàng)新管理體系-要求》專業(yè)解讀與應(yīng)用實(shí)踐指導(dǎo)材料之22:“8運(yùn)行-8.1運(yùn)行策劃和控制”(雷澤佳編制-2025B0)
- 2024-2030年中國硅肥行業(yè)規(guī)模分析及投資前景研究報(bào)告
- 電網(wǎng)行業(yè)工作匯報(bào)模板22
- 2024年度跨境電商平臺(tái)承包經(jīng)營合同3篇
- 2025年上半年人民日?qǐng)?bào)社招聘應(yīng)屆高校畢業(yè)生85人筆試重點(diǎn)基礎(chǔ)提升(共500題)附帶答案詳解
- 山東省臨沂市2023-2024學(xué)年高二上學(xué)期期末考試生物試題 含答案
- 2024-2025學(xué)年一年級(jí)數(shù)學(xué)上冊(cè)期末樂考非紙筆測試題(二 )(蘇教版2024秋)
- 辦公樓電氣改造施工方案
- 浙江省衢州市2023-2024學(xué)年高一上學(xué)期期末英語試題(含答案)3
- 上學(xué)期高二期末語文試卷(含答案)
- 超齡員工用工免責(zé)協(xié)議書
評(píng)論
0/150
提交評(píng)論