当前位置:   article > 正文

51单片机_电子时钟&电子万年历&电子闹钟_51单片机电子日历时钟

51单片机电子日历时钟

实物演示效果:

https://www.bilibili.com/video/BV1RN4y1Q7dK/?vd_source=6ff7cd03af95cd504b60511ef9373a1d

二、液晶对比度的调节
液晶的内容要清晰显示,就要调节电位器来调节液晶的对比度,这个电位器位于液
晶的下面,可以用一字螺丝刀等工具进行转动调节。液晶的供电电压不同,显示的对比
度也不同。所以如果是电池盒供电的话,使用一段时间后,电池的电压会降低,液晶显
示的内容也会变模糊,这个时候,就要微调一下这个电位器了;而如果是 USB 供电的话,
由于电压一直稳定,所以只要在初次使用时调节就可以了。
三、时间的设置
1、上电之后,按下“设置时间按键(按键 1)”,就进入了时间设置的模式。
2、这时可以看到光标在年份的位置闪烁,代表现在在调节年份的大小。
3、可以加过“减键(按键 4)”和“加键(按键 5)”两个按键进行大小的调整。
4、设置好年份之后,当再次按下“设置时间按键”,光标就跳到了月份的位置闪烁,代
表现在在调节月份的大小。类似的操作,分别进行年、月、日、星期、小时、分钟、
秒钟的设置。
5、最后设置好秒钟之后,再按一次“设置时间按键”就退出了时间设置模式。
四、闹钟的设置
1、闹钟设置的方法和前面设置时间的方法类似,只不过这里是通过“设置闹钟按键(按
键 2)”进行切换设置选项的,“减键(按键 4)”和“加键(按键 5)”是共用的。
2、如果想启动闹钟,必须在闹钟的设置界面中,把状态设置为“ON”。
3、闹钟的持续报警时间是 1 分钟,1 分钟后会自动关闭闹钟,明天同样的时间会再次
报警。
4、闹钟响的 1 分钟时间里,如果想手动关闭闹钟的话,可以通过“减键”或“加键”
五、秒表的使用
1、按下“秒表模式键(按键 3)”之后,就进入了秒表模式。
2、按下“开始/暂停秒表键(按键 4)”可以在开始和暂停直接切换秒表的工作状态。
3、按下“秒表清零(按键 5)”之后,就可以把之前的计时清零。
4、再按一次“秒表模式键”之后,就退出了秒表模式。
六、几种工作模式的切换说明
1、本设计有 4 种工作模式,万年历模式、设置时间模式、设置闹钟模式、秒表模式。
2、必须回到万年历模式后,才能进入其他模式。比如不能直接从设置闹钟模式进入秒
表模式,而是要先从闹钟模式先退回到万年历模式,再从万年历模式进入秒表模式。
实物图
原理图(Altium Designer)
仿真图(peoteus 8.6)
时间显示界面
设置闹钟界面
部分代码
  1. void main()
  2. {
  3. int temp; // 保存温度值
  4. LcdInit(); // 执行液晶初始化
  5. DS1302_Init(); // 时钟芯片的初始化
  6. LcdShowInit(); // 液晶显示内容的初始化
  7. TimerInit(); // 定时器初始化
  8. if(DS1302_Read_Byte(0x81)>=128) // 判断时钟芯片是否正在运行
  9. {
  10. DS1302_Write_Time(); // 如果没有,则初始化一个时间
  11. }
  12. Clock_Hour=EEPROM_Read(0x2000); // 读取0x2000这个地址的内容,赋值给闹钟的小时变量
  13. if(Clock_Hour>23) // 如果读取到的闹钟小时数值不正常,则重新赋值
  14. {
  15. Clock_Hour=12;
  16. }
  17. Clock_Minute=EEPROM_Read(0x2001); // 读取0x2001这个地址的内容,赋值给闹钟的分钟变量
  18. if(Clock_Minute>59) // 如果读取到的闹钟分钟数值不正常,则重新赋值
  19. {
  20. Clock_Minute=30;
  21. }
  22. Clock_Swt=EEPROM_Read(0x2002); // 读取0x2002这个地址的内容,赋值给闹钟的开关变量
  23. if(Clock_Swt>1) // 如果读取到的闹钟开关数值不正常,则重新赋值
  24. {
  25. Clock_Swt=0;
  26. }
  27. while(DS18B20_ReadTemp()==850) // 等待温度传感器初始化完成
  28. {
  29. DelayMs(10);
  30. }
  31. while(1)
  32. {
  33. DS1302_Read_Time(); // 获取当前时钟芯片的时间,存在数组time_buf中
  34. FlashTime(); // 刷新时间显示
  35. ClockJudge(); // 闹钟工作的判断
  36. temp=DS18B20_ReadTemp(); // 读取温度
  37. LcdGotoXY(1,9); // 定位到显示温度的地方
  38. LcdPrintTemp(temp); // 显示温度
  39. KeyScanf1(); // 按键扫描(时间的设置)
  40. KeyScanf2(); // 按键扫描(闹钟的设置)
  41. KeyScanf3(); // 按键扫描(进入和退出秒表)
  42. DelayMs(100); // 延时0.1
  43. }
  44. }

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/859407
推荐阅读
相关标签
  

闽ICP备14008679号