LCD作为显示屏是单片机工作返回数据最直观的体现。

下面将以模块化编程的思想调用LCD进行显示。

如下代码就是LCD的模块,显示时调用即可;

#include <REGX52.H>sbit LCD_RS=P2^6;
sbit LCD_RW=P2^5;
sbit LCD_EN=P2^7;
#define LCD_DataPort P0void LCD_Delay()
{unsigned char i, j;i = 2;j = 239;do{while (--j);} while (--i);
}void LCD_WriteCommand(unsigned char Command)
{LCD_RS=0;LCD_RW=0;LCD_DataPort=Command;LCD_EN=1;LCD_Delay();LCD_EN=0;LCD_Delay();
}void LCD_WriteData(unsigned char Data)
{LCD_RS=1;LCD_RW=0;LCD_DataPort=Data;LCD_EN=1;LCD_Delay();LCD_EN=0;LCD_Delay();
}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));}
}void LCD_Init()
{LCD_WriteCommand(0x38);LCD_WriteCommand(0x0c);LCD_WriteCommand(0x06);LCD_WriteCommand(0x01);
}void LCD_ShowChar(unsigned char Line,unsigned char Column,char Char)
{LCD_SetCursor(Line,Column);LCD_WriteData(Char);
}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]);}
}int LCD_Pow(int X,int Y)
{unsigned char i;int Result=1;for(i=0;i<Y;i++){Result*=X;}return Result;
}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');}
}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');}
}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');}}
}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');}
}

当然考虑到显示屏更新显示时速度较快,人眼不能识别出来,所以还有一个延迟函数,用于消隐(这里就不书写了,前一章有)以下是主函数调用的方法:LCD1602的.h文件

#ifndef __LCD1602_H__
#define __LCD1602_H__void LCD_Init();
void LCD_ShowChar(unsigned char Line,unsigned char Column,char Char);// (1,1,'A')显示一个字符;一行:一列:字符
void LCD_ShowString(unsigned char Line,unsigned char Column,char *String);//(1,3,"Hello")显示字符串;若超出那一排则会缺失;
void LCD_ShowNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length);//(1,9,123,3)显示十进制数字;最后的“3”是指显示数字的长度(因为定义类型为0~65535所以范围是1~5),本例子若最后一位为“2”则不显示最高位即为“23”;
void LCD_ShowSignedNum(unsigned char Line,unsigned char Column,int Number,unsigned char Length);//(1,13,-66,2)显示有符号十进制数字;符号不算在“2”中,但符号显示是从13位开始;
void LCD_ShowHexNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length);//(2,1,0xA8,2)显示十六进制数字;
void LCD_ShowBinNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length);//(2,4,0xAA,8)显示二进制数字;#endif

主函数:

#include <REGX52.H>
#include "LCD1602.h"
#include "Delay.h"int Result=0;void main()
{LCD_INit();LCD_ShowChar(1,1,'A');LCD_ShowString(1,3,"Hello");LCD_ShowNum(1,9,123,3);LCD_ShowSignedNum(1,13,-66,2);LCD_ShowHexNum(2,1,0xA8,2);LCD_ShowBinNum(2,4,0xAA,8);while(1){Result=Result+1;LCD_ShowNum(2,14,Result,3);Delay(1000);}
}

LCD1602调试工具相关推荐

  1. AutoLeader控制组——51单片机学习笔记(一)

    目录 1.点亮LED灯 1.1LED灯闪烁 1.2控制LED灯按时闪烁: 1.3 LED灯流水灯 1.4二进制点灯 2.独立按键控制LED灯 2.1按键控制LED亮灭 2.2.按键控制灯左右移动 3. ...

  2. 51单片机学习笔记-3模块化编程

    3 模块化编程 [toc] 注:笔记主要参考B站江科大自化协教学视频"51单片机入门教程-2020版 程序全程纯手打 从零开始入门". 注:工程及代码文件放在了本人的Github仓 ...

  3. 51单片机学习-5定时器与中断

    5 定时器与中断 [toc] 注:笔记主要参考B站江科大自化协教学视频"51单片机入门教程-2020版 程序全程纯手打 从零开始入门". 注:工程及代码文件放在了本人的Github ...

  4. 嵌入式入门之51单片机

    前言 本篇文章属于学习笔记,来源于B站教学视频,相关代码工程请从源地址自行下载.这位Up讲解得很好,适合同学们一起学习,在这里推荐给大家.本文为个人学习笔记,只能做参考,细节方面建议观看视频,肯定受益 ...

  5. b站江科大自化协51单片机入门教程笔记(1)

    文章目录 1 综述 2-1 点亮一个LED 2-2 LED闪烁 2-3 LED流水灯 2-4 LED流水灯PLus 3-1 独立按键控制LED亮灭 3-2 独立按键控制LED状态 3-3 独立按键控制 ...

  6. 89c52串口通信+LCD1602显示

    接下来我们捡起来lcd1602的显示 与串口通信.实现的功能是通过上位机给单片机通过串口发送信息,然后将发送的信息在lcd1602上显示出来. (码字好累啊,这是第二遍码字了刚刚这篇博客都要写完了,要 ...

  7. 40、基于51单片机收音机 LCD1602显示系统设计

    摘要 本文在具体分析了STC89C52单片机的技术特点与数字FM收音机的基础上,提出了采用单片机控制收音机实现数字调频的方法,并给出了具体的软硬件设计.该系统利主要由STC89C52单片机.液晶显示器 ...

  8. 和12岁小同志搞创客开发:如何驱动LCD1602液晶显示屏?

     目录 1.简介和驱动原理 2.实践 机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧. 项目专栏:https://blog.csdn.net/m0_38106923/cate ...

  9. 使用 Strace 调试工具

    strace是Linux环境下的一款程序调试工具,用来监察一个应用程序所使用的系统呼叫及它所接收的系统信息. strace是一个有用的小工具,它可以通过跟踪系统调用来让你知道一个程序在后台所做的事情. ...

最新文章

  1. 复杂密码生成工具apg
  2. Wince 中如何实现注册表恢复原厂设置
  3. [ROBOT] python library 如何能获取到ROBOT框架里面的全局变量,例如${OUTPUT DIR}等
  4. 七、朴素贝叶斯中文文本分类
  5. Android学习笔记——数据库
  6. 一个App完成入门篇(五)- 完成新闻页面
  7. 算法基础——列表查找
  8. .NET库和向后兼容的技巧——第3部分
  9. ecshop上传图片2
  10. mysql 运维常见操作
  11. .net 获取xml里面的值_XML技术
  12. 目标检测分类损失函数——Cross entropy、Focal loss
  13. read.html5.qq.com,从QQ浏览器缓存文件中提取出完整的视频
  14. 检查计算机新的更新失败,原神PC启动器检查更新失败怎么办?PC客户端报错解决方法...
  15. 网站开发流程(附图)
  16. 数据包络分析——二阶段网络带feedback
  17. 2020-08-07#自学编程方法论# 怎么学到后面越来越难?达克效应在作祟!
  18. 交付管理——怎样与客户打交道
  19. 数字图像相关(Digital Image Correlation, DIC)中的非线性优化方法IC-GN的数值解计算
  20. 迈向大牛的重要一步——掌握设计模式

热门文章

  1. VS2013安装及破解教程
  2. vs2013已阻止安装程序,需安装IE10
  3. 【转】高清视频分割器在日常生活中的重要作用
  4. 计算机动画实验(一)OpenGL实现关键帧动画
  5. vant时间控件的使用
  6. 蓝桥杯嵌入式CT117E-M4学习笔记02-STM32G431RBT6芯片学习
  7. 【转载】传承17年经典 极品飞车历代经典车赏析
  8. 你确定懂什么是敏捷测试?
  9. 下载W ndows桌面,《如何制作WndowsMoble手机的桌面主题.doc
  10. 最搞怪面试问题TOP10:你也来试试看 (大家一起来做题)