- 浏览: 2195347 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (1240)
- mac/IOS (287)
- flutter (1)
- J2EE (115)
- android基础知识 (582)
- android中级知识 (55)
- android组件(Widget)开发 (18)
- android 错误 (21)
- javascript (18)
- linux (70)
- 树莓派 (18)
- gwt/gxt (1)
- 工具(IDE)/包(jar) (18)
- web前端 (17)
- java 算法 (8)
- 其它 (5)
- chrome (7)
- 数据库 (8)
- 经济/金融 (0)
- english (2)
- HTML5 (7)
- 网络安全 (14)
- 设计欣赏/设计窗 (8)
- 汇编/C (8)
- 工具类 (4)
- 游戏 (5)
- 开发频道 (5)
- Android OpenGL (1)
- 科学 (4)
- 运维 (0)
- 好东西 (6)
- 美食 (1)
最新评论
-
liangzai_cool:
请教一下,文中,shell、C、Python三种方式控制led ...
树莓派 - MAX7219 -
jiazimo:
...
Kafka源码分析-序列5 -Producer -RecordAccumulator队列分析 -
hp321:
Windows该命令是不是需要安装什么软件才可以?我试过不行( ...
ImageIO读jpg的时候出现javax.imageio.IIOException: Unsupported Image Type -
hp321:
Chenzh_758 写道其实直接用一下代码就可以解决了:JP ...
ImageIO读jpg的时候出现javax.imageio.IIOException: Unsupported Image Type -
huanghonhpeng:
大哥你真强什么都会,研究研究。。。。小弟在这里学到了很多知识。 ...
android 浏览器
树莓派 1602A显示屏
下面代码本人测试过没有问题,开始运行完屏幕上什么也没有显示出来,后来调整了下电位器可以了,所以大家如果按着下面的做出来之后运行什么也没有显示的话,记得调整下电位器
LCD1602接线说明
VSS,接地
VDD,接5V电源
VO,液晶对比度调节,接电位器中间的引脚,电位器两边的引脚分别接5V和接地。
RS,寄存器选择,接GPIO14
RW,读写选择,接地,表示写模式
EN,使能信号,接GPIO15
D0,数据位0,4位工作模式下不用,不接
D1,数据位1,4位工作模式下不用,不接
D2,数据位2,4位工作模式下不用,不接
D3,数据位3,4位工作模式下不用,不接
D4,数据位4,接GPIO17
D5,数据位5,接GPIO18
D6,数据位6,接GPIO27
D7,数据位7,接GPIO22
A,液晶屏背光+,接5V
K,液晶屏背光-,接地
一共就两个文件
lcd1602.py
1602.py
将以上两个文件保存在同一个目录下,运行1602.py即可打印信息到LCD上。
自己看看代码就会用了
下面代码本人测试过没有问题,开始运行完屏幕上什么也没有显示出来,后来调整了下电位器可以了,所以大家如果按着下面的做出来之后运行什么也没有显示的话,记得调整下电位器
LCD1602接线说明
VSS,接地
VDD,接5V电源
VO,液晶对比度调节,接电位器中间的引脚,电位器两边的引脚分别接5V和接地。
RS,寄存器选择,接GPIO14
RW,读写选择,接地,表示写模式
EN,使能信号,接GPIO15
D0,数据位0,4位工作模式下不用,不接
D1,数据位1,4位工作模式下不用,不接
D2,数据位2,4位工作模式下不用,不接
D3,数据位3,4位工作模式下不用,不接
D4,数据位4,接GPIO17
D5,数据位5,接GPIO18
D6,数据位6,接GPIO27
D7,数据位7,接GPIO22
A,液晶屏背光+,接5V
K,液晶屏背光-,接地
一共就两个文件
lcd1602.py
#!/usr/bin/python # # based on code from lrvick and LiquidCrystal # lrvic - https://github.com/lrvick/raspi-hd44780/blob/master/hd44780.py # LiquidCrystal - https://github.com/arduino/Arduino/blob/master/libraries/LiquidCrystal/LiquidCrystal.cpp # from time import sleep class lcd1602: # commands LCD_CLEARDISPLAY = 0x01 LCD_RETURNHOME = 0x02 LCD_ENTRYMODESET = 0x04 LCD_DISPLAYCONTROL = 0x08 LCD_CURSORSHIFT = 0x10 LCD_FUNCTIONSET = 0x20 LCD_SETCGRAMADDR = 0x40 LCD_SETDDRAMADDR = 0x80 # flags for display entry mode LCD_ENTRYRIGHT = 0x00 LCD_ENTRYLEFT = 0x02 LCD_ENTRYSHIFTINCREMENT = 0x01 LCD_ENTRYSHIFTDECREMENT = 0x00 # flags for display on/off control LCD_DISPLAYON = 0x04 LCD_DISPLAYOFF = 0x00 LCD_CURSORON = 0x02 LCD_CURSOROFF = 0x00 LCD_BLINKON = 0x01 LCD_BLINKOFF = 0x00 # flags for display/cursor shift LCD_DISPLAYMOVE = 0x08 LCD_CURSORMOVE = 0x00 # flags for display/cursor shift LCD_DISPLAYMOVE = 0x08 LCD_CURSORMOVE = 0x00 LCD_MOVERIGHT = 0x04 LCD_MOVELEFT = 0x00 # flags for function set LCD_8BITMODE = 0x10 LCD_4BITMODE = 0x00 LCD_2LINE = 0x08 LCD_1LINE = 0x00 LCD_5x10DOTS = 0x04 LCD_5x8DOTS = 0x00 def __init__(self, pin_rs=14, pin_e=15, pins_db=[17, 18, 27, 22], GPIO = None): # Emulate the old behavior of using RPi.GPIO if we haven't been given # an explicit GPIO interface to use if not GPIO: import RPi.GPIO as GPIO self.GPIO = GPIO self.pin_rs = pin_rs self.pin_e = pin_e self.pins_db = pins_db self.GPIO.setmode(GPIO.BCM) self.GPIO.setwarnings(False) self.GPIO.setup(self.pin_e, GPIO.OUT) self.GPIO.setup(self.pin_rs, GPIO.OUT) for pin in self.pins_db: self.GPIO.setup(pin, GPIO.OUT) self.write4bits(0x33) # initialization self.write4bits(0x32) # initialization self.write4bits(0x28) # 2 line 5x7 matrix self.write4bits(0x0C) # turn cursor off 0x0E to enable cursor self.write4bits(0x06) # shift cursor right self.displaycontrol = self.LCD_DISPLAYON | self.LCD_CURSOROFF | self.LCD_BLINKOFF self.displayfunction = self.LCD_4BITMODE | self.LCD_1LINE | self.LCD_5x8DOTS self.displayfunction |= self.LCD_2LINE """ Initialize to default text direction (for romance languages) """ self.displaymode = self.LCD_ENTRYLEFT | self.LCD_ENTRYSHIFTDECREMENT self.write4bits(self.LCD_ENTRYMODESET | self.displaymode) # set the entry mode self.clear() def begin(self, cols, lines): if (lines > 1): self.numlines = lines self.displayfunction |= self.LCD_2LINE self.currline = 0 def home(self): self.write4bits(self.LCD_RETURNHOME) # set cursor position to zero self.delayMicroseconds(3000) # this command takes a long time! def clear(self): self.write4bits(self.LCD_CLEARDISPLAY) # command to clear display self.delayMicroseconds(3000) # 3000 microsecond sleep, clearing the display takes a long time def setCursor(self, col, row): self.row_offsets = [ 0x00, 0x40, 0x14, 0x54 ] if ( row > self.numlines ): row = self.numlines - 1 # we count rows starting w/0 self.write4bits(self.LCD_SETDDRAMADDR | (col + self.row_offsets[row])) def noDisplay(self): """ Turn the display off (quickly) """ self.displaycontrol &= ~self.LCD_DISPLAYON self.write4bits(self.LCD_DISPLAYCONTROL | self.displaycontrol) def display(self): """ Turn the display on (quickly) """ self.displaycontrol |= self.LCD_DISPLAYON self.write4bits(self.LCD_DISPLAYCONTROL | self.displaycontrol) def noCursor(self): """ Turns the underline cursor on/off """ self.displaycontrol &= ~self.LCD_CURSORON self.write4bits(self.LCD_DISPLAYCONTROL | self.displaycontrol) def cursor(self): """ Cursor On """ self.displaycontrol |= self.LCD_CURSORON self.write4bits(self.LCD_DISPLAYCONTROL | self.displaycontrol) def noBlink(self): """ Turn on and off the blinking cursor """ self.displaycontrol &= ~self.LCD_BLINKON self.write4bits(self.LCD_DISPLAYCONTROL | self.displaycontrol) def noBlink(self): """ Turn on and off the blinking cursor """ self.displaycontrol &= ~self.LCD_BLINKON self.write4bits(self.LCD_DISPLAYCONTROL | self.displaycontrol) def DisplayLeft(self): """ These commands scroll the display without changing the RAM """ self.write4bits(self.LCD_CURSORSHIFT | self.LCD_DISPLAYMOVE | self.LCD_MOVELEFT) def scrollDisplayRight(self): """ These commands scroll the display without changing the RAM """ self.write4bits(self.LCD_CURSORSHIFT | self.LCD_DISPLAYMOVE | self.LCD_MOVERIGHT); def leftToRight(self): """ This is for text that flows Left to Right """ self.displaymode |= self.LCD_ENTRYLEFT self.write4bits(self.LCD_ENTRYMODESET | self.displaymode); def rightToLeft(self): """ This is for text that flows Right to Left """ self.displaymode &= ~self.LCD_ENTRYLEFT self.write4bits(self.LCD_ENTRYMODESET | self.displaymode) def autoscroll(self): """ This will 'right justify' text from the cursor """ self.displaymode |= self.LCD_ENTRYSHIFTINCREMENT self.write4bits(self.LCD_ENTRYMODESET | self.displaymode) def noAutoscroll(self): """ This will 'left justify' text from the cursor """ self.displaymode &= ~self.LCD_ENTRYSHIFTINCREMENT self.write4bits(self.LCD_ENTRYMODESET | self.displaymode) def write4bits(self, bits, char_mode=False): """ Send command to LCD """ self.delayMicroseconds(1000) # 1000 microsecond sleep bits=bin(bits)[2:].zfill(8) self.GPIO.output(self.pin_rs, char_mode) for pin in self.pins_db: self.GPIO.output(pin, False) for i in range(4): if bits[i] == "1": self.GPIO.output(self.pins_db[::-1][i], True) self.pulseEnable() for pin in self.pins_db: self.GPIO.output(pin, False) for i in range(4,8): if bits[i] == "1": self.GPIO.output(self.pins_db[::-1][i-4], True) self.pulseEnable() def delayMicroseconds(self, microseconds): seconds = microseconds / float(1000000) # divide microseconds by 1 million for seconds sleep(seconds) def pulseEnable(self): self.GPIO.output(self.pin_e, False) self.delayMicroseconds(1) # 1 microsecond pause - enable pulse must be > 450ns self.GPIO.output(self.pin_e, True) self.delayMicroseconds(1) # 1 microsecond pause - enable pulse must be > 450ns self.GPIO.output(self.pin_e, False) self.delayMicroseconds(1) # commands need > 37us to settle def message(self, text): """ Send string to LCD. Newline wraps to second line""" for char in text: if char == '\n': self.write4bits(0xC0) # next line else: self.write4bits(ord(char),True) if __name__ == '__main__': lcd = lcd1602() lcd.clear() lcd.message("hello world!")
1602.py
#!/usr/bin/python from lcd1602 import * from datetime import * import commands def get_cpu_temp(): tmp = open('/sys/class/thermal/thermal_zone0/temp') cpu = tmp.read() tmp.close() return '{:.2f}'.format( float(cpu)/1000 ) + ' C' def get_gpu_temp(): tmp = commands.getoutput('vcgencmd measure_temp|awk -F= \'{print $2}\'').replace('\'C','') gpu = float(tmp) return '{:.2f}'.format( gpu ) + ' C' def get_time_now(): return datetime.now().strftime(' %H:%M:%S\n %Y-%m-%d') def get_ip_info(): return commands.getoutput('ifconfig wlan0|grep inet|awk -Faddr: \'{print $2}\'|awk \'{print $1}\'') def get_mem_info(): total= commands.getoutput('free -m|grep Mem:|awk \'{print $2}\'') free = commands.getoutput('free -m|grep cache:|awk \'{print $4}\'') return 'MEM:\n ' + free +' / '+ total +' M' lcd = lcd1602() lcd.clear() if __name__ == '__main__': while(1): lcd.clear() lcd.message( get_ip_info() ) sleep(5) lcd.clear() lcd.message( get_time_now() ) sleep(5) lcd.clear() lcd.message( get_mem_info() ) sleep(5) lcd.clear() lcd.message( 'CPU: ' + get_cpu_temp()+'\n' ) lcd.message( 'GPU: ' + get_gpu_temp() ) sleep(5)
将以上两个文件保存在同一个目录下,运行1602.py即可打印信息到LCD上。
自己看看代码就会用了
发表评论
-
树莓派加无线网卡配置WIFI热点的方法
2018-09-25 00:04 1663配置网络 安装 dnsmasq ... -
树莓派u盘格式化后放进系统后不识别
2018-09-24 19:38 935树莓派u盘格式化后放进系统后不识别 diskgenius磁盘 ... -
一些常用的命令
2018-04-25 22:57 451#获得所有设备的功能,如带宽信息(2.4GHz,和5GHz), ... -
树莓派3B创建WiFi热点
2018-04-01 11:30 7582创建WiFi热点使用的GitHub上一个开源项目: http ... -
树莓派 - L298N模块 驱动直流电机
2018-03-18 16:45 2093单片机或树莓派一般使用 L298n 模块来驱动电机 。L298 ... -
树莓派驱动LCD12864显示屏
2018-03-11 16:49 1313适用于ST7920控制器的LCD12864显示屏,使用wiri ... -
树莓派 - MAX7219(数字倒计时) - python
2018-03-04 19:04 1207写了个倒计时 #!/usr/bin/env python ... -
树莓派 - MAX7219
2018-03-04 12:44 17931.基础:认识MAX7219 拿到MAX7219驱动的LED ... -
树莓派系列教程:红外遥控
2018-02-25 14:11 2835网上淘到了一个红外接 ... -
树莓派手动指定静态IP和DNS
2018-02-16 11:58 1313在把玩树莓派的过程中 ... -
树莓派 c获取树莓派CPU温度
2018-02-14 14:23 924C语言文件IO操作 新建一个名为cpu-temp.c文 ... -
树莓派GPIO控制--C语言篇
2018-02-14 13:58 1656一. 常用开源工程简介 树莓派内核中已经编译自带了gpio的 ... -
树莓派 远程看鱼眼摄像头
2018-02-12 21:12 1053mac电脑上最好下载vlc视频软件 有两种方式, 第一种: ... -
如何安装树莓派鱼眼摄像头模块
2018-02-12 13:58 1329安装树莓派摄像头模块 视频地址:http://www.wav ... -
树莓派使用RFID-RC522A读卡器对IC卡进行读写(通过 python)
2018-02-10 21:58 23331. 配置树莓派 首先需要运行raspi-config,开启 ... -
树莓派 - 点亮LED
2017-12-31 14:14 812先按照下面这个图 连线:(对于LED,负极的那面内部的铁片很大 ... -
树莓派新手入门教程 - node下使用gpio
2017-12-24 12:43 1097安装 Node 为了运行 Node 脚本,树莓派必须安装 N ...
相关推荐
LCD1602A显示屏是一种字符型液晶显示模块,广泛应用于嵌入式系统和各种电子设备中,用于显示字符、符号和数字等信息。该模块具有16个字符长度,2行显示能力,因此得名16x2。LCD1602A显示屏的接口定义、时序图以及...
1602A显示屏是一种常见的LCD(液晶显示器)模块,常用于嵌入式系统和电子制作项目中,如单片机开发。这个标题和描述暗示了我们即将探讨的知识点主要围绕1602A显示屏的硬件特性、引脚功能、连接电路的方法以及相关的...
LCD1602A显示屏数据手册
首先,1602A液晶屏是基于HD44780控制器的常见16x2字符型液晶显示器,它可以显示两行、每行16个字符的文本信息。这种液晶屏在众多电子项目中被广泛应用,如智能家居设备、仪表盘、教学仪器等。 1. **硬件连接**: -...
1602A液晶显示屏是一种常见的字符型液晶模块,广泛应用于各种电子设备的显示界面,如Arduino、STM32等微控制器项目。这份"1602A液晶中文说明书"详细阐述了该显示器的各项参数和技术特性,对于理解和使用1602A液晶屏...
SMC1602A液晶显示模块DATASHEET使用说明书 SMC1602A 液晶显示模块的概述: SMC1602A 标准字符点阵型液晶显示模块(LCM),采用点阵型液晶显示器(LCD),可显示 16 个字符 X2 行西文字符, 字符尺寸为 2.95X4.35(WXH)mm...
在本文中,我们将深入探讨如何使用STM32微控制器通过I2C总线来驱动1602 LCD显示屏,并结合旋转编码器实现数值的增减功能。这些技术在嵌入式系统、物联网设备以及各种仪表板应用中非常常见。 首先,我们需要了解1602...
单片机c51驱动1602A液晶屏的驱动实验
LCD1602A液晶显示屏是一种广泛应用于电子项目中的显示设备,它能够显示16个字符,共2行。这种显示屏因其实惠的价格、简单的接口以及广泛的兼容性,在爱好者和工程师中非常受欢迎。使用LCD1602A显示模块可以方便地向...
1、嵌入式物联网单片机项目开发实战。每个例程都经过实战检验,简单好用。 2、代码使用KEIL 标准库开发,当前在STM32F103运行,如果是STM32F103其他型号芯片,依然适用,请自行更改KEIL芯片型号以及FLASH容量即可。...
### SMC1602A LCD 显示模块关键技术知识点解析 #### 一、SMC1602A LCD 显示模块概述 - **模块类型**:SMC1602A是一款标准字符点阵型液晶显示模块(LCM),采用了点阵型液晶显示器(LCD)。 - **显示能力**:该模块...
标题中的“LCD.zip_1602a_单片机_液晶屏”表明这是一个关于单片机控制1602A液晶显示屏的资源包。1602A液晶屏是电子工程领域...而对于有经验的开发者,这则是一个快速实现1602A液晶屏显示功能的工具,可以节省开发时间。
DS1302 时间显示系统是基于 AVR 微控制器的液晶显示系统,使用 1602 液晶显示屏显示当前时间。该系统通过 AVR 微控制器控制 DS1302 时间芯片,读取当前时间,并将其显示在液晶显示屏上。 一、DS1302 时间芯片 DS...
在本项目中,我们利用STM32通过IIC(Inter-Integrated Circuit)接口与PCF8574T扩展器通信,从而控制1602A液晶显示屏。下面将详细解释这些组件以及它们之间的交互。 首先,STM32是意法半导体(STMicroelectronics)...
本 文 和 设 计 代 码 由 FPGA 爱 好 者 小 梅 哥 编 写,未 经 作 者 许 可,本 文 仅 允 许 网 络 论 坛 复 制 转 载,且 转 载 时 请 标明原作者。【工程源码】 LCD1602数据手册
在这个项目中,它被用来读取DS18B20数字温度传感器的数据,并通过四线制驱动1602A液晶显示屏来显示温度值。HAL库(Hardware Abstraction Layer,硬件抽象层)被用作编程接口,以简化编程过程。 DS18B20是一款单总线...
总之,这个压缩包提供的资源涵盖了1602A液晶屏的基本使用、驱动编程、扩展功能实现等多个方面,对于学习和实践单片机控制液晶显示技术非常有帮助。通过这些实例和教程,学习者不仅可以了解1602液晶屏的工作原理,还...
2. **清除显示**:清除显示屏上的所有字符。 3. **光标移动**:控制光标位置。 4. **显示移动**:控制显示内容滚动。 5. **设置显示位置**:设置光标到指定位置。 #### 六、指令表 根据给定的部分内容,我们可以...
在树莓派上,通过gpio链接1602a 16*2 lcd。并显示字符。
LCD1602A是一款广泛应用于电子制作、教学实验以及小型设备显示的液晶显示屏模块,主要特点是具有16字符、2行的显示能力。在这个"lcd1602a中文资料.rar"压缩包中,我们可以找到关于SMC1602A型号的详细资料,特别是...