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

51單片機LCD1602的使用

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

前言

本篇文章將為大家講解LCD1602的使用方法。

一、LCD1602簡單介紹

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

二、LCD1602中各個引腳的作用

LCD1602的引腳有VSS、VDD、VO、RS、RW、E、D0-D7等。VSS和VDD分別為電源正負極;VO為顯示屏的背光控制引腳;RS、RW、E分別為控制字符顯示和數(shù)據(jù)讀寫的控制引腳;D0-D7為數(shù)據(jù)傳輸?shù)囊_。

四、LCD1602命令解析

對于如何寫命令我們直接看到數(shù)據(jù)手冊就可以了。無論是寫命令還是寫數(shù)據(jù)我們只需要關注RS,R/W,E這幾個引腳的電平即可。

1.寫命令

當RS=0時代表輸入指令。
R/W=0時代表向LCD寫入指令或數(shù)據(jù)。
E是使能信號當E從1變?yōu)?時也就是下降沿會執(zhí)行指令。
51單片機LCD1602的使用
這里直接將要執(zhí)行的命令寫入LCD1602對應的數(shù)據(jù)端口即可。
寫入后讓E發(fā)生一個下降沿執(zhí)行寫入的指令。

void lcd1602_write_cmd(u8 cmd)
{
	LCD1602_RS=0;//選擇命令
	LCD1602_RW=0;//選擇寫
	LCD1602_E=0;
	LCD1602_DATAPORT=cmd;//準備命令
	delay_ms(1);
	LCD1602_E=1;//使能腳E先上升沿寫入
	delay_ms(1);
	LCD1602_E=0;//使能腳E后負跳變完成寫入	
}

2.寫數(shù)據(jù)

當RS=1時代表輸入指令。
R/W=0時代表向LCD寫入指令或數(shù)據(jù)。
E是使能信號當E從1變?yōu)?時也就是下降沿會執(zhí)行指令。
其實寫數(shù)據(jù)和寫命令的函數(shù)只是需要注意RS的電平即可,其他代碼原理都是一樣的。

void lcd1602_write_data(u8 dat) 
{
	LCD1602_RS=1;//選擇數(shù)據(jù)
	LCD1602_RW=0;//選擇寫
	LCD1602_E=0;
	LCD1602_DATAPORT=dat;//準備數(shù)據(jù)
	delay_ms(1);
	LCD1602_E=1;//使能腳E先上升沿寫入
	delay_ms(1);
	LCD1602_E=0;//使能腳E后負跳變完成寫入		
}

3.清屏指令

51單片機LCD1602的使用
根據(jù)手冊可以知道只需要往數(shù)據(jù)端口寫入0x01即可達到清屏效果。

void lcd1602_clear(void)
{
	lcd1602_write_cmd(0x01);	
}

4.光標歸位指令

51單片機LCD1602的使用
光標歸位指令寫入0x02即可。

void lcd1602_CursorReset(void)
{
	lcd1602_write_cmd(0x02);	
}

5.進入模式設置指令

51單片機LCD1602的使用
將DB1設置為1每次寫入一個字符后光標右移。
S=0寫入數(shù)據(jù)后顯示屏不移動。

void lcd1602_CursorReset(void)
{
	lcd1602_write_cmd(0x06);	//寫入新數(shù)據(jù)后光標右移,顯示屏不移動
}

6.顯示開關控制指令

51單片機LCD1602的使用
這里看自己的需求設置對應的指令。

7.設定顯示屏或光標移動方向指令

51單片機LCD1602的使用
字體左移

void lcd1602_LeftMove(void)
{
	lcd1602_write_cmd(0x18);	
}

字體右移

void lcd1602_RightMove(void)
{
	lcd1602_write_cmd(0x1c);	
}

三、LCD1602代碼編寫

lcd1602.c

這里使用普中的代碼進行講解。
這里使用的lcd1602是8位的,在lcd1602.h定義了一個宏來決定。

#include "lcd1602.h"


/*******************************************************************************
* 函 數(shù) 名       : lcd1602_write_cmd
* 函數(shù)功能		 : LCD1602寫命令
* 輸    入       : cmd:指令
* 輸    出    	 : 無
*******************************************************************************/
#if (LCD1602_4OR8_DATA_INTERFACE==0)//8位LCD
void lcd1602_write_cmd(u8 cmd)
{
	LCD1602_RS=0;//選擇命令
	LCD1602_RW=0;//選擇寫
	LCD1602_E=0;
	LCD1602_DATAPORT=cmd;//準備命令
	delay_ms(1);
	LCD1602_E=1;//使能腳E先上升沿寫入
	delay_ms(1);
	LCD1602_E=0;//使能腳E后負跳變完成寫入	
}
#else	//4位LCD
void lcd1602_write_cmd(u8 cmd)
{
	LCD1602_RS=0;//選擇命令
	LCD1602_RW=0;//選擇寫
	LCD1602_E=0;
	LCD1602_DATAPORT=cmd;//準備命令
	delay_ms(1);
	LCD1602_E=1;//使能腳E先上升沿寫入
	delay_ms(1);
	LCD1602_E=0;//使能腳E后負跳變完成寫入
	
	LCD1602_DATAPORT=cmd<<4;//準備命令
	delay_ms(1);
	LCD1602_E=1;//使能腳E先上升沿寫入
	delay_ms(1);
	LCD1602_E=0;//使能腳E后負跳變完成寫入	
}
#endif

/*******************************************************************************
* 函 數(shù) 名       : lcd1602_write_data
* 函數(shù)功能		 : LCD1602寫數(shù)據(jù)
* 輸    入       : dat:數(shù)據(jù)
* 輸    出    	 : 無
*******************************************************************************/
#if (LCD1602_4OR8_DATA_INTERFACE==0)//8位LCD
void lcd1602_write_data(u8 dat) 
{
	LCD1602_RS=1;//選擇數(shù)據(jù)
	LCD1602_RW=0;//選擇寫
	LCD1602_E=0;
	LCD1602_DATAPORT=dat;//準備數(shù)據(jù)
	delay_ms(1);
	LCD1602_E=1;//使能腳E先上升沿寫入
	delay_ms(1);
	LCD1602_E=0;//使能腳E后負跳變完成寫入		
}
#else
void lcd1602_write_data(u8 dat) 
{
	LCD1602_RS=1;//選擇數(shù)據(jù)
	LCD1602_RW=0;//選擇寫
	LCD1602_E=0;
	LCD1602_DATAPORT=dat;//準備數(shù)據(jù)
	delay_ms(1);
	LCD1602_E=1;//使能腳E先上升沿寫入
	delay_ms(1);
	LCD1602_E=0;//使能腳E后負跳變完成寫入
	
	LCD1602_DATAPORT=dat<<4;//準備數(shù)據(jù)
	delay_ms(1);
	LCD1602_E=1;//使能腳E先上升沿寫入
	delay_ms(1);
	LCD1602_E=0;//使能腳E后負跳變完成寫入		
}
#endif

/*******************************************************************************
* 函 數(shù) 名       : lcd1602_init
* 函數(shù)功能		 : LCD1602初始化
* 輸    入       : 無
* 輸    出    	 : 無
*******************************************************************************/
#if (LCD1602_4OR8_DATA_INTERFACE==0)//8位LCD
void lcd1602_init(void)
{
	lcd1602_write_cmd(0x38);//數(shù)據(jù)總線8位,顯示2行,5*7點陣/字符
	lcd1602_write_cmd(0x0c);//顯示功能開,無光標,光標閃爍
	lcd1602_write_cmd(0x06);//寫入新數(shù)據(jù)后光標右移,顯示屏不移動
	lcd1602_write_cmd(0x01);//清屏	
}
#else
void lcd1602_init(void)
{
	lcd1602_write_cmd(0x28);//數(shù)據(jù)總線4位,顯示2行,5*7點陣/字符
	lcd1602_write_cmd(0x0c);//顯示功能開,無光標,光標閃爍
	lcd1602_write_cmd(0x06);//寫入新數(shù)據(jù)后光標右移,顯示屏不移動
	lcd1602_write_cmd(0x01);//清屏	
}
#endif

/*******************************************************************************
* 函 數(shù) 名       : lcd1602_clear
* 函數(shù)功能		 : LCD1602清屏
* 輸    入       : 無
* 輸    出    	 : 無
*******************************************************************************/
void lcd1602_clear(void)
{
	lcd1602_write_cmd(0x01);	
}

/*******************************************************************************
* 函 數(shù) 名       : lcd1602_show_string
* 函數(shù)功能		 : LCD1602顯示字符
* 輸    入       : x,y:顯示坐標,x=0~15,y=0~1;
				   str:顯示字符串
* 輸    出    	 : 無
*******************************************************************************/
void lcd1602_show_string(u8 x,u8 y,u8 *str)
{
	u8 i=0;

	if(y>1||x>15)return;//行列參數(shù)不對則強制退出

	if(y<1)	//第1行顯示
	{	
		while(*str!='\0')//字符串是以'\0'結(jié)尾,只要前面有內(nèi)容就顯示
		{
			if(i<16-x)//如果字符長度超過第一行顯示范圍,則在第二行繼續(xù)顯示
			{
				lcd1602_write_cmd(0x80+i+x);//第一行顯示地址設置	
			}
			else
			{
				lcd1602_write_cmd(0x40+0x80+i+x-16);//第二行顯示地址設置	
			}
			lcd1602_write_data(*str);//顯示內(nèi)容
			str++;//指針遞增
			i++;	
		}	
	}
	else	//第2行顯示
	{
		while(*str!='\0')
		{
			if(i<16-x) //如果字符長度超過第二行顯示范圍,則在第一行繼續(xù)顯示
			{
				lcd1602_write_cmd(0x80+0x40+i+x);	
			}
			else
			{
				lcd1602_write_cmd(0x80+i+x-16);	
			}
			lcd1602_write_data(*str);
			str++;
			i++;	
		}	
	}				
}

lcd1602.h

#ifndef _lcd1602_H
#define _lcd1602_H

#include "public.h"

//LCD1602數(shù)據(jù)口4位和8位定義,若為1,則為LCD1602四位數(shù)據(jù)口驅(qū)動,反之為8位
#define LCD1602_4OR8_DATA_INTERFACE	0	//默認使用8位數(shù)據(jù)口LCD1602

//管腳定義
sbit LCD1602_RS=P2^6;//數(shù)據(jù)命令選擇
sbit LCD1602_RW=P2^5;//讀寫選擇
sbit LCD1602_E=P2^7; //使能信號
#define LCD1602_DATAPORT P0	//宏定義LCD1602數(shù)據(jù)端口


//函數(shù)聲明
void lcd1602_init(void);
void lcd1602_clear(void);
void lcd1602_show_string(u8 x,u8 y,u8 *str);

#endif

四、代碼測試

這里我們實現(xiàn)了LCD1602左移顯示。

void main()
{	
	lcd1602_init();//LCD1602初始化

	while(1)
	{
		lcd1602_show_string(0,0,"Hello World!");//第一行顯示
		lcd1602_show_string(0,1,"0123456789");//第二行顯示
		lcd1602_write_cmd(0x18);
		
		delay_ms(1000);
	}	
}

總結(jié)

LCD1602是一種液晶顯示器,可以用于顯示文本和圖形信息。它具有低功耗,高分辨率和易于使用的特點,可以用于多種應用,如計算機控制、液晶顯示器、汽車儀表板等。它可以用于顯示漢字、英文字符、圖形和數(shù)字,可以實現(xiàn)更高的效率和速度。
使用LCD1602可以幫助我們實現(xiàn)非常多的功能,使用他我們可以制作電子時鐘,密碼鎖等小項目,希望大家好好理解這個模塊。文章來源地址http://www.zghlxwxcb.cn/news/detail-460763.html

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

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

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

相關文章

  • 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第二行前兩位就會顯示對應按鍵按下的數(shù)字。 在鍵盤中按鍵數(shù)量較多時,為了減少I/O口的占用,通常將按鍵排列成矩陣形式 采用

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

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

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

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

    MCU-51:單片機LCD1602詳解

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

    2023年04月09日
    瀏覽(27)
  • 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是一個比較常用的單片機顯示外設,下面我們從它的顯示原理,來分析用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單片機之程序模塊化_學習筆記吧的博客-CSDN博客這里可以學習。 實驗程序: LCD1602.c文件代碼: LCD1602.h文件代碼: 把這兩個代碼,分別添加到LCD1602.c 和 LCD1602.h 文件,然后添加

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

    51單片機學習筆記-12LCD1602液晶屏

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

    2024年02月11日
    瀏覽(32)
  • 基于51單片機驅(qū)動MPU6050模塊(LCD1602顯示)

    基于51單片機驅(qū)動MPU6050模塊(LCD1602顯示)

    @TOC MPU-6050集成了3軸MEMS陀螺儀,3軸MEMS加速度計,以及一個可擴展的數(shù)字運動處理器DMP,可用IIC接口連接一個第三方的數(shù)字傳感器。MPU-6050對陀螺儀和加速度計分別用了三個16位的ADC,將其測量的模擬量轉(zhuǎn)化為可輸出的數(shù)字量。為了精確跟蹤快速和慢速的運動,傳感器的測量范

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

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

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

    2024年02月01日
    瀏覽(23)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包