1、 共 13 页 第 1 页 贵州大学课程设计 任务要求运用所学单片机原理、模拟和数字电路等方面的知识,设计出一个数字频率计。数字频率计要求如下:1)能对 050kHz 的信号频率进行计数;2)频率测量结果通过 4 位数码管显示(十进制) 。二、课程设计应完成的工作1)硬件部分包括微处理器(MCU)最小系统(供电、晶振、复位)、频率测量和数码管显示部分;2)软件部分包括初始化、频率计算、显示等;3)用 PROTEUS 软件仿真实现;4)画出系统的硬件电路结构图和软件程序框图;内容摘要1.数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。它是一种用十进制数字显示被测信号频率的
2、数字测量仪器。2. 采用 12 MHz 的晶体振荡器的情况下,一秒的定时已超过了定时器可提供的最大定时值。为了实现一秒的定时,采用定时和计数相结合的方法实现。选用定时计数器 TO作定时器,工作于方式 1 产生 50 ms 的定时,再用软件计数方式对它计数 20 次,就可得到一秒的定时。共 13 页 第 2 页 贵州大学课程设计 第 1 节 引言本应用系统设计的目的是通过在“单片机原理及应用”课堂上学习的知识,以及查阅资料,培养一种自学的能力。并且引导一种创新的思维,把学到的知识应用到日常生活当中。在设计的过程中,不断的学习,思考和同学间的相互讨论,运用科学的分析问题的方法解决遇到的困难,掌握单
3、片机系统一般的开发流程,学会对常见问题的处理方法,积累设计系统的经验,充分发挥教学与实践的结合。全能提高个人系统开发的综合能力,开拓了思维,为今后能在相应工作岗位上的工作打下了坚实的基础。1.1 数字频率计概述数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。它是一种用十进制数字显示被测信号频率的数字测量仪器。它的基本功能是测量正弦信号,方波信号及其他各种单位时间内变化的物理量。在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精确度高,显示直观,经常要用到频率计。 1.2 任务分析与设计思路频率的测量实际上就是在 1s 时间内对信号进行计数
4、,计数值就是信号频率。在本次设计使用的 AT89C51 单片机,本身自带有定时器和计数器,单片机的 T0、T1 两个定时/计数器,一个用来定时,另一个用来计数,定时/计数器的工作由相应的运行控制位 TR 控制 ,当 TR 置 1 ,定时 / 计数器开始计数 ;当 TR 清 0 ,停止计数 。在定时 1s 里,计数器计的脉冲数就是频率数,但是由于 1s 超过了 AT89C51 的最大定时,因此我们采用 50ms 定时,在 50ms 内的脉冲数在乘以 14 就得到了频率数,在转换为十进制输出就可。共 13 页 第 3 页 贵州大学课程设计 第 2 节 硬件系统设计2.1 系统组成框图2.2 晶振电
5、路和复位电路XTAL1 与 XTAL2 管脚接两个 22pF 电容和 12 MHz 晶振构成时钟电路。RST 管脚接 10 k电阻,20 F 电容上电复位电路。共 13 页 第 4 页 贵州大学课程设计 2.3 单片机与译码显示选择单片机 AT89C51 是因为有编程灵活、易调试的特点,而且 AT89C51 的引脚较多,利于电路的展。它集成了 CPU,RAM,ROM,定时 器计数器和多功能 I0 口等一台计算机所需的基本功能部件,有 40 个引脚,32 个外部 双向输入输出(I O)端口,同时内含两个外中断口,两个 16 位可编程定时计数器,两个 全双工串行通信口。还提供了对程序进行加密保护的
6、功能。P1 端口与 74HC4511 译码器,输出待显示的个位与十位的数据。P2 端口也与 74HC4511 译码器连接,输出频率计的百位和千位。P3 端口连接信号输入电路。74HC4511 译码器是 4 线七段译码驱动器,在设计中用它来译码并且驱动数码显示管来显示数值,一共需要 4 个 74HC4511。数码管是由若干发光二极管组成显示的字段,当二极管导通时相应的一段发光,控制不同组合的二极管导通,就可以显示出各种字符。对于共阴级显示管,将所有二极管的阴极连接在一起,公共端 3、8 接低电平,当某个字段的阳极接高电平时,对应的字段就点亮。设计中需要用到 4 个七段显示数码管,用来显示频率的数
7、值2.3 输入信号为验证本设计的频率计的准确性与快速性,采用三个不同频率的信号源。第 3 节 系统的软件构成3.1 程序流程图共 13 页 第 5 页 贵州大学课程设计 3.2 初始化ORG 0000HAJMP STARTORG 0600HSTART: MOV TMOD , #51HMOV TH0 , #3CHMOV TL0 , #0B0HMOV IE ,#82HMOV TH1 , #00HMOV TL1 , #00HSETB TR0SETB TR1采用 12 MHz 的晶体振荡器的情况下,一秒的定时已超过了定时器可提供的最大定时值。为了实现一秒的定时,采用定时和计数相结合的方法实现。选用定时
8、计数器 TO 作定时器,工作于方式 1 产生 50 ms 的定时,再用软件计数方式对共 13 页 第 6 页 它计数 20 次,就可得到一秒的定时。贵州大学课程设计 将定时器计数器的方式寄存器 TMOD,用软件赋初值 51H,即 01010001B。这时定时器计数器 1 采用工作方式 1,方式选择位 CT 设为 1,即设 T1 为 16位计数器。定时器计数器 O 采用工作方式 1,C T 设为 0,即设 TO 为 16 位定时器。,所以 T0 初值为 3CB0H.BH356/ms502T/MC16u计 数3.3 频率计算LOOP:SJMP $ ;等待中断ORG 000BH ;入口地址AJMP
9、BTR0ORG 0080HBTR0:CLR TR1 ;停计数CLR TR0MOV A,TH1CJNE A,#01H,NEXT1 ;判断 TH1 的计数是否大于 01H, (500 十六进制为01F4H)SJMP NEXT2NEXT1:JC BEGINJNC NEXT4NEXT2:MOV A,TL1CJNE A,#0F4H,NEXT3 ;等于则比较 TL1 的计数值和#0F4 的大小SJMP NEXT4NEXT3:JC BEGINJNC NEXT4NEXT4:MOV A,#99H ;大于 01F4H 则输出 9999MOV P1,A MOV P2,A由于定时 50ms,采用 4 位显示,最大显示
10、频率是 9999,因此 50ms 里最大计数为500,否则显示不准确,500 的十六进制为 01F4H,当计数器的高八位大于 01 时,计数值大于500 超过最大显示,即直接显示 9999,档高八位等于 01 时,在判断第四位 TL1 与 F4H的大小,大于或等于也直接显示频率 9999,小雨时在进行十进制转换,当高八位小于 01时,在跳转到十六进制转换到十进制的程序中,再显示出来。共 13 页 第 7 页 贵州大学课程设计 3.4 十六进制转为十进制算法设十六进制数为 b b b b4321(1)b 610=C b 610=C b 610=C4 23(b + C +C + C )10=C d
11、 (个位)12343(2) (C +C + C + C + b + b 5+ b 9)10=ed (十位)234 2(3) (e+ b 2)10=fd (百位)31(4)b 4+f=d (千位)0最后转换成的十进制数为 d d d d0123共 13 页 第 8 页 贵州大学课程设计 第 4 节 功能仿真调试4.1 仿真电路图4.2 仿真结果分析本实验采用三个信号源分别为 10000HZ ,4180HZ, 120HZ。分别模拟高频,中频和低频。当开关打在 10000HZ 时,数码管显示 9999,与预期符合,当开关打在 4180hz的信号源上时,显示 4180 也吻合,打在 120HZ 的信号
12、源上时,显示为 120HZ 与共 13 页 第 9 页 100HZ 的跳变,显示有误差, 造成误差的原因有几点:单片机技术速率的限制引起误差。晶振的准确度会影响一秒定时的准确度,从而引起测量误差。过多硬件连接会造成误差。要减小误差,可以采用如下几条措施;选用频率较高和稳定性较好的晶振。测量频率较高的信号时,可以先对信号进行分频,在进行测量。测量频率较低的信号时,可以适当调整程序,延长门限时间。尽可能选择少的硬件来实现所需功能。贵州大学课程设计 第 5 节 附录5.1 元件清单与管脚51 单片机 译码器 数码管共 13 页 第 10 页 5.2 程序清单ORG 0000H贵州大学课程设计 AJM
13、P STARTORG 0600HSTART:MOV TMOD,#51H ;送方式字MOV TH0,#3CH ;T0 赋初值MOV TL0,#0B0HMOV IE,#82H ;开 T0 中断MOV TH1,#00H ;T1 清零MOV TL1,#00HSETB TR0 ;开始计数SETR TR1 LOOP:SJMP $ ;等待中断ORG 000BH ;入口地址AJMP BTR0ORG 0080HBTR0:CLR TR1 ;停计数CLR TR0MOV A,TH1CJNE A,#01H,NEXT1 ;判断 TH1 的计数是否大于 01H, (500 十六进制为 01F4H)SJMP NEXT2NEXT1:JC BEGINJNC NEXT4NEXT2:MOV A,TL1CJNE A,#0F4H,NEXT3 ;等于则比较 TL1 的计数值和#0F4 的大小SJMP NEXT4NEXT3:JC BEGINJNC NEXT4NEXT4:MOV A,#99H ;大于 01F4H 则输出 9999MOV P1,A MOV P2,ALJMP LAST ;长转移BEGIN:MOV A TL1 ;小于 01F4H 则转换为十进制,以下程序段为十进制转换MOV B,#14HMUL ABMOV R2,BMOV B,#10HDIV AB