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

📄 text1.lst

📁 用c语言编程完成温度检测与液晶显示显示功能。
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   TEXT1                                                                 05/11/2008 06:39:19 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN Text1.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Text1.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <reg51.h>
   2          #include <intrins.h>
   3          #define uchar unsigned char
   4          #define uint unsigned int
   5          #define outdat  P2
   6          
   7          sbit DQ0=P1^0;   //定义变量DQ0与P1^0相同,即温度传感器数据总线DQ0与单片机P1.0连接
   8          sbit DQ1=P1^1;
   9          
  10          sbit cs2= P0^0;
  11          sbit rw = P0^3;
  12          sbit rs= P0^4;
  13          sbit cs1= P0^1;
  14          sbit e= P0^2;
  15          
  16          
  17          /***********************************************************************************************/
  18          /*                       字形码                                                                */
  19          /***********************************************************************************************/
  20          char code  wen[32]={0x02,0xFE,0x01,0x40,0x7F,0x41,0x41,0x7F,0x41,0x41,0x7F,0x41,0x41,0x7F,0x40,0x00,
  21                              0x10,0x21,0x86,0x70,0x00,0x7E,0x4A,0x4A,0x4A,0x4A,0x4A,0x7E,0x00,0x00,0x00,0x00};
  22          char code  du[32]={0x80,0x60,0x1F,0x80,0x80,0x42,0x46,0x2A,0x12,0x12,0x2A,0x26,0x42,0xC0,0x40,0x00,
  23                              0x00,0x00,0xFC,0x04,0x24,0x24,0xFC,0xA5,0xA6,0xA4,0xFC,0x24,0x24,0x24,0x04,0x00};
  24          char code  zhuang[32]={0x04,0x02,0x01,0xFF,0x40,0x20,0x18,0x07,0x00,0x00,0x03,0x0C,0x30,0x60,0x20,0x00,
  25                              0x08,0x30,0x00,0xFF,0x20,0x20,0x20,0x20,0xFF,0x20,0xE1,0x26,0x2C,0x20,0x20,0x00};
  26          char code  tai[32]={0x00,0x60,0x39,0x01,0x00,0x3C,0x40,0x42,0x4C,0x40,0x40,0x70,0x04,0x09,0x31,0x00,
  27                              0x00,0x04,0x04,0x04,0x84,0x44,0x34,0x4F,0x94,0x24,0x44,0x84,0x84,0x04,0x00,0x00};
  28          char code  xu[32]={0x80,0x60,0x1F,0x00,0x01,0x01,0x01,0x41,0x81,0x7F,0x01,0x01,0x01,0x03,0x01,0x00,
  29                              0x00,0x00,0xFC,0x04,0x04,0x14,0x14,0x35,0x56,0x94,0x54,0x34,0x14,0x04,0x04,0x00};
  30          char code  hao[32]={0x00,0x00,0x00,0x02,0x07,0x02,0x02,0x22,0x42,0x82,0x42,0x3E,0x00,0x00,0x00,0x00,
  31                              0x40,0x40,0x40,0x5F,0xD1,0x51,0x51,0x51,0x51,0x51,0x51,0x5F,0x40,0x40,0x40,0x00};
  32          
  33          
  34          char code  no[16]={0x00,0x7E,0x04,0x08,0x10,0x20,0x7E,0x00,0x00,0x7E,0x42,0x42,0x42,0x42,0x7E,0x00};
  35          char code  on[16]={0x00,0x7E,0x42,0x42,0x42,0x42,0x7E,0x00,0x00,0x7E,0x04,0x08,0x10,0x20,0x7E,0x00};
  36          char code  off[16]={0x00,0x7E,0x42,0x42,0x7E,0x00,0x7E,0x12,0x12,0x12,0x00,0x7E,0x12,0x12,0x12,0x00};
  37          
  38          
  39          /*********************************************************************************/
  40          /*                                十个数字                                       */
  41          /*********************************************************************************/
  42          char code  z[10][8]={0x00,0xFE,0x82,0x82,0x82,0xFE,0x00,0x00
  43                               ,0x00,0x00,0x44,0x7E,0x40,0x00,0x00,0x00
  44                               ,0x00,0xF2,0x92,0x92,0x92,0x9E,0x00,0x00
  45                               ,0x00,0x92,0x92,0x92,0x92,0xFE,0x00,0x00
  46                               ,0x00,0x30,0x28,0xA4,0xFE,0xA0,0x00,0x00
  47                               ,0x00,0x9E,0x92,0x92,0x92,0xF2,0x00,0x00
  48                               ,0x00,0xFE,0x92,0x92,0x92,0xF2,0x00,0x00
  49                               ,0x00,0x00,0x02,0x02,0xF2,0x1E,0x00,0x00
  50                               ,0x00,0xFE,0x92,0x92,0x92,0xFE,0x00,0x00
  51                               ,0x00,0x9E,0x92,0x92,0x92,0xFE,0x00,0x00};
  52          
  53          
  54          /****************************************************************/
  55          /*                      LCD显示程序                             */
C51 COMPILER V7.06   TEXT1                                                                 05/11/2008 06:39:19 PAGE 2   

  56          /****************************************************************/
  57          
  58          void busy(uchar cs)      
  59          {
  60   1              outdat=0xFF;    //释放总线,以读取状态字
  61   1              if(cs)    //片2测忙
  62   1              {
  63   2                 rs=0;
  64   2                 rw=1;
  65   2                 cs1=0;
  66   2                 cs2=1;
  67   2                 e=1;
  68   2                 while((outdat&0x80)==0x80); //buzy=1时,再读,等待至busy=0
  69   2                 e=0;
  70   2              }
  71   1              else
  72   1              {                //片1测忙
  73   2                 rs=0;
  74   2                 rw=1;
  75   2                 cs2=0;
  76   2                 cs1=1;
  77   2                 e=1;
  78   2                 while((outdat&0x80)==0x80);
  79   2                 e=0;
  80   2              }
  81   1      }
  82          void  com_w(uchar com,uchar cs)  //写指令
  83          
  84          {
  85   1               busy(cs);
  86   1               outdat=com;
  87   1               rw=0;
  88   1               e=1;
  89   1               e=0;
  90   1      }
  91          void   data_w(uchar dat, uchar cs)  //写数据
  92          {
  93   1               busy(cs);              
  94   1               rs=1;
  95   1               rw=0;
  96   1               outdat=dat;
  97   1               e=1;
  98   1               e=0;
  99   1      }
 100          
 101          void lcd_init() 
 102                  {
 103   1              unsigned int i,j;
 104   1              com_w(0x3e+1,0);//显示开关
 105   1              com_w(0xc0+0,0);//修改显示起始行
 106   1              //com_w(0xb8+0,0);//修改页地址
 107   1              //com_w(0x40+0,0);//修改列地址
 108   1              com_w(0x3e+1,1);
 109   1              com_w(0xc0+0,1);
 110   1              //com_w(0xb8+0,1);
 111   1              //com_w(0x40+0,1);
 112   1      
 113   1               for(i=0;i<8;i++)     //lcd初始设置,所有点清零
 114   1                {
 115   2                  com_w(0xb8+i,0);
 116   2                  com_w(0x40+0,0);
 117   2                      for(j=0;j<64;j++)
C51 COMPILER V7.06   TEXT1                                                                 05/11/2008 06:39:19 PAGE 3   

 118   2                        data_w(0x00,0) ;
 119   2                 }
 120   1      
 121   1                for(i=0;i<8;i++)
 122   1                {
 123   2                  com_w(0xb8+i,1);
 124   2                  com_w(0x40+0,1);
 125   2                      for(j=0;j<64;j++)
 126   2                        data_w(0x00,1) ;
 127   2                 }
 128   1      }
 129          
 130          void hz16x16(uchar hang ,uchar lie,char hz[32])   //汉字显示程序
 131            {
 132   1          unsigned char i;
 133   1              if(lie<4)
 134   1                      {
 135   2                      com_w(0xb8+2*hang+1,0);            //汉字1hang为2页,即点16行
 136   2                      com_w(0x40+16*lie,0);              //汉字1lie为点16列
 137   2                      for(i=0;i<16;i++)
 138   2                      data_w(hz[i],0) ;
 139   2                      com_w(0xb8+2*hang,0);
 140   2                      com_w(0x40+16*lie,0);
 141   2                      for(i=16;i<32;i++)
 142   2                      data_w(hz[i],0) ;
 143   2                      }
 144   1              else
 145   1                      {
 146   2                      com_w(0xb8+2*hang+1,1);
 147   2                      com_w(0x40+16*(lie-4),1);
 148   2                      for(i=0;i<16;i++)
 149   2                      data_w(hz[i],1) ;
 150   2                      com_w(0xb8+2*hang,1);
 151   2                      com_w(0x40+16*(lie-4),1);
 152   2                      for(i=16;i<32;i++)
 153   2                      data_w(hz[i],1) ;
 154   2                      }
 155   1        }
 156          
 157          
 158          void sz8x8(uchar hang,uchar lie ,uchar zihu[8])      //数字显示程序
 159          {
 160   1            int i;
 161   1            if(lie<8)
 162   1             {
 163   2             com_w(0xb8+hang,0);
 164   2             com_w(0x40+8*lie,0);
 165   2             for(i=0;i<8;i++)
 166   2             data_w(zihu[i],0) ;
 167   2             }
 168   1            else
 169   1             {
 170   2             com_w(0xb8+hang,1);
 171   2             com_w(0x40+8*(lie-8),1);
 172   2             for(i=0;i<8;i++)
 173   2             data_w(zihu[i],1) ;
 174   2             }
 175   1      }
 176          
 177          void zf8x16(uchar hang,uchar lie ,uchar zihu[16])      //字符显示程序
 178          {
 179   1            int i;
C51 COMPILER V7.06   TEXT1                                                                 05/11/2008 06:39:19 PAGE 4   

 180   1            if(lie<4)
 181   1             {
 182   2             com_w(0xb8+hang,0);
 183   2             com_w(0x40+16*lie,0);
 184   2             for(i=0;i<16;i++)
 185   2             data_w(zihu[i],0) ;
 186   2             }
 187   1            else
 188   1             {
 189   2             com_w(0xb8+hang,1);
 190   2             com_w(0x40+16*(lie-4),1);
 191   2             for(i=0;i<16;i++)
 192   2             data_w(zihu[i],1) ;
 193   2             }
 194   1      }
 195          
 196          /*****************************************************************/
 197          /*                         延时程序                             */
 198          /*****************************************************************/
 199           void delay100m()
 200           {
 201   1         uchar i,j,k;
 202   1           for(i=0;i<8;i++)
 203   1            {
 204   2         for(j=0;j<25;j++)
 205   2                {
 206   3                 for(k=0;k<250;k++);
 207   3                }
 208   2            }
 209   1       }
 210          
 211          void delay15()                        //delay time is 15us
 212          {
 213   1       uchar i;
 214   1       for(i=0;i<5;i++);
 215   1      }
 216          
 217          void delay60()                       //delay time is 60us
 218          {
 219   1       uchar i;
 220   1         for(i=0;i<20;i++);
 221   1      }
 222          
 223          /*****************************************************************/
 224          /*                       温度测量程序                            */
 225          /*****************************************************************/
 226          
 227          void reset(uchar dqhao)  //初始化
 228          {
 229   1           uchar i;
 230   1        // DQ=1;
 231   1           if(dqhao)
 232   1           DQ1=1;
 233   1           else
 234   1           DQ0=1;
 235   1         // DQ=0;
 236   1           if(dqhao)
 237   1           DQ1=0;
 238   1           else
 239   1           DQ0=0;
 240   1         for(i=0;i<9;i++)
 241   1             {
C51 COMPILER V7.06   TEXT1                                                                 05/11/2008 06:39:19 PAGE 5   

 242   2             delay60();                   //----540us----
 243   2             }
 244   1         //DQ=1;
 245   1           if(dqhao)
 246   1           DQ1=1;

⌨️ 快捷键说明

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