仿真圖proteus 8.9
程序編譯器:keil 4/keil 5
編程語(yǔ)言:C語(yǔ)言
設(shè)計(jì)編號(hào):C0052
主要功能
由51單片機(jī)+信號(hào)輸入+74HC14整形電路+74HC390分頻電路+LCD1602顯示模塊+電源構(gòu)成。
2、頻率的測(cè)量范圍為1Hz—12MHz,且能檢測(cè)幅度最小值為1Vpp的信號(hào);
3、通過(guò)LCD1602液晶顯示屏顯示檢測(cè)到的即時(shí)頻率數(shù)值(最多8位數(shù),單位為Hz)。
全部資料包括程序(注釋)、AD原理圖、protues仿真、參考論文、講解、資料使用介紹等。
任務(wù)書(shū)
數(shù)字頻率計(jì)是一種基本的測(cè)量?jī)x器。它被廣泛應(yīng)用于航天、電子、測(cè)控等領(lǐng)域,還被應(yīng)用在計(jì)算機(jī)及各種數(shù)學(xué)儀表中。一般采用的是十進(jìn)制數(shù)字,顯示被測(cè)信號(hào)頻率?;竟δ苁菧y(cè)量正弦信號(hào),方波信號(hào)以及其他各種單位時(shí)間內(nèi)變壞的物理量。由于其使用十進(jìn)制數(shù)顯示,測(cè)量迅速精確,顯示直觀,所以經(jīng)常被用來(lái)使用。
本文主要介紹數(shù)字頻率計(jì)的設(shè)計(jì)和調(diào)試,本作品是基于52單片機(jī)作為平臺(tái),基本原理是通過(guò)52單片機(jī)進(jìn)行頻率的采集和分析工作,在通過(guò)程序使其顯示在LCD1602的液晶顯示屏上,通過(guò)液晶顯示屏,讓使用者能夠直觀的看到當(dāng)前的輸入頻率是多少。
由于52單片機(jī)能處理的頻率信號(hào)強(qiáng)度有限,所以這次我們先用74HC390芯片對(duì)輸入的信號(hào)進(jìn)行了分頻,使其降低了100倍,才送去給單片機(jī)處理,而且為了使1602液晶顯示屏能更好的兼容,在程序上我們做了三次初始化。
實(shí)物圖
仿真圖
? 在電子測(cè)量領(lǐng)域中,頻率測(cè)量的精確度是最高的,可達(dá)10至10數(shù)量級(jí)。因此,在生產(chǎn)過(guò)程中許多物理量,例如溫度、壓力、流量、液位、PH值、振動(dòng)、位移、速度、加速度,乃至各種氣體的百分比成分等均用傳感器轉(zhuǎn)換成信號(hào)頻率,然后用數(shù)字頻率計(jì)來(lái)測(cè)量,以提高精確度。
? 國(guó)際上數(shù)字頻率計(jì)的分類很多。按功能分類,因計(jì)數(shù)式頻率計(jì)的測(cè)量功能很多,用途很廣。所以根據(jù)儀器具有的功能,電子計(jì)數(shù)器有通用和專用之分。一、通用型計(jì)數(shù)器:通用型計(jì)數(shù)器是一種具有多種測(cè)量功能、多種用途的萬(wàn)能計(jì)數(shù)器。它可測(cè)量頻率、周期、多周期平均值、時(shí)間間隔、累加計(jì)數(shù)、計(jì)時(shí)等;若配上相應(yīng)插件,就可測(cè)相位、電壓、電流、功率、電阻等電量;配上適當(dāng)?shù)膫鞲衅鳎€可進(jìn)行長(zhǎng)度、重量、壓力、溫度、速度等非電量的測(cè)量。二、專用計(jì)數(shù)器:專用計(jì)數(shù)器指專門用來(lái)測(cè)量某種單一功能的計(jì)數(shù)器。如頻率計(jì)數(shù)器,只能專門用來(lái)測(cè)量高頻和微波頻率;時(shí)間計(jì)數(shù)器,是以測(cè)量時(shí)間為基礎(chǔ)的計(jì)數(shù)器,其測(cè)時(shí)分辨力和準(zhǔn)確度很高,可達(dá)ns數(shù)量級(jí);特種計(jì)數(shù)器,它具有特種功能,如可逆計(jì)數(shù)器、閾值計(jì)數(shù)器、差值計(jì)數(shù)器、倒數(shù)計(jì)數(shù)器等,用于工業(yè)和自控技術(shù)等方面。數(shù)字頻率計(jì)按頻段分類:①低速計(jì)數(shù)器:最高計(jì)數(shù)頻率<10MHz;②中速計(jì)數(shù)器:最高計(jì)數(shù)頻率10—100MHz;③高速計(jì)數(shù)器:最高計(jì)數(shù)頻率>100MHz;④微波頻率計(jì)數(shù)器:測(cè)頻范圍1—80GHz或更高。
原理圖
? 此次智能電子設(shè)計(jì)與制作實(shí)訓(xùn)本小組的題目為“數(shù)字頻率計(jì)的設(shè)計(jì)”,在仔細(xì)研究了題目要求并通過(guò)小組內(nèi)部積極細(xì)致的討論之后,決定作品采用的功能方案如下:①能測(cè)出正弦波、三角波或方波等波形的頻率。②頻率的測(cè)量范圍為1Hz—20MHz,且能檢測(cè)幅度最小值為1Vpp的信號(hào);③通過(guò)LCD1602液晶顯示屏顯示檢測(cè)到的即時(shí)頻率數(shù)值(最多8位數(shù),單位為Hz)。值得一提的是,當(dāng)輸入頻率大于20KHz的信號(hào)時(shí),由于采用了100分頻采樣,顯示結(jié)果稍有誤差,如輸入最大測(cè)量頻率20MHz的信號(hào)時(shí),LCD1602液晶顯示屏上顯示的測(cè)量結(jié)果為19998900HZ,誤差不超過(guò)十萬(wàn)分之一,在可接受范圍之內(nèi)。
以下將以待測(cè)輸入信號(hào)走向?yàn)轫樞蚪榻B電路中各個(gè)功能模塊。
信號(hào)采集模塊
為了有效防止因信號(hào)過(guò)小而造成的檢測(cè)障礙,在信號(hào)輸入處采用了三極管共射放大電路,如圖1.1所示。實(shí)際工作中,我們必須解決放大電路與信號(hào)源及放大電路與負(fù)載之間的耦合問(wèn)題。一方面要求耦合電路能夠傳輸交流的輸入和輸出信號(hào),傳輸過(guò)程中的信號(hào)損耗盡可能小;另一方面又要求信號(hào)源,放大電路、負(fù)載之間的直流工作狀態(tài)互補(bǔ)影響,即有“隔直”作用,電路的C1、C7就很好的解決了這個(gè)問(wèn)題即固定偏置共射極放大器。集電極電壓通過(guò)基極偏置電阻R2使晶體管Je正偏;同時(shí)拖過(guò)R3使Jc反偏,從而實(shí)現(xiàn)信號(hào)源放大。
脈沖產(chǎn)生模塊
? 脈沖產(chǎn)生模塊采用74HC14實(shí)現(xiàn)了三次施密特觸發(fā)并反相,從圖1.2可以看出,來(lái)自信號(hào)采集模塊的經(jīng)過(guò)放大的信號(hào)從74HC14的1腳進(jìn)入,經(jīng)過(guò)1A→1Y、2A→2Y和3A→3Y三次施密特觸發(fā)并反相最終將緩慢變化的輸入信號(hào)轉(zhuǎn)換成清晰、無(wú)抖動(dòng)的信號(hào)從6腳輸出。
分頻模塊
74HC390具有有八個(gè)主從觸發(fā)器和附加門以構(gòu)成兩個(gè)獨(dú)立的4位計(jì)數(shù)器,其中每個(gè)計(jì)數(shù)器皆包含兩個(gè)部分:“除2計(jì)數(shù)部分”和“除5計(jì)數(shù)部分”,每個(gè)計(jì)數(shù)器又有一個(gè)清除輸入和一個(gè)時(shí)鐘輸入。它可以實(shí)現(xiàn)等于2 分頻、5 分頻乃至100 分頻的任何累加倍數(shù)的周期長(zhǎng)度,且可以連成十進(jìn)制計(jì)數(shù)器或二-五進(jìn)制計(jì)數(shù)器以分別實(shí)現(xiàn)兩種進(jìn)制的數(shù)值輸出。由于每個(gè)計(jì)數(shù)級(jí)都有并行輸出,所以系統(tǒng)定時(shí)信號(hào)可以獲得輸入計(jì)數(shù)頻率的任何因子。
74HC390具有以下特點(diǎn):
①A和B觸發(fā)器都有獨(dú)立的時(shí)鐘
②每個(gè)計(jì)數(shù)器都有直接清除
③有效提高系統(tǒng)密度
④緩沖輸出減小集電極轉(zhuǎn)換的可能性
程序
主要代碼
/----------------主函數(shù)--------------------
void main()
{
unsigned char i;
LCD_init();
timer_init(); //定時(shí)/計(jì)數(shù)器初始化
for(i = 0;i<4;i++)
{
LCD_disp_char(i+0,1,character_1[i]);
}
while(1)
{
dis_num(); //顯示
delay_1s();
}
}
//-------------------定時(shí)/計(jì)數(shù)器初始化--------------
void timer_init(void) //定時(shí)/計(jì)數(shù)器初始化
{
TMOD=0x66; //計(jì)數(shù)器0和計(jì)數(shù)器1工作工作方式2,自動(dòng)重裝初值
TH0=0; //計(jì)數(shù)器初值為0
TL0=0;
TR0=1; //計(jì)數(shù)器開(kāi)始計(jì)數(shù)
ET0=1; //打開(kāi)計(jì)數(shù)器0中斷
TH1=0; //計(jì)數(shù)器初值為0
TL1=0;
TR1=1; //計(jì)數(shù)器開(kāi)始計(jì)數(shù)
ET1=1; //打開(kāi)計(jì)數(shù)器1中斷
RCAP2H=(65536-62500)/256; //在程序初始化的時(shí)候給RCAP2L和RCAP2H賦值,
RCAP2L=(65536-62500)%256; //TH2和TL2將會(huì)在中斷產(chǎn)生時(shí)自動(dòng)使TH2=RCAP2H,TL2=RCAP2L。
TH2=RCAP2H; //12M晶振下每次中斷62.5ms(1s=1000ms=62.5ms×16)
TL2=RCAP2L;
ET2=1; //打開(kāi)定時(shí)器2中斷
TR2=1; //定時(shí)器2開(kāi)始計(jì)時(shí)
EA=1; //開(kāi)總中斷
}
//------------------中斷函數(shù)----------------------
void timer2(void) interrupt 5 //定時(shí)器2中斷(62.5ms)
{
time++;
TF2=0; //定時(shí)器2的中斷標(biāo)志位TF2不能夠由硬件清零,所以要在中斷服務(wù)程序中將其清零
if (time==16) //定時(shí)1s時(shí)間到
{
time=0; //計(jì)時(shí)清0
EA=0; //關(guān)中斷
fre=(long)count1*256+TL1; //count*256強(qiáng)制轉(zhuǎn)換成long型,否則將不產(chǎn)生進(jìn)位~先判斷分頻后(計(jì)數(shù)器1)
FLAG = 0;
if(fre<2000)//如果不到200KHz則讀取分頻前(計(jì)數(shù)器0)頻率(200K÷100=2000)
{
fre = (long)count*256+TL0;
FLAG = 1;
}
if(!FLAG)
{
fre = fre *100;//100分頻
}
TL0=0; //清零計(jì)數(shù)器0計(jì)數(shù)
TH0=0;
TL1=0;
TH1=0;
count=0; //清零計(jì)數(shù)器0計(jì)數(shù)
count1=0;
EA=1; //開(kāi)中斷
}
}
//----------------------------------------------------------------
void timer0(void) interrupt 1 //計(jì)數(shù)器0中斷(100分頻前)
{
count++;
}
//----------------------------------------------------------------
void timer1(void) interrupt 3 //計(jì)數(shù)器1中斷(100分頻后)
{
count1++;
}