单片机简易频率计课程设计报告.docx
- 文档编号:9338457
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:15
- 大小:403.36KB
单片机简易频率计课程设计报告.docx
《单片机简易频率计课程设计报告.docx》由会员分享,可在线阅读,更多相关《单片机简易频率计课程设计报告.docx(15页珍藏版)》请在冰豆网上搜索。
单片机简易频率计课程设计报告
单片机课程设计报告
简易频率计设计
学院:
班级:
姓名:
学号:
指导老师:
***
完成日期:
2012-03-25
摘要
随着电子信息产业的不断发展,信号频率的测量在科技研究和实际应用中的作用日益重要。
传统的频率计通常是用很多的逻辑电路和时序电路来实现的,这种电路一般运行较慢,而且测量频率的范围较小。
考虑到上述问题,本文设计一基于单片机设计频率计。
本文从频率计的原理出发,介绍了基于单片机的频率计的设计方案,选择了实现系统的各种电路元器件,并对硬件电路进行了仿真,并焊制出了实际的电路板,测试表明与理论大体相符。
关键字:
单片机;频率计;测量;AT89C51
第一章频率计设计概述
本频率计的设计以AT89C51单片机为核心,利用他内部的定时/计数器完成待测信号频率的测量。
单片机AT89C51内部具有2个16位定时/计数器,定时/计数器的工作可以由编程来实现定时、计数和产生计数溢出时中断要求的功能。
设计将定时/计数器0设置工作在定时方式,定时/计数器1设置工作在计数方式。
在定时器工作方式下,在被测时间间隔内,每来一个机器周期,计数器自动加1(使用12MHz时钟时,每1μs加1),这样以机器周期为基准可以用来测量时间间隔。
在计数器工作方式下,加至外部引脚的待测信号发生从1到0的跳变时计数器加1,这样在计数闸门的控制下可以用来测量待测信号的频率。
外部输入在每个机器周期被采样一次,这样检测一次从1到0的跳变至少需要2个机器周期(24个振荡周期),所以最大计数速率为时钟频率的1/24(使用12MHz时钟时,最大计数速率为500kHz)。
第二章AT89C51单片机及其引脚说明:
89C51是一种高性能低功耗的采用CMOS工艺制造的8位微控制器,它提供下列标准特征:
4K字节的程序存储器,128字节的RAM,32条I/O线,2个16位定时器/计数器,一个5中断源两个优先级的中断结构,一个双工的串行口,片上震荡器和时钟电路。
引脚说明:
·VCC:
电源电压
·GND:
地
·P0口:
P0口是一组8位漏极开路型双向I/O口,作为输出口用时,每个引脚能驱动8个TTL逻辑门电路。
当对0端口写入1时,可以作为高阻抗输入端使用。
当P0口访问外部程序存储器或数据存储器时,它还可设定成地址数据总线复用的形式。
在这种模式下,P0口具有内部上拉电阻。
在EPROM编程时,P0口接收指令字节,同时输出指令字节在程序校验时。
程序校验时需要外接上拉电阻。
·P1口:
P1口是一带有内部上拉电阻的8位双向I/O口。
P1口的输出缓冲能接受或输出4个TTL逻辑门电路。
当对P1口写1时,它们被内部的上拉电阻拉升为高电平,此时可以作为输入端使用。
当作为输入端使用时,P1口因为内部存在上拉电阻,所以当外部被拉低时会输出一个低电流(IIL)。
·P2口:
P2是一带有内部上拉电阻的8位双向的I/O端口。
P2口的输出缓冲能驱动4个TTL逻辑门电路。
当向P2口写1时,通过内部上拉电阻把端口拉到高电平,此时可以用作输入口。
作为输入口,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出电流(IIL)。
P2口在访问外部程序存储器或16位地址的外部数据存储器(例如MOVX@DPTR)时,P2口送出高8位地址数据。
在这种情况下,P2口使用强大的内部上拉电阻功能当输出1时。
当利用8位地址线访问外部数据存储器时(例MOVX@R1),P2口输出特殊功能寄存器的内容。
当EPROM编程或校验时,P2口同时接收高8位地址和一些控制信号。
·P3口:
P3是一带有内部上拉电阻的8位双向的I/O端口。
P3口的输出缓冲能驱动4个TTL逻辑门电路。
当向P3口写1时,通过内部上拉电阻把端口拉到高电平,此时可以用作输入口。
作为输入口,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出电流(IIL)。
P3口同时具有AT89C51的多种特殊功能,具体如下表1所示:
端口引脚
第二功能
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
(外部中断0)
P3.3
(外部中断1)
P3.4
T0(定时器0)
P3.5
T1(定时器1)
P3.6
(外部数据存储器写选通)
P3.7
(外部数据存储器都选通)
表1P3口的第二功能
·RST:
复位输入。
当振荡器工作时,RST引脚出现两个机器周期的高电平将使单片机复位。
·ALE/
:
当访问外部存储器时,地址锁存允许是一输出脉冲,用以锁存地址的低8位字节。
当在Flash编程时还可以作为编程脉冲输出(
)。
一般情况下,ALE是以晶振频率的1/6输出,可以用作外部时钟或定时目的。
但也要注意,每当访问外部数据存储器时将跳过一个ALE脉冲。
·
:
程序存储允许时外部程序存储器的读选通信号。
当AT89C52执行外部程序存储器的指令时,每个机器周期
两次有效,除了当访问外部数据存储器时,
将跳过两个信号。
·
/VPP:
外部访问允许。
为了使单片机能够有效的传送外部数据存储器从0000H到FFFH单元的指令,
必须同GND相连接。
需要主要的是,如果加密位1被编程,复位时EA端会自动内部锁存。
当执行内部编程指令时,
应该接到VCC端。
·XTAL1:
振荡器反相放大器以及内部时钟电路的输入端。
·XTAL2:
振荡器反相放大器的输出端。
在本次设计中,采用89C51作为CPU处理器,充分利用其硬件资源,结合D触发器CD4013,分频器CD4060,模拟转换开关CD4051,计数器74LS90等数字处理芯片,主要控制两大硬件模块,量程切换以及显示模块。
第三章分频电路
本次设计采用的是脉冲定时测频法,由于考虑到单片机的定时计数器得计数
能力有限,无法对过高频进行测量,所以我们对待测信号进行了分频,这样能提高测量频率的范围,还能相应的提高频率测量的精度。
所以我们需要把待测信号进行分频。
其原理图如3.3
3.34040原理图
第四章显示电路
我们测量的频率最终要显示出来八段LED数码管显示器由8个发光二极管组成。
基中7个长条形的发光管排列成“日”字形,另一个圆点形的发光管在数码管显示器的右下角作为显示小数点用,它能显示各种数字及部份英文字母。
LED数码管显示器有两种形式:
一种是8个发光二极管的阳极都连在一起的,称之为共阳极LED数码管显示器;另一种是8个发光二极管的阴极都连在一起的,称之为共阴极LED数码管显示器。
如下图所示。
共阴和共阳结构的LED数码管显示器各笔划段名和安排位置是相同的。
当二极管导通时,对应的笔划段发亮,由发亮的笔划段组合而显示的各种字符。
8个笔划段hgfedcba对应于一个字节(8位)的D7、D6、D5、。
D4、D3、D2、D1、D0,于是用8位二进制码就能表示欲显示字符的字形代码。
在单片机应用系统中,数码管显示器显示常用两种办法:
静态显示和动态扫
描显示。
所谓静态显示,就是每一个数码管显示器都要占用单独的具有锁存功能
的I/O接口用于笔划段字形代码。
这样单片机只要把要显示的字形代码发送到接口电路,就不用管它了,直到要显示新的数据时,再发送新的字形码,因此,使用这种办法单片机中CPU的开销小,能供给单独锁存的I/O接口电路很多。
在单片机系统中动态扫描显示接口是单片机中应用最为广泛的一种显示方式之一。
其接口电路是把所有显示器的8个笔划段a-h同名端连在一起,而每一个显示器的公共极COM是各自独立地受I/O线控制。
CPU向字段输出口送出字形码时,所有显示器接收到相同的字形码,但究竟是那个显示器亮,则取决于COM端,而这一端是由I/O控制的,所以我们就能自行决定何时显示哪一位了。
而所谓动态扫描就是指我们采用分时的办法,轮流控制各个显示器的COM端,使各个显示器轮流点亮。
在轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的(约1ms),但由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。
其原理图3.4
3.4显示电路原理图
第五章系统整体原理图
第六章系统软件设计
1.测频软件实现原理
测频软件的实现是基于电路系统来进行设计的。
本次设计采用的是脉冲定时
测频法,所以在软件实现上基本遵照系统的设计原理,进行测频。
本次软件设计语言采用C语言,在电脑上编译通过后即可下载到电路上的实际电路中,即可实现频率的测量。
2.软件流程图
While
(1)
3.程序设计
#include
bitint_flag;
unsignedcharvolatileT0Count;
unsignedcharvolatileT1Count;
unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsignedcharcodetemp[]={0xfe,0xfd,0xfb,0xf7};
unsignedlongsum;
unsignedcharLed[4];
voiddelay(unsignedintnum){
while(--num);
}
voidinit(void){
TMOD=0x15;//TMOD=0x51;//T1定时,T0计数
TH1=(65536-50000)/256;//TH0=(65536-50000)/256;//定时50ms
TL1=(65536-50000)%256;//TL0=(65536-50000)%256;
TH0=0x00;//TH1=0x00;
TL0=0x00;//TL1=0x00;
}
voiddisp(void){
unsignedchari;
for(i=0;i<4;i++)
{
P2=temp[i];//片选
P0=table[Led[i]];//取数据显示
delay(100);//延时1毫秒
}
}
voidmain(void){
EA=1;
init();
TR0=1;
TR1=1;
ET1=1;
ET0=1;
while
(1){
if(int_flag==1){
int_flag=0;
sum=TL0+TH0*256+T0Count*65536;//计算脉冲个数
Led[3]=sum%10000/1000;//显示千位
Led[2]=sum%1000/100;//显示百位
Led[1]=sum%100/10;//显示十位
Led[0]=sum%10;//显示个位
T1Count=0x00;
T0Count=0;
TH0=0x00;
TL0=0x00;
TR0=1;
}
disp();
}
}
voidint_t1(void)interrupt3{
TH1=(65535-50000)/256;
TL1=(65536-50000)%256;
T1Count++;
if(T1Count==20){
TR0=0;
int_flag=1;
T1Count=0x00;
}
}
voidint_T0(void)interrupt1
{
T0Count++;
}
第七章仿真测试结果
(1)复位操作
(2)频率为9HZ,频率捕捉很准
(3)频率为99HZ,频率捕捉很准
(4)频率为999HZ,频率捕捉较准,产生一定误差
(5)频率为9999HZ,频率捕捉较准,产生较大误差
第八章单片机课程设计原材料清单
结束语
1.结论
在单片机应用系统设计时,必须先确定该系统的技术要求,这是系统设计的依据和出发点,整个设计过程都必须围绕这个技术要求来工作。
在设计时遵循从整体到局部也即自上而下的原则。
把复杂的问题分解为若干个比较简单的、容易处理的问题,分别单个的加以解决。
将总任务分解成可以独立表达的子任务,这些子任务再向下分,直到每个子任务足够简单,能够直接而容易的实现为止。
在程序调试时应按各个功能模块分别调试。
在程序设计时,正确合理的设计是非常重要的,正确的程序设计包括程序的结构是否合理,一些循环结构和循环指令的使用是否恰当,能否使用较少的循环次数或较快的指令,是否能把某些延迟等待的操作改为中断申请服务,能否把某些计算方法和查表技术适当简化等。
另外程序的设计要具有可扩展性,程序的结构要标准化,便于阅读、修改和扩充。
通过本次课程设计,我更加地了解和掌握单片机的基本知识和基本的编写程序,也更加深入地了解单片机这么课程,掌握汇编语言的设计和调试方法。
对于认识到自己在知识方面存在的不足,明确今后的学习方向是非常有益的。
在设计过程中,得到了我的指导老师的悉心指导与帮助,在此一并表示衷心的感谢。
2.致谢
衷心感谢罗光明老师、曾段明老师的悉心指导,是你们的帮助让我顺利的完成了课程设计。
同时也感谢给予我帮助的同学!
谢谢你们!
参考文献
[1]李雷等编.《集成电路应用实验》.国防工业出版社2003
[2]李雷等编.《电子技术应用实验教程》.电子科技大学出版社,2006
[3]朱红等编.《电子技术综合实验》.电子科技大学出版社,2005
[4]冯熙昌编.《电子电话机集成电路手册》.人民邮电出版社,1996
[5]李华等编.《MCS-51系列单片机实用接口技术》.北京航空航天大学出版社,1993
[6]徐惠民,《安德宁等编.单片微型计算机原理接口及应用》.北京邮电大学出版社,2000
[7]张毅坤,陈善久,单片微型计算机原理及应用.西安电子科技大学出版社,2002.
[8]张友德,赵志英,徐时亮.单片微机原理应用与实验.复旦大学出版社,2000.
[9]张毅刚,彭善元,董继承.单片机原理及应用.高等教育出版社,2003.
[10]杨恢先,黄辉先.单片机原理及应用.人民邮电出版社,2006.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 简易 频率计 课程设计 报告