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

51單片機——LCD1602模塊

這篇具有很好參考價值的文章主要介紹了51單片機——LCD1602模塊。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

51單片機lcd1602,51單片機,嵌入式硬件,單片機

一.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 對比調(diào)節(jié)電壓
RS 數(shù)據(jù)/指令選擇,1為數(shù)據(jù),0為指令
RW 讀/寫選擇,1為讀,0為寫
E 使能,1為數(shù)據(jù)有效,下降沿執(zhí)行命令(使能:相當(dāng)于遙控器的電源鍵)
D0-D7 數(shù)據(jù)輸入/輸出
A 背燈電源正極
K 背燈電源負(fù)極

注:當(dāng)RS=1時,D0-D7為數(shù)據(jù),當(dāng)RS=0時,D0-D7為指令。

三.LCD1602原理圖

51單片機lcd1602,51單片機,嵌入式硬件,單片機

51單片機lcd1602,51單片機,嵌入式硬件,單片機

四.LCD1602內(nèi)部結(jié)構(gòu)圖?

51單片機lcd1602,51單片機,嵌入式硬件,單片機

?DDRAM:在哪個方格子顯示數(shù)據(jù)(RS=0——指令)。

CGRAM(可寫)+CGROM(不可寫):在方格子顯示什么數(shù)據(jù)(RS=1——數(shù)據(jù))。

AC(光標(biāo)位置):控制當(dāng)前要寫在屏幕對應(yīng)的那個格子。

DDRAM確定顯示位置然后字模庫顯示想要數(shù)據(jù),最后輸出在屏幕上。

51單片機lcd1602,51單片機,嵌入式硬件,單片機

五.時序結(jié)構(gòu)

51單片機lcd1602,51單片機,嵌入式硬件,單片機

?RS,RW和D7-D0上面介紹過了,這里介紹E,E下面有一行字母valid Data(有效數(shù)據(jù)),則E為高電平的時候數(shù)據(jù)有效,之后在設(shè)置為低電平,以便下一次數(shù)據(jù)設(shè)置,因此代碼為:

E=1;

Delay1ms();

E=0;

Delay1ms();

所以想寫數(shù)據(jù)跟指令的代碼為:

#include <REGX52.H>
#include <INTRINS.H>


sbit LCD_RS=P2^6;
sbit LCD_RW=P2^5;
sbit LCD_EN=P2^7;
#define LCE_Dataport P0

void Delay1ms()		//@11.0592MHz
{
	unsigned char i, j;

	_nop_();
	_nop_();
	_nop_();
	i = 11;
	j = 190;
	do
	{
		while (--j);
	} while (--i);
}


void LCD_WriteCommand(unsigned char Command)//寫指令
{
	LCD_RS=0;
	LCD_RW=0;
	LCE_Dataport=Command;
	LCD_EN=1;
	Delay1ms();
	LCD_EN=0;
	Delay1ms();
}

void LCD_WriteData(unsigned char Data)//寫數(shù)據(jù)
{
	LCD_RS=1;
	LCD_RW=0;
	LCE_Dataport=Data;
	LCD_EN=1;
	Delay1ms();
	LCD_EN=0;
	Delay1ms();
}

六.LCD1602初始化

51單片機lcd1602,51單片機,嵌入式硬件,單片機

51單片機lcd1602,51單片機,嵌入式硬件,單片機

初始化就是設(shè)置LCD1602一開始顯示的功能,一般設(shè)置為:

void LCD_WriteCommand(unsigned char Command)//寫指令
{
	LCD_RS=0;
	LCD_RW=0;
	LCE_Dataport=Command;
	LCD_EN=1;
	Delay1ms();
	LCD_EN=0;
	Delay1ms();
}

void LCD_Init(void)//初始化
{
	LCD_WriteCommand(0x38);
	LCD_WriteCommand(0x0C);
	LCD_WriteCommand(0x06);
	LCD_WriteCommand(0x01);
}

七.如何表示顯示位置??

51單片機lcd1602,51單片機,嵌入式硬件,單片機

如果想顯示在第一行第二列的話則表示十六進制的0x01,但是顯示在那里時,要求最高位D7為高電平,因此從0000 0001變成1000 0001,因此每次高位為0x80,所以就是0x80+0x01=0x81,在代碼里面第一行第二行可以直接表示1或2,但是列卻要減1以后在化成十六進制,所以第一行第n列則為(0x80 |( lie-1))?,第二行第n列則表示(0x80 |(lie-1)+0x40),第二行加上0x40是因為第二行開始就是40H,而不是00H,下面代碼展示。

#include <REGX52.H>
#include <INTRINS.H>

sbit LCD_RS=P2^6;
sbit LCD_RW=P2^5;
sbit LCD_EN=P2^7;
#define LCE_Dataport P0

void Delay1ms()		//@11.0592MHz
{
	unsigned char i, j;

	_nop_();
	_nop_();
	_nop_();
	i = 11;
	j = 190;
	do
	{
		while (--j);
	} while (--i);
}

void LCD_WriteCommand(unsigned char Command)//寫指令
{
	LCD_RS=0;
	LCD_RW=0;
	LCE_Dataport=Command;
	LCD_EN=1;
	Delay1ms();
	LCD_EN=0;
	Delay1ms();
}

void LCD_Setcursor(unsigned char line,unsigned char column)//行,列
{
	if(line==1)//設(shè)置光標(biāo)位置
	{
		//第一列是數(shù)字1,但是位置是0x00,要把數(shù)字1轉(zhuǎn)換0x00,就把數(shù)字1-1就0,所以轉(zhuǎn)十六進制就是0x00
		LCD_WriteCommand(0x80|(column-1));
	}
	else
	{
		//第二行的第一列是從0x40開始,第二列是0x41,相當(dāng)于0x40+0x01,0x01就是與上面一致
		LCD_WriteCommand(0x80|(column-1)+0x40);
	}
}

八.如何表示顯示的數(shù)據(jù)?

51單片機lcd1602,51單片機,嵌入式硬件,單片機

?51單片機lcd1602,51單片機,嵌入式硬件,單片機

如果想顯示字符A,則為0100 0001,化為十六進制就是0x41,在對照ASCLL碼中的A剛剛好是0x41,因此想寫數(shù)據(jù)直接'A',就可以了。?

九.LCD1602總代碼

下圖對應(yīng)最下面代碼的LCD—Shownum

51單片機lcd1602,51單片機,嵌入式硬件,單片機文章來源地址http://www.zghlxwxcb.cn/news/detail-734355.html

#include <REGX52.H>
#include <INTRINS.H>

sbit LCD_RS=P2^6;
sbit LCD_RW=P2^5;
sbit LCD_EN=P2^7;
#define LCE_Dataport P0

void Delay1ms()		//@11.0592MHz
{
	unsigned char i, j;

	_nop_();
	_nop_();
	_nop_();
	i = 11;
	j = 190;
	do
	{
		while (--j);
	} while (--i);
}


void LCD_WriteCommand(unsigned char Command)//寫指令
{
	LCD_RS=0;
	LCD_RW=0;
	LCE_Dataport=Command;
	LCD_EN=1;
	Delay1ms();
	LCD_EN=0;
	Delay1ms();
}

void LCD_WriteData(unsigned char Data)//寫數(shù)據(jù)
{
	LCD_RS=1;
	LCD_RW=0;
	LCE_Dataport=Data;
	LCD_EN=1;
	Delay1ms();
	LCD_EN=0;
	Delay1ms();
}

void LCD_Init(void)//初始化
{
	LCD_WriteCommand(0x38);
	LCD_WriteCommand(0x0C);
	LCD_WriteCommand(0x06);
	LCD_WriteCommand(0x01);
}

void LCD_Setcursor(unsigned char line,unsigned char column)
{
	if(line==1)//設(shè)置光標(biāo)位置
	{
		//第一列是數(shù)字1,但是位置是0x00,要把數(shù)字1轉(zhuǎn)換0x00,就把數(shù)字1-1就0,所以轉(zhuǎn)十六進制就是0x00
		LCD_WriteCommand(0x80|(column-1));
	}
	else
	{
		//第二行的第一列是從0x40開始,第二列是0x41,相當(dāng)于0x40+0x01,0x01就是與上面一致
		LCD_WriteCommand(0x80|(column-1)+0x40);
	}
}

void LCD_Showchar(unsigned char line,unsigned char column,unsigned char Char)//line行,column列,Char字符
{//顯示一個字符
	LCD_Setcursor(line,column);	
	LCD_WriteData(Char);
}

void LCD_Showstring(unsigned char line,unsigned char column,unsigned char *string)//line行,column列,string字符串
{//顯示字符串,字符串直接等于指針,不用數(shù)組形式等于字符串,在等于指針形式,那傳給指針的就是字符串的第一個字符的地址,然后string【i】一直往下就可以知道字符串,數(shù)組是連續(xù)的,如果baby的b在第一行第一列,那a就會在第一行,第二列。
	unsigned char i;
	LCD_Setcursor(line,column);		
	for(i=0;string[i]!='\0';i++)
	{
		LCD_WriteData(string[i]);//字符串本身就是地址,所以傳進來的字符串用指針string來接
	}
}

int LCD_Pow(int X,int Y)//平方函數(shù),列如:10^2
{
	unsigned char i;
	int Result=1;
	for(i=0;i<Y;i++)
	{
		Result*=X;
	}
	return Result;
}

void LCD_Shownum(unsigned char line,unsigned char column,unsigned int number,unsigned char length)
{
	unsigned char i;
	LCD_Setcursor(line,column);	
	for(i=length;i>0;i--)
	{

    //+'0'是因為number/LCD_Pow(10,i-1) %10對應(yīng)ASCLL碼里面的十進制,想要字符的話得從0x40開始,然后加上十進制化成十六進制,0x40就是'0'
		LCD_WriteData('0'+number/LCD_Pow(10,i-1) %10);
	}
}

void LCD_Showsignednum(unsigned char line,unsigned char column,int number,unsigned char length)
{
	unsigned char i;
	unsigned int Number1;
	LCD_Setcursor(line,column);	
	if(number>=0)
	{
		LCD_WriteData('+');
		Number1=number;
	}
	else
	{
		LCD_WriteData('-');
		Number1=-number;
	}
	for(i=length;i>0;i--)
	{
		LCD_WriteData('0'+Number1/LCD_Pow(10,i-1) %10);
	}
	
}

void LCD_Showhexnum(unsigned char line,unsigned char column,unsigned int number,unsigned char length)
{
	unsigned char i;
	unsigned char singlenumber;
	LCD_Setcursor(line,column);	
	for(i=length;i>0;i--)
	{
			singlenumber=number/LCD_Pow(16,i-1) %16;
			if(singlenumber<10)
			{
				LCD_WriteData('0'+singlenumber);
			}	
			else
			{
				LCD_WriteData('A'+singlenumber-10);
			}
	}
}

void main()
{
	LCD_Init();
	LCD_Showchar(2,2,'I');
	LCD_Showchar(2,4,'L');
	LCD_Showchar(2,5,'O');
	LCD_Showchar(2,6,'V');
	LCD_Showchar(2,7,'E');
	LCD_Showchar(2,9,'Y');
	LCD_Showchar(2,10,'O');
	LCD_Showchar(2,11,'U');
	LCD_Shownum(1,8,520,3);
	LCD_Shownum(1,11,1314,4);
	LCD_Showsignednum(2,12,-8,1);
	LCD_Showhexnum(2,15,0xA6,2);
	
	while(1)
	{
	
	}
}

到了這里,關(guān)于51單片機——LCD1602模塊的文章就介紹完了。如果您還想了解更多內(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)文章

  • 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的使用

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

    2024年02月06日
    瀏覽(21)
  • 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.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日
    瀏覽(29)
  • 51單片機外設(shè)系列:LCD1602 的詳細(xì)編程

    51單片機外設(shè)系列:LCD1602 的詳細(xì)編程

    前言,LCD1602是一個比較常用的單片機顯示外設(shè),下面我們從它的顯示原理,來分析用51單片機編程的思路。另外結(jié)尾還提供了完成的程序代碼參考。 一、LCD1602的外觀、結(jié)構(gòu)和基本參數(shù) 引腳功能解析: 第1引腳:GND為電源地腳。 第2引腳:VCC接5V電源正極。 第3引腳:VL為液晶顯

    2024年02月05日
    瀏覽(65)
  • 51單片機LCD1602液晶屏顯示方法

    51單片機LCD1602液晶屏顯示方法

    以顯示hello,world!? ? 2022.10.17? 為例。 首先把LCD1602的模塊化程序添加到項目目錄中,模塊化方法在51單片機之程序模塊化_學(xué)習(xí)筆記吧的博客-CSDN博客這里可以學(xué)習(xí)。 實驗程序: LCD1602.c文件代碼: LCD1602.h文件代碼: 把這兩個代碼,分別添加到LCD1602.c 和 LCD1602.h 文件,然后添加

    2023年04月08日
    瀏覽(23)
  • 51單片機學(xué)習(xí)筆記-12LCD1602液晶屏

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

    [toc] 注:筆記主要參考B站江科大自化協(xié)教學(xué)視頻“51單片機入門教程-2020版 程序全程純手打 從零開始入門”。 注:工程及代碼文件放在了本人的Github倉庫。 LCD1602(Liquid Crystal Display)液晶顯示屏是一種字符型液晶顯示模塊,可以顯示ASCII碼的標(biāo)準(zhǔn)字符和其它的一些內(nèi)置特殊字

    2024年02月11日
    瀏覽(32)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包