- 浏览: 2135959 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 浏览器
树莓派驱动LCD12864显示屏
- 博客分类:
- 树莓派
适用于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 1598配置网络 安装 dnsmasq ... -
树莓派u盘格式化后放进系统后不识别
2018-09-24 19:38 874树莓派u盘格式化后放进系统后不识别 diskgenius磁盘 ... -
一些常用的命令
2018-04-25 22:57 403#获得所有设备的功能,如带宽信息(2.4GHz,和5GHz), ... -
树莓派3B创建WiFi热点
2018-04-01 11:30 7527创建WiFi热点使用的GitHub上一个开源项目: http ... -
树莓派 - L298N模块 驱动直流电机
2018-03-18 16:45 1996单片机或树莓派一般使用 L298n 模块来驱动电机 。L298 ... -
树莓派 - MAX7219(数字倒计时) - python
2018-03-04 19:04 1151写了个倒计时 #!/usr/bin/env python ... -
树莓派 - MAX7219
2018-03-04 12:44 17131.基础:认识MAX7219 拿到MAX7219驱动的LED ... -
树莓派系列教程:红外遥控
2018-02-25 14:11 2734网上淘到了一个红外接 ... -
树莓派手动指定静态IP和DNS
2018-02-16 11:58 1252在把玩树莓派的过程中 ... -
树莓派 c获取树莓派CPU温度
2018-02-14 14:23 878C语言文件IO操作 新建一个名为cpu-temp.c文 ... -
树莓派GPIO控制--C语言篇
2018-02-14 13:58 1602一. 常用开源工程简介 树莓派内核中已经编译自带了gpio的 ... -
树莓派 远程看鱼眼摄像头
2018-02-12 21:12 1008mac电脑上最好下载vlc视频软件 有两种方式, 第一种: ... -
如何安装树莓派鱼眼摄像头模块
2018-02-12 13:58 1256安装树莓派摄像头模块 视频地址:http://www.wav ... -
树莓派使用RFID-RC522A读卡器对IC卡进行读写(通过 python)
2018-02-10 21:58 22201. 配置树莓派 首先需要运行raspi-config,开启 ... -
树莓派 1602A显示屏
2018-02-02 20:11 1235树莓派 1602A显示屏 下面代码本人测试过没有问题,开始运 ... -
树莓派 - 点亮LED
2017-12-31 14:14 765先按照下面这个图 连线:(对于LED,负极的那面内部的铁片很大 ... -
树莓派新手入门教程 - node下使用gpio
2017-12-24 12:43 1035安装 Node 为了运行 Node 脚本,树莓派必须安装 N ...
相关推荐
树莓派3B+ LCD显示屏驱动 LCD-show,查看详情:http://blog.csdn.net/kxwinxp/article/details/78447730
树莓派LCD屏幕驱动,用于驱动LCD3.2、LCD3.5。通通过指令可以切换HDMI和LCD
树莓派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...
网上一大堆镜像但是没几个好使的下载安装个软件很容易报错,这个镜像不一样,亲测好用,带有3.5寸LCD显示驱动(GPIO口)。
8)树莓派2.8寸TFT显示屏设计(原理图、PCB源文件、源码等) 9)基于单片机车牌识别系统2.8寸TFT液晶屏显示ILI9341(包含原理图源程序等) 10)基于STM32单片机的心电检测系统2.4寸TFT屏显示(包含原理图源程序等)
TFT(ThinFilmTransistor)是指薄膜晶体管,意即每个液晶像素点都是由集成在像素点后面的薄膜晶体管来驱动,从而可以做到高速度、高亮度、高对比度显示屏幕信息,是目前最好的LCD彩色显示设备之一,其效果接近CRT...
树莓派使用Raspberry Pi驱动LCD 16x2显示器Raspberry Pi的某些项目需要显示以显示信息或消息。 LCD 1602显示屏非常适合显示有限的文本。 它价格便宜,相对容易设置和编程。 它最多可以显示2行,每行16个字符。 该...
操作系统:LInux、IOS、树莓派、安卓开发、微机操作系统、网络操作系统、分布式操作系统等。此外,还有嵌入式操作系统、智能操作系统等。 云计算与大数据:数据集、包括云计算平台、大数据分析、人工智能、机器学习...
树莓派屏幕视频输出驱动安装
将触摸屏LCD按照方法连接好树莓派板子.如果您有现成的树莓派的系统,就可以直接来添加,如果没有树莓派系统,请到树莓派官网下载最新的镜像。
U8g2 是一个用于嵌入式设备的简易图形库,可以在多种 OLED 和 LCD 屏幕上,支持包括 SSD1306 等多种类型的底层驱动,并... 移植到STM32上,进行OLED的图形显示,本实验使用的OLED-0.96寸(SSD1306)作为驱动显示屏。
支持彩色单色OLED显示屏 该库具有模块化结构,某些模块可以完全从编译中排除,以减少闪存的使用。 占用空间非常小(“绘制文本”示例仅使用5KiB的Flash以及I2C代码,显示代码,字体!!!和应用程序本身。没有字体的...
U8g2 是一个用于嵌入式设备的简易图形库,可以在多种 OLED 和 LCD 屏幕上,支持包括 SSD1306 等多种类型的底层驱动,并可以很方便地移植到 Arduino 、树莓派、NodeMCU 和 ARM 上。U8g2 库的 GitHub 地址为:...
基于点阵液晶屏的贪吃蛇游戏算法源码。本算法是在树莓派Linux平台下...附带12864液晶驱动以及简单的图形库函数,支持ASCII码显示。贪吃蛇算法是独立的,可以移植到任意的显示平台上,并且可以自定义图像缩放(DPI)。
土壤温湿度采集于显示电路可将检测到的土壤温湿度模拟量放大转换成数字量通过单片机内程序控制精确的将温度与湿度分别显示在LCD显示屏上,同时把程序发给另外一块单片机,通过单片机内的中断服务程序判断是否要给...
使用Raspberry Pi驱动LCD 16x2显示器 Raspberry Pi的某些项目需要显示以显示信息或消息。 LCD 16x02显示屏非常适合显示有限的文本。 它价格便宜,相对容易设置和编程。 它最多可以显示2行,每行16个字符。 该项目将...
还要检查新的C ++库 。 它消耗更少的内存,具有简单的C ++ API ...支持彩色,单色OLED显示屏和VGA监视器 该库具有模块化结构,某些模块可以完全从编译中排除,以减少闪存的使用。 需要很少的内存(采用Damel
本设计可使用两种控制模式控制,第一种为自动检测模式,在该模式下机器采集的图像实时显示在LCD液晶屏上,并将图像保存在机器人的SD卡中,供后续的研究分析使用。第二种为监控检测模式,利用树莓派USB摄像头采集到的...