假设早上7:00:00开 晚上21:00:00 关 控制输出高低电平
程序如何写?
对于这种有RTC(实时时钟)需求,由于51单片机没有内置RTC芯片,可以外接一个RTC芯片,如DS12C887等,这种RTC芯片就像一个时钟一样,在设置好当前时间后,按照当前的时间计时走下去,还可以有闹钟,农历,自动闰年计算等功能,而且RTC芯片可以支持纽扣电池供电,就算主MCU掉电了,RTC还在跑。
所以,按照楼主的需求,接一个这样的RTC芯片,设置好闹钟,在7:00和21:00时RTC芯片中断触发51单片机,51单片机再输出高低电平就可以了。
为什么不推荐直接51芯片计时呢?因为一般MCU掉电了,数据就丢失了,并不知道当前时间是什么时候,如果想复杂些,还可以用网络TCP校时等操作。
找一款实时时钟芯片,比如DS1302,模拟I2C接口驱动它,计时过程中可以查询时间,也可以在预定时间触发中断,然后控制输出高低电平。
时钟芯片这里加一个纽扣电池。
这个需要用到时钟芯片的,51单片机一般用ds1302,程序一般在开发板例程有的
RTC可以使用DS系列的时钟芯片,精度还是可以的。
使用前要进行时钟的校正,然后就是判断时间后对GPIO进行设置
使用时钟芯片,51单片机询问时间。