电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

频率可调的方波信号发生器设计及电路

7页
  • 卖家[上传人]:
  • 文档编号:42485360
  • 上传时间:2018-06-02
  • 文档格式:DOC
  • 文档大小:228KB
  • / 7 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、频率可调的方波信号发生器设计及电路频率可调的方波信号发生器设计及电路用单片机产生频率可调的方波信号。输出方波的频率范围为 1Hz-200Hz,频率误差比小于 0.5%。要求用“增加”、“减小”2 个按钮改变方波给定频率,按钮每按下一次,给定频率改变的步进步长为 1Hz,当按钮持续按下的时间超过 2 秒后,给定频率以 10 次/秒的速度连续增加(减少),输出方波的频率要求在数码管上显示。用输出方波控制一个发光二极管的显示,用示波器观察方波波形。开机默认输出频率为 5Hz。3.5.1 模块 1:系统设计(1)分析任务要求,写出系统整体设计思路任务分析:方波信号的产生实质上就是在定时器溢出中断次数达到规定次数时,将输出 I/O 管脚的状态取反。由于频率范围最高为 200Hz,即每个周期为 5ms(占空比 1:1,即高电平 2.5ms,低电平 2.5 ms),因此,定时器可以工作在 8 位自动装载的工作模式。涉及以下几个方面的问题:按键的扫描、功能键的处理、计时功能以及数码管动态扫描显示等。 问题的难点在按键连续按下超过 2S 的计时问题,如何实现计时功能。系统的整体思路:主程序在初始化变量和

      2、寄存器之后,扫描按键,根据按键的情况执行相应的功能,然后在数码显示频率的值,显示完成后再回到按键扫描,如此反复执行。中断程序负责方波的产生、按键连续按下超过 2S 后频率值以 10Hz/s 递增(递减)。(2)选择单片机型号和所需外围器件型号,设计单片机硬件电路原理图采用 MCS51 系列单片机 At89S51 作为主控制器,外围电路器件包括数码管驱动、独立式键盘、方波脉冲输出以及发光二极管的显示等。数码管驱动采用 2 个四联共阴极数码管显示,由于单片机驱动能力有限,采用 74HC244 作为数码管的驱动。在 74HC244 的 7 段码输出线上串联 100 欧姆电阻起限流作用。独立式按键使用上提拉电路与电源连接,在没有键按下时,输出高电平。发光二极管串联 500 欧姆电阻再接到电源上,当输入为低电平时,发光二极管导通发光。图 3-14 方波信号发生器的硬件电路原理图(3)分析软件任务要求,写出程序设计思路,分配单片机内部资源,画出程序流程图软件任务要求包括按键扫描、定时器的控制、按键连续按下的判断和计时、数码管的动态显示。程序设计思路:根据定时器溢出的时间,将频率值换算为定时器溢出的

      3、次数(T1_over_num)。使用变量(T1_cnt)暂存定时器 T1 的溢出次数,当达到规定的次数(T1_over_num)时,将输出管脚的状态取反达到方波的产生。主程序采用查询的方式实现按键的扫描和数码管的显示,中断服务程序实现方波的产生和连续按键的计时功能。单片机内部资源分配:定时器 T1 用来实现方波的产生和连续按键的计时功能,内部变量的定义: hz_shu:设定的频率数; T1_over_num: 根据设定频率计算后的定时器溢出的次数值; T1_cnt:定时器溢出次数;sec_over_num: 计时 1s 的定时器溢出的次数;second:连续按键的计时;state_val:连续按下的标志 0=按键已经弹起;1=按键一直按下;led_seg_code:0-9 数字的数码管 7 段码。主程序和中断服务程序如图 3-15,3-16 所示。图 3-15 主程序的流程图(4)设计系统软件调试方案、硬件调试方案及软硬件联合调试方案软件调试方案:伟福软件中,在“文件新建文件”中,新建 C 语言源程序文件,编写相应的程序。在“文件新建项目”的菜单中,新建项目并将 C 语言源程序文件包括

      4、在项目文件中。在 “项目编译”菜单中将 C 源文件编译,检查语法错误及逻辑错误。在编译成功后,产生以 “*.hex”和“*.bin” 后缀的目标文件。硬件调试方案:在设计平台中,将单片机的 P1.0-P1.1 分别与 2 个独立式键盘通过插线连接起来,将 P3.0与脉冲输出连接起来。在伟福中将程序文件编译成目标文件后,将下载线安装在实验平台上,运行“MCU 下载程序”,选择相应的 flash 数据文件,点击“编程”按钮,将程序文件下载到单片机的 Flash 中。然后,上电重新启动单片机,检查所编写的程序是否达到题目的要求,是否全面完整地完成试题的内容。3.5.2 模块 2:程序设计/晶振:12M T1-计时 250 微秒溢出中断一次;P1.0 P1.1 为增加、减少键 P3.0 输出方波/*变量的定义:hz_shu: 设定的频率数T1_over_num: 根据设定频率计算后的,定时器溢的出次数值T1_cnt: 定时器计数溢出数sec_over_num: 计算 1s 内的计数second: 连续按键的计时state_val: 连续按下的标志 0=按键已经弹起;1=按键一直按下去led_s

      5、eg_code: 数码管 7 段码*/#include “reg51.h“#include “math.h“sbit pulse_out=P30;/-unsigned char data hz_shu,second,key_val,key_val_old;unsigned int data sec_over_num;unsigned int data T1_cnt,T1_over_num;unsigned char data state_val; char code led_seg_code10=0x3f,0x06,0x05b,0x04f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/led_seg_code0-9代表 0-9 的 7 段码/-void delay(unsigned int i)/延时 while(-i);/-unsigned char scan_key() unsigned char i,k;i=P1;if (i=0xff) k=255; /无键按下else /有键按下 delay(10); /延时去抖动if(i!=P1)k=255;else swit

      6、ch (i) case 0xfe: k=0; break; /case 0xfd: k=1; break;return k;/-void led_show()unsigned char i;i=hz_shu%10; /显示个位P0=led_seg_codei;P2=0xfe;delay(10);i=hz_shu%100/10; /显示十位P0=led_seg_codei;P2=0xfd;delay(10);i=hz_shu%1000/100; /显示百位P0=led_seg_codei;P2=0xfb;delay(10);/-unsigned int get_T1_over_num(unsigned char p) /p 为频率数unsigned int *k,h;double f;f=(double)p; /转化为浮点数f=0.5/f; /半个周期的时间f=f/0.00025; /中断溢出数=f/0.00025;h=f; /取整/四舍五入 if (modf(f,k)=0.5) h=h+1; return h;/* C51 有专门的库文件 MATH.H,里面有个函数它是这样定义的 ex

      7、tern float modf(float x, float *ip);调用它之后,整数部分被放入*ip, 小数部分作为返回值。*/-void timer1() interrupt 3 /T1 中断 T1_cnt+;if(T1_cntT1_over_num) /半周期的计数到达 T1_cnt=0;pulse_out=!pulse_out; /反复取反,产生方波if(state_val=1)/连续按键 if (sec_over_num10) hz_shu=hz_shu-10; /减 10/秒else hz_shu=1;T1_over_num=get_T1_over_num(hz_shu);break;TR1=1;/-main()pulse_out=0; /初始化各变量hz_shu=5;T1_cnt=0;state_val=0;second=0;sec_over_num=0;T1_over_num=get_T1_over_num(hz_shu);/初始化 51 的寄存器TMOD=0x20;/用 T1 计时 8 位自动装载定时模式,T0 计数 p3.4 的脉冲数TH1=0x6; /250 微

      8、秒溢出一次; 250(256-x)*12/12 - x=6TL1=0x6; /200Hz 的半周期为 2.5 毫秒,要溢出中断 10 次EA=1; /开中断ET1=1;TR1=1; /定时器 T1while(1) key_val=scan_key(); /扫描按键if (key_val!=key_val_old) /说明有键按下或弹起key_val_old=key_val; if (key_val!=255) /说明键按下state_val=0; /清除连续按键标志sec_over_num=0; switch (key_val) case 0: /增 1 键hz_shu+;T1_over_num=get_T1_over_num(hz_shu);break;case 1: /减 1 键if(hz_shu=2)hz_shu-;elsehz_shu=1;T1_over_num=get_T1_over_num(hz_shu);break;else /说明键弹起 state_val=0; second=0;else /一直按下或弹起 if (key_val!=255) state_val=1; /连续按键elsestate_val=0; /没有按键按下,一直处于弹起状态led_show(); /数码管显示,动态扫描/-方波发生器-

      《频率可调的方波信号发生器设计及电路》由会员子分享,可在线阅读,更多相关《频率可调的方波信号发生器设计及电路》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.