⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd1602.lst

📁 用单片机播放音乐并用LCD显示的源程序
💻 LST
字号:
C51 COMPILER V7.50   LCD1602                                                               07/26/2005 09:03:10 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE LCD1602
OBJECT MODULE PLACED IN LCD1602.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LCD1602.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /***************************************/
   2          /*       CopyRight 2005 LiuYong                 *
   3          /****************************************
   4                  文件名称:LCD1602.C
   5                  文件版本:V1.0
   6                  创建人员:LiuYong
   7                  创建日期:2005.5.30
   8                  功能描述:完成LCD的显示
   9                  相关硬件:at89s52兼容单片机,晶体11.0592M,LCD为1602
  10                  修改记录:
  11          ***************************************/
  12          #include <regx52.H>
  13          #include <intrins.h>
  14          #include "delay.h"
  15          #define uchar     unsigned char
  16          
  17          #define LCDDB   P0              //LCD数据总线
  18          //LCD EN
  19          sbit LCDE               =P1^4;
  20          //LCD WR
  21          sbit LCDWR              =P3^6;
  22          //LCD RD
  23          sbit LCDRS              =P3^7;
  24          //busy flag
  25          sbit LCDBUSY            =P0^7;
  26          
  27          /*************************************************
  28          *       函数名称:void LcdCheckBusy(void)
  29          *       创建日期:2005.6.3
  30          *       功能描述:确保LCD为不忙的状态
  31          *       入口参数:无
  32          *       返回值:        无     
  33          *       修改日志:
  34          *************************************************/
  35          void LcdCheckBusy(void)
  36          {
  37   1              LCDDB=0XFF;//必须
  38   1              LCDRS=0;
  39   1              LCDWR=1;
  40   1              LCDE=1;
  41   1              _nop_();
  42   1              while(LCDBUSY)
  43   1              {
  44   2                      _nop_();
  45   2              }
  46   1              LCDE=0;         
  47   1      }
  48          /*************************************************
  49          *       函数名称:void LcdWtInstruct(uchar ucInstruct)
  50          *       创建日期:2005.6.3
  51          *       功能描述:写指令码到IR寄存器
  52          *       入口参数: ucInstruct:指令码,是否检查忙的标志,若为1检查,为0不检查
  53          *       返回值:        无     
  54          *       修改日志:
  55          *************************************************/
C51 COMPILER V7.50   LCD1602                                                               07/26/2005 09:03:10 PAGE 2   

  56          void LcdWtInstruct(uchar ucInstruct,bit bIfChkBsy)
  57          {
  58   1              if(bIfChkBsy)
  59   1              {
  60   2                      LcdCheckBusy(); //检查LCD是否忙
  61   2              }
  62   1              LCDE=0;
  63   1              LCDRS=0;
  64   1              LCDWR=0;
  65   1              _nop_();        //liuyong add 6.13
  66   1              LCDE=1;
  67   1              LCDDB=ucInstruct;
  68   1              //LCDE=1;
  69   1              _nop_();        //liuyong add 6.13
  70   1              _nop_();        //liuyong add 6.13
  71   1              LCDE=0;
  72   1      }
  73          /*************************************************
  74          *       函数名称:void LcdWtData(uchar ucLcdData)
  75          *       创建日期:2005.6.3
  76          *       功能描述:向LCD写数据
  77          *       入口参数:ucLcdData:写入的数据
  78          *       返回值:        无     
  79          *       修改日志:
  80          *************************************************/
  81          void LcdWtData(uchar ucLcdData)
  82          {
  83   1              LcdCheckBusy(); //检查LCD是否忙
  84   1              LCDE=0;
  85   1              LCDRS=1;
  86   1              LCDWR=0;
  87   1              LCDE=1;
  88   1              LCDDB=ucLcdData;
  89   1              LCDE=0;
  90   1              LCDRS=0;  //liuyong 0612
  91   1              LCDWR=1;//liuyong 0612
  92   1      }
  93          
  94          /*************************************************
  95          *       函数名称:void LcdInit(void)
  96          *       创建日期:2005.6.3
  97          *       功能描述:初始化LCD的一些配置
  98          *       入口参数:无
  99          *       返回值:        无    
 100          *       修改日志:2005.6.24.LcdWtInstruct(0x3c,1);由原来的38改为3c,增加某些字符的显示
 101          *************************************************/
 102          void LcdInit(void)
 103          {
 104   1              /********************************************************
 105   1              6号指令:功能设置命令,0B 0B 1B DLB NB FB *B *B , 
 106   1              DL:高电平时为4位总线,低电平时为8位总线 
 107   1              N:低电平时为单行显示,高电平时双行显示 
 108   1              F: 低电平时显示5x7的点阵字符,高电平时显示
 109   1              5x10的点阵字符 指令
 110   1              ***********************************************************/
 111   1              //LcdWtInstruct(0x38,1);        //设置16*12显示,5*7点阵,8位数据接口   
 112   1              LcdWtInstruct(0x3c,1);  //设置16*12显示,5*10点阵,8位数据接口  
 113   1      
 114   1              //关显示
 115   1              LcdWtInstruct(0x08,1);
 116   1              
 117   1              //指令1:清显示,指令码01H,光标复位到地址00H位置
C51 COMPILER V7.50   LCD1602                                                               07/26/2005 09:03:10 PAGE 3   

 118   1              LcdWtInstruct(0x01,1);
 119   1      
 120   1              /********************************************************
 121   1              3号指令:光标和显示模式设置,0B 0B 0B 0B 0B 1B I/DB SB , 
 122   1              I/D:光标移动方向,高电平右移,低电平左移 
 123   1              S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效
 124   1              ***********************************************************/
 125   1              LcdWtInstruct(0x06,1);  //屏幕上的光标和文字右移
 126   1      
 127   1              /********************************************************
 128   1              4号指令:显示开关控制,0B 0B 0B 0B 1B DB CB BB , 
 129   1              D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 
 130   1              C:控制光标的开与关,高电平表示有光标,低电平表示无光标 
 131   1              B:控制光标是否闪烁,高电平闪烁,低电平不闪烁
 132   1              ***********************************************************/    
 133   1              LcdWtInstruct(0x0c,1);  //开显示、不显示光标,光标不闪烁
 134   1      }
 135          
 136          /*************************************************
 137          *       函数名称:void LcdDisplay(uchar *pDis,uchar ucLine)
 138          *       创建日期:2005.6.3
 139          *       功能描述:显示字符串
 140          *       入口参数: *pDis:要显示的字符串,x:x坐标,取值范围是0到15;y: y坐标取0或1
 141                                                  ucAdr:字符串显示所在的地址ucNo:写入字符的个数,
 142                                                  共32个字符,第一行16个,第二行16个
 143          *       返回值:        无    
 144          *       修改日志:
 145          *************************************************/
 146          void LcdDisplay(uchar *pDis,uchar x,uchar y,uchar ucNo)
 147          {
 148   1              uchar i=0;
 149   1              uchar ucAdr;
 150   1              if(y)
 151   1              {
 152   2                      ucAdr=0xc0;
 153   2              }
 154   1              else
 155   1              {
 156   2                      ucAdr=0x80;
 157   2              }
 158   1              LcdWtInstruct(ucAdr+x,1);       //写入显示的数据地址指针
 159   1              for(i=0;i<ucNo;i++)
 160   1              {
 161   2                      LcdWtData(*(pDis+i));
 162   2              }
 163   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    152    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       6
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -