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

📄 lcd1602.lst

📁 AT89C51单片机控制LCD1602的仿真程序
💻 LST
字号:
C51 COMPILER V7.50   LCD1602                                                               08/04/2008 10:10:51 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 DEBUG OBJECTEXTEND

line level    source

   1          #include<reg51.h>
   2          #include<intrins.h>
   3          
   4          /****************************************************************************
   5          内存区定义
   6          ****************************************************************************/
   7          sbit BF=P0^7; //1602状态信号 高电平忙状态,低电平闲状态(可以读写)
   8          sbit RS=P2^7; //1602数据指令选择(低电平指令/状态,高电平数据)
   9          sbit RW=P1^1; //1602读写选择 (低电平写,高电平读)
  10          sbit ENABLE=P1^0; //1602使能信号(写1602的时候用下降沿脉冲)
  11          /**************************************************************************
  12          数据区定义
  13          **************************************************************************/
  14          unsigned char outdata[]="Hello World!    Hello Mcu!";
  15          /**************************************************************************
  16          //延时函数
  17          **************************************************************************/
  18          void delay(int sj)         
  19          {
  20   1              int i,j;
  21   1              for (i=0;i<sj;i++);
  22   1              for (j=0;j<248;j++);
  23   1      }
  24          /**************************************************************************
  25          //判忙函数
  26          **************************************************************************/
  27          void busy()
  28          {
  29   1              do
  30   1              {
  31   2              P0=0xff;
  32   2              RS=0;
  33   2              RW=1;
  34   2              ENABLE=0;
  35   2              delay(1);
  36   2              ENABLE=1;
  37   2              }while(BF);
  38   1      }
  39          /**************************************************************************
  40          //写操作命令函数
  41          **************************************************************************/
  42          void write_cmd(unsigned char commandaddr)
  43          {
  44   1              busy();
  45   1              RS=0;
  46   1              RW=0;
  47   1              ENABLE=1;
  48   1              P0=commandaddr;
  49   1              ENABLE=0;
  50   1      }
  51          /**************************************************************************
  52          //初始化1602函数
  53          **************************************************************************/
  54          void init_lcd()
  55          {
C51 COMPILER V7.50   LCD1602                                                               08/04/2008 10:10:51 PAGE 2   

  56   1              write_cmd(0x01);  //清显示,指令码01H,光标复位到地址00H位置
  57   1              write_cmd(0x38);        //功能设置
  58   1              write_cmd(0x0c);        //显示开关控制
  59   1              write_cmd(0x06);        //光标和显示模式设置
  60   1      }
  61          
  62          /**************************************************************************
  63          //写显示数据函数
  64          **************************************************************************/
  65          
  66          
  67          void write_data(unsigned char dataaddr)
  68          {
  69   1              busy();
  70   1              RS=1;
  71   1              RW=0;
  72   1              ENABLE=1;
  73   1              P0=dataaddr;
  74   1              delay(1);
  75   1              ENABLE=0;
  76   1              delay(1);
  77   1              }
  78          void main(void)
  79          {
  80   1              int i;
  81   1      
  82   1              init_lcd();
  83   1              
  84   1              write_cmd(0x80);
  85   1              while(outdata[i] != '\0')
  86   1              {
  87   2              write_data(outdata[i]);
  88   2              i++;
  89   2              if (i==16)
  90   2              write_cmd(0xc0);
  91   2              }
  92   1      }        


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    166    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     27       2
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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