诺基亚(Nokia 5110)5110屏驱动(STM32)

news/2025/2/11 4:23:25/

一、前期准备
单片机:STM32F103ZET6
开发环境:MDK5.14
库函数:标准库V3.5
Nokia 5110模块:淘宝有售
在这里插入图片描述
二、实验效果
在这里插入图片描述
三、驱动原理
看5110的数据文档,根据文档要求写。需要完整工程或者有问题的请加QQ:1002521871,验证:呵呵。

四、驱动代码
5110.h

#ifndef __NOKIA_5110_H__
#define	__NOKIA_5110_H__
#include "stm32f10x.h"
#include "gpio.h"
#include "delay.h"
#include "nokiafont.h"#define 	Nokia_CLK 		PEout(0)		
#define		Nokia_DIN 		PEout(1)		
#define		Nokia_DC 		PEout(2)
#define		Nokia_CE 		PEout(3)
#define		Nokia_RST		PEout(4)extern void Nokia5110Configuration(void);
extern void Nokia_Clear(void);
extern void Nokia_Write_Chinese_String(uint8_t X, uint8_t Y, uint8_t ch_with, uint8_t num, uint8_t line, uint8_t row);
extern void Nokia_Write_English_String(uint8_t X, uint8_t Y, char *s);
#endif

5110.c

#include "nokia5110.h"void Nokia_Write_Byte(uint8_t dat, uint8_t cmd)
{uint8_t i;		        Nokia_CE = 0;			// 使能LCDif (cmd == 0){Nokia_DC = 0;		// 传送命令}else{   Nokia_DC = 1;		// 传送数据}for(i = 0; i < 8; i ++){if(dat & 0x80){Nokia_DIN = 1;}else{Nokia_DIN = 0;}Nokia_CLK = 0;dat = dat << 1;Nokia_CLK = 1;}Nokia_CE = 1;
}void Nokia_Clear(void)
{uint16_t i;Nokia_Write_Byte(0x0c, 0);			Nokia_Write_Byte(0x80, 0);			for (i = 0; i < 504; i ++){Nokia_Write_Byte(0, 1);}		
}void Nokia_Set_Position(uint8_t X, uint8_t Y)
{Nokia_Write_Byte(0x40 | Y, 0);		// columnNokia_Write_Byte(0x80 | X, 0);      // row
}void Nokia_Write_Char(uint8_t c)
{uint8_t line;c -= 32;for (line = 0; line < 6; line ++){Nokia_Write_Byte(font6x8[c][line], 1);}
}void Nokia_Write_English_String(uint8_t X, uint8_t Y, char *s)
{Nokia_Set_Position(X, Y);while (*s) {Nokia_Write_Char(*s);s ++;}
}
/*-----------------------------------------------------------------------
Nokia_Write_Chinese_String: 在LCD上显示汉字输入参数:X、Y    :显示汉字的起始X、Y坐标;ch_with :汉字点阵的宽度num     :显示汉字的个数;  line    :汉字点阵数组中的起始行数row     :汉字显示的行间距
-----------------------------------------------------------------------*/                        
void Nokia_Write_Chinese_String(uint8_t X, uint8_t Y, uint8_t ch_with, uint8_t num, uint8_t line, uint8_t row)
{uint8_t i, n;Nokia_Set_Position(X, Y);                             //设置初始位置for (i = 0; i < num;){for (n = 0; n < ch_with * 2; n ++)              //写一个汉字{ if (n == ch_with)                      //写汉字的下半部分{if (i == 0) {Nokia_Set_Position(X, Y + 1);}else{Nokia_Set_Position((X + (ch_with + row) * i), Y + 1);}}Nokia_Write_Byte(write_chinese[line + i][n], 1);}i ++;Nokia_Set_Position((X + (ch_with + row) * i), Y);}
}/*-----------------------------------------------------------------------
Nokia_Draw_Bmp_Pixel      : 位图绘制函数输入参数:X、Y    :位图绘制的起始X、Y坐标;*map    :位图点阵数据;Pix_x   :位图像素(长)Pix_y   :位图像素(宽)-----------------------------------------------------------------------*/
void Nokia_Draw_Bmp_Pixel(uint8_t X,uint8_t Y,uint8_t *map,uint8_t Pix_x, uint8_t Pix_y)
{uint16_t i, n;uint8_t row;if (Pix_y % 8 == 0) {row = Pix_y / 8;      //计算位图所占行数}else{row = Pix_y / 8 + 1;}for (n = 0; n < row; n ++){Nokia_Set_Position(X, Y);for(i = 0; i < Pix_x; i ++){Nokia_Write_Byte(map[i + n * Pix_x], 1);}Y ++;                         //换行}      
}void Nokia5110Configuration(void)
{GPIO_InitTypeDef    GPIO;//Enable APB2 BusRCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);//Register IO GPIO.GPIO_Pin   = 0x1F;GPIO.GPIO_Speed = GPIO_Speed_50MHz;GPIO.GPIO_Mode  = GPIO_Mode_Out_PP;GPIO_Init(GPIOE, &GPIO);Nokia_RST = 0;DelayUs(1);Nokia_RST = 1;Nokia_CE = 0;					// 关闭LCDDelayUs(1);Nokia_CE = 1;					// 使能LCDDelayUs(1);Nokia_Write_Byte(0x21, 0);	// 使用扩展命令设置LCD模式Nokia_Write_Byte(0xc8, 0);	// 设置偏置电压Nokia_Write_Byte(0x06, 0);	// 温度校正Nokia_Write_Byte(0x13, 0);	// 1:48Nokia_Write_Byte(0x20, 0);	// 使用基本命令Nokia_Clear();	       		// 清屏Nokia_Write_Byte(0x0c, 0);	// 设定显示模式,正常显示Nokia_CE = 0;					// 关闭LCD
}

由于作者能力有限,有不妥之处欢迎指正,邮箱alex_hua@foxmail.com


http://www.ppmy.cn/news/155610.html

相关文章

5230

nokia ovi map离线搜索失败的问题 (附带世界各国ClientIndex) 很多人安装了ovi后发现它的离线搜索用不了! 是因为少了ClientIndex文件 没有安装 什么是ClientIndex? 通俗点说就是一个索引文件,当你在输入搜索地址的时候,它根据你输入的文字,显示出地图 文件…

MySql5.5msi详细安装教程

一、安装包准备 官网下载Mysql安装包&#xff1a; http://www.mysql.com/ 下载教程如下&#xff1a; 根据红框点击 所安装的目录中出现上述文件&#xff0c;则准备工作结束。 二、开始安装 1、首先单击MySQL5.5.62的安装文件&#xff0c;出现该数据库的安装向导界面&#x…

mpu6050 接线方法

一般情况下&#xff0c; 大家买的 mpu 6050 有两种。 1&#xff1a; 就是 单个的 mpu6050 芯片 2&#xff1a; 就是 mpu6050 模块 如果 是第一种情况的话 &#xff0c; 大家可以参考 下图所示 如果是第二种情况的话&#xff0c; 一般来说 &#xff0c;只需要四根线就可以…

【MySQL篇】MySQL的my.ini配置文件位置

【MySQL篇】MySQL的my.ini配置文件位置 ​ 做个记录—【suy】 文章目录 【MySQL篇】MySQL的my.ini配置文件位置一、在C盘的“ProgramData”隐藏文件1、文件资源管理器勾选“隐藏的项目”2、进入MySQL位置3、拷贝my.ini文件到MySQL安装路径 二、my.ini简单配置max_allowed_pack…

mysql(msi)安装教程

1.2.1MySQL的下载 登录https://dev.mysql.com/downloads/mysql/5.5.html#downloads&#xff0c;进入官网下载页面 或点击https://download.csdn.net/download/qq_41444073/11587297&#xff08;积分下载&#xff09;&#xff0c;如下图 基于Windows平台的MySQL安装文件有两个…

mysql(.msi)下载、安装及配置教程

1.mysql下载 下载官网 zip版本下载&#xff1a;https://dev.mysql.com/downloads/mysql/ msi版本下载&#xff1a;https://dev.mysql.com/downloads/windows/installer/8.0.html mysql-installer-web-community和mysql-installer-communityl两个版本的区别&#xff1a; mys…

mpu9250

摘要 MPU6050是一种非常流行的空间运动传感器芯片&#xff0c;可以获取器件当前的三个加速度分量和三个旋转角速度。由于其体积小巧&#xff0c;功能强大&#xff0c;精度较高&#xff0c;不仅被广泛应用于工业&#xff0c;同时也是航模爱好者的神器&#xff0c;被安装在各类飞…

安装黑苹果先判断你的电脑硬件是否有驱动支持

这几天又被某些事勾起了对MAC系统的折腾&#xff0c;无奈一直没有真正的MAC&#xff0c;只能拿普遍PC或笔记本电脑来安装&#xff0c;这就是所谓的安装黑苹果。以前在自已的HP 5310M上安装完黑苹果后&#xff0c;因为缺少驱动最后放弃。今天发现有一个工具可以先检查硬件是否有…