用python写实时变动的七段晶码管时间

I. 引言
A. 七段晶码管的概述
七段晶码管是一种显示器件,常用于显示数字、字母、符号等信息。它由七个发光二极管组成,可以通过不同的组合来显示不同的字符。在电子行业和通信领域,七段晶码管被广泛应用。

B. 目标:实时变动的七段晶码管时间
本文的目标是使用树莓派连接七段晶码管,实现一个实时变动的时钟,通过代码实时更新七段晶码管显示。这个实时时钟有时分秒三个模块组成,同时支持12小时和24小时格式。

2.软件设置
A. 必要的库和模块的安装
安装以下Python库和模块:

time:Python标准库,用于时间相关的操作。
3. 实时时钟功能
A. 获取当前时间
使用Python库中的time模块获取系统当前时间。

B. 时间格式化
将获取到的时间数据按照时间格式进行格式化,以便后续在七段晶码管上显示。

4. 主要代码实现
在主程序入口中,可以设置定时器,每隔一段时间执行一次实时更新函数,并循环执行。

5. 测试和调试
A. 代码测试

#!/usr/bin/env python
# coding: utf-8
 
# # Function函数与time库的应用
 
# ## 一、函数的定义
 
# ## 二、函数的调用
 
# ## 三、形参与实参
#     (1)形参:定义函数时的变量名称
#     (2)实参:调用函数时的变量值
#     (3)传递:一定是实参传递给形参
 
# ## 四、案例分析:绘制七段电子数码管时间
 
# ## 0.导入库模块
 
# In[1]:
 
 
#import turtle           #导入turtler画图库, 其方法前面一定要添加库名turtle
from turtle import*        #导入turtler画图库, 其方法前面一定不能添加库名turtle
from random import*        #导入random库, 其方法前面一定不能添加库名
import time            #导入time库, 其方法前面一定要添加库名time
 
 
# ## 1.绘制单段数码管的间隙
 
# In[1]:
 
 
def drawGap():
    penup()         #设置画笔为飞行模式
    fd(5)          #画笔前进5px
    
 
 
# ## 2.绘制单端数码管
 
# In[2]:
 
 
def drawLine(draw):
    drawGap()   #调用间隙函数
    if draw:
        pendown()        #设置如果函数参数draw为真时画笔为工作模式
    else:
        penup()           #否则画笔仍未飞行模式
    fd(20)               #画笔向前行进20px
    drawGap()         #第二次调用间隙函数
    right(90)          #将画笔向下(前进向右)旋转90度
 
 
# ## 3.绘制单个数字数码管
 
# In[3]:
 
 
def drawDigit(digit):
    #画第一段数码管
    pencolor(random(),random(),random())      #用随机函数设置画笔的颜色
    drawLine(True) if digit in[2,3,4,5,6,8,9] else drawLine(False) 
    
    #用if else 表达式画第二段数码管
    pencolor(random(),random(),random())      #用随机函数设置画笔的颜色
    drawLine(True) if digit not in [2] else drawLine(False)  
        
    #用if else 表达式画第三段数码管
    pencolor(random(),random(),random())      #用随机函数设置画笔的颜色
    drawLine(True) if digit in[0,2,3,5,6,8,9] else drawLine(False) 
        
    #用if else 表达式画第四段数码管
    pencolor(random(),random(),random())      #用随机函数设置画笔的颜色
    drawLine(True) if digit in[0,2,6,8] else drawLine(False)  
      
    left(90)           #将画笔向上(前进向左)旋转90度
    
    #用if else 表达式画第五段数码管
    pencolor(random(),random(),random())      #用随机函数设置画笔的颜色
    drawLine(True) if digit in[0,4,5,6,8,9] else drawLine(False)  
        
    #用if else 表达式画第六段数码管
    pencolor(random(),random(),random())      #用随机函数设置画笔的颜色
    drawLine(True) if digit in[0,2,3,5,6,7,8,9] else drawLine(False) 
        
    #用if else 表达式画第七段数码管
    pencolor(random(),random(),random())      #用随机函数设置画笔的颜色
    drawLine(True) if digit in[0,1,2,3,4,7,8,9] else drawLine(False) 
    
    left(180)        #将画笔反向(旋转180度)
    penup()      #将画笔设置飞行模式
    fd(20)              #将画笔前进20px
    
 
 
# In[6]:
 
 
#for i in range (6):
#  pensize(6)
#   pencolor(random(),random(),random())
#    fd(200)
#    left(60)
 
 
# ## 4.获取绘制数字(先从键盘上输入数字,再从系统中获取数字日期)
 
# In[12]:
 
 
def drawData(date):
    for i in date:
        if i=='-':
            write('年',font=("楷体",20,"normal"))
            fd(40)
        elif i=='=':
            write('月',font=("楷体",20,"normal"))
            fd(40)
        elif i=='+':
            write('日',font=("楷体",20,"normal"))
            fd(40)
        elif i==':':
            write('时',font=("楷体",20,"normal"))
            fd(40)
        elif i=='*':
            write('分',font=("楷体",20,"normal"))
            fd(40)
        elif i=='$':
            write('秒',font=("楷体",20,"normal"))
            fd(40)
        else:
            drawDigit(eval(i))
        #将获取的数字,(从键盘上或者系统中)获取的数字,字符串,转换成数据类型
 
 
# ## 5.编写主函数(设置画布和画笔的属性等)
 
# In[37]:
 
 
def main():
    setup(1500,350,0,200)     #设计画布的原点坐标(左上角 x,y)
    bgcolor('black')
    pensize(5)
    speed(200)         #画笔工作的速度为200px
    penup()
    fd(-600)      #将画笔向左移动600px
   # drawData(input('请输入你的生日数字:'))      #从键盘上获取绘制的数据
    drawData(time.strftime('%Y-%m=%d+%H:%M*%S$%A_%a')) 
    #从系统中获取相应格式的日期数据
    hideturtle()       #隐藏画笔
    done()       #关闭画笔功能
 
 
# In[44]:
 
 
time.time()
 
 
# In[45]:
 
 
time.localtime()
 
 
# In[48]:
 
 
time.strftime('%Y年%m月%d日%H时%M分%S秒%A_%a')
 
 
# ## 6.调用主函数
 
# In[41]:
 
 
if __name__ == '__main__':            #当主函数为脚本代码是执行下面主函数
    main()         
 
 
 

执行程序进行测试,检查七段晶码管是否正常显示时间。

6.结果图像

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值