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

📄 lcd.lst

📁 灭火控制盘(XMP4-2)
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V8.02   LCD                                                                   01/30/2008 15:09:49 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN LCD.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LCD.c LARGE BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //*************************************************************************
   2          //**模 块 名:LCD.c
   3          //**说    明:液晶功能函数
   4          //*************************************************************************
   5          #include <AT89x55.H>
   6          #include <INTRINS.H>
   7          #include "main.h"
   8          //*************************************************************************
   9          //**函 数 名:Write_Com1
  10          //**输    入:
  11          //**          cmdcode:命令
  12          //**输    出:无
  13          //**功能描述:向液晶左屏写命令
  14          //*************************************************************************
  15          void Write_Com1(uchar cmdcode)
  16          {
  17   1          //向液晶送命令
  18   1          WR_CMD1=cmdcode;
  19   1          //判断液晶是否忙
  20   1          while(RD_CMD1>0x7f);
  21   1      }
  22          //*************************************************************************
  23          //**函 数 名:Write_Com2
  24          //**输    入:
  25          //**          cmdcode:命令
  26          //**输    出:无
  27          //**功能描述:
  28          //**          1.向液晶右屏写命令
  29          //*************************************************************************
  30          void Write_Com2(uchar cmdcode)
  31          {
  32   1          //向液晶送命令
  33   1          WR_CMD2=cmdcode;
  34   1          //判断液晶是否忙
  35   1          while(RD_CMD2>0x7f);
  36   1      }
  37          //*************************************************************************
  38          //**函 数 名:Write_Data1
  39          //**输    入:
  40          //**          Dsipdata:数据
  41          //**输    出:无
  42          //**功能描述:
  43          //**          1.向液晶左屏写数据
  44          //*************************************************************************
  45          void Write_Data1(uchar Dispdata)
  46          {
  47   1          //向液晶送数据
  48   1          WR_DAT1=Dispdata;
  49   1          //判断液晶是否忙
  50   1          while(RD_CMD1>0x7f);
  51   1      }
  52          //*************************************************************************
  53          //**函 数 名:Write_Data2
  54          //**输    入:
  55          //**          Dsipdata:数据
C51 COMPILER V8.02   LCD                                                                   01/30/2008 15:09:49 PAGE 2   

  56          //**输    出:无
  57          //**功能描述:
  58          //**          1.向液晶右屏写数据
  59          //*************************************************************************
  60          void Write_Data2(uchar Dispdata)
  61          {
  62   1          //向液晶送数据
  63   1          WR_DAT2=Dispdata;
  64   1          //判断液晶是否忙
  65   1          while(RD_CMD2>0x7f);
  66   1      }
  67          //*************************************************************************
  68          //**函 数 名:Init_LCD
  69          //**输    入:无
  70          //**输    出:无
  71          //**功能描述:
  72          //**          1.液晶初始化
  73          //*************************************************************************
  74          void Init_LCD()
  75          {
  76   1          //关左屏
  77   1          Write_Com1(Disp_Off);
  78   1          //关右屏
  79   1          Write_Com2(Disp_Off);
  80   1          //左屏页地址清0
  81   1          Write_Com1(Page_Add+0);
  82   1          //右屏页地址清0
  83   1          Write_Com2(Page_Add+0);
  84   1          //左屏起始行清0
  85   1          Write_Com1(Start_Line+0);
  86   1          //右屏起始行清0
  87   1          Write_Com2(Start_Line+0);
  88   1          //左屏列地址清0
  89   1          Write_Com1(Col_Add+0);
  90   1          //右屏列地址清0
  91   1          Write_Com2(Col_Add+0);
  92   1          //开左屏
  93   1          Write_Com1(Disp_On);
  94   1          //开右屏
  95   1          Write_Com2(Disp_On);
  96   1      }
  97          //*************************************************************************
  98          //**函 数 名:Clr_Scr
  99          //**输    入:
 100          //**          DispStyle:清屏的类型 
 101          //**          DispStyle=1               向液晶送0x00
 102          //**          DispStyle=2               向液晶送0xFF
 103          //**输    出:无
 104          //**功能描述:
 105          //**          1.液晶清屏
 106          //*************************************************************************
 107          void Clr_Scr(uchar DispStyle)
 108          {
 109   1          //循环变量
 110   1          uchar xdata j,k;
 111   1          //初始化液晶
 112   1          Init_LCD();
 113   1          Write_Com1(Page_Add + 0);
 114   1          Write_Com1(Col_Add  + 0);
 115   1          //循环向液晶送数
 116   1          for(k = 0;k < 8;k++)
 117   1              {
C51 COMPILER V8.02   LCD                                                                   01/30/2008 15:09:49 PAGE 3   

 118   2               Write_Com1(Page_Add + k);
 119   2               for(j = 0;j < 64;j++ )
 120   2                   {
 121   3                    Write_Data1(DispStyle);
 122   3                    }
 123   2               }
 124   1          Write_Com2(Page_Add + 0);
 125   1          Write_Com2(Col_Add  + 0);
 126   1          //循环向液晶送数
 127   1          for(k = 0;k < 8;k++)
 128   1              {
 129   2               Write_Com2(Page_Add + k);
 130   2               for(j = 0;j < 64;j++ )
 131   2                   {
 132   3                    Write_Data2(DispStyle);
 133   3                    }
 134   2               }
 135   1      }
 136          //*************************************************************************
 137          //**函 数 名:HzDisp1216
 138          //**输    入:
 139          //**          pag      :汉字显示的行地址
 140          //**          col      :汉字显示的列地址
 141          //**          *hzk     :汉字数组的首地址
 142          //**          fan      :是否反白显示
 143          //**输    出:无
 144          //**功能描述:
 145          //**          1.在指定位置显示12*16点阵的汉字
 146          //*************************************************************************
 147          void HzDisp1216(uchar pag,uchar col, uchar code *hzk,bit fan)
 148          {
 149   1      //循环变量
 150   1      uchar xdata j,i;
 151   1      //临时变量
 152   1      uchar xdata temp;
 153   1      //是否跨区
 154   1      bit flag;
 155   1      temp = col;
 156   1      for(j = 0;j < 2;j++)
 157   1          {
 158   2           col = temp;
 159   2           Write_Com1(Page_Add + pag + j);
 160   2           Write_Com2(Page_Add + pag + j);
 161   2           if(col<64)
 162   2              {
 163   3               flag=0;
 164   3               Write_Com1(Col_Add + col);
 165   3               }
 166   2           else
 167   2              {
 168   3               flag=1;
 169   3               Write_Com2(Col_Add + col - 64);
 170   3               }
 171   2           for(i = 0;i < 12;i++)
 172   2               {
 173   3                if(flag == 1)
 174   3                   {
 175   4                    if(fan) Write_Data2(~hzk[12 * j + i]);
 176   4                    else
 177   4                       Write_Data2(hzk[12 * j + i]);
 178   4                    }
 179   3                if(flag == 0)
C51 COMPILER V8.02   LCD                                                                   01/30/2008 15:09:49 PAGE 4   

 180   3                   {
 181   4                    if(fan) Write_Data1(~hzk[12 * j + i]);
 182   4                    else
 183   4                       Write_Data1(hzk[12 * j + i]);
 184   4                    }
 185   3                 col++;
 186   3                 if((col >= 64) && (flag == 0))
 187   3                   {
 188   4                    flag = 1;
 189   4                    Write_Com2(Col_Add + col - 64);
 190   4                    }
 191   3                 }
 192   2           }
 193   1      }
 194          //*************************************************************************
 195          //**函 数 名:AscDisp68
 196          //**输    入:
 197          //**          pag      :汉字显示的行地址
 198          //**          col      :汉字显示的列地址
 199          //**          *hzk     :汉字数组的首地址
 200          //**          fan      :是否反白显示
 201          //**输    出:无
 202          //**功能描述:
 203          //**          1.显示8*16的符号
 204          //*************************************************************************
 205          void Asc_Disp68(uchar pag,uchar col, uchar code *hzk, bit fan)
 206          {
 207   1      //循环变量
 208   1      uchar xdata i;
 209   1      //临时变量
 210   1      uchar xdata temp;
 211   1      //是否跨区
 212   1      bit flag;
 213   1      temp = col;
 214   1      col  = temp;
 215   1      //设置字符显示的行地址(左屏)
 216   1      Write_Com1(Page_Add + pag);
 217   1      //设置字符显示的行地址(右屏)
 218   1      Write_Com2(Page_Add + pag);
 219   1      if(col < 64)
 220   1         {
 221   2          //flag=0,表示此字符在左屏显示
 222   2              flag = 0;
 223   2              //列地址小于64设置左屏的列地址
 224   2              Write_Com1(Col_Add + col);
 225   2          }
 226   1      else
 227   1         {
 228   2              flag = 1;
 229   2              //列地址小于64设置左屏的列地址
 230   2              Write_Com2(Col_Add + col - 64);
 231   2          }
 232   1      //循环6次向液晶送
 233   1      for(i = 0;i < 6;i++)
 234   1          {
 235   2               if(flag == 1)
 236   2                  {
 237   3               if(fan)
 238   3                              //fan为1表示反白显示
 239   3                  Write_Data2(~hzk[i]);
 240   3                   else
 241   3                              //fan为0表示正常显示

⌨️ 快捷键说明

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