6位数显频率计数器.docx

上传人:牧羊曲112 文档编号:3150129 上传时间:2023-03-11 格式:DOCX 页数:20 大小:47.98KB
返回 下载 相关 举报
6位数显频率计数器.docx_第1页
第1页 / 共20页
6位数显频率计数器.docx_第2页
第2页 / 共20页
6位数显频率计数器.docx_第3页
第3页 / 共20页
6位数显频率计数器.docx_第4页
第4页 / 共20页
6位数显频率计数器.docx_第5页
第5页 / 共20页
亲,该文档总共20页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《6位数显频率计数器.docx》由会员分享,可在线阅读,更多相关《6位数显频率计数器.docx(20页珍藏版)》请在三一办公上搜索。

1、6位数显频率计数器6位数显频率计数器 1 绪论 1.1 数字频率计数器的背景及意义 在现代社会中,随着电子工业的发展,能够精确测量各种设备仪器中电路的频率、电压、电流等参数已越来越重要。而传统的电子测量仪器中,示波器在进行频率测量时测量精度较低,误差较大。频谱仪可以准确的测量频率并显示被测信号的频谱,但测量速度较慢,无法实时快速的跟踪捕捉到被测信号频率的变化。正是由于频率计能够快速准确的捕捉到被测信号频率的变化,因此,频率计拥有非常广泛的应用范围。 在生产制造企业中,频率计被广泛的应用在生产线的生产测试中。频率计能够快速的捕捉到晶体振荡器输出频率的变化,用户通过使用频率计能够迅速的发现有故障的

2、晶振产品,确保产品质量。在计量实验室中,频率计被用来对各种电子测量设备的本地振荡器进行校准。在无线通讯测试中,频率计既可以被用来对无线通讯基站的主时钟进行校准,还可以被用来对无线电台的跳频信号和频率调制信号进行分析。 我所设计的六位数显频率计数器,是基于ATMEL公司的AT89S51单片机,通过其T0与T1的定时与计数功能,来测量输入信号的频率,并通过六位动态数码管显示出来,并且尽可能使用最少的元器件,在满足性能要求的前提下,尽量节省成本,以期最大的性价比。 1.2设计目标与要求 (1) 基于AT89S51单片机,设计一个精确测量输入信号频率的频率计数器 (2)能够精确测量频率范围在0Hz25

3、0kHz之间的输入信号 (3) 测量误差不超过1Hz (4) 使用六位数码管显示测量结果 (5) 在满足性能的前提下,尽可能使用最少的、最廉价的元器件 2设计原理及总体方案 2.1频率计的基本原理 频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率。通常情况下计算每秒内待测信号的脉冲个数,此时我们称闸门时间为1秒。闸门时间也可以大于或小于一秒。闸门时间越长,得到的频率值就越准确,但闸 1 6位数显频率计数器 门时间越长则每测一次频率的间隔就越长。闸门时间越短,测的频率值刷新就越快,但测得的频率精度就受影响。测量一个信号的频率有两种方法:第一种是计时法,用基准信号去

4、测量被测信号的高电平持续的时间,然后转换成被测信号的频率。第二种是计数法,计算在基准信号高电平期间通过的被测信号个数。根据设计要求测量0HZ250KHZ的正弦信号,首先要将正弦信号通过过零比较转换成方波信号,然后变成测量方波信号。如果用第一种方法,当信号频率超过1KHZ的时候测量精度将超出测量精度要求,所以当被测信号的频率高于1KHZ的时候需要将被测信号进行分频处理。如果被测信号频率很高需要将被测信号进行多次分频直到达到设计的精度要求。 数字频率计是一种应用很广泛的仪器电子,在广泛的应用领域内,到处可见到处理离散信息的数字电路。随着数字电路制造工业的进步,使得系统设计人员能在更小的空间内实现更

5、多的功能,从而提高系统可靠性和速度 。本论文设计采用AT89C51单片机为控制器件来制作一个0HZ250KHZ的频率计,并将所需得到的频率通过数码管显示出来。根据设计要求用单片机的内部T0产生基准信号,由INTO输入被测信号,通过定时方式计算被测信号的持续时间。通过单片机计算得出结果,最后通过数码管显示测量结果。系统的原理框图如图2-1所示。 AT89S51 单片机 频率源 6位数码管 图2-1 数字频率计系统框图 2 6位数显频率计数器 2.2 方案的确定 系统采用MCS51系列单片机AT89S51作为控制核心,门控信号由AT89S51内部的计数定时器产生,单位为1s。由于单片机的计数频率上

6、限较低(12MHZ晶振时约500KHZ),所以需对高频被测信号进行硬件分频处理,AT89S51则完成运算、控制及显示功能。由于使用了单片机,使整个系统具有极为灵活的可编程性,能方便地对系统进行功能扩展与改进。原理图如图2-2。 信号输入 单片机处理 6位数码管显示 图2-2 单片机测频原理图 在本设计方案中,我通过程序设定T0工作在计数状态下,T1工作在计时状态下。T0计数器对输入的信号经行计数,其最大计数值为fOSC/24,当fOSC=12MHz时,T0的最大计数频率为500kHz。由于信号的频率就是每秒钟信号脉冲的个数,于是我让T1工作在定时状态下,定时时间为1秒。每定时1秒钟到,就停止T

7、0的计数,然后从T0的计数单元中读取计数的数值,即完成了信号频率的测量。最后通过六位数码管显示出频率值。 由于要尽可能的使用最少的元件,在满足设计要求的前提下,我尽可能的减少了元器件的使用。将被测信号不加任何处理,直接输入单片机的T0口。而将被测信号经行放大整形、倍频锁相等处理就不再进行了。这样做会使该频率计在测量信号频率 时产生精度误差,但能够满足设计要求。 电路原理图见附录 3 6位数显频率计数器 3硬件设计 3.1 主控单元 主控单元主要是AT89C51单片机系统,采用12MHZ的晶振频率。单片机的P3.2口接被处理后的被测信号,P0口接LED显示器的数据输入端,ALE,RD,WR,P0

8、.0,P0.1通过外接控制电路接数码管显示器的控制端。单片机系统的电路如图3-1所示。 图3-1 单片机系统 AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89S51具有如下特点:40个引脚,4k Bytes

9、 Flash片内程序存储器,128 bytes的随机存取数据存储器,32个外部双向输入/输出口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗电路,片内时钟振荡器。此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,4 6位数显频率计数器 掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。 AT89S51单片机内部结构如下图: 图3-2 单片

10、机内部结构图 5 6位数显频率计数器 图3-3 单片机引脚图 管脚说明: VCC:供电电压。 GND:接地。 P0:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘

11、故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址 6 6位数显频率计数器 的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3:P3口管脚是8个带

12、内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流这是由于上拉的缘故。P3.0 RXDP3.1 TXDP3.2 /INT0P3.3 /INT1P3.4 T0P3.5 T1P3.6 /WRP3.7 /RDP3口同时为闪烁编程和编程校验接收一些控制信号。I/O口作为输入口时有两种工作方式即所谓的读端口与读引脚读端口时实际上并不从外部读入数据而是把端口锁存器的内容读入到内部总线经过某种运算或变换后再写回到端口锁存器只有读端口时才真正地把外部的数据读入到内部总线上面图中的两个三角形表示的就是

13、输入缓冲器CPU将根据不同的指令分别发出读端口或读引脚信号以完成不同的操作这是由硬件自动完成的不需要我们操心1然后再实行读引脚操作否则就可能读入出错为什么看上面的图如果不对端口置1端口锁存器原来的状态有可能为0Q端为0Q为1加到场效应管栅极的信号为1该场效应管就导通对地呈现低阻抗,此时即使引脚上输入的信号为1也会因端口的低阻抗而使信号变低使得外加的1信号读入后不一定是1若先执行置1操作则可以使场效应管截止引脚信号直接加到三态缓冲器中实现正确的读入由于在输入操作时还必须附加一个准备动作所以这类I/O口被称为准双向口89C51的P0/P1/P2/P3口作为输入时都是准双向口接下来让我们再看另一个问

14、题从图中可以看出这四个端口还有一个差别除了P1口外P0P2P3口都还有其他的功能 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚

15、被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 7 6位数显频率计数器 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器,不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的 3.2 频率采集 频率采

16、集单元主要依靠单片机的定时器/计数器,定时器/计数器实质上就是一个加1计数器,其控制电路受软件控制、切换.当定时器/计数器为定时工作方式时,计数器的加1信号由振荡器的12分频信号产生,即每过一个机器周期,计数器加1,直至计满溢出为止。显然,定时器的定时时间与系统的振荡频率有关。因一个机器周期等于12个振荡周期,所以计数频率fcount=1/12osc。如果晶振为12MHz,则计数周期为: T=1/Hz1/12=1s (3-1) 这是最短的定时周期。若要延长定时时间,则需要改变定时器的初值,并要适当选择定时器的长度。 当定时器/计数器为计数工作方式时,通过引脚T0和T1对外部信号计数,外部脉冲的

17、下降沿将触发计数。计数器在每个机器周期的S5P2期间采样引脚输入电平。若一个机器周期采样值为1,下一个机器周期采样值为0,则计数器加1。此后的机器周期S3P1期间,新的计数值装入计数器。所以检测一个由1至0的跳变需要两个机器周期,故外部的最高计数频率为振荡频率的1/24。例如,如果选用12MHz晶振,则最高计数频率为0.5MHz。虽然对外部输入信号的占空比无特殊要求,但为了确保某给定电平在变化前至少被采样一次,外部计数脉冲的高电平与低电平保持时间均需在一个机器周期以上。 8 6位数显频率计数器 3.3显示单元 本次设计中采用了LED显示器,即数码管。数码管的每一个数码段是一只发光二极管。当发光

18、二极管导通时,相应的一个点或者一个笔画发光,控制发光二极管发光组合,可以显示出所需字符。我采用了共阴极结构。在定义其显示字形的码段时,通过I/O口送出七段码 表3-1 段码表 显示字形 共 阴 0 1 2 3 4 5 6 7 8 9 3FH 06H 5BH 4FH 66H 6DH 7DH 07H 7FH 6FH LED显示模块原理图 图3-4 LED显示原理图 9 6位数显频率计数器 3.4 下载连接 下载链接部分采用 MAX232串口通信模块,由于串口用的是TTL电平,和RS232电平不同,因此,单片机和PC通信时需要进行电平转换,常用的IC是MAX232,连接图如图所示,其中MAX232供

19、电脚为5V,中间连接的电解电容取50V 1UF。 图3-5 MAX232内部框图 图3-6 单片机和PC通信连接图 10 6位数显频率计数器 4 软件设计 根据硬件和毕业设计所要求的功能,在KEIL51开发环境下编译程序,首先要定义相关参量,然后初始化中断,打开外中断,T0是工作在计数状态下,对输入的频率信号进行计数,但对工作在计数状态下的T0,最大计数值为fOSC/24,由于fOSC12MHz,因此:T0的最大计数频率为250KHz。对于频率的概念就是在一秒只数脉冲的个数,即为频率值。所以T1工作在定时状态下,每定时1秒中到,就停止T0的计数,而从T0的计数单元中读取计数的数值,然后进行数据

20、处理。送到数码管显示出来。T1工作在定时状态下,最大定时时间为65ms,达不到1秒的定时,所以采用定时50ms,共定时20次,即可完成1秒的定时功能。编译实现相关功能程序,实现毕业设计所要求的功能,程序流程图如下图所示: 初始化 T0/T1初始化从P32接受外部中断请求 T1定时器 是否达到 1秒 计数显示 结束 图4-1 程序流程图 所编译程序见附录II。 11 6位数显频率计数器 5 硬件的调试与结论 5.1硬件调试 检查电路板 首先检查是否有虚焊,集成块管脚位置是否正确,各元器件是否都接对,电源引线位置是否恰当等,确认无误后进入下一步。 检查电源 在不插AT89S51和MAX232芯片的

21、情况下,给电路板加上+5V的电源,看电源指示LED是否能够正常点亮,LED亮说明电路正常,如果LED没有亮起则返回上一步,如正确则进入下一步。 检查芯片管脚电压 在不插芯片的情况下,用数字万用表调到电压档检查AT89S51芯片管脚座20、40间是否有+5V的电压,然后再检查MAX232芯片管脚座15、16间是否也有+5V的电压,要是检查都满足+5V的电压,断开电源将两芯片插入管脚座中,继续下一步检查工作。 检查下载线接口 由于要将程序写入单片机芯片中,故板子上留出了和下载线连接的接口JP1。单片机芯片插入电路后,用已经做好的下载线将PC与电路板JP1接口相连接,在电脑上运行下载程序软件,如图5

22、-1 图5-1 写单片机软件界面 12 6位数显频率计数器 在软件界面上点检测器件,要是软件右边状态框内显示能找到器件,就说明下载线接口JP1连线正确,并可以将在电脑上调试好的C程序写入单片机中,要是软件显示没有检测到芯片那就要检查JP1接口的连线是否正确。 检查单片机与LED数码管连接 给单片机写入一个检测程序,让8位LED数码管都显示同一个数字,看数码管是否能够正常的显示这个数字。测试结果数码管都显示同一数字说明数码管与单片机连接正常。 检查单片机复位开关 在测试数码管时,按下单片机复位按钮SW6,8位LED数码管出现短暂的无显示状态后又能重新显示同一数字说明单片机复位按钮有效。 经过以上

23、各部的检查,如果每一步都能满足要求,说明电路硬件部分已经正常,可以进行硬件的测试工作。 5.2软件调试 按照程序流程图4-1把编写好的程序用KEIL-51单片机编译系统编译,编译成功后,再把程序转换为 在程序编写过程中首先要考虑数码管是共阴还是共阳的,不同的数码管的结构不一样,所采用的编码也不一样,本电路采用的是共阴的数码管,所以其编码如下: 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40 0 1 2 3 4 5 6 7 8 9 熄灭 所用C语言程序为:unsigned char code dispcode=0x3f,0x

24、06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40; 接下来要考虑哪个口做定时器哪个口做计数器接口,该电路的设计思路是用T1做定时器接口,而T0做计数器接口,并且还要考虑定时器/计数器的工作模式,根据设计思路来设计程序,故编写出料 如下的C语言程序: TMOD为8位寄存器,用于控制T0和T1的工作方式和工作模式。低4位用于T0,高4位用于T1。 我们要将T0口作为定时器那么低四位中的C/位的编码应该为1,而将T1口作为计 13 6位数显频率计数器 数器接口那么高四位中的C/位的编码应该为0,并且要使T0和T1都工作在模式1方式,那么其编码

25、都应该为01,所以就有编码为00010101,转化为十六进制编码就是0x15。 所以有TMOD=0x15 TH0=0; /初始化计时器1的高位 TL0=0; /初始化计时器1的低位 TH1=(65536-4000)/256;/初始化计时器1的高位 TL1=(65536-4000)%256;/初始化计时器1的低位 TR1=1; /开计时器1 TR0=1; /开计时器0 ET0=1; /开外部计时中断0 ET1=1; /开外部计时中断1 EA=1; /开总中断 定义完了定时器和计数器以及中断的内容之后进入主程序的编写,编写完所有程序之后进行编译并将生成的可执行文件后写入AT89S51单片机。 此时

26、单片机上显示6位全零,加入信号源时数码管能显示输入信号的频率说明程序基本上没有问题,可以进行进一步的测试工作了。 5.3硬件测试与结论 硬件测试时需要用到的器件有:数字万用表、稳压电源以及函数信号发生器EE1643 。 将稳压电源调至+5V,后用数字万用表进行测量,看输出的直流电压是否已经满足+5V的要求,然后将函数信号发生器打开,给电路加上一个+5V的方波信号,频率从0Hz开始不断增大直至200KHz信号,看电路的LED数码管显示是否与函数信号发生器给出的频率一致,如果能达到基本一致,再进行下一步的测试工作。 将函数信号发生器的输出频率调至1KHz保持不变,这个时候调动发生器的信号电压,使其

27、不断增大至+5V时停止调动,当信号电压增大至+1.5V的时候,数码管上开始显示信号源频率。 将将函数信号发生器的输出电压保持在+5V保持不变,此时调动信号发生器的输 14 6位数显频率计数器 出频率,观察LED数码管上显示的频率和信号发生器上显示的频率进行比对,当测试频率在5KHz位置时LED数码管上测试的频率误差开始增大。 完成以上测试后与原理相符合,硬件没有问题,计数结果准确无误,完全达到设计要求。本毕业设计为基于AT89S51单片机的频率计的设计装置,以AT89S51为核心,包括单片机系统模块,LED显示模块、已经串口通信模块,实现对输入信号的频率的测试功能。其中单片机系统模块做为核心处

28、理中断信号,并输出信号,显示在LED显示模块上。经过不断的摸索和严格调试,本设计实现了所要求的功能,完全符合要求。 经过这次毕业设计使我受益匪浅,旧知识得到加强,单片机的应用,LED显示管等,增加了新知识,开阔了视野。从中我学到了更多关于电子制作的知识,从原理图的设计到电路板的焊接,到调试出结果,整个过程虽然遇到了许多困难,但经过本人的不懈努力和指导老师的殷勤指导,以及同学的热心帮助下,不断查找资料,更换器件,力求更简单更实用,以至最终实现了本次课程设计。并且通过这次课设的实践,培养了自己对本专业学习的更为浓厚的兴趣与爱好,提高了自己的动手能力,以及与同学团结协作的能力。 更重要的是自身的自学

29、能力和动手能力得到很大的提高,做毕业设计的过程是在不断的学习和探索的过程,当出现困难的时候能够沉着、冷静、正确的面对和处理困难。本毕业设计分为4大模块,要做出来还是有一定困难的,这更锻炼了自己运筹帷幄的能力。我相信有了这次毕业设计的整个经历,为将来进行更高新知识与学习带来了很大的益处,也为走上社会奠定了坚实的基础。 15 6位数显频率计数器 致 谢 首先,感谢我的指导老师尤连荣老师。在整个毕业设计期间,他都给予我很大的帮助。我的每一点成绩都凝聚着尤老师的心血,他不但授予我理论知识而且教会了我解决问题的能力。还要感谢葛明涛老师,葛老师在百忙之中抽出时间来为我耐心的辅导,无论是学习上还是生活上,葛

30、老师深厚的学术功底,严谨的治学作风,精益求精的工作态度,时时影响着我,感染着我,激励着我,言传身教,为我将来的工作奠定了坚实的基础,使我终身受益。 这次课程设计,我得到了各方面的帮助和支持,没有大家的指导和帮助我是无法短时间内圆满完成任务的。感谢我的朋友,同学,与他们一起工作生活,带给我很多的快乐,与他们一起讨论,使我学到了很多知识。感谢和我一起学习,生活的所有同学,他们的关心和帮助使我感受到集体的温暖。 我深知,电子技术发展迅猛,知识点也多,尽管在做毕业过程中作了很大努力,但由于水平和视野的限制,毕业设计设中一定有不足之处,希望大家给予批评指正。 再次对给予我帮助的老师和同学表示衷心的感谢。

31、 16 6位数显频率计数器 参考文献 1 孙安青.AT89S51单片机实验及实践教程. 北京:电子工业出版社,2004 2 张辉,陈粤初.单片机开发与典型应用设计. 合肥:中国科学技术大学出版社,1997. 3 江国强现代数字逻辑电路M北京:电子工业出版社,2002. 4 何立民单片机应用选编465 M北京:北京航空航天出版社,XX年 5 阮忠,林金宝,陈强综合电子电路应用指南 M北京:机械工业出版社,XX年 6 江国强现代数字逻辑电路M北京:电子工业出版社,2002. 7 谢自美.电子线路设计.实验.测试(第二版). 武汉:华中科技大学出版社,2000. 8 曹巧媛单片机原理及应用 M北京:

32、电子工业出版社 , XX年 9 Donald A. Neamen. Electronic circuit analysis and designM. Tsinghua University Press and Springer Verlag.2002. 10 Richard c.Dorf.modern conctrol systermM. BEIJING:Science Publishing House,2002 17 6位数显频率计数器 附 录 附录I 毕业设计原理图 18 6位数显频率计数器 附录II 设计源程序 #include unsigned char code dispbit=0x

33、fe,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 dispbuf8=0,0,0,0,0,0,10,10;/数码管显示内容数组 unsigned char temp8;/数码管显示内容缓冲数组 unsigned char dispcount;/显示计数 unsigned char T0count; /计时器0的计数 un

34、signed char timecount; bit flag; /频率计开始工作标志位 unsigned long x; /八个数码管显示的数 void main(void) unsigned char i; TMOD=0x15;/设置两个计时器模式 TH0=0; /初始化计时器1的高位 TL0=0; /初始化计时器1的低位 TH1=(65536-4000)/256;/初始化计时器1的高位 TL1=(65536-4000)%256;/初始化计时器1的低位 TR1=1; /开计时器1 TR0=1; /开计时器0 ET0=1; /开外部计时中断0 ET1=1; /开外部计时中断1 EA=1; /

35、开总中断 19 6位数显频率计数器 while(1) if(flag=1) flag=0; x=T0count*65536+TH0*256+TL0; for(i=0;i8;i+) / tempi=0; /清缓冲数组内容 i=0; while(x/10) tempi=x%10; /把个位数给缓冲区 x=x/10; i+; tempi=x; / 把十位数给缓冲 for(i=0;i6;i+) dispbufi=tempi;/把高六位的数给显示缓冲区 timecount=0;/清0 T0count=0; TH0=0; TL0=0; 20 6位数显频率计数器 TR0=1; void t0(void) interrupt 1 using 0 /中断计时器0实行的函数 T0count+; void t1(void) interrupt 3 using 0 /中断计时器1的函数 TH1=(65536-4000)/256; TL1=(65536-4000)%256; timecount+; if(timecount=250) TR0=0; timecount=0; flag=1; P0=dispcodedispbufdispcount; /数码管显示内容 P2=dispbitdispcount; /数码管选通 dispcount+; if(dispcount=8) dispcount=0; 21

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号