历史上的今天
今天是:2025年04月23日(星期三)
2021年04月23日 | 51单片机6位数显频率计数器
2021-04-23 来源:eefocus
简介:利用AT89S51单片机的T0、T1的定时计数器功能,来完成对输入的信号进行频率计数,计数的频率结果通过8位动态数码管显示出来。要求能够对0-250KHZ的信号频率进行准确计数,计数误差不超过±1HZ。
1.电路原理图

图4.31.1
2.系统板上硬件连线
(1).把“单片机系统”区域中的P0.0-P0.7与“动态数码显示”区域中的ABCDEFGH端口用8芯排线连接。
(2).把“单片机系统”区域中的P2.0-P2.7与“动态数码显示”区域中的S1S2S3S4S5S6S7S8端口用8芯排线连接。
(3).把“单片机系统”区域中的P3.4(T0)端子用导线连接到“频率产生器”区域中的WAVE端子上。
3.程序设计内容
(1).定时/计数器T0和T1的工作方式设置,由图可知,T0是工作在计数状态下,对输入的频率信号进行计数,但对工作在计数状态下的T0,最大计数值为fOSC/24,由于fOSC=12MHz,因此:T0的最大计数频率为250KHz。对于频率的概念就是在一秒只数脉冲的个数,即为频率值。所以T1工作在定时状态下,每定时1秒中到,就停止T0的计数,而从T0的计数单元中读取计数的数值,然后进行数据处理。送到数码管显示出来。
(2).T1工作在定时状态下,最大定时时间为65ms,达不到1秒的定时,所以采用定时50ms,共定时20次,即可完成1秒的定时功能。
3.C语言源程序
#include unsignedcharcodedispbit[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsignedcharcodedispcode[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40}; unsignedchardispbuf[8]={0,0,0,0,0,0,10,10}; unsignedchartemp[8]; unsignedchardispcount; unsignedcharT0count; unsignedchartimecount; bitflag; unsignedlongx; voidmain(void) { unsignedchari; 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; } } } voidt0(void)interrupt1using0 { T0count++; } voidt1(void)interrupt3using0 { 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; } }
史海拾趣
|
想在pc和device之间通过rapi进行通信,但是找不到rapi.lib 哪位兄弟有给发一个到邮箱guopeixin@yahoo.com.cn中, 先行谢过了… 查看全部问答> |
|
应届毕业生,公司要求学ecos,但是从来没有接触过,身边也没有人懂这个,在网上转了一大圈也没找到多少资料,有懂行的朋友能帮忙推荐一两本好点的书吗? 我在淘宝找了下找到了下面3本书: 《嵌入式可配置实时操作系统eCos技术及实现机制》 《嵌 ...… 查看全部问答> |
|
USB可以称得上是目前最为成功,最有优势的外设接口规范,随着时代的发展,外设的进步,USB接口规范也需要有相应的配套升级,于是所谓的“SuperSpeed USB”(超高速USB)出现了,也就是我们今天要重点介绍的USB 3.0的优势。 USB 3.0有两大最能拿得 ...… 查看全部问答> |
|
从语言进步到编程 1. 语言和编程本是两码事 分不清语言和编程的人,估计很能学得好编程。 1.1 盲从技术只能让你晕的更久 和其它事物一样,软件编程的发展也经历了从低级到高级的各个阶段。从机器代码到汇编语言,从汇编语言到高级 ...… 查看全部问答> |
|
大家编程都用什么仿真器?又一个 Jlink 固件升级后变成 unknow device 在淘宝上买了两个 J-Link V8,现在两个都已经因为固件升级变成了 unknown device. J-Link 功能强大,确实是非常不错的仿真器。 大家有没有比 J-Link 觉得更好用的仿真器呢? … 查看全部问答> |




