LCD1602显示实验

一、实验目的与任务

实验目的:

1. 掌握LCD1602显示控制方法;

2. 掌握利用Proteus进行单片机控制系统的仿真及调试方法。

3. 掌握单片机开发板的使用。

任务:

  1. 根据要求编写程序,并写出原理性注释;

2. 将检查程序运行的结果,分析一下是否正确;

3. 完成所建工程的仿真及调试;

4. 将设计程序下载至开发板验证实验结果。

二、实验内容

设计51单片并行口实现LCD1602的显示控制,要求在Protues中设计接口电路图,并编程实现在LCD1602上显示出双行字符(显示具体内容自定)。

2)Proteus仿真:

实验步骤:

  • 运行Proteus 开发环境,建立工程,新建原理图设计文件esimlab4.pdsprj,参考图一。

图一 LCD1602显示实验仿真图

  • 主函数区:
    #include <REGX51.H>
    #include "LCD1602.h"
    void main()
    {
    	LCD1602_Init();
      LCD1602_ShowString(1,2,"Hello world");
    	LCD1602_ShowString(2,1,"zzuli");
    	while(1)
    	{
    		
    	}
    }

    延时函数模块:

    void Delay(unsigned int xms)
    {
    	unsigned char i, j;
    while(xms--)
    {
    
      i = 2;
    	j = 199;
    	do
    	{
    		while (--j);
    	} while (--i);
    	
    }
    }

 LCD1602模块:

#include <REGX51.H>
#include "Delay.h"
//引脚配置:
sbit RS=P2^0;
sbit RW=P2^1;
sbit E=P2^2;

void LCD1602_WriteCommand(unsigned char command)//写命令
{
	
	RS=0;
	RW=0;
	P0=command;
	E=1;
	Delay(2);
	E=0;
	Delay(1);
}

void LCD1602_WriteDate(unsigned char command )//写数据
{
	
	RS=1;
	RW=0;
	P0=command;
	E=1;
	Delay(2);
	E=0;
	Delay(1);
}
void LCD1602_Init(void)//初始化函数
{
  LCD1602_WriteCommand(0x01);//清屏
  LCD1602_WriteCommand(0x06);//显示设置写完一个字符之后地址指针加一I/D=1,屏幕不移动S=0;
  LCD1602_WriteCommand(0x0c);//屏幕整体显示开D=1,无光标控制位C=0,光标不闪烁B=0
  LCD1602_WriteCommand(0x38);//数据传输有效长度为八位DL=1;两行显示N=1,5*7点阵字符F=0;
	Delay(1);
}
/**
 *@line起始行
 *@list起始列
*/
void LCD1602_SetDDRAM(unsigned char line,unsigned char list)//设置DDRM的地址也就是将要显示字符的位置
{
   if(line==1)
	 {
	   LCD1602_WriteCommand(0x80|(list-1));
	 }
	 else if(line==2)
	 {
	   LCD1602_WriteCommand(0x80|(list-1+0x40));
	 }
}
/**
 *@line起始行
 *@list起始列
 *@*string字符串的首地址 
*/
 void LCD1602_ShowString(unsigned char line,unsigned char list,char *string)//字符串显示
 {
	 unsigned char i; 
   LCD1602_SetDDRAM(line,list);//先设置DDRAM中将要显示字符的地址
	 for(i=0;string[i]!='\0';i++)
	 {
	   LCD1602_WriteDate(string[i]);
	 }
 
 }

运行结果:

 

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值