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

📄 csy.lst

📁 本程序能实现温度的实时采集与显示
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V7.06   CSY                                                                   11/07/2007 17:19:43 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE CSY
OBJECT MODULE PLACED IN csy.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE csy.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          //深圳瑞特RT12864带M系列(控制器ST7920A),单片机:89S52,晶振:12M,
   2          //并行连接方式,P2.7-RS,P2.1-RW,P2.2-E
   3          //设计:TIMEN HUANG
   4          #include<reg1210.h>
   5          #include <intrins.h>
   6          #include<stdio.h>
   7          #include<stdlib.h> 
   8          #include<math.h> 
   9          //#include<syslib.h>
  10          extern void autobaud(void);
  11          sbit RS=P2^7;//串口时为CS
  12          sbit RW=P2^1; //串口为SID
  13          sbit E=P2^2;  //串口为时钟SCLK
  14          //D0---D7=P1
  15          sbit up=P2^3;
  16          sbit down=P2^4;
  17          sbit enter=P2^5;
  18          sbit retu=P2^6;
  19          
  20          sbit  TMDAT=P2^0;       //温度数据引脚
  21          
  22          /*sbit start=P2^7;
  23          sbit run=P2^6;
  24          sbit display=P3^3;
  25          sbit close=P3^1;
  26          */
  27          
  28          #define BF    0x80 //用于检测LCM状态字中的Busy标识
  29          typedef unsigned int Uint;
  30          typedef unsigned char Uchar;
  31          
  32          
  33          
  34          //汉字,直接可以写入字形
  35          //第一屏
  36           
  37          
  38           float ph;
  39           char sph[6];
  40           int b;//行号
  41           int s;//屏号
  42          
  43          
  44          //xiao=modf(ph,*iptr1);
  45          //zheng=floor(ph);
  46          unsigned char code chinese1[] = {"pH  值"};
  47          const Uchar lengthCF1=3;
  48          unsigned char code chinese2[] = {"溶解氧"};
  49          const Uchar lengthCF2=3;
  50          unsigned char code chinese3[] = {"氟离子"};
  51          const Uchar lengthCF3=3;
  52          unsigned char code chinese4[] = {"温度值"};
  53          const Uchar lengthCF4=3;
  54          //pH第二屏显示内容
  55          unsigned char code chinese5[] = {"不校验"};
C51 COMPILER V7.06   CSY                                                                   11/07/2007 17:19:43 PAGE 2   

  56          const Uchar lengthCF5=3;
  57          unsigned char code chinese6[] = {"酸性校验"};
  58          const Uchar lengthCF6=4;
  59          unsigned char code chinese7[] = {"碱性校验"};
  60          const Uchar lengthCF7=4;
  61          unsigned char code chinese8[] = {"返回上级菜单"};
  62          const Uchar lengthCF8=6;
  63          
  64          
  65          //DO第二屏显示内容,氟离子第二屏内容和DO相同
  66          //unsigned char code chinese5[] = {"不校验"};
  67          //const Uchar lengthCF5=3;
  68          unsigned char code chinese9[] = {"校验"};
  69          const Uchar lengthCF9=2;
  70          //unsigned char code chinese7[] = {"碱性校验"};
  71          //const Uchar lengthCF7=4;
  72          //unsigned char code chinese8[] = {"返回上级菜单"};
  73          //const Uchar lengthCF8=6;
  74          
  75          
  76          //T第二屏显示内容
  77          //unsigned char code chinese5[] = {"不校验"};
  78          //const Uchar lengthCF5=3;
  79          unsigned char code chinese10[] = {"开始温度测量"};
  80          const Uchar lengthCF10=6;
  81          unsigned char code chinese11[] = {"℃"};
  82          const Uchar lengthCF11=1;
  83          //unsigned char code chinese7[] = {"碱性校验"};
  84          //const Uchar lengthCF7=4;
  85          //unsigned char code chinese8[] = {"返回上级菜单"};
  86          //const Uchar lengthCF8=6;
  87          
  88          
  89          const Uchar delay=250;  //延时时间常数
  90          
  91          const Uchar delay1=1;  //延时时间常数
  92          static void Wait1ms1(void)//延迟1 ms
  93          {
  94   1        Uchar cnt=0;
  95   1        while (cnt<delay1) cnt++;
  96   1      }
  97          
  98          static void Wait1ms(void)//延迟1 ms
  99          {
 100   1        Uchar cnt=0;
 101   1        while (cnt<delay) cnt++;
 102   1      }
 103          //延迟n ms 
 104          void WaitNms(int n)
 105          {
 106   1          Uchar i;
 107   1          for(i=1;i<=n;i++)
 108   1              Wait1ms();
 109   1              Wait1ms();
 110   1              Wait1ms();
 111   1              Wait1ms();
 112   1      }
 113          
 114          
 115          
 116          //**************************************************************************//
 117          //以下是并口时才开的
C51 COMPILER V7.06   CSY                                                                   11/07/2007 17:19:43 PAGE 3   

 118          //读忙标志,
 119          void RDBF(void)
 120          {
 121   1          
 122   1              Uchar temp; 
 123   1              RS=0;   // RS=0
 124   1              RW=1;   // RW=1
 125   1          WaitNms(3);
 126   1              while(1)
 127   1              {
 128   2                  P1=0xFF;      //数据线为输入
 129   2      
 130   2              E=1;
 131   2              
 132   2              WaitNms(3);
 133   2              temp=P1;
 134   2      //      E=1;
 135   2      //      E=1;
 136   2      Wait1ms1();
 137   2      //    WaitNms(3);
 138   2      
 139   2              E=0;    // E=0
 140   2      
 141   2              //printf("调用完判忙函数\r\n");
 142   2      if ((temp&0x80)==0) break;
 143   2      // break;}      
 144   2      }
 145   1      }
 146          //写数据到指令寄存器
 147          
 148          void WRCommand(Uchar comm)
 149          {
 150   1              //printf("调用WRcommd函数\r\n");
 151   1         RDBF();
 152   1              //printf("调用WRcommd函数\r\n");
 153   1              RW=0;
 154   1          E=1;
 155   1      WaitNms(3);
 156   1              P1=comm;
 157   1              Wait1ms1();
 158   1              E=0;
 159   1              //printf("调用完WRcommd函数\r\n");
 160   1      }
 161          //写数据到数据寄存器
 162          void WRData(Uchar TEMP)
 163          {
 164   1              RDBF();
 165   1              RS=1;
 166   1              RW=0;
 167   1      E=1; 
 168   1      WaitNms(3);
 169   1      
 170   1      
 171   1              P1=TEMP;
 172   1      Wait1ms1();
 173   1      
 174   1      
 175   1              E=0;
 176   1      
 177   1      }
 178          
 179          
C51 COMPILER V7.06   CSY                                                                   11/07/2007 17:19:43 PAGE 4   

 180          
 181          //初始化LCD-8位接口
 182          void LCDInit(void)
 183          {  //   PSB=0; //串口
 184   1          //PSB=1;//并口时选这个,上一行取消
 185   1          //REST=1;
 186   1          //REST=0;
 187   1         // REST=1;
 188   1      
 189   1              WRCommand(0x30);        //基本指令集,8位并行
 190   1              
 191   1      Wait1ms();
 192   1              WRCommand(0x06);        //启始点设定:光标右移
 193   1      Wait1ms();
 194   1      
 195   1              WRCommand(0x01);        //清除显示DDRAM
 196   1      Wait1ms();
 197   1              WRCommand(0x0D);        //显示状态开关:整体显示开,光标显示关,光标显示反白开
 198   1                               
 199   1      Wait1ms();
 200   1              WRCommand(0x02);        //地址归零      
 201   1      
 202   1      Wait1ms();
 203   1      }
 204          
 205          //显示数组字符串(显示半宽字型16*8点阵)
 206          void ShowQQChar(Uchar addr,Uchar *english,Uchar count)
 207          {       
 208   1              Uchar i;
 209   1              WRCommand(addr);        //设定DDRAM地址
 210   1              for(i=0;i<count;)
 211   1              {       
 212   2                  WRData(english[i*2]);
 213   2      Wait1ms();
 214   2              WRData(english[i*2+1]);
 215   2      Wait1ms();
 216   2                      i++;
 217   2          }
 218   1      }
 219          //温度显示开始
 220          /*----------------------------------------------------
 221          *   整型转换成字符型子程序
 222          *----------------------------------------------------*/
 223          unsigned  inttochar(unsigned  int int1)
 224           {
 225   1       unsigned char ch1;
 226   1       switch(int1)
 227   1          {
 228   2          case(0):ch1='0';break;
 229   2          case(1):ch1='1';break;
 230   2          case(2):ch1='2';break;
 231   2          case(3):ch1='3';break;
 232   2          case(4):ch1='4';break;
 233   2          case(5):ch1='5';break;
 234   2          case(6):ch1='6';break;
 235   2          case(7):ch1='7';break;
 236   2          case(8):ch1='8';break;
 237   2          case(9):ch1='9';break;
 238   2          default:break;
 239   2          }
 240   1          return(ch1);
 241   1       }
C51 COMPILER V7.06   CSY                                                                   11/07/2007 17:19:43 PAGE 5   

 242          /*----------------------------------------------------
 243          *   整型转换成浮点型子程序
 244          *----------------------------------------------------*/
 245          float  inttofloat(unsigned  int int1)
 246           {
 247   1       float ch1;
 248   1       switch(int1)
 249   1          {
 250   2          case(0):ch1=0;break;

⌨️ 快捷键说明

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