数显计数器 数显电子计数器的使用方法

一.实验任务

利用AT89S51单片机的T0和T1的定时器功能,对输入信号的频率进行计数,计数的频率结果由8位动态数码管显示。要求准确计数0-250 kHz的信号频率,计数误差不超过1 Hz。

二、电路原理图

数显计数器 数显电子计数器的使用方法图4.31.1

第三,系统板上的硬件连接

(1)用8芯电缆连接“单片机系统”区的P0.0-P0.7和“动态数字显示”区的ABCDEFGH端口。

(2)用8芯电缆将“单片机系统”区的P2.0-P2.7与“动态数字显示”区的s 1s 2s 3s 4s 5s 7s 8端口连接。

(3)用导线将“单片机系统”区域的P3.4(T0)端子连接到“频率发生器”区域的波形端子上。

四、程序设计内容

(1)设置定时器/计数器T0和T1的工作模式。从图中可以看出,T0工作在计数状态,对输入的频率信号进行计数,但计数状态下T0的最大计数值为fOSC/24。由于FOSC = 12 MHz,T0的最大计数频率为250KHz。频率的概念是只统计一秒钟内的脉冲数,也就是频率值。所以T1工作在定时状态,每次到达一秒时,停止计数从T0的计数单元读取计数值,然后进行数据处理。送到数码管显示。

(2).T1工作在计时状态,最大计时时间65ms,达不到1秒的计时。因此,使用20次50ms的计时就可以完成1秒的计时功能。

动词 (verb的缩写)c语言源程序

# include & ltAT89X52。H & gt

无符号字符代码

dispbit={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f };

无符号字符代码dispcode={0x3f,0x06,0x5b,0x4f,0x66,

0x6d、0x7d、0x07、0x7f、0x6f、0x00、0x 40 };

无符号字符dispbuf[8]={0,0,0,0,0,10,10 };

无符号字符温度[8];

无符号字符显示计数;

无符号字符T0count

无符号字符时间计数;

位标志;

无符号长x;

无效总管(无效)

{

无符号字符I;

TMOD = 0x 15;

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;我& lt8;i++)

{

temp[I]= 0;

}

I = 0;

while(x/10)

{

temp[I]= x % 10;

x = x/10;

i++;

}

temp[I]= x;

for(I = 0;我& lt6;i++)

{

disp buf[I]= temp[I];

}

time count = 0;

t0count = 0;

void t0(void)使用0中断1

{

t0count++;

}

void t1(void)使用0中断3

time count++;

如果(时间计数==250)

{

TR0 = 0;

time count = 0;

flag = 1;

}

P0 = disp code[disp buf[disp count]];

P2 = disp bit[disp count];

disp count++;

if(dispcount==8)

{

dispcount = 0;

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

发表回复

登录后才能评论