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

📄 disp.lst

📁 通过C51来实现光照度测量的设计,而且通过电机带动。
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   DISP                                                                  12/15/2008 13:48:56 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE DISP
OBJECT MODULE PLACED IN Disp.OBJ
COMPILER INVOKED BY: D:\proteus&keil\keil\C51\BIN\C51.EXE Disp.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*
   2          ****************************************************
   3          
   4                          显示
   5          
   6          ****************************************************
   7          */
   8          
   9          #include <reg52.H>
  10          #include "Typedef.H"
  11          #include "UserDef.H"
  12          #include "Disp.h"
  13          #include "Font.H"
  14          
  15          
  16          /* 端口定义 */
  17          #define DISPDATAPORT    P0              //数据端口
  18          sbit Pin_CS1 = P1^0;                    //片选
  19          sbit Pin_CS2 = P1^1;                    //片选
  20          sbit Pin_RS = P1^4;                             //指令、数据选择(0=指令;1=数据)
  21          sbit Pin_RW = P3^6;                             //读写选择(0=写,1=读)
  22          sbit Pin_E = P1^2;                              //锁存(下降沿有效)
  23          sbit Pin_RST = P1^3;                            //锁存(下降沿有效)
  24          
  25          
  26          /*  全局变量 */
  27          static INT8U CurRow = 0;                //当前行
  28          static INT8U CurCol = 0;                //当前列
  29          static INT8U CurFont = 0;               //当前英文字体                          
  30          
  31          /***************************************
  32                  LCD忙等待
  33          ****************************************/
  34          void Busy(void)
  35                  {
  36   1              INT8U bf;
  37   1      
  38   1              Pin_E = 0;
  39   1              DISPDATAPORT = 0xFF;    //使端口为输入状态
  40   1              Pin_RW = 1;                             //读
  41   1              Pin_RS = 0;                             //指令
  42   1      
  43   1              while (1)
  44   1                      {
  45   2                      Pin_E = 1;
  46   2                      bf = DISPDATAPORT;
  47   2                      Pin_E = 0;
  48   2                      if ((bf & 0x80) == 0)
  49   2                              break;
  50   2                      }
  51   1              }
  52          
  53          /***************************************
  54                  LCD数据写
  55          ****************************************/
C51 COMPILER V7.50   DISP                                                                  12/15/2008 13:48:56 PAGE 2   

  56          void LCD_Data(INT8U Data)
  57                  {
  58   1              Busy();
  59   1              
  60   1              Pin_E = 0;
  61   1              Pin_RW = 0;             //写
  62   1              Pin_RS = 1;             //数据
  63   1      
  64   1              Pin_E = 1;
  65   1      
  66   1              DISPDATAPORT = Data;
  67   1      
  68   1              Pin_E = 0;
  69   1              }
  70          
  71          /***************************************
  72          
  73                  LCD命令写
  74          
  75          ****************************************/
  76          void LCD_Cmd(INT8U cmd)
  77                  {
  78   1              Busy();
  79   1              
  80   1              Pin_E = 0;
  81   1              Pin_RW = 0;             //写
  82   1              Pin_RS = 0;             //指令
  83   1      
  84   1              Pin_E = 1;
  85   1      
  86   1              DISPDATAPORT = cmd;
  87   1      
  88   1              Pin_E = 0;
  89   1              }
  90          
  91          /***************************************
  92          
  93                  显示图案        
  94          
  95          ****************************************/
  96          void LCD_Disp_Pattern(INT8U img,INT8U len)
  97                  {
  98   1              INT8U col;
  99   1      
 100   1              col = CurCol;
 101   1              if (col<64)
 102   1                      Pin_CS1 = 1;
 103   1              else
 104   1                      {
 105   2                      col -= 64;
 106   2                      Pin_CS2 = 1;
 107   2                      }
 108   1      
 109   1              LCD_Cmd(0xB8|CurRow);
 110   1              LCD_Cmd(0x40|col);
 111   1      
 112   1              while (len != 0)
 113   1                      {
 114   2                      LCD_Data(img);
 115   2                      len --;
 116   2                      col ++;
 117   2                      CurCol ++;
C51 COMPILER V7.50   DISP                                                                  12/15/2008 13:48:56 PAGE 3   

 118   2                      if (col>=64)
 119   2                              {
 120   3                              Pin_CS1 = 0;
 121   3                              Pin_CS2 = 1;
 122   3                              LCD_Cmd(0xB8|CurRow);
 123   3                              LCD_Cmd(0x40|0);
 124   3                              col -= 64;
 125   3                              }
 126   2                      }
 127   1              Pin_CS1 = 0;
 128   1              Pin_CS2 = 0;
 129   1              }
 130          
 131          
 132          /***************************************
 133          
 134                  显示图片
 135          
 136          ****************************************/
 137          void LCD_Disp_Pic(INT8U * img,INT8U len)
 138                  {
 139   1              INT8U col;
 140   1      
 141   1              col =CurCol;
 142   1      
 143   1              if (col<64)
 144   1                      Pin_CS1 = 1;
 145   1              else
 146   1                      {
 147   2                      col -= 64;
 148   2                      Pin_CS2 = 1;
 149   2                      }
 150   1              LCD_Cmd(0xB8|CurRow);
 151   1              LCD_Cmd(0x40|col);
 152   1      
 153   1              do
 154   1                      {
 155   2                      LCD_Data(*img);
 156   2                      len --;
 157   2                      col ++;
 158   2                      CurCol ++;
 159   2                      img ++;
 160   2                      if (col>=64)
 161   2                              {
 162   3                              Pin_CS1 = 0;
 163   3                              Pin_CS2 = 1;
 164   3                              LCD_Cmd(0xB8|CurRow);
 165   3                              LCD_Cmd(0x40|0);
 166   3                              col -= 64;
 167   3                              }
 168   2                      }while (len != 0);
 169   1              Pin_CS1 = 0;
 170   1              Pin_CS2 = 0;
 171   1              }
 172          
 173          
 174          
 175          /***************************************
 176          
 177                  获取整数的长度  
 178          
 179          ****************************************/
C51 COMPILER V7.50   DISP                                                                  12/15/2008 13:48:56 PAGE 4   

 180          static INT8U GetIntLen(INT32U val)
 181                  {
 182   1              INT8U len;
 183   1      
 184   1              len = 0;
 185   1              while (val != 0)
 186   1                      {
 187   2                      val /= 10;
 188   2                      len ++;
 189   2                      }
 190   1      
 191   1              if (len == 0)
 192   1                      len = 1;
 193   1      
 194   1              return len;
 195   1              }
 196          
 197          
 198          
 199          /***************************************
 200          
 201                  显示一个整数
 202                  入口参数:整数数值,长度
 203          
 204          ****************************************/
 205          void DispInt(INT32U val,INT8U len)
 206                  {
 207   1              INT32U n = 1;
 208   1              INT8U i;
 209   1              
 210   1              for (i=1;i<len;i++)
 211   1                      n *= 10;
 212   1      
 213   1              for (i=0;i<len;i++)
 214   1                      {
 215   2                      DispChr(val/n +'0');
 216   2                      val %= n;

⌨️ 快捷键说明

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