|
发表于 2019-1-31 22:46:26
|
显示全部楼层
比模拟电路简单,比数字电路还是简单。
模拟电路做长时间延迟缺点不必再提,现在我们说说用数字电路实现,因为单片机实现的逻辑和数字电路一样的。
针对你的要求的方法 a:
1、做两个计数器,一个是二进制计数器,比如 CD4040、CD4060 之类,作用是产生第一个也就是 15 分钟的脉冲。
2、第二个计数器是十进制计数器,比如 CD4017,4 小时是 15 分钟的 16 倍,所以做成 16 分频的,用第一个计数器产生的 15 分钟脉冲让第二个计数器计数,计数到 16 后复位,复位时输出驱动风扇的脉冲(脉冲时长 15 分钟)
方法 b:
用比较器去对计数器的输出进行比较,比如我们要求隔 53 分钟开 7 分钟,那么最简单的方法就是第一个和第二个计数器都是二进制计数器,第一个产生 1 分钟脉冲,第二个接到两个比较器上,第一个比较器在 >53 的时候输出 Active,第二个比较器在 >=60 的时候复位计数器。
用单片机实现,通常就是用方法 b,单片机一般都有片内定时器,可以产生较为精准的中断,然后在中断中计数并进行比较即可。也就是说,我们要编的程序有三个环节,
1、启动定时器并让它以适当的时间触发下面的程序,比如这个时间是 1 秒
2、计数,比如按你的要求,计数达到 14400 后,指令单片机的控制 IO 输出 Active(第一个大于比较)
3、当计数达到 15300 后,清零当前计数(第二个大于比较,清零)
实际上单片机并不复杂,它和自己用逻辑电路(前面坛友提的 CD4060、4518 计数器)搭的逻辑是一样的,而且因为不用搭电路只需要写两句代码(以上就是两句代码的破事),实际上更简单得多。
|
|