四、系统设计
(1)实现原理
89C51该系列单片机是采用高性能的静态80C51 设计由先进CMOS 工艺制造并带有非易失性Flash 程序存储器全部支持12 时钟和6 时钟,P89C51X2 和P89C52X2/54X2/58X2 分别包含128 字节和256 字节RAM 32 条I/O 口线3 个16 位
定时/计数器6 输入4 优先级嵌套中断结构1 个串行I/O 口可用于多机通信I/O 扩展或全双工UART以及片内振荡器和时钟电路
采用89c51单片机为主控系统,利用数码管的动态显示,实现一个简单的单片机系统。
系统的主要功能模块如下:
单片机89C51内部有5个中断源,两个计数/计时器,两个外部中断,和一个窜口通信中断,本系统设计中我们使用两个外部中断引脚和两个定时器/计数器。由于TMOD设置的不同计数器/定时器工作在不同的方式下:
位 符号 功能
TMOD.3/TMOD.7 GATE 用于定时器1 置位时只有在INT1 脚置高及TR1 控制置位
才可打开定时器/计数器,清零时置位TR1 即可打开定时器/计数器
TMOD.2/TMOD.6 C/T 控制定时器1 用作定时器或计数器清零则用作定时器从内部系统时钟输入置位用作计数器从Tn 脚输入M1 M0 定时器模式选择
M1 M0 定时器模式
0 0 13位定时器TLn 用作5 位预分频器
0 1 16位定时器/计数器无预分频器
1 0 8位自装载定时器当溢出时将THn 存放的值装入TLn
1 1 定时器0 此时作为双8 位定时/计数器TL0 作为一个8 位定时器/计数器通过标准定时器0 控制位控制TH0 仅作为一个8 位定时器由定时器1控制位控制在这种模式下定时/计数器1 关闭
TCON控制字(图3)
模式0
工作方式
此模式下定时器寄存器配置为13 位寄存器当计数从全为1 翻转为全为0 时定时器中断
标志位TFn 置位当TRn=1 同时GATE=0 或INTn=1 时定时器计数置位GATE 时允许由外部输入INTn控制定时器这样可实现脉宽测量TRn 为TCON 寄存器内的控制位图3
该13 位寄存器包含THn 全部8 个位及TLn 的低5 位TLn 的高3 位不定可将其忽略置位运行标
志TRn 不能清零此寄存器
模式0 的操作对于定时器0 及定时器1 都是相同的两个不同的GATE 位TMOD.7 和TMOD.3 分
别分配给定时器0 及定时器1
模式1
模式1 除了使用了THn 及TLn 全部16 位外其它与模式0 相同
(1)车轮的旋转次数计数
利用T1脚测量车轮旋转时产生的脉冲个数,设车轮周长约为3米,这样旋转33次为100米即为0.1公里,这样我们利用其计数33次即产生一次溢出中断,这样里程加0.1公里
(2)T0/INT0 速度的计算
利用GATE=1时 当INT0为高电平时,计数器/定时器开始工作,这样可以测量高电平的脉冲宽度,然后我们根据车轮旋转次数来决定汽车的当前速度,由于计数脉冲是很短的高电平,因此我们必须用反向器对脉冲信号反向。
INT0 计数脉冲的输入。
(3)INT1 等待计时中断/取消等待中断
司机按下等待中断按钮,产生中断,进入等待计时模式。指示灯亮,这时屏蔽该中断信号。车轮旋转计数脉冲输入有效,等到车轮旋转10次,即产生10中断,取消等待中断进入