一、驱动TM1637的时序图

二、代码实现

#encoding:utf-8
import RPi.GPIO as GPIO
import time
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
CLK=17  #时钟引脚
DIO=18  #数据引脚
segdata=[0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f]#1--9
segdatadp=[0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef]#带小数点#发送起始位,时钟为高的时候,数据线需要一个高低的跳变
def tm1637_start():GPIO.output(CLK,1) #时钟打高电平GPIO.output(DIO,1)GPIO.output(DIO,0)GPIO.output(CLK,0) #时钟打低电平
#发送停止位,数据线拉低,时钟线由低到高的跳变,产生一个停止信号给TM1637
def tm1637_stop():GPIO.output(DIO,0) #数据线打低电平GPIO.output(CLK,0) #clk 0->1GPIO.output(CLK,1)GPIO.output(DIO,1) #数据线线打高电平
#-----写位------
def write_bit(bit):GPIO.output(CLK,0) #设置时钟位拉低电平,为了准备数据if bit:GPIO.output(DIO,1) #如果要发送的数据位是1,则打高电平else:GPIO.output(DIO,0) #如果要发送的数据位是0,则打低电平GPIO.output(CLK,1)#------写字节(8个二进制位的发送)
def write_byte(data):for i in range(0,8):   #发送8个二进制位write_bit((data >> i)&0x01) #先发送低位GPIO.output(CLK,0)     #CLK打出下降沿,准备接受TM1637的应答信号GPIO.output(DIO,1)     #拉高DIOGPIO.output(CLK,1)     #拉高CLKGPIO.setup(DIO,GPIO.IN)#设置数据线输入,释放总线while(GPIO.input(DIO)):     #等待TM1637拉低===发送ACK,确认信号给树莓派pass               #占位行GPIO.setup(DIO,GPIO.OUT)#设置DIO位输出,恢复到默认状态#----------写命令,写命令只有一个参数,就是命令本身----
def write_command(cmd):tm1637_start() #发送起始位write_byte(cmd) #发送命令tm1637_stop()  #发送停止位#----写数据,两个参数,第一个参数数据写入的位置,第二个参数要写入的数据内容----
def write_data(addr,data): tm1637_start() #发送起始位write_byte(addr) #先写地址write_byte(data) #再写数据tm1637_stop()  #发送停止位#----显示数据:时 分---------
def time_display(h_shi,h_ge,m_shi,m_ge,f_dp):write_command(0x40) #写数据write_command(0x44) #固定地址write_data(0xc0,segdata[h_shi]) #写第一个数码管--小时的十位if(f_dp):write_data(0xc1,segdatadp[h_ge]) #写第二个数码管---小时的个位,带小数点else:write_data(0xc1,segdata[h_ge]) #写第三个数码管---分钟的十位write_data(0xc2,segdata[m_shi])      #写第四个数码管---分钟的个位write_data(0xc3,segdata[m_ge])write_command(0x88) #显示开def tm1637_init():GPIO.setup(CLK,GPIO.OUT)GPIO.setup(DIO,GPIO.OUT)#========main函数==========
tm1637_init() #初始化数码管
FLAGDP=1  #数点标志
while 1:now_time=time.localtime(time.time()) #取得当前的时间hour_shi=now_time[3]/10 #十分位hour_ge=now_time[3]%10 #个位min_shi=now_time[4]/10 #十分位min_ge=now_time[4]%10 #十分位FLAGDP=FLAGDP^1 #每一秒冒号跳一次,异或相同为0,不同为1time_display(hour_shi,hour_ge,min_shi,min_ge,FLAGDP)time.sleep(1)

树莓派模块化编程之TM1637驱动四位数码管相关推荐

  1. STM32 经过TM1637驱动四位数码管

    产品简介 代码 TM1637.H ```c#ifndef __TM1637_H #define __TM1637_H #include "sys.h"#define GPIO_CL ...

  2. 【实战篇】模块化编程之LCD驱动框架详解

    ID:嵌入式云IOT技术圈 作者:杨源鑫 传送门:[架构篇]嵌入式编程中如何给代码的结构分层 废话不多说,理论讲太多没啥感觉,这些条条框框本质就是基于面对对象的设计模式相关的一些理论,设计模式就是前人 ...

  3. MicroPython-On-ESP8266——数码管的使用,2片HC595驱动四位数码管

    MicroPython-On-ESP8266--数码管的使用,2片HC595驱动四位数码管 1. 背景 前面在使用四位数码管时,需要用来12个GPIO接口,结果咱micropython能驱动的esp8 ...

  4. 74HC595驱动四位数码管

    74HC595驱动四位数码管 数码管编码 出处 硬件原理图 出处 驱动程序 出处 1.数码管编码介绍 它每一段是一个发光二极管,排成一个"日"字形.通过控制某几段发光二极管的发光来 ...

  5. Arduino Uno驱动四位数码管

    Arduino Uno驱动四位数码管 我用的是 四位共阳极数码管 型号是5461BS-1数码管 接线方法 UNO引脚 数据码 3 1 4 2 5 3 6 4 7 A 8 B 9 C 10 D 11 E ...

  6. 基于STM32MP157的GPU编程之DRM驱动调试

    linux系统GPU编程之DRM编程 背景: framebuffer大家都知道哈,打开/dev/fb0设备节点,然后开辟一段内存(即显存),再mmap,在吧图形数据填充到这段显存里面.怎么填,比如QT ...

  7. TM1650芯片驱动四位数码管

    文章目录 自言自语 一.芯片图 二.通讯协议 开始信号 终止信号 发送一字节数据 获取TM1650的应答 三.TM1650的各个功能 数码管显示 数码管关闭 数码管显示数字 自言自语 今天上班被丢了块 ...

  8. 74HC595/四位按键 驱动四位数码管

    一.主要元器件和原理 GD32F303RCT6 74HC595 共阳数码管 按键(图片数码管名字有误) 风中凌乱的笔记: A1A2A3A4下拉工作模式.给A1A2A3A4一个低电平.当abcdefg来 ...

  9. js模块化编程之CommonJS和AMD/CMD

    一.CommonJS 1.CommonJS API定义很多普通应用程序(主要指非浏览器的应用)使用的API,从而填补了这个空白.它的终极目标是提供一个类似Python,Ruby和Java标准库.这样的 ...

最新文章

  1. php把proto解析为文档,Protobuf 文件生成工具 Prototool 命令详解
  2. 计算机视觉和模式识别领域SCI期刊介绍
  3. 初探swift语言的学习笔记六(ARC-自动引用计数,内存管理)
  4. 大厂「offer 收割机」修炼记
  5. 玻璃体浑浊的分子原理
  6. Linux连接状态为syn_recv,linux 服务器 syn*** 大量SYN_RECV状态处理
  7. 数据结构与算法——贪心算法
  8. static变量的作用(转)
  9. 为您的Android,iOS等应用加入声波传输功能
  10. 【语言处理与Python】1.3计算语言:简单的统计
  11. Maven的核心概念(五分钟快速掌握)
  12. python深度学习——手写字符识别
  13. 国家电网面试题计算机类,国家电网招聘面试题及参考答案
  14. 菜鸟学习C++之Console Application
  15. 电子计算机经历的四个阶段,电子计算机的发展经历了四代,其划分依据是什么?,计算机发展的四个阶段...
  16. 聚石塔服务器系统盘在线扩容
  17. php 加密算法+接口安全技术
  18. php excel水印图片大小,PHPExcel:如何在第一页标题中插入图像并将其放大以适合其内容?...
  19. PHP:执行 PHP 文件
  20. 私人定制外贸精准获客产品 外贸智能获客系统 好选客

热门文章

  1. 开关电源matlab仿真设计报告,基于MATLAB的开关电源反馈控制系统的设计和仿真
  2. Python全栈工程师(15:Socket编程4-paramiko模块和SSH秘钥)
  3. 基于Arduino的开源四轴飞行器开发学习板
  4. 计算机页面添加文字水印在哪,怎么添加水印-Word小技巧-快速添加高大上的水印...
  5. shell中的脚本测试
  6. 爬虫速成(二):数据获取
  7. 两台计算机都使用远程桌面,远程桌面设置及使用
  8. 国际短信系统平台软件源码开发路由功能—移讯云短信系统
  9. 逻辑斯蒂回归(logistic regression)原理小结
  10. python卸载及python 0x80070643 安装发生严重错误