首页天道酬勤1602液晶显示屏引脚图(51单片机——LCD1602液晶显示屏)

1602液晶显示屏引脚图(51单片机——LCD1602液晶显示屏)

admin 05-28 06:33 279次浏览

下图:红框为液晶屏1602液晶显示屏,他可插拔,插入后数码管乱码失效。 因为他共享MCU的8个P0口

LCD1602原理图

从上面的两幅图可以看出

LCD1602的LCD _ d0至LCD _ D7分别对应于MCU的P00-P07LCD1602的LCD_RS,MCU的P26LCD1602的LCD_RW对应于MCU的P25LCD1602的LCD_E

LCD1602的16个引脚

PC收到41H代码后,前往字码文件,将表示a字的这些数据发送到显卡,点亮画面上的对应点,即可看到“a”字样。

http://www.Sina.com/http://www.Sina.com /

步骤1 (功能设定、8位数据接口、两行显示、5*7点、写入指令0x38

步骤2 :显示设置、显示打开、光标关闭、闪烁关闭、写入命令0x0c

步骤三(输入模式设置,读写数据操作后,光标自动增加一个,屏幕不动,写命令0x06

步骤4 :清除画面,写指令0x01

步骤5 :设置光标位置,即DDRAM地址设置

如果是第1行,则写入命令0x80|(col-1 )

在第2行的情况下,写命令0x80|(col-10x40 )

在此说明,如下图所示,LCD1602只能显示两行。 一行16个。

因此,在第一行中写入指令0x80|(col-1 ),假设col=1。 也就是说,如果用户想在第一行的第一列中写入数据,只需写指令0x80|0x00,在第一行的第二列中写入数据,然后写指令0x80|0x01。

步骤6 :写下a这个数据,将P0端口直接代入a即可

A在5*7点阵的字模

Delay.h

# ifndef _ delay _ h _ # define _ _ delay _ h _ _ void delay (unsignedintxms ); #endif Delay.c

voidDelay(unsignedintXMS ) {unsigned char i,j; wile(XMS---- ) I=2; j=239; do{while (--j ); (while(--I ); }} LCD1602.h

# ifndef _ LCD 1602 _ h _ _ # define _ _ LCD 1602 _ h _//用户调用函数: void LCD_Init (; void LCD _ show char (unsigned charline,unsigned char Column,char Char ); void LCD _ showstring (unsigned charline,unsigned char Column,char *String ); void LCD _ shownum (unsigned charline,unsigned char Column,unsigned int Number,unsigned char Length ); void LCD _ showsignednum (未指定字符线,未指定字符列,int Number,未指定字符长度); void LCD _ showhexnum (unsigned char line,unsigned char Column,unsigned int Number,unsigned char Length ); void LCD _ show binnum (unsigned charline,unsigned char Column,unsigned int Number,unsigned char Length ); # endif液晶屏1602.c

# include regx 52.h # include delay.h//针脚配置: sbit LCD_RS=P2^6; sbit LCD_RW=P2^5; sbit LCD_EN=P2^7; # define LCD _ data port p0/* * @ brief LCD 1602刻录命令* @param Command刻录命令* @无retval */void LCD _ write command (unsss LCD_DataPort=Command; LCD_EN=1; dlay(1; LCD_EN=0; dlay(1; }/** * @brief LCD1602写入数据* @param Data写入数据* @无retval */void LCD _ write data (unsignedchardata ) {LCD_RS=1 LCD_RW=0; 液晶屏_数据端口=数据; LCD_EN=1; dlay(1; LCD_EN=0; dlay(1; }/** * @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 if(Line==2){LCD_WriteCommand(0x80|(Column-1+0x40));}}/** * @brief LCD1602初始化函数 * @param 无 * @retval 无 */void LCD_Init(){LCD_WriteCommand(0x38);//八位数据接口,两行显示,5*7点阵LCD_WriteCommand(0x0c);//显示开,光标关,闪烁关LCD_WriteCommand(0x06);//数据读写操作后,光标自动加一,画面不动LCD_WriteCommand(0x01);//光标复位,清屏}/** * @brief 在LCD1602指定位置上显示一个字符 * @param Line 行位置,范围:1~2 * @param Column 列位置,范围:1~16 * @param Char 要显示的字符 * @retval 无 */void LCD_ShowChar(unsigned char Line,unsigned char Column,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,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指定位置开始显示所给数字 * @param Line 起始行位置,范围:1~2 * @param Column 起始列位置,范围:1~16 * @param Number 要显示的数字,范围:0~65535 * @param Length 要显示数字的长度,范围: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(Number/LCD_Pow(10,i-1)%10+'0');}}/** * @brief 在LCD1602指定位置开始以有符号十进制显示所给数字 * @param Line 起始行位置,范围:1~2 * @param Column 起始列位置,范围:1~16 * @param Number 要显示的数字,范围:-32768~32767 * @param Length 要显示数字的长度,范围: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(Number1/LCD_Pow(10,i-1)%10+'0');}}/** * @brief 在LCD1602指定位置开始以十六进制显示所给数字 * @param Line 起始行位置,范围:1~2 * @param Column 起始列位置,范围:1~16 * @param Number 要显示的数字,范围:0~0xFFFF * @param Length 要显示数字的长度,范围:1~4 * @retval 无 */void LCD_ShowHexNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length){unsigned char i,SingleNumber;LCD_SetCursor(Line,Column);for(i=Length;i>0;i--){SingleNumber=Number/LCD_Pow(16,i-1)%16;if(SingleNumber<10){LCD_WriteData(SingleNumber+'0');}else{LCD_WriteData(SingleNumber-10+'A');}}}/** * @brief 在LCD1602指定位置开始以二进制显示所给数字 * @param Line 起始行位置,范围:1~2 * @param Column 起始列位置,范围:1~16 * @param Number 要显示的数字,范围:0~1111 1111 1111 1111 * @param Length 要显示数字的长度,范围: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(Number/LCD_Pow(2,i-1)%2+'0');}}

main.c

#include <REGX52.H>#include "LCD1602.h"//包含LCD1602头文件void main(){LCD_Init();LCD_ShowChar(1,1,'A');}

结果:

百度网盘
51单片机系列文章所有文件内容都在此处
链接:https://pan.baidu.com/s/1iVir85WO_usDPxmyZ0qDIg
提取码:4spe

JavaWeb之MVC三层架构分布式版Redis架构 云内存 UMem Redis继承Java_StringIndexOutOfBoundsException异常SpringBoot数据层测试事务回滚的实现流程Spring Boot 集成 Jasypt 实现敏感信息加密
c语言中序遍历二叉树的非递归算法(c语言二叉树排序最优算法,c语言。二叉树排序算法) lcd1602液晶显示实验报告(C语言LCD1602液晶实验报告,LCD1602液晶显示实验报告.doc)
相关内容