只需一步,快速开始
热门: 51单片机 | 24小时必答区 | 单片机教程 | 单片机DIY制作 | STM32 | Cortex M3 | 模数电子 | 电子DIY制作 | 音响/功放 | 拆机乐园 | Arduino | 嵌入式OS | 程序设计
本系统主要由放大模块、施密特整形模块、单片机模块和HD7279驱动显示模块组成。通过软件判断高频或低频,单片机计数脉冲周期或个数来动态测量所求频率,并通过7279数码管显示出来。得到系统的总体结构框图如图2.1所示
本次设计的数字频率计是以STC89C51 单片机为核心, 被测周期信号通过放大整形电路经过操作形成特定周期的窄脉冲,送到单片机的T0(P3.4)口外脉冲触发计数。
以1KHz为中界频率,1000Hz-9999Hz为高频段采用测频法,记下1s脉冲个数 c=256 TH0+TL0 (式2-3)
1Hz-999Hz为低频段采用测周法,计算10个脉冲所用时间T
T=溢出次数×溢出时间+计数值×1us
最后,将被测信号频率通过显示电路读取数值。
(11)时钟源:外部高精度晶体/ 时钟,内部R/C 振荡器。用户在下载用户程序时,可选择是使用内部R/C 振荡器还是外部晶体/ 时钟。常温下内部R/C 振荡器频率为:5.2MHz ~6.8MHz。精度要求不高时,可选择使用内部时钟,因为有温漂,请选4MHz ~8MHz
(13)外部中断2 路,下降沿中断或低电平触发中断,Power Down 模式可由外部中断低电平触发中断方式唤醒
(14)PWM( 4 路)/ P C A(可编程计数器阵列),也可用来再实现4个定时器或4个外部中断(上升沿中断/ 下降沿中断均可支持)
⑴ ALE/PROG:地址锁存允许/片内EPROM编程脉冲 ① ALE功能:用来锁存P0口送出的低8位地址 ② PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。
80C51共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚。 P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。
手动按钮复位需要人为在复位输入端RST上加入高电平(图3.2)。一般采用的办法是在RST端和正电源Vcc之间接一个按钮。当人为按下按钮时,则Vcc的+5V电平就会直接加到RST端。手动按钮复位的电路如所示。由于人的动作再快也会使按钮保持接通达数十毫秒,所以完全能够满足复位的时间要求。
图3.2 手动复位电路
2、上电复位
上电复位电路如图3.3所示,只要在RST复位输入引脚上接一电容至Vcc端,下接一个电阻到地即可。对于CMOS型单片机,由于在RST端内部有一个下拉电阻,故可将外部电阻去掉,而将外接电容减至1µF。上电复位的工作过程是在加电时,复位电路通过电 容加给RST端一个短暂的高电平信号,此高电平信号随着Vcc对电容的充电过程而逐渐回落,即RST端的高电平持续时间取决于电容的充电时间。为了保证系统能够可靠地复位,RST端的高电平信号必须维持足够长的时间。上电时,Vcc的上升时间约为10ms,而振荡器的起振时间取决于振荡频率,如晶振频率为10MHz,起振时间为1ms;晶振频率为1MHz,起振时间则为10ms。在图2的复位电路中,当Vcc掉电时,必然会使RST端电压迅速下降到0V以下,但是,由于内部电路的限制作用,这个负电压将不会对器件产生损害。另外,在复位期间,端口引脚处于随机状态,复位后,系统将端口置为全“l”态。如果系统在上电时得不到有效的复位,则程序计数器PC将得不到一个合适的初值,因此,CPU可能会从一个未被定义的位置开始执行程序
图3.3 上电复位电路
对于小电压信号,数字频率计需要把微弱信号放大,故本课设采用LM324放大器,优点是使用广泛,价格便宜。
3、读键盘指令(15H):该指令从HD7279A读出当前的按键代码。与复位指令不同,此命令的前一个字节15H为微控制器传送到HD7279A的指令,而后一个字节d0—d7则为HD7279A返回的按键代码,本次采用4X4键盘,则各键键盘代码分别定义为04H—07H。此指令的前半段,HD7279A的DATA引脚处于高阻输入状态,以接受来自微处理器的指令;在指令的后半段,DATA引脚从输入状态转为输出状态,输出键盘代码的值。其时序图如图3.7所示
另外,此处对外部事件计数脉冲的占空比(即脉冲的持续宽度)无特殊要求,从T0口输入脉冲信号,T0可实现对脉冲个数的计数
1、内存工作单元初始化:
标志位初始化:设置中界频率为1000HZ,测频法、测周法标志位均清零。读数标志初始化测频法中断次数、测周法溢出次数清零,个、十、百、千位清零
2、显示模块初始化:7279复位
3、定时中断0和定时中断1初始化:
EA=1;中断使能,ET0=1;定时中断0溢出中断,ET1=1;定时中断1溢出中断
4、显示初始化,系统启动时显示初始化为所有数码管都显示0000。
在调试过程中所使用的测试仪器仪表和工具包括:
函数信号发生器一个;万用表一个;稳压电源一个;最小系统板一块;
Keil C51 单片机编译软件;示波器一台。
在确定好电路、领好元器件后即开始对布局。分别按放大电路和整形电路进行焊接。函数发生器产生的三角波、正弦波通过放大整形电路后输出到示波器,在示波器中可以看到频率几乎不变的完美的方波。后拔出示波器探头,接上单片机频率计及显示。
第一次调试中,7279数码管一直显示71Hz不变化,无论如何改变频率,其显示值保持不变,怀疑是程序某处错误,陷入了死循环中。后来检查程序发现调用测频法和测周法的子程序中标志位最开始没有清零,导致第一次读值后频率标志未清零,单片机判断计数结束,使第二次读值的子程序无法进行,也就无法显示改变的频率值。后来修改语句,频率计能正常动态计数。
本次实验在稳压电源的正负极增加1uf电容到地滤除电源中高频成分分量,起了稳定电路系统的作用。
0.2%
4.函数信号发生器产生的信号波频率不稳定
5.由于实验室单片机使用的时间比较长,受制造、测量、条件变化的影响,实际晶振频率与标称值的不符
6.外界噪声等的干扰
1、改进实验方案,使用等精度测量可能更较精确测量结果
2、在相同条件下和短时期内,对同一被测量进行多次重复测量
3、换用较高精度的晶振,选用稳定性良好的函数信号发生器
在设计的过程中,我不断的学习,思考和同学间相互讨论,运用科学的分析问题的方法解决遇到的困难,掌握单片机系统一般的开发流程,学会对常见问题的处理方法,积累设计系统的经验,充分发挥教学与实践的结合。全能提高个人系统开发的综合能力,开拓了思维,为今后能在相应工作岗位上的工作打下了坚实的基础。
调试阶段可以说是这次设计中最重要的部分,因为以前的只是理论而不是真正的实体。所以说它是最重要的。调试阶段我们遇到的问题有:对编写代码不熟悉;因为硬件和软件模块是分开做而后又组装到一起的,所以兼容性不是很好(也就是不能融合为一个整体,直接接在函数信号发生器上能行但是接硬件部分就会出现问题,没有预期现象出现);针对以上几个问题我们作出了以下的“对策”:软件不熟悉,就借来参考书,一步一步的对着学,而且上网查资料和芯片使用说明,所以随着接触的增加软件也就越来越熟悉。另外在电路方面需要进一步的设计和修改。
查看全部评分
使用道具 举报
本版积分规则 发表回复 回帖后跳转到最后一页
手机版|小黑屋|51黑电子论坛 | 管理员QQ:125739409;技术交流QQ群281945664
Powered by 单片机教程网