欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    基于c语言单片机数字频率计课程设计.docx

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

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

    基于c语言单片机数字频率计课程设计.docx

    1、基于c语言单片机数字频率计课程设计课程设计报告课程名称:单片机课程设计 报告题目:数字频率计 学生姓名: 所在学院: 专业班级:学生学号:指导教师:2013 年 12 月 25 日课程设计任务书报告题目数字频率计完成时间2013/12/25学生姓名专业班级指导教师职称讲师总体设计要求和技术要点设计一个数子频率计,要求如下:1完成单脉冲测量,输入脉冲宽度范围是 100 s0.1s。2使用AT89C51单片机的定时器/计数器的定时和计数功能,外部扩展 6位LED数码管,要求累计每秒进入单片机的外部脉冲个数,用 LED数码管显示出来。3.要求(1)被测频率fx v 110Hz,米用测周法,显示频率X

    2、XX . XXX;fx 110Hz,米用测频法,显示频率XXXXXXo(2)利用键盘分段测量和自动分段测量。(3)完成单脉冲测量,输入脉冲宽度范围是 100 s0.1s。(4) 显示脉冲宽度要求如下。Txv 1000 s,显示脉冲宽度xxXo Tx 1000 s,显示脉冲宽度xxxxo工作内谷及时间进度安排1.时间及任务17周-18周周一到周五,上午 8:00-11:40,下午2:00-5:40。(1)17周周一:学生选题,明确任务,指导教师对课题进行讲解,资料检索。(2)17周周二:硬件设计(3)17周周三:硬件仿真(4)17周周四:软件设计(5)17周周五:软件设计(6)18周周一:软件设

    3、计(7)18周周二:综合调试(8)18周周三:书写课程设计报告(9)18周周四:书写课程设计报告(10)18周周五:答辩评分摘要以ATME单片机为核心,利用单片机的外部中断、定时器的计数模式和定时 器的功能对信号发生器产生的脉冲频率进行计数。 且可以根据频率的不同, 单片 机控制选择测周法或者测频法对产生的脉冲波形进行计数, 以进行更加精确的频 率测量。而且可以通过按键来进行频率测量方法的选择。关键词: 数字频率计 ;测频发;测周法;单片机、概述、方案论证1总体方案2.测量方案选择 2三、硬件设计 21.系统功能描述 22.硬件电路设计方框 33 单片机各部分电路 3四、软件设计 41.测频发

    4、 42测周法 43主程序流程图设计 54. 程序 设计14五、课程与心得14六、参考文献15一、 概述数字频率计是采用数字电路制成的实现对周期性变化信号的频率的测量。 数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。 它是一种用十进制数字,显示被测信号频率的数字测量仪器。 它的基本功能是测量正弦信号,方波信号以及其他各种单位时间内变化的物理量。在进 行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示, 测量迅速,精度高,显示直观,所以经常要用到数字频率。二、 方案论证 1总体方案本次设计包含硬件设计与软件设计两部分,根据设计任务要求,采用 AT89S52单

    5、片机,配置时钟电路,复位电路构成单片机最小系统,配置前置放大 电路,人机对话通道中的键盘,数码管显示,从而构成设计要求的单片机应用测 频系统,其结构框图如下图1-1所示:前置放大整形键盘电路图1结构框图2.测量方案选择方案一:直接测频法。直接测频法是把被测频率信号经脉冲形成电路后加到 闸门的一个输入端,只有在闸门开通时间T (以秒计)内,被计数的脉冲被送 到十进制计数器进行计数。设计数器的值为N ,由频率定义式可以计算得到被测 信号频率为:f = N / T 。方案二:高精度恒误差测频法。通过对传统测量方法的研究,结合高精度恒 误差测量原理,设计一种测量精度与被测频率无关的硬件测频电路。本方法

    6、立足 于快速的宽位数高精度浮点数字运算。方案三:倍频法。直接测频法在高频段有着很高的精度。 可以把频率测量范围分成多个频段,使用倍频技术,根据频段设置倍频系数将经整形的低频信号 进行倍频后再进行测量,高频段则进行直接测量。从编程难易及单片机资源利用情况和测量误差角度考虑, 选择方案一,尽管在测量低频段时的相对测量误差较大。但是可以通过增大 T来提高测量精度。3.硬件设计1 系统功能描述本次课程设计主要完成功能有:(1 )按P3A4键可选择测量频率。(2 )按卩3八5键可以选择测量周期。(3 )按P3A6键可以自动选择测频率与测周期。2.硬件电路设计框架根据设计要求,数字频率计整个系统硬件框架图

    7、如下 2-1待测信息图2整机硬件电路框图3.单片机各部分电路(1)P0 口经上拉电阻数据管显示电路(2)卩3八4-卩3八6作为键盘设置端口(3)P3A3作为被测信号输入端口(4)P3A4被测信号接收端1iOpF图3单片机最小系统4.放大整形部分待测信号经过第一级放大后,进入第二级放大限幅电路。LM318是高数运放,工作电压土 5- 20V,输入带宽15MHZ足够处理高频 信号。放大倍数:n=RL2/RL1(RL2用 50K, RL1 用 10K)。限幅原理:限幅电路的稳压管跨接在集成运放的输出端和反相输入端之间。 假设稳压管截止,则集成运放必然工作在开环状态,输出电压不是 +UO M就是-UO

    8、M这样,必将导致稳压管击穿而工作在稳压状态, DZ构成负反馈通路,使反相输入端为“虚地”,限流电阻上的电流iR等于稳压管的电流iZ,输出电压u O= U乙图4放大电路四、软件设计1测频发mJ_Lmi iiiniiii图5测频原理所谓“频率”,就是周期性信号在单位时间(1S)内 变化的次数。若在一定时间间隔T内测得这个周期性信号 的重复变化次数N,则其频率可表示为f=N/T右图其中脉 冲形成电路的作用是将被测信号变成脉冲信号, 其重复频率等于被测频率fx o时间基准信号发生器 提供标准的时间脉冲信号,若其周期为 1s,则门控电路的输出信号持续时间亦准确地等于 1s o闸门电路由标准秒信号进行控制

    9、,当秒信号来到时,闸门开通,被测脉冲信号通过闸门送到计数译码显示电 路。秒信号结束时闸门关闭,计数器停止计数。2测周法主要是利用单片机的定时器计时,测量2个时间参数t1和t2,即如下所示:v11 * 竺 t N高电干日寸可 V氐 电平AT可图6测周法计算信号的一个波形的周期t=t1+t2 则可以求出频率f=1/t3.主程序流程图设计图7流程图4. 程序设计#include #include sbit smgdl=P2A6;sbit smgwl=P2A7;bit LED = P3A3;sbit key1 = P3A4; / 定义按键 1sbit key2 = P3A5; / 定义按键 2sbit

    10、 key3 = P3A6; / 定义按键 3sbit key4 = P3A7; / 定义按键 4unsigned char value,smg; / 保存按键接口状态unsigned char lkey,key_time;unsigned char mode=0;unsigned int time=0;unsigned char num=0;unsigned char key=0;unsigned char time_key=0;unsigned int flag_f=0;unsigned int f_temp1=0;unsigned int f_temp2=0;unsigned int t_

    11、temp1=0;unsigned int t_temp2=0; unsigned char flag_int_0=0;charunsigned char tablewe=0xfe,0xfd,0xfb,0xf7,0xef,0xdf; unsignedtabledu=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77 ,0x7c,0x39,0x5e,0x79,0x71;unsigned char su=0,0,0,0,0,0,0,0;/* DIS_LED */void delay(unsigned int a) / 延时函数unsigned

    12、 int b;unsigned char c; for(b=a;a0;a-)for(c=100;c0;c-);/void display_smg(unsigned char smg,unsigned char value) 显示函数smgwl=1;P0=tablewesmg;smgwl=0;smgdl=1;P0=tableduvalue;smgdl=0;delay(6);/ 延长显示时间 避开视觉暂留 看数码管显示过程 unsigned char ReadKey(void)if(key1 = 0) key_time+;if(key_time = 20)lkey = 1;mode=1;if(ke

    13、y_time 20)key_time = 100;else if(key2 = 0) key_time+;if(key_time = 20)lkey = 2;mode=2;if(key_time 20)key_time = 100;else if(key3 = 0)key_time+;if(key_time = 20)lkey = 3;mode=3;if(key_time 20)key_timeelsekey_time = 0;return lkey;void main()unsigned char k;TMOD = 0x01; /TH0 = (65536 - 2000) / 256;TL0

    14、= (65536 - 2000) % 256;/EA = 1;ET0 = 1;TR0 = 1;/PT0 = 1;100;定时器初始化/EX0 = 1;IT0 = 1;EA = 1;/外部中断初始化while(1)display_smg(0,su2); /数码管显示display_smg(1,su3); /数码管显示display_smg(2,su4); /数码管显示display_smg(3,su5); /数码管显示display_smg(4,su6); /数码管显示display_smg(5,su7); /数码管显示k = ReadKey();LED = LED;/ 脉冲发生void tim

    15、e_1() interrupt 1/ 定 时 器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;su2 = f_temp2;su3 = f_temp1 / 10000;su4 = f_temp1 / 1000 % 10;

    16、su5 = f_temp1 / 100 % 10;su6 = f_temp1 / 10 % 10;su7 = 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;/ su2 = t_temp2 / 1

    17、00; su3 = t_temp1 / 10000; su4 = t_temp1 / 1000 % 10; su5 = t_temp1 / 100 % 10; su6 = t_temp1 / 10 % 10; su7 = 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;外部中断= 0;if(f_temp1 = 50000)f_temp1 = 50

    18、000; f_temp2+; if(f_temp2 = 5000) f_temp1 = f_temp2EX0 = 1;if(mode = 2)TR1 = 1;flag_int_0 = 1;五、结论与心得这次为期两周的课程设计让我受益匪浅。 以前只是对单片机更多的只是一些 感性的,理论上的认识,自己真正动手的时候,才真正理解到其中的精华所在。频率计的设计让我更好的了解如何应用单片机的定时器计数器模块, 其中最 重要的是分析问题解决问题的能力, 在我看来, 无论是在节省硬件资源, 还是提 高数据的准确度来看,都需要下一些功夫把它做到最好。感谢 廖亦凡博士 在此寒冷的天气每天指导我们的单片机的设计,是您的经验 帮助我解决很多技术上的难题。六、参考文献【 1】 杨恢先 黄辉先 单片机原理及应用人民邮电出版社【 2】 大能 南光群 刘金华 单片机课程设计指导书 北京理工大学【3】 谭浩强 C 语言程序设计第二版 清华大学教 师 评 语 及 设 计 成 绩教师评语:课程设计成绩:指导教师:(签名) 日期:年月日


    注意事项

    本文(基于c语言单片机数字频率计课程设计.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

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




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开