Arduino学习——u8glib库资料整理
第一部分,u8glib标准语法格式:
本文使用的是DFRobot出品的LCD12864
Shield V1.0
端口占用情况:
SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9,
RST = 8
背光控制占用数字口7
//调用u8glib库
#include
"U8glib.h"
//创建一个LCD对象
U8GLIB_NHD_C12864 u8g(13,
11, 10, 9, 8);
void
setup(){
}
void
loop(){
u8g.firstPage();
do{
//display
}while(u8g.nextPage());
}
// 还有一个需要注意的地方,u8g有缓存,所以一般显示要使用下面的方法,将绘图函数放到draw()中
//u8g.firstPage() 表示图像循环的开始
//u8g.nextPage() 表示图像循环的结束
第二部分,画出几何图形
首先是画点。
void
U8GLIB::drawPixel(unit8_t x, unit8_t y)
//参数为:(x:点的横坐标 y:点的纵坐标)
例子: u8g.drawPixel(14, 23);
完整代码:
//调用u8glib库
#include
"U8glib.h"
//创建一个LCD对象
U8GLIB_NHD_C12864 u8g(13,
11, 10, 9, 8);
void
draw(){
u8g.drawPixel(14,
23);
}
void
setup() {
// put
your setup code here, to run once:
//旋转屏幕180°
u8g.setRot180();// rotate
screen
}
void
loop() {
// put
your main code here, to run repeatedly:
u8g.firstPage();
do{
draw();
}while(u8g.nextPage());
}
然后是画线。
void
U8GLIB::drawLine(u8g_uint_t x1, u8g_uint_t y1,
u8g_uint_t x2, u8g_uint_t y2)
//参数为: (x1:线段起始点横坐标 y1:线段起始点纵坐标 x2:线段结束点横坐标 y2:线段结束点纵坐标)
例子: u8g.drawLine(7, 10, 40, 55);
完整代码:
void
setup() {
// put
your setup code here, to run once:
//旋转屏幕180°
u8g.setRot180();// rotate
screen
}
void
loop() {
// put
your main code here, to run repeatedly:
u8g.firstPage();
do{
draw();
}while(u8g.nextPage());
}
然后是画连续点(线段)(水平线段或垂直线段)
函数语法:
void
U8GLIB::drawHLine(u8g_uint_t x, u8g_uint_t y,
u8g_uint_t w) //水平线段
void
U8GLIB::drawVLine(u8g_uint_t x, u8g_uint_t y,
u8g_uint_t h) //垂直线段
//参数为: (x:线段起始点 y:线段结束点 w:水平宽度 h:垂直高度)(高度单位为像素点)
例子: u8g.drawHLine(60,12, 30);
u8g.drawVLine(10,20, 20);
完整代码:
//画一个方形
//调用u8glib库
#include
"U8glib.h"
//创建一个LCD对象
U8GLIB_NHD_C12864 u8g(13,
11, 10, 9, 8);
void
draw(){
u8g.drawHLine(40,15,
30);
u8g.drawVLine(70,15,
30);
u8g.drawHLine(40,45,
30);
u8g.drawVLine(40,15,
30);
}
void
setup() {
// put your
setup code here, to run once:
//旋转屏幕180°
u8g.setRot180();// rotate
screen
}
void
loop() {
// put
your main code here, to run repeatedly:
u8g.firstPage();
do{
draw();
}while(u8g.nextPage());
}
然后是画出实心的三角形
函数语法:
void
U8GLIB::drawTriangle(uint16_t x0, uint16_t y0,
uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2)
//参数为:(x0:一个角的横坐标 y0:一个角的纵坐标 x1:另一个角的横坐标 y1:另一个角的纵坐标 x2:最后一个角的横坐标 y2:最后一个角的纵坐标)
例子: u8g.drawTriangle(14,9,
45,32, 9,42);
完整代码:
//画一个实心三角形
//调用u8glib库
#include
"U8glib.h"
//创建一个LCD对象
U8GLIB_NHD_C12864 u8g(13,
11, 10, 9, 8);
void
draw(){
u8g.drawTriangle(14,9,
45,32, 9,42);
}
void
setup() {
// put
your setup code here, to run once:
//旋转屏幕180°
u8g.setRot180();// rotate screen
}
void
loop() {
// put
your main code here, to run repeatedly:
u8g.firstPage();
do{
draw();
}while(u8g.nextPage());
}
然后是画出空心矩形,刚才我们用画线段的方式实现了画空心矩形,现在用更简单的方法就可以画出空心矩形。
void
U8GLIB::drawFrame(u8g_uint_t x, u8g_uint_t y,
u8g_uint_t w, u8g_uint_t h)
//参数是:(x:矩形左上角横坐标 y:矩形左上角纵坐标 w:矩形的宽 h:矩形的高)(高和宽的单位都是像素)
例子: u8g.drawFrame(10, 12, 30,
20);
完整代码:
//画一个空心矩形
//调用u8glib库
#include
"U8glib.h"
//创建一个LCD对象
U8GLIB_NHD_C12864 u8g(13,
11, 10, 9, 8);
void
draw(){
u8g.drawFrame(10,
12, 30, 20);
}
void
setup() {
// put
your setup code here, to run once:
//旋转屏幕180°
u8g.setRot180();// rotate
screen
}
void
loop() {
// put
your main code here, to run repeatedly:
u8g.firstPage();
do{
draw();
}while(u8g.nextPage());
}
然后是画圆角空心矩形
函数语法:
void
U8GLIB::drawRFrame(u8g_uint_t x, u8g_uint_t y,
u8g_uint_t w, u8g_uint_t h, u8g_uint_t r)
//参数是: (x:圆角矩形左上角横坐标 y:圆角矩形左上角纵坐标 w:圆角矩形宽度 h:圆角矩形高度 r:圆角弧度的半径)
注意:最好要满足两个公式,使用时最好加上if来判断是否符合要求
w > = 2 * x * ( r + 1 )
h > = 2 * x * ( r + 1 )
例子: u8g.drawRFrame(10 ,12 ,30 ,20 ,5);
完整代码:
//创建一个LCD对象
U8GLIB_NHD_C12864 u8g(13,
11, 10, 9, 8);
void
draw(){
u8g.drawRFrame(10,12,
30,20, 5);
}
void
setup() {
// put
your setup code here, to run once:
//旋转屏幕180°
u8g.setRot180();// rotate
screen
}
void
loop() {
// put
your main code here, to run repeatedly:
u8g.firstPage();
do{
draw();
}while(u8g.nextPage());
}
然后画实心矩形,和画空心的一样。注意语法区别!!!
函数语法:
void
U8GLIB::drawBox(u8g_uint_t x, u8g_uint_t y,
u8g_uint_t w, u8g_uint_t h)
例子: u8g.drawBox(10,12,20,30);
然后画出圆角实心矩形,和画圆角空心矩形一样,但注意语法区别!!!
函数语法:
void U8GLIB::drawRBox(u8g_uint_t
x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, u8g_uint_t r)
例子: u8g.drawRBox(10 ,12 ,30
,20 ,5);
然后画出空心圆
函数语法:
void
U8GLIB::drawCircle(u8g_uint_t x0, u8g_uint_t
y0, u8g_uint_t rad, uint8_t opt = U8G_DRAW_ALL)
//参数是:(x0:圆心的横坐标 y0:圆心的纵坐标 rad:圆的半径 opt:见下表)
- U8G_DRAW_UPPER_RIGHT 上部右侧 1/4 圆弧
- U8G_DRAW_UPPER_LEFT 上部左侧 1/4 圆弧
- U8G_DRAW_LOWER_LEFT 下部左侧 1/4 圆弧
- U8G_DRAW_LOWER_RIGHT 下部右侧 1/4 圆弧
- U8G_DRAW_ALL
整圆(默认)
例子:
u8g.drawCircle(20,20, 14); //整圆
u8g.drawCircle(20,20, 14, U8G_DRAW_UPPER_RIGHT); //1/4圆
//画一个空心圆
//调用u8glib库
#include
"U8glib.h"
//创建一个LCD对象
U8GLIB_NHD_C12864 u8g(13,
11, 10, 9, 8);
void
draw(){
u8g.drawCircle(20,20,
14);
}
void
setup() {
// put
your setup code here, to run once:
//旋转屏幕180°
u8g.setRot180();// rotate
screen
}
void
loop() {
// put
your main code here, to run repeatedly:
u8g.firstPage();
do{
draw();
}while(u8g.nextPage());
}
然后画出实心圆
函数语法:
void
U8GLIB::drawDisc(u8g_uint_t x0, u8g_uint_t y0,
u8g_uint_t rad, uint8_t opt = U8G_DRAW_ALL)
//参数是:(x0:圆心的横坐标 y0:圆心的纵坐标 rad:圆的半径 opt:见下表)
- U8G_DRAW_UPPER_RIGHT
上部右侧 1/4 扇形 - U8G_DRAW_UPPER_LEFT
上部左侧 1/4 扇形 - U8G_DRAW_LOWER_LEFT
下部左侧 1/4 扇形 - U8G_DRAW_LOWER_RIGHT
下部右侧 1/4 扇形 - U8G_DRAW_ALL
整圆(默认)
例子:
u8g.drawDisc(20,20, 14); //整圆
u8g.drawDisc(20,20, 14, U8G_DRAW_UPPER_RIGHT); //1/4圆
完整代码:
//画一个实心圆
//调用u8glib库
#include
"U8glib.h"
//创建一个LCD对象
U8GLIB_NHD_C12864 u8g(13,
11, 10, 9, 8);
void
draw(){
u8g.drawDisc(20,20,
14);
}
void
setup() {
// put
your setup code here, to run once:
//旋转屏幕180°
u8g.setRot180();// rotate
screen
}
void
loop() {
// put
your main code here, to run repeatedly:
u8g.firstPage();
do{
draw();
}while(u8g.nextPage());
}
然后画出椭圆(空心)
函数语法:
void
drawEllipse(u8g_uint_t x0, u8g_uint_t y0,
u8g_uint_t rx, u8g_uint_t ry, uint8_t opt)
//参数是:(x0:椭圆圆心的横坐标 y0:椭圆圆心的纵坐标 rx:水平方向半径 ry:垂直方向半径 rad:圆的半径 opt:见下表)
- U8G_DRAW_UPPER_RIGHT 上部右侧 1/4 椭圆弧
- U8G_DRAW_UPPER_LEFT 上部左侧 1/4 椭圆弧
- U8G_DRAW_LOWER_LEFT 下部左侧 1/4 椭圆弧
- U8G_DRAW_LOWER_RIGHT 下部右侧 1/4 椭圆弧
- U8G_DRAW_ALL
整圆(默认)
例子: u8g.drawEllipse(20,20, 14,17);
完整代码:
//画一个椭圆
//调用u8glib库
#include
"U8glib.h"
//创建一个LCD对象
U8GLIB_NHD_C12864 u8g(13,
11, 10, 9, 8);
void
draw(){
u8g.drawEllipse(20,20,
14,17);
}
void
setup() {
// put
your setup code here, to run once:
//旋转屏幕180°
u8g.setRot180();// rotate
screen
}
void
loop() {
// put
your main code here, to run repeatedly:
u8g.firstPage();
do{
draw();
}while(u8g.nextPage());
}
然后画出椭圆(空心),和画空心椭圆是一样的,但注意语法格式区别
函数语法:
void
drawFilledEllipse(u8g_uint_t x0, u8g_uint_t y0,
u8g_uint_t rx, u8g_uint_t ry, uint8_t opt)
//参数是:(x0:椭圆圆心的横坐标 y0:椭圆圆心的纵坐标 rx:水平方向半径 ry:垂直方向半径 rad:圆的半径 opt:见下表)
- U8G_DRAW_UPPER_RIGHT 上部右侧 1/4 椭圆弧
- U8G_DRAW_UPPER_LEFT 上部左侧 1/4 椭圆弧
- U8G_DRAW_LOWER_LEFT 下部左侧 1/4 椭圆弧
- U8G_DRAW_LOWER_RIGHT 下部右侧 1/4 椭圆弧
- U8G_DRAW_ALL
整圆(默认)
例子:
u8g.drawFilledEllipse(20,20, 14,17);
以上就是使用u8glib库画出几何图形。 整理一下:
u8g.drawPixel(14, u8g.drawLine(7, u8g.drawHLine(60,12, u8g.drawVLine(10,20, u8g.drawTriangle(14,9, u8g.drawFrame(10, u8g.drawRFrame(10 u8g.drawBox(10,12,20,30); u8g.drawRBox(10 u8g.drawCircle(20,20, u8g.drawCircle(20,20, u8g.drawDisc(20,20, u8g.drawDisc(20,20, u8g.drawEllipse(20,20, u8g.drawFilledEllipse(20,20, |
第三部分,打印字符,字符串
继续上一次的u8glib自学笔记,整理过了有关打印几何图像的函数,下一步就是学习一下如何打印字符。
首先是画出字符。
函数语法:
u8g_uint_t
U8GLIB::drawStr(u8g_uint_t x, u8g_uint_t y, const
char *s)
//参数为:(x:字符左下角的横坐标 y:字符左下角的纵坐标 s:要画出的字符)
//注意:使用drawStr函数之前,需要使用setFont函数来设置一下要画出的字符的显示字体。
//同时drawStr函数还有三种变形:
drawStr90();
//字符顺时针旋转响应90°
drawStr180();
//字符顺时针旋转响应180°
drawStr270();
//字符顺时针旋转响应270°
例子:
u8g.setFont(u8g_font_osb18); //设置字体
u8g.drawStr(0, 20, "ABC");
//画出字符在(0,20)的位置12
完整代码:
//调用u8glib库
#include "U8glib.h"
//创建一个LCD对象
U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8);
void draw(){
u8g.setFont(u8g_font_osb18);
u8g.drawStr(0, 20,
"ABC");
}
void setup() {
// put your setup code here, to
run once:
//旋转屏幕180°
u8g.setRot180();// rotate screen
}
void loop() {
// put your main code here, to run
repeatedly:
u8g.firstPage();
do{
draw();
}while(u8g.nextPage());
}123456789101112131415161718192021222324
另一种打印字符,字符串的方法就是用print。
print()函数可以打印字符,字符串,变量值等。但是用以前需要用setPrintPos()来设置位置
函数语法:
U8GLIB::print(...)
//参数为要打印的内容12
例子:
u8g.setPrintPos(0,15); //设置位置
u8g.print("Error Code: ");
//打印内容12
完整代码:
//调用u8glib库
#include "U8glib.h"
//创建一个LCD对象
U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8);
void draw(){
u8g.setPrintPos(0,15);
u8g.print("Error Code:
");
}
void setup() {
// put your setup code here, to
run once:
//旋转屏幕180°
u8g.setRot180();// rotate screen
}
void loop() {
// put your main code here, to run
repeatedly:
u8g.firstPage();
do{
draw();
}while(u8g.nextPage());
}
u8g.setRot90(); //旋转90°u8g.setRot180(); //旋转180°u8g.setRot270(); //旋转270°u8g.undoRotation();
//取消旋转u8g.setFont(u8g_font_osb18); //设置字体u8g.drawStr(0,
20, "ABC"); //画出字符在(0,20)的位置u8g.setPrintPos(0,15); //设置位置u8g.print("Error
Code: "); //打印内容u8g.drawBitmapP( 0, 0, 1, 9, bitmap); //画位图,每行一个字节(8个点),总共9行,数据定义在bitmap[]u8g.drawXBMP( 0, 0, 38, 24,
bitmap); //画位图,38×24,数据定义在bitmap[]
第四部分,画出图像
首先是显示一个位图。
函数语法:
void U8GLIB::drawXBMP(u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t
h, const u8g_pgm_uint8_t *bitmap)
//参数为:(x:位图左上角的横坐标 y:位图左上角的纵坐标 w:位图的宽 h:位图的高 *bitmap:位图对象)12
例子:
static unsigned char u8g_logo_bits[] U8G_PROGMEM = {
0xff, 0xff, 0xff, 0xff,
0x3f, 0xff, 0xff, 0xff, 0xff,
0x3f, 0xe0, 0xe0, 0xff, 0xff, 0x3f,
0xe3, 0xe1, 0xff, 0xff,
0x3f, 0xf3, 0xf1, 0xff, 0xff,
0x3f, 0xf3, 0xf1, 0xfe, 0xbf, 0x37,
0xf3, 0x11, 0x1c, 0x1f,
0x30, 0xf3, 0x01, 0x08, 0x8c,
0x20, 0xf3, 0x01, 0x00, 0xc0, 0x39,
0xf3, 0x81, 0xc7, 0xc1,
0x39, 0xf3, 0xc1, 0xc7, 0xc9, 0x38, 0xf3, 0xc1, 0xc3, 0x19, 0x3c,
0xe3, 0x89, 0x01, 0x98,
0x3f, 0xc7, 0x18, 0x00, 0x08,
0x3e, 0x0f, 0x3c, 0x70, 0x1c, 0x30,
0x3f, 0xff, 0xfc, 0x87,
0x31, 0xff, 0xff, 0xbf, 0xc7,
0x23, 0x01, 0x00, 0x00, 0xc6, 0x23,
0x03, 0x00, 0x00, 0x0e, 0x30, 0xff, 0xff, 0x3f, 0x1f, 0x3c, 0xff, 0xff, 0x3f, 0xff, 0x3f,
0xff, 0xff, 0x3f, 0xff,
0x3f, 0xff, 0xff, 0xff, 0xff,
0x3f, 0xff, 0xff, 0xff, 0xff, 0x3f
};
u8g.drawXBMP( 0, 0, 38, 24, u8g_logo_bits);1234567891011
完整代码:
//调用u8glib库
#include "U8glib.h"
//创建一个LCD对象
U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8);
static unsigned char u8g_logo_bits[] U8G_PROGMEM = {
0xff, 0xff, 0xff, 0xff,
0x3f, 0xff, 0xff, 0xff, 0xff,
0x3f, 0xe0, 0xe0, 0xff, 0xff, 0x3f,
0xe3, 0xe1, 0xff, 0xff,
0x3f, 0xf3, 0xf1, 0xff, 0xff,
0x3f, 0xf3, 0xf1, 0xfe, 0xbf, 0x37,
0xf3, 0x11, 0x1c, 0x1f,
0x30, 0xf3, 0x01, 0x08, 0x8c,
0x20, 0xf3, 0x01, 0x00, 0xc0, 0x39,
0xf3, 0x81, 0xc7, 0xc1,
0x39, 0xf3, 0xc1, 0xc7, 0xc9, 0x38, 0xf3, 0xc1, 0xc3, 0x19, 0x3c,
0xe3, 0x89, 0x01, 0x98,
0x3f, 0xc7, 0x18, 0x00, 0x08,
0x3e, 0x0f, 0x3c, 0x70, 0x1c, 0x30,
0x3f, 0xff, 0xfc, 0x87,
0x31, 0xff, 0xff, 0xbf, 0xc7,
0x23, 0x01, 0x00, 0x00, 0xc6, 0x23,
0x03, 0x00, 0x00, 0x0e, 0x30, 0xff, 0xff, 0x3f, 0x1f, 0x3c, 0xff, 0xff, 0x3f, 0xff, 0x3f,
0xff, 0xff, 0x3f, 0xff,
0x3f, 0xff, 0xff, 0xff, 0xff,
0x3f, 0xff, 0xff, 0xff, 0xff, 0x3f
};
void draw(){
u8g.drawXBMP( 0, 0, 38, 24,
u8g_logo_bits);
}
void setup() {
// put your setup code here, to
run once:
//旋转屏幕180°
u8g.setRot180();// rotate screen
}
void loop() {
// put your main code here, to run
repeatedly:
u8g.firstPage();
do{
draw();
}while(u8g.nextPage());
}
}
另一种打印位图的方法是:drawBitmapP()函数
函数语法:
void U8GLIB::drawBitmapP(u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt,
u8g_uint_t h, const u8g_pgm_uint8_t *bitmap)
//参数为:(x:位图左上角的横坐标 y:位图左上角的纵坐标 cnt:在水平方向上位图的字节数 h:位图的高 *bitmap:位图对象),所以位图的宽,就是(cnt * 8),1字节=8位。12
例子:
const uint8_t rook_bitmap[] U8G_PROGMEM = {
0x00, // 00000000
0x55, // 01010101
0x7f, // 01111111
0x3e, // 00111110
0x3e, // 00111110
0x3e, // 00111110
0x3e, // 00111110
0x7f // 01111111
};
u8g.drawBitmapP(0,0, 1, 8, rook_bitmap)
完整代码:
//调用u8glib库
#include "U8glib.h"
//创建一个LCD对象
U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8);
const uint8_t rook_bitmap[] U8G_PROGMEM = {
0x00, // 00000000
0x55, // 01010101
0x7f, // 01111111
0x3e, // 00111110
0x3e, // 00111110
0x3e, // 00111110
0x3e, // 00111110
0x7f // 01111111
};
void draw(){
u8g.drawBitmapP(0,0, 1, 8, rook_bitmap);
}
void setup() {
// put your setup code here, to
run once:
//旋转屏幕180°
u8g.setRot180();// rotate screen
}
void loop() {
// put your main code here, to run
repeatedly:
u8g.firstPage();
do{
draw();
}while(u8g.nextPage());
}
第五部分,获取内容信息
首先是获取屏幕的宽和高。
函数语法:
u8g_uint_t U8GLIB::getHeight(void)
//返回屏幕的高度
u8g_uint_t U8GLIB::getWidth(void)
//返回屏幕的宽度
LCD12864的高度64,宽度是128
例子:
int w;
int h;
w = u8g.getWidth();
h = u8g.getHeight();
返回:w=128, h=64
然后是获得所显示字符串的宽度
函数语法:
u8g_uint_t U8GLIB::getStrWidth(const
char *s)
//参数是:(*s: 字符串的内容)
例子:
int w;
u8g.setFont(u8g_font_osb18); //设置字体
u8g.drawStr(0,20, "ABC");
w = u8g.getStrWidth("ABC");
//获得显示的字符串宽度
u8g.drawFrame(0,10, w,11); //画一个以获得的字符串宽度为宽度的方框
第六部分,设置字体,位置等
首先是设置字体
函数语法:
U8GLIB::setFont(const u8g_fntpgm_uint8_t *font)
//参数为:(*font: 要显示字符的字体)
有关u8glib提供的字体样式,请移步至Click
Me
因为之前已经使用过此函数,此处就不做过多描述,
例子:
u8g.setFont(u8g_font_osb18);
有关u8glib提供的字体样式
因为之前已经使用过此函数,此处就不做过多描述,
例子:
u8g.setFont(u8g_font_osb18);
然后是设置print()函数的显示位置。
函数语法:
void U8GLIB::setPrintPos(u8g_uint_t x, u8g_uint_t y)
//参数为:(x:显示内容的横坐标 y:显示内容的纵坐标)
因为之前已经使用过此函数,此处就不做过多描述,
例子:
u8g.setPrintPos(10,20);
然后是设置是否显示对象,透明还是不透明。对于单色OLED来说,此函数就是设置对象是否为透明。对于有灰度值的屏幕来说则是一个设置灰度值。
void U8GLIB::setColorIndex(uint8_t color_index)
//参数为:(color_index:0和1)
//0为不显示,透明
//1为显示,不透明
例子:
u8g.setColorIndex(1);
//不透明,显示内容
u8g.drawBox(10, 12, 20, 30);
u8g.setColorIndex(0);
//透明,不显示内容
u8g.drawPixel(28, 14);
然后是将显示结果旋转90°,180°或者270°
函数语法:
void U8GLIB::setRot90()
void U8GLIB::setRot180()
void U8GLIB::setRot270()
例子:
//正常显示
u8g.setFont(u8g_font_osb18);
u8g.drawStr(0,20, "ABC");
//旋转显示
u8g.setRot90(); //旋转90°
u8g.setFont(u8g_font_osb18);
u8g.drawStr(0,20, "ABC");
最后一个是修改显示字符的坐标标准。默认标准是字符的左下角坐标,可以通过函数setFontPosTop()函数来修改为字符的左上角坐标。
函数语法:
void U8GLIB::setFontPosTop(void)
例子:
u8g.setFont(u8g_font_osb18);
u8g.setFontPosTop();
u8g.drawStr(0, 20, "ABC");
Arduino学习——u8glib库资料整理的更多相关文章
- Arduino学习——u8glib提供的字体样式
Fonts, Capital A Height4 Pixel Height U8glib Font FontStruct5 Pixel Height 04 Font 04 Font 04 Font ...
- iOS 开发学习资料整理(持续更新)
“如果说我看得比别人远些,那是因为我站在巨人们的肩膀上.” ---牛顿 iOS及Mac开源项目和学习资料[超级全面] http://www.kancloud.cn/digest/ios-mac ...
- iOS 学习资料整理
iOS学习资料整理 https://github.com/NunchakusHuang/trip-to-iOS 很好的个人博客 http://www.cnblogs.com/ygm900/ 开发笔记 ...
- Java 学习资料整理
Java 学习资料整理 Java 精品学习视频教程下载汇总 Java视频教程 孙鑫Java无难事 (全12CD) Java视频教程 即学即会java 上海交大 Java初级编程基础 共25讲下载 av ...
- 【重磅干货整理】机器学习(Machine Learning)与深度学习(Deep Learning)资料汇总
[重磅干货整理]机器学习(Machine Learning)与深度学习(Deep Learning)资料汇总 .
- NLP | 算法 学习资料整理
UPDATE TIME: 2019-12-12 17:06:32 NLP: 对话系统: [ ] https://www.cnblogs.com/jiangxinyang/p/10789512.html ...
- F4NNIU 的 Docker 学习资料整理
F4NNIU 的 Docker 学习资料整理 Docker 介绍 以下来自 Wikipedia Docker是一个开放源代码软件项目,让应用程序部署在软件货柜下的工作可以自动化进行,借此在Linux操 ...
- 花了三个月终于把所有的 Python 库全部整理了!可以说很全面了
库名称简介 Chardet字符编码探测器,可以自动检测文本.网页.xml的编码. colorama主要用来给文本添加各种颜色,并且非常简单易用. Prettytable主要用于在终端或浏览器端构建格式 ...
- [转载]花了半个月,终于把Python库全部整理出来了,非常全面
库名称简介 Chardet 字符编码探测器,可以自动检测文本.网页.xml的编码. colorama 主要用来给文本添加各种颜色,并且非常简单易用. Prettytable 主要用于在终端或浏览器端构 ...
随机推荐
- Java虚拟机05.1(各种环境下jvm的参数如何调整?)
cmd下 eclipse下 tomcat下 cmd下指定jvm参数 在cmd下执行Java程序可以通过如下方式之地需要配置的Java 虚拟机参数: 这里只是指定了对初始为2M,新生代为1M,堆最大值为 ...
- mysql悲观锁处理赠品库存超卖的情况
处理库存超卖的情况前,先了解下什么是乐观锁和悲观锁,下面的几篇博客已经介绍的比较详细了,我就不在赘述其原理了 [MySQL]悲观锁&乐观锁 对mysql乐观锁.悲观锁.共享锁.排它锁.行锁.表 ...
- 7个现在就该学习Python 的理由【80%的人都不知道】
Python 是一门更注重可读性和效率的语言,尤其是相较于 Java,PHP 以及 C++ 这样的语言,它的这两个优势让其在开发者中大受欢迎. 诚然,它有点老了,但仍是 80 后啊 —— 至少没有 C ...
- 045、Java中使用if语句进行判断
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...
- 005-PHP函数输出一行内容
<?php function printBold($inputText) //定义function printBold() { print("<B>" . $in ...
- makecert 制作数字证书 给DLL加一个数字签名
声明:文章整理自互联网 我仅需要给dll添加(替换)一个签名,所以我只看了第一步和第三步,其余的部分我没有测试,不能保证内容的是否正确. 看了很多关于DLL加签名的教程 大多是错误的 完全无法正常走下 ...
- [ cocos2d-JS ] 创建项目命令
cocos new HelloJS -l js -p com.neworigin.HelloJS -d D:\0-Game\cocosJS-project
- 六十四、SAP中的内表的9种定义方式
一.内表一共有9种定义方式,如下: 二.执行如下 *&--------------------------------------------------------------------- ...
- 14 SQLite数据库
SQLite数据库SQLite 是一款轻型的数据库SQLite 的设计目标是嵌入式的SQLite 占用资源低SQL 指结构化查询语言SQL 使我们有能力访问数据库SQL 是一种 ANSI 的标准计算机 ...
- VM ESXi虚拟化使用学习笔记
由于疫情原因,没有条件介绍安装部分的内容,也没有安装部分内容的相关截图,所以安装部分可以选择网上资料.但是只要熟练安装CentOS系统的,基本安装ESXi一看就会,设置主机地址方面有一定图形化界面,比 ...