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);  //写一个指针加1LcdWriteCom(0x01);  //清屏LcdWriteCom(0x80);  //设置数据指针起点
}
#else
void LcdInit()                        //LCD初始化子程序
{LcdWriteCom(0x32);  //将8位总线转为4位总线LcdWriteCom(0x28);     //在四位线下的初始化LcdWriteCom(0x0c);  //开显示不显示光标LcdWriteCom(0x06);  //写一个指针加1LcdWriteCom(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

效果图

51单片机系列--LCD1602A相关推荐

  1. 51单片机系列(三)51 单片机游戏设计 —— 双人对战小游戏(石头剪刀布)

    本博客51单片机实训系列,旨在记录本人在大学上单片机技术这门课时所做的课程实训内容,并与大家分享基于51单片的课程作业,如果作业中的某些细节和代码能给大家一点启发那就更好了,希望大家能用51单片机做出 ...

  2. 51单片机系列--基础知识

    51单片机系列--基础知识 主要参数及功能 引脚及功能 工作时序 主要参数及功能 (1)8位CPU (2)4KB程序存储器(ROM) (3)128字节的数据存储器(RAM) (4)32条 I/O 口线 ...

  3. 51单片机系列——基础指令

    这学期开始学习51单片机,感觉比汇编简单,关键是51的汇编有一个好的ide,练习起来也比较方便,这个系列主要记录51的学习经验.下面是基础指令的练习: org 0000h     ljmp main ...

  4. 51单片机系列--闪烁灯,呼吸灯与流水灯

    51单片机是对兼容英特尔8051指令系统的单片机的统称.51单片机广泛应用于家用电器.汽车.工业测控.通信设备中.因为51单片机的指令系统.内部结构相对简单,所以国内许多高校用其进行单片机入门教学. ...

  5. Proteus仿真及应用——51单片机系列

    Proteus简单操作 1. 绘制最小系统 2. 流水灯 3. 实现流水灯的通用方法 4.数码管显示 4.1静态显示:每个数码管与一组I/O口相连,全部亮. 4.2动态显示:段选线由==一组==I/O ...

  6. 51单片机系列--1WrieDS18B20温度模块

    DS18B20是一种常见的数字温度传感器,其控制命令和数据都是以数字信号的方式输入输出,相比较于模拟温度传感器,具有功能强大.硬件简单.易扩展.抗干扰性强等特点 测温范围:-55°C 到 +125°C ...

  7. 51单片机系列--直流电机

    直流电机是一种将电能转换为机械能的装置.一般的直流电机有两个电极,当电极正接时,电机正转,当电极反接时,电机反转.直流电机主要由永磁体(定子).线圈(转子)和换向器组成,除直流电机外,常见的电机还有步 ...

  8. 51单片机系列--AT24C02(总线)

    存储器介绍 易失性存储器/RAM 非易失性存储器/ROM SRAM(静态RAM) Mask ROM(掩膜ROM) DRAM(动态RAM) PROM(可编程ROM) EPROM(可擦除可编程ROM ) ...

  9. 51单片机系列知识5--并口(2)

    2.P1口 P1口对应的专用寄存器的助记符是P1,它是一个8位的专用寄存器,字节地址是90H,它的每一位都有位地址,可以对位进行直接访问. PI口的位结构如图2-20所示.P1口也是准双向口,它的用途 ...

最新文章

  1. 正点原子串口函数分析
  2. 用python计算两个二维list依据第二维的前一个数据相加
  3. 在c++中使用gotoxy
  4. BugkuCTF-Crypto题rsa
  5. 云虚机php.ini在,虚拟主机php.ini在哪
  6. 一个关于从1到100的加法算法
  7. 基于检索的自然语言处理模型研究梳理
  8. 基于UCenter关联第三方网站与Discuz用户
  9. python信号处理的优点_python 信号处理
  10. HTML5 植物大战僵尸项目介绍 和源码分析
  11. 【Java基础】建立Java面向对象编程OOP模型
  12. 重装系统找不到固态_安装Win10系统没有固态硬盘(双硬盘找不到固态硬盘)怎么解决?...
  13. SpringBoot 深入浅出
  14. docker安装mssql
  15. vant上传图片 转二进制_土旦:移动端 Vue+Vant 的Uploader 实现 :上传、压缩、旋转图片-Go语言中文社区...
  16. 揭开CVE漏洞挖掘与编号申请那层神秘窗户纸
  17. Java + 腾讯企业邮箱 + javamail + SSL 发送邮件(转载:http://www.cnblogs.com/LUA123/p/5575134.html)
  18. 西南交通大学linux内核,GitHub - Laotree/SWJTU-Developer: 西南交通大学开发者社区——为交大开发者提供交流的平台...
  19. 问道手游《新手怎么玩转押镖流》
  20. 传智播客php电商项目源码,shop thinkphp写的电子商城代码,原 为传智播客的教学 源码 WEB(ASP,PHP,...) 256万源代码下载- www.pudn.com...

热门文章

  1. 2020年,iOS开发面试跳槽(必看攻略)
  2. bzoj3056 升降梯口(组合数学+模拟)
  3. 机器学习真能产生智能决策吗?
  4. python 股票自动交易助手_学习 Python 看这一篇就够了!
  5. 做一个“盯盘机器人”,实时监控股票价格并通知你!
  6. CRC16 计算函数
  7. 基于微信小程序的便捷记账本小程序-计算机毕业设计
  8. PAN3020 Sub-1G无线收发芯片
  9. urllib.quote
  10. 本草纲目pdf彩图版下载_本草纲目彩色图谱下载