单片机课程设计论文频率计.docx
《单片机课程设计论文频率计.docx》由会员分享,可在线阅读,更多相关《单片机课程设计论文频率计.docx(15页珍藏版)》请在冰豆网上搜索。
单片机课程设计论文频率计
目录
1.设计目的及要求2
2.方案比较与论证2
3.总体系统设计3
3.1.系统结构框图4
3.2单片机模块4
3.2.1晶振模块4
3.2.2复位模块4
3.2.3电源模块5
3.3数码管显示模块5
3.4程序设计模块6
4.系统的组装6
4.1PCB板图6
4.2面板图及部件说明6
5.系统调试6
5.1硬件电路的测试方法6
5.2软件的测试方法6
6.设计心得体会7
参考文献7
附录8
附录1总原理图8
附录2测试仪器9
1.设计目的及要求
本次课程设计目的是为了加深对单片机内部寄存器的理解,熟练掌握定时计数器的使用,熟练使用数码管显示数字,并学会制作PCB板。
要求:
(1)控制模块选用AT89S51单片机,完成51单片机最小应用系统的设计;
(2)测频范围:
50HZ—50KHZ;
(3)完成数码管驱动电路的设计,数码管显示测得信号频率值。
2.方案比较与论证
方案一:
定时法
此法将定时/计数器构成为定时器,频率计则使用定时方法测量待测信号的周期。
定时/计数器在判断待测信号的下降沿到来后,启动定时器,以单片机工作周期为单位进行计数,直至信号的下一个下跳沿到来,定时器停止,停止计数。
16位定时/计数器的最高计数值为65535,当待测信号的频率较低时,定时/计数器将发生溢出。
产生溢出时,程序进入定时器中断服务程序,对溢出次数进行计数。
此时待测信号的周期由3个部分组成:
定时/计数器溢出次数、定时/计数器的高8位和低8位。
信号的频率f与信号的周期T之间的关系为:
f=1/T
完成信号的周期测量后,需要做一次倒数运算才能获得信号的频率。
再将信号频率值变换成本频率计的显示格式,送到显示模块显示待测信号的频率值。
完成显示后,频率计都开始下一次信号的频率测量。
方案二:
计数法
此法将定时/计数器构成为计数器。
计数法是在一定时间内将被测信号加到计数器进行计数的方法,如果设定的时间为T,计数器得到的计数值为N1,则被测频率为f=N1/T。
改变时间T,则可改变测量频率范围。
如图2-1所示。
图2-1
而在定时T期间,计数器的精确计数值N与测量值N1之间存在一定的误差,通过分析,信号频率越高,误差越小;而信号频率越低,则测量误差越大。
因此测频法适合用于对高频信号的测量,频率越高,测量精度也越高。
由于要求测量频率范围为50HZ—50KHZ,因此选用方案二,可以较好的达到效果。
将单片机内部定时/计数器T0设置为定时器并定时1s,将单片机内部定时/计数器T1设置为计数器,以机器周期(1us)为基准(12M晶振),由软件产生计数定时时间1s,将计数值显示出来即为待测信号的频率。
3.总体系统设计
3.1.系统结构框图
控制单元AT89S51
数码管显示
外部信号
数码管驱动
3.2单片机模块
3.2.1晶振模块
晶振为单片机提供时钟信号,CPU总是按照一定的时钟节拍与时序工作,可以通过提高时钟频率来提高CPU的工作速度,此系统使用12M晶振。
电容C1、C2的取值范围为15pF-45pF之间,他们能起到起振和微调震荡频率的作用。
3.2.2复位模块
CPU在启动运行时都需要复位,使CPU和其他部件都置为一个特定的初始状态。
而AT89S51单片机可以有上电复位和手动复位,此设计可同时实现两种复位方式。
此单片机需要一个正脉冲(宽度>2个机器周期)才能是单片机复位,由于振荡器频率为12M,则复位的电容的典型值为1uF。
3.2.3电源模块
此单片机的供电电压为5V,通过ISP下载线供电,亦可通过直流5V供电。
此次设计在电源处加入一个滤波电容和一个电解电容,可以是电源电压更加稳定,从而使单片机更加稳定的工作。
3.3数码管显示模块
数码管动态显示原理:
将位选信号送至12、9、8、6;段选信号送至11、7、2、1、10、5、3。
段码虽同时到达4个LED,但一次仅一个LED被选中。
利用“视觉暂留”,每送一个字符并选中相应位线,延时一会儿,再送/选下一个……循环扫描即可。
3.4程序设计模块
开始
计数器1清零
启动定时计数器
计数器0赋初值
进中断
定时1s
读出计数器1显示值
结束
4.系统的组装
4.1PCB板图
主要是运用了Protel软件进行原理图,pcb图的绘制,完成以后进过一系列的加工制作形成完整的PCB板。
在元件的焊接过程之中,注意元件的方向性和焊接的可靠性。
4.2面板图及部件说明
虽然制作了PCB图,但这是分模块设计的,因此需要用排线把各个部分连接起来,制作硬件时一定要把各部分接口在电路板上标注出来,特别是电路中有许多个接口时更应该标注一下(如电源正负极,I/O口等),标注以后方便电路检查及插线,从而大大的节约了时间,同时也使电路清楚明了。
此设计使用了5位共阳数码管显示频率的大小。
5.系统调试
5.1硬件电路的测试方法
对于电子电路的调试方法,首先是分模块调试,把各个模块都调试好了以后,将各模块连接起来进行联调,在调试过程中一定要仔细,还要有足够的耐心。
5.2软件的测试方法
本次课设需要用到keilc51编写软件、progisp下载软件。
学会keilc51及progisp的使用,软件调试和硬件调试有很多共同之处。
首先写一段程序测试数码管,并测试数码管的编码表,其次设置定时计数器,用示波器调试定时时间(此处需要定时50ms进一次中断,需中断20次,完成1s定时,而程序中通过进一次中断输出电平取反用来测试,此时输出占空比为50%频率为10HZ的方波,同时此信号也可以做为输入信号接入计数器用做测试信号)。
6.设计心得体会
在这次课程设计中,先把每个模块设计出来,要考虑到设计的每个细节及要求,一步一步地修改,完成pcb图的设计。
接下来是焊接电路,调试电路,调试软件实现功能,这里需要仔细加耐心才能完成。
同时,在整个过程之中学会了提出问题、分析问题、解决问题的方法,会对以后的学习带来极大的帮助。
回顾起此次课程设计,至今我仍感慨颇多,从理论到实践,在整整两个星期的时间里,我学到很多很多的东西,不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的内容。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才是真正的知识,才能提高自己的实际动手能力和独立思考的能力。
在设计的过程遇到了各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计,把以前所学过的知识重新温故,巩固了所学的知识。
参考文献
[1]康光华等,电子技术基础(模拟部分)[M],高等教育出版社,2006年1月第5版
[2]张友德、赵志英、凃时亮,单片微型机原理、运用与实践,复旦大学出版社,2006年10月第5版
附录
附录1总原理图
单片机模块
数码管模块
附录2测试仪器
1.5V电源
2.万用表
3.信号发生器
附录3实物图片
附录4程序设计及代码
#include
unsignedintcounter,count;
unsignedcharcodeduanma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//0,1,2,3,4,5,6,7,8,9,.
voiddelay(unsignedinti);
voiddisplay(unsignedcharwan,unsignedcharqian,unsignedcharbai,unsignedcharshi,unsignedcharge);
sbitfre=P1^1;
voidmain()
{
unsignedcharwan,qian,bai,shi,ge;
TMOD=0x51;//01010001T1:
负脉冲计数工作方式1//T0:
定时工作方式1
TH0=0x3C;//3CB0H=15536
TL0=0xB0;//M=12MHZ;1机器周期=1us(65536-15536)//*1us=50ms定时50ms*20=1s
TH1=0x00;
TL1=0X00;//
EA=1;
ET0=1;
TR0=1;
ET1=1;
TR1=1;
fre=1;
while
(1)
{
wan=count/10000;
qian=count/1000%10;
bai=count/100%10;
shi=count/10%10;
ge=count%10;
display(wan,qian,bai,shi,ge);
}
}
voidtimer()interrupt1
{
fre=~fre;
counter++;
if(counter==20)
{
count=TH1*256+TL1;
}
TH0=0x3C;
TL0=0xB0;
}
voiddisplay(unsignedcharwan,unsignedcharqian,unsignedcharbai,unsignedcharshi,unsignedcharge)
{
P2=0x01;
P0=duanma[ge];
delay(300);
P2=0x02;
P0=duanma[shi];
delay(300);
P2=0x04;
P0=duanma[bai];
delay(500);
P2=0x08;
P0=duanma[qian];
delay(500);
P2=0x10;
P0=duanma[wan];
delay(500);
}
voiddelay(unsignedinti)
{
unsignedinta;
for(a=i;a>0;a--);
}