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

📄 clcd.lst

📁 51单片机用c语言实例 包括ad
💻 LST
字号:
C51 COMPILER V7.09   CLCD                                                                  08/03/2005 14:28:35 PAGE 1   


C51 COMPILER V7.09, COMPILATION OF MODULE CLCD
OBJECT MODULE PLACED IN CLCD.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE CLCD.C OPTIMIZE(2,SPEED) BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*******************************************************
   2           * 文件名: LCD.C
   3           * 功能描述: 液晶控制实验
   4           *     显示"唐都科教仪器公司欢迎您!", 滚屏一周
   5           *******************************************************/
   6          
   7          #include "SST89x5x4.h"
   8          #include "lcd.h"
   9          sbit RW = P1^0;                                                 //读写控制
  10          sbit RS = P1^1;                                                 //数据, 命令切换
  11          sbit CS2 = P1^2;                                                //控制器2片选
  12          sbit CS1 = P1^3;                                                //控制器1片选
  13          sbit E  = P1^4;                                                 //使能信号
  14          sbit LT = P1^5;                                                 //背景灯控制
  15          void delay(char time);
  16          
  17          void Query(char chip);                                  //状态查询
  18          void Clear();                                                   //清屏
  19          void writehz(char xadd,char yadd,char chip,char* hz);
  20          
  21          char Wdata;
  22          char xadd;                                                              //X地址
  23          char yadd;                                                              //Y地址
  24          
  25          void SendMCmd(unsigned char cmd)                //向控制器1发送命令
  26          {
  27   1              Query(1); delay(1);                                     //查询忙状态
  28   1              RS = RW = CS1 = 0;                                      //控制写入命令
  29   1              P0 = cmd;
  30   1              E = 0; E = 1; E = 0; CS1 = 1;
  31   1      }
  32          void SendSCmd(unsigned char cmd)                //向控制器2发送命令
  33          {
  34   1              Query(2); delay(1);
  35   1              RS = RW = CS2 = 0;
  36   1              P0 = cmd;
  37   1              E = 0; E = 1; E = 0; CS2 = 1;
  38   1      }
  39          void SendMData(unsigned char dat)               //向控制器1写数据
  40          {
  41   1              Query(1); delay(1);
  42   1              RS = 1; RW = 0; CS1 = 0;
  43   1          P0 = dat;
  44   1              E = 0; E=1; E=0; CS1 = 1;
  45   1      }
  46          void SendSData(unsigned char dat)               //向控制器2写数据
  47          {
  48   1              Query(2); delay(1);
  49   1              RS = 1; RW = 0; CS2 = 0;
  50   1              P0 = dat;
  51   1              E=0; E=1; E=0; CS2 = 1;
  52   1      }
  53          void Query(char chip)                                   //状态查询,chip指出控制器号
  54          {                                                                               //chip=1为控制器1
  55   1              unsigned char xdata statu, count = 100;
C51 COMPILER V7.09   CLCD                                                                  08/03/2005 14:28:35 PAGE 2   

  56   1              RS = 0; RW = 1;
  57   1              if(chip == 1)   CS1 = 0;
  58   1              else CS2 = 0;
  59   1              do
  60   1              {
  61   2                      E = 1; statu = P0; E = 0;
  62   2                      if((statu&0x80)!=0x80) break;
  63   2              }while(count--);
  64   1              if(chip == 1)   CS1 = 1;
  65   1              else CS2 = 1;
  66   1      }
  67          
  68          void Clear()                                                    //清除显示屏
  69          {
  70   1              unsigned char i, j;
  71   1              for(i=0; i<8; i++)
  72   1              {
  73   2                      xadd = 0xb8+i; yadd = 0x40;
  74   2                      SendMCmd(xadd); SendSCmd(xadd); //设置X,Y地址
  75   2                      SendMCmd(yadd); SendSCmd(yadd);
  76   2                      for(j=0; j<64; j++)
  77   2                      {
  78   3                              SendMData(0x00); SendSData(0x00);       //为所以RAM写00
  79   3                      }
  80   2              }
  81   1      }
  82          void writehz(char xadd,char yadd,char chip,char* hz)
  83          {                                       //写汉字子程序 16*16
  84   1              int x,y;
  85   1              if(chip==0x01)                                          //为控制器1
  86   1              {
  87   2                      SendMCmd(xadd); SendMCmd(yadd);
  88   2      
  89   2                      for(x=0;x<2;x++)                                //写入汉字字模
  90   2                      {
  91   3                              for(y=0;y<16;y++)
  92   3                              {
  93   4                                      Wdata = hz[y+(x*16)];
  94   4                                      SendMData(Wdata);
  95   4                              }       
  96   3                              xadd++;
  97   3                              SendMCmd(xadd); SendMCmd(yadd);
  98   3                      }
  99   2              }
 100   1              else                                                            //为控制器2
 101   1              {
 102   2                      SendSCmd(xadd); SendSCmd(yadd);
 103   2      
 104   2                      for(x=0;x<2;x++)                                //写入汉字字模
 105   2                      {
 106   3                              for(y=0;y<16;y++)
 107   3                              {
 108   4                                      Wdata = hz[y+(x*16)];
 109   4                                      SendSData(Wdata);
 110   4                              }       
 111   3                              xadd++;
 112   3                              SendSCmd(xadd); SendSCmd(yadd);
 113   3                      }
 114   2              }
 115   1      }
 116          
 117          void main(void)
C51 COMPILER V7.09   CLCD                                                                  08/03/2005 14:28:35 PAGE 3   

 118          {
 119   1              unsigned char x; unsigned int y;
 120   1              LT = 0;                                                         //关闭背景灯
 121   1              SendMCmd(0x3f); SendSCmd(0x3f);         //打开显示
 122   1              SendMCmd(0xc0); SendSCmd(0xc0);         //设置起始行
 123   1              Clear();
 124   1              writehz(0xba,0x40,1,tang);                      //显示"唐"
 125   1              writehz(0xba,0x50,1,du);                        //都
 126   1              writehz(0xba,0x60,1,ke);                        //科
 127   1              writehz(0xba,0x70,1,jiao);                      //教
 128   1              writehz(0xba,0x40,2,yi);                        //仪
 129   1              writehz(0xba,0x50,2,qi);                        //器
 130   1              writehz(0xba,0x60,2,gong);                      //公
 131   1              writehz(0xba,0x70,2,si);                        //司
 132   1              writehz(0xbc,0x60,1,huan);                      //欢
 133   1              writehz(0xbc,0x70,1,ying);                      //迎
 134   1              writehz(0xbc,0x40,2,nin);                       //您
 135   1              writehz(0xbc,0x50,2,gantan);            //!
 136   1      
 137   1              for(x=0xc1;x<0xFF;x++)                          //滚屏一周
 138   1              {
 139   2                      SendMCmd(x); SendSCmd(x);
 140   2                      for(y=0; y<0x1000; y++) delay(0xff);
 141   2              }
 142   1              while(1);
 143   1      }
 144          
 145          void delay(char time)
 146          {
 147   1              char i;
 148   1              char j;
 149   1              for(i=0;i<=time;i++)
 150   1              {
 151   2                      for(j=0;j<=0x10;j++);
 152   2              }
 153   1      }
 154          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    891    ----
   CONSTANT SIZE    =    352    ----
   XDATA SIZE       =   ----       2
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     35      23
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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