怎么用esp8266驱动诺基亚5110手机屏幕

15724人阅读
Arduino(9)
在物联网时代搞技术就必须跟网络沾上边,这两天把前段时间淘宝上淘的ESP8266模块拿出来捣鼓了一下,初学Arduino,对硬件模块没啥了解,刚开始简直无从下手,在几个技术QQ群求教未果,技术大大们对我等小菜鸟熟视无睹,无奈只能自己问度娘,经过一段时间摸索,总算略有所成,特将学习成果拿出来与同为菜鸟的诸位分享,让大家见笑了。
首先说一下用到的硬件设备:
1、USB转TTL模块
2、ESP8266模块
3、杜邦线若干
参考文章:《》
【USB转TTL模块】
【ESP8266无线模块】
淘的无线模块商家那里只有模块的尺寸信息,却没有针脚说明及模块的使用说明,百度了好久才在《》中找到相关的说明,针脚说如下(这里盗用一下文章中的图片)
【ESP8266针脚说明】
根据文章说明,模块要正常运行只需要连接八个针脚中的五个就可以了,分别是GND、VCC、UTXD、URXD、CH_PD,将针脚分别连接到USB转TTL模块,UTXD接RXD,URXD接TXD,CH_PD与VCC之间串联一个电阻(其实串不串电阻都可以,我就是直接连接的),连接完毕后如下图所示。
注意:模块使用的电源是3.3V的,接线的时候要使用USB转TTL模块的3.3V针脚引出的电源,否则可能会烧毁模块
线路连接好后,接到电脑上,这时无线模块的蓝色灯会闪两下,红色灯会常亮。用手机或无线网卡搜索网络,此时应该会看到一个ESP_******的无线信号源,说明模块正常启动了。至此,无线模块接线工作完成~~~~~
欢迎加QQ群,共同交流学习~~
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:157910次
积分:1336
积分:1336
排名:千里之外
原创:21篇
评论:35条
(1)(1)(2)(1)(1)(2)(1)(3)(1)(1)(1)(6)(2)STM32之诺基亚5110的驱动控制
实验目的:
驱动5110,显示文字,数字,字符串,图片等,构成一个基本的运行库
显示中文字符,英文字符串,数字
开发平台:
基于STM32F103C8T6的彩屏开发板
实验工具:
MDK4.x(编写程序)&&&&
loader&(烧写程序)&&&&&&
photoshop2&(对图片进行裁剪,去色)&&
ZIMO21(字,图片转化)
硬件接口:
注:关于5110的相关基本知识可以去下载“诺基亚5110液晶屏资料驱动芯片PCD8544中文数据手册.pdf”来查看
#ifndef LCD_H
#define LCD_H
#include&stm32f10x_lib.h&
#include"common.h"
//我的5110接法:CS-PA0,RESET-PA1,D/C-PA2,SDATA-PA3,SCLK-PA8
#define CS PAout(0)
#define Res
PAout(1)&&&&
#define DC PAout(2)
#define SDATA PAout(3)
#define SCLK PAout(8)
void LCD_GPIO_Init(void); //LCD的IO口初始化
void LCD_WriteByte(u8 , u8 ); //写命令或数据
void LCD_Init(void);& //LCD初始化
LCD_Clear(void);&//情屏,可以从这个函数扩展出指定行或列的清除
void LCD_Set_XY(u8, u8); //设置坐标
void LCD_WriteChar(u8 , u8 , u8 ); //写一个字符
void LCD_WriteString_en( u8 ,u8 ,u8
*);&//写字符串函数,注意不要省略了这里的指针的*
void LCD_WriteNumber(u8 ,u8 , u8 );//写单个数字
void LCD_Write_cn(u8 , u8 ,u8 );//写单个中文字
void LCD_draw_bmp(u8 x, u8 y,& u8 Pix_x, u8
Pix_y);&//显示一张图片
#include"lcd.h"
#include"zifuku.h"& //存放字库,图片的二进制代码的
//LCD使用的IO口的初始化
void LCD_GPIO_Init(void)
&RCC-&APB2ENR|=1&&2;
&GPIOA-&CRL&=0xFFFF0000;&//清除设置
&GPIOA-&CRL|=0x;&
//设置为推挽输出模式
&GPIOA-&ODR|=0&
//&GPIOA-&ODR|=1&&1;
//&GPIOA-&ODR|=1&&2;
//&GPIOA-&ODR|=1&&3;
&GPIOA-&CRH&=0xfffffff0;
&GPIOA-&CRH|=0x;
&GPIOA-&ODR|=1&&0;
//作用:写一个字节(数据或命令)
//两个参数:dt为要写入的字节,command为数据/命令选择
void LCD_WriteByte(u8 dt, u8 command)
for(i=0;i&8;i++)
&if(dt&0x80)
&&SDATA=1;
&&SDATA=0;
&dt=dt&&1;
&& SDATA=1;
//LCD初始化
void LCD_Init(void)
&PAout(1)=0;
&delay_ms(10);
&PAout(1)=1;
&delay_ms(50);
&LCD_WriteByte(0x21,0);
&LCD_WriteByte(0x13,0);
&LCD_WriteByte(0xbb,0);
&LCD_WriteByte(0x20,0);
&LCD_WriteByte(0x0c,0);
&LCD_Clear();
//设置坐标,两个参数:X,Y坐标
void LCD_Set_XY(u8 X, u8 Y)
&LCD_WriteByte(Y,0);
&LCD_WriteByte(X,0);
//整屏清屏(可以从中扩展出指定行列的清除)
void LCD_Clear(void)
&LCD_Set_XY(0,0);
&for(t=0;t&6;t++)
&&for(k=0;k&84;k++)
&&&LCD_WriteByte(0x00,1);
&//写一个英文字符
void LCD_WriteChar(u8 X, u8 Y, u8 c)
unsigned char *map = &font[0][0];
&&& c -= 32;
&&& map += c *(
HEIGHT/8*WIDTH);
for(i=0;i&HEIGHT/8;i++)
LCD_Set_XY(X, Y+i);
for(j=0;j&WIDTH;j++)
LCD_WriteByte(*map++, 1);
//********************************************
// 写英文字符串
//********************************************
void LCD_WriteString_en(u8 X,u8 Y,u8 *s)
LCD_WriteChar(X, Y,*s++);
if(i&=(84/WIDTH))
&&&Y+=HEIGHT;
&&if(j&=(48/HEIGHT))
//************************************************
// 写一个任意数字
//************************************************
void LCD_WriteNumber(u8 x,u8 y, u8 number)
num[10]={""},i,j,k;
if(number==0)&&&&&&&&&&&&&&&&&&
//number 0 时候
LCD_WriteChar(x, y,'0');
for(i=0;number&0;i++)
&&&&&&&&&&&
num[i]=lcd_display[number];//每位以字符表示
&&&&&&&&&&&
number/=10;
for(j=0;j&i/2;j++){k=num[j];num[j]=num[i-1-j];num[i-1-j]=k;}
LCD_WriteString_en(x,y,num);
//********************************************
// 写一个汉字
//*******************************************
void LCD_Write_cn(u8 row, u8 page,u8 c) //row:列 page:页 dd:字符
&LCD_Set_XY(row, page);// 列,页
&for(i=0; i&12;i++)
&&LCD_WriteByte(chinese1[c*24+i],1);
LCD_Set_XY(row, page+1);// 列,页
&for(i=12; i&24;i++)
&&LCD_WriteByte(chinese1[c*24+i],1);
//*********************************************
//&显示一张任意大小的图片
//&x,y为要显示的起点坐标
//& Pix_x,Pix_y为显示图片的像素大小
//**********************************************
void LCD_draw_bmp(u8 x, u8 y, u8 Pix_x, u8 Pix_y)
& unsigned int i,n;
& if(Pix_y%8==0)&
//判断是否刚好一行数据全满
& &row=Pix_y/8;
&&row=Pix_y/8+1;
&LCD_Set_XY(x,y); //设置起点坐标
&for(n=0;n&n++)
&&for(i=0;i&Pix_x;i++)
&&&LCD_Set_XY(x+i,y+n);
&&&LCD_WriteByte(map[i+n*Pix_x],1);
#include&stm32f10x_lib.h&
#include"common.h"
#include"led.h"
#include"exit.h"
#include"lcd.h"
int main(void)
&Stm32_Clock_Init(9);
&delay_init(72);
&LED_Init();
&EXTIX_Init();
&LCD_GPIO_Init();
&LCD_Init();
&LCD_Clear();
//&LCD_WriteString_en(20,0,"welcome");
//&LCD_Write_cn(20,2,0);&//欢
//&LCD_Write_cn(40,2,1);&
//&LCD_Write_cn(60,2,2);&
LCD_draw_bmp(0, 0,& 84,
48);//显示图片&&&&&&&
&while(1);//等待按键中断
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。【ESP8266】2.ESP8266使用LCD屏显示连接状态
上传时间为:
& &上回将好了,这次就真刀真枪地自己编写程序来完成一个小工程。& & 既然ESP8266本身是个MCU,具备GPIO、PWM、I2C、ADC等,而且又是以WIFI为基本功能,所以这个小工程要通过它们来实现一些特定的功能。比如我要通过GPIO来让Nokia5110的小屏幕来显示信息、用PWM来调节背光灯、然后打开WIFI并建立一个Socket Server来接收其他设备的通讯。& &&& & 一步一步来做。首先先建立工程,可以直接使用上次那个编译成功的Demo改成自己的名字。复制一份Demo放在同级文件夹中,改名叫LCD吧& &&& & 还记得编译脚本的位置吗?在project下,把build.sh和project.def中的Demo改成LCD,一个文件中只有一个地方,其他的不需要改动& &&& & 根据LCD选定需要用到的IO口连线,按照自己的习惯来做& &&& & 开始编写程序。程序可以直接调用合宙的SDK,不需要再从头配置寄存器,方便又快速& &&& & 如果代码没有问题,编译通过& &&& & 同Demo一样,在Windows中可以得到烧写工具用到的lua和bin文件& &&& & 现在可以烧写了。ESP8266模块通过串口烧写,所以需要一根USB转TTL的线。驱动的安装就不说了,安装成功后在设备管理器中确定COM口,在烧写工具中选择对应的串口。然后打开设置选择那个lua文件,它会将用到的文件按地址显示出来& &&& & 点击OK关闭设置界面,再点箭头按钮开始烧写& &&& & 烧写成功,模块已经开始运行了& &&& & 模块默认的IP地址为192.168.4.1,最简单的测试方法,通过其他开发板或手机、PC等,打开WIFI,找到AirM2M字样的SSID(名字可以自己设定)并连接,连接成功后查看IP地址,已经分配了一个动态的IP 192.168.4.xxx。打开各种浏览器,输入& &&& & 至于程序中需要用到的API,可以参考编程手册,这里就不再赘述了。
写了十几年的PC程序感觉越来越没意思了,看看嵌入式,提提精神。
发现目前自己没什么特点,只剩下了玩和懒。
玩:喜欢玩各种新鲜的板子,还是嵌入式的世界精彩,当然只限于玩,不求大成。
懒:不再写所谓的精妙的代码,能复用的复用,不能复用的用最简单的代码实现,要不自己都理解不了了:-)
作者其它经验诺基亚5110液晶屏幕调试效果和代码
--------------------------------------------------------------------------------------调试之后的显示效果如下:
--------------------------------------------------------------------------------------------------
使用字模软件取字模的设置:
--------------------------------------------------------------------------------------------------
具体的代码如下:
使用STC12LE5A60S2单片机+33M晶振
&代码下载地址
sbit&&& sce =
P0^0;& //片选
sbit&&& res =
P0^1;& //复位,0复位
dc& = P0^2;& //1写数据,0写指令
sbit&&& sdin =
P1^5;& //数据
sbit&&& sclk =
P1^7;& //时钟
//6*16字符
unsigned char code shuzi[]={
0x00,0x02,0x04,0x88,0x50,0x20,0x00,0x02,0x01,0x00,0x00,0x00,
0x1C,0xE0,0x3C,0xE0,0x1C,0x00,0x00,0x03,0x00,0x03,0x00,0x00,
0x04,0x1C,0xE0,0x1C,0x04,0x00,0x00,0x02,0x03,0x02,0x00,0x00,
0xF0,0x08,0x04,0x44,0xCC,0x40,0x00,0x01,0x02,0x02,0x01,0x00
unsigned char code hanzi[]=
0x00,0x00,0x7C,0x55,0x56,0xFC,0x56,0x55,0x54,0x7C,0x00,0x00,0x01,0x01,0x01,0x01,
0x01,0x07,0x01,0x01,0x01,0x01,0x01,0x00,
0x00,0x00,0xFF,0x48,0x48,0x48,0x4F,0xC8,0x08,0x08,0x08,0x00,0x04,0x02,0x01,0x00,
0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,
0x84,0x64,0xFF,0x24,0x44,0xFE,0x02,0x02,0xFF,0x02,0x00,0x00,0x01,0x00,0x07,0x04,
0x02,0x01,0x00,0x00,0x07,0x04,0x07,0x00,
0x20,0x22,0x22,0xFE,0x22,0x22,0x22,0xFE,0x22,0x23,0x22,0x00,0x04,0x04,0x02,0x01,
0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,
0x08,0x0E,0x88,0x78,0x2F,0xE8,0x28,0xA9,0x6A,0x08,0x08,0x00,0x04,0x02,0x05,0x04,
0x02,0x02,0x01,0x02,0x02,0x04,0x04,0x00,
0x00,0x02,0x02,0x02,0x02,0xFE,0x02,0x02,0x03,0x02,0x00,0x00,0x04,0x04,0x04,0x04,
0x04,0x07,0x04,0x04,0x04,0x04,0x04,0x00,
0x10,0x08,0xFC,0x13,0x08,0x04,0xFF,0x24,0x24,0x24,0x04,0x00,0x00,0x00,0x07,0x00,
0x00,0x00,0x07,0x01,0x01,0x01,0x01,0x00,
0x04,0x06,0x4A,0x6A,0x5A,0xCB,0x4A,0x5A,0x6A,0x4A,0x06,0x00,0x04,0x04,0x05,0x05,
0x05,0x07,0x05,0x05,0x05,0x04,0x04,0x00,
0x02,0xFA,0x9A,0x2A,0x0A,0xFE,0x9A,0x2A,0x0A,0xFB,0x02,0x00,0x00,0x07,0x00,0x01,
0x00,0x07,0x00,0x05,0x04,0x07,0x00,0x00,
0x60,0x22,0xA2,0xBA,0xAA,0xAB,0xAA,0xAA,0xBA,0x22,0x60,0x00,0x00,0x00,0x00,0x04,
0x04,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xFC,0x94,0x94,0x94,0xFF,0x94,0x94,0x94,0xFE,0x04,0x00,0x00,0x01,0x00,0x00,
0x00,0x03,0x04,0x04,0x04,0x04,0x06,0x00,
0x20,0x21,0x21,0x21,0x21,0xF9,0x29,0x25,0x23,0x31,0x20,0x00,0x00,0x00,0x00,0x04,
0x04,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
0x04,0xEA,0xAB,0xAE,0xAA,0xFC,0xAA,0xAB,0xAE,0xBA,0x82,0x00,0x04,0x04,0x02,0x01,
0x00,0x07,0x00,0x02,0x02,0x02,0x01,0x00,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x30,0x20,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x48,0x24,0xF3,0x08,0x09,0x09,0x09,0x09,0xF9,0x09,0x08,0x00,0x00,0x00,0x07,0x00,
0x00,0x04,0x04,0x04,0x07,0x00,0x00,0x00,
0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x06,0x04,0x00,0x00,0x02,0x02,0x02,0x02,
0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x00,
0x00,0x02,0x22,0x22,0x22,0x22,0x22,0x22,0x23,0x02,0x00,0x00,0x04,0x04,0x04,0x04,
0x04,0x04,0x04,0x04,0x04,0x06,0x04,0x00
void delayms(unsigned& int
ii)//1ms延时函数
&unsigned int i,x;
&for (x=0;x
&for (i=0;i&100;i++);
void LCD_write_byte(unsigned char dt, unsigned char command)
&for(i=0;i&8;i++)
&&if(dt&0x80)
&&&sdin=1;
&&&sdin=0;
&&dt=dt&&1;&&
void LCD_init(void)
&res=0;& &
& &delayms(10);
& &res=1;&
&LCD_write_byte(0x21,0);//初始化Lcd,功能设定使用扩充指令
&LCD_write_byte(0xC6,0);//设定液晶偏置电压
&LCD_write_byte(0x06,0);//温度校正
&LCD_write_byte(0x13,0);;//1:48
&LCD_write_byte(0x20,0);//使用基本指令
&LCD_write_byte(0x0C,0);//设定显示模式,正常显示
void LCD_set_XY(unsigned char X, unsigned char Y)
&LCD_write_byte(0x40 | Y, 0);// column
&LCD_write_byte(0x80 | X, 0);// row
void LCD_clear(void)
&LCD_set_XY(0,0);
&for(t=0;t&6;t++)
&&for(k=0;k&84;k++)
&&&LCD_write_byte(0x00,1);
void LCD_write_shu(unsigned char row, unsigned char page,unsigned
char c) //row:列 page:页 dd:字符
&LCD_set_XY(row*6, page);// 列,页
&for(i=0; i&6;i++)
&&LCD_write_byte(shuzi[c*12+i],1);
LCD_set_XY(row*6, page+1);// 列,页
&for(i=6; i&12;i++)
&&LCD_write_byte(shuzi[c*12+i],1);
void LCD_write_hanzi(unsigned char row, unsigned char page,unsigned
char c) //row:列 page:页 dd:字符
&LCD_set_XY(row*6, page);// 列,页
&for(i=0; i&12;i++)
&&LCD_write_byte(hanzi[c*24+i],1);
LCD_set_XY(row*6, page+1);// 列,页
&for(i=12; i&24;i++)
&&LCD_write_byte(hanzi[c*24+i],1);
& &unsigned char
&for(k=0;k&250;k++);
&LCD_init();& //初始化LCD模块
&LCD_clear(); //清屏幕&
&LCD_write_hanzi(0,0,0);&
&LCD_write_hanzi(2,0,1);&
&&LCD_write_hanzi(4,0,2);&
&LCD_write_hanzi(6,0,3);&
&LCD_write_hanzi(8,0,4);&
//发&&&&&&&
&LCD_write_shu(10,4,0);&
&LCD_write_shu(11,4,1);&
&LCD_write_shu(12,4,2);&
&LCD_write_shu(13,4,3);& //G
& &while(1)
&delayms(5000);
--------------------------------------------------------------------------------------------------
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。诺基亚5110液晶屏驱动程序(诺基亚5110屏驱动) 免费安装版软件下载 - 绿色先锋下载 - 绿色软件下载站
赞助商链接
本类月下载排行
本类周下载排行
常用软件推荐
诺基亚5110液晶屏驱动程序(诺基亚5110屏驱动) 免费安装版
此款驱动是诺基亚5110液晶屏驱动程序,大家可以使用DSP28335来驱动NOKIA 5110液晶显示屏,本代码已经验证通过,给大家提供一个参考。Nokia5110是一款经典机型,可能由于经典的缘故,旧机器很多,所以很多电子工程师就把旧机器的屏幕拆下来,自己驱动Nokia5110,用于开发的设备显示。
&&请点击以下链接下载该软件:&诺基亚5110液晶屏驱动程序(诺基亚5110屏驱动) 免费安装版
上一软件:
下一软件:
(评论内容只代表网友观点,与本站立场无关)
为了保证您快速的下载,推荐使用[] 、[] 等专业工具下载.
为确保软件能正常使用,请使用[
]解压本站软件.
目前不少软件都捆绑流氓插件,请在安装的之时务必留意每一个安装步骤.绿色先锋本身是不会捆绑任何插件在软件中的.
该软件为网上收集,若无意中侵犯了您的版权,.我们将在收信后24小时内删除侵权内
本站下载的软件中,部分软件经过压缩加密处理,解压密码为:
感谢您对绿色先锋的支持,请将网站地址放在您的博客,空间等地方,以便我们为您及您的朋友提供更好的服务.
软件按字母排列:
中文按声母搜索:}

我要回帖

更多关于 诺基亚5110i 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信