LCD1602动态显示

2024-03-31 16:20
文章标签 lcd1602 动态显示

本文主要是介绍LCD1602动态显示,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

/*-----------------------------------------------
  内容:通过标准程序动态显示字符
  引脚定义如下:1-VSS 2-VDD 3-V0 4-RS 5-R/W 6-E 7-14 DB0-DB7 15-BLA 16-BLK
------------------------------------------------*/
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#include<intrins.h>

sbit RS = P2^4;   //定义端口 
sbit RW = P2^5;
sbit EN = P2^6;

#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 P0
/*------------------------------------------------
 uS延时函数,含有输入参数 unsigned char t,无返回值
 unsigned char 是定义无符号字符变量,其值的范围是
 0~255 这里使用晶振12M,精确延时请使用汇编,大致延时
 长度如下 T=tx2+5 uS 
------------------------------------------------*/
void DelayUs2x(unsigned char t)
{   
 while(--t);
}
/*------------------------------------------------
 mS延时函数,含有输入参数 unsigned char t,无返回值
 unsigned char 是定义无符号字符变量,其值的范围是
 0~255 这里使用晶振12M,精确延时请使用汇编
------------------------------------------------*/
void DelayMs(unsigned char t)
{
     
 while(t--)
 {
     //大致延时1mS
     DelayUs2x(245);
     DelayUs2x(245);
 }
}
/*------------------------------------------------
              判忙函数
------------------------------------------------*/
 bit LCD_Check_Busy(void) 
 { 
 DataPort= 0xFF; 
 RS_CLR; 
 RW_SET; 
 EN_CLR; 
 _nop_(); 
 EN_SET;
 return (bit)(DataPort & 0x80);
 }
/*------------------------------------------------
              写入命令函数
------------------------------------------------*/
 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);    /*显示开及光标设置*/
   }
   
/*------------------------------------------------
                    主函数
------------------------------------------------*/ 
void main(void) 

unsigned char i; 
unsigned char *p; 

LCD_Init(); 

while (1) 
 {  
 i = 1;  
 p = "www.doflye.net";  
 LCD_Clear();  
 LCD_Write_String(2,0,"Welcome to");  
 DelayMs(250);   
 while (*p) 
    {   
    LCD_Write_Char(i,1,*p);   
    i ++;   
    p ++;   
    DelayMs(250);   
    }  
  DelayMs(250);  
 }
}

 

这篇关于LCD1602动态显示的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/864765

相关文章

逗比学树莓派之lcd1602显示

通过树莓派GPIO连接LCD1602,使用wiringPi库和其附带的LCD库进行显示树莓派的CPU温度和内存使用情况。 1.首先按下图连接好硬件电路图: 2.然后在终端使用命令 sudo apt-get install git 安装版本管理软件Git 。

MFC中【Button】控件上局部动态显示字体信息和【对话框】名字的动态字体赋值性变化

①【Button】控件上局部动态显示字体信息 CString n;n.Format("与%s聊天", (char*)(_bstr_t)TheAdoData.m_pRecordset->GetCollect("xingming"));GetDlgItem(IDC_BUTTON2)->SetWindowText(n); ②【对话框】名字的动态字体赋值性变化 SetWindowT

设置DataGridView 显示自己添加编辑的列名,不动态显示数据库本身的列名

不用写代码轻轻松松得到你想要的。。。 问题:设置DataGridView 显示自己添加编辑的列名,不动态显示数据库本身的列名 解决方法: 把DataGridView控件拖放在窗体中,就看到DataGridView控件的右上角有个小三角,单击小三角,出现了“DataGridView任务”,或是直接右键DataGridView控件,选择“编辑列”;在弹出的“编辑列窗口中”,点“添加”

51单片机STC89C52RC——5.1 LCD1602液晶显示屏

目录 目的 一,STC单片机模块 二,LCD1602 2.1 模块简介 2.2 针脚 2.3 DDRAM地址与显示器对应关系 2.4 标准字库表 2.5 常用指令 2.6 读写操作 三,创建Keil项目 四,代码  五,代码编译、下载到51单片机 六,效果 目的 将LCD1602做成一个调试显示器使用。实现以下功能 LCD_Init();

el-table 表格列实现动态显示与隐藏

el-table 表格列实现动态隐藏显示 通常一个表格横向展示的时候,字段过多,但是我们又想要只显示部份字段,这时可以使用本组件实现你想要的效果。 1、实现原理:通过给列添加v-if来实现动态显示与隐藏效果 一、编写列显示与隐藏控制组件 <template><div><el-dialog title="自定义列" class="column-dialog" :visible.sync

用未公开的函数acedSetDynInputDisplayMessage来实现动态显示

原文见:http://forums.autodesk.com/t5/NET/Dynamic-Input/td-p/1339772 目前AutoCAD未公开实现Dynamic Input的API,要实现和AutoCAD同样的效果,可以使用一个未公开的函数acedSetDynInputDisplayMessage 以下是C#代码: using System;using System.Tex

android 动态显示和隐藏状态栏

小米Launcher有一个细节上的功能效果:在长按桌面应用图标时,会隐藏状态栏,然后在状态栏原有的布局上显示卸载或删除的操作栏。放手后,操作栏隐藏,状态栏显示出来。也就是说,这个过程是涉及到对状态栏的动态操作的。     View类提供了setSystemUiVisibility和getSystemUiVisibility方法,这两个方法实现对状态栏的动态显示或隐藏的操作,以及获取状态栏当前

使用JLabel动态显示数据

最近再做一些swing界面,得到一些小经验特与广大博友交流(PS:新手上路,不喜勿喷) import javax.swing.*; public class  Jlabel { public static void main(String[] args)  { //  String la=""; JFrame f=new JFrame(); f.setSize(400,400); f.setVi

C语言 | 基于MPU605(六轴传感器)的I2C实现LCD1602显示(代码类)

博主github:https://github.com/MichaelBeechan 博主CSDN:https://blog.csdn.net/u011344545 基于MPU605(六轴传感器)的I2C实现LCD1602显示: #include <REG52.H>#include <math.h>    //Keil library  #include <stdio.h>   //Kei

【TB作品】MSP430G2533,读取dht11,显示到lcd1602显示屏,串口发送到电脑

功能 读取dht11,显示到lcd1602显示屏,串口发送到电脑。 部分程序 void main(void){char disp[20];char count = 0;WDTCTL = WDTPW + WDTHOLD; // Stop WDTP1DIR = 0Xff;P1SEL = 0X00;P1SEL2 = 0X00;P2DIR = 0Xff;P2SEL