欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    数字频率计(共17页).doc

    • 资源ID:14482096       资源大小:333.50KB        全文页数:17页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数字频率计(共17页).doc

    精选优质文档-倾情为你奉上单片机课程设计题 目: 数字频率计 班 级: 电气084 姓 名: 王金龙 学 号: 指导教师: 路小娟 设计时间: 2011.1.14 评语:成绩 目 录一 引言.21.1课程设计的目的.21.2课程设计的意义.2二 课程设计课题.2三 基本原理.2四 功能及按键说明.2五 主要硬件介绍.35.1 89C51芯片介绍.35.2 六位LED显示器4六 程序流程图.55667八 源程序代码7九 仿真结果与分析1014十一 参考文献15数字频率计一、引言1.1课程设计的目的通过本次课程设计,巩固和加深“单片机原理与应用”中的理论知识,了解和应用proteus仿真系统,结合软硬件,基本掌握单片机的应用的一般设计方法,提高电子电路的设计和实验能力,并且提高自身查找和运用资料能力。1.2课程设计的意义通过本次课程设计,使得理论知识系统化,从中或得一些实战工作经验,提高个人与团体指挥的作用。二、课程设计课题频率计系统设计:用AT89C51单片机设计一个六位LED显示的频率计。三、基本原理本系统采用测量频率法,可将频率脉冲直接连接到AT89C51的T0端,将T/C1用做定时器。T/C0用做计数器。在T/C1定时的时间里,对频率脉冲进行计数。在1S定时内所计脉冲数即是该脉冲的频率。 图1:测量时序图由于T0并不与T1同步,并且有可能造成脉冲丢失,所以对计数器T0做一定的延时,以矫正误差。具体延时时间根据具体实验确定。四、功能及按键说明 P0.0P0.5为LED位选择,其中P0.5指向十万位P0.0指向个位,RP1为P0口的上拉电阻。P2.0P2.7为LED的段位选择,对应LED的A,B,C,D,E,F,G,DP。P3.4为待测频率入口。五、主要硬件介绍5.1 89C51芯片介绍许多由关硬件设计中都使用到单片机89C51,其功能7比以往的单片机强大的多。89C51引脚图如图3-2所示。图2: 89C51引脚图芯片引脚功能:主电源引脚Vcc和VssVcc(40脚):接5V电压;Vss(20脚):接地;89C51晶振接法如图3-3。图3:89C51晶振接法图选用6MHz频率的晶体,允许输入的脉冲频率为250kHz。电容的大小范围为20pF40pF,本设计选用30pF电容。5.2 六位led显示器单片机应用系统中常使用LED作为显示器,在需多位LED显示时,为了简化电路,降低成本,常将所有门的选线并联在一起,由一个8位I/O口控制,而共阴(阳)I/O线受控制,实现各部分时选通。图4:6位LED动态显示接口电路由于所有6位选线皆由一个I/O口控制,因此,在每一瞬间,6位LED会显示相同的字符。要想每位显示不同的字符,就必须采用扫描方阵轮流点亮各位LED,即在每一瞬间只使某一位显示字符。在此瞬间,段选控制I/O口输出相应字符段选码(字型码),而位选则控制I/O口在该显示相应字符。如此轮流,使每位分时显示该位应显示字符,根据人眼视觉特性,当LED所加信号频率大于50Hz时,人眼不能感觉其变化,所以每位显示的间隔不能超过20ms,也就是说要在20ms之内分时的点亮所有LED,LED越多所分的时间越短,亮度就会不足;如果增加点亮时间,又会使扫描频率下降,有闪烁感容易造成人眼的彼劳,这种方式就是我们大家常用的动态扫描方式,也是此种显示器的主要工作方式。六、程序流程图6.1 主程序main流程图2、定时50ms中断子程序xtimer1()流程图3、显示子程序display流程图七、原理图图5:频率计原理图八、源程序代码/*简易数字频率计:T1定时计器,T0计数器,由P34(/T0)口输入待测频率*/*T1定时1S,在这1S内T1的计数值就是待测的频率值。*/#include<reg52.h>/头文件#include<intrins.h>/头文件#define uchar unsigned char/宏定义#define uint unsigned int/宏定义sfr16 DPTR=0x82;/定义DPTRbit status_F=1;/状态标志位uint aa, qian, bai,shi,ge,bb,wan,shiwan; /定义变量uchar cout;unsigned long temp;/定义长整型变量/*数码管显示0-9*/uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/*子函数声明*/void delay(uint z);void init();void display(uint shiwan,uint wan,uint qian,uint bai,uint shi,uint ge);void xtimer0();void xtimer1();/*主函数*/void main()P0=0XFF; /初始化P0口init();/调用定时器,计数器初始化while(1)if(aa=19)/定时20*50MS=1Saa=0;/定时完成一次后清0status_F=1;/完成计数 TR1=0; /关闭T1定时槛,定时1S完成delay(46); /延时较正误差TR0=0;/关闭T0DPL=TL0; /计数量的低8位DPH=TH0;/计数量的高8位temp=DPTR+cout*65535; /计数值放入变量shiwan=temp%/;wan=temp%/10000;qian=temp%10000/1000;/显示千位bai=temp%1000/100;/显示百位shi=temp%100/10;/显示十位ge=temp%10;/显示个位display(shiwan,wan,qian,bai,shi,ge); /调用显示函数/*定时器,计数器初始化*/void init()temp=0;/变量赋初值aa=0;cout=0;IE=0X8A;/开中断,T0,T1中断TMOD=0x15;/T1为定时器工作于方式1,T0为计数器工作于方式1TH1=0x3c;/定时器赋高8初值 , 12M晶振TL1=0xb0;/定时器赋低8初值 , 12M晶振TH0=0;/计数器赋高8初值初值TL0=0;/计数器赋低8初值TR1=1;/开定时器1TR0=1;/开计数器0/*显示子函数*/void display(uint shiwan,uint wan,uint qian,uint bai,uint shi,uint ge)P0=0xdf;/P0口是位选 1101 1111 改成 1111 1101 =0XDFP2=tableshiwan;/显示shiwan位delay(5);P0=0xef;/P0口是位选 1110 1111 改成 1111 1110 =0XFEP2=tablewan;/显示wan位delay(3);P0=0xf7;/P0口是位选 1111 01111 改成 0111 1111=0X7F P2=tableqian;/显示千位delay(3);P0=0xfb;/P0口是位选 1111 1011 改成 1011 1111=0XBFP2=tablebai;/显示百位delay(3);P0=0xfd; /P0口是位选 1111 1101 改成 1101 1111 =0XDFP2=tableshi;/显示十位delay(3);P0=0xfe;/P0口是位选 1111 1110 改成 1110 1111 =0XEFP2=tablege;/显示个位delay(3);/*定时中断子函数*/void xtimer1() interrupt 3TH1=0x3c;/定时器赋高8初值TL1=0xb0;/定时器赋低8初值aa+;/*计数器中断子函数*/void xtimer0() interrupt 1 cout+;/*延时子函数。延时1MS*/void delay(uint z)uint i,j;for(i=0;i<z;i+)for(j=0;j<110;j+);/j上限为125九、仿真结果与分析此简易频率计的特点是由于加入了延时补偿,对于低频率脉冲能够准确计数,对于较高频率,则频率越高,误差越大。但总体来讲,误差相对较小。1、在13257HZ,测量结果是准确的,如图6所示1HZ,1KHZ,3257HZ的仿真图:图6:1HZ,1KHZ,3257HZ的仿真图2、在3258HZ9.5KHZ的时候测量有误差并且慢慢减少。在3258HZ时候达到最大误差0.03069%,如图。9.5KHZ时候达到最小误差0.01368%。如图:图7:测量3258HZ的仿真结果图8:测量95013HZ的仿真结果3、从9.6KHZ999.7629KHZ,测量误差越来越大,在9.6KHZ为0.01458%,在999.7629KHZ时为0.0237%图9:测量9.6KHZ的仿真结果图10:测量999.7629KHZ的仿真结果十、课程设计心得体会在单片机应用系统设计时,必须先确定该系统的技术要求,这是系统设计的依据和出发点,整个设计过程都必须围绕这个技术要求来工作。在设计时遵循从整体到局部也即自上而下的原则。把复杂的问题分解为若干个比较简单的、容易处理的问题,分别单个的加以解决。在设计开始时,我们应根据应用的和设计要求提出设计的总体任务,绘制硬件和软件的总框图。将总任务分解成可以独立表达的子任务,这些子任务再向下分,直到每个子任务足够简单,能够直接而容易的实现为止。在程序调试时应按各个功能模块分别调试。在程序设计时,正确合理的设计是非常重要的,比如说,有些执行程序以实时中断方式调用时,如果不正确的设计,有可能陷入无休止的中断申请,使程序无法正常工作。正确的程序设计包括程序的结构是否合理,一些循环结构和循环指令的使用是否恰当,能否使用较少的循环次数或较快的指令,是否能把某些延迟等待的操作改为中断申请服务,能否把某些计算方法和查表技术适当简化等。另外程序的设计要具有可扩展性,程序的结构要标准化,便于阅读、修改和扩充。通过本次课程设计,我更加地了解和掌握单片机的基本知识和基本的编写程序,也更加深入地了解单片机这么课程,掌握汇编语言的设计和调试方法,熟悉proteus系统的操作及其功能应用,更加熟悉设计的流程及程序的组合、调用和系统的调试。在程序设计中,要善于调用或参考已有程序并加以修改,得到自己想要的能够实现硬件系统性能,这样可以节省很多时间,比如说,本次设计中的那个额外增加的功能脉冲计数,就是调用proteus实验指导书里的程序并做一些修改而实现的。十一、参考文献1 苏家.柏荣 ,志锋,单片机原理及应用技术,等教育出版社;2 李群芳,肖看.单片机原理、接口及应用.清华大学出版社;4 赫建国,刘立新,党剑华.基于单片机的频率计设计J.西安邮电学院学报;5 陈敬远.数字频率计的VHDL设计J.浙江传媒学院学报;3 proteus系列单片机微机仿真实验系统 实验指导书(附录);专心-专注-专业

    注意事项

    本文(数字频率计(共17页).doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开