|
1、 項目名稱:設計制作數字頻率計
2、 項目要求:
(1) 用KEILC51、Proteus仿真設計數字頻率計
(2) AT89C51單片機作為主控制器;
(3) 用數碼管顯示頻率;
(4) 能測試1-100Hz信號頻率;
3、 設計制作任務
(1) 擬定總體設計制作方案;
(2) 設計硬件仿真電路;
(3) 繪制軟件設計流程圖及編寫軟件控制程序;
(4) 仿真調試;
(5) 完成項目文檔;
4、 總體設計思路
基本功能能實現思路是用51單片機做控制采用12Mhz時鐘;定時器在技數狀態下最大計數值為fosc/24最大計數頻率達250khz用AT89C51內的一個定時器做定時器另一個定時器做計數器為所測試的信號的周期進行計數,定時1s讀出的計數值就是頻率頻率值經數據處理后用數碼管顯示
5、 硬件電路設計
用AT89C51單片機做控制采用系統時鐘12Mhz采用上電復位方式三位一體的共陰極數碼管作為顯示AT89C51的一個I/O口作為顯示數據輸出的端口一個i/o口作為數碼管位選控制端口T0做為頻率測試輸入端。
1.png (83.79 KB, 下載次數: 43)
下載附件
2022-5-24 17:52 上傳
6、 C語言主控程序設計(程序設計思路及流程圖)
#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;
代碼不全:
|
-
-
數字頻率計.zip
2022-5-24 17:03 上傳
點擊文件名下載附件
153.21 KB, 下載次數: 7
|