中景园电子0.96寸IIC显示屏代码 通用性较高
0.96寸IIC显示屏代码 通用性较高,可自行提取修改使用
单片机调试经常需要显示调试过程中的各种参数,本文提供了ST系列相对通用的代码。
初始化部分:
#include <iostm8s105k4.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#define SCL PB_ODR_ODR4 //开发板上的LED2连接在PB4上
#define SDA PB_ODR_ODR5 //开发板上的LED2连接在PB5上
#define OLED_addr 0x78 //液晶显示的地址
#define Brightness 0xCF //把oxCF定义为亮
#define X_WIDTH 128 //OLED分辨率为128*64 每一??128个点,128为X轴的长度
#define Y_WIDTH 64 //每一??64个点 64为Y轴的长度
//.....用户自定义
//.....用户自定义
//.....用户自定义
//.....用户自定义
//.....用户自定义
16X16的汉字表:
uchar temp;
const uchar F16x16[] =
{0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x7F,0x44,0x44,0x44,0x44,0x44,0x40,0x40,0x00,0x00,0x00,0x7F,0x40,0x50,0x48,0x44,0x43,0x44,0x48,0x50,0x40,0xFF,0x00,0x00,0x00,/*"齿",0*/0xC8,0xB8,0x8F,0xE8,0x88,0xC8,0x20,0x90,0x0C,0x03,0x0C,0x90,0x20,0x40,0x40,0x00,0x08,0x18,0x08,0xFF,0x04,0x04,0x00,0x3F,0x44,0x42,0x41,0x40,0x40,0x70,0x00,0x00,/*"轮",1*/0x40,0x40,0x40,0x7C,0x40,0x40,0x40,0x7F,0x44,0x44,0x44,0x44,0x44,0x40,0x40,0x00,0x00,0x00,0x7F,0x40,0x50,0x48,0x44,0x43,0x44,0x48,0x50,0x40,0xFF,0x00,0x00,0x00,/*"齿",2*/0x40,0x40,0x42,0xCC,0x00,0x04,0xF4,0x94,0x94,0xFF,0x94,0x94,0xF4,0x04,0x00,0x00,0x00,0x40,0x20,0x1F,0x20,0x48,0x44,0x42,0x41,0x5F,0x41,0x42,0x44,0x48,0x40,0x00,/*"速",3*/0x00,0x00,0x04,0x14,0x64,0x04,0x0C,0xB4,0x02,0x02,0x42,0x33,0x02,0x00,0x00,0x00,0x40,0x41,0x21,0x11,0x09,0x05,0x03,0xFF,0x03,0x05,0x09,0x11,0x21,0x41,0x40,0x00,/*"采",4*/0x20,0x10,0x08,0xFC,0x57,0x54,0x54,0x55,0xFE,0x54,0x54,0x54,0x54,0x04,0x00,0x00,0x44,0x44,0x24,0x27,0x15,0x0D,0x05,0xFF,0x05,0x0D,0x15,0x25,0x25,0x45,0x44,0x00,/*"集",5*/};
8*16 ASCII表:
/****************************************8*16 ASCII表************************************/
const unsigned char F8X16[]=
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// 00x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00,//! 10x00,0x10,0x0C,0x06,0x10,0x0C,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//" 20x40,0xC0,0x78,0x40,0xC0,0x78,0x40,0x00,0x04,0x3F,0x04,0x04,0x3F,0x04,0x04,0x00,//# 30x00,0x70,0x88,0xFC,0x08,0x30,0x00,0x00,0x00,0x18,0x20,0xFF,0x21,0x1E,0x00,0x00,//$ 40xF0,0x08,0xF0,0x00,0xE0,0x18,0x00,0x00,0x00,0x21,0x1C,0x03,0x1E,0x21,0x1E,0x00,//% 50x00,0xF0,0x08,0x88,0x70,0x00,0x00,0x00,0x1E,0x21,0x23,0x24,0x19,0x27,0x21,0x10,//& 60x10,0x16,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//' 70x00,0x00,0x00,0xE0,0x18,0x04,0x02,0x00,0x00,0x00,0x00,0x07,0x18,0x20,0x40,0x00,//( 80x00,0x02,0x04,0x18,0xE0,0x00,0x00,0x00,0x00,0x40,0x20,0x18,0x07,0x00,0x00,0x00,//) 90x40,0x40,0x80,0xF0,0x80,0x40,0x40,0x00,0x02,0x02,0x01,0x0F,0x01,0x02,0x02,0x00,//* 100x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x1F,0x01,0x01,0x01,0x00,//+ 110x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xB0,0x70,0x00,0x00,0x00,0x00,0x00,//, 120x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,//- 130x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,//. 140x00,0x00,0x00,0x00,0x80,0x60,0x18,0x04,0x00,0x60,0x18,0x06,0x01,0x00,0x00,0x00,/// 150x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,//0 160x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//1 170x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,//2 180x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,//3 190x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,//4 200x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,//5 210x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,//6 220x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,//7 230x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,//8 240x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,//9 250x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,//: 260x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x60,0x00,0x00,0x00,0x00,//; 270x00,0x00,0x80,0x40,0x20,0x10,0x08,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x00,//< 280x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,//= 290x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x20,0x10,0x08,0x04,0x02,0x01,0x00,//> 300x00,0x70,0x48,0x08,0x08,0x08,0xF0,0x00,0x00,0x00,0x00,0x30,0x36,0x01,0x00,0x00,//? 310xC0,0x30,0xC8,0x28,0xE8,0x10,0xE0,0x00,0x07,0x18,0x27,0x24,0x23,0x14,0x0B,0x00,//@ 320x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,//A 330x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00,//B 340xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00,//C 350x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00,//D 360x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00,//E 370x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x00,0x03,0x00,0x00,0x00,//F 380xC0,0x30,0x08,0x08,0x08,0x38,0x00,0x00,0x07,0x18,0x20,0x20,0x22,0x1E,0x02,0x00,//G 390x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20,//H 400x00,0x08,0x08,0xF8,0x08,0x08,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//I 410x00,0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,0x00,//J 420x08,0xF8,0x88,0xC0,0x28,0x18,0x08,0x00,0x20,0x3F,0x20,0x01,0x26,0x38,0x20,0x00,//K 430x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00,//L 440x08,0xF8,0xF8,0x00,0xF8,0xF8,0x08,0x00,0x20,0x3F,0x00,0x3F,0x00,0x3F,0x20,0x00,//M 450x08,0xF8,0x30,0xC0,0x00,0x08,0xF8,0x08,0x20,0x3F,0x20,0x00,0x07,0x18,0x3F,0x00,//N 460xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00,//O 470x08,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00,0x20,0x3F,0x21,0x01,0x01,0x01,0x00,0x00,//P 480xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00,//Q 490x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00,0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20,//R 500x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00,0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00,//S 510x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//T 520x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//U 530x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08,0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00,//V 540xF8,0x08,0x00,0xF8,0x00,0x08,0xF8,0x00,0x03,0x3C,0x07,0x00,0x07,0x3C,0x03,0x00,//W 550x08,0x18,0x68,0x80,0x80,0x68,0x18,0x08,0x20,0x30,0x2C,0x03,0x03,0x2C,0x30,0x20,//X 560x08,0x38,0xC8,0x00,0xC8,0x38,0x08,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//Y 570x10,0x08,0x08,0x08,0xC8,0x38,0x08,0x00,0x20,0x38,0x26,0x21,0x20,0x20,0x18,0x00,//Z 580x00,0x00,0x00,0xFE,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x7F,0x40,0x40,0x40,0x00,//[ 590x00,0x0C,0x30,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x06,0x38,0xC0,0x00,//\ 600x00,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x7F,0x00,0x00,0x00,//] 610x00,0x00,0x04,0x02,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//^ 620x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,//_ 630x00,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//` 640x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20,//a 650x08,0xF8,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00,//b 660x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00,//c 670x00,0x00,0x00,0x80,0x80,0x88,0xF8,0x00,0x00,0x0E,0x11,0x20,0x20,0x10,0x3F,0x20,//d 680x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00,//e 690x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x18,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//f 700x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x6B,0x94,0x94,0x94,0x93,0x60,0x00,//g 710x08,0xF8,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//h 720x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//i 730x00,0x00,0x00,0x80,0x98,0x98,0x00,0x00,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,//j 740x08,0xF8,0x00,0x00,0x80,0x80,0x80,0x00,0x20,0x3F,0x24,0x02,0x2D,0x30,0x20,0x00,//k 750x00,0x08,0x08,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//l 760x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,//m 770x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//n 780x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//o 790x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00,0x80,0xFF,0xA1,0x20,0x20,0x11,0x0E,0x00,//p 800x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x0E,0x11,0x20,0x20,0xA0,0xFF,0x80,//q 810x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00,//r 820x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00,//s 830x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x20,0x00,0x00,//t 840x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20,//u 850x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00,//v 860x80,0x80,0x00,0x80,0x00,0x80,0x80,0x80,0x0F,0x30,0x0C,0x03,0x0C,0x30,0x0F,0x00,//w 870x00,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x31,0x2E,0x0E,0x31,0x20,0x00,//x 880x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x81,0x8E,0x70,0x18,0x06,0x01,0x00,//y 890x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x21,0x30,0x2C,0x22,0x21,0x30,0x00,//z 900x00,0x00,0x00,0x00,0x80,0x7C,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x3F,0x40,0x40,//{ 910x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,//| 920x00,0x02,0x02,0x7C,0x80,0x00,0x00,0x00,0x00,0x40,0x40,0x3F,0x00,0x00,0x00,0x00,//} 930x00,0x06,0x01,0x01,0x02,0x02,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//~ 94
};
延时函数:
/**************OLED驱动程序用的延时函数****************/
void Delay_nms(uint nms) //延迟函数{uint i,j;for (i=0;i<nms;i++){for(j = 0;j<MCLK/4000;j++);}}
I2C初始化,并包含引脚初始化:
void I2C_Init() //I2C初始化{CLK_PCKENR1 |=0x01; //使能I2C外设时钟PB_DDR &= 0x30; // 把PB4、PB5设置为低速率开漏输出模式。原来的是 0xcf 30PB_CR1 &= 0xcf; //PB_CR2 &= 0xcf; //I2C_CR1 = 0x00; //禁用I2C模块I2C_FREQR = 0x10; //输入时钟频率为16MHzI2C_TRISER = 0x11; //0x10+1I2C_OARH = 0x40; //七位地址模式I2C_OARL = 0xa0; //自身地址0xa0I2C_CCRL = 0x50; // 16M/ 100k/ 2I2C_CCRH = 0x00; // 标准模式I2C_CR1 = 0x01; //I2C使能}
I2C写操作(一个字节):
void I2C_Write_Byte(uchar DeviceAddress,uchar Address,uchar Data){//uchar temp =0; while ((I2C_SR3 & 0x02)!= 0); // 等待I2C总线空闲 位1:1是总线上有通信I2C_CR2=0x01; //while ((I2C_SR1 & 0x01)== 0); // EV5,起始信号已经发送I2C_DR=(DeviceAddress & 0xfe); //发送从器件物理地址,最低为0,写操作while ((I2C_SR1 & 0x02)== 0); //地址已经被发送temp = I2C_SR1;temp = I2C_SR3;while ((I2C_SR1 & 0x80)== 0); // 等待发送寄存器为空I2C_DR = Address; //发送要写入的寄存器地址while ((I2C_SR1 & 0x04)== 0); //等待发送完成while ((I2C_SR1 & 0x80)== 0); //等待发送寄存器为空I2C_DR = Data; //发送要写入的数据while ((I2C_SR1 & 0x04)== 0); //等待发送完成temp = I2C_SR1; //清零BTF标志位temp = I2C_DR;I2C_CR2=0x02;}
OLED写命令:
void OLED_WrCmd(uchar cmd) {I2C_Write_Byte(0x78,0x00,cmd); }
OLED写数据:
void OLED_WrDat(uchar Data) {// 只需要调用这个就可以I2C_Write_Byte(0x78,0x40,Data)I2C_Write_Byte(0x78,0x40,Data);}
OLED 设置坐标:
void OLED_Set_Pos(unsigned char x, unsigned char y)
{ OLED_WrCmd(0xb0+y);OLED_WrCmd(((x&0xf0)>>4)|0x10);//把变量X的高4位移到低4四位去,且和0x10取或运算(这里可看成+16)OLED_WrCmd((x&0x0f)|0x01); //把变量X的值取低4位,且与0x01取或运算(最低位始终为1)
}
OLED全屏:
void OLED_Fill(unsigned char bmp_dat)
{unsigned char y,x;for(y=0;y<8;y++){OLED_WrCmd(0xb0+y);OLED_WrCmd(0x01);OLED_WrCmd(0x10);for(x=0;x<X_WIDTH;x++)OLED_WrDat(bmp_dat);}
}
OLED复位 清屏:
void OLED_CLS(void)
{unsigned char y,x;for(y=0;y<8;y++){OLED_WrCmd(0xb0+y);OLED_WrCmd(0x01);OLED_WrCmd(0x10);for(x=0;x<X_WIDTH;x++)OLED_WrDat(0);}
}
OLED初始化:
void OLED_Init(void)
{Delay_nms(500);//初始化之前的延时很重要!OLED_WrCmd(0xae);//--turn off oled panelOLED_WrCmd(0x00);//---set low column addressOLED_WrCmd(0x10);//---set high column addressOLED_WrCmd(0x40);//--set start line address Set Mapping RAM Display Start Line (0x00~0x3F)OLED_WrCmd(0x81);//--set contrast control registerOLED_WrCmd(Brightness); // Set SEG Output Current BrightnessOLED_WrCmd(0xa1);//--Set SEG/Column Mapping 0xa0左右反置 0xa1正常OLED_WrCmd(0xc8);//Set COM/Row Scan Direction 0xc0上下反置 0xc8正常OLED_WrCmd(0xa6);//--set normal displayOLED_WrCmd(0xa8);//--set multiplex ratio(1 to 64)OLED_WrCmd(0x3f);//--1/64 dutyOLED_WrCmd(0xd3);//-set display offset Shift Mapping RAM Counter (0x00~0x3F)OLED_WrCmd(0x00);//-not offsetOLED_WrCmd(0xd5);//--set display clock divide ratio/oscillator frequencyOLED_WrCmd(0x80);//--set divide ratio, Set Clock as 100 Frames/SecOLED_WrCmd(0xd9);//--set pre-charge periodOLED_WrCmd(0xf1);//Set Pre-Charge as 15 Clocks & Discharge as 1 ClockOLED_WrCmd(0xda);//--set com pins hardware configurationOLED_WrCmd(0x12);OLED_WrCmd(0xdb);//--set vcomhOLED_WrCmd(0x40);//Set VCOM Deselect LevelOLED_WrCmd(0x20);//-Set Page Addressing Mode (0x00/0x01/0x02)OLED_WrCmd(0x02);//OLED_WrCmd(0x8d);//--set Charge Pump enable/disableOLED_WrCmd(0x14);//--set(0x10) disableOLED_WrCmd(0xa4);// Disable Entire Display On (0xa4/0xa5)OLED_WrCmd(0xa6);// Disable Inverse Display On (0xa6/a7) OLED_WrCmd(0xaf);//--turn on oled panelOLED_Fill(0x00); //初始清屏OLED_Set_Pos(0,0);
}
功能描述:显示8*16组标准ASCII字符?? 显示的坐标(x,y),y为页范围0~7
void OLED_P8x16Str(uchar x, uchar y, char ch[]) //8x16的字符串
{unsigned char c=0,i=0,j=0;while (ch[j]!='\0'){c =ch[j]-32;if(x>120){x=0;y++;}OLED_Set_Pos(x,y);for(i=0;i<8;i++)OLED_WrDat(F8X16[c*16+i]);OLED_Set_Pos(x,y+1);for(i=0;i<8;i++)OLED_WrDat(F8X16[c*16+i+8]);x+=8;j++;}
}
功能描述:显示16*16点阵 显示的坐标(x,y),y为页范围0~7:
void OLED_P16x16Ch(unsigned char x, unsigned char y,unsigned char N)
{unsigned char wm=0;unsigned int adder=32*N;OLED_Set_Pos(x,y);for(wm = 0;wm < 16;wm++){OLED_WrDat(F16x16[adder]);adder += 1;}OLED_Set_Pos(x,y + 1);for(wm = 0;wm < 16;wm++){OLED_WrDat(F16x16[adder]);adder += 1;}
}
主函数:
(此部分须根据实际情况进行用户自定义)
int main( void )
{CLK_Init();I2C_Init();OLED_Init();OLED_Fill(0xFF); //显示OLED全屏填充OLED_Fill(0xff); //OLED屏全充Delay_nms(100);OLED_Fill(0x00); //OLED屏清完Delay_nms(100);//第一行显示:齿轮齿速采集OLED_P16x16Ch(16,0,0); //4为行的第4个点 0为y轴第一行 后一个0为第1个字OLED_P16x16Ch(32,0,1); OLED_P16x16Ch(48,0,2);OLED_P16x16Ch(64,0,3);OLED_P16x16Ch(80,0,4);OLED_P16x16Ch(96,0,5);//第二行显示:N:OLED_P8x16Str(8,2,"N:");//第三行显示:S:OLED_P8x16Str(8,4,"S:");//第三行显示:V:OLED_P8x16Str(8,6,"V:");while(1){IN0_N_DIS[0]=(N/1000)+0x30;//一定要加48=0x30,要不然不会显示。IN0_N_DIS[1]=(N/100)%10+0x30;IN0_N_DIS[2]=(N/10)%10+0x30;IN0_N_DIS[3]=N%10+0x30;IN0_S_DIS[0]=(S/10000)%10+0x30;IN0_S_DIS[1]=(S/1000)%10+0x30;IN0_S_DIS[2]=(S/100)%10+0x30;IN0_S_DIS[3]= '.';IN0_S_DIS[4]=(S/10)%10+0x30;IN0_S_DIS[5]=S%10+0x30;IN0_S_DIS[6]=' ';IN0_S_DIS[7]='m';IN0_V_DIS[0]=(V/100000)%10+0x30;IN0_V_DIS[1]=(V/10000)%10+0x30;IN0_V_DIS[2]=(V/1000)%10+0x30;IN0_V_DIS[3]= '.';IN0_V_DIS[4]=(V/100)%10+0x30;IN0_V_DIS[5]='0';IN0_V_DIS[6]=' ';IN0_V_DIS[7]='m';IN0_V_DIS[8]='/'; IN0_V_DIS[9]='s';OLED_P8x16Str(46,2,IN0_N_DIS); //注意这种显示的用法OLED_P8x16Str(46,4,IN0_S_DIS);OLED_P8x16Str(46,6,IN0_V_DIS);}
}
中景园电子0.96寸IIC显示屏代码 通用性较高相关推荐
- 0.96寸IIC接口ssd1306和ssd1315驱动oled12864屏幕介绍
0.96寸IIC接口ssd1306和ssd1315驱动oled12864屏幕介绍 图为中景园的0.96寸ssd1306屏幕,适合于PCB一体化设计.如果想分开,可以直接购买带焊接好转接的OLED屏幕. ...
- 0.96寸OLED显示屏标准库移植HAL库(模拟IIC) - 基于STM32
** 0.96寸OLED显示屏标准库移植HAL库,使用模拟IIC ** 由于项目的需要使用OLED屏显示,并且现有的项目程序是基于HAL库编写的,而手头能找到的程序是标准库的驱动程序,大概看了一下代码 ...
- STM32F103C8T6 0.96寸 OLED显示屏 IIC(CubeMx生成 HAL库)
STM32F103C8T6 0.96寸 OLED显示屏 IIC(CubeMx生成 HAL库 文章目录 STM32F103C8T6 0.96寸 OLED显示屏 IIC(CubeMx生成 HAL库 一.O ...
- 0.96寸OLED显示屏介绍
OLED显示屏简介 OLED,即有机发光二极管(Organic Light Emitting Diode).OLED 由于同时具备自发光,不需背光源.对比度高.厚度薄.视角广.反应速度快.可用于挠曲性 ...
- 0.96寸OLED显示屏介绍续
0.96 寸OLED 显示屏使用方法 (以中景园电子的0.96 寸OLED 显示屏为例) 0.96寸OLED显示屏实物图 七针SPI/IIC 0.96寸OLED显示屏使用方法: 七针SPI/IIC 0 ...
- 关于基于stm32的0.96寸oled显示屏的学习理解心得。
关于基于stm32的0.96寸oled显示屏的学习理解心得. oled粗了解 如何理解OLED分辨率? 这里0.96寸OLED分辨率是12864;即OLED显示是128行64列; 但是由于OLED不能 ...
- 3.2 0.96寸OLED显示屏的使用
0.96寸OLED显示屏:4线的串行SPI接口方式.IIC 接口方式,128*64像素. OLED每次控制8个点阵,垂直方向扫描控制,所以垂直方向坐标可选为0~7:水平方向可选坐标0~127 接线图: ...
- 【手把手带你用pid算法控制电机】——(1)编码器电机和0.96寸OLED显示屏的使用
目录 前言 一.需要用到的器材 二.接线说明 三.cubmx配置 3.1 时钟树 3.2 输出PWM(TIM4) 3.3 编码器模式(TIM3) 3.4 中断定时器配置(TIM1) 3.5 配置IIC ...
- 基于STM32F103C8T6的0.96寸OLED显示屏显示数据
一.了解SPI(串行外设接口) SPI全称是Serial Perripheral Interface,也就是串行外围设备接口.SPI是Motorola公司推出的一种同步串行接口技术,是一种高速,全双工 ...
最新文章
- ABAP ALV 颜色设置(行,列,单元格)
- 日常问题———安装新版zookeeper 出现Starting zookeeper ... FAILED TO START
- InstallShield 杀掉进程
- 数据库: asc和desc的意思
- python读取指定页docx内容_Python读取指定目录下指定后缀文件并保存为docx
- 程序员的职业素养---编码
- Mybatis和Spring整合逆向工程
- 计算机的硬件软件组成
- 五大车载操作(VOS)系统
- 7-1 十二进制字符串转换成十进制整数(PTA)
- 64位win7旗舰版java_win7 64位旗舰版下载_lenovo windows7 64位旗舰版笔记本专用系统_软件侠下载站...
- The harvester安装使用
- python 跳过_python怎么跳过异常继续执行
- 从编程当中走向创业之路
- 识破面试官的套路:十个典型的面试问题剖析
- 【金猿产品展】诸葛用户数据分析平台(Insight)——聚焦业务场景数据应用价值挖掘,赋能精细化运营...
- ESP8266开发之旅 阿里云物联网平台篇⑤ LED智能灯控制系统(使用HTTPS认证再连接)
- 世上最污技术解读,我竟然秒懂了
- BD,HD,720P和1280P的区别
- 云客赞实名认证怎么取消吗_云客赞佣金提现常见问题
热门文章
- C++ Mysql基本操作
- 河北中职计算机哪个学校好,河北十大中职学校排行榜
- 谷歌官方回应:我们没有放弃TensorFlow,未来与JAX并肩发展
- C语言中使用‘scanf’输入与‘printf’输出的几个例子
- 仿养生网 帝国CMS 更新后域名栏目链接一直没变 解决方法:在后台地图--模板标签替换里直接全部替换
- 不同字符编码格式之间的转换
- python利用反向切片来反转字符串
- 内网穿透神器Frps一键安装脚本及设置教程
- 【计算机组成原理】四、CPU与简单模型机设计实验
- 利用汇编和C语言实现Exynos4412裸机开发系列之实现LED跑马灯(含源码)