到P2端口与74HC4511译码器连接输出待显示的个位与十位的
f数据,P1端口与74HC4511译码器连接输出频率计的百位和千位,P3端口连接信号输入电路。P3是一带有内部上拉电阻的8位双向的IO端口,它的输出缓冲能驱动4个TTL逻辑门电路。当向P3口写1时,通过内部上拉电阻把端口拉到高电平,此时可以用作输入口。作为输入口,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出电流(IIL)。223译码显示74HC4511译码器是4线七段译码驱动器,在设计中用它来译码并且驱动数码显示管来显示数值,共需要4个74HC4511和4个七段显示数码管。89C51单片机P2端口与74HC4511译码器连接输出待显示的个位与十位的值,P1端口与74HC4511译码器连接输出频率计的百位和千位的值。224系统硬件电路图
C1
22PF
C2
22PF
X1
12MHz
U5
19XTAL1P00AD0P01AD1P02AD2P03AD3P04AD4P05AD5P06AD6P07AD7P20A8P21A9P22A10P23A11P24A12P25A13P26A14P27A15P30RXDP31TXDP32INT0P33INT1P34T0P35T1P36WRP37RD393837363534333221222324252627281011121314151617
U3
7126345ABCDLTBILESTB74HC4511QAQBQCQDQEQFQG1312111091514
R1
10k
18
XTAL2
U2
1312111091514QAQBQCQDQEQFQG74HC4511ABCDLTBILESTB7126345
9
RST
C3
20μF293031PSENALEEA
U4
7126345ABCDLTBILESTB74HC4511QAQBQCQDQEQFQG1312111091514
U1
1312111091514QAQBQCQDQEQFQG74HC4511ABCDLTBILESTB7126345
12345678
P10P11P12P13P14P15P16P17AT89C51
信号源
图2系统硬件电路图
3
31
设计过程
程序流程图
f开始
停止定时计数器
重装定时器初值TMOD赋初值51H
定时器初值3CB0H计数值>01H4H?开定时中断
Y
频率显示9999N计数器初值0000H计数值乘以14H
启动定时计数器
16进制转换为10进制
等待中断
显示
结束
图3程序流程图
32初始化程序部分采用12MHz的晶体振荡器的情况下,一秒的定时已超过了定时器可提供的最大定时值。为了实现一秒的定时,采用定时和计数相结合的方法实现。选用定时计数器TO作定时器,工作于方式1产生50ms的定时,再用软件计数方式对它计数20次,就可得到一秒的定时。将定时器计数器的方式寄存器TMOD,用软件赋初值51H,即B。这时定时器计数器1采用工作方式1,方式选择位CT设为1,即设T1为16位计数器。定时器计数器O采用工作方式1,CT设为0,即设TO为16位定时器。
16TCMTT50ms1us155363CB0H所以T0的初始值为计数2
f3CB0H。以下为程序代码。ORGAJMPORG0000HSTART0600H
STARTMOVTMOD51HMr