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

📄 lcd1602.lst

📁 单片机89C51,液晶LCD1602 显示程序,相关电路图索要gavin104@126.com
💻 LST
字号:
C51 COMPILER V7.50   LCD1602                                                               04/21/2007 17:45:23 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          ***************************************************************************
   3          *
   4          *                                       (C) Copyright 2007,单片机初学者园地
   5          *                          All Rights reserved.
   6          *
   7          *项目名称:    51单片机学习开发系统
   8          *                
   9          *本文件名称:LCD1602.c 
  10          *       
  11          * 完成作者 : 歪歪  
  12          * 当前版本 : V1.0        
  13          * 完成日期 : 2007年4月1日
  14          * 描    述 :  
  15          *                此程序实现,完成液晶的驱动程序,可以显示任意的ASCII字符
  16          *             
  17          *              
  18          ****************************************************************************
  19          */
  20          
  21          
  22          #include <reg52.h>               //调用头文件(单片机内部的寄存器定义)
  23          
  24          /******本段为硬件I/O口定义********/
  25          sbit    KEY0   = P0 ^ 0;         //KEY和发光管复用,请将4个跳线插到KEY端
  26          sbit    KEY1   = P0 ^ 1;
  27          sbit    KEY2   = P0 ^ 2;
  28          sbit    KEY3   = P0 ^ 3;
  29          sbit    DIG0   = P0 ^ 4;         //数码管位0
  30          sbit    DIG1   = P0 ^ 5;         //数码管位1
  31          
  32          sbit    BUZZ   = P3 ^ 3;         //蜂鸣器
  33          sbit    LCD_RW = P3 ^ 6;         
  34          sbit    LCD_RS = P3 ^ 7;         
  35          sbit    LCD_E  = P3 ^ 4;
  36          
  37          #define  LED_SEG    P1          //数码管
  38          #define  LCD_DATA   P2          //LCD
  39          #define  LCD_BUSY   0x80        // 用于检测LCD的BUSY标识
  40          
  41          void  lcd_init(void);
  42          void  display_string(unsigned  char x,unsigned  char y,unsigned  char *s);
  43          //LCD
  44           unsigned  char code LcdBuf1[]= {"welcom!"};
  45          unsigned  char code LcdBuf2[]= {"MCU-STUDY-BOARD"};
  46           //unsigned  char code LcdBuf2[]= {"current temp:  C"};
  47          
  48          //函数声明
  49          void  disp_selec(unsigned  char bit_selec,unsigned  char  seg);
  50          
  51          /**************************************************
  52          ** 函数名称: dellay
  53          ** 入口参数:h(unsigned int型)
  54          ** 出口参数:无
  55          ** 功能描述: 短暂延时,使用11.0592晶体,约0.01MS
C51 COMPILER V7.50   LCD1602                                                               04/21/2007 17:45:23 PAGE 2   

  56          ****************************************************/
  57          void dellay(unsigned int  h)
  58          {
  59   1        while(h--);      //0.01MS
  60   1      }
  61          
  62          unsigned  char    time_temp;               //全局变量,定时器加1
  63          unsigned  char    time_num;                    //全局变量,按一次键加1
  64          
  65          
  66          /************主程序**************/
  67          main()
  68          { 
  69   1          lcd_init();
  70   1              display_string(3,0,LcdBuf1);
  71   1              display_string(0,1,LcdBuf2);
  72   1       
  73   1         while(1);                    //单片机在此反复执行  
  74   1      } 
  75          
  76          //写数据
  77          
  78          void  WriteDataLcd(unsigned  char wdata)
  79          {
  80   1         LCD_DATA=wdata;
  81   1         LCD_RS=1;
  82   1         LCD_RW=0;
  83   1         LCD_E=0;
  84   1         dellay(100);     //短暂延时
  85   1         LCD_E=1;
  86   1      }
  87          //写命令
  88          void  WriteCommandLcd(unsigned  char wdata)
  89          {
  90   1         LCD_DATA=wdata;
  91   1         LCD_RS=0;
  92   1         LCD_RW=0;
  93   1         LCD_E=0;
  94   1         dellay(100);      //短暂延时
  95   1         LCD_E=1;
  96   1      }
  97          
  98          //LCD初始化
  99          void  lcd_init(void)
 100          {
 101   1         LCD_DATA=0;
 102   1         WriteCommandLcd(0x38);
 103   1         dellay(1000);
 104   1         WriteCommandLcd(0x38);
 105   1         dellay(1000);
 106   1           WriteCommandLcd(0x38);     //显示模式设置
 107   1               WriteCommandLcd(0x08); //关闭显示
 108   1               WriteCommandLcd(0x01); //显示清屏
 109   1               WriteCommandLcd(0x06); //显示光标移动设置
 110   1               WriteCommandLcd(0x0c); //显示开及光标移动设置
 111   1      }
 112          //设置光标
 113          void  display_xy(unsigned  char x,unsigned  char y)
 114          { 
 115   1          if(y==1)
 116   1         x+=0x40;
 117   1        x+=0x80;
C51 COMPILER V7.50   LCD1602                                                               04/21/2007 17:45:23 PAGE 3   

 118   1        WriteCommandLcd(x);
 119   1      }
 120          //显示单个字符
 121          void  display_char(unsigned  char x,unsigned  char y,unsigned  char dat)
 122          {
 123   1        display_xy(x,y);
 124   1        WriteDataLcd(dat);
 125   1      }
 126          
 127          //显示字符串
 128          void  display_string(unsigned  char x,unsigned  char y,unsigned  char *s)
 129          {
 130   1        display_xy(x,y);
 131   1        while(*s)
 132   1        {
 133   2         WriteDataLcd(*s);
 134   2         s++;
 135   2        }
 136   1      }
 137          
 138          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    165    ----
   CONSTANT SIZE    =     24    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      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 + -