电子产业
数字化服务平台

扫码下载
手机洽洽

  • 微信小程序

    让找料更便捷

  • 扫码下载手机洽洽

    随时找料

    即刻洽谈

    点击下载PC版
  • 华强电子网公众号

    电子元器件

    采购信息平台

  • 华强电子网移动端

    生意随身带

    随时随地找货

  • 华强商城公众号

    一站式电子元器件

    采购平台

  • 芯八哥公众号

    半导体行业观察第一站

LCD1602的软硬件设计实例

来源:-- 作者:-- 浏览:2674

标签: lcd1602

摘要: 1.设计要求    在1602LCD第一行显示网站名,www.hifICat.com,第二行显示电话,见右图。实验前应先将显示开关切换到LCD工作状态。    2.硬件电路    1602液晶显示模块可以和单片机AT89S51直接接口,相关电路如下图所示。     3.软件设计    程序流程如下图所示。 程序清单如下:

  1.设计要求
  
  在1602LCD第一行显示网站名,www.hifICat.com,第二行显示电话,见右图。实验前应先将显示开关切换到LCD工作状态。
  
  2.硬件电路
  
  1602液晶显示模块可以和单片机AT89S51直接接口,相关电路如下图所示。

1602液晶显示模块与单片机AT89S51接口电路

 


  
  3.软件设计
  
  程序流程如下图所示。

      程序清单如下:
  
  #include <reg51.h>;
  
  /包含头文件/
  
  #include <intrins.h>
  
  sbit rs= P2^0;/端口定义/

    sbit rw= P2^1;

    sbit ep= P2^2;

    unsigned char code disl[ ]={"www、huficat、com"};/显示数据表/

    unsigned char code dis2[ ]={"0571-85956028"};

    /函数功能:LCD延时子程序入口参数:111S/

    void delay(unsigned char ms)

    {unsigned char i:

    while(ms--)

    {for(i=0;i<250; 1++)

    {_nop_0;

    _nop_0;

    _nop_0;

    -nop-O;

    } } }

    /函数功能:测试LCD忙碌状态

   出口参数:result/

    bit lcd_bz0

    {bit result;

    rs=0:

    rw=1:

    ep=1:

    _nop_0;

    _nop_0;

    _nop_0;

    _nop_0;

    result = (bit)(PO & Ox80);

    ep = 0;

    return (result); }

     /函数功能:写指令数据到LCD子程序

     入口参数:cmd/void lcd_wcmd (unsigned char cmd)

     {while(lcd_bz0);

     //判断LCD是否忙碌

    rs -0:

    rw=O:

    ep=0;

    -nop-0;

    _nop_0;

    PO=cmd;

    _nop_0;

    _nop_0;

    _nop_0;

    _nop_0;

    ep=1;

    _nop_0;

    _nop_0;

    _nop_0;

    _nop_0;

    ep=0;  }

    /函数功能:设定显示位置子程序人口参数:pos/void lcd_pos(unsigned char pos)

    {lcd_wcmd(pos I Ox80);)

    /函数功能:写入显示数据到LCD子程序

    入口参数:dat/void lcd_wdat(unsigned char dat)

    {while(lcd_bz0);

    //判断LCD是否忙碌

    rs=1:

    rw=O:

    ep=0;

    PO=dat;

    _nop_0;

    _nop_0;

    _nop_0;

    _nop_0;

    ep -1;
    _nop_0;

    _nop_0;

    _nop_0;

    _nop_0;

    ep=0;)

    /函数功能:LCD初始化子程序/void lcd_init0

    {lcd_wcmd(Ox38);

    delay(l);

    lcd_wcmd(Ox()c);

    delay(l);

    lcd_wcmd(Ox06);

    delay(l);

    lcd_wcmd(Ox01);

    delay(l);)

   函数功能:主程序/

   void main(void)

   {unsigned char i;

    lcd_irut0;    //初始化LCD

    delay(10);

    lcd_pos(Ox01);    //设置显示位置

    i=0:

    while(disl[i]!=\0&rsquo;)

    {lcd_wdat(disl[1];    //显示字符

    i++;}

    lcd_pos(Ox42);    //设置显示位置

    i=0:

    while(dis2[1]12&rsquo;\0&rsquo;)

    {lcd_wdat(dis2[il);    //显示字符

    i++;}1

    while(l);}

型号 厂商 价格
EPCOS 爱普科斯 /
STM32F103RCT6 ST ¥461.23
STM32F103C8T6 ST ¥84
STM32F103VET6 ST ¥426.57
STM32F103RET6 ST ¥780.82
STM8S003F3P6 ST ¥10.62
STM32F103VCT6 ST ¥275.84
STM32F103CBT6 ST ¥130.66
STM32F030C8T6 ST ¥18.11
N76E003AT20 NUVOTON ¥9.67