不知道OLED与K60的SPIs8550引脚图与电路图如何连接

&>&stm32F103 OLED 例程 使用硬件SPI驱动
stm32F103 OLED 例程 使用硬件SPI驱动
上传大小:5.36MB
基于STM32F103 的OLED例程,原来的例程用的模拟SPI接口,此例程采用的硬件SPI接口。使用的是SPI2可以很方便的修改为SPI1。
综合评分:2
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var parentWrap = $(this).parents(".respond_box"),
q = parentWrap.find(".form1").serializeArray(),
resStr = $.trim(parentWrap.find(".res_area_r").val());
console.log(q);
//var res_area_r = $.trim($(".res_area_r").val());
if (resStr == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
//var mess = $(".res_area_r").val();
var mess = resS
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, data.com_username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click", '.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
var parentWrap = $(v).parents(".respond_box");
parentWrap.find(".res_area_r").val($.trim(parentWrap.find(".res_area").val()));
评论共有3条
压缩文件有问题
luckey_pig回复a5600600
貌似有问题,但是可以提取出来。
假的。。。硬件spi
luckey_pig回复leung
采用spi2查询方式发送。
假的。。。硬件spi
luckey_pig回复ddts_zd
查询方式发送。
VIP会员动态
CSDN下载频道资源及相关规则调整公告V11.10
下载频道用户反馈专区
下载频道积分规则调整V1710.18
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
资源所需积分/C币
当前拥有积分
当前拥有C币
输入下载码
为了良好体验,不建议使用迅雷下载
stm32F103 OLED 例程 使用硬件SPI驱动
会员到期时间:
剩余下载个数:
剩余积分:0
为了良好体验,不建议使用迅雷下载
积分不足!
资源所需积分/C币
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
无法举报自己的资源
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可返还被扣除的积分
被举报人:
luckey_pig
举报的资源分:
请选择类型
资源无法下载 ( 404页面、下载失败、资源本身问题)
资源无法使用 (文件损坏、内容缺失、题文不符)
侵犯版权资源 (侵犯公司或个人版权)
虚假资源 (恶意欺诈、刷分资源)
含色情、危害国家安全内容
含广告、木马病毒资源
*详细原因:
stm32F103 OLED 例程 使用硬件SPI驱动0.96寸oled驱动程序,51+k60,IIC、spi通信
资料分享,希望大家都能把自己手里的资料上传上来分享
电路相关文件(请在PC端查看下载)
电路城电路折扣劵获取途径:
电路城7~10折折扣劵(全场通用):对本电路进行评分获取;
电路城6折折扣劵(限购≤100元电路):申请成为卖家,上传电路,审核成功后获取。
版权声明:电路城所有电路均源于网友上传或网上搜集,供学习和研究使用,其版权归原作者所有,对可以提供充分证据的侵权信息,本站将在确认后24小时内删除。对本电路进行投诉建议,点击反馈给电路城。
使用说明:直接使用附件资料或需要对资料PCB板进行打样的买家,请先核对资料的完整性,如果出现问题,电路城不承担任何经济损失!
大家都在看:
Tamaguino是模仿90年代及随后几年极为盛行的虚拟电子宠物“Tamagotchi”(拓麻歌子)而开发!Tamaguino的首个版本采用广大电子爱好者熟悉且广泛使用的0.96英寸I2C OLED显示屏。
所需硬件:
2.7英寸OLED 128x64显示模块 Arduino UNO 面包板(通用) 跳线(通用) 12 mm的按钮开关
所需软件:
Arduino IDE
有电阻的情况:
无电阻的情况:
注:在中国版本的Arduino UNO SCL和SDA线可能有不同的定位,请检查一下你的板。演示视频:
【转载自DF社区】
来自:时间:
分享STM32驱动0.96寸OLED显示屏硬件原理图和PCB资料,有需要的可以下载
来自:时间:
文字章转自一个在某宝买的白光焊烙铁之后自己改编完善的大神买家,资料经过他的不断完善,已经超出了之前买的资料。重点是这位买家无偿的奉献出原理图和代码给有需要的人!大家有福啦!如果对资料有什么问题可以咨询QQ群。优点:①编码器工作顺畅(之前的程序编码器旋转存在卡顿现象)②功率更足③没有乱七八糟没用的功能(如密码、DS1302万年历等)菜单介绍:菜单用法:长按编码器进入一级菜单,旋转编码器选择想要进入的二级菜单,短按进入该二级菜单。旋转编码器,将光标移动至需要修改的具体参数上,短按编码器选中该内容(选中后光标由”&”改变为”&=”)。再次旋转编码器修改该值,修改完成后短按编码器取消选中(取消选中后光标由”&=”改变为”&”),再次旋转编码器可以移动光标至其他参数上。退出一级菜单和二级菜单均需要长按编码器,长按时间为1s。其余部分可以下载资料查看,就不一一展示。附件截图:
来自:时间:
本设计分享的是16位96*64点阵RGB-OLED显示屏设计,附PCB文件/OLED库/图形库等。该RBG OLED显示屏是具有RGB颜色的16位96 * 64点阵OLED显示模块。它是基于SSD1331模块,它是一个单芯片CMOS OLED / PLED驱动器,具有288段和64个通用输出,支持多达96个RGB * 64点阵显示。它使用SPI进行通信。16位96*64点阵RGB-OLED显示屏特点:
电源电压(VCC):3.3V显示颜色:RGB点矩阵:96 * 64工作温度:-20?70℃尺寸:25.43mm x 20.35mm
画线下载附件里的RGB OLED库和SGL库,然后安装到您的Arduino库。通过路径打开DrawLine示例草图:Files-& Examples-& RGB_OLED_96_64-& examples-& drawLine。选择正确的端口号,电路板类型应为Seeeduino Xadow,然后上传代码,可以看到四条不同颜色的线将被画在RGB OLED的屏幕上。
绘制矩形可能感兴趣的项目设计:http://www.cirmall.com/circuit/7182/detail?3
来自:时间:
本设计分享的是128x64的OLED显示屏模块电路工程文件设计,见附件下载其原理图/PCB源文件及OLED库文件。该OLED显示屏的优点是其功耗低,可以说是最节能的液晶屏幕。128x64的OLED屏非常酷,该模块配备了最全面的软件支持,您可以毫不费力地在此屏幕上绘制所需的图案。将128x64的OLED显示屏模块连接到Xadow主板:说明:下载OLED库并将其安装到Arduino库中。通过路径:Files-& Examples-& OLED_Display12864-&例如OLED_Bitmap_Inverse_Hello_World的示例打开任何代码,所以您将在OLED屏幕中观察“Hello World”。128x64的OLED显示屏模块实物截图:128x64的OLED显示屏模块特点: 电源电压(VCC):3.3V显示颜色:白色点矩阵:128 * 64工作温度:-20?70℃尺寸:25.43mm x 20.35mm连接:I2C(地址0x3C)128x64的OLED显示屏模块库文件截图:
来自:时间:
猜你喜欢(实时推荐最适合你的电路)
0.96'OLED是一款高性能的显示设备。我们提供的资料里详细介绍YFROBOT 0.96’OLE(带字库)的使用方法,并提供详细的例程详解。该模块特点:
三色可选,模块有两种单色和黄蓝双色两种颜色可选,单色为纯白色和纯蓝色,双色为黄蓝双色;超小尺寸,显示尺寸为0.96 寸,模块尺寸为27mm(长)*26mm(宽)*4mm(高);高分辨率,分辨率为128*64;两种接口模式,4 线串行SPI 接口模式,IIC 接口模式;带字库芯片,可显示标准的国标简体(GB2312)汉字、8*16 点ASCII 粗体字库、7*8点ASCII 字库、5*7 点ASCII 字库;兼容3.3V~5V 电压。0.96’OLED 模块通过外部排针和单片机通讯,各引脚详细描述如下:序号名称
电源,3.3V~5V3CLK
4线ISP接口模式:时钟线IIC接口模式:时钟线GT20L16S1Y的时钟线4DIN
4线ISP接口模式:串行数据线IIC接口模式:数据线GT20L16S1Y的串行数据输入端口5D/C
4线ISP接口模式:命令/数据标志位IIC接口模式:接GND6CS1
4线ISP接口模式:OLED片选IIC接口模式:接GND7SO
GT20L16S1Y的串行数据输出端口8CS2
GT20L16S1Y的片选端口附件包含以下资料:Aarduino OLED显示(实验1:HelloWord;实验2:贪吃蛇)STM32 OLED显示资料手册
ASCII码表.pdf;GB2312简体中文编码表.pdf;GT20L16S1Y用户手册V35.pdf;SAS1-9046-B UG-2864HSWEG01-Univision.pdf;SSD1306-Revision 1.1 (Charge Pump).pdf0.96'OLED(带字库)使用手册V1.0.pdf字符图片取模软件
来自:时间:
附件内容分享的是基于Arduino设计的OLED显示屏驱动程序,详见附件内容。视频演示:
由于OLED多工作于3.3v,因此为了匹配输入端电压,用了一块缓冲器CD4050。CD4050是非反相六缓冲器,具有仅用一电源电压(VCC)进行逻辑电平转换的特征。用作逻辑电平转换时,输入高电平电压(VIH)超过电源电压VCC。该器件主要用作COS/MOS到DTL/TTL的转换器,能直接驱动两个DTL/TTL负载。16引出端是空脚 ,与内部电路无连接。接线如下:Arduino IO端口
CD4050引脚DIGITAL9
----------------------
14 10 ----------------------
1111 ----------------------
912 ----------------------
513 ----------------------
------------------ 1GND
------------------- 8LM096-128064引脚/ 功能
CD4050引脚1 ------VDD---------------------------
12 ------VSS----------------------------
83 ------- CS# -------------------------- 44 --------RES# -----------------------
25 --------D/C#------------------------ 108--------- D0
-----------------------
129 -------- D1 -------------------------- 15
来自:时间:
OLED 简介:OLED,即有机发光二极管(Organic Light-Emitting Diode),又称为有机电激光显示(Organic Electroluminesence Display, OELD)。因为具备轻薄、省电等特性,因此从2003 年开始,这种显示设备在MP3播放器上得到了广泛应用,而对于同属数码类产品的DC 与手机,此前只是在一些展会上展示过采用OLED 屏幕的工程样品。自2007 年后,寿命得到很大提高,具备了许多LCD 不可比拟的优势。本OLED显示屏内部驱动芯片SSD1306管脚说明:GND:电源地VCC:2.2V-5.5VSCL:CLK时钟(高电平2.2V-5.5V)SDA:MOSI数据(高电平2.2V-5.5V)RST:复位(高电平2.2V-5.5V)单片机采用 3.3V 电压的接线模式:单片机采用5V 电压的接线模式:本OLED电路连接如截图:附件内容:1.OLEN裸屏用户资料2.取模软件3.飞思卡尔K60程序4.飞思卡尔xs128程序5.STC单片机程序
来自:时间:
2016 年 08 月 02日
gniliang购买了:
betterwell购买了:
betterwell购买了:
linxiaotuzi购买了:
fusheng123购买了:
马前程购买了:
betterwell购买了:
免费下载!
您想购买此电路吗?,上传电路,审核成功后获取电路城6折折扣劵。
6折折扣劵只能购买小于100元(含100元)的电路。
由于与非网服务器迁移,6月27日用户可能会出现无法登陆的情况,我们会尽快恢复。谢谢大家的耐心等待!树莓派raspberry使用spi接口oled显示屏:基于python和c – Blog of
本博客所有内容(文字、图片及其它)除标明转载外,均为原创,作者为 ,采用进行许可。
2017年五月
2017年一月
2016年十一月
2016年十月
2016年九月
2016年七月
2016年六月
2016年五月
2016年四月
2016年三月
2016年二月
2016年一月
2015年十二月
2015年十一月
2015年十月
2015年九月
2015年八月
2015年七月
2015年六月
2015年四月
2015年三月
2015年二月
2015年一月
2014年十二月
2014年十一月
2014年十月
2014年九月
2014年八月
2014年七月
2014年六月
2014年五月
2014年四月
2014年三月
2014年二月
2013年十二月
2013年十一月
2013年十月STM32用SPI方式控制OLED模块
1. OLED模块的外观
2. OLED模块的电路图
3. OLED模块参数
3.3V(串电阻后,可与 5V 系统连接)
屏幕分辨率
-40℃~70℃
颜色 纯蓝色、黄蓝双色
模块尺寸| 27mm*26mm
二、GPIO模拟SPI
1. 硬件连接
通过引脚和模块电路图可以分析出SPI的电路连接
&----------&
&----------&
&----------&
&----------&
&----------&
PA2(RET复位)
&----------&
PA1(命令|数据dc)
&----------&
2. 软件驱动
由OLED模块数据手册上SPI的操作时序图写出由GPIO口模拟的SPI驱动代码
模块只支持向模块写数据不能读数据
所以只需要写SPI发送即可
2.1 “SPI.h”
#define OLED_CMD 0
#define OLED_DATA 1
#define OLED_CLK
#define OLED_MOSI
#define OLED_RST
#define OLED_DC
void OLED_SPI_Init(void);
void SPI_WriteByte(uint8_t addr,uint8_t data);
void WriteCmd(unsigned char cmd);
void WriteDat(unsigned char data);
2.2 “SPI.c”
/*************************************************************************/
/*函数功能: GPIO模拟SPI端口初始化
/*************************************************************************/
void OLED_SPI_Init(void)
GPIO_InitTypeDef GPIO_InitS
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA ,ENABLE);//使能PA端口时钟
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4; //端口配置
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//推挽输出
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//IO口速度为50MHz
GPIO_Init(GPIOA,&GPIO_InitStructure);//根据设定参数初始化GPIOA
/*************************************************************************/
/*函数功能: 通过SPIO软件模拟SPI通信协议,向模块(SSD1306)写入一个字节
/*入口参数:
data:要写入的数据/命令
cmd :数据/命令标志 0,表示命令;1,表示数据;
/*************************************************************************/
void SPI_WriteByte(unsigned char data,unsigned char cmd)
unsigned char i=0;
OLED_CLK=0;
for(i=0;i&8;i++)
OLED_CLK=0;
if(data&0x80)OLED_MOSI=1; //从高位到低位
else OLED_MOSI=0;
OLED_CLK=1;
OLED_CLK=1;
OLED_DC=1;
/*************************************************************************/
/*函数功能: 写命令
/*************************************************************************/
void WriteCmd(unsigned char cmd)
SPI_WriteByte(cmd,OLED_CMD);
/*************************************************************************/
/*函数功能: 写数据
/*************************************************************************/
void WriteData(unsigned char data)
SPI_WriteByte(data,OLED_DATA);
三、STM32对OLED模块的控制
3.1 指令集
设置对比度
值越大,屏幕越亮(默认 0X7F); 0X00~0XFF(1~255)
设置显示开关
AE,关闭显示;AF,开启显示
电荷泵设置
0x10,关闭电荷泵;0x14开启电荷泵
设置页地址
0~7 对应页 0~7
设置列地址(低四位)
设置 8 位起始列地址的低四位
设置列地址(高四位)
设置 8 位起始列地址的高四位
更多请查询SSD1306 的data sheet
3.2 “OLED.h”
void OLED_Init(void);
void OLED_ON(void);
void OLED_OFF(void);
void OLED_Refresh_Gram(void);
void OLED_Clear(void);
void OLED_DrawPoint(u8 x,u8 y,u8 t);
void OLED_Fill(u8 x1,u8 y1,u8 x2,u8 y2,u8 dot);
void OLED_ShowChar(u8 x,u8 y,u8 chr,u8 size,u8 mode);
void OLED_ShowNum(u8 x,u8 y,u32 num,u8 len,u8 size);
void OLED_ShowString(u8 x,u8 y,const u8 *p,u8 size);
3.3 “OLED.c”
//OLED的显存
//存放格式如下.
//[0]0 1 2 3 ... 127
//[1]0 1 2 3 ... 127
//[2]0 1 2 3 ... 127
//[3]0 1 2 3 ... 127
//[4]0 1 2 3 ... 127
//[5]0 1 2 3 ... 127
//[6]0 1 2 3 ... 127
//[7]0 1 2 3 ... 127
u8 OLED_GRAM[128][8];
/*************************************************************************/
/*函数功能: 软延时
/*************************************************************************/
void OLED_DLY_ms(unsigned int ms)
while(a--);
/*************************************************************************/
/*函数功能: 初始化OLED模块
/*************************************************************************/
void OLED_Init(void)
OLED_SPI_Init();
OLED_CLK = 1;
OLED_RST = 0;
OLED_DLY_ms(100);
OLED_RST = 1;
//从上电到下面开始初始化要有足够的时间,即等待RC复位完毕
WriteCmd(0xAE);
// Display Off (0x00)
WriteCmd(0xD5);
WriteCmd(0x80);
// Set Clock as 100 Frames/Sec
WriteCmd(0xA8);
WriteCmd(0x3F);
// 1/64 Duty (0x0F~0x3F)
WriteCmd(0xD3);
WriteCmd(0x00);
// Shift Mapping RAM Counter (0x00~0x3F)
WriteCmd(0x40 | 0x00);
// Set Mapping RAM Display Start Line (0x00~0x3F)
WriteCmd(0x8D);
WriteCmd(0x10 | 0x04);
// Enable Embedded DC/DC Converter (0x00/0x04)
WriteCmd(0x20);
WriteCmd(0x02);
// Set Page Addressing Mode (0x00/0x01/0x02)
WriteCmd(0xA0 | 0x01);
// Set SEG/Column Mapping
WriteCmd(0xC0);
// Set COM/x Scan Direction
WriteCmd(0xDA);
WriteCmd(0x02 | 0x10);
// Set Sequential Configuration (0x00/0x10)
WriteCmd(0x81);
WriteCmd(0xCF);
// Set SEG Output Current
WriteCmd(0xD9);
WriteCmd(0xF1);
// Set Pre-Charge as 15 Clocks & Discharge as 1 Clock
WriteCmd(0xDB);
WriteCmd(0x40);
// Set VCOM Deselect Level
WriteCmd(0xA4 | 0x00);
// Disable Entire Display On (0x00/0x01)
WriteCmd(0xA6 | 0x00);
// Disable Inverse Display On (0x00/0x01)
WriteCmd(0xAE | 0x01);
// Display On (0x01)
OLED_Clear();
//初始清屏
/*************************************************************************/
/*函数功能: 将OLED从休眠中唤醒
/*************************************************************************/
void OLED_ON(void)
WriteCmd(0X8D);
//设置电荷泵
WriteCmd(0X14);
//开启电荷泵
WriteCmd(0XAF);
//OLED唤醒
/*************************************************************************/
/*函数功能: 将OLED休眠 -- 休眠模式下,OLED功耗不到10uA
/*************************************************************************/
void OLED_OFF(void)
WriteCmd(0X8D);
//设置电荷泵
WriteCmd(0X10);
//关闭电荷泵
WriteCmd(0XAE);
//OLED休眠
/*************************************************************************/
/*函数功能: 更新显存到OLED
/*************************************************************************/
void OLED_Refresh_Gram(void)
for(i=0;i&8;i++)
WriteCmd(0xb0+i);
//设置页地址(0~7)
WriteCmd(0x00);
//设置显示位置—列低地址
WriteCmd(0x10);
//设置显示位置—列高地址
for(n=0;n&128;n++)WriteData(OLED_GRAM[n][i]);
/*************************************************************************/
/*函数功能: 清屏
/*************************************************************************/
void OLED_Clear(void)
for(i=0;i&8;i++)for(n=0;n&128;n++)OLED_GRAM[n][i]=0X00;
OLED_Refresh_Gram();//更新显示
/*************************************************************************/
/*函数功能: 画点
/*入口参数:
dot:0,清空;1,填充
/*************************************************************************/
void OLED_DrawPoint(u8 x,u8 y,u8 t)
u8 pos,bx,temp=0;
if(x&127||y&63)//超出范围了.
pos=7-y/8;
temp=1&&(7-bx);
if(t)OLED_GRAM[x][pos]|=
else OLED_GRAM[x][pos]&=~
/*************************************************************************/
/*函数功能: 填充
/*入口参数:
x1,y1,x2,y2 填充区域的对角坐标
确保x1&=x2;y1&=y2 0&=x1&=127 0&=y1&=63
dot:0,清空;1,填充
/*************************************************************************/
void OLED_Fill(u8 x1,u8 y1,u8 x2,u8 y2,u8 dot)
for(x=x1;x&=x2;x++)
for(y=y1;y&=y2;y++)OLED_DrawPoint(x,y,dot);
OLED_Refresh_Gram();//更新显示
/*************************************************************************/
/*函数功能: 在指定位置显示一个字符,包括部分字符
/*入口参数:
mode:0,反白显示;1,正常显示
size:选择字体 16/12
/*************************************************************************/
void OLED_ShowChar(u8 x,u8 y,u8 chr,u8 size,u8 mode)
u8 temp,t,t1;
u8 csize=(size/8+((size%8)?1:0))*(size/2);
//得到字体一个字符对应点阵集所占的字节数
chr=chr-' ';//得到偏移后的值
for(t=0;t&t++)
if(size==12)temp=asc2_1206[chr][t];
//调用1206字体
else if(size==16)temp=asc2_1608[chr][t];
//调用1608字体
else if(size==24)temp=asc2_2412[chr][t];
//调用2412字体
//没有的字库
for(t1=0;t1&8;t1++)
if(temp&0x80)OLED_DrawPoint(x,y,mode);
else OLED_DrawPoint(x,y,!mode);
if((y-y0)==size)
u32 mypow(u8 m,u8 n)
u32 result=1;
while(n--)result*=m;
/*************************************************************************/
/*函数功能: 显示2个数字
/*入口参数:
x,y :起点坐标
len :数字的位数
size:字体大小
0,填充模式;1,叠加模式
num:数值(0~)
/*************************************************************************/
void OLED_ShowNum(u8 x,u8 y,u32 num,u8 len,u8 size)
u8 enshow=0;
for(t=0;t&t++)
temp=(num/mypow(10,len-t-1))%10;
if(enshow==0&&t&(len-1))
if(temp==0)
OLED_ShowChar(x+(size/2)*t,y,' ',size,1);
}else enshow=1;
OLED_ShowChar(x+(size/2)*t,y,temp+'0',size,1);
/*************************************************************************/
/*函数功能: 显示字符串
/*入口参数:
x,y:起点坐标
size:字体大小
*p:字符串起始地址
/*************************************************************************/
void OLED_ShowString(u8 x,u8 y,const u8 *p,u8 size)
while((*p&='~')&&(*p&=' '))//判断是不是非法字符!
if(x&(128-(size/2))){x=0;y+=}
if(y&(64-size)){y=x=0;OLED_Clear();}
OLED_ShowChar(x,y,*p,size,1);
x+=size/2;
四、用STM32的SPI资源(可选)
也可以不使用GPIO口模拟,使用STM32的SPI资源
驱动代码如下:
void OLED_SPI_Init(void)
GPIO_InitTypeDef GPIO_InitS
SPI_InitTypeDef SPI_InitS
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA|
RCC_APB2Periph_SPI1, ENABLE );
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_SetBits(GPIOA,GPIO_Pin_5|GPIO_Pin_7);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1|GPIO_Pin_2;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullD
SPI_InitStructure.SPI_Mode = SPI_Mode_M
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
SPI_InitStructure.SPI_CPOL = SPI_CPOL_H
SPI_InitStructure.SPI_CPHA = SPI_CPHA_2E
SPI_InitStructure.SPI_NSS = SPI_NSS_S
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_16;
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
SPI_InitStructure.SPI_CRCPolynomial = 7;
SPI_Init(SPI1, &SPI_InitStructure);
SPI_Cmd(SPI1, ENABLE);
void OLED_WB(uint8_t data)
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);
SPI_I2S_SendData(SPI1, data);
void SPI_WriteByte(unsigned char data,unsigned char cmd)
unsigned char i=0;
OLED_WB(data);
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!

我要回帖

更多关于 s8550引脚图与电路图 的文章

 

随机推荐