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