实验6 LCD接口

发布者:幸福微风最新更新时间:2017-01-06 来源: eefocus关键字:LCD接口  单片机 手机看文章 扫描二维码
随时随地手机看文章

1.利用单片机控制LCD1602,在LCD1602上显示字符串,并使其整屏左移。

 

#include

#define uchar unsigned char

#define uint unsigned int

uchar code table[]="Hello World!";

uchar code table1[]="I am a boy!";

sbit lcden=P2^7;  //液晶使能端

sbit lcdrs=P2^6;

sbit LCDWR=P2^5;

uchar num;

 

/***********************************************************

    延时函数

    参数说明:

    z代表要延时z ms

***********************************************************/

void delay(uint z)

{

    uint x,y;

    for(x=z;x>0;x--)

       for(y=110;y>0;y--);

}

/***********************************************************

    写命令或数据

    参数说明:

    isRs=1代表写数据,isRs=0代表写命令

***********************************************************/

void write(uchar mdata, uchar isRs)

{

    lcdrs=isRs;

    P0=mdata;

    delay(5);

    lcden=1;

    delay(5);

    lcden=0;

}

/***********************************************************

    写命令

    参数说明:

    data代表要写的命令

***********************************************************/

void write_command(uchar com)

{

    write(com,0);

}

/***********************************************************

    写数据

    参数说明:

    data代表要写的数据

***********************************************************/

void write_data(uchar mdata)

{

    write(mdata,1);

}

void init()

{

    lcden=0;

    LCDWR=0;

    write_command(0x38);//设置16X2显示,5X7点阵,8位数据接口

    write_command(0x0c);//设置开显示,不显示光标

    write_command(0x06);//写一个字符后地址指针加1

    write_command(0x01);//显示清零,数据指针清零

}

void main()

{

    init();

    write_command(0x80+0x10);

    for(num=0;num<15;num++)

    {

       write_data(table[num]);

       delay(5);

    }

    write_command(0x80+0x50);

    for(num=0;num<16;num++)

    {

       write_data(table1[num]);

       delay(5);

    }

    for(num=0;num<16;num++)

    {

       write_command(0x18);

       delay(200);

    }

    while(1);

}

 

思考:如果向CGRAM写入数据?

向CGRAM写入数据的步骤:

1.建立一个字符数组

Uchar LCD_Data1[]={0x01,0x03,0x1D,0x11,0x1D,0x03,0x01,0x00};

2.设置CGRAM地址,写指令.

Write_cmd(0x40);

3.把数据送入CGRAM地址内.

for(i=0;i

{            write_cmd(0x40+i);

              write_date(table[i]);

              delay(5);

}

4.写需要显示的位置指令. Write_cmd(0x80);

5.把CGRAM的0位的数据送向LCD1602,显示数据存储的数据. for(i=0;i<8;i++)      //显示自定义字符

       {

              write_date(i);  //显示第i个字符

              delay(5);

       }

 

扩展:

1.利用单片机控制LCD1602,使其可以汉字“中华人民共和国”并控制整屏移动

 

#include

#define uchar unsigned char

#define uint unsigned int

 

sbit lcden=P2^7;  //液晶使能端

sbit lcdrs=P2^6;  //数据或命令控制(0代表命令,1代表数据)  

sbit LCDWR=P2^5;  //读写控制(0代表写,1代表读)

uchar num;

uchar code table_HanZi[]={

0x04,0x04,0x1F,0x15,0x15,0x1F,0x04,0x04,//中

0x0A,0x1B,0x0E,0x0B,0x04,0x1F,0x04,0x04,//华

0x00,0x04,0x04,0x04,0x0A,0x11,0x00,0x00,//人

0x1F,0x11,0x1F,0x18,0x16,0x16,0x11,0x18,//民

0x0A,0x1F,0x0A,0x1F,0x00,0x0A,0x11,0x11,//共

0x04,0x08,0x18,0x1F,0x0D,0x1F,0x1C,0x08,//和

0x1F,0x11,0x1F,0x15,0x1F,0x17,0x1F,0x1F,//国

};

 

uchar code table1[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07};  //自定义字符数据地址

 

 

/***********************************************************

    延时函数

    参数说明:

    z代表要延时z ms

***********************************************************/

void delay(uint z)

{

    uint x,y;

    for(x=z;x>0;x--)

       for(y=110;y>0;y--);

}

/***********************************************************

    写命令或数据

    参数说明:

    isRs=1代表写数据,isRs=0代表写命令

***********************************************************/

void write(uchar mdata, uchar isRs)

{

    lcdrs=isRs;

    P0=mdata;

    delay(5);

    lcden=1;

    delay(5);

    lcden=0;

}

/***********************************************************

    写命令

    参数说明:

    data代表要写的命令

***********************************************************/

void write_command(uchar com)

{

    write(com,0);

}

/***********************************************************

    写数据

    参数说明:

    data代表要写的数据

***********************************************************/

void write_data(uchar mdata)

{

    write(mdata,1);

}

void init()

{

    lcden=0;

    LCDWR=0;

    write_command(0x38);//设置16X2显示,5X7点阵,8位数据接口

    write_command(0x0c);//设置开显示,不显示光标

    write_command(0x06);//写一个字符后地址指针加1

    write_command(0x01);//显示清零,数据指针清零

    delay(1);

}

void main()

{

    uchar i;

    init();

    while(1)

    {

       write_command(0x40);    //开始写入要显示的自定义字符、汉字代码

       for(i=0;i<56;i++)

       {

           write_data(table_HanZi[i]);

           delay(5);

       }

       write_command(0x80);    //从第一行第一列开始显示

       for(i=0;i<8;i++)  //显示自定义字符

       {

           write_data(table1[i]);  

           delay(5);

       }

    }

}


关键字:LCD接口  单片机 引用地址:实验6 LCD接口

上一篇:实验5 IIC通讯与AD/接DA接口
下一篇:实验9 红外接收单片机解码

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

SP2328串口扩展专用芯片及其与单片机接口电路
摘 要: 本文介绍一种新型的单片机串口扩展芯片的功能特性以及与单片机接口的应用。 关键词: 单片机; 多串口通信 在设计由多个单片机组成的数据采集电路时,一般要用多个串口在各个单片机之间进行数据通信。为了解决单片机扩展多个串口的问题,以前大多采用多片AT89C2051来实现多串口通信。每个AT89C2051用并口与上位机连接,再通过AT89C2051的串口与下位机串口连接。这种电路设计,单片机编程比较复杂,整个电路的调试也比较麻烦,可靠性不是很高。一种新开发的SP2328串口扩展芯片很好的解决了上述问题。 SP2328是成都视普科技公司的串行口扩展专用芯片,能将普通单片机(如:AT89C2051、AT89C51等)的
[单片机]
实际应用变流方案 单片机在线UPS设计广为流传
1、引言 UPS(UninterruptiblePowerSystem)交流电源越来越广泛地应用于国民经济的各个领域。本文将介绍一种实用的简单 在线 式UPS。 2、UPS电源的基本结构 将220V电网电压经全桥整流提供直流是实际应用中最为广泛的变流方案,但会使电网产生严重畸变的非正弦电流而危害电网。较为理想的方法是采用功率因数校正措施。控制器采用功率因数校正控制芯片UC3855A/B。 3、市电一蓄电池切换电路 它由两个迟滞比较器组成,市电经过整流,分压与由5V基准电压分压得到的电压相比较,输出接到51 单片机 4脚。 (1)当市电电压大于170V 51 单片机 当检测到4脚电平为高电平,市电工作指示灯亮起,蓄电池
[电源管理]
实际应用变流方案 <font color='red'>单片机</font>在线UPS设计广为流传
基于stc单片机的AT89S52离线烧录器程序
下面是部分 源码 预览,完整的代码请到 http://www.51hei.com/bbs/dpj-20605-1.html 下载 #include uart.h #include s51pro.h #include myfun.h #include znfat/znFAT.h extern unsigned char OutBuf ; extern unsigned char InBuf ; unsigned char idata psignbuf ; unsigned char code_buf ; sfr P1M0 = 0x92; sfr P1M1 = 0x91; //定义STC12单片机IO模式特殊
[单片机]
基于stc<font color='red'>单片机</font>的AT89S52离线烧录器程序
红外遥控技术中单片机的应用
  引言   红外遥控技术因其性能稳定、结构简单、技术成熟等优点而在工业控制、仪器仪表、家电等领域中得到了广泛的应用。一般通常使用专用的配对编、解码芯片,组成红外发射和接收电路,完成对设备或电器的远动控制。图1所示为按此方法进行红外遥控的一般工作过程。   使用专用的配对编、解码芯片来组成红外发射电路和红外接收电路,在控制路数较少时矛盾并不突出。但是当控制路数较多时,其接口的设计和实现就显得比较繁琐;此外因为编、解码芯片通常是专用配对使用的,即某种解码芯片只能识别某种编码芯片的编码,对其他型号的编码芯片的编码则不能识别。因此,不同的编、解码芯片几乎没有互换性。   本文提出了一种利用单片机实现红外遥控的方法,即用某种编码芯
[单片机]
红外遥控技术中<font color='red'>单片机</font>的应用
IAR Systems 已全面支持兆易创新车规级MCU
IAR Systems嵌入式开发解决方案现已全面支持兆易创新GD32系列芯片,与合作伙伴一同提升产业影响力 瑞典乌普萨拉 — 2023年1月5日—嵌入式开发软件和服务的全球领导者 IAR Systems与业界领先的半导体器件供应商兆易创新(GigaDevice)联合宣布,最新发布的IAR Embedded Workbench for Arm 9.32.1版本已全面加强对兆易创新GD32系列的支持,其中包括兆易创新不久前发布的基于Cortex®-M33内核的GD32A503系列车规级MCU。 GD32A503 系列MCU采用先进的车规级工艺平台,遵循车规级设计理念和生产标准,符合车用高可靠性和稳定性要求,可以广泛用于
[汽车电子]
IAR Systems 已全面支持兆易创新车规级<font color='red'>MCU</font>
STC12C5A32S2单片机之1602渐入显示
基本框架根据郭天祥Lesson8中的程序来编写,但是渐入显示的时候郭用的指令是write_com(0x18); 可我用的时候就是显示不出来,于是根据1602的说明书,用了另外一个指令write_com(0x07) //当写一个字符,整屏显示左移 程序如下: 可直接运行,已调试OK #include reg51.h sbit LCD_rs=P1^0; sbit LCD_rw=P1^1; sbit LCD_en=P2^5; unsigned char num; unsigned char code table = I Love ZYN ; unsigned char code table1 = 0123
[单片机]
STC12C5A32S2<font color='red'>单片机</font>之1602渐入显示
AT89C51单片机在LED显示屏控制电路设计中的应用
LED显示屏又叫电子显示屏,是由LED点阵组成,通过红色或绿色灯珠的亮灭来显示文字、图片、动画、视频,内容可以随时更换,通常由显示模块、控制系统及电源系统组成。显示模块由LED灯组成的点阵构成,负责发光显示;控制系统通过控制相应区域的亮灭,可以让屏幕显示文字、图片、视频等内容,恒舞动卡主要是播放动画的;电源系统负责将输入电压电流转为显示屏需要的电压电流。 LED显示屏广泛应用于信息指示灯,大屏幕显示,液晶显示的背光灯,固体照明等。本文设计一种由4个16×16点阵LED模块组成的显示屏,由单片机作控制器,平滑移动显示任意多个文字或图形符号,本电路可级联扩展实现由任意多个16×16点阵LED模块组成的显示屏。 一、控制电路设计 控制电
[电源管理]
AT89C51<font color='red'>单片机</font>在LED显示屏控制电路设计中的应用
采用C8051F单片机实现半导体激光器驱动电源的设计
半导体激光器(LD)体积小,重量轻,转换效率高,省电,并且可以直接调制。基于他的多种优点,现已在科研、工业、军事、医疗等领域得到了日益广泛的应用,同时其驱动电源的问题也更加受到人们的重视。使用单片机对激光器驱动电源的程序化控制,不仅能够有效地实现上述功能,而且可提高整机的自动化程度。同时为激光器驱动电源性能的提高和扩展提供了有利条件。 1总体结构框图 本系统原理如图1所示,主要实现电流源驱动及保护、光功率反馈控制、恒温控制、错误报警及键盘显示等功能,整个系统由单片机控制。本系统中选用了C8051F单片机。C8051F单片机是完全集成的混合信号系统级芯片(SOC),他在一个芯片内集成了构成一个单片机数据采集或控制系统所需要的几乎
[单片机]
采用C8051F<font color='red'>单片机</font>实现半导体激光器驱动电源的设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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