国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

51單片機學(xué)習(xí)筆記-12LCD1602液晶屏

這篇具有很好參考價值的文章主要介紹了51單片機學(xué)習(xí)筆記-12LCD1602液晶屏。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

12 LCD1602液晶屏

[toc]

注:筆記主要參考B站江科大自化協(xié)教學(xué)視頻“51單片機入門教程-2020版 程序全程純手打 從零開始入門”。
注:工程及代碼文件放在了本人的Github倉庫。


12.1 LCD1602介紹

LCD1602(Liquid Crystal Display)液晶顯示屏是一種字符型液晶顯示模塊,可以顯示ASCII碼的標(biāo)準(zhǔn)字符和其它的一些內(nèi)置特殊字符,還可以有8個自定義字符。

顯示容量:16×2個字符,每個字符為5*7點陣

51單片機學(xué)習(xí)筆記-12LCD1602液晶屏
圖12-1 各種各樣的液晶屏
51單片機學(xué)習(xí)筆記-12LCD1602液晶屏
圖12-2 LCD1602原理圖

LCD1602控制的關(guān)鍵,在于中間這幾個加粗的引腳。優(yōu)先級最高的是 使能引腳EN,DB0~DB7位數(shù)據(jù),通過RS和RW的配合就可以完成對于液晶屏數(shù)據(jù)/指令的讀寫。目前主要關(guān)心寫指令(怎么顯示,在哪里顯示)、寫數(shù)據(jù)(寫什么)。

51單片機學(xué)習(xí)筆記-12LCD1602液晶屏
圖12-3 LCD1602內(nèi)部結(jié)構(gòu)框圖
  • 屏幕(16*2)。
  • CGRAM+CGROM(字模庫):“CG”表示“Character Generator”,即字模生成。用于存放需要顯示的字符與液晶屏上像素點的對應(yīng)關(guān)系,相當(dāng)于數(shù)碼管顯示中的“段碼表”。
    51單片機學(xué)習(xí)筆記-12LCD1602液晶屏
    上面左側(cè)的CGRAM所示的8個寄存器可以自定義,下面的8個和上面8個地址相同,相當(dāng)于重復(fù)。后面的字模都放在CGROM中。
  • DDRAM(40*2):用于存放屏幕上需要顯示的數(shù)據(jù)。注意其一般只顯示前16列元素到液晶屏上,剩余的區(qū)域不會顯示。但是也可以利用這些區(qū)域做滾動顯示。
    51單片機學(xué)習(xí)筆記-12LCD1602液晶屏
  • 控制器:尤其注意AC(光標(biāo)位置):“AC”意為Address Counter。即對于DDRAM進行操作時要格外關(guān)心所操作的地址。

對LCD顯示進行操作的基本流程為:

1. LCD初始化:
發(fā)送指令0x38 //八位數(shù)據(jù)接口,兩行顯示,5*7點陣
發(fā)送指令0x0C //顯示開,光標(biāo)關(guān),閃爍關(guān)
發(fā)送指令0x06 //數(shù)據(jù)讀寫操作后,光標(biāo)自動加一,畫面不動
發(fā)送指令0x01 //清屏
2. 顯示字符:
發(fā)送指令0x80|AC //設(shè)置光標(biāo)位置
發(fā)送數(shù)據(jù) //發(fā)送要顯示的字符數(shù)據(jù)
發(fā)送數(shù)據(jù) //發(fā)送要顯示的字符數(shù)據(jù)
……

51單片機學(xué)習(xí)筆記-12LCD1602液晶屏
圖12-4 LCD1602指令集

下面給出讀寫操作的時序圖:

  • 寫操作時序圖及時間要求:
    51單片機學(xué)習(xí)筆記-12LCD1602液晶屏
    51單片機學(xué)習(xí)筆記-12LCD1602液晶屏
  • 讀操作時序圖及時間要求:
    51單片機學(xué)習(xí)筆記-12LCD1602液晶屏
    51單片機學(xué)習(xí)筆記-12LCD1602液晶屏
  • 注意,最重要的點在于使能信號 EN不僅拉高時有延時要求,拉低后同樣也有時間要求。 另外經(jīng)實測,時間要求也都寫的不對,建議使能信號 EN拉高和拉低的持續(xù)時間都為1ms。

下面介紹一些有關(guān)C語言語法的知識:

  • 字符:根據(jù)一定規(guī)則建立的數(shù)字到字符的映射 (ASCII碼表)
    例如:0x21=’!’,0x41=’A’,0x00=’\0’
    定義方法:char x=‘A’;(等效于char x=0x41;
  • 字符數(shù)組:存儲字符變量的一個數(shù)組
    定義方法:char y[]={’A’, ’B’, ’C’};(等效于char y[]={0x41,0x42,0x43};
  • 字符串:在字符數(shù)組后加一個字符串結(jié)束標(biāo)志,本質(zhì)上是字符數(shù)組
    定義方法:char z[]=”ABC”;(等效于char z[]={’A’, ’B’, ’C’, ’\0’};

12.2 實驗:LCD1602功能代碼

需求:在液晶屏上依次顯示:

  1. 一個字符 ‘A’
  2. 一個字符串 “Hello”
  3. 一個無符號數(shù)字 88
  4. 一個有符號數(shù)字 -00
  5. 一個十六進制數(shù)字 0xFE
  6. 一個二進制數(shù)字 01011100
  7. 顯示特殊符號℃上面的“句號”
51單片機學(xué)習(xí)筆記-12LCD1602液晶屏
圖12-5 “LCD1602”代碼調(diào)用關(guān)系

代碼展示:
- main.c

#include <REGX52.H>
#include "LCD1602.h"

void Delay500ms(){//@11.0592MHz
	unsigned char i, j, k;
	i = 4;
	j = 129;
	k = 119;
	do{
		do{
			while (--k);
		}while (--j);
	}while (--i);
}

void main(){
  //LCD初始化
  LCD1602_Init();
  // LCD顯示
  LCD1602_DispChar(1,1,'A');//顯示單個字符
  LCD1602_DispString(1,3,"$_$");//顯示字符串
  LCD1602_DispUnInt(1,7,99,3);//顯示無符號數(shù)字
  LCD1602_DispInt(1,11,-32768,6);//顯示有符號數(shù)字
  LCD1602_DispUnInt_Hex(2,1,255,2);//顯示無符號整型的16進制表示
  LCD1602_DispUnInt_Bin(2,4,3,3);//顯示無符號整型的2進制表示
  LCD1602_DispFloat(2,8,-20.99,7,3);//顯示單精度浮點數(shù)-20.99
  LCD1602_DispChar(2,15,0xdf);//顯示特殊符號(主要就是查看字模表)
  //LCD移屏
  LCD1602_DispString(1,20,"Fries on the pier!");
  while(1){
    LCD1602_WriteCommd(0x18);
    Delay500ms();
    Delay500ms();
  }
}

- LCD1602.h

#ifndef __LCD1602_H__
#define __LCD1602_H__

// LCD1602寫指令
void LCD1602_WriteCommd(unsigned char wByte);
// LCD1602寫數(shù)據(jù)
void LCD1602_WriteData(unsigned char wByte);
// 初始化函數(shù)
void LCD1602_Init(void);
//顯示單個字符
void LCD1602_DispChar(unsigned char Row,unsigned char Column,unsigned char wChar);
//顯示字符串
void LCD1602_DispString(unsigned char Row,unsigned char Column,char wString[]);
//顯示無符號數(shù)字
void LCD1602_DispUnInt(unsigned char Row, unsigned char Column, unsigned int wNum, unsigned char Length);
//顯示有符號數(shù)字
void LCD1602_DispInt(unsigned char Row, unsigned char Column,int wNum, unsigned char Length);
//顯示無符號整型的16進制表示
void LCD1602_DispUnInt_Hex(unsigned char Row, unsigned char Column, unsigned int wNum, unsigned char Length);
//顯示無符號整型的2進制表示
void LCD1602_DispUnInt_Bin(unsigned char Row, unsigned char Column, unsigned int wNum, unsigned char Length);
//顯示單精度浮點數(shù)(有符號)
void LCD1602_DispFloat(unsigned char Row, unsigned char Column, float wNum, unsigned char Total_Len, unsigned char Frac_len);

#endif

- LCD1602.c

#include <REGX52.H>

//下面這些有可能需要更改
/***************************************************************/
// 重新命名端口
sbit LCD1602_RS = P2^6;
sbit LCD1602_RW = P2^5;
sbit LCD1602_EN = P2^7;
#define  LCD1602_DB P0


// LCD1602專用延時函數(shù),晶振11.0592MHz,延時1ms
void LCD1602_Delay1ms(void){//@11.0592MHz
	unsigned char i, j;
	i = 2;
	j = 199;
	do{
		while (--j);
	}while (--i);
}
/***************************************************************/

/***************************************************************/
/**
  * @brief :LCD1602寫指令。
  * @param :wByte指令。
  * @retval :無。
 */
void LCD1602_WriteCommd(unsigned char wByte){// LCD1602寫指令
  LCD1602_EN = 0;
  LCD1602_RS = 0;
  LCD1602_RW = 0;
  LCD1602_DB = wByte;
  LCD1602_EN = 1;
  LCD1602_Delay1ms();//延時1ms
  LCD1602_EN = 0;
  LCD1602_Delay1ms();//延時1ms
}

/**
  * @brief :LCD1602寫數(shù)據(jù)。
  * @param :wByte數(shù)據(jù)。
  * @retval :無。
 */
void LCD1602_WriteData(unsigned char wByte){// LCD1602寫數(shù)據(jù)
  LCD1602_EN = 0;
  LCD1602_RS = 1;
  LCD1602_RW = 0;
  LCD1602_DB = wByte;
  LCD1602_EN = 1;
  LCD1602_Delay1ms();//延時1ms
  LCD1602_EN = 0;
  LCD1602_Delay1ms();//延時1ms
}

/**
  * @brief :設(shè)置光標(biāo)位置。
  * @param :Row行,范圍1~2。
  * @param :Column列,范圍1~40。
  * @retval :無。
 */
void LCD1602_SetCursor(unsigned char Row,unsigned char Column){
    unsigned char LCD_AC=0x00;
    // 更新坐標(biāo)位置
    if(Row==1){LCD_AC += (Column-1);}
    else      {LCD_AC += (0x40+Column-1);}
    // 設(shè)置光標(biāo)位置
    LCD1602_WriteCommd(0x80|LCD_AC);
}

/**
  * @brief :無符號數(shù)的指數(shù)運算。
  * @param :x無符號整數(shù)基底。
  * @param :y無符號整數(shù)冪次。
  * @retval :result無符號整數(shù)運算結(jié)果。
 */
int LCD1602_Pow(int x, int y){//無符號數(shù)的指數(shù)運算
  unsigned int i;
  unsigned int result = 1;
  for(i=0;i<y;i++){
    result *= x;
  }
  return result;
}

/**
  * @brief :初始化函數(shù)。
  * @param :無。
  * @retval :無。
 */
void LCD1602_Init(void){// 初始化函數(shù)
  LCD1602_WriteCommd(0x38);//八位數(shù)據(jù)接口,兩行顯示,5*7點陣
  LCD1602_WriteCommd(0x0c);//顯示開,光標(biāo)關(guān),閃爍關(guān)
  LCD1602_WriteCommd(0x06);//數(shù)據(jù)讀寫操作后,光標(biāo)自動加一,畫面不動
  LCD1602_WriteCommd(0x01);//清屏
}

/**
  * @brief :顯示字符
  * @param :Row行,范圍1~2。
  * @param :Column列,范圍1~40。
  * @param :wChar待顯示的字符。
  * @retval :無。
 */
void LCD1602_DispChar(unsigned char Row,unsigned char Column,unsigned char wChar){//顯示單個字符
  // 首先保證行列的位置有效,才運行函數(shù)
  if((Row==1 || Row==2) && Column>=1 && Column<=40){
    // 更新光標(biāo)位置
    LCD1602_SetCursor(Row,Column);
    // 發(fā)送要顯示的數(shù)據(jù)
    LCD1602_WriteData(wChar);
  }
}

/**
  * @brief :顯示字符串
  * @param :Row行,范圍1~2。
  * @param :Column列,范圍1~40。
  * @param :wString[]待顯示的字符串。
  * @retval :無。
 */
void LCD1602_DispString(unsigned char Row,unsigned char Column,char wString[]){//顯示字符串
  unsigned char i=0;
  // 首先保證行列的位置有效,才運行函數(shù)
  if((Row==1 || Row==2) && Column>=1 && Column<=40){
    // 更新光標(biāo)位置
    LCD1602_SetCursor(Row,Column);
    // 發(fā)送要顯示的數(shù)據(jù)
    while(wString[i]!='\0'){
      LCD1602_WriteData(wString[i]);
      i++;
    }    
  }
}
  
/**
  * @brief :顯示無符號數(shù)字
  * @param :Row行,范圍1~2。
  * @param :Column列,范圍1~40。
  * @param :wNum待顯示的無符號數(shù)字,范圍0~65535。
  * @param :Length在屏幕上顯示的長度,范圍1~16。
  * @retval :無。
 */
void LCD1602_DispUnInt(unsigned char Row, unsigned char Column,
                       unsigned int wNum, unsigned char Length){//顯示無符號數(shù)字
  unsigned char i=0;
  unsigned char temp=0;//存儲單個位上的數(shù)據(jù)
  // 首先保證行、列、顯示長度有效,才運行函數(shù)
  if((Row==1 || Row==2) && Column>=1 && Column<=40 && Length>=1){
    // 1. 更新光標(biāo)位置
    LCD1602_SetCursor(Row,Column);
    // 2.發(fā)送要顯示的數(shù)據(jù)
    // 2.1 超過5位的長度都顯示0
    if(Length>16){Length=16;}
    while(Length>5){
      LCD1602_WriteData(0x30);//直接發(fā)送'0'的ASCII碼
      Length--;
    }
    // 2.2 5位以內(nèi)的真實數(shù)值
    for(i=0;i<Length;i++){
      temp = (wNum/LCD1602_Pow(10,Length-1-i))%10;
      LCD1602_WriteData(0x30|temp);//直接計算ASCII碼
    } 
  }
}

/**
  * @brief :顯示有符號數(shù)字
  * @param :Row行,范圍1~2。
  * @param :Column列,范圍1~40。
  * @param :wNum待顯示的有符號數(shù)字,范圍-32768~32767。
  * @param :Length在屏幕上顯示的數(shù)字長度(包括正負號),范圍1~16。
  * @retval :無。
 */
void LCD1602_DispInt(unsigned char Row, unsigned char Column,
                     int wNum, unsigned char Length){//顯示有符號數(shù)字
  unsigned char i=0;
  unsigned char temp=0;//存儲單個位上的數(shù)據(jù)
  unsigned int un_wNum=0;
  // 首先保證行、列、顯示長度有效,才運行函數(shù)
  if((Row==1 || Row==2) && Column>=1 && Column<=40 && Length>=2){
    // 1. 更新光標(biāo)位置
    LCD1602_SetCursor(Row,Column);
    // 2. 發(fā)送要顯示的數(shù)據(jù)
    // 2.1 顯示正負號,并將原來的數(shù)字轉(zhuǎn)換成正數(shù)
    if(Length>16){Length=16;}
    if(wNum>=0){LCD1602_WriteData('+'); un_wNum=wNum;}
    else       {LCD1602_WriteData('-'); un_wNum=-wNum;}
    Length--;
    // 2.2 超過5位的長度都顯示0
    while(Length>5){
      LCD1602_WriteData(0x30);//直接發(fā)送'0'的ASCII碼
      Length--;
    }
    // 2.3 5位以內(nèi)的真實數(shù)值
    for(i=0;i<Length;i++){
      temp = (un_wNum/LCD1602_Pow(10,Length-1-i))%10;
      LCD1602_WriteData(0x30|temp);//直接計算ASCII碼
    } 
  }
}

/**
  * @brief :顯示無符號整型的16進制表示。
  * @param :Row行,范圍1~2。
  * @param :Column列,范圍1~40。
  * @param :wNum待顯示的無符號數(shù)字,范圍0~65535。
  * @param :Length在屏幕上顯示的16進制長度,范圍1~4。
  * @retval :無。
 */
void LCD1602_DispUnInt_Hex(unsigned char Row, unsigned char Column,
                           unsigned int wNum, unsigned char Length){//顯示無符號整型的16進制表示
  unsigned char i=0;
  unsigned char temp=0;//存儲單個位上的數(shù)據(jù)
  // 首先保證行、列、顯示長度有效,才運行函數(shù)
  if((Row==1 || Row==2) && Column>=1 && Column<=40&& Length>=1){
    // 1. 更新光標(biāo)位置
    LCD1602_SetCursor(Row,Column);
    // 2. 發(fā)送要顯示的數(shù)據(jù)
    if(Length>4){Length=4;}
    else        {wNum = (wNum<<(4*(4-Length)))>>(4*(4-Length));}//根據(jù)要顯示的長度截取有用的位
    for(i=0;i<Length;i++){
      temp = (wNum>>((Length-1-i)*4))%16;
      if(temp>=0 && temp<=9){LCD1602_WriteData('0' + temp);}
      else                  {LCD1602_WriteData('A' + temp - 10);}
    } 
  }
}

/**
  * @brief :顯示無符號整型的2進制表示。
  * @param :Row行,范圍1~2。
  * @param :Column列,范圍1~40。
  * @param :wNum待顯示的無符號數(shù)字,范圍0~65535。
  * @param :Length在屏幕上顯示的2進制長度,范圍1~16。
  * @retval :無。
 */
void LCD1602_DispUnInt_Bin(unsigned char Row, unsigned char Column,
                           unsigned int wNum, unsigned char Length){//顯示無符號整型的2進制表示
  unsigned char i=0;
  // 首先保證行、列、顯示長度有效,才運行函數(shù)
  if((Row==1 || Row==2) && Column>=1 && Column<=40&& Length>=1){
    // 1. 更新光標(biāo)位置
    LCD1602_SetCursor(Row,Column);
    // 2. 發(fā)送要顯示的數(shù)據(jù)
    if(Length>16){Length=16;}
    for(i=0;i<Length;i++){
      if(wNum&(0x0001<<(Length-1-i))) {LCD1602_WriteData('1');}
      else                            {LCD1602_WriteData('0');}
    } 
  }
}

/**
  * @brief :顯示單精度浮點數(shù)(有符號)。
  * @param :Row行,范圍1~2。
  * @param :Column列,范圍1~40。
  * @param :wNum待顯示的小數(shù),范圍-3.4E38~3.4E38。
  * @param :Total_Len在屏幕上顯示的總長度長度(包括正負號),范圍3~16。
  * @param :Frac_len在屏幕上顯示的小數(shù)部分的長度,范圍1~16。
  * @retval :無。
  * 說明:優(yōu)先顯示小數(shù)部分。
 */
void LCD1602_DispFloat(unsigned char Row, unsigned char Column,
                       float wNum, unsigned char Total_Len,
                       unsigned char Frac_len){//顯示單精度浮點數(shù)(有符號)
  unsigned char Int_len = Total_Len-2-Frac_len; //整數(shù)段長度
  unsigned int Int_part=0, Fra_part=0;
  // 首先保證行、列、顯示長度有效,才運行函數(shù)
  if((Row==1 || Row==2) && Column>=1 && Column<=40 && Total_Len>=3){
    //1. 顯示正負號,并將原來的數(shù)字轉(zhuǎn)化成絕對值
    if(wNum>=0){LCD1602_DispChar(Row,Column,'+');}
    else       {LCD1602_DispChar(Row,Column,'-'); wNum=-wNum;}
    //2. 獲取整數(shù)部分、小數(shù)部分
    Int_part=(unsigned int)wNum;
    Fra_part = ((unsigned int)(wNum*LCD1602_Pow(10,Frac_len)))%LCD1602_Pow(10,Frac_len);
    //3. 顯示整數(shù)部分
    LCD1602_DispUnInt(Row,Column+1,Int_part,Int_len);
    //4. 顯示小數(shù)點
    LCD1602_DispChar(Row,Column+1+Int_len,'.');
    //5. 顯示小數(shù)部分
    LCD1602_DispUnInt(Row,Column+2+Int_len,Fra_part,Frac_len);

  }
}

編程感想:文章來源地址http://www.zghlxwxcb.cn/news/detail-500191.html

  1. 關(guān)于 sbitsfrsbit可以直接在等式右邊使用端口名,而sfr在等式右邊只能寫地址。所以一般使用宏定義#define來完成對于一個寄存器的重命名。
  2. 函數(shù)定義時聲明的簡寫:51單片機用的C89沒有簡寫,只要沒寫就默認(rèn)為int型。
  3. 傳遞字符串:直接將字符串給函數(shù),那么形參定義是應(yīng)使用 char 形參名[]或者 char *形參名的形式。另外,在主函數(shù)中傳遞數(shù)組形式的變量進函數(shù)時,都是傳遞的數(shù)組首元素地址。在函數(shù)中,數(shù)組的調(diào)用格式 形參名[i]與解引用格式 *(形參名+i)相同。
  4. 天坑:LCD讀寫數(shù)據(jù)的時序中,使能信號 EN持續(xù)的時間,不能按照器件手冊中的us級別,而是要延時大約1ms。
  5. C語言沒有自帶的指數(shù)運算符,^表示的按位異或。而頭文件<Math.h>中的pow(x,y)函數(shù),兩個操作數(shù)都是float類型。
  6. 關(guān)于移屏:有兩種可能,一是移為速度過快;二是VLCD驅(qū)動電壓過高。但目前暫未找到解決方法。

到了這里,關(guān)于51單片機學(xué)習(xí)筆記-12LCD1602液晶屏的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 單片機學(xué)習(xí)筆記---LCD1602功能函數(shù)代碼

    單片機學(xué)習(xí)筆記---LCD1602功能函數(shù)代碼

    目錄 LCD1602.c 模擬寫指令的時序 模擬寫數(shù)據(jù)的時序 初始化 顯示字符 顯示字符串 顯示數(shù)字 顯示有符號的數(shù)字 顯示16進制數(shù)字 顯示二進制數(shù) LCD1602.h main.c 上一篇講了LCD1602的工作原理,這一節(jié)開始代碼演示! 新創(chuàng)建工程:LCD1602功能函數(shù)代碼 新創(chuàng)建main.c,LCD1602.c和LCD1602.h文件

    2024年02月19日
    瀏覽(16)
  • 51單片機——LCD1602模塊

    51單片機——LCD1602模塊

    一.LCD1602介紹 1.LCD1602 (Liquid Crystal Display )液晶顯示屏是一種字符型液晶顯示模塊,可以顯示ASCII碼的標(biāo)準(zhǔn)字符和其它的一些內(nèi)置特殊字符,還可以有8個自定義字符。 2.顯示容量:16x2個字符,每個字符為5*7點陣。 二.LCD1602接口介紹 引腳 功能 VSS 接地 VDD 電源正極(4.5v-5.5v) VO 對

    2024年02月07日
    瀏覽(19)
  • 51單片機入門——LCD1602

    51單片機入門——LCD1602

    LCD ( Liquid Crystal Display 的簡稱) 液晶顯示器 。 LCD 的構(gòu)造是在兩片平行的玻璃基板當(dāng)中放置液晶盒,下基板玻璃上設(shè)置TFT(薄膜晶體管),上基板玻璃上設(shè)置彩色濾光片,通過TFT上的信號與電壓改變來控制液晶分子的轉(zhuǎn)動方向,從而達到控制每個像素點偏振光出射與否而達

    2024年02月09日
    瀏覽(22)
  • 【【51單片機LCD1602模塊介紹】】

    【【51單片機LCD1602模塊介紹】】

    顯示容量16x2 每個字符是5x7的點陣 VDD 是電源正極 4.5-5.5v VO 是對比度調(diào)節(jié)電壓 RS 數(shù)據(jù)/指令 選擇 1為數(shù)據(jù)0為指令 RW 讀寫選擇1是讀 0為寫 E 使能 1為數(shù)據(jù)有效 下降沿執(zhí)行命令 D0-D7 數(shù)據(jù)輸入輸出 A 背光電源正極 K 背光電源負極 LCD1602的操作流程 1.初始化: 發(fā)送0x38//八位數(shù)據(jù)接口,

    2024年02月15日
    瀏覽(32)
  • 51單片機LCD1602調(diào)試工具

    51單片機LCD1602調(diào)試工具

    參考視頻:江協(xié)科技51單片機 LCD1602頭文件代碼 LCD1602 C語言文件 LCD1602主函數(shù)文件

    2024年01月24日
    瀏覽(24)
  • 51單片機LCD1602的使用

    51單片機LCD1602的使用

    本篇文章將為大家講解LCD1602的使用方法。 LCD1602是一種常用的液晶顯示器,它的原理是通過液晶分子的振蕩來控制顯示內(nèi)容的。液晶分子在電場的作用下,會發(fā)生振蕩,從而改變液晶分子的極性,從而控制顯示內(nèi)容。液晶顯示器的控制電路會根據(jù)輸入的信號,控制電場的強度

    2024年02月06日
    瀏覽(19)
  • 51單片機矩陣鍵盤——LCD1602顯示

    51單片機矩陣鍵盤——LCD1602顯示

    本次的實驗需要用到LCD1602液晶屏,需要用到LCD1602.c 與LCD1602.h文件鏈接: https://download.csdn.net/download/YLG_lin/86404949 使用矩陣鍵盤隨意按下按鍵,LCD1602第二行前兩位就會顯示對應(yīng)按鍵按下的數(shù)字。 在鍵盤中按鍵數(shù)量較多時,為了減少I/O口的占用,通常將按鍵排列成矩陣形式 采用

    2023年04月09日
    瀏覽(33)
  • 51單片機(五)LCD1602調(diào)試工具

    51單片機(五)LCD1602調(diào)試工具

    ?? 專欄簡介:本專欄記錄了從零學(xué)習(xí)單片機的過程,其中包括51單片機和STM32單片機兩部分;建議先學(xué)習(xí)51單片機,其是STM32等高級單片機的基礎(chǔ);這樣再學(xué)習(xí)STM32時才能融會貫通。 ?? 專欄適用人群 :適用于想要從零基礎(chǔ)開始學(xué)習(xí)入門單片機,且有一定C語言基礎(chǔ)的的童鞋

    2023年04月27日
    瀏覽(22)
  • MCU-51:單片機LCD1602詳解

    MCU-51:單片機LCD1602詳解

    LCD1602(Liquid Crystal Display)液晶顯示屏是一種字符型液晶顯示模塊,可以顯示ASCII碼的標(biāo)準(zhǔn)字符和其它的一些內(nèi)置特殊字符,還可以有8個自定義字符 顯示容量:16×2個字符,每個字符為5*7點陣 點陣圖形式液晶由M×N個顯示單元組成,假設(shè)LCD顯示屏有64行,每行有128列,每8列對應(yīng)

    2023年04月09日
    瀏覽(27)
  • 51單片機 | LCD1602 液晶顯示實驗

    51單片機 | LCD1602 液晶顯示實驗

    ??在前面章節(jié),我們已經(jīng)學(xué)習(xí)過幾種顯示裝置,例如靜態(tài)數(shù)碼管、動態(tài)數(shù)碼管、 8*8LED 點陣、串口通信。使用它們可以直觀顯示一些字符數(shù)據(jù),但是它們也有各種局限性,比如顯示字符數(shù)據(jù)太少,硬件設(shè)計復(fù)雜、代碼編寫難度大等。這一章就來介紹一種非常簡單且常用的顯

    2023年04月11日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包