|
1、 項目名稱:設(shè)計制作數(shù)字頻率計
2、 項目要求:
(1) 用KEILC51、Proteus仿真設(shè)計數(shù)字頻率計
(2) AT89C51單片機作為主控制器;
(3) 用數(shù)碼管顯示頻率;
(4) 能測試1-100Hz信號頻率;
3、 設(shè)計制作任務(wù)
(1) 擬定總體設(shè)計制作方案;
(2) 設(shè)計硬件仿真電路;
(3) 繪制軟件設(shè)計流程圖及編寫軟件控制程序;
(4) 仿真調(diào)試;
(5) 完成項目文檔;
4、 總體設(shè)計思路
基本功能能實現(xiàn)思路是用51單片機做控制采用12Mhz時鐘;定時器在技數(shù)狀態(tài)下最大計數(shù)值為fosc/24最大計數(shù)頻率達250khz用AT89C51內(nèi)的一個定時器做定時器另一個定時器做計數(shù)器為所測試的信號的周期進行計數(shù),定時1s讀出的計數(shù)值就是頻率頻率值經(jīng)數(shù)據(jù)處理后用數(shù)碼管顯示
5、 硬件電路設(shè)計
用AT89C51單片機做控制采用系統(tǒng)時鐘12Mhz采用上電復(fù)位方式三位一體的共陰極數(shù)碼管作為顯示AT89C51的一個I/O口作為顯示數(shù)據(jù)輸出的端口一個i/o口作為數(shù)碼管位選控制端口T0做為頻率測試輸入端。
1.png (83.79 KB, 下載次數(shù): 43)
下載附件
2022-5-24 17:52 上傳
6、 C語言主控程序設(shè)計(程序設(shè)計思路及流程圖)
#include<reg51.h>
unsigned char frequency;
unsigned char count_t1;
unsigned char segselect[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char bitselect[]={0x01,0x02,0x04};
unsigned char dat_display[3];
void delay(unsigned int time)
{
unsigned int i;
unsigned char j;
for (i=0;i<time;i++)
for(j=0; j<120;j++)
;
}
void INT1init()
{
TMOD|=0x10;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
TR1=1;
}
void INT0init()
{
TMOD|=0x05;
TH0=0;
TL0=0;
TR0=1;
}
void int_init()
{
EA=1;
ET1=1;
}
void display_1bit(unsigned char dat,unsigned char segsel)
{
P2=0x00;
P1=dat;
P2=segsel;
代碼不全:
|
|