一、实验要求

利用树莓派驱动数码管,使其能显示时间和日期。通过按键,可以在时间和日期之间切换

二、实验材料

  • 按键1个
  • 4位8段数码管(共阴极) 1个
  • 杜邦线若干
  • 树莓派4B、RPi.GPIO库

三、原理介绍

关于如何驱动数码管请参考:《树莓派GPIO入门(四) :用数码管做个简单的计数器》

四、实验代码

import RPi.GPIO as GPIO
import timeGPIO.setmode(GPIO.BCM)# 定义单个数码管各段led对应的GPIO口
LED_A = 26
LED_B = 19
LED_C = 13
LED_D = 6
LED_E = 5
LED_F = 22
LED_G = 27
LED_DP = 17
LED_pins = [LED_A,LED_B,LED_C,LED_D,LED_E,LED_F,LED_G]# 定义1到4号数码管阴极对应的GPIO口
DIG1 = 12
DIG2 = 16
DIG3 = 20
DIG4 = 21
All_dig = [DIG1, DIG2, DIG3, DIG4]
All_pins = [LED_A,LED_B,LED_C,LED_D,LED_E,LED_F,LED_G,LED_DP,DIG1,DIG2,DIG3,DIG4]# 定义按钮输入的GPIO口
btn = 24
GPIO.setup(24, GPIO.IN, pull_up_down=GPIO.PUD_UP)  #在24号引脚处设置上拉电阻#将数码管LED段引脚设置为输出模式
GPIO.setup(All_pins, GPIO.OUT)#0-9的各段LED状态,1表示高电平,0表示低电平
zero = [1, 1, 1, 1, 1, 1, 0]
one = [0, 1, 1, 0, 0, 0, 0]
two = [1, 1, 0, 1, 1, 0, 1]
three = [1, 1, 1, 1, 0, 0, 1]
four = [0, 1, 1, 0, 0, 1, 1]
five = [1, 0, 1, 1, 0, 1, 1]
six = [1, 0, 1, 1, 1, 1, 1]
seven = [1, 1, 1, 0, 0, 0, 0]
eight = [1, 1, 1, 1, 1, 1, 1]
nine = [1, 1, 1, 1, 0, 1, 1]#初始化,让所有LED段熄灭状态
GPIO.output(All_pins, False)def showDigit(order, num, showDotPoint):# 先将负极拉高,关掉显示GPIO.output(All_dig, True)if (num == 0):GPIO.output(LED_pins, zero)    GPIO.output(LED_DP, showDotPoint)elif (num == 1):GPIO.output(LED_pins, one)    GPIO.output(LED_DP, showDotPoint)elif (num == 2):GPIO.output(LED_pins, two)    GPIO.output(LED_DP, showDotPoint)elif (num == 3):        GPIO.output(LED_pins, three)    GPIO.output(LED_DP, showDotPoint)elif (num == 4):GPIO.output(LED_pins, four)    GPIO.output(LED_DP, showDotPoint)elif (num == 5):GPIO.output(LED_pins, five)    GPIO.output(LED_DP, showDotPoint)elif (num == 6):GPIO.output(LED_pins, six)    GPIO.output(LED_DP, showDotPoint)elif (num == 7):GPIO.output(LED_pins, seven)    GPIO.output(LED_DP, showDotPoint)elif (num == 8):GPIO.output(LED_pins, eight)    GPIO.output(LED_DP, showDotPoint)elif (num == 9):GPIO.output(LED_pins, nine)    GPIO.output(LED_DP, showDotPoint)if (order == 1):GPIO.output(DIG1, False)elif (order == 2):GPIO.output(DIG2, False)elif (order == 3):GPIO.output(DIG3, False)elif (order == 4):GPIO.output(DIG4, False)try:t=0.005while True:# 按钮按下时显示日期,否则显示时间# 为了区别左右的数字,让第二个数码管的小数点显示出来#(本来应该是一个冒号,我们这个数码管没有,就用小数点代替了)if (GPIO.input(btn) == 0):time.sleep(t)showDigit(1, int(int(time.strftime("%m",time.localtime()))/10), False)  #月份的第一位time.sleep(t)showDigit(2, int(int(time.strftime("%m",time.localtime()))%10), True)   #月份的第二位time.sleep(t)showDigit(3, int(int(time.strftime("%d",time.localtime()))/10), False)  #日的第一位time.sleep(t)showDigit(4, int(int(time.strftime("%d",time.localtime()))%10), False)  #日的第二位else:time.sleep(t)showDigit(1, int(int(time.strftime("%M",time.localtime()))/10), False)  #时的第一位  time.sleep(t)showDigit(2, int(int(time.strftime("%M",time.localtime()))%10), True)   #时的第二位 time.sleep(t)showDigit(3, int(int(time.strftime("%S",time.localtime()))/10), False)  #分的第一位time.sleep(t)showDigit(4, int(int(time.strftime("%S",time.localtime()))%10), False)  #分的第二位except KeyboardInterrupt:pass
GPIO.cleanup()  #最后清理GPIO口

五、视频演示

由于采用的是四位数码管,所以在显示时间时只能显示出当前时间的分和秒,日期只能显示月和日。

简易电子钟

树莓派GPIO入门(五) :简易电子钟相关推荐

  1. 树莓派GPIO入门11-驱动液晶屏幕(一)

    树莓派GPIO入门11-驱动液晶屏幕(一)http://blog.mangolovecarrot.net/2016/01/30/raspi-study1101/ 本系列将驱动一块1.44"的 ...

  2. 树莓派GPIO入门(一):点亮一个LED灯

    一.实验要求 点亮一个LED灯是电子开发最常见的入门实验.本次实验分为三个小实验: (1)点亮单个LED灯,并让其亮暗闪烁 (2)通过脉宽调制(PWM)点亮单个LED灯,并让其亮暗闪烁 (3)让LED ...

  3. [RPi]树莓派GPIO入门之控制LED灯

    本文部分资料及图片来自网络 一.所需材料 树莓派4B.LED灯.面包板.杜邦线.电阻.Python程序 二.认识硬件材料 这里介绍下LED灯.面包板.杜邦线.电阻 LED灯:LED灯引脚长的一端为正极 ...

  4. 树莓派GPIO入门(三) :多种模式的LED控制器

    一.实验要求 通过LED控制器可以在流水点亮.间隔点亮.追逐点亮.全部亮并闪烁这四种模式中选择点亮LED灯的方式. 其中,↓表示有键按下,1 表示无键按下,x 表示不管有没有按键: 流水点亮即为 LE ...

  5. 树莓派驱动数码管c 语言,树莓派GPIO入门05-驱动数码管显示数字

    标准的数码管从显示内容上分7段和8段数码管两种.8段比7段多一个右下角的小数点.还有一些其他特殊的如可以显示米字形的数码管不在本文讨论范围内,其实原理都是一样的. 8段数码管由8个发光二极管组成,其中 ...

  6. 树莓派GPIO驱动原理

    1.前言 最近认真学习了树莓派,从浅到深认真分析了wiringPi实现代码,借助树莓派学习linux收获颇丰.深入学习linux一段时间后发现它非常有魅力,一个简单的IO口输出操作尽有那么多的&quo ...

  7. 树莓派python界面qt_树莓派QT入门教程——使用Qt开发界面程序控制GPIO

    树莓派QT入门教程--使用Qt开发界面程序控制GPIO 玩转树莓派2017-07-12 12:36 树莓派入门教程--使用Qt开发界面程序 前言 Qt是一个1991年由奇趣科技开发的跨平台C++图形用 ...

  8. 树莓派开发笔记(五):GPIO引脚介绍和GPIO的输入输出使用(驱动LED灯、检测按键)

    若该文为原创文章,未经允许不得转载 原博主博客地址:https://blog.csdn.net/qq21497936 原博主博客导航:https://blog.csdn.net/qq21497936/ ...

  9. Raspberry Pi 4B树莓派 |#入门教程02# 树莓派GPIO控制(Python、C)

    树莓派GPIO编号方式 功能物理引脚 从左到右,从上到下:左边奇数,右边偶数:1-40 通过打开终端窗口并运行命令,可以在Raspberry Pi上访问方便的参考pinout.该工具由GPIO零 Py ...

最新文章

  1. Windows 软件管理命令行工具scoop介绍
  2. 新网站如何推广 新建设的网站如何宣传
  3. Java 垃圾回收机制概念梳理
  4. Android --- This custom view should extend android.support.v7.widget.AppCompatTextView instead
  5. 计算机视觉与深度学习 | 复杂环境下的视觉同时定位与地图构建(SLAM)
  6. python源码精要(10)-python源代码阅读概要(1)
  7. Android-service
  8. 取出响应头中包含多个set-cookie的值
  9. 论MOS管开关对电源的影响
  10. P3329-[ZJOI2011]最小割【最小割树】
  11. LeetCode 1175. 质数排列
  12. Swagger 官方 Starter 配上这个增强方案是真的香!
  13. 数据库搭建主从mysql_数据库mysql主从搭建
  14. Linux ACL 权限
  15. php 数据类型 map,ResultMap和ResultType的区别
  16. onload 事件、DOMContentLoaded事件、DOM加载顺序
  17. oracle 导入性能,EXP,EXPDP数据导入本地性能测试的一点心得
  18. jdbc mysql 存储过程执行失败_JDBC连接执行MySQL存储过程报权限错误
  19. arcgis重分类工具详解——结合遥感影像中植被剔除实例
  20. Photoshop 2022下载安装+6大新功能教程初体验

热门文章

  1. 4.9---4.23 JIANG 将结束《C++捷径教程》 得代码上机调试工作
  2. office的使用技巧——设置论文的打印规范
  3. 【吴刚】字体设计与表现视频教程-吴刚-专题视频课程
  4. 【半导体先进工艺制程技术系列】STI应力效应(LOD效应)
  5. 织梦熊掌号提交urls.php,织梦后台如何接入熊掌号教程
  6. 【Android音视频开发】- 实时采集视频
  7. 初学者:使用Google Chrome浏览器的StumbleUpon发现新网站
  8. 手机的一些使用功能,你知道吗?
  9. Pygame文字重叠现象
  10. c语言getreal用法,这样使用Realbook,学习事半功倍!!