51单片机驱动——LCD1602

1.描述

51单片机控制LCD1602屏幕显示测量数据、固定字符串等,大家复制过去可以直接使用,相关注释我已标明。

2.子文件

LCD1602.c

#include "LCD1602.h"
#include<reg52.h>
#include<intrins.h>sbit RS = P1^1;   //定义端口
sbit RW = P1^2;
sbit EN = P1^3;#define RS_CLR RS=0
#define RS_SET RS=1#define RW_CLR RW=0
#define RW_SET RW=1 #define EN_CLR EN=0
#define EN_SET EN=1#define DataPort P0void DelayUs2x(unsigned char t)
{   while(--t);
}
/*------------------------------------------------mS延时函数,含有输入参数 unsigned char t,无返回值unsigned char 是定义无符号字符变量,其值的范围是0~255 这里使用晶振12M,精确延时请使用汇编
------------------------------------------------*/
void DelayMs(unsigned char t)
{while(t--){//大致延时1mSDelayUs2x(245);DelayUs2x(245);}
}
/*------------------------------------------------判忙函数
------------------------------------------------*/bit LCD_Check_Busy(void) { RS_CLR; RW_SET; EN_CLR; _nop_(); EN_SET;return (bit)(DataPort & 0x80);//0x80;0x00}
/*------------------------------------------------写入命令函数
------------------------------------------------*/void LCD_Write_Com(unsigned char com) {  while(LCD_Check_Busy()); //忙则等待RS_CLR; RW_CLR; EN_SET; DataPort= com; _nop_(); EN_CLR;}
/*------------------------------------------------写入数据函数
------------------------------------------------*/void LCD_Write_Data(unsigned char Data) { while(LCD_Check_Busy()); //忙则等待RS_SET; RW_CLR; EN_SET; DataPort= Data; _nop_();EN_CLR;}/*------------------------------------------------清屏函数
------------------------------------------------*/void LCD_Clear(void) { LCD_Write_Com(0x01); DelayMs(5);}
/*------------------------------------------------写入字符串函数
------------------------------------------------*/void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) {     if (y == 0) {     LCD_Write_Com(0x80 + x);     //表示第一行}else {      LCD_Write_Com(0xC0 + x);      //表示第二行}        while (*s) {     LCD_Write_Data( *s);     s ++;     }}
/*------------------------------------------------写入字符函数
------------------------------------------------*/void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data) {     if (y == 0)     //设置坐标{     LCD_Write_Com(0x80 + x);     }    else {     LCD_Write_Com(0xC0 + x);     }        LCD_Write_Data( Data);  }
/*------------------------------------------------初始化函数
------------------------------------------------*/void LCD_Init(void) {LCD_Write_Com(0x38);    /*显示模式设置*/ DelayMs(5); LCD_Write_Com(0x38); DelayMs(5); LCD_Write_Com(0x38); DelayMs(5); LCD_Write_Com(0x38);  LCD_Write_Com(0x08);    /*显示关闭*/ LCD_Write_Com(0x01);    /*显示清屏*/ LCD_Write_Com(0x06);    /*显示光标移动设置*/ DelayMs(5); LCD_Write_Com(0x0C);    /*显示开及光标设置*/}

LCD1602.h

#ifndef __LCD1602_H__
#define __LCD1602_H__
#include<reg52.h>void LCD_Clear(void);
void LCD_Init(void);
void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s);#endif

3.调用举例

main.c

#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#include<intrins.h>
#include "lcd1602.h"unsigned char  String_Show_V[]={"TEM:"};//用于固定字符显示
unsigned char  Display_Temp[]={"000000"};//定义一个6位长度的字符串,用于测量数据的动态显示
unsigned char code table_num[] = {"0123456789"};//一个标准的字符数组,用于后面的计算幅值/*******************************************************
函数名称:   void Displayy_LCD_TEMP(int temperature)
函数描述:    将int类型的数据转换成对应的字符串,用于显示
入口参数:    int 类型的数据
返回参数:    无
*******************************************************/
void Displayy_LCD_TEMP(int temperature)
{                         Display_Temp[0]=table_num[temperature/10000];Display_Temp[1]=table_num[temperature%10000/1000];Display_Temp[2]=table_num[temperature%1000/100];Display_Temp[3]='.';//根据实际情况设定小数点的位置 Display_Temp[4]=table_num[temperature%100/10];Display_Temp[5]=table_num[temperature%10];LCD_Write_String(0,0,String_Show_V); //调用封装好的函数显示固定的字符串LCD_Write_String(5,0,Display_Temp);    //将转换后存在字符串的数据显示出来}void main(void)
{LCD_Init();
LCD_Clear();//清屏
while (1) { Displayy_LCD_TEMP(Temper_change());//Temper_change()为温度检测函数,用来控制DS18B20检测环境温度,其返回值为一个int类型的数据。感兴趣可以查看DS18B20驱动的那篇博文哈。}
}

51单片机驱动——LCD1602相关推荐

  1. 51单片机+驱动LCD1602模板范例+Proteus仿真

    51单片机+驱动LCD1602模板范例+Proteus仿真 本示例可以作为驱动LCD1602屏幕模板来调用或使用,方便移植到其他需要使用到LCD1602显示上的工程项目当中.所以示例不涉及过多其他的代 ...

  2. 基于51单片机驱动HC-SR04超声波模块(LCD1602显示)

    基于51单片机驱动HC-SR04超声波模块(LCD1602显示) 一.基本参数 二.通信时序 三.部分代码展示 四.实际效果 总结 一.基本参数 点击图片购买 HC- SR04+是一款宽电压工作的超声 ...

  3. 基于51单片机驱动ADXL346 (LCD1602显示)

    基于51单片机驱动ADXL346 (LCD1602显示) 一.ADXL346传感器介绍 1.实物图 2.产品说明 3.电气参数 4.通信协议 二.驱动代码 1.引脚定义 2.初始化函数 3.主函数 三 ...

  4. 基于51单片机的LCD1602显示温湿度

    51单片机基础难点知识理解后,直接通过下面3个小项目可以更好理解51单片机.中断 定时器 串口甚至是基础的IO输入输出都有结合,再加上一些外设模块的学习(如1602显示屏,L298N电机驱动等) 项目 ...

  5. 51单片机用c语言在液晶1602上显示汉字,lcd1602与单片机连接图,基于51单片机的lcd1602液晶显示屏连接电路图...

    描述 LCD1602是一种工业字符型液晶,能够同时显示16x02即32个字符.LCD1602液晶显示原理 LCD1602液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示, ...

  6. 安卓app+esp8266+51单片机+光敏电阻+lcd1602实现智能照明系统

    本文是本人51单片机和物联网的期末课程设计,没学过打板焊接,只用面包板和公母线实现. 安卓和esp8266控灯主要参考Android Studio设计APP实现与51单片机通过WIFI模块(ESP82 ...

  7. c语言编程TLC2543AD采集,51单片机驱动12位AD转换TLC2543电路图+程序

    51单片机驱动12位AD转换TLC2543电路图+程序 2015-06-18 16:51:15   来源:51hei void resultvolt() { volt=volt*5000.0/4334 ...

  8. 51单片机控制LCD1602模块

    51单片机控制LCD1602模块 视频播放:LCD1602视频 (1)LCD1602概述 先来看看LCD1602什么意思?Liquid Crystal Display(LCD)表示液晶显示,1602 ...

  9. 51单片机与LCD1602接口电路与程序

    51单片机与LCD1602接口电路与程序 一.工作方式:间接工作方式. 二.实现功能:显示"Hope the epidemic will pass soon". 三.仿真电路图: ...

最新文章

  1. 除了专业的代码书籍,这8本书,或许对你也有用!
  2. Spring MVC--使用fastjson替换jackson来响应json数据
  3. 服务器端与客户端TCP连接入门(三:多线程)
  4. 【Android 修炼手册】常用技术篇 -- Android 自定义 View
  5. 【DI专题】在 DI 脚本文件中调用存储过程
  6. JQuery系列(4) - AJAX方法
  7. linux 服务器(CentOS7)搭建PHP环境+SSH配置+服务器文件上传配置
  8. java 程序更新_如何关闭JAVA更新程序
  9. php 修改多级菜单,用PHP实现多级树型菜单
  10. 报表工具之JasperReports+iReport(1)
  11. linux和redis笔记,Redis学习笔记一(Redis的详细安装及Linux环境变量配置和启动)...
  12. “内”忧“外”患,3 万台 Mac 有危险!
  13. 设计模式精髓—封装变化
  14. antd自定义样式主题
  15. 天嵌科技——TQIMX6Q光盘8月更新说明
  16. C语言——整数各位数字求和
  17. Cmd命令行实验4-ARP
  18. firefox插件grease_monkey
  19. 微信小程序二维码识别
  20. 不用写代码的Android 2D RPG游戏引擎

热门文章

  1. Linux exec函数
  2. 程序员必须学会的《软技能》
  3. Netscape与IE的浏览器之争
  4. Ring3无敌进程让你的进程变得和smss.exe一样支持64
  5. matlab6.0哪一年,MATLAB版本与年份间的对应关系
  6. Tensorflow API 讲解——tf.estimator.Estimator
  7. 设计原则——接口隔离原则
  8. 关于单相变频电源及变频电路部分介绍
  9. 综合架构-高可用服务
  10. 安全认证宇宙之用户认证0x01