树莓派 spi lcdlakka可以给lcd装驱动吗

树莓派 之 连接显示器 - 简书
树莓派 之 连接显示器
可选:HDMI输出,3.5mm视频输出,其它转接方式,以及HDMI最方便,直接连接即可
用3.5mm视频输出可以连接CRT旧电视,接口集成在音频口,所以直接在音频口接耳机会发现底噪很大,不过社区正在这点可以直接淘宝购买Zune的RCA Cable,或者DIY接口定义一致的线材,定义参考下图,图片版权归属原作者:
另外需要修改config.txt(PAL制式电视):(新版的Jessie不用修改也能显示,如果没声音的话再进行以下操作)树莓派上:sudo nano /boot/config
或Windows上打开config.txt将
sdtv_mode=2
前面的#删掉,变为:sdtv_mode=2
配合老电视和 Xbox 360手柄或8位堂完全仿红白机的手柄怀旧FC是相当不错的选择,系统方面可以选择 , , HDMI可以转接VGA,但都建议一定用有源的HDMI转VGA,也就是可以连接电源的,否则会烧毁树莓派
修改config.txt文件,添加:hdmi_force_hotplug=1hdmi_group=2hdmi_mode=16hdmi_drive=2
hdmi_mode=16为设置Hz 其它分辨率可参考官方一些有源HDMI转VGA的选择:,,,,,(似乎这款最便宜,需要另外配一个Micro HDMI母对HDMI公,比如)Lapdock 也可以连接Moto Lapdock(需要一个Micro HDMI转HDMI 母转公用作视频输出,比如,一个USB 2.0 A公对MICRO B母作数据传输(Lapdock的键盘及USB口设备),比如)或者当笔记本
Micro HDMI female to HDMI male(Video)
Micro USB female to USB 2.0 male(Data)
如果用Moto Lapdock的话,可能发现没有声音,需要作以下改动:sudo nano /boot/config.txt
找到:hdmi_drive=2
去掉前面的‘#’使其生效另外Lapdock的音量键需配置才能在Raspbian上使用sudo nano ~/.config/openbox/lxde-pi-rc.xml
使用 CTRL + w 搜索 keyboard定位到:
&keyboard&......
&keybind key="XF86AudioLowerVolume"& &action name="Execute"& &command&amixer set PCM 250-&/command& &/action& &/keybind& &keybind key="XF86AudioRaiseVolume"& &action name="Execute"& &command&amixer set PCM 250+&/command& &/action& &/keybind&
保存 CTRL + o 退出 CTRL + x之后在Pi的终端内运行:openbox --reconfigure
LCD 这块屏幕的尺寸约1.5寸,分辨率为84x48,不论字体采用8x8还是6x12显示的内容都很有限,而且因为是拆机屏,质量难以保证 诺基亚的液晶模块controller一般为PCD8544,接口为
然后通过:gpio readall
查找树莓派上对应的端口,得到:+-----+-----+---------+------+---+---Pi 3---+---+------+---------+-----+-----+ | BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM | +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+ | | | 3.3v | | | 1 || 2 | | | 5v | | | | 2 | 8 | SDA.1 | IN | 1 | 3 || 4 | | | 5V | | | | 3 | 9 | SCL.1 | IN | 1 | 5 || 6 | | | 0v | | | | 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT5 | TxD | 15 | 14 | | | | 0v | | | 9 || 10 | 1 | ALT5 | RxD | 16 | 15 | | 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 | | 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | | | 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 1 | OUT | GPIO. 4 | 4 | 23 | | | | 3.3v | | | 17 || 18 | 1 | OUT | GPIO. 5 | 5 | 24 | | 10 | 12 | MOSI | ALT0 | 0 | 19 || 20 | | | 0v | | | | 9 | 13 | MISO | ALT0 | 0 | 21 || 22 | 1 | OUT | GPIO. 6 | 6 | 25 | | 11 | 14 | SCLK | ALT0 | 0 | 23 || 24 | 1 | OUT | CE0 | 10 | 8 | | | | 0v | | | 25 || 26 | 1 | OUT | CE1 | 11 | 7 | | 0 | 30 | SDA.0 | IN | 1 | 27 || 28 | 1 | IN | SCL.0 | 31 | 1 | | 5 | 21 | GPIO.21 | IN | 1 | 29 || 30 | | | 0v | | | | 6 | 22 | GPIO.22 | IN | 1 | 31 || 32 | 0 | IN | GPIO.26 | 26 | 12 | | 13 | 23 | GPIO.23 | IN | 0 | 33 || 34 | | | 0v | | | | 19 | 24 | GPIO.24 | IN | 0 | 35 || 36 | 0 | IN | GPIO.27 | 27 | 16 | | 26 | 25 | GPIO.25 | IN | 0 | 37 || 38 | 0 | IN | GPIO.28 | 28 | 20 | | | | 0v | | | 39 || 40 | 0 | IN | GPIO.29 | 29 | 21 | +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+ | BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM | +-----+-----+---------+------+---+---Pi 3---+---+------+---------+-----+-----+
对照 BCM 及 Physical 栏,依次找到连线表内的对应端口启用 SPI :sudo nano /boot/config.txt
加入:dtparam=spi=on
重启生效这块单色LCD可以通过
进行console显示,这样在终端里能做的事用它都可以做到由于Linux kernel staging tree已经加入FBTFT,所以不需额外安装终端显示:sudo modprobe fbtft_device name=nokia3310
dmesg 会显示:......[ 52.092954] fbtft: module is from the staging directory, the quality is unknown, you have been warned.[ 52.098978] fbtft_device: module is from the staging directory, the quality is unknown, you have been warned.[ 52.101017] fbtft_device: SPI devices registered:[ 52.101040] fbtft_device: spidev spi0.0 500kHz 8 bits mode=0x00[ 52.101053] fbtft_device: spidev spi0.1 500kHz 8 bits mode=0x00[ 52.101062] fbtft_device: 'fb' Platform devices registered:[ 52.101092] fbtft_device: soc:fb id=-1 pdata? no[ 52.101132] fbtft_device: Deleting spi0.0[ 52.101429] spi spi0.0: setting up native-CS0 as GPIO 8[ 52.101544] fbtft_device: GPIOS used by 'nokia3310':[ 52.101555] fbtft_device: 'reset' = GPIO25[ 52.101564] fbtft_device: 'dc' = GPIO24[ 52.101572] fbtft_device: 'led' = GPIO23[ 52.101580] fbtft_device: SPI devices registered:[ 52.101592] fbtft_device: spidev spi0.1 500kHz 8 bits mode=0x00[ 52.101603] fbtft_device: fb_pcd8544 spi0.0 400kHz 8 bits mode=0x00[ 52.113572] fb_pcd8544: module is from the staging directory, the quality is unknown, you have been warned.[ 52.253490] graphics fb1: fb_pcd8544 frame buffer, 84x48, 7 KiB video memory, 0 KiB DMA buffer memory, fps=20, spi0.0 at 0 MHz
lsmod 会显示:Module Size Used byfb_pcd fbtft_device 27354 0 fbtft 27484 2 fb_pcd8544,fbtft_devicesyscopyarea 2773 1 fbtftsysfillrect 3299 1 fbtftsysimgblt 1921 1 fbtftfb_sys_fops 1157 1 fbtft
启用终端:con2fbmap 1 1
(如果遇到屏幕正面看是black screen,在别的角度可以看到文字的话,这和屏幕本身连接方式有关,其液晶与电路板是用导电胶连接的,可能没有充分接触,稍微压一下边框应该可以正常显示;如果LED闪得厉害,多半是屏幕有问题,建议找卖家换一个)
优化简书访问,可以通过http://shumeipai.space直接访问了..关于树莓派LCD显示屏驱动的使用
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
才可以下载或查看,没有帐号?
很多新手发现在装好3.5寸(或5寸,或者其它尺寸)触摸显示屏的驱动后,只要更新系统,就会出现触摸屏不能用了,或者干脆直接“死机”(其实这时可以使用ssh等入)不能用之类的。在使用树莓派LCD显示屏驱动的时需要注意:安装完LCD驱动后不要直接apt-最好在update之前进行bootloader锁定。方法如下:sudo apt-mark hold raspberrypi-bootloader
sudo apt-get update
sudo apt-get upgrade
但是如果你不是这样做导致显示屏不能用了,如果你还想用LCD,我的解决方法是重刷系统。如果有什么解决办法,请告诉我一声。谢谢
width:100%">
12345678910
Powered by玩了N久的TFT LCD驱动,终于成功了 - FPGA|CPLD|ASIC论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
Hot [学院]
玩了N久的TFT LCD驱动,终于成功了
助理工程师
10:00:03  
12460&查看
& &之前一直想实现FPGA驱动TFT液晶LCD,无奈一直没成功,最近好好检查了下原因,
没想到错误仅仅那么幼稚。现在终于成功了,抑制不住内心抓狂,上个图,哈哈。。。
IMG_437.jpg (619.18 KB, 下载次数: 4)
09:49 上传
& & 在此感谢网上其他人提供的资料,现将源文件上传,欢迎拍砖,下一步希望
能实现摄像头到TFT的显示,哎 缺个摄像头。
& &源文件如下:
(51.83 KB, 下载次数: 1208)
09:58 上传
点击文件名下载附件
下载积分: 积分 -1 分
13:11:54  
怎么实现的啊&&好厉害啊& &我最近也在做这个一直不得行
助理工程师
15:37:00  
PCB在线计价下单
板子大小:
板子数量:
PCB 在线计价
怎么实现的啊&&好厉害啊& &我最近也在做这个一直不得行
你看看 源码吧,我这个屏是9325 IC驱动,如果是其他IC,需要改下初始化程序
等待验证会员
18:11:00  
学习& && && && && && && && && && && && && && && && &
01:02:29  
下载下来看看& && && && && && && && && && && &&&
10:33:03  
古风格人格逢恶导非饿饭饿
等待验证会员
14:41:23  
好资料,学习了~
22:27:21  
学习了,发现问题才是最兴奋的
09:55:51  
学习,学习....................
15:46:14  
怎么实现的啊&&好厉害啊& &我最近也在做这个一直不得行
助理工程师
22:35:25  
怎么实现的啊&&好厉害啊& &我最近也在做这个一直不得行
你把 我上传的源码好好看看,一定要针对你所要 驱动 的液晶屏,进行正确地初始化
12:56:21  
怎么实现的啊&&好厉害啊& &我最近也在做这个一直不得行
01:54:44  
学习一下楼主的方法
18:58:35  
怎么实现的啊&&好厉害啊& &我最近也在做这个一直不得行
助理工程师
19:55:44  
你看看 代码,还要知道 你的液晶屏的驱动IC的型号,做好初始化
12:21:35  
卡缴费能力卡斯高老卡了马来看病那随你吧
助理工程师
14:18:16  
谢谢分享,学习了
助理工程师
14:18:39  
谢谢分享,学习了……
助理工程师
14:48:44  
好资料,学习了~
等待验证会员
15:21:16  
我最近也在做这个,现在还没有头绪,不知道怎么实现,楼主能给提示下吗?qq:&&谢谢啦
工程师职场
Powered by1517人阅读
raspberry(33)
运行: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
iconv_t cd;
= iconv_open(to_charset,from_charset);
(outbuf,0,outlen);
(iconv(cd,pin,&inlen,pout,&outlen)==-1)
iconv_close(cd);
int u2g(char
*inbuf,int
inlen,char
*outbuf,int
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);
bus_write(cmdcode);
digitalWrite(LCD_EN,0);
/*====================================================================
功能:写数据
输入:8位数据
=====================================================================*/
void WriteData_LCD12864(unsigned
char Dispdata){
chk_busy();
digitalWrite(LCD_RS,1);
digitalWrite(LCD_RW,0);
digitalWrite(LCD_EN,1);
bus_write(Dispdata);
digitalWrite(LCD_EN,0);
/*==========================================================================
功能:发送字符串
输入:地址,字符串
===========================================================================*/
void WriteWord_LCD12864(unsigned
char a,unsigned
*d){//向LCD指定位置发送一个字符串,长度64字符之内。
u2g(d,(d),u2g_out,255);
s=u2g_out;
WriteCmd_LCD12864(a);
while(*s&0){
WriteData_LCD12864(*s);
s++;
/*==========================================================================
功能:发送字符串2
输入:字符串
===========================================================================*/
void WriteWord_LCD12864_2(unsigned
*d){//向LCD发送一屏字符串,长度64字符之内。
u2g(d,(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 args,
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]);
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:197381次
积分:2757
积分:2757
排名:第12815名
原创:66篇
转载:64篇
评论:48条
(3)(1)(2)(3)(11)(2)(4)(10)(3)(15)(6)(6)(3)(5)(1)(6)(4)(2)(2)(3)(7)(1)(1)(2)(4)(2)(4)(3)(2)(2)(12)

我要回帖

更多关于 树莓派3.5寸lcd驱动 的文章

 

随机推荐