12864点阵液晶显示

1系统12864点阵型液晶显示屏的基本原理

12864点阵图形液晶显示器应用,一种通过C51编程实现对LCD12864液晶屏的控制,液晶显示器(LCD)具有低工作电压、微功耗、显示灵活、成本低等特点。

数字电路中数据以0和1保存,对LCD控制器进行不同的数据操作,可以得到不同的结果。对于显示英文操作,由于英文字母种类少只需要8位(一字节)即可。而对于中文,常用却有6000以上,于是我们的DOS前辈想了一个办法,就是将ASCII表的高128个很少用到的数值以两个为一组来表示汉字,即汉字的内码。而剩下的低128位则留给英文字符使用,即英文的内码。

得到了汉字的内码后,利用文字的字模,即用数字的各位信息来记载英文或汉字的形状,如英文的‘A‘在字模的记载方式如图1所示:

而中文的“你”在字模中的记载却如图2所示:

2. 汉字图形点阵液晶显示模块(QC12864B)主要技术参数和显示特性:

① QC12864B汉字图形点阵液晶显示模块,可显示汉字及图形

② 内置 8192个中文汉字(16X16点阵)、128个字符(8X16点阵)及
64X256点阵显示 RAM(GDRAM)

③ 电源:VDD 3.3V~+5V(内置升压电路,无需负压);显示内容:128列×
64 行

④ 显示颜色:黄绿屏,蓝屏

⑤ 显示角度:6:00钟直视

⑥ LCD类型:STN

⑦ 与 MCU接口:8
位并口或串行配置 LED背光

⑧ 多种软件功能:光标显示、画面移位、自定义字符、睡眠模式等

3.QC12864B读写操作时序:

模块有并行和串行两种连接方法(时序如下):

一、8 位并行连接时序图

MPU 写资料到模块如图4所示:

图4 MPU写资料到模块图

①MPU 从模块读出资料如图5所示:

图5 MPU从模块读出资料图

二、串行连接时序图

串行数据传送共分三个字节完成:

第一字节:串口控制—格式11111ABC

① A 为数据传送方向控制:H 表示数据从 LCD 到 MCU,L 表示数据从 MCU 到 LCD

② B 为数据类型选择:H 表示数据是显示数据,L 表示数据是控制指令

③ C 固定为 0

第二字节: (并行)8 位数据的高 4 位—格式 DDDD0000

第三字节: (并行)8 位数据的低 4 位—格式 0000DDDD 串行接口时序参数:(测试条件:T=25℃ VDD=5.0V)

4.QC12864B点阵型LCD引脚功能说明:

表1 12864LCD的引脚说明


管脚号


管脚名称


LEVER


管脚功能描述


1


VSS


0


电源地


2


VDD


+5.0V


电源电压


3


V0


-


液晶显示器驱动电压


4


D/I(RS)


H/L


D/I=“H”,表示DB7∽DB0为显示数据

D/I=“L”,表示DB7∽DB0为显示指令数据


5


R/W


H/L


R/W=“H”,E=“H”数据被读到DB7∽DB0

R/W=“L”,E=“H→L”数据被写到IR或DR


6


E


H/L


R/W=“L”,E信号下降沿锁存DB7∽DB0

R/W=“H”,E=“H”DDRAM数据读到DB7∽DB0


7


DB0-DB7


H/L


数据线


8


CS1


H/L


H:选择芯片(左半屏)信号


9


CS2


H/L


H:选择芯片(右半屏)信号


10


RET


H/L


复位信号,低电平复位


11


VOUT


-10V


LCD驱动负电压


12


LED+


-


LED背光板电源


13


LED-


-


LED背光板电源

说明:12864点阵型液晶 C语言程序(可根据自己意愿设定指定点)

/**********************电子系统设计C51编程************************
*  平台:BST-V51 + Keil U4 + STC89S52
*  名称:本程序驱动12864显示一幅图片(包含英文字符、汉字、图形)
*  日期:很久很久以前
*  晶振:11.0592MHZ
*  说明:电子小玩
*  编写:Sure
******************************************************************/
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint  unsigned int
/*12864端口定义*/
#define LCD_data  P0             //数据口
sbit LCD_RS  =  P1^0;            //寄存器选择输入
sbit LCD_RW  =  P1^1;            //液晶读/写控制
sbit LCD_EN  =  P2^5;            //液晶使能控制
sbit LCD_PSB =  P1^2;            //串/并方式控制
unsigned char code zhu[]=		//图片代码
{ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x3E,0x03,0xE0,
0xFF,0xFF,0xFF,0x00,0xFE,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xF0,0xFF,0x8F,0xF8,
0xFF,0xFF,0xFF,0x00,0xFE,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0x81,0xFF,0xDF,0xFC,
0xFF,0xFF,0xFF,0x3C,0xFE,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFC,0x03,0xFF,0xFF,0xFE,
0xFF,0xF9,0xFF,0x18,0xFE,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xFE,
0xFF,0xFC,0xFF,0x18,0xFE,0x3C,0x74,0x0F,0xFF,0xFF,0xFF,0x00,0x07,0x9C,0x70,0x0F,
0xFF,0xFE,0x7F,0x18,0xFE,0x02,0x2A,0x0F,0xFF,0xFF,0xF8,0x00,0x07,0xBE,0x71,0x8F,
0xC0,0x3F,0x3F,0x18,0xFE,0x3E,0x2A,0x0F,0xFF,0xFF,0xC0,0x00,0x07,0xF7,0x73,0xCF,
0xFF,0xFE,0x7F,0x18,0xFE,0x42,0x2A,0x0F,0xFF,0xFE,0x00,0x00,0x07,0xE3,0x76,0x6F,
0xFF,0xC1,0xFF,0x3C,0xFE,0x42,0x2A,0x0F,0xFF,0xFC,0x00,0x00,0x07,0xF7,0x06,0x6F,
0xFF,0xBE,0xFF,0x00,0xFE,0x3D,0x6B,0x0F,0xFF,0xE0,0x00,0x00,0x03,0xBE,0x73,0xCE,
0xFF,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x01,0xF3,0x9C,0xF9,0x8E,
0xFF,0xBF,0x99,0x89,0xC1,0xFF,0xFE,0x00,0x0F,0xE0,0x00,0x03,0xFF,0x81,0xFC,0x0E,   0xF1,0xC1,0xD1,0xE6,0xBE,0xFE,0x00,0x00,0x0B,0xC0,0x04,0x7F,0xFD,0xF9,0xFC,0xFC,    0xFF,0xFE,0xDD,0xEF,0x80,0xFC,0x00,0x03,0x63,0x00,0x03,0xFF,0xFC,0xFD,0xFD,0xF8,     0xFF,0xFE,0xDD,0xEF,0xBF,0xE0,0x00,0x00,0xF3,0x00,0x03,0xFF,0xFC,0x7C,0xF9,0xF8,   0xFF,0xBE,0xD9,0xEF,0xBE,0xE0,0x00,0x00,0xF3,0x00,0x1F,0xFF,0xFC,0x7C,0x71,0xF0,    0xFF,0xC1,0xE4,0x83,0xC1,0x80,0x00,0x01,0x7F,0x00,0x3F,0xFF,0xFC,0x1D,0x05,0xE0,  0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x00,0x03,0x7E,0x00,0xFF,0xFF,0xFC,0x0D,0xFD,0x80,    0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x03,0x7E,0x00,0x7F,0xFF,0xE4,0x07,0xFF,0x00,     0xFF,0xFF,0x7F,0xF0,0x00,0x00,0x00,0x07,0xF8,0x00,0xFF,0xFF,0xE5,0xF9,0xFC,0x00,   0xFF,0xE3,0xAF,0xC0,0x00,0x00,0x07,0xBF,0xF8,0x00,0xFF,0xFF,0xE7,0xFE,0x70,0x00,
0xFF,0xE3,0x9F,0x80,0x00,0x00,0x0E,0x1F,0xF0,0x01,0xFF,0xFF,0xCF,0xFF,0x00,0x00,    0xFF,0xC3,0x8F,0x80,0x00,0x00,0x3E,0x4F,0xF0,0x00,0xFF,0xFC,0x0F,0xFF,0x00,0x00,   0xFF,0xC3,0x8F,0x00,0x00,0x10,0xFE,0x0F,0xE0,0x01,0xFF,0xE0,0x0F,0xFF,0x00,0x00, 0xFF,0x03,0x13,0x80,0x00,0x03,0xFC,0x8F,0xE0,0x01,0xFF,0xFF,0xC7,0xFE,0x00,0x00,
0xFF,0x04,0x12,0x80,0x00,0x00,0x7C,0x0F,0x80,0x03,0xFF,0xFF,0xC5,0xF8,0x00,0x00,  0xFE,0x0C,0x17,0xC0,0x00,0x00,0x00,0x3E,0x00,0x07,0xFF,0xFF,0xC0,0xF0,0x0E,0x00,   0xFE,0x1E,0x67,0x7E,0x30,0x00,0x00,0x08,0x00,0x07,0xFF,0xFF,0xC0,0xF8,0x1F,0x00,    0xFC,0x1C,0x42,0x7F,0x00,0x06,0x00,0x00,0x40,0x0F,0xFF,0xFF,0xC1,0xF8,0x3F,0x80,  0xFE,0x08,0x48,0x7F,0x40,0x01,0x78,0x10,0xC0,0x0F,0xFF,0xFF,0xC1,0xF8,0x7F,0xC0,  0xFE,0x08,0x08,0x7F,0x40,0x01,0x78,0x10,0xC0,0x0F,0xFF,0xFF,0xC1,0xF8,0xFF,0xE0, 0xFE,0x00,0x00,0x7E,0x60,0x00,0x00,0x10,0x80,0x3D,0xBF,0xFF,0xC1,0xF9,0xFF,0xF0,
0xFF,0x00,0x00,0x1C,0xC0,0x00,0x04,0x00,0x00,0x39,0x3F,0xFF,0xC1,0xF9,0xFB,0xF0, 0xFF,0x00,0x00,0x71,0x00,0x00,0x3C,0x00,0x00,0x39,0x3F,0xFA,0x41,0xF9,0xFF,0xF0, 0xFF,0x80,0x00,0x60,0x30,0x01,0xC0,0x00,0x00,0x01,0x1B,0x02,0x41,0xF8,0xFF,0xE0, 0xFF,0xC8,0x00,0x00,0x31,0x1F,0x00,0x00,0x40,0x00,0x00,0x02,0x41,0xF8,0x7F,0xC0, 0xFF,0xC4,0xFE,0x00,0x03,0x00,0x07,0xC7,0xC2,0x00,0x00,0x04,0x01,0xF8,0x3F,0x80, 0xFF,0xFF,0xF0,0x00,0x0F,0xE0,0x3F,0x9C,0x0F,0x80,0x00,0x04,0x01,0xF8,0x1F,0x00,  0xFF,0xFF,0xF8,0x10,0x0F,0xC0,0x7E,0x3F,0xE7,0xFF,0x00,0x00,0x01,0xF8,0x0E,0x00,
0xFF,0xFF,0xF8,0x1E,0x0F,0xE0,0x70,0x3F,0xE0,0x3F,0x00,0x00,0x01,0xF8,0x00,0x00,  0xFF,0xFF,0xFC,0x1E,0x1D,0xE0,0x77,0x00,0xE0,0x00,0x00,0x00,0x01,0xF8,0x00,0x00,  0xFF,0xFF,0xFC,0x03,0x99,0xE0,0xE7,0x36,0xE0,0x00,0x00,0x00,0x03,0xFC,0x00,0x00,    0xFF,0xFF,0xFC,0x00,0x3F,0xF0,0xC3,0x36,0xF0,0x00,0x00,0x1C,0x73,0xFC,0x00,0x00,   0xFF,0xFF,0xFC,0x18,0x7B,0x79,0xC3,0x32,0xF0,0x00,0x0F,0xFF,0xA3,0xFC,0x0E,0x00,  0xFF,0xFF,0xFC,0x1E,0x63,0x3D,0xFF,0x77,0xF0,0x00,0xDF,0xFF,0xA3,0xFC,0x1F,0x00,  0xFF,0xFF,0xFC,0x1D,0x9F,0xE1,0xFF,0xF0,0x06,0x8D,0xDF,0xFF,0xB3,0xFC,0x7F,0xC0,    0xFF,0xFF,0xFE,0x07,0x5F,0xE0,0x03,0x30,0x7F,0x89,0xDF,0xFF,0xF3,0xFC,0xFF,0xE0, 0xFF,0xFF,0xFE,0x00,0x03,0x00,0x03,0x33,0x7F,0x89,0xDF,0xFF,0xF3,0xFF,0xFF,0xF8,
0xFF,0xFF,0xFE,0x00,0x2B,0x60,0x03,0x33,0x3F,0x09,0xDF,0xFF,0x93,0xFF,0xFF,0xFC,
0xFF,0xFF,0xFF,0x1E,0x3B,0x70,0x0F,0x3B,0xFF,0x09,0xFF,0xFF,0xD3,0xFF,0xF1,0xFC,
0xFF,0xFF,0xFF,0x1E,0x7B,0x30,0x3F,0x3C,0x37,0x89,0x80,0x0F,0xD3,0xFF,0xE0,0xFC,    0xFF,0xFF,0xFF,0xB6,0x57,0x39,0xFB,0x03,0xB3,0x89,0x00,0x00,0x03,0xFF,0xE0,0xFC,    0xFF,0xFF,0xFF,0xA7,0x9F,0x3D,0xE3,0x07,0xB3,0x89,0x00,0x00,0x03,0xFF,0xE0,0xF8,  0xFF,0xFF,0xFF,0xE7,0x87,0x3D,0xC7,0x7D,0xB0,0x89,0x00,0x00,0x03,0xFF,0xE0,0xF8,
0xFF,0xFF,0xFF,0xE7,0x87,0x01,0x87,0x7C,0x30,0x08,0x1F,0x00,0x03,0xFD,0xFF,0xF8,
0xFF,0xFF,0xFF,0xF7,0x87,0xC1,0x07,0x60,0xF0,0x10,0x3F,0xFF,0xDB,0xFF,0xFF,0xF0,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x63,0xF4,0x30,0x3F,0xFF,0xDF,0xFF,0xFF,0xF0, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x04,0x70,0x3F,0xFF,0xD7,0xFE,0xFF,0xE0,   0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x01,0xF0,0x3F,0xFF,0xD7,0xFE,0xFF,0xE0,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x40,0x1F,0xF0,0x00,0x3F,0xE7,0xFE,0x00,0x00,    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF1,0x00,0x00,0xE7,0xFE,0x00,0x00,     0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x07,0xFE,0x00,0x00,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x07,0xFE,0x00,0x00
};
#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};
void delay0(uchar x);  //x*0.14MS
void  dataconv();
void lcd_pos(uchar X,uchar Y);  //确定显示位置
void delay(int ms)
{   while(ms--)
	{
      uchar i;
	  for(i=0;i<250;i++)
	   { _nop_();_nop_();_nop_();_nop_();  }
	}
}
/*******************************************************************/
/*                                                                 */
/*检查LCD忙状态                                                   */
/*lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据。      */
/*                                                                 */
/*******************************************************************/
bit lcd_busy()
 {  bit result;
    LCD_RS = 0;
    LCD_RW = 1;
    LCD_EN = 1;
    delayNOP();
    result = (bit)(P0&0x80);
    LCD_EN = 0;
    return(result);
 }
/*******************************************************************/
/*写指令数据到LCD                                                 */
/*RS=L,RW=L,E=高脉冲,D0-D7=指令码。                          */
/*******************************************************************/
void lcd_wcmd(uchar cmd)
{
   while(lcd_busy());
    LCD_RS = 0;
    LCD_RW = 0;
    LCD_EN = 0;
    _nop_();    _nop_();
    P0 = cmd;
    delayNOP();
    LCD_EN = 1;
    delayNOP();
    LCD_EN = 0;
}
/*******************************************************************/
/*                                                                 */
/*写显示数据到LCD                                                */
/*RS=H,RW=L,E=高脉冲,D0-D7=数据。                           */
/*                                                                 */
/*******************************************************************/
void lcd_wdat(uchar dat)
{
   while(lcd_busy());
    LCD_RS = 1;
    LCD_RW = 0;
    LCD_EN = 0;
    P0 = dat;
    delayNOP();
    LCD_EN = 1;
    delayNOP();
    LCD_EN = 0;
}
/*******************************************************************/
/*                                                                 */
/*  LCD初始化设定                                                */
/*                                                                 */
/*******************************************************************/
void lcd_init()
{
    LCD_PSB = 1;         //并口方式
    lcd_wcmd(0x34);      //扩充指令操作
    delay(5);
    lcd_wcmd(0x30);      //基本指令操作
    delay(5);
    lcd_wcmd(0x0C);      //显示开,关光标
    delay(5);
    lcd_wcmd(0x01);      //清除LCD的显示内容
    delay(5);
}
/*******************************************
函数名称:Draw_PM
功    能:在整个液晶屏幕上画图
参    数:无
返回值  :无
********************************************/
void Draw_PM(const uchar *ptr)
{
    uchar i,j,k;
	lcd_wcmd(0x34);        //打开扩展指令集
	i = 0x80;
	for(j = 0;j < 32;j++)
	{
        lcd_wcmd(i++);
        lcd_wcmd(0x80);
  		for(k = 0;k < 16;k++)
  		{  lcd_wdat(*ptr++);}
	}
	i = 0x80;
 	for(j = 0;j < 32;j++)
	{   lcd_wcmd(i++);
        lcd_wcmd(0x88);
  		for(k = 0;k < 16;k++)
  		{  lcd_wdat(*ptr++);	}
	}
    lcd_wcmd(0x36);        //打开绘图显示
	lcd_wcmd(0x30);        //回到基本指令集
}

main()
 {     lcd_init();         //初始化LCD
   		Draw_PM(zhu);    //显示设定的图片
 		while(1);
 }

实物图

转载请注明来源,么么哒!原创声明:本文为-Sure-原创作品,转载时请注明“转自-Sure-”及原文链接。

时间: 2024-07-30 14:21:00

12864点阵液晶显示的相关文章

12864点阵液晶显示模块的原理和实例程序(HJ12864M-1)

12864点阵液晶显示模块(LCM)就是由 128*64个液晶显示点组成的一个128列*64行的阵列.每个显示点对应一位二进制数,1表示亮,0表示灭.存储这些点阵信息的RAM称为显示数据存 储器.要显示某个图形或汉字就是将相应的点阵信息写入到相应的存储单元中.图形或汉字的点阵信息当然由自己设计,问题的关键就是显示点在液晶屏上的位置 (行和列)与其在存储器中的地址之间的关系. 由于多数液晶显示模块的驱动电路是由一片行驱动器和两 片列驱动器构成,所以12864液晶屏实际上是由左右两块独立的64*64

12864

一.概述 点阵式液晶显示模块(LCD)广泛应用于单片机控制系统,比数码管.段式液晶能模块显示很多其它.更直观的信息,如汉字.曲线.图片等.点阵液晶显示模块集成度非常高,一般都内置控制芯片.行驱动芯片和列驱动芯片,点阵数量较大的LCD还配置RAM芯片,带汉字库的LCD还内嵌汉字库芯片,有负压输出的LCD还设有负压驱动电路等.单片机读写LCD实际上就是对LCD的控制芯片进行读写命令和数据.编程驱动LCD时,不须要对LCD的结构和点阵行列驱动原理深入了解,仅仅要理解LCD接口的定义和LCD的控制芯片的

点阵字库的生产原理(转)

源:点阵字库的生产原理 所有的汉字或者英文都是下面的原理, 由左至右,每8个点占用一个字节,最后不足8个字节的占用一个字节,而且从最高位向最低位排列. 生成的字库说明:(以12×12例子) 一个汉字占用字节数:12÷8=1····4也就是占用了2×12=24个字节. 编码排序A0A0→A0FE A1A0→A2FE依次排列. 以12×12字库的“我”为例:“我”的编码为CED2,所以在汉字排在CEH-AOH=2EH区的D2H-A0H=32H个.所以在12×12字库的起始位置就是[{FE-A0}*2

进阶项目(6)LCD12864液晶屏幕设计讲解

 写在前面的话 液晶(LCD)显示具有功耗低.体积小.重量轻.超薄等许多其他显示器无法比拟的优点,近几年被广泛应用于FPGA控制的智能仪器.仪表和低功耗的电子产品中.LCD可分为段位式LCD.字符式LCD和点阵式LCD.其中段位式LCD和字符式LCD只能用于字符和数字的简单显示,不能满足图像曲线和汉字显示的要求:而点阵式LCD不仅可以显示字符.数字,还可以显示各种图形.曲线及汉字,并且可以实现屏幕上下左右滚动.动画功能.分区开窗口.反转.闪烁等功能,用途十分广泛. 基本概念 LCD12864 是

教您选购峰华手持IC卡读写机

教您选购峰华手持IC卡读写机:F8手持IC卡读写机采用32位ARM 9 内核微处理器,具备性能高.成本低.扩展性强等特点:使用Wince操作系统,具备多任务功能,提供了先进的维护和管理功能,极大地提高了应用程序的维护和开发效率,确保应用程序的稳定性.支持读写RFID非接触式IC卡.接触式IC卡.PSAM卡等多种交易卡:支持一维条形码扫描.GPRS以及WIFI选配功能. 一查看配置: 1.处理平台 ARM9处理器.主频最高200MHZ 2.存储器 SDRAM:64MB.NandFlash:64MB

浅谈字体渲染

由于某个需求,我需要了解一下关于字体渲染相关知识,以前没有接触过这个,所以启蒙就只能靠Google了.我先后找到了<认识字体渲染>和<一笔一划间蕴藏的学问 浅谈计算机字体>,有一点明白了,但只是看文章感觉很缥缈.那么我就来根据我自己的理解来实现和总结一下字体的一些概念. 字体种类 常用的是点阵字体和矢量字体,具体见Computer_font. 点阵字体: 后缀名一般为fon或者是C语言头文件形式.看讲字体渲染文章都是吐槽的,但是没有人以身边例子说明一下.它的英语原型为Bitmap 

1602/2002/2004液晶模块驱动

一.概述 点阵式液晶显示模块(LCD)广泛应用于单片机控制系统,比数码管.段式液晶能模块显示更多.更直观的信息,如汉字.曲线.图片等.点阵液晶显示模块集成度很高,一般都内置控制芯片.行驱动芯片和列驱动芯片,点阵数量较大的LCD还配置RAM芯片,带汉字库的LCD还内嵌汉字库芯片,有负压输出的LCD还设有负压驱动电路等.单片机读写LCD实际上就是对LCD的控制芯片进行读写命令和数据.编程驱动LCD时,不需要对LCD的结构和点阵行列驱动原理深入了解,只要理解LCD接口的定义和LCD的控制芯片的读写时序

单片机外围电路(转载)

目前书店有很多关于51单片机应用的书籍 有人说现在都用ARM11 和 A15了  51单片机都过时了 其实不然, 敢问现在玩ARM的同志们真的就了解ARM吗?不说别的  IO口的原理真的搞清楚了吗? 为什么上拉?为什么输出要串个电阻? 什么是推挽输出?什么是开漏输出?什么叫拉电流 什么叫灌电流?作为输入时应该如何保护? 我想,要想把一件事情真的做好,就必须深入的去了解它的本质,而不能只是说:“我也不知道,反正就这样用的.” 只有基础打牢了才能设计出优秀的可靠的产品. 那么从最简单的51单片机入手

如何为编程爱好者设计一款好玩的智能硬件(八)——LCD1602点阵字符型液晶显示模块驱动封装(中)

六.温湿度传感器DHT11驱动封装(下):如何为编程爱好者设计一款好玩的智能硬件(六)——初尝试·把温湿度给收集了(下)! 七.点阵字符型液晶显示模块LCD1602驱动封装(上):如何为编程爱好者设计一款好玩的智能硬件(七)——LCD1602点阵字符型液晶显示模块驱动封装(上) 八.LCD1602点阵字符型液晶显示模块驱动封装(中) 已经有好一阵子没写了,一方面是因为最近闲杂的事特多,另一方面(主要方面)是因为我卡在了LCD1602驱动的权衡上面——总共3个控制线和一个8位并行的数据线,放在51