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

📄 tt.lst

📁 此为一温度自动控制系统
💻 LST
字号:
C51 COMPILER V8.02   TT                                                                    09/05/2007 12:23:42 PAGE 1   


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

line level    source

   1          /*******************************************************************
   2          注意: 此文档为仿真程序,若要在试验板上验证,需要须改一下函数
   3            void lcd_wait(void)
   4          {
   5              DATAPORT=0xff;           
   6                  LCM_EN=1;
   7              LCM_RS=0;                           
   8              LCM_RW=1;                           
   9              _nop_();
  10              while(DATAPORT&BUSY)
  11                  /*{  LCM_EN=0;
  12                     _nop_();
  13                     _nop_();
  14                     LCM_EN=1;
  15                     _nop_();
  16                     _nop_();
  17                     }*//*
  18                  LCM_EN=0;
  19                  
  20          }■○
  21          地址:01000000  数据:00001110     图示:○○○○■■■○
  22             01000001     00010001           ○○○■○○○■
  23             01000010     00010000           ○○○■○○○○
  24             01000011     00010000           ○○○■○○○○
  25             01000100     00010000           ○○○■○○○○
  26             01000101     00010000           ○○○■○○○○
  27             01000110     00010001           ○○○■○○○■
  28             01000111     00001110           ○○○○■■■○
  29          
  30          0x80,0x00,  0x44,0x41,  0x24,0x42,  0x14,0x44,  
  31          0x08,0x9C,  0x0C,0xF4,  0x1B,0x28,  0x29,0x60,  
  32          0x48,0xA0,  0x09,0x68,  0x0B,0x26,  0x0E,0x32,  
  33          0x08,0xA8,  0x18,0x64,  0x20,0x02,  0x40,0x01,
  34          *******************************************************************/
  35          
  36          #include<reg51.h>
  37          #include<intrins.h>
  38          #include <absacc.h>
  39          #define uchar unsigned char
  40          #define uint   unsigned int
  41          /*uchar table[]={0x06,0x09,0x09,0x06,0x00,0x00,0x00,0x00,
  42                                          0x0e,0x11,0x10,0x10,0x10,0x11,0x0e,0x00};//字符℃*/
  43          uchar table[]={0x00,0x01,0x09,0x12,0x24,0x50,0x90,0x11,
  44                                          0x00,0x00,0x00,0xfe,0x02,0x44,0x40,0x50,
  45                                          0x12,0x14,0x10,0x10,0x11,0x10,0x00,0x00,
  46                                          0x48,0x40,0x40,0x40,0x40,0xb0,0x00,0x00};
  47          /*uchar table[]={0x03,0x07,0x0f,0x1f,0x1f,0x1f,0x1f,0x1f,
  48                                          0x18,0x1E,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
  49                                          0x07,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
  50                                          0x10,0x18,0x1c,0x1E,0x1E,0x1E,0x1E,0x1E,
  51                                          0x0f,0x07,0x03,0x01,0x00,0x00,0x00,0x00,
  52                                          0x1f,0x1f,0x1f,0x1f,0x1f,0x0f,0x07,0x01,
  53                                          0x1f,0x1f,0x1f,0x1f,0x1f,0x1c,0x18,0x00,
  54                                          0x1c,0x18,0x10,0x00,0x00,0x00,0x00,0x00};//心图案 */
  55          
C51 COMPILER V8.02   TT                                                                    09/05/2007 12:23:42 PAGE 2   

  56          #define BUSY  0x80                               //lcd忙检测标志
  57          #define DATAPORT P0                              //定义P0口为LCD通讯端口
  58           
  59          sbit LCM_RS=P2^0;                                                               //数据/命令端
  60          sbit LCM_RW=P2^1;                                                               //读/写选择端
  61          sbit LCM_EN=P2^2;
  62          sbit sda=P2^3;                          //IO口定义
  63          sbit scl=P2^4;                                          //LCD使能信号
  64          sbit ad_busy=P3^2;                                              //adc中断方式接口
  65          
  66          uchar ad_data;                                                  //ad采样值存储                                          
  67          uchar seconde;                                          //定义并初始化时钟变量
  68          uchar minite;
  69          uchar hour;
  70          uchar mstcnt=0;
  71          uchar temp1,temp2,temp;                                     //温度显示变量
  72          uchar t,set;
  73          uchar K;
  74          bit ON_OFF=0;
  75          bit outflag;
  76          bit write=0;
  77          
  78          uchar code str0[]={"LCD TEST        "};
  79          uchar code str1[]={"SUCCESSFUL      "};
  80          
  81          void delay_LCM(uint);                                                                                                   //LCD延时子程序
  82          void initLCM(void);                                                                                                     //LCD初始化子程序
  83          void lcd_wait(void);                                                                                                    //LCD检测忙子程序
  84          void WriteCommandLCM(uchar WCLCM,uchar BusyC);                              //写指令到ICM子函数
  85          void WriteDataLCM(uchar WDLCM);                                             //写数据到LCM子函数
  86          void DisplayOneChar(uchar X,uchar Y,uchar DData);                           //显示指定坐标的一个字符子函数
  87          void DisplayListChar(uchar X,uchar Y,uchar code *DData);                    //显示指定坐标的一串字符子函数
  88          /*********延时K*1ms,12.000mhz**********/
  89          
  90          void delay_LCM(uint k)
  91          {
  92   1          uint i,j;
  93   1          for(i=0;i<k;i++)
  94   1          {
  95   2              for(j=0;j<60;j++)
  96   2                      {;}
  97   2          }
  98   1      }   
  99          /**********写指令到LCM子函数************/
 100          
 101          void WriteCommandLCM(uchar WCLCM,uchar BusyC)
 102          {
 103   1          if(BusyC)lcd_wait();
 104   1              DATAPORT=WCLCM;
 105   1          LCM_RS=0;                   // 选中指令寄存器
 106   1          LCM_RW=0;                   // 写模式       
 107   1          LCM_EN=1;    
 108   1              _nop_();   
 109   1              _nop_();
 110   1              _nop_(); 
 111   1          LCM_EN=0;  
 112   1      }
 113          
 114          /**********写数据到LCM子函数************/
 115          
 116          void WriteDataLCM(uchar WDLCM)
 117          { 
C51 COMPILER V8.02   TT                                                                    09/05/2007 12:23:42 PAGE 3   

 118   1          lcd_wait( );            //检测忙信号    
 119   1              DATAPORT=WDLCM;
 120   1          LCM_RS=1;               // 选中数据寄存器
 121   1          LCM_RW=0;                   // 写模式
 122   1          LCM_EN=1;
 123   1          _nop_();
 124   1              _nop_();
 125   1              _nop_();
 126   1          LCM_EN=0;
 127   1      }
 128          
 129          /***********lcm内部等待函数*************/
 130          
 131          
 132          void lcd_wait(void)
 133          {
 134   1          DATAPORT=0xff;           
 135   1              LCM_EN=1;
 136   1          LCM_RS=0;                           
 137   1          LCM_RW=1;                           
 138   1          _nop_();
 139   1          while(DATAPORT&BUSY)
 140   1              {  LCM_EN=0;
 141   2                 _nop_();
 142   2                 _nop_();
 143   2                 LCM_EN=1;
 144   2                 _nop_();
 145   2                 _nop_();
 146   2                 }
 147   1              LCM_EN=0;
 148   1              
 149   1      }
 150          
 151          
 152          /**********LCM初始化子函数***********/
 153          
 154          void initLCM( )
 155          {   
 156   1              DATAPORT=0;     
 157   1              delay_LCM(15);
 158   1              WriteCommandLCM(0x38,0);    //三次显示模式设置,不检测忙信号
 159   1          delay_LCM(5); 
 160   1          WriteCommandLCM(0x38,0);
 161   1          delay_LCM(5); 
 162   1          WriteCommandLCM(0x38,0);
 163   1          delay_LCM(5); 
 164   1      
 165   1          WriteCommandLCM(0x38,1);    //8bit数据传送,2行显示,5*7字型,检测忙信号
 166   1          WriteCommandLCM(0x08,1);    //关闭显示,检测忙信号
 167   1          WriteCommandLCM(0x01,1);    //清屏,检测忙信号
 168   1          WriteCommandLCM(0x06,1);    //显示光标右移设置,检测忙信号
 169   1          WriteCommandLCM(0x0c,1);    //显示屏打开,光标不显示,不闪烁,检测忙信号
 170   1      }
 171          
 172          /****************显示指定坐标的一个字符子函数*************/
 173          
 174          void DisplayOneChar(uchar X,uchar Y,uchar DData)
 175          {
 176   1          Y&=1;
 177   1          X&=15;
 178   1          if(Y)X|=0x40;               //若y为1(显示第二行),地址码+0X40
 179   1          X|=0x80;                    //指令码为地址码+0X80
C51 COMPILER V8.02   TT                                                                    09/05/2007 12:23:42 PAGE 4   

 180   1          WriteCommandLCM(X,0);
 181   1          WriteDataLCM(DData);
 182   1      }
 183          
 184          /***********显示指定坐标的一串字符子函数***********/
 185          
 186          void DisplayListChar(uchar X,uchar Y,uchar code *DData)
 187          {
 188   1          uchar ListLength=0;
 189   1          Y&=0x01;
 190   1          X&=0x0f;
 191   1          while(X<16)
 192   1          {
 193   2              DisplayOneChar(X,Y,DData[ListLength]);
 194   2              ListLength++;
 195   2              X++;
 196   2          }
 197   1      }
 198          
 199          /***********the main funtion*************/
 200              
 201          void main(void)
 202          { 
 203   1          unsigned char a,b,c,tmp;
 204   1          P1=0xff;                                                            //初始化p1口,全设为1       
 205   1              delay_LCM(500);                                         //延时500ms启动
 206   1              initLCM( );                                                             //LCD初始化 
 207   1              tmp=0x40;//设置CGRAM地址的格式字
 208   1              c=0;
 209   1          for(a=0;a<4;a++)
 210   1              {
 211   2                      for(b=0;b<8;b++)
 212   2              {
 213   3                              WriteCommandLCM(tmp+b,1); // 设置自定义字符的 CGRAM 地址  
 214   3                              delay_LCM(2);
 215   3                              WriteDataLCM(table[c]); // 向CGRAM写入自定义字符表的数据
 216   3                              c++;
 217   3                              delay_LCM(2);
 218   3                      }
 219   2                      tmp=tmp+8;
 220   2              }
 221   1              //DisplayListChar(0,0,str0);
 222   1              //DisplayListChar(0,1,str1);
 223   1        for(a=0;a<2;a++)
 224   1              {
 225   2                      DisplayOneChar(1+a,0,a);//在第一行第11列位置显示心图案的上半部(列数,行数,数据地址)
 226   2              }
 227   1              for(a=2;a<4;a++)
 228   1              {
 229   2                      DisplayOneChar(1+a-2,1,a);//在第一行第11列位置显示心图案的上半部(列数,行数,数据地址)
 230   2              }
 231   1              while (1);
 232   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    382    ----
   CONSTANT SIZE    =     34    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     43      12
   IDATA SIZE       =   ----    ----
C51 COMPILER V8.02   TT                                                                    09/05/2007 12:23:42 PAGE 5   

   BIT SIZE         =      3    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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