仿真软件proteus构建LCD1602显示字符串实验

    LCD1602模块的显示需要注意几点:

    1、显示两行,第一行的起始地址是0x80,第二行的地址是0x80+0x40 = 0xC0。

    2、RS,RW,EN接线没有说一定要接到P1,P2,P3上,只要给对应的管脚高低电平即可,但是必须要接线。

     3、LCD1602 VSS VEE管脚要连在一起并接地,在实际电路板上,这个地方也是需要注意的。

    这里使用仿真软件Proteus同样的,只需要在Proteus工具中设计电路图,编写原代码,编译,仿真即可,无需Keil工具,但是系统需要安装Keil工具,因为编写代码需要用到Keil for 8051编译器。

    proteus构建硬件工程,选择8051单片机类型,编译器选择Keil for 8051。这样,工程中会显示电路设计图视图,pcb设计图视图,源代码视图。

    源代码中main.c代码:

/* Main.c file generated by New Project wizard
 *
 * Created:   周一 12月 13 2021
 * Processor: 80C52
 * Compiler:  Keil for 8051
 */

#include <reg52.h>
#include <intrins.h>
#include <stdio.h>
#include <string.h>

#define uchar unsigned char 
#define uint unsigned int 

sbit RS = P3^5;
sbit EN = P3^4;
sbit RW = P3^6;

uchar code table1[] = {"hello,world!"};
uchar code table2[] = {"0123456789"};

void delay(uint time);
void init_1602(void);
void writecmd(uint cmd);
void writedata(uchar dat);
void display(uchar len,uchar* table);

void main(void)
 { 
   // Write your code here
  delay(10);
  init_1602();
  delay(5);	 
  writecmd(0x80);
  //delay(5);
  display(strlen(table1),table1);
  writecmd(0x80+0x40);
  display(strlen(table2),table2);
  while (1)
     ;
 }
 
 void delay(uint time)
 {
  unsigned char a,b,i;
  for(i=time;i!=0;i--)
  {
	for(b=199;b>0;b--)
	{
	  for(a=1;a>0;a--);	
	}		
  }  
}

void init_1602(void){
  delay(15);
  writecmd(0x38); //mode set
  writecmd(0x0c); //display set
  writecmd(0x06);  //display mode
  writecmd(0x01); //clear display
}

void writecmd(uint cmd){
	RS = 0;
	RW = 0;
	P1 = cmd;
	EN = 1;
	delay(1);
	EN = 0;
}

void writedata(uchar dat)
{
  RS = 1;
  RW = 0;
  P1 = dat;
  EN = 1;
  delay(1);
  EN = 0;	
}

void display(uchar len,uchar* table){
	uchar i;
	for(i=0;i<len;i++)
	{
	  writedata(table[i]);	
	}
	delay(5);
}

仿真电路图:

运行效果:

LCD1602显示实验,在实际开发中,为了保护LCD1602器件,可能会接上一个排阻,然后与单片机相连。在仿真实验中,为了提高效率,快速看到实验效果,这一步省掉了。

  • 8
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
### 回答1: 如果 Proteus 仿真LCD1602 显示不正常,可能是以下几种情况造成的: 1. LCD1602 模型配置错误,请检查模型的设置是否正确。 2. 代码 LCD1602 初始化部分存在错误,请检查初始化代码。 3. 代码 LCD1602 控制部分存在错误,请检查控制代码。 4. 代码 LCD1602 数据部分存在错误,请检查数据代码。 如果您无法找到问题所在,您可以尝试重新检查您的代码,或者在网上查找其他人遇到类似问题的解决方案。 ### 回答2: 在进行 Proteus 仿真过程,可能会遇到 LCD1602显示的问题,有几个原因可能导致该问题发生。 首先,可能是 Proteus 软件本身存在问题。在这种情况下,可以尝试更新 Proteus 软件版本,也可以尝试重新安装软件。 其次,可能是电路连接出现了问题。 确认电路的所有元件和线路都正确连接,没有错误的接线或者短路等情况。 特别是确保LCD 的VSS 引脚,对接地引脚,VDD 引脚,对 + 电源引脚的连接正确无误。 第三种情况,可能是代码存在问题。LCD1602仿真需要正确的代码来初始化并控制它。例如,确保程序使用的库文件和指令集正确无误。这包括对延时功能的要求,正确的数据指令等。尽可能保证和实际硬件的接口一致,避免错误的操作。 如果以上方法都没能解决问题,建议使用实际硬件测试,确保硬件工作正常,然后再进行仿真过程,排除其他可能的因素。确保上电、启动项是正常的。此后再进行代码的测试,调试问题。最终实现正确的 LCD1602 显示。 总之,Proteus 仿真LCD1602显示,应该从电路连接、Proteus 软件版本、硬件工作、代码等多个方面进行排查,及早发现和解决问题,最终实现正常的 LCD1602 显示。 ### 回答3: 首先,Proteus是一款常用于电子电路仿真软件,而LCD1602是一种常用的字符型液晶显示屏。在仿真过程,有可能遇到LCD1602显示的问题。以下是可能的原因和解决方法: 1. 电路连接错误:检查电路板上LCD1602的引脚是否正确连接到单片机或其他驱动器。确认是否存在接触不良或焊接问题。 2. 缺少初始化:在程序开始时,需要对LCD1602进行初始化,以确保它能够正确地显示字符。检查代码是否正确添加了初始化代码,且参数设置是否正确。 3. 电压不稳定:检查电源电压是否稳定。如果电源电压不稳定,将影响LCD1602的正常工作,导致不显示字符或显示异常。需要检查电源电压是否满足工作要求,或加入脉冲滤波电路。 4. 软件问题:可能存在程序的逻辑或语法错误。检查代码是否有语法错误,或是否写入正确的逻辑,确保程序运行正常。 5. 频率错误:使用的驱动器需要特定的时钟频率。检查时钟频率是否正确,以及时钟信号是否符合驱动器的需求。如果频率错误,将导致不显示显示异常。 6. 背光电路问题:对于背光型液晶显示屏,需要在电路板上接入背光电源。检查背光电路是否正确连接,或背光电源是否稳定。 总之,如果遇到LCD1602显示的问题,需要仔细检查连接、初始化、软件、电压、频率以及背光电路等多个方面,寻找可能的原因,逐一排除,确保电路能够正常运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luffy5459

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值