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

📄 hw_disp.lst

📁 PID算法 C语言
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   HW_DISP                                                               11/10/2008 14:21:37 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE HW_DISP
OBJECT MODULE PLACED IN HW_Disp.OBJ
COMPILER INVOKED BY: E:\II\Software\Keil\C51\BIN\C51.EXE HW_Disp.c BROWSE DEBUG OBJECTEXTEND

line level    source

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

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

 118   1              while (len != 0)
 119   1              {
 120   2                      LCD_Data(img);
 121   2                      len --;
 122   2                      col ++;
 123   2                      CurCol ++;
 124   2                      if (col>=64)
 125   2                      {
 126   3                              Pin_CS1 = 0;
 127   3                              Pin_CS2 = 1;
 128   3                              LCD_Cmd(0xB8|CurRow);
 129   3                              LCD_Cmd(0x40|0);
 130   3                              col -= 64;
 131   3                      }
 132   2              }
 133   1              Pin_CS1 = 0;
 134   1              Pin_CS2 = 0;
 135   1      }
 136          
 137          void DispXYSet(INT8U row,INT8U col)
 138          {
 139   1              CurRow = row;
 140   1              CurCol = col;
 141   1      }
 142          
 143          void DispFont(INT8U font)
 144          {
 145   1              CurFont = font;
 146   1      }
 147          
 148          
 149          /***************************************
 150          
 151                  
 152          
 153          ****************************************/
 154          void LCD_Disp_Pic(INT8U * img,INT8U len)
 155          {
 156   1              INT8U col;
 157   1      
 158   1              col =CurCol;
 159   1      
 160   1              if (col<64)
 161   1                      Pin_CS1 = 1;
 162   1              else
 163   1              {
 164   2                      col -= 64;
 165   2                      Pin_CS2 = 1;
 166   2              }
 167   1              LCD_Cmd(0xB8|CurRow);
 168   1              LCD_Cmd(0x40|col);
 169   1      
 170   1              do
 171   1              {
 172   2                      LCD_Data(*img);
 173   2                      len --;
 174   2                      col ++;
 175   2                      CurCol ++;
 176   2                      img ++;
 177   2                      if (col>=64)
 178   2                      {
 179   3                              Pin_CS1 = 0;
C51 COMPILER V7.50   HW_DISP                                                               11/10/2008 14:21:37 PAGE 4   

 180   3                              Pin_CS2 = 1;
 181   3                              LCD_Cmd(0xB8|CurRow);
 182   3                              LCD_Cmd(0x40|0);
 183   3                              col -= 64;
 184   3                      }
 185   2              } while (len != 0);
 186   1              Pin_CS1 = 0;
 187   1              Pin_CS2 = 0;
 188   1      }
 189          
 190          
 191          /***************************************
 192          
 193                  获取整数的长度  
 194          
 195          ****************************************/
 196          static INT8U GetIntLen(INT32U val)
 197          {
 198   1              INT8U len;
 199   1      
 200   1              len = 0;
 201   1              while (val != 0)
 202   1              {
 203   2                      val /= 10;
 204   2                      len ++;
 205   2              }
 206   1      
 207   1              if (len == 0)
 208   1                      len = 1;
 209   1      
 210   1              return len;
 211   1      }
 212          
 213          
 214          
 215          
 216          /***************************************
 217          
 218                  显示一个字符
 219                  入口参数:字符,显示位置,是否闪烁

⌨️ 快捷键说明

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