|
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做为频率测试输入端。
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;
代码不全:
|
|