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

📄 yy.lst

📁 应用51平台实现热电偶测温
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   YY                                                                    08/28/2007 10:21:20 PAGE 1   


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

stmt level    source

   1          #include<stdio.h>
   2          #include<reg51.h>
   3          #include<intrins.h>
   4          #include <string.h> 
   5          #include <math.h>
   6          sbit RS=P1^2;
   7          sbit RW=P1^3;
   8          sbit E=P1^4;
   9          sbit buz=P2^7;
  10          unsigned char XPos;
  11          unsigned char YPos;
  12          #define dataport P0   //LCD数据端口
  13          
  14          #define busy 0x80      //D7忙标志
  15          #define nop() _nop_()
  16          #define uchar unsigned char
  17          unsigned int q1,q2,q3,q4,q5;q6;
  18          char m[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};   
  19          char code H[]={"H:"};
  20          char code L[]={"L:"};
  21          char code D[]={"C:"};
  22          char code W[]={"T:"};
  23          unsigned char b0=0x31,b1=0x30,b2=0x30,b3=0x30,b4=0x30,b5=0x30;    //b0--通道数,b1,b2,b3,b4,b5--上限温度值
  24          unsigned char d0=0x30,d1=0x30,d2=0x30,d3=0x30,d4=0x30;            //d0,d1,b2,b3,b4--上限温度值
  25          unsigned char Rkey=0,p=1; 
  26          
  27          float CH1=0,CH2=0,CH3=0,CH4=0, CH5=0,CH6=0,     CH7=0,CH8=0;
  28          float CL1=0,CL2=0,CL3=0,CL4=0, CL5=0,CL6=0,     CL7=0,CL8=0;
  29          
  30          unsigned char Key();  
  31           
  32          
  33          //////////////////////////////////////////////////////延时
  34          void delay5Ms(void)
  35            {
  36   1          unsigned int i=5552;
  37   1              while(i--);
  38   1        }
  39          
  40           void delay(unsigned int y)
  41            { 
  42   1              while(y--);
  43   1        }
  44          
  45          void delayP(unsigned int k)
  46           {
  47   1         while(k--)
  48   1          {
  49   2         Rkey=Key();
  50   2         if((Rkey==2)||(Rkey==1)||(Rkey==4))
  51   2         break;
  52   2               }
  53   1        }
  54          //*********************************************************
  55          //读忙状态函数
C51 COMPILER V7.06   YY                                                                    08/28/2007 10:21:20 PAGE 2   

  56          //功能:先检测忙状态,D7=1,LCD忙
  57          void checkbusy(void)
  58                 {
  59   1                   dataport = 0xff; //P0口写1
  60   1                       RS=0;             //选择指令寄存器
  61   1                       RW=1;             //读模式
  62   1                       nop();
  63   1                       E=1;
  64   1                       nop();
  65   1                   nop();
  66   1                       while(dataport & busy);
  67   1               nop();
  68   1                       E=0;
  69   1                      }
  70          
  71          //写入IR寄存器命令函数
  72          //功能:向LCD写入命令字符CMD
  73          //若ac==1,检测忙信号
  74          void writeIR( char CMD,char mang)
  75               { 
  76   1                 if(mang)
  77   1                 checkbusy();
  78   1                 RS=0;               //选择指令寄存器
  79   1                 RW=0;              //选择写模式       
  80   1             nop();
  81   1                 dataport=CMD;       //将命令送数据端口
  82   1             nop();
  83   1                 E=1;                //使能LCD
  84   1                 nop();              //将D0-D7数据送入IR
  85   1                 nop();
  86   1                 E=0;                //禁止LCD
  87   1                }
  88          
  89          //写入DDR显示数据寄存器函数
  90          //功能:在当前光标显示字符
  91          void writeDDR(char c)     //void writeDDR(char c)
  92                       {
  93   1                                 checkbusy();
  94   1                                 RS=1;        //选择数据寄存器
  95   1                                 RW=0;
  96   1                     nop();
  97   1                                 dataport=c;   //将显示字符送给数据端口
  98   1                                 nop();
  99   1                                 E=1;          //写使能
 100   1                                 nop();
 101   1                         nop();
 102   1                                 E=0;
 103   1                                }
 104          
 105          //LCD初始化
 106          //功能:向LCD写不同的命令,
 107          void LCDreset()
 108                   {
 109   1                         writeIR(0x38,0); //writeIR(0x38,0);   //功能设置命令,8位接口,显示两行,
 110   1                 delay5Ms();
 111   1                         writeIR(0x38,0); //writeIR(0x38,0);   //功能设置命令,8位接口,显示两行,
 112   1                         delay5Ms();
 113   1                         writeIR(0x38,0); //writeIR(0x38,0);   //功能设置命令,8位接口,显示两行,
 114   1                         delay5Ms();
 115   1      
 116   1                         writeIR(0x38,0);
 117   1                 writeIR(0x38,1); //writeIR(0x38,1);     
C51 COMPILER V7.06   YY                                                                    08/28/2007 10:21:20 PAGE 3   

 118   1                 writeIR(0x08,1);//显示开关控制
 119   1                         writeIR(0x01,1);//清屏
 120   1                         writeIR(0x06,1);//输入方式设置,完成一个字符发送后。地址指针AC加1
 121   1                         writeIR(0x0c,1); //显示光标,
 122   1               }
 123           
 124          //光标定位函数
 125          void LCDPos(uchar XPos, uchar YPos)
 126             {
 127   1           uchar tmp;
 128   1               XPos&=0x0f;
 129   1               YPos&=0x01;
 130   1               tmp=XPos;
 131   1               if(YPos==1)
 132   1               tmp+=0xc0;
 133   1               else 
 134   1               tmp+=0x80;
 135   1               writeIR(tmp,0);
 136   1              }
 137          
 138          //在指定的行列显示字符函数
 139          void writechar( uchar XPos, uchar YPos,char c)
 140               {
 141   1                 LCDPos(XPos,YPos);
 142   1                 writeDDR(c);
 143   1                }
 144          
 145          //显示字符串函数
 146          void  writestring(uchar XPos, uchar YPos, char s[])
 147                        {
 148   1                                          uchar p=0;
 149   1                                              while(p<2)
 150   1                                              {
 151   2                                                writechar(XPos,YPos,s[p]);
 152   2                                                p++;
 153   2                                                XPos++;        
 154   2                                               }
 155   1                      }
 156          
 157          //********************************************************************************
 158          
 159          
 160          
 161          void write(void) 
 162                 {  
 163   1                     writechar(2,0,b1);         //上限温度值
 164   1                 writechar(3,0,b2);
 165   1                 writechar(4,0,b3);
 166   1                         writechar(5,0,b4);
 167   1                 writechar(6,0,0x2e);
 168   1                 writechar(7,0,b5);
 169   1                         writechar(10,0,d0);          //下限温度 
 170   1                 writechar(11,0,d1);                
 171   1                 writechar(12,0,d2);
 172   1                 writechar(13,0,d3);
 173   1                 writechar(14,0,0x2e);
 174   1                         writechar(15,0,d4);
 175   1                 writechar(3,1,b0);         //通道数
 176   1                 }
 177          
 178          //*******按键跳转程序*****
 179          unsigned char Key()        
C51 COMPILER V7.06   YY                                                                    08/28/2007 10:21:20 PAGE 4   

 180           {
 181   1         unsigned char key,i=0;
 182   1         key=P2;
 183   1         key=key&0x0f;          //读键值
 184   1          if(key!=0x0f)         //有键按下?进入键值判断
 185   1         {
 186   2            while(1)
 187   2          {
 188   3               delay(10000);             //延时
 189   3           key=P2;
 190   3               key=key&0x0f;
 191   3           switch(key)
 192   3                {
 193   4                  
 194   4                 case 0x0e:  while(1)                   //有键按下?
 195   4                            {   
 196   5                             key=P2;
 197   5                             key=key&0x0f;
 198   5                                         if(key==0x0f)        ////没有键按下就跳出
 199   5                                         break;
 200   5                                     }
 201   4                             i=1;break;    //加    P2.0口底电平
 202   4                 case 0x0b: while(1) 
 203   4                          {  key=P2;
 204   5                             key=key&0x0f;
 205   5                                         if(key==0x0f)
 206   5                         break;

⌨️ 快捷键说明

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