在 MCS-51 单片机片内有一个高增益的反相放大器,反相放大器的输入端为 XTAL1,输出端为 XTAL2,由该放大器构成的振荡电路和时钟电路一起构成了单片机的时钟方式。根据硬件电路的不同,单片机的时钟连接方式可分为内部时钟方式和外部时钟方式,如下图所示。
时钟电路:(a)内部方式时钟电路,(b)外接时钟电路
在内部方式时钟电路中,必须在 XTAL1 和 XTAL2 引脚两端跨接石英晶体振荡器和两个微调电容构成振荡电路,通常 C1 和 C2 一般取 30pF,晶振的频率取值在 1.2MHz~12MHz 之间。对于外接时钟电路,要求 XTAL1 接地,XTAL2 脚接外部时钟,对于外部时钟信号并无特殊要求,只要保证一定的脉冲宽度,时钟频率低于 12MHz 即可。
晶体振荡器的振荡信号从 XTAL2 端送入内部时钟电路,它将该振荡信号二分频,产生一个两相时钟信号 P1 和 P2 供单片机使用。时钟信号的周期称为状态时间 S,它是振荡周期的 2 倍,P1 信号在每个状态的前半周期有效,在每个状态的后半周期 P2 信号有效。CPU 就是以两相时钟 P1 和 P2 为基本节拍协调单片机各部分有效工作的。
02
MCS-51 片内有一个高增益反相放大器,其输入端(XTAL1)和输出端(XTAL2)用于外接石英晶体和微调电容,构成振荡器,如图所示。电容 C2 和 C3 对频率有微调作用,电容容量的选择范围一般为 30pF 士 10pF。振荡频率的选择范围为 1.2~12MHz。
在使用外部时钟时,8051 的 XTAL2 用来输入外时钟信号,而 XTAL1 则接地。
03
上图为时钟电路的原理图。分为 单片机系统、单片机复位电路、按键电路、数码管位选电路、数码管段选电路、数码管显示电路、蜂鸣器电路、温度采集电路。
使用单片机的 P2 口进行数模的输出,P1^4、P1^5、P1^6 与 74HC138 连接实现数码管位选,按键电路接入 P1^0、P1^1、P1^2、P1^3 四个 I\O 口,通过程序控制,扫描该四个引脚的信号实现时间的调节。蜂鸣器通过与三极管 8550 连接, 终接入 P1^7,时间设定启动使其发声。温度传感器接入 P3^7,将采集到的模拟信号转化为数字信号后传到单片机。
04
ATmega16 单片机的时钟电路和输出 I/O 电路:
05
按键处理设置为:当有没键按下时,时钟正常运行;当按 K1,时钟停止走动,按 K2 对秒进行调整;当 K1 按 2 次时,按 K2 对分进行调整;当 K1 按下 3 次时,按 K2 对小时进行调整,当按下 4 次 K1 时,校时完毕,时钟按设定的时间进行正常走时。
当按 1 次 K3 进入闹钟设置界面,时钟继续进行走时,按 K2 对秒进行设置;当按 2 次 K3,按 K2 对分进行设置;当按 3 次 K3,按 K2 对秒进行设置;当按下 4 次 K3 时,闹钟设置完毕进入时钟显示界面。电路图如下:
独立按键电路
06
单片机利用外部 12MHZ 晶振构成振荡电路作为时钟源,时钟电路的原理如下图。
07
P10 控制调时分秒的哪一位,P11 调时分秒的加,P12 按下显示时间,P13 按下显示闹铃,P14 按下显示秒表,并且 P14 还是秒表的暂停和复位开关。
在单片机 C 语言编程中,模块化利用 C 语言的可移植性让编程变得便利,因而非常重要。