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

📄 lcd1602.lst

📁 一个实用的单片机试验程序
💻 LST
字号:
C51 COMPILER V7.09   LCD1602                                                               08/24/2007 09:34:05 PAGE 1   


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

line level    source

   1          #include <reg51.h>
   2          #include "LCD1602.h"
   3          
   4          //短延时函数:ShortDelay()
   5          void ShortDelay(uchar i)
   6          {
   7   1              for(;i>0;i--) ;
   8   1              }
   9                  
  10          //长延时函数:LongDelay()
  11          void LongDelay(uint i)
  12          {
  13   1              uint j;
  14   1              for(;i>0;i--)
  15   1                      { for(j=1000;j>0;j--);}
  16   1              }
  17                  
  18          //寄存器选择信号:SetRS()
  19          void  SetRS(bit i)
  20          {
  21   1              if(i==1) PinRS = 1;
  22   1              else     PinRS = 0;
  23   1              }
  24          
  25          //读写操作控制信号:SetRW()
  26          void SetRW(bit i)
  27          {
  28   1              if(i==1) PinRW = 1;
  29   1              else     PinRW = 0;
  30   1              }
  31          
  32          //使能信号:SetE()
  33          void SetE(bit i)
  34          {
  35   1              if(i==1) PinE = 1;
  36   1              else     PinE = 0;
  37   1              }       
  38                  
  39          //IO输入输出控制
  40          void InitP0(bit i) 
  41          {
  42   1              if(i==1) P0 = 0xff;
  43   1              else     P0 = 0x00;
  44   1              } 
  45                          
  46          //写指令函数:WriteInstruc()
  47          void WriteInstruc(uint Instruc)
  48          {
  49   1              while(StatusCheck());
  50   1              InitP0(0);
  51   1              SetRS(0);
  52   1              SetRW(0);
  53   1              //ShortDelay(1);
  54   1              SetE(0);
  55   1              PinData = Instruc;
C51 COMPILER V7.09   LCD1602                                                               08/24/2007 09:34:05 PAGE 2   

  56   1              //ShortDelay(1);
  57   1              SetE(1);
  58   1              ShortDelay(10);
  59   1              SetE(0);
  60   1              //ShortDelay(1);
  61   1              SetRW(1);
  62   1              SetRS(1);
  63   1              }
  64                  
  65          //读BF以及AC的值函数:Read_BF_AC()
  66          uint Read_BF_AC()
  67          {
  68   1              uint temp;
  69   1              InitP0(1);
  70   1              SetRS(0);
  71   1              SetRW(1);
  72   1              //ShortDelay(1);
  73   1              SetE(0);
  74   1              //ShortDelay(1);
  75   1              SetE(1);
  76   1              ShortDelay(1);
  77   1              temp = PinData;
  78   1              ShortDelay(10);
  79   1              SetE(0);
  80   1              //ShortDelay(1);
  81   1              SetRW(0);
  82   1              SetRS(1);
  83   1              return(temp);
  84   1              }
  85                  
  86          //写数据到RAM函数:WriteData()
  87          void WriteData(uint data1)
  88          {
  89   1              InitP0(0);
  90   1              SetRS(1);
  91   1              SetRW(0);
  92   1              //ShortDelay(1);
  93   1              SetE(0);
  94   1              PinData = data1;
  95   1              //ShortDelay(1);
  96   1              SetE(1);
  97   1              ShortDelay(10);
  98   1              SetE(0);
  99   1              //ShortDelay(1);
 100   1              SetRW(1);
 101   1              SetRS(0);
 102   1              }
 103                  
 104          //从RAM读数据函数:ReadData()
 105          uint ReadData(void)
 106          {
 107   1              uint temp;
 108   1              InitP0(1);
 109   1              SetRS(1);
 110   1              SetRW(1);
 111   1              //ShortDelay(1);
 112   1              SetE(0);
 113   1              //ShortDelay(1);
 114   1              SetE(1);
 115   1              ShortDelay(1);
 116   1              temp = PinData;
 117   1              ShortDelay(10);
C51 COMPILER V7.09   LCD1602                                                               08/24/2007 09:34:05 PAGE 3   

 118   1              SetE(0);
 119   1              //ShortDelay(1);
 120   1              SetRW(0);
 121   1              SetRS(0);
 122   1              return(temp);
 123   1              }
 124          
 125          //检测LCD控制器状态函数:StatusCheck()
 126          //返回一bit数:1 —— 忙;0 —— 闲
 127          bit StatusCheck()
 128          {
 129   1              return((bit)(Read_BF_AC() & 0x80));
 130   1              }
 131          
 132          //在指定位置显示字符函数: DispCharacter()
 133          //  x为行号,y为列号,        
 134          //  data为显示字符的码字数据   
 135          void DispCharacter(uint x, uint y, uint data1)
 136          {
 137   1              uint temp;       
 138   1              while(StatusCheck());  //若LCD控制器忙,则等待
 139   1              
 140   1              temp = y & 0x0f;
 141   1              x &= 0x01;
 142   1              if(x) temp |= 0x40;
 143   1              SetDDRAM_Add(temp);       //设置显示位置
 144   1              
 145   1              WriteData(data1);       
 146   1              }
 147          
 148          //LCD复位函数:LCDReset()
 149          void LCDReset()
 150          {
 151   1              ClearScreen();
 152   1              CursorReturn();
 153   1              }


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


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

⌨️ 快捷键说明

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