简易6位数显频率计报告
6位十进制频率计实践报告
6位十进制频率计实践报告实验目的:通过使用6位十进制频率计来测量不同信号源的频率,并探索其在实际应用中的使用情况。
实验原理:1.6位十进制频率计是一种用于测量频率的仪器,可以将输入信号的频率转换为十进制数来显示。
2.6位十进制频率计采用数字频率计数器的工作原理,其中频率信号经过频率分频器分频后,使用计数器进行计数,最后将计数结果通过数码显示器以十进制形式显示出来。
实验步骤:1.连接信号源:将信号源的输出端通过BNC线缆连接到6位十进制频率计的输入端。
2.设置分频方式:根据输入信号的频率范围,选择适当的分频方式以保证频率计能够测量到。
3.设置计数时间:根据所测信号的频率稳定性,选择适当的计数时间来提高测量精度。
4.开始测量:打开信号源和频率计的电源,调节信号源输出的频率,观察并记录频率计的测量结果。
5.测量不同信号源:重复步骤4,使用不同的信号源进行测量,比较结果。
实验结果:通过实验,我们测量了不同频率的信号源,并记录了其测量结果。
实验中使用的6位十进制频率计可以测量的频率范围为10Hz至100MHz,具有较高的精度和稳定性。
讨论与分析:1.实验结果表明,6位十进制频率计能够准确地测量不同频率信号的频率,并把结果以十进制数的形式显示出来。
2.在实际应用中,6位十进制频率计可以广泛用于电子设备的频率测量,如电视、收音机、无线通讯等领域。
3.6位十进制频率计的主要优点是精度高、稳定性好,而且操作简便,适用于各种场合。
4.需要注意的是,在测量高频信号时,我们需要选择适当的分频方式来确保频率计能够正常工作。
结论:通过实践,我们了解了6位十进制频率计的工作原理和使用方法,并通过实验验证了其测量准确性和稳定性。
6位十进制频率计在实际应用中具有广泛的应用前景,并可以在不同领域的电子设备中发挥重要作用。
六位数显频率计数器
目录一、前言---------------------------------------------------------------------------------------------------------------1.1 课程设计任务----------------------------------------------------------------------------------------------1.2设计目的------------------------------------------------------------------------------------------------二、方案的提出与论证---------------------------------------------------------------------------------------------2.1频率测量的原理和方法---------------------------------------------------------------------------------------三、系统硬件设计---------------------------------------------------------------------------------------------------3.2 A T89C51单片机芯片的功能及其参数-------------------------------------------------------四、系统软件设计---------------------------------------------------------------------------------------------------4.1软件流程图及编写程序 -------------------------------------------------------------------------------------4.2软件减小测量误差的办法 ----------------------------------------------------------------------------------五、实验总结--------------------------------------------------------------------------------------------------------- 附录一:参考文献---------------------------------------------------------------------------------------------------一、前言1.1 课程设计任务本课程设计主要任务是设计一个频率计数器,其主要功能如下:利用AT89C51单片机的T0、T1的定时计数器功能,来完成对输入的信号进行频率计数,计数的频率结果通过6位动态数码管显示出来。
31单片机 6位数显频率计数器实验范文
31.6位数显频率计数器1.实验任务利用AT89S51单片机的T0、T1的定时计数器功能,来完成对输入的信号进行频率计数,计数的频率结果通过8位动态数码管显示出来。
要求能够对0-250KHZ的信号频率进行准确计数,计数误差不超过±1HZ。
2.电路原理图图4.31.13.系统板上硬件连线(1).把“单片机系统”区域中的P0.0-P0.7与“动态数码显示”区域中的ABCDEFGH端口用8芯排线连接。
(2).把“单片机系统”区域中的P2.0-P2.7与“动态数码显示”区域中的S1S2S3S4S5S6S7S8端口用8芯排线连接。
(3).把“单片机系统”区域中的P3.4(T0)端子用导线连接到“频率产生器”区域中的WAVE端子上。
4.程序设计内容(1).定时/计数器T0和T1的工作方式设置,由图可知,T0是工作在计数状态下,对输入的频率信号进行计数,但对工作在计数状态下的T0,最大计数值为fOSC /24,由于fOSC=12MHz,因此:T0的最大计数频率为250KHz。
对于频率的概念就是在一秒只数脉冲的个数,即为频率值。
所以T1工作在定时状态下,每定时1秒中到,就停止T0的计数,而从T0的计数单元中读取计数的数值,然后进行数据处理。
送到数码管显示出来。
(2).T1工作在定时状态下,最大定时时间为65ms,达不到1秒的定时,所以采用定时50ms,共定时20次,即可完成1秒的定时功能。
5.C语言源程序#include <AT89X52.H>unsigned char codedispbit[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40}; unsigned char dispbuf[8]={0,0,0,0,0,0,10,10};unsigned char temp[8];unsigned char dispcount;unsigned char T0count;unsigned char timecount;bit flag;unsigned long x;void main(void){unsigned char i;TMOD=0x15;TH0=0;TL0=0;TH1=(65536-4000)/256;TL1=(65536-4000)%256;TR1=1;TR0=1;ET0=1;ET1=1;EA=1;while(1){if(flag==1){flag=0;x=T0count*65536+TH0*256+TL0; for(i=0;i<8;i++){temp[i]=0;}i=0;while(x/10){temp[i]=x%10;x=x/10;i++;}temp[i]=x;for(i=0;i<6;i++){dispbuf[i]=temp[i]; }timecount=0;T0count=0;TH0=0;TL0=0;TR0=1;}}}void t0(void) interrupt 1 using 0 {T0count++;}void t1(void) interrupt 3 using 0 {TH1=(65536-4000)/256;TL1=(65536-4000)%256;timecount++;if(timecount==250){TR0=0;timecount=0;flag=1;}P0=dispcode[dispbuf[dispcount]]; P2=dispbit[dispcount];dispcount++;if(dispcount==8){dispcount=0;}}。
Verilog 频率计 电子实验报告
电子科技大学设计论文论文题目:基于Verilog HDL频率计设计与实现指导老师:学生姓名:学号:专业:摘要在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此频率的测量就显得更为重要。
测量频率的方法有多种,其中电子计数器测量频率具有精度高、使用方便、测量迅速,以及便于实现测量过程自动化等优点,是频率测量的重要手段之一。
电子计数器测频有两种方式:一是直接测频法,即在一定闸门时间内测量被测信号的脉冲个数;二是间接测频法,如周期测频法。
直接测频法适用于高频信号的频率测量,间接测频法适用于低频信号的频率测量。
本文阐述了用V erilogHDL语言设计了一个简单的数字频率计的过程关键词:周期;EDA;VerilogHDL;数字频率计;波形仿真SummaryIn electronics, the frequency is one of the most basic parameters, and m easurement program with a lot of electric parameters, the measurement re sult-s have a very closerelationship, and frequency measurement become s more important. There are several ways of measuring frequency, the elec tronic counter to measure frequency with high precision, easy to use, rapi d measurement, and easy to automate the measurement process, etc., is o ne of the important means of frequency measurement. Electroniccounter freq uency measurement in two ways: First, the direct frequency measurement method to measure the number of pulses of the measured signal, that is, in a certain gatetime; indirect frequency measurement method, such as the cycl e frequency measurement method. Direct frequency measurement method f or high-frequency signal frequency measurement, frequency measurements i ndirectly measured the frequency method is suitable for low-frequency sign als. This paper describes the design of a simple digital frequency meter usi ng Verilog HDL languageKeywords: period; the EDA; the Verilog HDL; digital frequency meter; wavef orm simulation目录1引言 (1)1.1频率计概述 (1)1.2设计目的 (2)1.3设计内容 (2)1.4频率测量的思想和方法 (2)2 Verilog HDL 简介 (4)3 数字频率计系统框图 (5)3.1数字频率计系统部件介绍 (5)3.2数字频率计系统模块划分结构 (6)4 数字频率计程序设计及实现 (7)4.1分频模块div_clk (7)4.2基准频率选择模块sw_sel (8)4.3门控模块gate_ctrl (8)4.4计数模块counter (9)4.5锁存器模块latch (11)4.6显示模块 display (13)4.7顶层模块 topfile (14)5 设计实现 (16)5.1实验设备 (16)5.2管脚分布 (17)5.3下载过程 (17)6 系统测试与结果分析 (18)6.1系统测试 (18)6.2 结果分析: (19)7总结 (20)7.1 结束语 (20)7.2谢辞 (21)参考文献 (21)附录 (21)1引言在电子测量领域中,频率测量的精确度是最高的,可达10—10E-13数量级。
6位数显频率计数器
1 绪论1.1 数字频率计数器的背景及意义在现代社会中,随着电子工业的发展,能够精确测量各种设备仪器中电路的频率、电压、电流等参数已越来越重要。
而传统的电子测量仪器中,示波器在进行频率测量时测量精度较低,误差较大。
频谱仪可以准确的测量频率并显示被测信号的频谱,但测量速度较慢,无法实时快速的跟踪捕捉到被测信号频率的变化。
正是由于频率计能够快速准确的捕捉到被测信号频率的变化,因此,频率计拥有非常广泛的应用范围。
在生产制造企业中,频率计被广泛的应用在生产线的生产测试中。
频率计能够快速的捕捉到晶体振荡器输出频率的变化,用户通过使用频率计能够迅速的发现有故障的晶振产品,确保产品质量。
在计量实验室中,频率计被用来对各种电子测量设备的本地振荡器进行校准。
在无线通讯测试中,频率计既可以被用来对无线通讯基站的主时钟进行校准,还可以被用来对无线电台的跳频信号和频率调制信号进行分析。
我所设计的六位数显频率计数器,是基于ATMEL公司的AT89S51单片机,通过其T0与T1的定时与计数功能,来测量输入信号的频率,并通过六位动态数码管显示出来,并且尽可能使用最少的元器件,在满足性能要求的前提下,尽量节省成本,以期最大的性价比。
1.2设计目标与要求(1) 基于AT89S51单片机,设计一个精确测量输入信号频率的频率计数器(2)能够精确测量频率范围在0Hz—250kHz之间的输入信号(3) 测量误差不超过±1Hz(4) 使用六位数码管显示测量结果(5) 在满足性能的前提下,尽可能使用最少的、最廉价的元器件2设计原理及总体方案2.1频率计的基本原理频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率。
通常情况下计算每秒内待测信号的脉冲个数,此时我们称闸门时间为1秒。
闸门时间也可以大于或小于一秒。
闸门时间越长,得到的频率值就越准确,但闸门时间越长则每测一次频率的间隔就越长。
闸门时间越短,测的频率值刷新就越快,但测得的频率精度就受影响。
6位十进制频率计实践报告
六位十进制频率计引言在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此频率的测量就显得更加重要。
数字频率计是数字电路中的一个典型应用,实际的硬件设计用到的器件较多,连线比较复杂,而且会产生比较大的延时,造成测量误差、可靠性差。
随着现场可编程门阵列FPGA的广泛应用,以EDA工具作为开发手段,运用VHDL等硬件描述语言语言,将使整个系统大大简化,提高了系统的整体性能和可靠性。
一、课程设计题目和设计要求简易频率计要求:设计一个简易的6位十进制频率计。
功能分析:可以测量的频率范围:0~999999Hz,并在数码管显示器频率的值二、设计思路分析与方案选择1、频率计设计原理在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此,频率的测量就显得更为重要。
测量频率的方法有多种,其中电子计数器测量频率具有精度高、使用方便、测量迅速,以及便于实现测量过程自动化等优点,是频率测量的重要手段之一。
数字式频率计的测量原理有两类:一是直接测频法,即在一定闸门时间内测量被测信号的脉冲个数;二是间接测频法即测周期法,如周期测频法。
直接测频法适用于高频信号的频率测量,通常采用计数器、数据锁存器及控制电路实现,并通过改变计数器阀门的时间长短在达到不同的测量精度;间接测频法适用于低频信号的频率测量。
本设计中使用的就是直接测频法,即用计数器在计算1S内输入信号周期的个数,其测频范围为1Hz~999999Hz。
2、频率计设计思路频率测量的基本原理是计算每秒钟内待测信号的脉冲个数。
这就要求测频控制信号发生器TESTCTL的计数使能信号TSTEN能产生一个1秒脉宽的周期信号,并对频率计的每一计数器CNT10的使能端ENA进行同步控制。
当TSTEN 为高电平时,允许计数;为低电平时停止计数,并保持其计数结果。
在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前1 秒种的计数值锁存进24位锁存器REG24B中,并由外部的7段译码器译出,并稳定显示。
电子科技大学现代电子综合实验频率计实验报告
实验报告学生:学院:专业:学号:指导老师:目录一、实验名称: (3)二、实验目的: (3)三、实验任务: (3)四、实验原理: (3)1.分频器: (4)①功能 (4)②实现: (4)2.闸门选择 (5)①功能 (5)②实现 (5)3.门控电路: (6)①功能: (6)②实现 (7)4.计数器: (8)①功能 (8)②实现 (8)5.锁存器: (9)①功能 (9)②实现 (9)6.扫面显示 (9)①功能 (9)②实现 (9)7.top顶层文件 (10)①功能: (10)②实现: (10)8.管脚的配置: (11)六、误差分析: (13)1. 原因 (13)2.减小误差 (13)七、实验结论: (14)八、程序附录: (14)1.分频器: (14)2.闸门选择: (15)3.门控电路: (16)4.计数器: (17)5.锁存器: (19)6.扫面显示: (20)7.top程序: (21)一、实验名称:基于FPGA的数字频率计的设计二、实验目的:学习VHDL语言并使用它完成频率计的设计,使学生不断的加深对VHDL描述语言的掌握,以及不断总结由软件来实现硬件的特点,学会程序与芯片的对接,为以后的工作和更进一步的学习学习打好基础。
三、实验任务:基于FPGA采用硬件描述语言VHDL,在软件开发平台ISE上设计出一个数字频率计,使用ModelSim仿真软件对VHDL程序做仿真并下载到芯片完成实际测量。
要求:其频率测量范围为10Hz~10MHz,测量结果用6只数码管显示。
有三个带锁按键开关(任何时候都只能有一个被按下)被用来选择1S、0.1S和0.01S三个闸门时间中的一个。
有两只LED,一只用来显示闸门的开与闭,另一只当计数器溢出时做溢出指示。
四、实验原理:频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟(本实验采用50MHz的石英振荡器作为基准时钟),对比测量其他信号的频率。
通常情况下计数每秒内待测信号的脉冲个数,此时我们称闸门时间为1S,闸门时间也可以大于或小于1S。
数字频率计设计报告
SIGNAL clkout1 : SIGNAL clkout10 : SIGNAL clkout100 : SIGNAL clkout1K : BEGIN
uut: fenpinqi PORT MAP(clk => clk, clkout1 => clkout1, clkout10 => clkout10, clkout100 => clkout100, clkout1K => clkout1K); tb : PROCESS BEGIN clk<='0'; wait for 10 ps; clk<='1'; wait for 10 ps; END PROCESS; END;
电子技术综合试验实验报告
班级:环境工程 学号:2907201005 姓名:杜熬 指导老师:李颖
1
数字频率计设计报告
一、 系统整体设计
设计要求: 1、被测输入信号:方波 2、测试频率范围为:10Hz~100MHz 3、量程分为三档:第一档:闸门时间为 1S 时,最大读数为 999.999KHz 第二档:闸门时间为 0.1S 时,最大读数为 9999.99KHz 第三档:闸门时间为 0.01S 时,最大读数为 99999.9KHz。 4、显示工作方式:a、用六位 BCD 七段数码管显示读数。 b、采用记忆显示方法 c、实现对高位无意义零的消隐。 系统设计原理: 所谓“频率” ,就是周期性信号在单位时间(1 秒)内变化的次数。若在一定的时间间隔 T 内计数,计 得某周期性信号的重复变化次数为 N,则该信号的频率可表达为:f = N / T . 基于这一原理我们可以使用单位时间内对被测信号进行计数的方法求得对该信号的频率测量,具体 实现过程简述如下: 首先,将被测信号①(方波)加到闸门的输入端。由一个高稳定的石英振荡器和一系 列数字分频器组成了时基信号发生器, 它输出时间基准(或频率基准)信号③去控制门控电路形成门控信 号④,门控信号的作用时间 T 是非常准确的(由石英振荡器决定)。门控信号控制闸门的开与闭,只有在 闸门开通的时间内,方波脉冲②才能通过闸门成为被计数的脉冲⑤由计数器计数。 闸门开通的时间称为闸门时间,其长度等于门控信号作用时间 T。比如,时间基准信号的重复周期 为 1S,加到闸门的门控信号作用时间 T 亦准确地等于 1S,即闸门的开通时间——“闸门时间”为 1S。在 这一段时间内,若计数器计得 N=100000 个数,根据公式 f = N / T,那么被测频率就是 100000Hz。如果 计数式频率计的显示器单位为“KHz”,则显示 100.000KHz,即小数点定位在第三位。不难设想,若将 闸门时间设为 T=0.1S,则计数值为 10000,这时,显示器的小数点只要根据闸门时间 T 的改变也随之自 动往右移动一位(自动定位),那么,显示的结果为 100.00Khz。在计数式数字频率计中,通过选择不同 的闸门时间,可以改变频率计的测量范围和测量精度。 系统单元模块划分: 1)分频器,将产生用于计数控制的时钟分别为 1HZ,10HZ,100HZ 脉冲和 1KHZ 的用于七段显示 数码管扫描显示的扫描信号。 2)闸门选择器,用于选择不同的闸门时间以及产生后续的小数点的显示位置。 3)门控电路,产生用于计数的使能控制信号,清零信号以及锁存器锁存信号。 4)计数器,用于对输入的待测信号进行脉冲计数,计数输出。 5)锁存器,用于对计数器输出数据的锁存,便于后续译码显示电路的对数据进行记忆显示,同时 避免计数器清零信号对数据产生影响。 6)译码显示,用于产生使七段显示数码管的扫描数字显示,小数点显示的输出信号,同时对高位 的无意义零进行消隐。
频率计实验报告
频率计一、实验目的设计并制作一台数字显示的简易频率计。
二、实验原理无论频率、周期还是时间间隔的数字化测量,均是基于主门加计数器的结构而实现的。
其中主门具有“与门”的逻辑功能。
主门的一个输入端送入的是待检测的信号。
另一端送入的是闸门信号,可以由晶振通过分频得到高电平为1秒,低电平为0.25秒的闸门信号。
其中的1秒钟用于对待测信号的脉冲个数进行检测,0.25秒则用于传输数据、显示以及计数器的清零。
本实验才用的是第二种方案,具体的实现电路如上图所示。
由cpld 控制频率计的分频、计数、选择部分,单片机控制数码管的显示部分。
分频链的输入端接一个8MHz 的晶振产生的信号,输出端是0.8Hz 的闸门信号,占空比为80%。
再由待测信号和闸门信号经过与门后输入到计数器中是计数器开始计数。
计数器在闸门信号为高电平的部分时每次接受到一个待测信号的高电平就加一。
由于cpld 与单片机的管脚的数量的限制,所以不能够将所得到的数一次就传输过去,所以单片机每次只能够接受一位的数据,此功能由选择器完成,具体实现方法是单片机通过发出不同的信号给cpld 来控制cpld 传送计数结果的哪一位,当单片机完成数据的接受后同时闸门信号为低电平则单片机发出清零信号给cpld 将计数器清零。
同时单片机控制着数码管的动态显示。
以上即为方案二实现频率计的大体过程。
三、实验要求 频率准确度:误差主要来自闸门时间相对误差。
本实验中对频率精度的基本要求为误差在±1Hz 内。
频率测量范围:在输入信号幅度符合要求时,能够进行测量的频率区间。
实验中对频率测量范围的要求是1Hz-10MHz 。
四、程序代码1、参考老师所给的代码:计数器选择器Signal in Clock分频链单片机Display单片机部分:#include <reg51.h>sbit Dig1 = P2^0;sbit Dig2 = P2^1;sbit Dig3 = P2^2;sbit Dig4 = P2^3;sbit Dig5 = P2^4;sbit Dig6 = P2^5;sbit Dig7 = P2^6;//定义动态显示时显示的数码管sbit Latch = P3^0; //闸门信号的输入sbit Clr_data = P3^4;//控制单片机接受到数据后计数器的清零sbit Dig_sel2 = P3^5;sbit Dig_sel1 = P3^6;sbit Dig_sel0 = P3^7;//用于选择器时的选择传输的位#define T0_High_Init 0xfa;#define T0_Low_Init 0x00;unsigned int Counter;unsigned char Digit1,Digit2,Digit3,Digit4,Digit5,Digit6,Digit7;//字形表int Get_7_Segment[16] = {0x7E,0x30,0x6D,0x79,0x33,0x5B,0x5F,0x70,0x7F,0x7B,0x77,0x1f,0x4e,0x3d,0x4f,0x47};unsigned char indata;//---------------------------------------------------------------------------------------------------------//主函数//初始化函数void Initial(void){Counter = 0;TMOD = 0x11; //定时器工作方式TH0 = T0_High_Init;TL0 = T0_Low_Init; //设置定时器初值TR0 = 1; //启动定时器ET0 = 1; //允许定时器中断EA = 1; //开中断}//延时void delay(){int ti;for(ti=0;ti<10;ti++){}}//判断Latch是否为高电平int latch_high(void){int reci; //返回值if(Latch){delay();if(Latch)reci = 1;elsereci = 0;}elsereci = 0;return reci;}//判断Latch是否为低电平int latch_low(void){int reci; //返回值if(!Latch){delay();if(!Latch)reci = 1;elsereci = 0;}elsereci = 0;return reci;}void get_data(void){Dig_sel2 = 0;Dig_sel1 = 0;Dig_sel0 = 0;delay();indata = P0;//cpld给单片机的数据由p0口输入Digit7 = indata & 0x0f;Dig_sel0 = 1;delay();indata = P0;Digit6 = indata & 0x0f;Dig_sel1 = 1;Dig_sel0 = 0;delay();indata = P0;Digit5 = indata & 0x0f;Dig_sel0 = 1;delay();indata = P0;Digit4 = indata & 0x0f;Dig_sel2 = 1;Dig_sel1 = 0;Dig_sel0 = 0;delay();indata = P0;Digit3 = indata & 0x0f;Dig_sel0 = 1;delay();indata = P0;Digit2 = indata & 0x0f;Dig_sel1 = 1;Dig_sel0 = 0;delay();indata = P0;Digit1 = indata & 0x0f;} //该段程序用于选择传输的位。
课程设计实验报告(简易频率计)
实验二:简易电子琴一、实验目的(1)学习采用状态机方法设计时序逻辑电路。
(2)掌握ispLEVER 软件的使用方法。
(3)掌握用VHDL 语言设计数字逻辑电路。
(4)掌握ISP 器件的使用。
二、实验所用器件和设备在系统可编程逻辑器件ISP1032一片示波器一台万用表或逻辑笔一只TEC-5实验系统,或TDS-2B 数字电路实验系统一台三、实验内容设计一个简易频率计,用于测量1MHz 以下数字脉冲信号的频率。
闸门只有1s 一档。
测量结果在数码管上显示出来。
不测信号脉宽。
用一片ISP芯片实现此设计,并在实验台上完成调试。
实验设计:1.产生准确闸门信号(1s)。
100kHz时钟经100K分频(一次完成),再经2分频产生方波,1s 用于计数,1s用于显示结果(及清零);2. 利用闸门信号控制一个计数器对被测脉冲信号进行计数, 1s内计数的结果就是被测信号的频率;3.每次对被测信号计数前,自动清零;4. 计数器采用十进制;5.显示频率值上下浮动,要修改源代码。
6.数码管高低位的接线。
VHDL源代码:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity fget isport(clk:in std_logic; --输入时钟源 bclk:in std_logic;kout:out std_logic_vector(26 downto 0));end fget;architecture top of fget iscomponent divideport(clk1:in std_logic;cl:out std_logic;co:out std_logic;ro:out std_logic);end component;component gateport(bc1:in std_logic;cl1:in std_logic;co1:in std_logic;op:out std_logic_vector(26 downto 0));end component;component saveport(op1:in std_logic_vector(26 downto 0);ro1:in std_logic;eout:out std_logic_vector(26 downto 0));end component;signal scl:std_logic;signal sco:std_logic;signal sro:std_logic;signal sop:std_logic_vector(26 downto 0);BEGINu1:divide PORT MAP(clk,scl,sco,sro);u2:gate PORT MAP(bclk,scl,sco,sop);u3:save PORT MAP(sop,sro,kout);end;--闸门模块library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity gate isport(bc1:in std_logic;cl1:in std_logic;co1:in std_logic;op:out std_logic_vector(26 downto 0) --5个8421,一个七段译码);end;architecture art2 of gate iscomponent cnt10 --十进制计数模块port(clk2:in std_logic;en:in std_logic;--使能端clr:in std_logic;--重置qout:out std_logic_vector(3 downto 0 );cout:out std_logic);end component;component seventranse --七段模块port(clk6:in std_logic_vector(3 downto 0 );op2:out std_logic_vector(6 downto 0 ));end component;signal scout1:std_logic;--输出(十进制)signal scout2:std_logic;signal scout3:std_logic;signal scout4:std_logic;signal scout5:std_logic;signal scout6:std_logic;signal qout1:std_logic_vector(3 downto 0);--8421(下同)signal qout2:std_logic_vector(3 downto 0);signal qout3:std_logic_vector(3 downto 0);signal qout4:std_logic_vector(3 downto 0);signal qout5:std_logic_vector(3 downto 0);signal qout6:std_logic_vector(3 downto 0);signal op2: std_logic_vector(6 downto 0);--七段beginr1:cnt10 PORT MAP(bc1,co1,cl1,qout1,scout1);r2:cnt10 PORT MAP(scout1,co1,cl1,qout2,scout2);r3:cnt10 PORT MAP(scout2,co1,cl1,qout3,scout3);r4:cnt10 PORT MAP(scout3,co1,cl1,qout4,scout4);r5:cnt10 PORT MAP(scout4,co1,cl1,qout5,scout5);r6:cnt10 PORT MAP(scout5,co1,cl1,qout6,scout6);t1:seventranse PORT MAP(qout6,op2);process(co1)beginif (co1'event and co1='0') thenop<=op2&qout5&qout4&qout3&qout2&qout1;--结果显示end if;end process;end;--寄存器模块library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity save isport(op1:in std_logic_vector(26 downto 0);ro1:in std_logic;eout:out std_logic_vector(26 downto 0));end entity;architecture art4 of save issignal temp:std_logic_vector(26 downto 0);beginprocess(ro1)beginif ro1'event and ro1='1'then --上升沿判断temp<=op1;end if;eout<=temp;end process;end art4;--十进制计数器模块library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity cnt10 isport(clk2:in std_logic;en:in std_logic;clr:in std_logic;qout:out std_logic_vector(3 downto 0 );cout:out std_logic);end entity;architecture art3 of cnt10 issignal temp:std_logic_vector(3 downto 0 );beginprocess(clk2,en,clr)beginif (clr='1') then --重置时清0temp<="0000";elsif (en='1') thenif(clk2'event and clk2='1')then --上升沿判断进位if(temp="1001")thentemp<="0000";elsetemp<=temp+1;end if;end if;end if;end process;qout<=temp;cout<='1' when temp="1001" else '0';end art3;--分频模块library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity divide isport(clk1:in std_logic;cl:out std_logic;co:out std_logic;ro:out std_logic);end;architecture art1 of divide issignal preclk:std_logic;signal temp1:std_logic;signal temp2:std_logic;beginp1: process(clk1) --先进行2500分频variable count:integer range 0 to 2500;beginif clk1'event and clk1='1'thenif count=2499 thencount:=0;preclk<='1';else count:=count+1;preclk<='0';end if;end if;end process;p2: process(preclk) --依次二分频实现闸门beginif preclk'event and preclk='1'thentemp2<=not temp2;end if;end process;p3: process(temp2)variable count2:std_logic;beginif temp2'event and temp2='1'thencount2:=not count2;if count2='1'thenco<='1';temp1<='0';else co<='0';temp1<='1';end if;end if;end process;p4:process(temp2)beginif (temp1='1' and temp2='0') thencl<='1';elsecl<='0';end if;end process;ro<=temp1;end;--七段译码器模块library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity seventranse isport(clk6:in std_logic_vector(3 downto 0 );op2:out std_logic_vector(6 downto 0 ));end entity;architecture art5 of seventranse isbeginprocess(clk6)begincase clk6 iswhen "0000"=> op2<="1111110";when "0001"=> op2<="0110000";when "0010"=> op2<="1101101";when "0011"=> op2<="1111001";when "0100"=> op2<="0110011";when "0101"=> op2<="1011011";when "0110"=> op2<="1011111";when "0111"=> op2<="1110000";when others=> op2<="0000000";end case;end process;end art5;四、实验小结:实验要求用闸门信号控制计数器计时,于是在十进制计数器模块中添加使能信号en(en=‘1’计数器进行加1 计数,en=‘0’时计数器保持),将闸门信号作为使能信号接入,即可实现1s计数,1s显示。
简易频率计课程设计报告
简易频率计课程设计报告一、课程目标知识目标:1. 理解频率的基本概念,掌握频率的定义及计算方法;2. 了解简易频率计的原理,学会使用简易频率计进行频率测量;3. 能够运用频率知识解释日常生活中的相关现象。
技能目标:1. 学会使用简易频率计进行实验操作,提高实验操作能力;2. 能够运用频率计算公式进行数据处理,提高数据分析能力;3. 通过小组合作,提高沟通协作能力。
情感态度价值观目标:1. 培养学生对物理实验的兴趣,激发学生的探究欲望;2. 培养学生严谨的科学态度,注重实验数据的准确性;3. 增强学生的环保意识,关注频率相关领域的科技发展。
本课程针对初中物理学科,结合学生年级特点,注重理论与实践相结合,提高学生的实验操作能力和数据分析能力。
在教学过程中,关注学生的个体差异,激发学生的学习兴趣,培养学生的团队合作精神。
通过本课程的学习,使学生能够掌握简易频率计的使用,并将其应用于实际生活中,达到学以致用的目的。
同时,注重情感态度价值观的培养,引导学生关注科学进步,提高学生的综合素质。
二、教学内容1. 频率基本概念:引入频率的定义,解释频率与周期的关系,阐述频率在实际应用中的重要性。
2. 简易频率计原理:介绍简易频率计的结构、工作原理及使用方法,结合教材相关章节,进行图文并茂的讲解。
3. 频率测量实验:组织学生进行简易频率计的实验操作,包括搭建实验装置、进行频率测量以及数据处理。
- 教材章节:第三章第三节《频率与振动》- 内容列举:频率的定义、频率与周期的关系、简易频率计的结构与原理、实验操作步骤。
4. 数据处理与分析:指导学生运用频率计算公式进行数据处理,分析实验结果,探讨影响频率测量结果的因素。
5. 课堂讨论与总结:针对实验过程中遇到的问题和现象,组织学生进行讨论,引导学生运用所学知识进行解释,总结实验经验和教训。
教学内容根据课程目标进行科学性和系统性的组织,注重理论与实践相结合。
在教学过程中,依据教材章节进行教学大纲的制定,明确教学内容的安排和进度,确保学生在掌握频率知识的基础上,能够顺利进行简易频率计的实验操作和数据分析。
现代电子技术综合实验-数字频率计设计实验报告
现代电子技术综合实验数字频率计设计实验报告姓名:学号:、系统总体设计设计要求1、被测输入信号:方波2、测试频率范围为:10Hz〜1MHz 扩展1MHz〜100MHz3、量程分为三档:第一档:闸门时间为1S时,最大读数为999.999KHZ第二档:闸门时间为0.1S时,最大读数为9999.99KHz第三档:闸门时间为0.01S时,最大读数为99999.9KHz。
4、显示工作方式:a用六位BCD七段数码管显示读数。
b、采用记忆显示方法c、实现对高位无意义零的消隐。
系统工作原理信号的频率就是信号在单位时间内所产生的脉冲个数,其表达式为f=N/T ,其中f 为被测信号的频率,N为技术其所累计的脉冲个数,T为产生N个脉冲所需的时间。
技术其所记录的结果,就是被测信号的频率。
如在1s内记录1000个脉冲,则被测信号的频率为1000HZ。
测量频率的基本方法有两种:计数法和计时法,或称测频法和测周期法。
1 、计数法计数法是将被测信号通过一个定时闸门加到计数器进行计数的方法,如果闸门打开的时间为T,计数器得到的计数值为N1,则被测频率为f=N1/T。
改变时间T,贝【J可改变测量频率范围。
如图所示。
计数法测量原理设在T期间,计数器的精确计数值应为N,根据计数器的计数特性可知,N1的绝对误差是N仁N+1,N1的相对误差为A N仁(N1-N)/N=1/N。
由N1的相对误差可知,N的数值愈大,相对误差愈小,成反比关系。
因此,在f以确定的条件下,为减少N的相对误差,可通过增大T的方法来降低测量误差。
当T为某确定值时(通常取1s),则有f仁N1, 而f=N,故有fl的相对误差:A f1=(f1-f)/f=1/f从上式可知fl的相对误差与f成反比关系,即信号频率越高,误差越小;而信号频率越低,贝V测量误差越大。
因此测频法适合用于对高频信号的测量,频率越高,测量精度也越高。
2、计时法计时法又称为测周期法,测周期法使用被测信号来控制闸门的开闭,而将标准时基脉冲通过闸门加到计数器,闸门在外信号的一个周期内打开,这样计数器得到的计数值就是标准时基脉冲外信号的周期值,然后求周期值的倒数,就得到所测频率值。
电子科技大学现代电子综合实验频率计实验报告
实验报告学生:学院:专业:学号:指导老师:目录一、实验名称: (3)二、实验目的: (3)三、实验任务: (3)四、实验原理: (3)1.分频器: (4)①功能 (4)②实现: (4)2.闸门选择 (5)①功能 (5)②实现 (5)3.门控电路: (6)①功能: (6)②实现 (7)4.计数器: (8)①功能 (8)②实现 (8)5.锁存器: (9)①功能 (9)②实现 (9)6.扫面显示 (9)①功能 (9)②实现 (9)7.top顶层文件 (10)①功能: (10)②实现: (10)8.管脚的配置: (11)六、误差分析: (13)1. 原因 (13)2.减小误差 (13)七、实验结论: (14)八、程序附录: (14)1.分频器: (14)2.闸门选择: (15)3.门控电路: (16)4.计数器: (17)5.锁存器: (19)6.扫面显示: (20)7.top程序: (21)一、实验名称:基于FPGA的数字频率计的设计二、实验目的:学习VHDL语言并使用它完成频率计的设计,使学生不断的加深对VHDL描述语言的掌握,以及不断总结由软件来实现硬件的特点,学会程序与芯片的对接,为以后的工作和更进一步的学习学习打好基础。
三、实验任务:基于FPGA采用硬件描述语言VHDL,在软件开发平台ISE上设计出一个数字频率计,使用ModelSim仿真软件对VHDL程序做仿真并下载到芯片完成实际测量。
要求:其频率测量范围为10Hz~10MHz,测量结果用6只数码管显示。
有三个带锁按键开关(任何时候都只能有一个被按下)被用来选择1S、0.1S和0.01S三个闸门时间中的一个。
有两只LED,一只用来显示闸门的开与闭,另一只当计数器溢出时做溢出指示。
四、实验原理:频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟(本实验采用50MHz的石英振荡器作为基准时钟),对比测量其他信号的频率。
通常情况下计数每秒内待测信号的脉冲个数,此时我们称闸门时间为1S,闸门时间也可以大于或小于1S。
简易数字频率计课程设计报告
一、课题名称与技术要求<1>名称:简易数字频率计<2>主要技术指标和要求:1. 被测信号的频率X围100HZ~100KH2. 输入信号为正弦信号或方波信号3. 四位数码管显示所测频率,并用发光二极管表示单位4. 具有超量程报警功能二、摘要以门电路,触发器和计数器为核心,由信号输入、放大整形、闸门电路、计数、数据处理和数据显示等功能模块组成。
放大整型电路:对被测信号进行预处理;闸门电路:由与门电路通过控制开门关门,攫取单位时间内进入计数器的脉冲个数;时基信号:周期性产生一秒高电平信号;计数器译码电路:计数译码集成在一块芯片上,计单位时间内脉冲个数,把十进制计数器计数结果译成BCD码;显示:把BCD码译码在数码管显示出来。
关键字:比较器,闸门电路,计数器,锁存器,逻辑控制电路三、方案论证与选择<1>频率测量原理与方法对周期信号的测量方法,常用的有下述几种方法。
1、测频法(M法)对频率为f的周期信号,测频法的实现方法,是用以标准闸门信号对被测信号的重复周期数进行计数,当计数结果为N时,其频率为:f1=N1/TG。
TG为标准闸门宽度,N1是计数器计出的脉冲个数,设在TG期间,计数器的精确计数值为N,根据计数器的技术特性可知,N1的绝对误差是△N1=N ±1,N1的相对误差为&N1=(N1-N)/N=(N±1-N)/N=±1/N,由N1的相对误差可知,N(或N1)的数值愈大,相对误差愈小,成反比关系。
因此,在f已确定的条件下,为减小N1的相对误差,可通过增大TG的方法来降低测量误差。
但是,增大TG会使频率测量的响应时间长。
当TG为确定值时(通常取TG=1s),则有f=N,固有f1的相对误差:&f1=(f1-f)/f=(f±1-f)/f=±1/f由上式可知,f1的相对误差与f成反比关系,即信号频率越高,误差越小;而信号频率越低,则测量误差越大。
6位数字频率计
数字频率计目录一、设计任务书二、设计框图及整体概述三、各单元电路的设计方案及原理说明四、结果分析五、体会和总结附录一、电路设计总图附录二、50MHz变成2Hz的模块VHDL语言源程序附录三、FPGA实验开发板EP2C5T144C8芯片管脚锁定表第页一、设计任务书设计一个6位数字频率计,测量范围为000000~999999;应用QuartusII_7.2以自底向上层次化设计的方式设计电路原理图;应用FPGA实验开发板下载设计文件,实现电路的功能。
二、设计框图及整体概述1.设计框图2、主要芯片及作用T触发器:将2HZ的频率翻转成1HZ。
74192:1个74HC192能实现0~9的计数功能,6个74HC192可以连成0~999999的计数。
74374:是8位的锁存器,可以选用3个来设计24位的锁存器。
74374将计数器输出的测量数据暂时储存起来,并提供给数码管显示。
7448:是BCD—7段译码器,用来显示测量结果。
3、设计原理说明数字频率计是专门用于测量交流信号周期变化速度的一种仪器,频率的定义是每秒时间内交流信号(电压或电流)发生周期性变化的次数。
因此频率计的任务就是要在1秒钟时间内数出交流信号从低电平到高电平变化的次数,并将测得的数据通过数码管显示出来。
50MHz 时钟信号通过模块VHDL 语言源程序变成2Hz 的时钟信号,通过T 触发器将2HZ 翻转成1HZ ,1HZ 经过分频产生3个电平信号,1秒脉宽的高电平提供给计数器工作;1秒脉宽的高电平提供给锁存器工作;0.5秒脉宽的高电平用于计数器清零。
有了这三个电平信号,就可以用6片74192工作来计数000000~999999,74374用来锁存计数器输出的测量数据,再用7448译码器来显示出来。
三、各单元电路的设计方案及原理说明 1. 时钟分频模块VCCclk_50mINPUT clk_1hzOUTPUTclk1clkfenpininstPRNCLRN TQTFFinst2VCC时钟分频原理图原理:50MHz 时钟信号通过模块VHDL 语言源程序变成2Hz 的时钟信号。
简易数字频率计设计实验报告
电子线路课程设计报告姓名:学号:专业:电子信息日期: 2014.4.13南京理工大学紫金学院电光系2014-4-13引言《电子线路课程设计》是一门理论和实践相结合的课程。
它融入了现代电子设计的新思想和新方法,架起一座利用单元模块实现电子系统的桥梁,帮助学生进一步提高电子设计能力。
对于推动信息电子类学科面向21世纪课程体系和课程内容改革,引导、培养大学生创新意识、协作精神和理论联系实际的学风,加强学生工程实践能力的训练和培养,促进广大学生踊跃参加课外科技活动和提高毕业生的就业率都会起到了良好作用。
该课程主要内容:(1)了解和掌握一个完整的电子线路设计方法和概念;(2)通过电子线路设计、仿真、安装和调试,了解和掌握电子系统研发产品的一个基本流程。
(3)了解和掌握一些常见的单元电路设计方法和在电子系统中的应用:包括放大器、滤波器、比较器、光电耦合器、单稳、逻辑控制、计数和显示电路等。
(4)通过编写设计文档与报告,进一步提高学生撰写科技文档的能力。
(5)电子线路课程设计课题:设计并制作一个基于模电和数电的简易数字频率计。
目录第一章设计要求.................................................1.1 基本要求...........................................1.2 提高部分...........................................1.3 设计报告........................................... 第二章整体方案设计.............................................2.1 算法设计...........................................2.2 整体方框图及原理................................... 第三章单元电路设计.............................................3.1 模电部分设计.......................................3.1.1 放大电路........................................3.1.2 滤波电路........................................3.1.3 比较电路........................................3.1.4 模电总体电路....................................3.2 数电部分设计.......................................3.2.1 时基电路........................................3.2.2 单稳态电路......................................3.2.3 计数、译码、显示电路............................3.2.4 数电总体电路.................................... 第四章测试与调整...............................................4.1 时基电路的调测.....................................4.2 计数电路的调测.....................................4.3 显示电路的调测..................................... 第五章设计小结.................................................5.1 设计任务完成情况...................................5.2心得体会...........................................第一章设计要求1.1 基本要求(1)输入信号:正弦、三角和方波;频率:10Hz~2KHz;幅度:峰-峰值0.3 V ~3V;(2)频率计通带:10Hz~1KHz;(3)量程范围:0~99;(4)闸门时间:1s;(5)采样周期:≥2s;(6)实现自动测频、自动清零、数据显示和保持功能。
数字频率计设计实训报告
一、实训目的1. 熟悉数字频率计的原理和设计方法。
2. 学会使用数字电路设计工具进行电路设计。
3. 提高实际动手能力,培养创新思维。
4. 增强团队协作意识。
二、实训内容本次实训以设计一款简易数字频率计为目标,主要内容包括:1. 确定设计指标和功能要求。
2. 设计数字频率计的硬件电路。
3. 编写程序实现频率计的功能。
4. 进行电路调试和测试。
三、设计指标和功能要求1. 频率测量范围:1Hz~99.99kHz。
2. 波形测量:正弦波、方波、三角波等。
3. 数码显示:LCD1602液晶显示屏。
4. 量程选择:手动切换。
5. 误差:≤±1%。
四、硬件电路设计1. 信号输入电路:采用LM324运算放大器作为信号放大和整形电路,确保信号幅度在1Vpp以上。
2. 分频电路:采用74HC390计数器进行分频,将输入信号频率降低到计数器可计数的范围内。
3. 计数电路:采用74HC595移位寄存器实现计数功能,计数结果通过串口输出。
4. 显示电路:采用LCD1602液晶显示屏显示频率值。
5. 控制电路:采用AT89C52单片机作为主控制器,负责信号处理、计数、显示和量程切换等功能。
五、程序设计1. 初始化:设置计数器初值、波特率、LCD1602显示模式等。
2. 主循环:检测信号输入、计数、计算频率、显示结果。
3. 信号处理:对输入信号进行放大、整形、分频等处理。
4. 计数:根据分频后的信号频率,对计数器进行计数。
5. 计算频率:根据计数结果和分频系数计算实际频率。
6. 显示:将计算出的频率值通过串口发送到LCD1602显示屏。
7. 量程切换:根据手动切换的量程,调整分频系数。
六、电路调试与测试1. 调试信号输入电路,确保信号幅度在1Vpp以上。
2. 调试分频电路,确保分频后的信号频率在计数器可计数的范围内。
3. 调试计数电路,确保计数器能够正确计数。
4. 调试显示电路,确保LCD1602显示屏能够正确显示频率值。
简易频率计设计实验报告
(2) 、T1 25ms 定时中断服务程序 系 统 时 钟 为 24MHz , 机 器 周 期 为 0.5us , 最 大 定 时 时 间 为
65536 0.5us 32.768ms ,我们选用的定时时间为 25ms,定时中断 40 次即可实现 1s 定 时,T1 中断服务程序的流程图如下:
姓 学 专
名: 号: 业:
胡 嗣 维 021240*** 物 理 学 杨 老 师
指导老师:
2015 年 7 月 5 日
简易数字频率计的设计
实验目标:设计一个简易的数字频率计,能实时测量周期信号的频率,并将结果显示出 来,频率测量范围为 0~1MHz
总体方案
1.频率测量基本原理 数字频率计的主要功能是测量周期信号的频率。频率是单位时间内(1s)信号发生周期变 化的次数。如果能在给定的 1s 时间内对周期信号进行计数,并将计数结果显示出来,就实 现了对被测信号的频率测量。 2 实现方法 单片机 AT89S51 内部具有两个 16 位定时/计数器,如果用 T0 对外界周期信号进行计数, T1 作为定时器产生 1s 的定时中断, 在 T1 的定时中断服务程序中读取 T0 的计数值, 即可实 现频率的测量。由于测量的频率范围是 0~1000000Hz(1MHz) ,根据单片机对外部信号的计 数需要两个机器周期才能识别一个脉冲, 所以外部计数脉冲的频率应该小于振荡频率的 1/24. 所以选择 24MHz 才能实现频率测量范围为 0~1000000Hz(1MHz) 。如果系统的频率测量范 围更大,则可以在周期脉冲信号接入 T0 引脚前加分频电路即可。 3 系统硬件设计 系统硬件连接电路图如图所示。系统比较简单,数据处理量不大,因此选用 AT89S51 作为 控制系统的核心。其特点是低功耗、高性能的 CMOS 单片机。AT89S51 单片机采用静态时 钟方式,时钟频率为 0~33MHz。本次我们采用的是 24MHz 的工作频率。频率测量没有大量 的运算和暂存数据,现有的 128B 片内 RAM 已经满足要求,因此不必要外扩片外 RAM。系 统选用 LCD1602 显示频率,因为系统外扩的元件先对比较少,LCD1602 采用 I/O 并行接口 方式和单片机相连。图中
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
简易6位数显频率计
一、任务分析
(1)用51单片机的定时计数器功能设计一个带6位数显的简易频率计。
(2)参数要求:
a、输入信号为矩形波,幅度>4.5V,信号频率范围为1-250kHz,误差为±1Hz;
b、测得的频率结果用6位数码管显示出来,显示方式自定;
c、51单片机晶振频率为12MHz。
二、实现方案
采用12MHz的晶体震荡器的情况下,一秒的定时已经超过了定时器可提供的最大定时值。
为了实现一秒的定时,采用定时和计数相结合的方法实现。
选用定时计数器TO做定时器,工作于方式1产生50ms的定时器,再用软件计数的方式对他计数20次,就可得到一秒的定时。
另外,此处对外部事件计数脉冲的占空比(即脉冲的持续宽度)无特殊要求,但必须保证所给出的高电平在其改变之前至少被采样1次,即至少保持1个完整的机器周期。
由此可见,从T1口输入脉冲信号,T1可以实现对脉冲个数的计数。
采用中断来实现每一秒钟算一次频率,时时显示频率。
采用移位除法把十六位的二进转换成十进制的数。
三、程序流程图
四、硬件电路图
五、程序列表
DATE0 EQU 22H
DATE1 EQU 23H
DATE2 EQU 24H
DATE3 EQU 25H
DATE4 EQU 26H
LL6 EQU 27H
LL5 EQU 28H
LL4 EQU 29H
LL3 EQU 30H
LL2 EQU 31H
LL1 EQU 32H
M EQU 33H
N EQU 34H
V ALUEH EQU 35H ;暂存TH1的值V ALUEL EQU 36H ;暂存TL1的值AS EQU 37H
ORG 0000H
LJMP START
ORG 000BH
LJMP INT00
ORG 001BH
LJMP INT11
START: MOV SP,#60H
MOV P0,#0C0H
MOV P2,#00H
MOV 22H,#00H
MOV 23H,#00H
MOV 24H,#00H
MOV 25H,#00H
MOV 26H,#00H
MOV LL6,#0
MOV LL5,#0
MOV LL4,#0
MOV LL3,#0
MOV LL2,#0
MOV LL1,#0
MOV N,#0
MOV M,#1
MOV TMOD,#15H ;T1定时
5ms,T0计数MOV TH1,#0ECH
MOV TL1,#81H
MOV TH0,#0
MOV TL0,#0
MOV IE,#8AH
SETB TR0
SETB TR1
MOV DPTR,#TABLE DETACH: MOV A,LL1 ;显示计数值MOVC A,@A+DPTR
MOV P0,#0FFH
MOV P2,#80H
MOV P0,A
MOV A,LL2
MOVC A,@A+DPTR
MOV P0,#0FFH
MOV P2,#40H
MOV P0,A
MOV A,LL3
MOVC A,@A+DPTR
MOV P0,#0FFH
MOV P2,#20H
MOV P0,A
MOV A,LL4
MOVC A,@A+DPTR
MOV P0,#0FFH
MOV P2,#10H
MOV P0,A
MOV A,LL5
MOVC A,@A+DPTR
MOV P0,#0FFH
MOV P2,#08H
MOV P0,A
MOV A,LL6
MOVC A,@A+DPTR
MOV P0,#0FFH
MOV P2,#04H
MOV P0,A
LJMP DETACH
INT11: MOV AS,A
MOV TH1,#0ECH
MOV TL1,#81H
INC N
MOV A,N
CJNE A,#200,OVER;是否计满1秒
MOV V ALUEL,TL0 ;存放计数值
MOV V ALUEH,TH0
LCALL HTOD
MOV LL1,DATE4
MOV LL2,DATE3
MOV LL3,DATE2
MOV LL4,DATE1
MOV LL5,DATE0
MOV LL6,#0
LCALL CHANGE
MOV N,#0
MOV M,#1
CLR TR0 ;关闭计数器
MOV TH0,#0
MOV TL0,#0
SETB TR0
CLR TR1 ;关闭定时器
MOV TH1,#0ECH
MOV TL1,#81H
SETB TR1
MOV A,AS
OVER: RETI
INT00: INC M
MOV TH0,#0
MOV TL0,#0
RETI
CHANGE: DJNZ M,NEXT
RET
NEXT: MOV V ALUEH,#0FFH
MOV V ALUEL,#0FFH
LCALL HTOD
MOV B,#10
MOV A,LL1
ADD A,DATE4
DIV AB
MOV LL1,B
MOV B,#10
ADD A,LL2
ADD A,DATE3
DIV AB
MOV LL2,B
MOV B,#10
ADD A,LL3
ADD A,DATE2
DIV AB
MOV LL3,B
MOV B,#10
ADD A,LL4
ADD A,DATE1
DIV AB
MOV LL4,B
MOV B,#10
ADD A,LL5
ADD A,DATE0
DIV AB
MOV LL5,B
MOV B,#10
ADD A,LL6
ADD A,#0
MOV LL6,A
LJMP CHANGE
HTOD: ;16位二进制转成十进制,
;结果放入DATE0-DATE4中MOV R2,V ALUEH
MOV R3,V ALUEL
CLR A
MOV R4,A
MOV R5,A
MOV R6,A
MOV R7,#10H
LOOP1:
CLR C MOV A,R3 RLC A MOV R3,A MOV A,R2 RLC A MOV R2,A MOV A,R6 ADDC A,R6 DA A
MOV R6,A MOV A,R5 ADDC A,R5 DA A
MOV R5,A
MOV A,R4
ADDC A,R4
DA A
MOV R4,A
DJNZ R7,LOOP1 CZ: MOV R0,#DATE4
MOV A,R6
ANL A,#0FH
MOV @R0,A
DEC R0
MOV A,R6
SWAP A
ANL A,#0FH
MOV @R0,A
DEC R0
MOV A,R5
ANL A,#0FH
MOV @R0,A
DEC R0
MOV A,R5
SWAP A
ANL A,#0FH
MOV @R0,A
DEC R0
MOV A,R4
ANL A,#0FH
MOV @R0,A
RET
TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80 H,90H
END。