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

51單片機LCD1602液晶屏顯示字符,字符串,(有)無符號整數(shù),十六進制數(shù),二進制數(shù)等

這篇具有很好參考價值的文章主要介紹了51單片機LCD1602液晶屏顯示字符,字符串,(有)無符號整數(shù),十六進制數(shù),二進制數(shù)等。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1.前言

LCD1602液晶顯示器是廣泛使用的一種字符型液晶顯示模塊。液晶顯示模塊具有體積小、功耗低、顯示內(nèi)容豐富、超薄輕巧等優(yōu)點,在嵌入式應用系統(tǒng)中得到越來越廣泛的應用,這講中向大家介紹的LCD1602?液晶顯示模塊(其內(nèi)部控制器為HD44780?芯片),它可以顯示兩行,每行16?個字符,因此可相當于32?個LED?數(shù)碼管,而且比數(shù)碼管顯示的信息還多。

1.1實驗現(xiàn)象

當然大家也可以根據(jù)自己的需求編寫自己需要的內(nèi)容;

51單片機LCD1602液晶屏顯示字符,字符串,(有)無符號整數(shù),十六進制數(shù),二進制數(shù)等
?

2. LCD1602相關介紹

LCD1602(Liquid Crystal Display)液晶顯示屏是一種字符型液晶顯示模塊,可以顯示ASCII碼的標準字符和其它的一些內(nèi)置特殊字符,還可以有8個自定義字符
顯示容量:16×2個字符,每個字符為5*7點陣(其實時5*8的字符占了5*7)

51單片機LCD1602液晶屏顯示字符,字符串,(有)無符號整數(shù),十六進制數(shù),二進制數(shù)等

2.1 LCD1602 引腳及應用電路

51單片機LCD1602液晶屏顯示字符,字符串,(有)無符號整數(shù),十六進制數(shù),二進制數(shù)等51單片機LCD1602液晶屏顯示字符,字符串,(有)無符號整數(shù),十六進制數(shù),二進制數(shù)等

2.2 LCD1602 內(nèi)部結構框圖

51單片機LCD1602液晶屏顯示字符,字符串,(有)無符號整數(shù),十六進制數(shù),二進制數(shù)等

每個小方塊都是一個點陣;

CGRAM與CGROM這兩個存儲區(qū)域,相當于數(shù)碼管的斷碼表一樣;其中CGRAM是可寫的,可以自己定義字符的數(shù)據(jù)存儲區(qū);CGROM是不可寫的,內(nèi)部固定的字模區(qū),出廠已經(jīng)設定好了;

DDRAM:我們想要顯示的數(shù)據(jù)實際上時寫在DDRAM這個儲存單元中的,通過DDRAM的數(shù)據(jù)來向字模庫中找到相應字符的一個顯示點陣的字模,然后再在對應位置顯示我們想要顯示的數(shù)據(jù)。

DDRAM(數(shù)據(jù)顯示區(qū))

51單片機LCD1602液晶屏顯示字符,字符串,(有)無符號整數(shù),十六進制數(shù),二進制數(shù)等

?51單片機LCD1602液晶屏顯示字符,字符串,(有)無符號整數(shù),十六進制數(shù),二進制數(shù)等

2.4 LCD1602指令集

51單片機LCD1602液晶屏顯示字符,字符串,(有)無符號整數(shù),十六進制數(shù),二進制數(shù)等

2.4 LCD1602操作流程

初始化:
?? ?發(fā)送指令0x38?? ?//八位數(shù)據(jù)接口,兩行顯示,5*7點陣
?? ?發(fā)送指令0x0C?? ?//顯示開,光標關,閃爍關
?? ?發(fā)送指令0x06?? ?//數(shù)據(jù)讀寫操作后,光標自動加一,畫面不動
?? ?發(fā)送指令0x01?? ?//清屏

顯示字符:
?? ?發(fā)送指令0x80|AC?? ?//設置光標位置
?? ?發(fā)送數(shù)據(jù)?? ??? ?//發(fā)送要顯示的字符數(shù)據(jù)
?? ?發(fā)送數(shù)據(jù)?? ??? ?//發(fā)送要顯示的字符數(shù)據(jù)
?? ?……文章來源地址http://www.zghlxwxcb.cn/news/detail-439330.html

3.源碼

3.1 main.c

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

void main()
{
	LCD_Init();						//LCD初始化
	LCD_ShowChar(1,1,'x');			//在1行1列顯示字符x
	LCD_ShowString(1,3,"Hello");	//在1行3列顯示字符串Hello
	LCD_ShowNum(1,9,33,2);			//在1行9列顯示數(shù)字33,長度為2
	LCD_ShowSignedNum(1,12,-20,2);	//在1行12列顯示有符號數(shù)字-20,長度為2
	LCD_ShowHexNum(2,1,0xA5,2);		//在2行1列顯示十六進制數(shù)字0xA5,長度為2
	LCD_ShowBinNum(2,4,0xaa,8);		//在2行4列顯示二進制數(shù)字0xA5,長度為8
	LCD_ShowChar(2,13,0xDF);		//在2行13列顯示編碼為0xDF的字符
	LCD_ShowChar(2,14,'C');			//在2行14列顯示字符C
	
}

3.2 LCD1602.c

#include <REGX52.H>

//引腳定義
sbit LCD_RS=P2^6;
sbit LCD_RW=P2^5;
sbit LCD_E=P2^7;
#define LCD_DataPort P0

void Delay(unsigned int xms)
{
	unsigned char i, j;
	while(xms--)
	{
		i = 2;
		j = 239;
		do
		{
			while (--j);
		} while (--i);
	}
}

/**
  * @brief  LCD1602寫命令
  * @param  Command 要寫入的命令
  * @retval 無
  */
void LCD_WriteCommand(unsigned char Command)
{
	LCD_RS=0;
	LCD_RW=0;
	LCD_DataPort=Command;
	LCD_E=1;
	Delay(1);
	LCD_E=0;
	Delay(1);
}

/**
  * @brief  LCD1602寫數(shù)據(jù)
  * @param  Data 要寫入的數(shù)據(jù)
  * @retval 無
  */
void LCD_WriteData(unsigned char Data)
{
	LCD_RS=1;
	LCD_RW=0;
	LCD_DataPort=Data;
	LCD_E=1;
	Delay(1);
	LCD_E=0;
	Delay(1);
}

/**
  * @brief  LCD1602初始化函數(shù)
  * @param  無
  * @retval 無
  */
void LCD_Init(void)
{
	LCD_WriteCommand(0x38);
	LCD_WriteCommand(0x0C);
	LCD_WriteCommand(0x06);
	LCD_WriteCommand(0x01);
}

/**
  * @brief  LCD1602設置光標位置
  * @param  Line 行位置,范圍:1~2
  * @param  Column 列位置,范圍:1~16
  * @retval 無
  */
void LCD_SetCursor(unsigned char Line,unsigned char Column)
{
	if(Line==1)
	{
		LCD_WriteCommand(0x80|(Column-1));
	}
	else
	{
		LCD_WriteCommand(0x80|(Column-1)+0x40);
	}
}

/**
  * @brief  在LCD1602指定位置上顯示一個字符
  * @param  Line 行位置,范圍:1~2
  * @param  Column 列位置,范圍:1~16
  * @param  Char 要顯示的字符
  * @retval 無
  */
void LCD_ShowChar(unsigned char Line,unsigned char Column,unsigned char Char)
{
	LCD_SetCursor(Line,Column);
	LCD_WriteData(Char);
}

/**
  * @brief  在LCD1602指定位置開始顯示所給字符串
  * @param  Line 起始行位置,范圍:1~2
  * @param  Column 起始列位置,范圍:1~16
  * @param  String 要顯示的字符串
  * @retval 無
  */
void LCD_ShowString(unsigned char Line,unsigned char Column,unsigned char *String)
{
	unsigned char i;
	LCD_SetCursor(Line,Column);
	for(i=0;String[i]!='\0';i++)
	{
		LCD_WriteData(String[i]);
	}
}

/**
  * @brief  返回值=X的Y次方
  */
int LCD_Pow(int X,int Y)
{
	unsigned char i;
	int Result=1;
	for(i=0;i<Y;i++)
	{
		Result*=X;
	}
	return Result;
}

/**
  * @brief  在LCD1602指定位置開始顯示所給數(shù)字
  * @param  Line 起始行位置,范圍:1~2
  * @param  Column 起始列位置,范圍:1~16
  * @param  Number 要顯示的數(shù)字,范圍:0~65535
  * @param  Length 要顯示數(shù)字的長度,范圍:1~5
  * @retval 無
  */
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--)
	{
		LCD_WriteData('0'+Number/LCD_Pow(10,i-1)%10);
	}
}

/**
  * @brief  在LCD1602指定位置開始以有符號十進制顯示所給數(shù)字
  * @param  Line 起始行位置,范圍:1~2
  * @param  Column 起始列位置,范圍:1~16
  * @param  Number 要顯示的數(shù)字,范圍:-32768~32767
  * @param  Length 要顯示數(shù)字的長度,范圍:1~5
  * @retval 無
  */
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);
	}
}

/**
  * @brief  在LCD1602指定位置開始以十六進制顯示所給數(shù)字
  * @param  Line 起始行位置,范圍:1~2
  * @param  Column 起始列位置,范圍:1~16
  * @param  Number 要顯示的數(shù)字,范圍:0~0xFFFF
  * @param  Length 要顯示數(shù)字的長度,范圍:1~4
  * @retval 無
  */
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);//減10得到偏移量
		}
	}
}

/**
  * @brief  在LCD1602指定位置開始以二進制顯示所給數(shù)字
  * @param  Line 起始行位置,范圍:1~2
  * @param  Column 起始列位置,范圍:1~16
  * @param  Number 要顯示的數(shù)字,范圍:0~1111 1111 1111 1111
  * @param  Length 要顯示數(shù)字的長度,范圍:1~16
  * @retval 無
  */
void LCD_ShowBinNum(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--)
	{
		LCD_WriteData('0'+Number/LCD_Pow(2,i-1)%2);
	}
}

3.3 LCD1602.h

#ifndef __LCD1602_H__
#define __LCD1602_H__

void LCD_Init(void);
void LCD_ShowChar(unsigned char Line,unsigned char Column,unsigned char Char);
void LCD_ShowString(unsigned char Line,unsigned char Column,unsigned char *String);
void LCD_ShowNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length);
void LCD_ShowSignedNum(unsigned char Line,unsigned char Column,int Number,unsigned char Length);
void LCD_ShowHexNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length);
void LCD_ShowBinNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length);
#endif

到了這里,關于51單片機LCD1602液晶屏顯示字符,字符串,(有)無符號整數(shù),十六進制數(shù),二進制數(shù)等的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領支付寶紅包贊助服務器費用

相關文章

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

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

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

    2023年04月11日
    瀏覽(29)
  • 【51單片機】LCD1602 液晶顯示實驗指導書

    【51單片機】LCD1602 液晶顯示實驗指導書

    ??????? ?來介紹一種非常簡單且常用的顯示裝置——LCD1602 液晶顯示器,使用它可以顯示更多的字符數(shù)字。這將有助于我們清晰的觀察程序的運行結果,更加方便我們的后續(xù)調(diào)試和開發(fā)。 ????????我們的開發(fā)板上集成了一個 LCD1602 液晶顯示器接口,將LCD1602 液晶對應插

    2024年02月01日
    瀏覽(24)
  • 【附報告】51單片機計算器(LCD1602液晶顯示)

    【附報告】51單片機計算器(LCD1602液晶顯示)

    ? 由于本文較早,這里推薦一下近期剛優(yōu)化的:【優(yōu)化】51單片機計算器(LCD1602液晶顯示)_Gxtoeilee的博客-CSDN博客 ? 1 設計目標 設計可選模式的計算器? 2 主要功能 功能一:可選兩種計算模式,模式一為四則運算,模式二為擴展內(nèi)容; 功能二:除法的計算結果保留到小數(shù)點

    2024年02月11日
    瀏覽(23)
  • 【C語言】51單片機計算器(LCD1602液晶顯示)

    【C語言】51單片機計算器(LCD1602液晶顯示)

    ? 由于本文較早,這里推薦一下近期剛優(yōu)化的:【優(yōu)化】51單片機計算器(LCD1602液晶顯示)_Gxtoeilee的博客-CSDN博客 ? 1 設計目標 設計可選模式的計算器? 2 主要功能 功能一:可選兩種計算模式,模式一為四則運算,模式二為擴展內(nèi)容; 功能二:除法的計算結果保留到小數(shù)點

    2024年02月07日
    瀏覽(53)
  • Proteus仿真-LCD1602液晶屏使用方法(驅動一)

    Proteus仿真-LCD1602液晶屏使用方法(驅動一)

    一、硬件鏈接 在元件庫中搜索LM016即可找到LCD1602液晶屏。 按下圖方式鏈接單片機和屏幕。 二、軟件驅動代碼 三、示例程序

    2024年02月12日
    瀏覽(16)
  • 第十講 單片機驅動彩色液晶屏 控制RA8889軟件:圖像運算

    第十講 單片機驅動彩色液晶屏 控制RA8889軟件:圖像運算

    目錄 第一講 單片機最小系統(tǒng)STM32F103C6T6通過RA8889驅動彩色液晶屏播放視頻 第二講 單片機最小系統(tǒng)STM32F103C6T6控制RA8889驅動彩色液晶屏硬件框架 第三講 單片機驅動彩色液晶屏 控制RA8889軟件:如何初始化 第四講 單片機驅動彩色液晶屏 控制RA8889軟件:繪圖 第五講 單片機驅動彩色液

    2024年01月22日
    瀏覽(18)
  • 第八講 單片機驅動彩色液晶屏 控制RA8889軟件:顯示圖片

    第八講 單片機驅動彩色液晶屏 控制RA8889軟件:顯示圖片

    目錄 第一講 單片機最小系統(tǒng)STM32F103C6T6通過RA8889驅動彩色液晶屏播放視頻 第二講 單片機最小系統(tǒng)STM32F103C6T6控制RA8889驅動彩色液晶屏硬件框架 第三講 單片機驅動彩色液晶屏 控制RA8889軟件:如何初始化 第四講 單片機驅動彩色液晶屏 控制RA8889軟件:繪圖 第五講 單片機驅動彩色液

    2024年01月22日
    瀏覽(22)
  • 第九講 單片機驅動彩色液晶屏 控制RA8889軟件:顯存操作

    第九講 單片機驅動彩色液晶屏 控制RA8889軟件:顯存操作

    目錄 第一講 單片機最小系統(tǒng)STM32F103C6T6通過RA8889驅動彩色液晶屏播放視頻 第二講 單片機最小系統(tǒng)STM32F103C6T6控制RA8889驅動彩色液晶屏硬件框架 第三講 單片機驅動彩色液晶屏 控制RA8889軟件:如何初始化 第四講 單片機驅動彩色液晶屏 控制RA8889軟件:繪圖 第五講 單片機驅動彩色液

    2024年01月16日
    瀏覽(19)
  • 第十三講 單片機驅動彩色液晶屏 bin檔的燒錄方法

    第十三講 單片機驅動彩色液晶屏 bin檔的燒錄方法

    目錄 第一講 單片機最小系統(tǒng)STM32F103C6T6通過RA8889驅動彩色液晶屏播放視頻 第二講 單片機最小系統(tǒng)STM32F103C6T6控制RA8889驅動彩色液晶屏硬件框架 第三講 單片機驅動彩色液晶屏 控制RA8889軟件:如何初始化 第四講 單片機驅動彩色液晶屏 控制RA8889軟件:繪圖 第五講 單片機驅動彩色液

    2024年02月19日
    瀏覽(29)
  • 【雕爺學編程】Arduino動手做(85)---LCD1602液晶屏模塊7

    【雕爺學編程】Arduino動手做(85)---LCD1602液晶屏模塊7

    37款傳感器與執(zhí)行器的提法,在網(wǎng)絡上廣泛流傳,其實Arduino能夠兼容的傳感器模塊肯定是不止這37種的。鑒于本人手頭積累了一些傳感器和執(zhí)行器模塊,依照實踐出真知(一定要動手做)的理念,以學習和交流為目的,這里準備逐一動手嘗試系列實驗,不管成功(程序走通)

    2024年02月16日
    瀏覽(21)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包