基于某c语言单片机数字频率计课程设计.docx
- 文档编号:23364805
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:19
- 大小:114.26KB
基于某c语言单片机数字频率计课程设计.docx
《基于某c语言单片机数字频率计课程设计.docx》由会员分享,可在线阅读,更多相关《基于某c语言单片机数字频率计课程设计.docx(19页珍藏版)》请在冰豆网上搜索。
基于某c语言单片机数字频率计课程设计
课程设计报告
课程名称:
单片机课程设计
报告题目:
数字频率计
学生姓名:
所在学院:
专业班级:
学生学号:
指导教师:
2013年12月25日
课程设计任务书
报告题目
数字频率计
完成时间
2013/12/25
学生姓名
专业班级
指导教师
职称
讲师
总体设计要求和技术要点
设计一个数字频率计,要求如下:
1.完成单脉冲测量,输入脉冲宽度范围是100s~0.1s。
2.使用AT89C51单片机的定时器/计数器的定时和计数功能,外部扩展6位LED数码管,要求累计每秒进入单片机的外部脉冲个数,用LED数码管显示出来。
3.要求
(1)被测频率fx<110Hz,采用测周法,显示频率×××.×××;
fx>110Hz,采用测频法,显示频率××××××。
(2)利用键盘分段测量和自动分段测量。
(3)完成单脉冲测量,输入脉冲宽度范围是100s~0.1s。
(4)显示脉冲宽度要求如下。
Tx<1000s,显示脉冲宽度×××。
Tx>1000s,显示脉冲宽度××××。
工作内容及时间进度安排
1.时间及任务
17周-18周周一到周五,上午8:
00-11:
40,下午2:
00-5:
40。
(1)17周周一:
学生选题,明确任务,指导教师对课题进行讲解,资料检索。
(2)17周周二:
硬件设计
(3)17周周三:
硬件仿真
(4)17周周四:
软件设计
(5)17周周五:
软件设计
(6)18周周一:
软件设计
(7)18周周二:
综合调试
(8)18周周三:
书写课程设计报告
(9)18周周四:
书写课程设计报告
(10)18周周五:
答辩评分
摘要
以ATMEL单片机为核心,利用单片机的外部中断、定时器的计数模式和定时器的功能对信号发生器产生的脉冲频率进行计数。
且可以根据频率的不同,单片机控制选择测周法或者测频法对产生的脉冲波形进行计数,以进行更加精确的频率测量。
而且可以通过按键来进行频率测量方法的选择。
关键词:
数字频率计;测频发;测周法;单片机
一、概述………………………………………………………………………………1
二、方案论证…………………………………………………………………………1
1.总体方案………………………………………………………………………1
2.测量方案选择…………………………………………………………………2
三、硬件设计…………………………………………………………………………2
1.系统功能描述…………………………………………………………………2
2.硬件电路设计方框……………………………………………………………33.单片机各部分电路……………………………………………………………3
四、软件设计…………………………………………………………………………4
1.测频发…………………………………………………………………………4
2.测周法…………………………………………………………………………4
3.主程序流程图设计……………………………………………………………5
4.程序设计……………………………………………………………14
五、课程与心得………………………………………………………………………14
六、参考文献…………………………………………………………………………15
一、概述
数字频率计是采用数字电路制成的实现对周期性变化信号的频率的测量。
数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。
它是一种用十进制数字,显示被测信号频率的数字测量仪器。
它的基本功能是测量正弦信号,方波信号以及其他各种单位时间内变化的物理量。
在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精度高,显示直观,所以经常要用到数字频率。
二、方案论证
1总体方案
本次设计包含硬件设计与软件设计两部分,根据设计任务要求,采用AT89S52单片机,配置时钟电路,复位电路构成单片机最小系统,配置前置放大电路,人机对话通道中的键盘,数码管显示,从而构成设计要求的单片机应用测频系统,其结构框图如下图1-1所示:
前置放大整形
复位电路
单片机
数码管显示
时钟电路
键盘电路
图1结构框图
2.测量方案选择
方案一:
直接测频法。
直接测频法是把被测频率信号经脉冲形成电路后加到闸门的一个输入端,只有在闸门开通时间T(以秒计)内,被计数的脉冲被送到十进制计数器进行计数。
设计数器的值为N,由频率定义式可以计算得到被测信号频率为:
f=N/T。
方案二:
高精度恒误差测频法。
通过对传统测量方法的研究,结合高精度恒误差测量原理,设计一种测量精度与被测频率无关的硬件测频电路。
本方法立足于快速的宽位数高精度浮点数字运算。
方案三:
倍频法。
直接测频法在高频段有着很高的精度。
可以把频率测量范围分成多个频段,使用倍频技术,根据频段设置倍频系数将经整形的低频信号进行倍频后再进行测量,高频段则进行直接测量。
从编程难易及单片机资源利用情况和测量误差角度考虑,选择方案一,尽管在测量低频段时的相对测量误差较大。
但是可以通过增大T来提高测量精度。
三.硬件设计
1.系统功能描述
本次课程设计主要完成功能有:
(1)按P3^4键可选择测量频率。
(2)按P3^5键可以选择测量周期。
(3)按P3^6键可以自动选择测频率与测周期。
2.硬件电路设计框架
根据设计要求,数字频率计整个系统硬件框架图如下2-1
键盘电路
AT89S52单片机
信号放大
分频电路
信号整形
信号限幅
待测信息
数码管显示
图2整机硬件电路框图
3.单片机各部分电路
(1)P0口经上拉电阻数据管显示电路
(2)P3^4-P3^6作为键盘设置端口
(3)P3^3作为被测信号输入端口
(4)P3^4被测信号接收端
图3单片机最小系统
4.放大整形部分
待测信号经过第一级放大后,进入第二级放大限幅电路。
LM318是高数运放,工作电压±5--±20V,输入带宽15MHZ,足够处理高频信号。
放大倍数:
n=RL2/RL1(RL2用50K,RL1用10K)。
限幅原理:
限幅电路的稳压管跨接在集成运放的输出端和反相输入端之间。
假设稳压管截止,则集成运放必然工作在开环状态,输出电压不是+UOM,就是-UOM。
这样,必将导致稳压管击穿而工作在稳压状态,DZ构成负反馈通路,使反相输入端为“虚地”,限流电阻上的电流iR等于稳压管的电流iZ,输出电压uO=±UZ。
图4放大电路
四、软件设计
1.测频发
所谓“频率”,就是周期性信号在单位时间(1s)内变化的次数。
若在一定时间间隔T内测得这个周期性信号的重复变化次数N,则其频率可表示为f=N/T右图其中脉冲形成电路的作用是将被测信号变成脉冲信号,其重复频率等于被测频率fx。
时间基准信号发生器提供标准的时间脉冲信号,若其周期为1s,图5测频原理
则门控电路的输出信号持续时间亦准确地等于1s。
闸门电路由标准秒信号进行控制,当秒信号来到时,闸门开通,被测脉冲信号通过闸门送到计数译码显示电路。
秒信号结束时闸门关闭,计数器停止计数。
2.测周法
主要是利用单片机的定时器计时,测量2个时间参数t1和t2,即如下所示:
图6测周法
计算信号的一个波形的周期t=t1+t2则可以求出频率f=1/t。
3.主程序流程图设计
图7流程图
4.程序设计
#include
#include
sbitsmgdl=P2^6;
sbitsmgwl=P2^7;
bitLED=P3^3;
sbitkey1=P3^4;//定义按键1
sbitkey2=P3^5;//定义按键2
sbitkey3=P3^6;//定义按键3
sbitkey4=P3^7;//定义按键4
unsignedcharvalue,smg;//保存按键接口状态
unsignedcharlkey,key_time;
unsignedcharmode=0;
unsignedinttime=0;
unsignedcharnum=0;
unsignedcharkey=0;
unsignedchartime_key=0;
unsignedintflag_f=0;
unsignedintf_temp1=0;
unsignedintf_temp2=0;
unsignedintt_temp1=0;
unsignedintt_temp2=0;
unsignedcharflag_int_0=0;
/*********************************/
unsignedchartablewe[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
unsignedchartabledu[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
unsignedcharsu[]={0,0,0,0,0,0,0,0};
/*********************************/
/*************DIS_LED*************/
voiddelay(unsignedinta)//延时函数
{
unsignedintb;
unsignedcharc;
for(b=a;a>0;a--)
for(c=100;c>0;c--);
}
voiddisplay_smg(unsignedcharsmg,unsignedcharvalue)//显示函数
{
smgwl=1;
P0=tablewe[smg];
smgwl=0;
smgdl=1;
P0=tabledu[value];
smgdl=0;
delay(6);//延长显示时间避开视觉暂留看数码管显示过程
}
//**************按键功能*****************
unsignedcharReadKey(void)
{
if(key1==0)
{
key_time++;
if(key_time==20)
{
lkey=1;mode=1;
}
if(key_time>20)key_time=100;
}
elseif(key2==0)
{
key_time++;
if(key_time==20)
{
lkey=2;mode=2;
}
if(key_time>20)key_time=100;
}
elseif(key3==0)
{
key_time++;
if(key_time==20)
{
lkey=3;mode=3;
}
if(key_time>20)key_time=100;
}
else
{
key_time=0;
}
returnlkey;
}
voidmain()
{
unsignedchark;
TMOD=0x01;//定时器初始化
TH0=(65536-2000)/256;
TL0=(65536-2000)%256;
//EA=1;
ET0=1;
TR0=1;
//PT0=1;
//EX0=1;//外部中断初始化
IT0=1;
EA=1;
while
(1)
{
display_smg(0,su[2]);//数码管显示
display_smg(1,su[3]);//数码管显示
display_smg(2,su[4]);//数码管显示
display_smg(3,su[5]);//数码管显示
display_smg(4,su[6]);//数码管显示
display_smg(5,su[7]);//数码管显示
k=ReadKey();
LED=~LED;//脉冲发生
}
}
voidtime_1()interrupt1
{
TH0=(65536-1000)/256;//定时器初始化
TL0=(65536-1000)%256;
time++;
if(time==500)
{
time=0;
num++;
if(num>=10)num=0;
}
if(mode==1)//测频法模式
{
EX0=1;//外部中断打开
IT0=1;
flag_f++;
if(flag_f>=600)//1S钟计时
{
flag_f=0;
mode=0;
EX0=0;
su[2]=f_temp2;
su[3]=f_temp1/10000;
su[4]=f_temp1/1000%10;
su[5]=f_temp1/100%10;
su[6]=f_temp1/10%10;
su[7]=f_temp1%10;
;
f_temp1=f_temp2=0;
}
}
if(mode==2)//测周法模式
{
EX0=1;//外部中断打开
IT0=0;
PX0=1;
if(flag_int_0==1)
{
EX0=0;
mode=0;
flag_int_0=0;
TR1=0;
t_temp1=TL1;
t_temp2=TH1;
t_temp2=t_temp2*256;
t_temp1=t_temp1+t_temp2;
//su[2]=t_temp2/100;
su[3]=t_temp1/10000;
su[4]=t_temp1/1000%10;
su[5]=t_temp1/100%10;
su[6]=t_temp1/10%10;
su[7]=t_temp1%10;
TH1=0;
TL1=0;
}
}
if(mode==3)//自动测频测周
{
EX0=1;//外部中断打开
IT0=1;
flag_f++;
if(flag_f>=600)//1S钟计时
{
flag_f=0;
EX0=0;
if(f_temp1>110)
{
mode=2;
}
if(f_temp1<=110)
{
mode=1;
}
}
}
su[0]=mode;
su[1]=num;
}
voidINT_0()interrupt0//外部中断
{
if(mode==1)
{
EX0=0;
f_temp1++;
if(f_temp1>=50000)
{
f_temp1=50000;
f_temp2++;
if(f_temp2>=5000)
{
f_temp1=f_temp2=0;
}
}
EX0=1;
}
if(mode==2)
{
TR1=1;
flag_int_0=1;
}
}
五、结论与心得
这次为期两周的课程设计让我受益匪浅。
以前只是对单片机更多的只是一些感性的,理论上的认识,自己真正动手的时候,才真正理解到其中的精华所在。
频率计的设计让我更好的了解如何应用单片机的定时器计数器模块,其中最重要的是分析问题解决问题的能力,在我看来,无论是在节省硬件资源,还是提高数据的准确度来看,都需要下一些功夫把它做到最好。
感谢廖亦凡博士在此寒冷的天气每天指导我们的单片机的设计,是您的经验帮助我解决很多技术上的难题。
六、参考文献
【1】杨恢先黄辉先《单片机原理及应用》人民邮电出版社
【2】大能南光群刘金华《单片机课程设计指导书》北京理工大学
【3】谭浩强《C语言程序设计第二版》清华大学
教师评语及设计成绩
教师评语:
课程设计成绩:
指导教师:
(签名)
日期:
年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 语言 单片机 数字频率计 课程设计