1.11. 电子日历¶
1.11.2. 编程学习¶
打开main.py文件开始编写代码:
导入库文件:
import lcd_show import font from lcd_show import * from font import * import pyb from pyb import Pin import time import utime from random import randint import framebuf
之后开始初始化引脚,代码为:
usrspi = USR_SPI(scl=Pin('X6',Pin.OUT_PP), sda=Pin('X7', Pin.OUT),dc=Pin('X8', Pin.OUT)) disp = DISPLAY(usrspi,cs=Pin('X5', Pin.OUT),res=Pin('X4', Pin.OUT),led_en=Pin('X3', Pin.OUT)) disp.clr(disp.WHITE)
设置完毕后,即可编写函数实现日历效果的效果,代码如下:
- 画日历背景:
disp.putstr_back(0,2,"01",disp.BLACK,disp.BLUE) disp.putstr_back(3,2,"02",disp.BLACK,disp.BLUE) disp.putstr_back(6,2,"03",disp.BLACK,disp.BLUE) disp.putstr_back(9,2,"04",disp.BLACK,disp.BLUE) disp.putstr_back(12,2,"05",disp.BLACK,disp.BLUE) disp.putstr_back(15,2,"06",disp.BLACK,disp.RED) disp.putstr_back(18,2,"07",disp.BLACK,disp.RED) disp.putstr_back(0,4,"01",disp.BLACK,disp.YELLOW) disp.putstr_back(3,4,"02",disp.BLACK,disp.YELLOW) disp.putstr_back(6,4,"03",disp.BLACK,disp.YELLOW) disp.putstr_back(9,4,"04",disp.BLACK,disp.YELLOW) disp.putstr_back(12,4,"05",disp.BLACK,disp.YELLOW) disp.putstr_back(15,4,"06",disp.BLACK,disp.YELLOW) disp.putstr_back(18,4,"07",disp.BLACK,disp.YELLOW) disp.putstr_back(0,6,"08",disp.BLACK,disp.YELLOW) disp.putstr_back(3,6,"09",disp.BLACK,disp.YELLOW) disp.putstr_back(6,6,"10",disp.BLACK,disp.YELLOW) disp.putstr_back(9,6,"11",disp.BLACK,disp.YELLOW) disp.putstr_back(12,6,"12",disp.BLACK,disp.YELLOW) disp.putstr_back(15,6,"13",disp.BLACK,disp.YELLOW) disp.putstr_back(18,6,"14",disp.BLACK,disp.YELLOW) disp.putstr_back(0,8,"15",disp.BLACK,disp.YELLOW) disp.putstr_back(3,8,"16",disp.BLACK,disp.YELLOW) disp.putstr_back(6,8,"17",disp.BLACK,disp.YELLOW) disp.putstr_back(9,8,"18",disp.BLACK,disp.YELLOW) disp.putstr_back(12,8,"19",disp.BLACK,disp.YELLOW) disp.putstr_back(15,8,"20",disp.BLACK,disp.YELLOW) disp.putstr_back(18,8,"21",disp.BLACK,disp.YELLOW) disp.putstr_back(0,10,"22",disp.BLACK,disp.YELLOW) disp.putstr_back(3,10,"23",disp.BLACK,disp.YELLOW) disp.putstr_back(6,10,"24",disp.BLACK,disp.YELLOW) disp.putstr_back(9,10,"25",disp.BLACK,disp.YELLOW) disp.putstr_back(12,10,"26",disp.BLACK,disp.YELLOW) disp.putstr_back(15,10,"27",disp.BLACK,disp.YELLOW) disp.putstr_back(18,10,"28",disp.BLACK,disp.YELLOW) disp.putstr_back(0,12,"29",disp.BLACK,disp.YELLOW) disp.putstr_back(3,12,"30",disp.BLACK,disp.YELLOW) disp.put_hline(0,13,121,disp.BLACK) disp.put_hline(0,31,121,disp.BLACK) disp.put_hline(0,49,121,disp.BLACK) disp.put_hline(0,67,121,disp.BLACK) disp.put_hline(0,85,121,disp.BLACK) disp.put_hline(0,103,121,disp.BLACK) disp.put_hline(0,121,121,disp.BLACK) disp.put_vline(15,13,108,disp.BLACK) disp.put_vline(33,13,108,disp.BLACK) disp.put_vline(51,13,108,disp.BLACK) disp.put_vline(69,13,108,disp.BLACK) disp.put_vline(87,13,108,disp.BLACK) disp.put_vline(105,13,108,disp.BLACK)
- 设置初始日期,选中星期:
rtc = pyb.RTC() rtc.datetime((2014, 5, 1, 4, 13, 0, 0, 0)) a=rtc.datetime() t1=a[0] t2=a[1] t3=a[2] t4=a[3] t5=a[4] t6=a[5] t7=a[6] x=(a[3]-1)%7*3 y=((a[3]-1)//7+2)*2 if a[3]>=10: disp.putstr_back(x,y,str(a[3]),disp.WHITE,disp.WHITE) disp.putstr_back(x,y,str(a[3]),disp.BLACK,disp.PINK) else: disp.putstr_back(x,y,'0'+str(a[3]),disp.WHITE,disp.WHITE) disp.putstr_back(x,y,'0'+str(a[3]),disp.BLACK,disp.PINK)
- 显示日期,并时刻更新:
s1='year:'+str(t1) s2='month:'+str(t2) s3='day:'+str(t3) s4='weekday:'+str(t4) if t6>=10: s5='time:'+str(t5)+':'+str(t6)+':'+str(t7) else: s5='time:'+str(t5)+': '+str(t6)+':'+str(t7) disp.putstr(0,14,s1,disp.BLACK) disp.putstr(11,14,s2,disp.BLACK) disp.putstr(0,15,s3,disp.BLACK) disp.putstr(11,15,s4,disp.BLACK) disp.putstr(0,16,s5,disp.BLACK) while True: print(rtc.datetime()) a=rtc.datetime() if t1!=a[0]: disp.putstr(0,14,s1,disp.WHITE) t1=a[0] s1='year:'+str(a[0]) disp.putstr(0,14,s1,disp.BLACK) if t2!=a[1]: disp.putstr(11,14,s2,disp.WHITE) t2=a[1] s2='month:'+str(a[1]) disp.putstr(11,14,s2,disp.BLACK) if t3!=a[2]: disp.putstr(0,15,s3,disp.WHITE) t3=a[2] s3='day:'+str(a[2]) disp.putstr(0,15,s3,disp.BLACK) if t4!=a[3]: disp.putstr(11,15,s4,disp.WHITE) t4=a[3] s4='weekday:'+str(a[3]) disp.putstr(11,15,s4,disp.BLACK) if t5!=a[4]: if t5>=10: disp.putstr(5,16,str(t5),disp.WHITE) else: disp.putstr(5,16,' '+str(t5),disp.WHITE) t5=a[4] if t5>=10: disp.putstr(5,16,str(a[4]),disp.BLACK) else: disp.putstr(5,16,' '+str(a[4]),disp.BLACK) if t6!=a[5]: if t6>=10: disp.putstr(8,16,str(t6),disp.WHITE) else: disp.putstr(8,16,' '+str(t6),disp.WHITE) t6=a[5] if t6>=10: disp.putstr(8,16,str(a[5]),disp.BLACK) else: disp.putstr(8,16,' '+str(a[5]),disp.BLACK) if t7!=a[6]: disp.putstr(11,16,str(t7),disp.WHITE) t7=a[6] disp.putstr(11,16,str(a[6]),disp.BLACK)

