51和STM32相比,少了RTC功能
51只能使用定时器。定时器溢出的最大周期和定时器主频、计数器位数有关。
使用11.0592Mhz晶振的51机,16位计数器,12分频,最大周期70多mS。
为方便计算,可以设置一个50mS的定时器,在定时器中再递减一个长整形变量(其初值设为72000)。递减为0时,就启动蜂鸣器,并且将该变量重新设为72000。
不过,一般晶振精度有限,累计误差还是相当大的。
首先,驱动蜂鸣器,
蜂鸣器要分有源的和无源的,有源的,高低电平就可以驱动了;无源的,这需要高频脉冲,一般是在1KHZ;
然后就是定时。
建议使用定时器定时秒,然后自己算时,分,
最后通过数码管、LCD显示屏、或者串口显示出来就可以了。
时钟程序主要用到定时器子程序;
在初始化进行定时器初始化,设置好其频率,最好设置为1MS定时器;
然后进入1000次定时器中断即是1秒,以此类推,即可定时分、时;
很多中方式可以做:
1、在没有任何外设的情况下可以使用单片机自身的定时器功能来做,模拟一个时钟就行了,设定没50ms进入一个定时器中断,然后在中断里面写一个计数器累计数据,累计20次就是1秒,再写一个计数标志,累计60次就是一分钟,一次类推就可以实现蜂鸣器报警,蜂鸣器报警直接使用数据相等判断就行了。
2、如果你不会定时器的话,可以使用延时来做,但是这种当时误差很大,方式同定时器方式;
3、使用时钟芯片来做,可以使用DS1302,读取实时时钟的数据来比较判断就行了。