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

📄 ds1820.lst

📁 温度传感器DS18B20测温+显示+键盘
💻 LST
字号:
C51 COMPILER V8.05a   DS1820                                                               06/18/2007 12:13:23 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE DS1820
OBJECT MODULE PLACED IN ds1820.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ds1820.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //cs1=0,cs2=1选左
   2          #include <reg51.h>
   3          #include <intrins.h>
   4          sbit   P30 = P3^0;
   5          sbit   P31 = P3^1;
   6          sbit   P32 = P3^2;
   7          sbit   P33 = P3^3;
   8          sbit   P34 = P3^4;
   9          sbit   P35 = P3^5;
  10          sbit   P36 = P3^6;
  11          sbit   P37 = P3^7;
  12          #define LCD_DATA P2
  13          #define LCD_RS P30
  14          #define LCD_RW P31
  15          #define LCD_E  P32
  16          #define LCD_CS1  P33
  17          #define LCD_CS2  P34
  18          #define LCD_RST  P35
  19          #define SELECTCS 0
  20          #define SELECTCS 0
  21          char code Han[]=
  22          { 0x10,0x60,0x01,0x86,0x60,0x04,0x1C,0xE4,0x04,0x04,0x04,0xE4,0x1C,0x04,0x00,0x00,
  23          0x04,0x04,0x7E,0x01,0x40,0x20,0x20,0x10,0x0B,0x04,0x0B,0x10,0x30,0x60,0x20,0x00,
  24          /*0x00,0x10,0x61,0x06,0xC0,0x30,0x02,0x3E,0xC2,0x02,0x82,0x62,0x1F,0x02,0x00,0x00,
  25          0x00,0x02,0x02,0x3F,0x20,0x20,0x10,0x08,0x05,0x02,0x05,0x08,0x10,0x30,0x10,0x00,        */
  26          }; 
  27          /*--  文字:  字  --*/
  28          char code Zi[]=
  29          {
  30          0x00,0x00,0x10,0x0C,0x14,0x14,0x14,0x15,0xD6,0x54,0x34,0x14,0x14,0x8C,0x00,0x00,
  31          0x00,0x01,0x01,0x01,0x01,0x01,0x11,0x21,0x1F,0x01,0x01,0x01,0x01,0x01,0x01,0x00,
  32          };
  33          void LCD_Check_Busy1(void)
  34            {
  35   1         while(1)
  36   1              {
  37   2                LCD_E = 0;
  38   2                LCD_RS = 0;
  39   2                LCD_RW = 1;
  40   2                LCD_DATA = 0xff;
  41   2                LCD_E = 1;
  42   2                if(!(LCD_DATA&0X80)) break;
  43   2           }
  44   1         LCD_E = 0;
  45   1        }
  46          void LCD_Check_Busy2(void)
  47            {
  48   1         while(1)
  49   1              {
  50   2                LCD_E = 0;
  51   2                LCD_RS = 0;
  52   2                LCD_RW = 1;
  53   2                LCD_DATA = 0xff;
  54   2                LCD_E = 1;
  55   2                if(!(LCD_DATA&0X80)) break;
C51 COMPILER V8.05a   DS1820                                                               06/18/2007 12:13:23 PAGE 2   

  56   2           }
  57   1         LCD_E = 0;
  58   1        }
  59            void LCD_SELECT1(void)
  60            {
  61   1        LCD_CS1=0;
  62   1        LCD_CS2=1;
  63   1        }
  64            void LCD_SELECT2(void)
  65            {
  66   1        LCD_CS1=1;
  67   1        LCD_CS2=0;
  68   1        }
  69            void LCD_WriteCommand1(char ch) 
  70          {       LCD_SELECT1();
  71   1              LCD_Check_Busy1(); //判断LCD是否处于忙状态
  72   1       
  73   1              LCD_RW=0;
  74   1              LCD_RS=0;
  75   1              LCD_DATA=ch;
  76   1              LCD_E=1;
  77   1              LCD_E=0;
  78   1       
  79   1      }
  80          void LCD_WriteCommand2(char ch) 
  81          {
  82   1              LCD_SELECT2();
  83   1              LCD_Check_Busy2();
  84   1              LCD_RW=0;
  85   1              LCD_RS=0;
  86   1              LCD_DATA=ch;
  87   1              LCD_E=1;
  88   1              LCD_E=0;
  89   1       
  90   1      }
  91          void LCD_WriteData1(char ch)    
  92          {
  93   1      LCD_SELECT1();
  94   1              LCD_Check_Busy1();
  95   1              LCD_RW=0;
  96   1              LCD_RS=1;
  97   1              LCD_DATA=ch;
  98   1              LCD_E=1;
  99   1              LCD_E=0;
 100   1      
 101   1      }
 102          void LCD_WriteData2(char ch)
 103          {
 104   1      LCD_SELECT2();
 105   1              LCD_Check_Busy2();
 106   1              LCD_RW=0;
 107   1              LCD_RS=1;
 108   1              LCD_DATA=ch;
 109   1              LCD_E=1;
 110   1              LCD_E=0;
 111   1      
 112   1      }
 113          
 114          void Delay1ms(unsigned char T)
 115          {
 116   1        unsigned char i,j;
 117   1        for(i=0;i<T;i++)
C51 COMPILER V8.05a   DS1820                                                               06/18/2007 12:13:23 PAGE 3   

 118   1              for(j=0;j<250;j++)
 119   1              _nop_();
 120   1      }
 121          
 122          void Delay1s(unsigned char T)
 123          {
 124   1              while (T)
 125   1              {
 126   2                      Delay1ms(200);
 127   2                      Delay1ms(200);
 128   2                      Delay1ms(200);
 129   2                      Delay1ms(200);
 130   2                      Delay1ms(200);
 131   2                      T--;
 132   2              }
 133   1      }
 134          void LCD_WriteHZ(char x,char y,char *Dot) 
 135          {
 136   1      char i;
 137   1              for (i=0;i<32;i++)
 138   1              {
 139   2                      if ((x+i%16)<64) //横向坐标小于64时在左屏显示汉字
 140   2                      {
 141   3                              LCD_WriteCommand1(0xB8+y+i/16);
 142   3                              LCD_WriteCommand1(0x40+x+i%16);
 143   3                              LCD_WriteData1(Dot[i]);
 144   3                      }
 145   2                      else             //横向坐标大于64时在右屏显示汉字
 146   2                      {
 147   3                              LCD_WriteCommand2(0xB8+y+i/16);
 148   3                              LCD_WriteCommand2(0x40+x-64+i%16);
 149   3                              LCD_WriteData2(Dot[i]);
 150   3                      }
 151   2              }
 152   1      }
 153          void DispBmp(char *buf) //显示一幅位图
 154          {
 155   1      int i,j;
 156   1              for (j=0;j<8;j++)                       //显示位图
 157   1              {
 158   2                      LCD_WriteCommand1(0xB8+j);      
 159   2                      LCD_WriteCommand1(0x40);
 160   2                      for (i=0;i<64;i++)
 161   2                              LCD_WriteData1(buf[(j*2)*64+i]);
 162   2                      LCD_WriteCommand2(0xB8+j);      
 163   2                      LCD_WriteCommand2(0x40);
 164   2                      for (i=0;i<64;i++)
 165   2                              LCD_WriteData2(buf[(j*2+1)*64+i]);
 166   2              }
 167   1      }
 168          void InitLCD(void)      
 169          {
 170   1              char i,j;
 171   1              LCD_RST=0;
 172   1              Delay1ms(1);
 173   1              LCD_RST=1;
 174   1              LCD_WriteCommand1(0xc0);        
 175   1              LCD_WriteCommand2(0xc0);
 176   1              LCD_WriteCommand1(0x3f);        //开显示
 177   1              LCD_WriteCommand2(0x3f);
 178   1              for (j=0;j<8;j++)                       //清屏
 179   1              {
C51 COMPILER V8.05a   DS1820                                                               06/18/2007 12:13:23 PAGE 4   

 180   2                      LCD_WriteCommand1(0xB8+j);      //清左半屏
 181   2                      LCD_WriteCommand1(0x40);
 182   2                      for (i=0;i<64;i++)
 183   2                              LCD_WriteData1(0x00);
 184   2                      LCD_WriteCommand2(0xB8+j);      //清右半屏
 185   2                      LCD_WriteCommand2(0x40);
 186   2                      for (i=0;i<64;i++)
 187   2                              LCD_WriteData2(0x00);
 188   2              }
 189   1      }
 190          void main (void) 
 191          {   
 192   1         InitLCD();
 193   1      while(1)
 194   1              {          
 195   2                DispBmp(screen1); //显示位图"新华龙电子-单片机推广应用急先锋!"
*** ERROR C202 IN LINE 195 OF DS1820.C: 'screen1': undefined identifier
 196   2                      Delay1s(1);
 197   2                      DispBmp(screen2); //显示位图"换代创新后的51-高速SOC美国silicon labs 8051F"
*** ERROR C202 IN LINE 197 OF DS1820.C: 'screen2': undefined identifier
 198   2                      Delay1s(1);
 199   2                      InitLCD();        //清屏
 200   2                      LCD_WriteHZ(0,4,Han); //显示16*16点阵汉字'汉'
 201   2              Delay1ms(100);
 202   2                      LCD_WriteHZ(60,3,Zi); //显示16*16点阵汉字'字'
 203   2                      Delay1s(1);
 204   2       
 205   2              }
 206   1      }

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

⌨️ 快捷键说明

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