python代码(Ⅶ)——实时变动的七段晶码管时间

I. 引言

A. 七段晶码管的概述

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

B. 目标:实时变动的七段晶码管时间

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

Ⅱ. 软件设置

A. 必要的库和模块的安装

安装以下Python库和模块:

  • time:Python标准库,用于时间相关的操作。

Ⅲ. 实时时钟功能

A. 获取当前时间

使用Python库中的time模块获取系统当前时间。

B. 时间格式化

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

Ⅳ. 主要代码实现

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

Ⅴ. 测试和调试

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()         



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

VII. 结论

A. 可能的扩展和改进

        可以将该项目扩展为多个功能,比如闹钟、倒计时、温度显示等。通过不同的代码实现,可以将七段晶码管模块发挥更大的作用。

VIII. 参考文献

A.文章中使用的库和资料

  • Python time库官方文档:https://docs.python.org/3/library/time.html
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值