51单片机系列有哪些类型_51单片机1602液晶显示原理

51单片机系列有哪些类型_51单片机1602液晶显示原理Lcd液晶屏幕带有背光显示,可选择蓝光白光黄光三种背光颜色的屏幕,它更具有美光性,在实际生活中有广泛的应用。实物图原理图RS:1为数据/0为指令;RW:1为读/0为写;E1为数据有效,下降沿执行指令示例代码main.c#include”reg52.h” //此文件中定义了单片机的一些特殊功能寄存器#include”lcd.h”typedefunsignedintu16; //对数据类型进行声明定义typedefunsignedcharu8;u8Disp

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

Lcd液晶屏幕带有背光显示,可选择蓝光白光黄光三种背光颜色的屏幕,它更具有美光性,在实际生活中有广泛的应用。
实物图
在这里插入图片描述
原理图
在这里插入图片描述 RS:1为数据/0为指令;RW:1为读/0为写;E1为数据有效,下降沿执行指令

示例代码

main.c

#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
#include "lcd.h"

typedef unsigned int u16;	  //对数据类型进行声明定义
typedef unsigned char u8;

u8 Disp[]=" 5G NBiot At89c52";

/******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/
void main(void)
{ 
   
	u8 i;
	LcdInit();
	for(i=0;i<16;i++)
	{ 
   
		LcdWriteData(Disp[i]);	
	}
	while(1);				
}

lcd.c

#include "lcd.h"
/******************************************************************************* * 函 数 名 : Lcd1602_Delay1ms * 函数功能 : 延时函数,延时1ms * 输 入 : c * 输 出 : 无 * 说 名 : 该函数是在12MHZ晶振下,12分频单片机的延时。 *******************************************************************************/
void Lcd1602_Delay1ms(uint c)   //误差 0us
{ 

uchar a,b;
for (; c>0; c--)
{ 

for (b=199;b>0;b--)
{ 

for(a=1;a>0;a--);
}      
}
}
/******************************************************************************* * 函 数 名 : LcdWriteCom * 函数功能 : 向LCD写入一个字节的命令 * 输 入 : com * 输 出 : 无 *******************************************************************************/
#ifndef LCD1602_4PINS //当没有定义这个LCD1602_4PINS时
void LcdWriteCom(uchar com)	  //写入命令
{ 

LCD1602_E = 0;     //使能
LCD1602_RS = 0;	   //选择发送命令
LCD1602_RW = 0;	   //选择写入
LCD1602_DATAPINS = com;     //放入命令
Lcd1602_Delay1ms(1);		//等待数据稳定
LCD1602_E = 1;	          //写入时序
Lcd1602_Delay1ms(5);	  //保持时间
LCD1602_E = 0;
}
#else 
void LcdWriteCom(uchar com)	  //写入命令
{ 

LCD1602_E = 0;	 //使能清零
LCD1602_RS = 0;	 //选择写入命令
LCD1602_RW = 0;	 //选择写入
LCD1602_DATAPINS = com;	//由于4位的接线是接到P0口的高四位,所以传送高四位不用改
Lcd1602_Delay1ms(1);
LCD1602_E = 1;	 //写入时序
Lcd1602_Delay1ms(5);
LCD1602_E = 0;
LCD1602_DATAPINS = com << 4; //发送低四位
Lcd1602_Delay1ms(1);
LCD1602_E = 1;	 //写入时序
Lcd1602_Delay1ms(5);
LCD1602_E = 0;
}
#endif
/******************************************************************************* * 函 数 名 : LcdWriteData * 函数功能 : 向LCD写入一个字节的数据 * 输 入 : dat * 输 出 : 无 *******************************************************************************/		   
#ifndef LCD1602_4PINS 
void LcdWriteData(uchar dat)			//写入数据
{ 

LCD1602_E = 0;	//使能清零
LCD1602_RS = 1;	//选择输入数据
LCD1602_RW = 0;	//选择写入
LCD1602_DATAPINS = dat; //写入数据
Lcd1602_Delay1ms(1);
LCD1602_E = 1;   //写入时序
Lcd1602_Delay1ms(5);   //保持时间
LCD1602_E = 0;
}
#else
void LcdWriteData(uchar dat)			//写入数据
{ 

LCD1602_E = 0;	  //使能清零
LCD1602_RS = 1;	  //选择写入数据
LCD1602_RW = 0;	  //选择写入
LCD1602_DATAPINS = dat;	//由于4位的接线是接到P0口的高四位,所以传送高四位不用改
Lcd1602_Delay1ms(1);
LCD1602_E = 1;	  //写入时序
Lcd1602_Delay1ms(5);
LCD1602_E = 0;
LCD1602_DATAPINS = dat << 4; //写入低四位
Lcd1602_Delay1ms(1);
LCD1602_E = 1;	  //写入时序
Lcd1602_Delay1ms(5);
LCD1602_E = 0;
}
#endif
/******************************************************************************* * 函 数 名 : LcdInit() * 函数功能 : 初始化LCD屏 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/		   
#ifndef LCD1602_4PINS
void LcdInit()						  //LCD初始化子程序
{ 

LcdWriteCom(0x38);  //开显示
LcdWriteCom(0x0c);  //开显示不显示光标
LcdWriteCom(0x06);  //写一个指针加1
LcdWriteCom(0x01);  //清屏
LcdWriteCom(0x80);  //设置数据指针起点
}
#else
void LcdInit()						  //LCD初始化子程序
{ 

LcdWriteCom(0x32);	 //将8位总线转为4位总线
LcdWriteCom(0x28);	 //在四位线下的初始化
LcdWriteCom(0x0c);  //开显示不显示光标
LcdWriteCom(0x06);  //写一个指针加1
LcdWriteCom(0x01);  //清屏
LcdWriteCom(0x80);  //设置数据指针起点
}
#endif

lcd.h

#ifndef __LCD_H_
#define __LCD_H_
/********************************** 当使用的是4位数据传输的时候定义, 使用8位取消这个定义 **********************************/
//#define LCD1602_4PINS
/********************************** 包含头文件 **********************************/
#include<reg52.h>
//---重定义关键词---//
#ifndef uchar
#define uchar unsigned char
#endif
#ifndef uint 
#define uint unsigned int
#endif
/********************************** PIN口定义 **********************************/
#define LCD1602_DATAPINS P0
sbit LCD1602_E=P2^7;
sbit LCD1602_RW=P2^5;
sbit LCD1602_RS=P2^6;
/********************************** 函数声明 **********************************/
/*在51单片机12MHZ时钟下的延时函数*/
void Lcd1602_Delay1ms(uint c);   //误差 0us
/*LCD1602写入8位命令子函数*/
void LcdWriteCom(uchar com);
/*LCD1602写入8位数据子函数*/	
void LcdWriteData(uchar dat)	;
/*LCD1602初始化子程序*/		
void LcdInit();						  
#endif

效果图

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/192616.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • PostGIS 报错libcrypto[通俗易懂]

    PostGIS 报错libcrypto[通俗易懂]说明在安装完Postgresql以后,打postgis扩展时,报错ERROR:couldnotloadlibrary”/usr/pgsql-12/lib/rtpostgis.so”:/usr/pgsql-12/lib/libpq.so.10:symbolX509_get_signature_nid,versionlibcrypto.so.10notdefinedinfilelibcrypto.so.10withlinktimereference出现问题环境

  • 五子棋 人机对战 思路「建议收藏」

    五子棋 人机对战 思路「建议收藏」五子棋之人机对战思路:1,棋盘与棋子的实现2,玩家下完棋后,计算机要根据当前玩家所下的棋子找出最佳下棋点3,输赢的判断之前已经把人人对战的大概方法实现了,接下要实现的是人机的对战。我的思路如下(当然只是思路哈~还没具体实现呢):其实人机对战就是就在我们下完一步起后,通过电脑分析下一步该走哪,对此做出判断并在最佳的位置上出棋。1,首先需要定义权值,我做…

  • c++ 11 list转set「建议收藏」

    c++ 11 list转set「建议收藏」list<int> li; for(inti=0;i<100;i++){ li.push_back(i); } for(inti=0;i<100;i++){ li.push_back(i); } unordered_set<int> uset(li.begin(),li.end());//用list去初始化s…

  • 导入maven项目总报错,Eclipse中Maven工程缺少Maven Dependencies

    导入maven项目总报错,Eclipse中Maven工程缺少Maven Dependencies原因如果是: Eclipse在引入Maven工程后,找不到MavenDependencies。使得代码报错,具体如下图所示:而正常的maven项目是这样的要解决这样的问题,就是重新加载,使maven的jar导入即可。有多种方法。而这里介绍一超强的方法。如图具体步骤:右击Mavenproject–>Macven–>EnableDependencyMa

  • 较好的Mac激活成功教程软件下载地址「建议收藏」

    较好的Mac激活成功教程软件下载地址「建议收藏」史蒂芬周的博客

    2022年10月10日
  • 手机桌面锁屏时钟_手机锁屏时钟软件

    手机桌面锁屏时钟_手机锁屏时钟软件桌面锁屏时钟是一款专门为用户提供手机便捷的学习生活音乐时钟管理的软件,用户可以在线设置非常简约的界面,自带了时间和日期,查看天气,温度和降噪音播放音乐的功能,利用经典的动态翻页,可以选择丰富的皮肤,让自己体验非常丰富的桌面锁屏,提供了强大的工具箱,可以在线选择闹钟和计时器,辅助自己学习生活,在线能够播放舒适的音乐背景,支持用户在手机上面自己自由定义设置锁屏桌面,可以调节时钟和日期的样式。桌面锁屏时…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号