- 浏览: 2195323 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 浏览器
适用于ST7920控制器的LCD12864显示屏,使用wiringPi GPIO库,C语言编写.
代码在文章结尾处
硬件连接
采用LCD12864的8位并行驱动方式,与树莓派GPIO连接已在程序开头处定义
驱动原理
使用wiringPi控制GPIO,按通讯协议向LCD发送指令以及要显示的数据即可显示
主要由进制转换、字符编码转换、发送数据构成。
代码
代码在文章结尾处
硬件连接
采用LCD12864的8位并行驱动方式,与树莓派GPIO连接已在程序开头处定义
驱动原理
使用wiringPi控制GPIO,按通讯协议向LCD发送指令以及要显示的数据即可显示
主要由进制转换、字符编码转换、发送数据构成。
代码
/* 运行:sudo ./12864 [字符] 编译:gcc 12864.c -o 12864 -L lib -l wiringPi (需已安装wiringPi) by:WuSiYu */ #include <stdio.h> #include <stdlib.h> #include <stdint.h> #include <wiringPi.h> #include <iconv.h> #define LCD_RS 4 //显示屏控制线 #define LCD_RW 5 #define LCD_EN 1 #define D1 30 //显示屏数据线 #define D2 21 #define D3 22 #define D4 23 #define D5 24 #define D6 25 #define D7 26 #define D8 27 char u2g_out[255]; /*=================================================================== 功能:编码转换 输入:UTF8 输出:GB2312 ====================================================================*/ int code_convert(char *from_charset,char *to_charset,char *inbuf,int inlen,char *outbuf,int outlen){ iconv_t cd; int rc; char **pin = &inbuf; char **pout = &outbuf; cd = iconv_open(to_charset,from_charset); if (cd==0) return -1; memset(outbuf,0,outlen); if (iconv(cd,pin,&inlen,pout,&outlen)==-1) return -1; iconv_close(cd); return 0; } int u2g(char *inbuf,int inlen,char *outbuf,int outlen){ return code_convert("utf-8","gb2312",inbuf,inlen,outbuf,outlen); } /*=================================================================== 功能:总线写入 输入:十六进制数据 输出:无 ====================================================================*/ void bus_write(unsigned char data){ int t[10]; int f=0,i=0,d=data; //进制转换 for(i=0;i<8;i++){ t[i]=data%2; data=data/2; } //输出 digitalWrite(D1,t[0]); digitalWrite(D2,t[1]); digitalWrite(D3,t[2]); digitalWrite(D4,t[3]); digitalWrite(D5,t[4]); digitalWrite(D6,t[5]); digitalWrite(D7,t[6]); digitalWrite(D8,t[7]); } /*=================================================================== 功能:检查LCD忙状态 输入:无 输出:lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据。 ====================================================================*/ void chk_busy(){//检查忙位 digitalWrite(LCD_RS,0); digitalWrite(LCD_RW,1); digitalWrite(LCD_EN,1); bus_write(0xff); pinMode(D8, INPUT); while(digitalRead(D8)); pinMode(D8, OUTPUT); digitalWrite(LCD_EN,0); } /*==================================================================== 功能:写命令 输入:8位数据 输出:无 =====================================================================*/ void WriteCmd_LCD12864(unsigned char cmdcode){ chk_busy(); digitalWrite(LCD_RS,0); digitalWrite(LCD_RW,0); digitalWrite(LCD_EN,1); delay(5); bus_write(cmdcode); digitalWrite(LCD_EN,0); delay(5); } /*==================================================================== 功能:写数据 输入:8位数据 输出:无 =====================================================================*/ void WriteData_LCD12864(unsigned char Dispdata){ chk_busy(); digitalWrite(LCD_RS,1); digitalWrite(LCD_RW,0); digitalWrite(LCD_EN,1); delay(5); bus_write(Dispdata); digitalWrite(LCD_EN,0); delay(5); } /*========================================================================== 功能:发送字符串 输入:地址,字符串 输出:无 ===========================================================================*/ void WriteWord_LCD12864(unsigned char a,unsigned char *d){//向LCD指定位置发送一个字符串,长度64字符之内。 unsigned char *s; u2g(d,strlen(d),u2g_out,255); s=u2g_out; WriteCmd_LCD12864(a); while(*s>0){ WriteData_LCD12864(*s); s++; } } /*========================================================================== 功能:发送字符串2 输入:字符串 输出:无 ===========================================================================*/ void WriteWord_LCD12864_2(unsigned char *d){//向LCD发送一屏字符串,长度64字符之内。 int i=0; unsigned char *s; u2g(d,strlen(d),u2g_out,255); s=u2g_out; WriteCmd_LCD12864(0x80); while(*s>0){ WriteData_LCD12864(*s); s++; i++; if(i==16){ WriteCmd_LCD12864(0x90); } if(i==32){ WriteCmd_LCD12864(0x88); } if(i==48){ WriteCmd_LCD12864(0x98); } } } /*========================================================================== 功能:初始化LCD 输入:无 输出:无 ===========================================================================*/ void Init_LCD12864(void){ //初始化LCD屏 pinMode(D1, OUTPUT); //设置GPIO pinMode(D2, OUTPUT); pinMode(D3, OUTPUT); pinMode(D4, OUTPUT); pinMode(D5, OUTPUT); pinMode(D6, OUTPUT); pinMode(D7, OUTPUT); pinMode(D8, OUTPUT); pinMode(LCD_RS, OUTPUT); pinMode(LCD_RW, OUTPUT); pinMode(LCD_EN, OUTPUT); WriteCmd_LCD12864(0x38); //选择8bit数据流 delay(20); WriteCmd_LCD12864(0x01); //清除显示,并且设定地址指针为00H delay(20); WriteCmd_LCD12864(0x0c); //开显示(无游标、不反白) delay(20); } int main (int args, char *argv[]){ wiringPiSetup(); Init_LCD12864(); WriteCmd_LCD12864(0x01); WriteWord_LCD12864(0x80,"Hello LCD12864"); if(argv[1]){ WriteCmd_LCD12864(0x01); WriteCmd_LCD12864(0x80); WriteWord_LCD12864_2(argv[1]); } }
发表评论
-
树莓派加无线网卡配置WIFI热点的方法
2018-09-25 00:04 1662配置网络 安装 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 7581创建WiFi热点使用的GitHub上一个开源项目: http ... -
树莓派 - L298N模块 驱动直流电机
2018-03-18 16:45 2092单片机或树莓派一般使用 L298n 模块来驱动电机 。L298 ... -
树莓派 - MAX7219(数字倒计时) - python
2018-03-04 19:04 1206写了个倒计时 #!/usr/bin/env python ... -
树莓派 - MAX7219
2018-03-04 12:44 17931.基础:认识MAX7219 拿到MAX7219驱动的LED ... -
树莓派系列教程:红外遥控
2018-02-25 14:11 2834网上淘到了一个红外接 ... -
树莓派手动指定静态IP和DNS
2018-02-16 11:58 1312在把玩树莓派的过程中 ... -
树莓派 c获取树莓派CPU温度
2018-02-14 14:23 923C语言文件IO操作 新建一个名为cpu-temp.c文 ... -
树莓派GPIO控制--C语言篇
2018-02-14 13:58 1656一. 常用开源工程简介 树莓派内核中已经编译自带了gpio的 ... -
树莓派 远程看鱼眼摄像头
2018-02-12 21:12 1052mac电脑上最好下载vlc视频软件 有两种方式, 第一种: ... -
如何安装树莓派鱼眼摄像头模块
2018-02-12 13:58 1329安装树莓派摄像头模块 视频地址:http://www.wav ... -
树莓派使用RFID-RC522A读卡器对IC卡进行读写(通过 python)
2018-02-10 21:58 23321. 配置树莓派 首先需要运行raspi-config,开启 ... -
树莓派 1602A显示屏
2018-02-02 20:11 1285树莓派 1602A显示屏 下面代码本人测试过没有问题,开始运 ... -
树莓派 - 点亮LED
2017-12-31 14:14 811先按照下面这个图 连线:(对于LED,负极的那面内部的铁片很大 ... -
树莓派新手入门教程 - node下使用gpio
2017-12-24 12:43 1097安装 Node 为了运行 Node 脚本,树莓派必须安装 N ...
相关推荐
"LCD-show"则是一个专为树莓派设计的驱动程序,用于驱动各种类型的LCD显示屏,尤其适合那些没有内置驱动或者需要手动配置的LCD。 LCD-show驱动程序的安装与使用通常包括以下几个关键步骤: 1. **获取LCD-show驱动*...
首先,LCD3.2和LCD3.5是指具有3.2英寸和3.5英寸显示屏的液晶模块,它们通常具有分辨率较低但体积小巧的特点,适合树莓派这类小型计算平台。驱动这些屏幕的关键在于找到合适的驱动程序和库,确保树莓派能够正确识别并...
树莓派用户经常需要扩展其显示功能,而LCD3.5屏幕就是一种常用的扩展设备,它提供了比默认的HDMI接口更灵活的显示选项。本教程将详细介绍如何在树莓派上驱动3.5英寸的LCD屏幕。 首先,我们需要了解LCD3.5的基本硬件...
Python是一种流行的编程语言,常被用于树莓派上的开发工作,因此这个脚本可能是树莓派驱动LCD的关键部分。 3. "LCD1602_IIC": 这可能是一个库或者模块,提供了与1602 LCD通信的接口,它使用I2C(Inter-Integrated ...
树莓派LCD驱动/2.8/3.2/3.5/3.97/4.3/5/7等! You can focus on the following GitHub web site, for the latest lcd drivers: https://github.com/goodtft/LCD-show =============================================...
树莓派状态LCD显示屏程序C源码+程序说明.zip树莓派状态LCD显示屏程序C源码+程序说明.zip 1.基本信息: 本例程使用单独LCD模块进行了验证,你可以在工程的Examples\中查看对应的测试例程; 本例程均在Raspberry Pi 4B...
这个压缩包文件“树莓派4b镜像(默认是3.5寸lcd显示).zip”显然是为树莓派4B提供了一个预配置的操作系统镜像,特别之处在于它包含了对3.5英寸LCD显示器的支持。在本文中,我们将深入探讨树莓派4B、LCD显示驱动以及...
树莓派+3.5寸屏幕的使用方法包括硬件连接、驱动安装、屏幕校准、显示方向设置、触摸驱动安装等几个方面。通过正确地安装和配置,树莓派+3.5寸屏幕可以发挥出其强大的功能,为各种项目和应用提供强有力的支持。
标题中的“树莓派2 I2C 接口 LCD1602显示驱动程序”指的是在树莓派2型开发板上,通过I2C(Inter-Integrated Circuit)接口来控制LCD1602显示屏的驱动程序。LCD1602是一种常见的16x2字符型液晶显示器,常用于各种电子...
树莓派屏幕驱动是指在树莓派上配置和使用LCD(液晶显示器)屏幕的过程,这通常涉及到硬件连接、软件配置以及内核模块的加载。在本篇文章中,我们将深入探讨树莓派屏幕驱动的相关知识点。 首先,硬件连接是树莓派...
通过这个驱动,开发者可以方便地在树莓派上利用I2C总线控制LCD1602显示器,显示自定义的文本信息。为了使用这个驱动,你需要按照`readme.md`中的步骤配置和编译代码,然后在你的项目中调用相应的接口来与LCD进行交互...
【树莓派2——驱动5110】这篇文章主要探讨的是如何在树莓派2代硬件平台上驱动5110液晶显示屏。5110,也称为PCF8574扩展接口的 Nokia 5110/3310 LCD,是一款84x48像素的单色液晶屏,常用于嵌入式项目,因其小巧、低...
本文将深入探讨如何在树莓派上驱动LCD1602显示器模块,以及涉及的相关知识点。 首先,LCD1602是指具有16字符x2行显示能力的液晶显示器,它使用了 Hitachi HD44780 控制器。这种控制器使得LCD1602能够通过较少的I/O...
"树莓派最新LDC驱动.gz"文件就是针对树莓派LCD显示设备的驱动程序更新。 该驱动程序以.gz格式压缩,这是一种常见的文件压缩格式,通常用于Linux系统中。.gz文件是gzip压缩工具生成的,它能有效地减小文件的大小,...
本文将详细介绍如何为树莓派3安装3.5寸TFT触摸屏,并完成触摸屏驱动的安装。 #### 二、准备工作 在进行触摸屏驱动安装之前,确保拥有以下硬件及软件: - **硬件**:树莓派3代B、3.5寸TFT触摸屏、SD卡(建议容量...
文档列举了一系列可靠性测试项目,确保显示屏在不同环境和使用条件下的稳定性和耐用性。 #### 7. 通用预防措施 - **安全**: 使用过程中的注意事项,如避免短路、防止过热等。 - **处理**: 在安装和使用过程中应...
总结来说,在树莓派或树莓派零W上旋转安装LCD触摸屏,首先需要了解TFT LCD与OLED的显示原理及其在视觉质量上的优势。随后,正确的硬件连接和软件安装步骤是实现这一目的的关键。通过使用适当的Linux命令和配置工具,...
标题中的“树莓派状态信息显示 via LCD1602”指的是使用LCD1602液晶显示屏来实时显示树莓派的操作系统状态信息。LCD1602是一种常见的字符型液晶显示器,通常用于嵌入式系统,具有16行2列的字符显示能力。 在树莓派...
为了充分利用其功能,有时我们需要连接外部LCD显示屏,以便进行更直观的操作和交互。"LCD-show-161112.tar.gz"这个压缩包文件正是为此目的提供的一种解决方案。 首先,我们需要了解树莓派的视频输出接口。树莓派...
8)树莓派2.8寸TFT显示屏设计(原理图、PCB源文件、源码等) 9)基于单片机车牌识别系统2.8寸TFT液晶屏显示ILI9341(包含原理图源程序等) 10)基于STM32单片机的心电检测系统2.4寸TFT屏显示(包含原理图源程序等)