0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Proteus教程:LCD1602显示

Harmony&嵌入式学习 来源:Harmony&嵌入式学习 作者:Harmony&嵌入式学 2023-06-14 11:21 次阅读

视频教程:https://www.bilibili.com/video/BV1HK411W7La

pYYBAGSJMc-AR0NhAAJclMhW7Ek374.pngpoYBAGSJMdaAZypIAAQIEw9nEL4997.png
#include< reg51.h >
#define uchar unsigned char
#define uint unsigned int
#define LCD1602_DATAPINS P0
sbit LCD1602_E=P2^2;
sbit LCD1602_RW=P2^1;
sbit LCD1602_RS=P2^0;
sbit KEY = P3^0;
/*******************************************************************************
* 函 数 名         : 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
* 输    出         : 无
*******************************************************************************/
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;
}
/*******************************************************************************
* 函 数 名         : LcdWriteData
* 函数功能		   : 向LCD写入一个字节的数据
* 输    入         : dat
* 输    出         : 无
*******************************************************************************/		   	   
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;
}


/*******************************************************************************
* 函 数 名       : LcdInit()
* 函数功能		 : 初始化LCD屏
* 输    入       : 无
* 输    出       : 无
*******************************************************************************/		   
void LcdInit()						  //LCD初始化子程序
{
 	LcdWriteCom(0x38);  //开显示
	LcdWriteCom(0x0c);  //开显示不显示光标
	LcdWriteCom(0x06);  //写一个指针加1
	LcdWriteCom(0x01);  //清屏
	LcdWriteCom(0x80);  //设置数据指针起点
}




//按指定位置显示一个字符
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
{
 Y &= 0x1;
 X &= 0xF; //限制X不能大于15,Y不能大于1
 if (Y) X |= 0x40; //当要显示第二行时地址码+0x40;
 X |= 0x80; // 算出指令码
 LcdWriteCom(X); //这里不检测信号,发送地址码
 LcdWriteData(DData);
}
//按指定位置显示一串字符
void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)
{
 unsigned char ListLength;

  ListLength = 0;
 Y &= 0x1;
 X &= 0xF; //限制X不能大于15,Y不能大于1
 while (DData[ListLength]>=0x20) //若到达字串尾则退出
  {
   if (X <= 0xF) //X坐标应小于0xF
    {
     DisplayOneChar(X, Y, DData[ListLength]); //显示单个字符
     ListLength++;
     X++;
    }
  }
}


void main()
{
	uint datt = 324;
	LcdInit();
	//DisplayListChar(3,1,"Cheng One");
	DisplayOneChar(0,0,(char)(datt/100+'0'));
	DisplayOneChar(1,0,(char)(datt/10%10+'0'));
	DisplayOneChar(2,0,(char)(datt%10+'0'));
	
	while(1)
	{
		if(KEY==0)
		{
			Lcd1602_Delay1ms(20);
			if(KEY==0)
			{
				while(KEY==0);
				datt++;
			}
		}
			DisplayOneChar(0,0,(char)(datt/100+'0'));
	DisplayOneChar(1,0,(char)(datt/10%10+'0'));
	DisplayOneChar(2,0,(char)(datt%10+'0'));
	}
}

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 液晶
    +关注

    关注

    6

    文章

    604

    浏览量

    69526
  • Proteus
    +关注

    关注

    78

    文章

    1691

    浏览量

    106124
  • 晶振
    +关注

    关注

    33

    文章

    2745

    浏览量

    67583
  • LCD1602
    +关注

    关注

    14

    文章

    606

    浏览量

    52401
收藏 人收藏

    评论

    相关推荐

    液晶显示模块LCD1602应用

    液晶显示模块LCD1602应用
    发表于 09-25 16:58 683次下载
    液晶<b class='flag-5'>显示</b>模块<b class='flag-5'>LCD1602</b>应用

    LCD1602显示汉字

    LCD1602显示汉字,原本只能显示字符。
    发表于 11-09 16:17 22次下载

    lcd1602显示及注意点

    lcd1602显示及注意点,lcd1602显示及注意点。
    发表于 12-28 12:01 0次下载

    时钟lcd1602显示

    时钟lcd1602显示
    发表于 12-27 21:14 12次下载

    lcd1602显示原理,LCD1602液晶显示器的分类有哪些?

    LCD1602是一种工业字符型液晶,能够同时显示16x02即32个字符。LCD1602液晶显示原理 LCD1602液晶
    发表于 10-20 10:32 3.6w次阅读

    LCD1602是什么?关于LCD1602液晶模块的显示问题?

    LCD1602表示2行16个字符,也就是有不同的显示地点,那么单片机如何告诉LCD1602显示地点呢?因此前面的分析可以总结为三个问题,如何初始化;如何传送
    发表于 07-02 09:16 2.3w次阅读
    <b class='flag-5'>LCD1602</b>是什么?关于<b class='flag-5'>LCD1602</b>液晶模块的<b class='flag-5'>显示</b>问题?

    LCD1602显示接收到的红外线键值程序和LCD1602的延迟函数

    本文档的主要内容详细介绍的是LCD1602显示接收到的红外线键值程序和LCD1602的延迟函数。
    发表于 05-06 16:40 25次下载
    <b class='flag-5'>LCD1602</b><b class='flag-5'>显示</b>接收到的红外线键值程序和<b class='flag-5'>LCD1602</b>的延迟函数

    lcd1602液晶显示屏介绍_lcd1602引脚功能

    本文首先阐述了lcd1602液晶显示屏的概念,其次阐述了LCD1602外形尺寸,最后介绍了lcd1602引脚功能。
    发表于 04-23 08:53 7w次阅读

    lcd1602proteus中怎么找_lcd1602proteus仿真

    proteus提供了很多LCD的仿真器件,分享一个关于lcd1602的查找操作,希望对需要的朋友有帮助。
    发表于 04-23 09:02 12.1w次阅读
    <b class='flag-5'>lcd1602</b>在<b class='flag-5'>proteus</b>中怎么找_<b class='flag-5'>lcd1602proteus</b>仿真

    基于51单片机的LCD1602显示proteus实验

    基于51单片机的LCD1602显示proteus实验
    发表于 04-30 10:14 38次下载

    51单片机驱动LCD1602显示原理及例程

    51单片机驱动LCD1602显示原理及例程1.LCD1602A介绍2.LCD1602A中文手册 下载3.LCD1602A接线4. 51单片
    发表于 11-10 19:51 149次下载
    51单片机驱动<b class='flag-5'>LCD1602</b><b class='flag-5'>显示</b>原理及例程

    51单片机LCD1602显示实验

    实验目标:掌握LCD1602显示控制方法; 掌握利用Proteus单片机控制系统的仿真及调试方法。任务:根据要求编写程序,并写出原理性注释; 将检查程序运行的结果,分析一下是否正确; 完成所建
    发表于 11-10 20:06 25次下载
    51单片机<b class='flag-5'>LCD1602</b><b class='flag-5'>显示</b>实验

    STMCubeMX+Proteus仿真DHT11(LCD1602显示)

    信息显示LCD1602上Tips:之前写过一期LCD1602的,贴个传送门 STM32CubeMX+Proteus仿真LCD1602
    发表于 11-21 14:06 49次下载
    STMCubeMX+<b class='flag-5'>Proteus</b>仿真DHT11(<b class='flag-5'>LCD1602</b><b class='flag-5'>显示</b>)

    51单片机 LCD1602驱动显示(模板)+Proteus

    51单片机 LCD1602驱动显示(模板)+Proteus本项目工程篇,只展示LCD1602驱动显示,不涉及其他外设驱动使用,可以作为
    发表于 11-23 17:06 30次下载
    51单片机 <b class='flag-5'>LCD1602</b>驱动<b class='flag-5'>显示</b>(模板)+<b class='flag-5'>Proteus</b>

    STM32CubeMX+Proteus仿真LCD1602显示

    本文说明开发工具:STM32CubeMX+Keil5开发芯片:STM32F103R6显示屏幕:LCD1602仿真软件:Proteus 8.12工程目标:在LCD1602
    发表于 01-14 09:31 60次下载
    STM32CubeMX+<b class='flag-5'>Proteus</b>仿真<b class='flag-5'>LCD1602</b>的<b class='flag-5'>显示</b>