未加星标

Python开发实例之TPYBoard控制8*8LED点阵显示温度

字体大小 | |
[开发(python) 所属分类 开发(python) | 发布者 店小二05 | 时间 2016 | 作者 红领巾 ] 0人收藏点击收藏

Micropython顾名思义就是可以在单片机上跑的Python,借助Micro Python,用户完全可以通过Python脚本语言实现硬件底层的访问和控制,比如说控制LED灯泡、LCD显示器、读取电压、控制电机、访问SD卡等。目前支持MicroPython的开发板有好几种,下面就以TPYBoard为例,简单介绍一下简易温度传感器的制作方法。


Python开发实例之TPYBoard控制8*8LED点阵显示温度
1、实验目的

1. 学习在PC机系统中扩展简单I/O 接口的方法。

2. 进一步学习编制数据输出程序的设计方法。

3. 学习DS18B20的接线方法,并利用DS18B20检测当前温度

3. 学习8*8LED点阵接线方法,并将当前温度显示

2、所需元器件

TPYBoard板子一块

数据线一条

杜邦线若干

8*8LED点阵一个

DS18B20温度传感器一个

3、学习DS18B20的接线方法,检测当前温度


Python开发实例之TPYBoard控制8*8LED点阵显示温度

先看一下DS18B20针脚含义,如上图:

TPYBoard的针脚与DS18B20的针脚对应关系如下:

TPYBoard DS18B20

----------------

# 3V3 or any Pin => VDD

# any Pin => DO

# GND => GND

还是看不明白的话,直接上针脚编号

TPYBoard LCD5110

----------------------------

3.3v => VDD

GND => GND

Y10 => DO

接线ok后,在MicroPython的源码目录中,进入drivers\onewire\目录,然后将目录下的文件ds18x20.py和onewire.py复制到PYBFLASH磁盘的根目录。复制文件后要安全退出磁盘,然后重新接入,不然找不到文件,即可运行main.py文件了,打印温度,即可用Putty看到当前的温度。

main.py源代码:

#main.py import pyb from pyb import Pin from ds18x20 import DS18X20 Pin("Y11",Pin.OUT_PP).low()#GND Pin("Y9",Pin.OUT_PP).high()#VCC pyb.delay(100) DQ=DS18X20(Pin('Y10'))#DQ while True: tem = DQ.read_temp() print(tem) pyb.delay(1000) 4、点亮8*8LED点阵
Python开发实例之TPYBoard控制8*8LED点阵显示温度

点阵后面有两排针脚,一排以1开头,即1-8针脚,一排以9开头,即9-16针脚,上图中0中的数字对应的即为针脚的对应的数字,当ROW 的PIN NO.高电平,COL PIN NO.低电平时候,我们的LED即全部点亮了,为了方便操作行和列,我们可以将ROW的8个引脚接到我们TPYBoard的X1-X8,COL的8个引脚接到我们TPYBoard的Y1-Y8,这样我们控制X引脚Y引脚就可以控制哪个点亮跟灭了,想显示任何字都没问题,快来试试吧。

5、点将温度显示在8*8LED点阵上

接线成功以后,我们将测试出温度通过分割函数将十位,个位,小数点,以及后面的数字显示出来,代码如下:

import pyb from pyb import Pin from ds18x20 import DS18X20 x_PIN = [Pin(i, Pin.OUT_PP) for i in ['X1','X2','X3','X4','X5','X6','X7','X8']] y_PIN = [Pin(i, Pin.OUT_PP) for i in ['Y1','Y2','Y3','Y4','Y5','Y6','Y7','Y8']] temp=['0000,0110,0110,0110,0110,0110,0110,0000','1101,1101,1101,1101,1101,1101,1101,1101, '0000,1110,1110,0000,0111,0111,0111,0000','0000,1110,1110,0000,1110,1110,1110,0000', '0101,0101,0101,0000,1101,1101,1101,1101','0000,0111,0111,0000,1110,1110,1110,0000', '0000,0111,0111,0000,0110,0110,0110,0000','0000,1110,1110,1110,1110,1110,1110,1110', '0000,0110,0110,0000,0110,0110,0110,0000','0000,0110,0110,0000,1110,1110,1110,0000'] tempValue=0 def show(l_num,r_num): flag=0 for x_ in range(0,8): for x_ in range(0,8): if x_!=flag: x_PIN[x_].value(0) left_ = temp[l_num] left_item=left_.split(',') right_ = temp[r_num] right_item=right_.split(',') li_l=left_item[flag] li_r=right_item[flag] y_PIN[0].value(int(li_l[:1])) y_PIN[1].value(int(li_l[1:2])) y_PIN[2].value(int(li_l[2:3])) y_PIN[3].value(int(li_l[3:4])) y_PIN[4].value(int(li_r[:1])) y_PIN[5].value(int(li_r[1:2])) y_PIN[6].value(int(li_r[2:3])) y_PIN[7].value(int(li_r[3:4])) x_PIN[flag].value(1) flag=flag+1 pyb.delay(2) def display(time_,l_num,r_num): for x in range(0,time_): for y in range(0,110): show(l_num,r_num) if __name__=='__main__': #time_t=Timer(4,freq=5,callback=randSensor) DQ=DS18X20(Pin('Y10'))#DQ while 1: tempValue =int(DQ.read_temp()) print(tempValue) l_n=tempValue//10 r_n=tempValue%10 print(l_n) print(r_n) display(60,l_n,r_n) for i in x_PIN: i.value(0)

本文开发(python)相关术语:python基础教程 python多线程 web开发工程师 软件开发工程师 软件开发流程

主题: Python显示器UT数据设计方法
分页:12
转载请注明
本文标题:Python开发实例之TPYBoard控制8*8LED点阵显示温度
本站链接:http://www.codesec.net/view/480513.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 开发(python) | 评论(0) | 阅读(24)