基于AT89S52LCD160等精度2顯示頻率計(jì)的設(shè)計(jì)說明_第1頁(yè)
基于AT89S52LCD160等精度2顯示頻率計(jì)的設(shè)計(jì)說明_第2頁(yè)
基于AT89S52LCD160等精度2顯示頻率計(jì)的設(shè)計(jì)說明_第3頁(yè)
基于AT89S52LCD160等精度2顯示頻率計(jì)的設(shè)計(jì)說明_第4頁(yè)
基于AT89S52LCD160等精度2顯示頻率計(jì)的設(shè)計(jì)說明_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 . . . 單片機(jī)技術(shù)課程設(shè)計(jì)說明書設(shè)計(jì)課題:頻率計(jì) 專業(yè)(系) 電氣工程系 班 級(jí) 車輛電子111班 學(xué)生 Scott Tyy 指導(dǎo)老師 粟慧龍 完成日期 2013.04.24 目 錄一摘要1二 關(guān)鍵詞1三 設(shè)計(jì)原理與總體方案1四 硬件設(shè)計(jì)24.1 分頻電路24.2 數(shù)據(jù)選擇電路24.3 單片機(jī)系統(tǒng)34.4顯示電路4五 軟件設(shè)計(jì)8主程序12 程序清單12六 安裝與調(diào)試12七心得體會(huì)14參考文獻(xiàn)15附錄16總原理圖16PCB圖17元件清單181602顯示頻率計(jì)的設(shè)計(jì)一 摘要:本設(shè)計(jì)是基于MCS-51單片機(jī)的等精度頻率計(jì)。輸入信號(hào)為峰峰值5v的正弦信號(hào),頻率測(cè)量圍10HZ100MHZ ,頻率測(cè)

2、量精度為0.1%。采用1602液晶顯示器顯示測(cè)量結(jié)果。信號(hào)源由信號(hào)發(fā)生器產(chǎn)生。二 關(guān)鍵詞:頻率計(jì) 等精度 單片機(jī) 分頻三 設(shè)計(jì)原理與總體方案:測(cè)量一個(gè)信號(hào)的頻率有兩種方法:第一種是計(jì)數(shù)法,用基準(zhǔn)信號(hào)去測(cè)量被測(cè)信號(hào)的高電平持續(xù)的時(shí)間,然后轉(zhuǎn)換成被測(cè)信號(hào)的頻率。第二種是計(jì)時(shí)法,計(jì)算在基準(zhǔn)信號(hào)高電平期間通過的被測(cè)信號(hào)個(gè)數(shù)。根據(jù)設(shè)計(jì)要求測(cè)量10HZ100MHZ的正弦信號(hào),首先要將正弦信號(hào)通過過零比較轉(zhuǎn)換成方波信號(hào),然后變成測(cè)量方波信號(hào)。如果用第一種方法,當(dāng)信號(hào)頻率超過1KHZ的時(shí)候測(cè)量精度將超出測(cè)量極度要求,所以當(dāng)被測(cè)信號(hào)的頻率高于1KHZ的時(shí)候需要將被測(cè)信號(hào)進(jìn)行分頻處理。如果被測(cè)信號(hào)頻率很高需要將被

3、測(cè)信號(hào)進(jìn)行多次分頻直到達(dá)到設(shè)計(jì)的精度要求。根據(jù)設(shè)計(jì)要求用單片機(jī)的部T0產(chǎn)生基準(zhǔn)信號(hào),由INTO輸入被測(cè)信號(hào),通過定時(shí)方式計(jì)算被測(cè)信號(hào)的高電平持續(xù)時(shí)間。通過單片機(jī)計(jì)算得出結(jié)果,最后有1062液晶顯示器顯示測(cè)量結(jié)果。等精度頻率計(jì)的系統(tǒng)設(shè)計(jì)框架如下圖1所示。AT89C51液晶顯示被測(cè)信號(hào)待測(cè)分頻處理數(shù)據(jù)選擇器圖1 等精度頻率計(jì)系統(tǒng)設(shè)計(jì)框圖四 硬件設(shè)計(jì):硬件電路主要分為信號(hào)轉(zhuǎn)換電路、分頻電路、數(shù)據(jù)選擇電路、單片機(jī)系統(tǒng)和顯示電路五部分。其總體電路圖如圖2所示。圖2 總體電路圖4.2 分頻電路:分頻電路采用十進(jìn)制的計(jì)數(shù)器74LS161來分頻,當(dāng)被測(cè)信號(hào)脈沖個(gè)數(shù)達(dá)到10個(gè)時(shí)74LS161產(chǎn)生溢出,C0端輸出

4、頻率為輸入頻率的1/10,達(dá)到十分頻的作用。如果當(dāng)頻率很高是需要多次分頻只需將多片74LS161級(jí)聯(lián)就可以了。74LS161時(shí)序圖如圖4所示,系統(tǒng)分頻電路如圖5所示。圖474LS161時(shí)序圖圖5分頻電路4.3數(shù)據(jù)選擇電路:根據(jù)設(shè)計(jì)要求要根據(jù)計(jì)數(shù)脈沖個(gè)數(shù)來選擇分頻次數(shù),可以用CD4051來選擇分頻次數(shù),CD4051的選擇控制信號(hào)有單片機(jī)的I/O口來控制。數(shù)據(jù)選擇電路如圖6所示。圖6數(shù)據(jù)選擇電路4.4單片機(jī)系統(tǒng):?jiǎn)纹瑱C(jī)采用AT89S52,采用12MHZ的晶振頻率。單片機(jī)的P3.5口接被處理后的被測(cè)信號(hào),P0口接液晶顯示器的數(shù)據(jù)輸入端,ALE,RD,WR,P0.0,P0.1通過外接控制電路接液晶顯示

5、器的控制端。單片機(jī)系統(tǒng)的電路如圖7所示。圖7單片機(jī)系統(tǒng)4.5顯示電路:顯示電路由1602組成,其電路如圖8所示。圖8顯示電路PCB圖如下:五 軟件設(shè)計(jì):等精度頻率計(jì)的軟件設(shè)計(jì)主要由主程序、分頻選擇程序、液晶顯示程序組成。5.1 等精度頻率計(jì)的算法設(shè)計(jì):根據(jù)設(shè)計(jì)要求頻率圍是10HZ100MHZ,當(dāng)頻率為10HZ時(shí),T=100000us,高電平為50000us,0.1%的誤差為100us,由單片機(jī)產(chǎn)生的基準(zhǔn)頻率為1MHZ,T0=1us,最大誤差為1us,計(jì)數(shù)個(gè)數(shù)為50000(方式1),滿足設(shè)計(jì)要求。當(dāng)頻率增加到1KHZ時(shí),產(chǎn)生的誤差剛剛能達(dá)到設(shè)計(jì)要求,這時(shí)計(jì)數(shù)個(gè)數(shù)為500。當(dāng)頻率大于1KHZ時(shí)(即

6、計(jì)數(shù)個(gè)數(shù)小于500)就需要將被測(cè)頻率分頻后再測(cè)量,如當(dāng)頻率為10KHZ時(shí),先計(jì)算計(jì)得的脈沖數(shù)等于50,小于了500,所以將10KHZ的信號(hào)10分頻得到1KHZ,這時(shí)就滿足要求了。最后得到的頻率 f=其中n為計(jì)得的脈沖個(gè)數(shù),i為分頻的次數(shù)。5.2 主程序:主程序首先對(duì)系統(tǒng)環(huán)境初始化,設(shè)置分頻選通信號(hào)P2=0x00,選通0通道。設(shè)置T0工作方式,采用硬件啟動(dòng)方式,GATE=1,當(dāng)INT0和TR0同時(shí)為1時(shí)啟動(dòng)計(jì)時(shí),計(jì)數(shù)方式為方式1(16位),TH0和TL0都置零。當(dāng)外部中斷INT0=1時(shí)等待,當(dāng)外部中斷為0時(shí)啟動(dòng)T0即TR0=1,當(dāng)INT0一直為0時(shí)就等待,一旦INT0=1就啟動(dòng)計(jì)數(shù)同時(shí)等待,當(dāng)I

7、NT0為0時(shí)跳出并關(guān)閉T0即TR0=0。這樣就計(jì)得高電平期間基準(zhǔn)脈沖個(gè)數(shù),當(dāng)脈沖個(gè)數(shù)小于500時(shí)就選擇10分頻信號(hào),即P2自加1,同時(shí)記錄分頻一次;如果分頻后脈沖個(gè)數(shù)還小于500則再次分頻,知道計(jì)數(shù)個(gè)數(shù)大于500。其示意圖如圖9所示,主程序流程圖如圖10所示。被測(cè)脈沖INT0基準(zhǔn)脈沖T0等待啟動(dòng)T0,TR0=1啟動(dòng)計(jì)數(shù)停止計(jì)數(shù),讀出計(jì)數(shù)個(gè)數(shù)N個(gè)脈沖圖9 計(jì)數(shù)工作示意圖開始初始化數(shù)據(jù)選擇信號(hào)系統(tǒng)初始化讀出計(jì)數(shù)個(gè)數(shù)nn<=500變換數(shù)據(jù)選擇通道,計(jì)算分頻次數(shù)iY顯示結(jié)果N圖10 主程序流程圖5.3 程序清單:#include <stdio.h>#include<reg52.

8、h>sbit en=P11;#define uint unsigned int#define uchar unsigned char/*lcd1602端口,數(shù)據(jù)口為P0口*/sbit RW=P26;sbit RS=P27;sbit LCDE=P25;uchar q,n;char buffer17;double num;uchar flag;/LCD忙標(biāo)志判斷uchar flag2=0;uchar flag3=0; /*延時(shí)程序*/void delay(uint i)uint j;while(i-)for(j=120;j>0;j-);/*LCD忙標(biāo)志判斷*/void busy(voi

9、d)flag=0x80;while(flag&0x80)P0=0xff;RS=0;RW=1;LCDE=1;flag=P0;LCDE=0;/*LCD寫指令*/void write_(uchar ) LCDE=0;busy();P0=;RS=0;RW=0;LCDE=1;delay(1);LCDE=0;/*LCD寫數(shù)據(jù)*/void write_data(uchar dat) busy();LCDE=0;RS=1;RW=0;P0=dat;LCDE=1;delay(1);LCDE=0;/*LCD初始化*/void lcd1602_init(void) write_(0x38);write_(0x

10、0c);write_(0x06);write_(0x01);void dis_LCD(uchar x,uchar y,uchar dat) /LCD字符輸出/*設(shè)置顯示坐標(biāo)(x_第幾行,y_第幾個(gè))顯示字符*/uchar aa; if (x=1) aa=0x80; if (x=2) aa=0x80+0x40; write_(aa+y-1);write_data(dat);/*1602顯示字符串*/void lcd_printf(uchar x,uchar y,uchar *str) /LCD字符串輸出 /*設(shè)置顯示坐標(biāo)(x_第幾行,y_第幾個(gè))顯示字符串*/ uchar aa; if (x=1

11、) aa=0x80; if (x=2) aa=0x80+0x40; write_(aa+y-1);while(*str!='0') write_data(*str);/寫入數(shù)據(jù) str+;delay(1); /*按鍵控制選擇通道函數(shù)*/void main()lcd1602_init(); /lcd1602初始化lcd_printf(1,1,"Frequency is");TMOD=0x51; /設(shè)置T1為16位計(jì)數(shù)計(jì),T0為16位定時(shí)器 TH0=0x3c;/定時(shí)為50ms中斷一次TL0=0xB0;/TH0=(65536-5000)/256;TL0=(6553

12、6-5000)%256;TH1=0x00;TL1=0x00;EA=1; /允許所有中斷ET0=1; /打開定時(shí)器0 ET1=1; /打開計(jì)數(shù)器1 TR0=1; /啟動(dòng)定時(shí)器 0 TR1=1; /啟動(dòng)計(jì)數(shù)器1en=1;while(1) if(flag2=0) if(num<1000)&&(flag3=1) /顯示單位自動(dòng)切換Hz/KHzsprintf(buffer,"%14.0fHz",(float) num);else if(flag3=1)sprintf(buffer,"%13.3fKHz",(float) (num/1000);

13、 elsesprintf(buffer,"%13.3fKHz",(float) (num); lcd_printf(2,1,buffer); /將計(jì)數(shù)器計(jì)數(shù)的數(shù)值送往LCD顯示;/*T0、定時(shí)器中斷服務(wù)*/void Timer0() interrupt 1TH0=0x3c;TL0=0xB0;n+;if(n>=20) /定時(shí)1S 到達(dá) if(en=1) num=128*(TL1+TH1*256+q*65536)/1000; if(num<450) en=0; flag2=1; else flag2=0; flag3=0;else if(en=0)num=TL1+T

14、H1*256+q*65536; flag2=0;en=1;flag3=1;n=0; q=0;TH1=0x00;TL1=0x00;TH0=0x3c;TL0=0xB0;/*T1、計(jì)數(shù)器中斷服務(wù)*/void Timer1() interrupt 3 q+;/計(jì)數(shù)器計(jì)數(shù)計(jì)滿(65536)溢出進(jìn)位六 調(diào)試與安裝正確的調(diào)試系統(tǒng)才能使各模塊正常工作,實(shí)現(xiàn)高精度,高穩(wěn)定性的溫度測(cè)量。使用的設(shè)備:直流穩(wěn)壓電源 一臺(tái)數(shù)字萬(wàn)用表 一臺(tái)電烙鐵與焊接工具 一套示波器 一臺(tái)連接線 若干1. 用直觀法檢查電路焊接是否正確,元器件極性是否正確。插上芯片,接上電源,用電壓法檢查各芯片、各引腳電壓是否正常。2. 接上示波器,觀察

15、輸出波形是否正確。3. 按動(dòng)調(diào)頻按鈕,看頻率是否改變;4. 觀察顯示部分是否和調(diào)試部分對(duì)應(yīng)。七 心得體會(huì)本設(shè)計(jì)所設(shè)計(jì)的頻率計(jì)有有較高的精度,頻率圍較高,有較強(qiáng)的實(shí)用價(jià)值。當(dāng)然本設(shè)計(jì)只是基于各種理想的實(shí)驗(yàn)條件下得出的結(jié)論,設(shè)計(jì)當(dāng)中不可避免的存在一些問題。例如在信號(hào)轉(zhuǎn)換的電路中只是粗略的將正弦信號(hào)轉(zhuǎn)換成方波信號(hào),而沒有對(duì)輸出信號(hào)進(jìn)行進(jìn)一步的處理;在信號(hào)經(jīng)過分頻后也沒有對(duì)信號(hào)進(jìn)行處理,這將降低測(cè)量的精度。如果在以上兩個(gè)地方加入相關(guān)的處理電路,系統(tǒng)的精度將得到進(jìn)一步的提高。通過這次的課程制作,我深刻的體會(huì)到理論與實(shí)踐的區(qū)別,完全不是一個(gè)概念的,理論上可行的你要做成實(shí)物是很有難度的,畫PCB圖只要半天左

16、右,制作板子和焊板子半天。但是調(diào)試卻整整花了我三天的時(shí)間,之前的一點(diǎn)點(diǎn)的錯(cuò)誤,給我后面的調(diào)試帶來了巨大的影響,加上學(xué)校制版的技術(shù)有待提高,中間有些線路斷路,需要萬(wàn)用表逐個(gè)的測(cè)試。思路上設(shè)計(jì)的正確,但是程序?qū)懙挠袉栴}。寫的有難度,還是請(qǐng)教了大神的解決。以后的好好多學(xué)點(diǎn)。理論就是理論,實(shí)踐才是真才學(xué)。作為一名應(yīng)用電子專業(yè)的學(xué)生,單片機(jī)的課程設(shè)計(jì)是很有意義的,更重要的是如何把自己平時(shí)所學(xué)的東西應(yīng)用到實(shí)際中。雖然自己對(duì)這門課程懂的并不多,很多基礎(chǔ)的東西都還沒有很好的掌握,覺得很難,也沒有很有效的辦法通過自身去理解,但是靠著這一個(gè)禮拜的學(xué)習(xí),在小組同學(xué)的幫助和講解下,自己開始主動(dòng)學(xué)習(xí)并逐步從基礎(chǔ)慢慢開始弄懂它。我認(rèn)為這個(gè)收反映的是獲是相當(dāng)大

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論