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

📄 1602.lst

📁 51实例大全
💻 LST
字号:
C51 COMPILER V7.06   1602                                                                  07/15/2010 00:21:04 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE 1602
OBJECT MODULE PLACED IN .\obj\1602.obj
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE 1602.c BROWSE DEBUG OBJECTEXTEND PRINT(.\obj\1602.lst) OBJECT(.\obj\1602.ob
                    -j)

stmt level    source

   1          /*-----------------------------------------------
   2            名称:LCD1602
   3            论坛:www.doflye.net
   4            编写:shifang
   5            日期:2009.5
   6            修改:无
   7            内容:
   8            引脚定义如下:1-VSS 2-VDD 3-V0 4-RS 5-R/W 6-E 7-14 DB0-DB7 15-BLA 16-BLK
   9          ------------------------------------------------*/
  10          #include "1602.h"
  11          #include "delay.h"
  12          
  13          sbit RS = P2^4;   //定义端口 
  14          sbit RW = P2^5;
  15          sbit EN = P2^6;
  16          
  17          #define RS_CLR RS=0 
  18          #define RS_SET RS=1
  19          
  20          #define RW_CLR RW=0 
  21          #define RW_SET RW=1 
  22          
  23          #define EN_CLR EN=0
  24          #define EN_SET EN=1
  25          
  26          #define DataPort P0
  27          
  28          /*------------------------------------------------
  29                        判忙函数
  30          ------------------------------------------------*/
  31           bit LCD_Check_Busy(void) 
  32           { 
  33   1       DataPort= 0xFF; 
  34   1       RS_CLR; 
  35   1       RW_SET; 
  36   1       EN_CLR; 
  37   1       _nop_(); 
  38   1       EN_SET;
  39   1       return (bit)(DataPort & 0x80);
  40   1       }
  41          /*------------------------------------------------
  42                        写入命令函数
  43          ------------------------------------------------*/
  44           void LCD_Write_Com(unsigned char com) 
  45           {  
  46   1       while(LCD_Check_Busy()); //忙则等待
  47   1       RS_CLR; 
  48   1       RW_CLR; 
  49   1       EN_SET; 
  50   1       DataPort= com; 
  51   1       _nop_(); 
  52   1       EN_CLR;
  53   1       }
  54          /*------------------------------------------------
C51 COMPILER V7.06   1602                                                                  07/15/2010 00:21:04 PAGE 2   

  55                        写入数据函数
  56          ------------------------------------------------*/
  57           void LCD_Write_Data(unsigned char Data) 
  58           { 
  59   1       while(LCD_Check_Busy()); //忙则等待
  60   1       RS_SET; 
  61   1       RW_CLR; 
  62   1       EN_SET; 
  63   1       DataPort= Data; 
  64   1       _nop_();
  65   1       EN_CLR;
  66   1       }
  67          
  68          /*------------------------------------------------
  69                          清屏函数
  70          ------------------------------------------------*/
  71           void LCD_Clear(void) 
  72           { 
  73   1       LCD_Write_Com(0x01); 
  74   1       DelayMs(5);
  75   1       }
  76          /*------------------------------------------------
  77                        写入字符串函数
  78          ------------------------------------------------*/
  79           void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) 
  80           {     
  81   1       if (y == 0) 
  82   1              {     
  83   2               LCD_Write_Com(0x80 + x);     //表示第一行
  84   2              }
  85   1       else 
  86   1              {      
  87   2              LCD_Write_Com(0xC0 + x);      //表示第二行
  88   2              }        
  89   1       while (*s) 
  90   1              {     
  91   2       LCD_Write_Data( *s);     
  92   2       s ++;     
  93   2              }
  94   1       }
  95          /*------------------------------------------------
  96                        写入字符函数
  97          ------------------------------------------------*/
  98           void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data) 
  99           {     
 100   1       if (y == 0) 
 101   1              {     
 102   2              LCD_Write_Com(0x80 + x);     
 103   2              }    
 104   1       else 
 105   1              {     
 106   2              LCD_Write_Com(0xC0 + x);     
 107   2              }        
 108   1       LCD_Write_Data( Data);  
 109   1       }
 110          /*------------------------------------------------
 111                        初始化函数
 112          ------------------------------------------------*/
 113           void LCD_Init(void) 
 114           {
 115   1         LCD_Write_Com(0x38);    /*显示模式设置*/ 
 116   1         DelayMs(5); 
C51 COMPILER V7.06   1602                                                                  07/15/2010 00:21:04 PAGE 3   

 117   1         LCD_Write_Com(0x38); 
 118   1         DelayMs(5); 
 119   1         LCD_Write_Com(0x38); 
 120   1         DelayMs(5); 
 121   1         LCD_Write_Com(0x38);  
 122   1         LCD_Write_Com(0x08);    /*显示关闭*/ 
 123   1         LCD_Write_Com(0x01);    /*显示清屏*/ 
 124   1         LCD_Write_Com(0x06);    /*显示光标移动设置*/ 
 125   1         DelayMs(5); 
 126   1         LCD_Write_Com(0x0C);    /*显示开及光标设置*/
 127   1         }
 128          /*------------------------------------------------   
 129          设定二个自定义字符,LCD1602中自定义字符的地址为0x00--0x07,
 130          即可定义8个字符
 131          这里我们设定把一个自定义字符放在0x00位置(000),
 132          另一个放在0x01位子(001)
 133          ------------------------------------------------*/
 134          void Lcd_User_Chr(void)
 135          { //第一个自定义字符
 136   1       LCD_Write_Com(0x40); //"01 000 000"  第1行地址 (D7D6为地址设定命令形式

⌨️ 快捷键说明

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