LCD1602液晶屏幕显示介绍

发布者:Radiant777最新更新时间:2016-08-06 来源: eefocus关键字:LCD1602  液晶屏幕显示 手机看文章 扫描二维码
随时随地手机看文章
下面是protues仿真电路,屏幕中第二行能看清吧,后面再说怎么显示的,第一行是我自定义的汉字“确认”和“取消”的“取”(左右写反了),发现1602显示汉字也就自己弄着玩玩,派不上大场合,而且如果一个汉字占两个字符的话(就像下图显示的),最多只能自定义4个汉字。

LCD1602液晶屏幕显示介绍 - 江南雨 - 江南雨的博客

先贴上程序,后面再分析。

#include
#include

#define uchar unsigned char
#define uint unsigned int

uchar code line1[] = {"welcome!"};

uchar p[]=          //自定义字模数组
{
0x00,0x0f,0x04,0x0f,0x05,0x07,0x00,0x00,
0x0f,0x12,0x1f,0x15,0x1f,0x15,0x1f,0x15,    //确
0x04,0x02,0x0e,0x02,0x02,0x03,0x02,0x00,
0x04,0x04,0x04,0x04,0x04,0x0a,0x11,0x00,    //认
0x00,0x0f,0x09,0x06,0x06,0x06,0x09,0x00,
0x1f,0x0a,0x0e,0x0e,0x0a,0x1f,0x02,0x02     //取
};

sbit E=P2^7;
sbit RW=P2^5;
sbit RS=P2^6;

busying ()                                                             
{                                                                          
 bit result;                                                            
 RS = 0;                                                           
 RW = 1;                                                            
 E = 1;                                                            
 _nop_();                                                               
 _nop_();                                                               
 _nop_();                                                               
 _nop_();                                                               
 result = (bit)(P0&0x80);                                              
 E = 0;                                                            
 return result;                                                         
}

writeorder (uchar cmd)
{
 while (busying());
 RS = 0;                                                            
 RW = 0;                                                            
 E = 0;                                                            
 _nop_();                                                               
 _nop_();                                                               
 P0 = cmd;                                                              
 _nop_();                                                               
 _nop_();                                                               
 _nop_();                                                               
 _nop_();                                                               
 E = 1;                                                            
 _nop_();                                                               
 _nop_();                                                               
 _nop_();                                                               
 _nop_();                                                               
 E = 0;
}

writedata (uchar dat)
{
 while (busying());
 RS = 1;                                                            
 RW = 0;                                                            
 E = 0;                                                            
 _nop_();                                                               
 _nop_();                                                               
 P0 = dat;                                                              
 _nop_();                                                               
 _nop_();                                                               
 _nop_();                                                               
 _nop_();                                                               
 E = 1;                                                            
 _nop_();                                                               
 _nop_();                                                               
 _nop_();                                                               
 _nop_();                                                               
 E = 0;
}

delay(uchar i)                                                         
{                                                                          
 while(i--)                                                             
 {
  uchar j=250;                                                                       
  while(j--)                                              
  {                                                                     
   _nop_();                                                             
   _nop_();                                                             
   _nop_();                                                             
   _nop_();                                                             
  }                                                                     
 }                                                                       
}

initial ()
{
 delay (150);    
 writeorder (0x38);  //工作方式:8位、2行、5x7
 delay(5);
 writeorder (0x06);     //输入方式:光标右移、屏幕不动 
 delay(5);
 writeorder (0x0c);  //显示状态:显示开、有光标、不闪烁
 delay(5);
 writeorder (0x01);  //清屏
 delay(5);
}

newbyte (void)    //设置自定义字符
{
  uchar i,j,k=0;
  uchar temp=0x40; 
  for(j=0;j<6;j++)        
  {    
    for(i=0;i<8;i++)      
    {        
   writeorder(temp+i);    
      writedata(p[k]);        
      k++;    
 }   
    temp += 8;
  }
}

main (void)
{
 uchar i=0;
 initial ();
 newbyte ();
 writeorder (0x85);   //设置第一行显示位置
 writedata (0x00);
 writedata (0x01);
 writedata (0x02);
 writedata (0x03);
 writedata (0x04);
 writedata (0x05);

 writeorder (0xc4);   //设置第二行显示位置
 while(line1[i] != '\0')
 {                                    // 显示字符"welcome!"
   writedata(line1[i]);
   i++;
 }
 while (1);
}

如果之前没有接触过1602,这里有资料,可以免注册免费下载:

http://wdpvip.qupan.com/6311643.html

http://wdpvip.qupan.com/6311649.html

下载:LCD1602汉字显示讲解.doc

程序中函数名定义的都很清楚了,不清楚的后面都有注释,补充两点:

1、数组uchar p[]和函数newbyte ()是为了自定义汉字的,可以删除掉。

2、1602共有两行,第一行显示从0x80开始,第二行从0xc0开始

举例说明,想在第一行第二个光标处显示,地址就是:0x81;想在第二行第三个光标处显示,地址就是:0xc2.

关键字:LCD1602  液晶屏幕显示 引用地址:LCD1602液晶屏幕显示介绍

上一篇:便携式低频幅频特性测试仪的研制
下一篇:单片机模拟I2C总线控制EEPROM读写程序

推荐阅读最新更新时间:2024-03-16 15:04

LCD1602液晶显示汉字显示程序带仿真
//建立 工 字字模并在第一行第一列显示 //P155 参考程序: GONG_ZI() //单片机仿真文件下载: http://www.51hei.com/bbs/dpj-23789-1.html #include reg51.h #include intrins.h //库函数头文件,代码中引用了_nop_()函数 sbit RS=0xb0; //P3.0 sbit RW=0xb1; //P3.1 sbit E= 0xb2; //P3.2 void lcd_w_cmd(unsigned char com); void lcd_w_dat(unsigned char dat); unsigned char
[单片机]
LCD1602液晶显示DS1302实时时钟Proteus仿真
Proteus仿真图: 仿真程序: #include reg52.h #include intrins.h #include string.h #define uint unsigned int #define uchar unsigned char //*******LCD******* sbit LCDRS=P2^0; //LCD数据/命令选择端 sbit LCDRW=P2^1; sbit LCDEN=P2^2; //LCD使能新号端 //******DS1302****** sbit IO=P1^0; //1302数据线 sbit SCLK=P1^1; //1302时钟线 sbit
[单片机]
<font color='red'>LCD1602</font>液晶<font color='red'>显示</font>DS1302实时时钟Proteus仿真
基于单片机的LCD1602电子时钟设计
学习任务: (1)基本了解LCD1602 (2)基于51单片机用LCD1602实现分秒的计时; (3)按键控制分秒的调整(两个按键分别控制分和秒的增加); (4)能实现整时报时的功能(蜂鸣器响); (5)了解下载模块、下载原理; (6)基本上了解并使用DXP绘制PCB板; 知识点总结: 一、LCD1602: 字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,本次使用的LCD1602为16*2型。 1、基本操作时序 1、1读状态:输入:RS=L,Rw=H,E=H 输出:D0~D7=状态字; 1、2写指令:输入:RS=L,Rw=L,D0~D7=指令码,E=高脉冲,输出:无; 1、3读数据:输入:RS
[单片机]
LCD1602驱动程序
LCD1602driver_inside.c /*本驱动依赖reg51.h头文件*/ #include reg51.h /*根据实际电路连接修改宏定义和sbit语句*/ #define D0_D7 P3 //数据通讯总线,用于写或读指令、显示地址和显示数据 sbit RS = P2^5; //寄存器选择引脚,设0选择指令和显示地址寄存器,设1选择显示数据寄存器 sbit RW = P2^6; //读写引脚,设0为写,设1为读 sbit E = P2^7; //信号使能引脚,设0允许写,设1允许读 sbit BF = P3^7; //忙信号,忙为1,不忙为0 /*根据实际电路连接修改宏定义和sbit语句*/
[单片机]
基于STC89C51的时钟电路PCB程序 DS1302+LCD1602
制作出来的实物图如下: 仿真原理图如下(proteus仿真工程文件可到本帖附件中下载) Altium Designer画的原理图和PCB图如下:(51hei附件中可下载工程文件) 单片机源程序如下: /******************************************************************************* * 实验名 : 万年历实验 * 使用的IO : * 实验效果 :1602显示时钟,按K3进入时钟设置,按K1选择设置的时分秒日月,按K2选择 *选择设置加1。 * 注意 : *
[单片机]
基于STC89C51的时钟电路PCB程序 DS1302+<font color='red'>LCD1602</font>
基于51单片机的出租车计价器的设计
引言 在科学技术和经济水平快速发展的21世纪,乘坐出租车和网约车出行已经成为一种非常重要的交通出行方式。行业的转型发展让出租车行业迎来了一场新纪元。但是在出租车行业迅速发展的同时,也出现了很多问题。经营管理不善,司机服务不规范,随意定价收款的现象也是层出不穷。为了根治这种现象,出租车计价器孕育而生。出租车计价器的问世不仅减少了行业的乱象,而且让管理者和经营者更加诚信的服务乘客,在很大程度上改善了行业风气。 但是目前国内广泛使用的出租车计价器功能单一,不能满足人们的需求,人们更致力于一种功能齐全,生产成本低的出租车计价器。伴随着科技水平的提高,出租车计价器也迎来了新的变革,这时第二代出租车计价器问世了。 设计选用宏晶公司生产的STC
[单片机]
用C语言写一个LCD1602驱动显示程序
#define MAIN_Fosc 22118400L #include STC15Fxxxx.H sbit P_HC595_SER = P4^0; sbit P_HC595_RCLK = P5^4; sbit P_HC595_SRCLK = P4^3; u8 hour,minute,second; void DisplayRTC(void); void RTC(void); void delay_ms(u8 ms); void DisableHC595(void); void Initialize_LCD(void); void Write_AC(u8 hang,u8 lie); void Write_DIS_Data(u8
[单片机]
单片机驱动LCD1602的制作二
具体电路的制作是很简单的,就接了两个电阻,一个是10欧姆的背光限流电阻,另一个是2K的LCD极板电压调节电阻。这两个电阻的阻值怎么定呢?背光比较简单,它就相当于在后面接了几个发光二极管,任何时候你只要在15、16脚串上个100欧的电位器接上电源,调节电位器,觉得亮度合适。此时的阻值便可。LCD液晶极板驱动电压调节电阻的确定就稍微麻烦一点。在各数据线,控制线接好关通上电源的前提下在第3脚(VEE)和地之间接一个10K的电位器。调节电位器。当3脚电压高时为全亮,电压为0时为全暗(液晶全显示为黑块)。你用电位器把屏幕从全暗刚好调到变亮。这时便可调试程序。待屏幕能正确显示后再细调电位器,使对比度合适。这时的阻值便可确定,然后换成等值的固定电
[单片机]
单片机驱动<font color='red'>LCD1602</font>的制作二
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved