当前位置: 首页 > news >正文

51单片机嵌入式开发:20、STC89C52R基于C51嵌入式点阵广告屏的设计

STC89C52R基于C51嵌入式点阵广告屏的设计

  • 1 概述
  • 2 LED点阵介绍
    • 2.1 特点和优势
    • 2.2 工作原理:
    • 2.3 使用方法:
  • 3 LED点阵原理
    • 3.1 Led点阵内部电路
    • 3.2 原理图电路
    • 3.3 74HC595
  • 4 软件实现点阵图案的滑动
    • 4.1 软件工程代码
    • 4.2 Protues仿真
  • 5 总结

配套示例程序

在这里插入图片描述

1 概述

LED点阵广告牌是利用LED点阵技术制作的大型显示屏,通常用于户外广告、商业宣传、活动展示等场合。

2 LED点阵介绍

8x8 LED点阵是一种常见的LED显示器件,通常由64个LED灯组成,排列成一个8行8列的矩阵。每个LED灯可以独立控制,因此可以通过控制不同的灯来显示各种图案、数字和字母。

2.1 特点和优势

灵活性:每个LED灯都可以独立控制,使得点阵显示器具有很高的灵活性,可以显示各种自定义图案和动画效果。
低功耗:LED点阵采用LED作为发光元件,功耗低,适合长时间工作。
易于控制:通过微控制器或驱动芯片,可以方便地控制整个点阵的显示内容。
广泛应用:LED点阵广泛应用于计时器、温度计、电子钟、信息显示牌、小型游戏等领域。

2.2 工作原理:

每列LED的阳极连接在一起,形成一组,每行LED的阴极连接在一起,形成一组。
控制时,逐行输出低电平,同时将要点亮的列输出高电平。循环扫描这些行和列,就能实现LED的点亮和熄灭。

2.3 使用方法:

通过微控制器(比如51单片机、Arduino等)来控制LED点阵的显示内容。
编写控制程序,根据需要显示的图案、字母或数字,设置每个LED的状态,实现所需的显示效果。

3 LED点阵原理

3.1 Led点阵内部电路

8x8LED点阵内部结构图如下,这两种图片只是接法不同,要点亮LED,左图需要行置为高电平,列置为低电平;右图则需要行置为低电平,列置为高电平。

8x8LED点阵内部结构图

8x8点阵共由64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一行置高电平,某一列置低电平,则相应的二极管将点亮。

比如对于左图,如果要将第一个点点亮,则将第一行的⑨脚接高电平,第一列的13脚接低电平,第一个点就会点亮;如果要将第一行点亮,则第一行的⑨脚接高电平,所有列(13、3、4、10、6、11、15、16脚)接低电平,第一行就会点亮;如果要将第一列点亮,则第一列的13脚接低电平,所有行(9、14、8、12、1、7、2、5脚)接高电平,第一列就会点亮;如果要将对角线点亮,可以动态显示,首先点亮第一个点,然后点亮第2行第2列的点…这样依次循环点亮,就可以显示对角线的点。

在这里插入图片描述

如果要显示数字或字符,在需要的位置点亮,比如显示0(如下),可以循环点亮如下位置的LED。

3.2 原理图电路

仿真电路:

在这里插入图片描述

我们调整点阵的位置使其横着摆放。

在这里插入图片描述

3.3 74HC595

  1. 74HC595 概述
    74HC595 是一款常用的 8 位串行输入并行输出移位寄存器。它可以将串行输入的数据转换为并行输出,广泛应用于 LED 显示、数码管驱动等场合。74HC595 具有 8 个并行输出接口,可以通过串行方式控制多个 74HC595 级联使用。
  2. 74HC595 引脚配置
    74HC595 总共有 16 个引脚,每个引脚的功能如下:
    Q0 ~ Q7(引脚 15, 1-7):并行输出位。
    DS(引脚 14):数据输入(串行输入)。
    OE(引脚 13):输出使能(低电平有效)。
    STCP(引脚 12):存储寄存器时钟输入(上升沿触发)。
    SHCP(引脚 11):移位寄存器时钟输入(上升沿触发)。
    MR(引脚 10):主复位(低电平复位)。
    Q7’(引脚 9):串行输出。
    Vcc(引脚 16):电源正极。
    GND(引脚 8):电源负极。
  3. 74HC595 工作原理
    74HC595 包含两个寄存器:移位寄存器和存储寄存器。数据首先被写入移位寄存器,然后通过锁存操作将移位寄存器的内容传输到存储寄存器,以实现并行输出。
    数据输入
    数据通过 DS 引脚串行输入,每当 SHCP 引脚收到一个上升沿时,移位寄存器中的数据会左移一位,新数据位被移入 Q0。通过连续的时钟脉冲,可以依次将 8 位数据写入移位寄存器。
    数据锁存
    完成数据输入后,通过在 STCP 引脚上产生一个上升沿脉冲,将移位寄存器的数据传输到存储寄存器,从而更新并行输出的状态。
    输出使能
    OE 引脚用于控制并行输出的使能状态。当 OE 为低电平时,并行输出有效;当 OE 为高电平时,并行输出被禁用。

在这里插入图片描述

通讯时序图:

在这里插入图片描述

一个驱动74HC595的标准函数:

sbit DS = P1^0; // Data Input 
sbit SHCP = P1^1; // Shift Clock 
sbit STCP = P1^2; // Store Clock 
void HC595SendByte(unsigned char dat) 
{ 
unsigned char i; 
for(i = 0; i < 8; i++) 
{ 
DS = dat & 0x80; // 从高位到低位发送数据 
SHCP = 0; 
dat = dat << 1; 
SHCP = 1; 
} 
STCP = 0; 
STCP = 1; 
}

4 软件实现点阵图案的滑动

4.1 软件工程代码

//main.c文件

#include "includes.h"/******************************************************************/
/*                    微秒延时函数  //10us                         */
/******************************************************************/
void delay_us(unsigned int us)//delay us
{while(us--){}
}/******************************************************************/
/*                    微秒延时函数                                */
/******************************************************************/
void delay_ms(unsigned int Ms)//delay us
{while(Ms--){delay_us(100);}
}sbit DS = P2^6;  // Data Input
sbit SHCP = P2^7;  // Shift Clock
sbit STCP = P2^5;  // Store Clockvoid HC595SendByte(unsigned char dat) {unsigned char i;for(i = 0; i < 8; i++) {DS = dat & 0x80;  // 从高位到低位发送数据SHCP = 0;dat = dat << 1;SHCP = 1;}STCP = 0;STCP = 1;
}//	P2 = 0xFF;	//代表列 发光二级管的负端
//	P0 = 0x00;	//代表行 发光二级管的正端
//	
#define rowp P0
#define colp P2
//0-9字模
code unsigned char disp[][8]={
{0x0c,0x12,0x22,0x44,0x22,0x12,0x0c,0x00},//?
{0x00,0x00,0x3e,0x41,0x41,0x3e,0x00,0x00},//0
{0x00,0x40,0x44,0x7e,0x7f,0x40,0x40,0x00},//1
{0x00,0x00,0x66,0x51,0x49,0x46,0x00,0x00},//2
{0x00,0x00,0x22,0x41,0x49,0x36,0x00,0x00},//3
{0x00,0x10,0x1c,0x13,0x7c,0x7c,0x10,0x00},//4
{0x00,0x00,0x27,0x45,0x45,0x45,0x39,0x00},//5
{0x00,0x00,0x3e,0x49,0x49,0x32,0x00,0x00},//6
{0x00,0x03,0x01,0x71,0x79,0x07,0x03,0x00},//7
{0x00,0x00,0x36,0x49,0x49,0x36,0x00,0x00},//8
{0x00,0x00,0x26,0x49,0x49,0x3e,0x00,0x00},//9
};// 定义字符模式数组
code unsigned char charPatterns[8] = {0x0c,0x12,0x22,0x44,0x22,0x12,0x0c,0x00//0x18, 0x24, 0x42, 0x81, 0x42, 0x24, 0x18, 0x00
};/*------------------------------------------------主函数
------------------------------------------------*/
void main (void)
{unsigned char i, j,m,n;unsigned char displayData[88] = {0}; // 初始化显示数据for (i = 0; i < 88; i++) //行的数组更新{displayData[i] = disp[i/8][i%8];}delay_ms(2);P20 = 0;P21 = 0;P22 = 0;P23 = 0;while (1){// 滚动效果for (j = 0; j < 88; j++) {for (i = 0; i < 88; i++) //行的数组更新{n = i+1;if(n>=88){n -= 88;}displayData[i] = displayData[n];}// 逐行扫描点阵屏for(m=0;m<20;m++){for (i = 0; i < 32; i++){P2 &= 0xF0;P2 |= ~(1<<(i/8));HC595SendByte(~(1 << (i%8)));P0 = displayData[i]; // 发送数据}}for (i = 0; i < 32; i++){P2 &= 0xF0;P2 |= ~(1<<(i/8));HC595SendByte(~(1 << (i%8)));P0 = 0x00; // 发送数据}}}
}/*// 滚动效果for (j = 0; j < 8; j++) {for (i = 0; i < 8; i++) {displayData[i] = (displayData[i] << 1) | (charPatterns[i] >> (7 - j));}// 逐行扫描点阵屏for(m=0;m<20;m++){for (i = 0; i < 8; i++){//P2 = ~(1 << i); // 控制点阵屏的行HC595SendByte(~(1 << i));P0 = displayData[i]; // 发送数据delay_ms(1); // 延时//P0 = 0x00; // 清空数据}//delay_ms(500); // 控制滚动速度}for (i = 0; i < 8; i++){//P2 = ~(1 << i); // 控制点阵屏的行HC595SendByte(~(1 << i));P0 = 0x00; // 发送数据delay_ms(1); // 延时//P0 = 0x00; // 清空数据}}}
*/

//includes.h文件

#ifndef __INCLUDES_H__
#define __INCLUDES_H__//#include<reg52.h> #include<intrins.h> //汇编指令_nop_
#include<stdio.h> 	//标准输入输出//_nop_(); 产生一条NOP指令
//作用:对于延时很短的,要求在us级的,采用“_nop_”函数,这个函数相当汇编NOP指令,延时几微秒。
//NOP指令为单周期指令,可由晶振频率算出延时时间。//8051 为每个机器周期 12 时钟
//对于12M晶振,延时1uS。
//11.0592M晶振,延时1.0851uS。//对于延时比较长的,要求在大于10us,采用C51中的循环语句来实现。//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#include "STC89C5xRC_RDP.h"//应用层头文件
//#include "c51_gpio.h"
//#include "c51_ledtube.h"
//#include "c51_key.h"
//#include "c51_timer.h"
//#include "c51_exit.h"
//#include "c51_lcd1602.h"
//#include "c51_iic.h"
//#include "c51_tx1838.h"
//#include "c51_uart.h"
//#include "c51_28byj48.h"
//#include "c51_ds1302.h"extern void delay_us(unsigned int us);//delay us;
extern void delay_ms(unsigned int Ms);//delay Ms;#endif
$NOMOD51
;------------------------------------------------------------------------------
;  This file is part of the C51 Compiler package
;  Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
;------------------------------------------------------------------------------
;  STARTUP.A51:  This code is executed after processor reset.
;
;  To translate this file use A51 with the following invocation:
;
;     A51 STARTUP.A51
;
;  To link the modified STARTUP.OBJ file to your application use the following
;  BL51 invocation:
;
;     BL51 <your object file list>, STARTUP.OBJ <controls>
;
;------------------------------------------------------------------------------
;
;  User-defined Power-On Initialization of Memory
;
;  With the following EQU statements the initialization of memory
;  at processor reset can be defined:
;
;               ; the absolute start-address of IDATA memory is always 0
IDATALEN        EQU     80H     ; the length of IDATA memory in bytes.
;
XDATASTART      EQU     0H      ; the absolute start-address of XDATA memory
XDATALEN        EQU     0H      ; the length of XDATA memory in bytes.
;
PDATASTART      EQU     0H      ; the absolute start-address of PDATA memory
PDATALEN        EQU     0H      ; the length of PDATA memory in bytes.
;
;  Notes:  The IDATA space overlaps physically the DATA and BIT areas of the
;          8051 CPU. At minimum the memory space occupied from the C51 
;          run-time routines must be set to zero.
;------------------------------------------------------------------------------
;
;  Reentrant Stack Initilization
;
;  The following EQU statements define the stack pointer for reentrant
;  functions and initialized it:
;
;  Stack Space for reentrant functions in the SMALL model.
IBPSTACK        EQU     0       ; set to 1 if small reentrant is used.
IBPSTACKTOP     EQU     0FFH+1  ; set top of stack to highest location+1.
;
;  Stack Space for reentrant functions in the LARGE model.      
XBPSTACK        EQU     0       ; set to 1 if large reentrant is used.
XBPSTACKTOP     EQU     0FFFFH+1; set top of stack to highest location+1.
;
;  Stack Space for reentrant functions in the COMPACT model.    
PBPSTACK        EQU     0       ; set to 1 if compact reentrant is used.
PBPSTACKTOP     EQU     0FFFFH+1; set top of stack to highest location+1.
;
;------------------------------------------------------------------------------
;
;  Page Definition for Using the Compact Model with 64 KByte xdata RAM
;
;  The following EQU statements define the xdata page used for pdata
;  variables. The EQU PPAGE must conform with the PPAGE control used
;  in the linker invocation.
;
PPAGEENABLE     EQU     0       ; set to 1 if pdata object are used.
;
PPAGE           EQU     0       ; define PPAGE number.
;
PPAGE_SFR       DATA    0A0H    ; SFR that supplies uppermost address byte
;               (most 8051 variants use P2 as uppermost address byte)
;
;------------------------------------------------------------------------------; Standard SFR Symbols 
ACC     DATA    0E0H
B       DATA    0F0H
SP      DATA    81H
DPL     DATA    82H
DPH     DATA    83HNAME    ?C_STARTUP?C_C51STARTUP   SEGMENT   CODE
?STACK          SEGMENT   IDATARSEG    ?STACKDS      1EXTRN CODE (?C_START)PUBLIC  ?C_STARTUPCSEG    AT      0
?C_STARTUP:     LJMP    STARTUP1RSEG    ?C_C51STARTUPSTARTUP1:IF IDATALEN <> 0MOV     R0,#IDATALEN - 1CLR     A
IDATALOOP:      MOV     @R0,ADJNZ    R0,IDATALOOP
ENDIFIF XDATALEN <> 0MOV     DPTR,#XDATASTARTMOV     R7,#LOW (XDATALEN)IF (LOW (XDATALEN)) <> 0MOV     R6,#(HIGH (XDATALEN)) +1ELSEMOV     R6,#HIGH (XDATALEN)ENDIFCLR     A
XDATALOOP:      MOVX    @DPTR,AINC     DPTRDJNZ    R7,XDATALOOPDJNZ    R6,XDATALOOP
ENDIFIF PPAGEENABLE <> 0MOV     PPAGE_SFR,#PPAGE
ENDIFIF PDATALEN <> 0MOV     R0,#LOW (PDATASTART)MOV     R7,#LOW (PDATALEN)CLR     A
PDATALOOP:      MOVX    @R0,AINC     R0DJNZ    R7,PDATALOOP
ENDIFIF IBPSTACK <> 0
EXTRN DATA (?C_IBP)MOV     ?C_IBP,#LOW IBPSTACKTOP
ENDIFIF XBPSTACK <> 0
EXTRN DATA (?C_XBP)MOV     ?C_XBP,#HIGH XBPSTACKTOPMOV     ?C_XBP+1,#LOW XBPSTACKTOP
ENDIFIF PBPSTACK <> 0
EXTRN DATA (?C_PBP)MOV     ?C_PBP,#LOW PBPSTACKTOP
ENDIFMOV     SP,#?STACK-1
; This code is required if you use L51_BANK.A51 with Banking Mode 4
; EXTRN CODE (?B_SWITCH0)
;               CALL    ?B_SWITCH0      ; init bank mechanism to code bank 0LJMP    ?C_STARTEND

#ifndef STC89C5xRC_RDP_H

#define __STC89C5xRC_RDP_H__///包含本头文件后,不用另外再包含"REG51.H"sfr         P0          =           0x80;sbit    P00         =           P0^0;sbit    P01         =           P0^1;sbit    P02         =           P0^2;sbit    P03         =           P0^3;sbit    P04         =           P0^4;sbit    P05         =           P0^5;sbit    P06         =           P0^6;sbit    P07         =           P0^7;sfr         SP          =           0x81;
sfr         DPL         =           0x82;
sfr         DPH         =           0x83;
sfr         PCON        =           0x87;sfr         TCON        =           0x88;sbit    TF1         =           TCON^7;sbit    TR1         =           TCON^6;sbit    TF0         =           TCON^5;sbit    TR0         =           TCON^4;sbit    IE1         =           TCON^3;sbit    IT1         =           TCON^2;sbit    IE0         =           TCON^1;sbit    IT0         =           TCON^0;sfr         TMOD        =           0x89;
sfr         TL0         =           0x8A;
sfr         TL1         =           0x8B;
sfr         TH0         =           0x8C;
sfr         TH1         =           0x8D;
sfr         AUXR        =           0x8E;sfr         P1          =           0x90;sbit    P10         =           P1^0;sbit    P11         =           P1^1;sbit    P12         =           P1^2;sbit    P13         =           P1^3;sbit    P14         =           P1^4;sbit    P15         =           P1^5;sbit    P16         =           P1^6;sbit    P17         =           P1^7;sbit    T2EX        =           P1^1;sbit    T2          =           P1^0;sfr         SCON        =           0x98;sbit    SM0         =           SCON^7;sbit    SM1         =           SCON^6;sbit    SM2         =           SCON^5;sbit    REN         =           SCON^4;sbit    TB8         =           SCON^3;sbit    RB8         =           SCON^2;sbit    TI          =           SCON^1;sbit    RI          =           SCON^0;sfr         SBUF        =           0x99;sfr         P2          =           0xA0;sbit    P20         =           P2^0;sbit    P21         =           P2^1;sbit    P22         =           P2^2;sbit    P23         =           P2^3;sbit    P24         =           P2^4;sbit    P25         =           P2^5;sbit    P26         =           P2^6;sbit    P27         =           P2^7;sfr         AUXR1       =           0xA2;sfr         IE          =           0xA8;sbit    EA          =           IE^7;sbit    EC          =           IE^6;sbit    ET2         =           IE^5;sbit    ES          =           IE^4;sbit    ET1         =           IE^3;sbit    EX1         =           IE^2;sbit    ET0         =           IE^1;sbit    EX0         =           IE^0;sfr         SADDR       =           0xA9;sfr         P3          =           0xB0;sbit    P30         =           P3^0;sbit    P31         =           P3^1;sbit    P32         =           P3^2;sbit    P33         =           P3^3;sbit    P34         =           P3^4;sbit    P35         =           P3^5;sbit    P36         =           P3^6;sbit    P37         =           P3^7;sbit    RD          =           P3^7;sbit    WR          =           P3^6;sbit    T1          =           P3^5;sbit    T0          =           P3^4;sbit    INT1        =           P3^3;sbit    INT0        =           P3^2;sbit    TXD         =           P3^1;sbit    RXD         =           P3^0;sfr         IPH         =           0xB7;
sfr         IP          =           0xB8;sbit    PT2         =           IP^5;sbit    PS          =           IP^4;sbit    PT1         =           IP^3;sbit    PX1         =           IP^2;sbit    PT0         =           IP^1;sbit    PX0         =           IP^0;sfr         SADEN       =           0xB9;sfr         XICON       =           0xC0;sbit    PX3         =           XICON^7;sbit    EX3         =           XICON^6;sbit    IE3         =           XICON^5;sbit    IT3         =           XICON^4;sbit    PX2         =           XICON^3;sbit    EX2         =           XICON^2;sbit    IE2         =           XICON^1;sbit    IT2         =           XICON^0;sfr         T2CON       =           0xC8;sbit    TF2         =           T2CON^7;sbit    EXF2        =           T2CON^6;sbit    RCLK        =           T2CON^5;sbit    TCLK        =           T2CON^4;sbit    EXEN2       =           T2CON^3;sbit    TR2         =           T2CON^2;sbit    C_T2        =           T2CON^1;sbit    CP_RL2      =           T2CON^0;sfr         T2MOD       =           0xC9;
sfr         RCAP2L      =           0xCA;
sfr         RCAP2H      =           0xCB;
sfr         TL2         =           0xCC;
sfr         TH2         =           0xCD;sfr         PSW         =           0xD0;sbit    CY          =           PSW^7;sbit    AC          =           PSW^6;sbit    F0          =           PSW^5;sbit    RS1         =           PSW^4;sbit    RS0         =           PSW^3;sbit    OV          =           PSW^2;sbit    F1          =           PSW^1;sbit    P           =           PSW^0;sfr         ACC         =           0xE0;sfr         WDT_CONTR   =           0xE1;
sfr         ISP_DATA    =           0xE2;
sfr         ISP_ADDRH   =           0xE3;
sfr         ISP_ADDRL   =           0xE4;
sfr         ISP_CMD     =           0xE5;
sfr         ISP_TRIG    =           0xE6;
sfr         ISP_CONTR   =           0xE7;sfr         P4          =           0xE8;sbit    P40         =           P4^0;sbit    P41         =           P4^1;sbit    P42         =           P4^2;sbit    P43         =           P4^3;sbit    P44         =           P4^4;sbit    P45         =           P4^5;sbit    P46         =           P4^6;sbit    P47         =           P4^7;sfr         B           =           0xF0;/#endif

4.2 Protues仿真

Led点阵屏上数字一直扫描移动,在实际应用时也是扫描移动显示。

在这里插入图片描述

配套示例程序

5 总结

  1. LED点阵广告牌作为一种现代化、高效能的广告展示工具,已经成为城市景观、商业广告和活动展示中不可或缺的一部分。其高亮度、高清晰度和多功能性使其在各种场合中展现出色彩斑斓的效果,吸引眼球、传递信息。
  2. 商业广告牌:用于商业广告、品牌宣传、产品推广等。
  3. 交通指示牌:用于道路交通指示、公共交通站点显示等。
  4. 活动场馆广告:用于体育场馆、演艺场所、会展中心等的广告宣传和信息展示。
  5. 城市景观工程:用于城市建筑、广场、公园等的景观照明和信息展示。
  6. 活动现场背景:用于大型活动现场的背景布置和互动展示。

配套示例程序

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • springcloud rocketmq 新增的消费者组从哪里开始消费
  • 【开发学习笔记】什么是Springboot?
  • 【AI大模型】Prompt 提示词工程使用详解
  • SSM学习9:SpringBoot简介、创建项目、配置文件、多环节配置
  • docker 构建 mongodb
  • 阿里服务器购买与java环境搭建 实践
  • kafka高性能的底层原理分析
  • 若依ruoyi+AI项目二次开发(智能售货机运营管理系统)
  • 0719_驱动1 arm裸机开发与linux驱动开发区别
  • centos7安装redis数据库步骤
  • 数据库编程中游标 连接 commit 字符集
  • 键盘是如何使用中断机制的?当打印一串字符到显示屏上时发生了什么???
  • 【科大讯飞笔试题汇总】2024-07-27-科大讯飞秋招提前批(研发岗)-三语言题解(Cpp/Java/Python)
  • 数据结构:单链表的实现
  • 大疆创新2025校招内推
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • 【前端学习】-粗谈选择器
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • ES6系列(二)变量的解构赋值
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • node学习系列之简单文件上传
  • PHP变量
  • PV统计优化设计
  • Python打包系统简单入门
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • Sequelize 中文文档 v4 - Getting started - 入门
  • SOFAMosn配置模型
  • springMvc学习笔记(2)
  • SSH 免密登录
  • Windows Containers 大冒险: 容器网络
  • 阿里云Kubernetes容器服务上体验Knative
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 从零开始在ubuntu上搭建node开发环境
  • 动态规划入门(以爬楼梯为例)
  • 给新手的新浪微博 SDK 集成教程【一】
  • 基于HAProxy的高性能缓存服务器nuster
  • 聊一聊前端的监控
  • 前端知识点整理(待续)
  • 驱动程序原理
  • 容器服务kubernetes弹性伸缩高级用法
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • 第二十章:异步和文件I/O.(二十三)
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • 昨天1024程序员节,我故意写了个死循环~
  • ​​​​​​​开发面试“八股文”:助力还是阻力?
  • ​十个常见的 Python 脚本 (详细介绍 + 代码举例)
  • #stm32整理(一)flash读写
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (C语言)球球大作战
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (附源码)c#+winform实现远程开机(广域网可用)