【E2147】基于LPC1768的万年历和实时时钟设计

2021-11-05 09:56:27      索炜达电子      534     

项目编号:E2147

文件大小:1.2M

源码说明:带中文注释

开发环境:C编译器

简要概述:

嵌入式课程设计

基于LPC1768实验开发板,设计并实现一个智能万年历。


功能说明

主页

当板载开关开启后,默认进入主页,显示当前月的日历。并有3个按钮:


Curr Month:显示当前月的日历。


Last Month:显示上一个月的日历。


Next Month:显示下一个月的日历。


主页

【E2147】基于LPC1768的万年历和实时时钟设计

设置日期页

按左右键,可以进行年、月、日的选择;按上下键,可以调整具体的数值。

【E2147】基于LPC1768的万年历和实时时钟设计

设置日期页


设置时间页

按左右键,可以进行时、分、秒的选择;按上下键,可以调整具体的数值。

【E2147】基于LPC1768的万年历和实时时钟设计

设置时间页


更多页

Night Mode:夜间模式,打开后显示屏从"白底黑字"变为"黑底白字"。


Record Date:重要事项,点击后日历将会在指定日期做一个标记。


Recover Date:恢复到上一个日期设置。若日期不小心设置错误,可以回退。


Factory Reset:时间置为出厂设置,方便出错时一键还原。

【E2147】基于LPC1768的万年历和实时时钟设计

【E2147】基于LPC1768的万年历和实时时钟设计

设置 夜间模式


设计原理

星期计算

基姆拉尔森公式,可以计算某年某月某日是星期几:


W = ( d + 2*m + 3*(m+1)/5 + y + y/4 - y/100 + y/400 + 1 ) % 7


在公式中,W表示星期几,y表示年,m表示月,d表示日。


注意,该公式有个与其它公式不同的地方:要把1月和2月看成是上一年的13月和13月,如:2004年1月10日转换成2003年13月10日代入计算。


全局变量表

由于程序有多个页面,为使得函数之间能够相互"通信",需要用到多个全局变量。

【E2147】基于LPC1768的万年历和实时时钟设计

用户函数表

【E2147】基于LPC1768的万年历和实时时钟设计

流程图

【E2147】基于LPC1768的万年历和实时时钟设计

效果图

【E2147】基于LPC1768的万年历和实时时钟设计

目录│文件列表:

 └ SoC

    ├ BSP

    │  ├ include

    │  │  │ bmboard.h

    │  │  │ fonts_16x24.h

    │  │  │ fonts_5x7.h

    │  │  │ joystick.h

    │  │  │ key.h

    │  │  │ LCD.h

    │  │  │ led.h

    │  │  └ ssd1298.h

    │  └ source

    │     │ BSP_Config.c

    │     │ joystick.c

    │     │ key.c

    │     │ LCD.c

    │     └ led.c

    ├ CMSIS

    │  ├ inc

    │  │  │ core_cm3.h

    │  │  │ core_cmFunc.h

    │  │  │ core_cmInstr.h

    │  │  │ LPC17xx.h

    │  │  └ system_LPC17xx.h

    │  └ src

    │     │ core_cm3.c

    │     │ startup_LPC17xx.s

    │     └ system_LPC17xx.c

    ├ Drivers

    │  ├ include

    │  │  │ 24LC02.h

    │  │  │ command.h

    │  │  │ lpc1768_i2c.h

    │  │  │ lpc1768_rtc.h

    │  │  │ lpc1768_timer.h

    │  │  │ lpc1768_uart.h

    │  │  └ monitor.h

    │  └ source

    │     │ 24LC02.c

    │     │ command.c

    │     │ lpc1768_i2c.c

    │     │ lpc1768_rtc.c

    │     │ lpc1768_timer.c

    │     │ lpc1768_uart_interrupt.c

    │     │ lpc1768_uart_polling.c

    │     └ monitor.c

    └ Ex10_Final

       │ Ex10_Final.uvgui.Administrator

       │ Ex10_Final.uvgui.k

       │ Ex10_Final.uvgui_Administrator.bak

       │ Ex10_Final.uvgui_k.bak

       │ Ex10_Final.uvopt

       │ Ex10_Final.uvproj

       │ Ex10_Final_Target 1.dep

       │ Ex10_Final_uvopt.bak

       │ Ex10_Final_uvproj.bak

       │ JLinkLog.txt

       │ JLinkSettings.ini

       ├ List

       │  │ Ex10_Final.map

       │  └ startup_LPC17xx.lst

       ├ Obj

       │  │ 24lc02.crf

       │  │ 24lc02.d

       │  │ 24lc02.o

       │  │ always.crf

       │  │ always.d

       │  │ always.o

       │  │ beifen.crf

       │  │ beifen.d

       │  │ beifen.o

       │  │ bsp_config.crf

       │  │ bsp_config.d

       │  │ bsp_config.o

       │  │ command.crf

       │  │ command.d

       │  │ command.o

       │  │ core_cm3.crf

       │  │ core_cm3.d

       │  │ core_cm3.o

       │  │ cursor.crf

       │  │ cursor.d

       │  │ cursor.o

       │  │ date.crf

       │  │ date.d

       │  │ date.o

       │  │ Ex10_Final.axf

       │  │ Ex10_Final.htm

       │  │ Ex10_Final.lnp

       │  │ Ex10_Final.plg

       │  │ Ex10_Final.sct

       │  │ Ex10_Final.tra

       │  │ ExtDll.iex

       │  │ home.crf

       │  │ home.d

       │  │ home.o

       │  │ iic.crf

       │  │ iic.d

       │  │ iic.o

       │  │ joystick.crf

       │  │ joystick.d

       │  │ joystick.o

       │  │ key.crf

       │  │ key.d

       │  │ key.o

       │  │ lcd.crf

       │  │ lcd.d

       │  │ lcd.o

       │  │ led.crf

       │  │ led.d

       │  │ led.o

       │  │ lpc1768_i2c.crf

       │  │ lpc1768_i2c.d

       │  │ lpc1768_i2c.o

       │  │ lpc1768_rtc.crf

       │  │ lpc1768_rtc.d

       │  │ lpc1768_rtc.o

       │  │ lpc1768_timer.crf

       │  │ lpc1768_timer.d

       │  │ lpc1768_timer.o

       │  │ lpc1768_uart_polling.crf

       │  │ lpc1768_uart_polling.d

       │  │ lpc1768_uart_polling.o

       │  │ main.crf

       │  │ main.d

       │  │ main.o

       │  │ monitor.crf

       │  │ monitor.d

       │  │ monitor.o

       │  │ more.crf

       │  │ more.d

       │  │ more.o

       │  │ note.crf

       │  │ note.d

       │  │ note.o

       │  │ other.crf

       │  │ other.d

       │  │ other.o

       │  │ repeat.crf

       │  │ repeat.d

       │  │ repeat.o

       │  │ settime.crf

       │  │ settime.d

       │  │ settime.o

       │  │ settime.__i

       │  │ startup_LPC17xx.d

       │  │ startup_LPC17xx.o

       │  │ system_lpc17xx.crf

       │  │ system_lpc17xx.d

       │  │ system_lpc17xx.o

       │  │ time.crf

       │  │ time.d

       │  │ time.o

       │  │ zancun.crf

       │  │ zancun.d

       │  └ zancun.o

       └ Source

          │ Always.c

          │ Date.c

          │ Home.c

          │ main.c

          │ More.c

          │ Other.c

          │ Time.c

          └ User.h

TAGLPC1768
  • 5 次
  • 1 分