|

楼主 |
发表于 2025-1-26 14:39:01
|
显示全部楼层
main.py如下:
#正常运行
import machine
from machine import Pin, I2C, RTC,Timer,SPI
from st7735 import ST7735
import ntptime
import network
def connect():
wifi = network.WLAN(network.STA_IF)
if not wifi.isconnected():
wifi.active(True)
wifi.connect('网络名称', '密码')
while not wifi.isconnected():
pass
print('network config:',wifi.ifconfig())
week = [' 一', 'Tuesday', 'Wednesay', 'Thursday', 'Friday', 'Saturday', '日']
time_list = ['', '', '']
#i2c = machine.SoftI2C(sda=Pin(13), scl=Pin(14))
# 初始化SPI
spi=SPI(2, baudrate=20000000, polarity=0, phase=0, sck=Pin(14), mosi=Pin(13))
lcd = ST7735(128, 160, spi,dc=Pin(16),cs=Pin(18),rst=Pin(17),rot=0,bgr=0)
lcd.font_load('./GB2312-24.fon')
rtc = RTC()
if rtc.datetime()[0] != 2025:
rtc.datetime()
def RTC_Run(tim):
datetime = rtc.datetime() # 获取当前时间
#print(datetime)
lcd.fill(0x0000) # 清屏显示黑色背景
lcd.text('lxa0的网络时钟',23,0,0xf7ff)
lcd.text(str(datetime[0]) + '-' + str(datetime[1]) + '-' +
str(datetime[2]) + ' ' + week[datetime[3]], 28, 18,0x451)
# 显示时间需要判断时、分、秒的值否小于 10,如果小于 10,则在显示前面补“0”以
# 达到较佳的显示效果
for i in range(4, 7):
if datetime[i] < 10:
time_list[i - 4] = "0"
else:
time_list[i - 4] = ""
# 显示时间
lcd.text(time_list[0] + str(datetime[4]) + ':' + time_list[1] + str(datetime[5]) + ':' + time_list[2] + str(datetime[6]), 40, 35,0xF800)
lcd.show()
connect()
ntptime.NTP_DELTA = 3155644800 #设置北京时间
ntptime.host = 'ntp.aliyun.com' #设置校时服务器
ntptime.settime()
#开启 RTOS 定时器
tim = Timer(-1)
tim.init(period=300, mode=Timer.PERIODIC, callback=RTC_Run) #周期 300ms
|
|