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

📄 csy.lst

📁 本程序能实现温度的实时采集与显示
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V7.06   CSY                                                                   11/16/2007 16:56:48 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 "rom1210.h"    //读写flash用
  10          #define PAGE_SIZE 0x80  //读写flash用
  11          extern long bipolar(void);//A/D转换用
  12          #define LSB 298.0232e-9 //A/D转换用
  13          //#include<syslib.h>
  14          extern void autobaud(void);
  15          sbit RS=P2^7;//串口时为CS
  16          sbit RW=P2^1; //串口为SID
  17          sbit E=P2^2;  //串口为时钟SCLK
  18          //D0---D7=P1
  19          sbit up=P2^3;
  20          sbit down=P2^4;
  21          sbit enter=P2^5;
  22          sbit retu=P2^6;
  23          
  24          sbit  TMDAT=P2^0;       //温度数据引脚
  25          
  26          /*sbit start=P2^7;
  27          sbit run=P2^6;
  28          sbit display=P3^3;
  29          sbit close=P3^1;
  30          */
  31          
  32          #define BF    0x80 //用于检测LCM状态字中的Busy标识
  33          typedef unsigned int Uint;
  34          typedef unsigned char Uchar;
  35          //读写flash变量
  36          char xdata *pFlashPage;
  37          unsigned int xdata buffer[PAGE_SIZE];
  38          //上为读写flash变量
  39          
  40          
  41          //汉字,直接可以写入字形
  42          //第一屏
  43           
  44          
  45           float ph;
  46           char sph[6];
  47           int b;//行号
  48           int s;//屏号
  49          
  50          
  51          //xiao=modf(ph,*iptr1);
  52          //zheng=floor(ph);
  53          unsigned char code chinese1[] = {"pH  值"};
  54          const Uchar lengthCF1=3;
  55          unsigned char code chinese2[] = {"溶解氧"};
C51 COMPILER V7.06   CSY                                                                   11/16/2007 16:56:48 PAGE 2   

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

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

 180   1      
 181   1      
 182   1              E=0;
 183   1      
 184   1      }
 185          
 186          
 187          
 188          //初始化LCD-8位接口
 189          void LCDInit(void)
 190          {  //   PSB=0; //串口
 191   1          //PSB=1;//并口时选这个,上一行取消
 192   1          //REST=1;
 193   1          //REST=0;
 194   1         // REST=1;
 195   1      
 196   1              WRCommand(0x30);        //基本指令集,8位并行
 197   1              
 198   1      Wait1ms();
 199   1              WRCommand(0x06);        //启始点设定:光标右移
 200   1      Wait1ms();
 201   1      
 202   1              WRCommand(0x01);        //清除显示DDRAM
 203   1      Wait1ms();
 204   1              WRCommand(0x0D);        //显示状态开关:整体显示开,光标显示关,光标显示反白开
 205   1                               
 206   1      Wait1ms();
 207   1              WRCommand(0x02);        //地址归零      
 208   1      
 209   1      Wait1ms();
 210   1      }
 211          
 212          //显示数组字符串(显示半宽字型16*8点阵)
 213          void ShowQQChar(Uchar addr,Uchar *english,Uchar count)
 214          {       
 215   1              Uchar i;
 216   1              WRCommand(addr);        //设定DDRAM地址
 217   1              for(i=0;i<count;)
 218   1              {       
 219   2                  WRData(english[i*2]);
 220   2      Wait1ms();
 221   2              WRData(english[i*2+1]);
 222   2      Wait1ms();
 223   2                      i++;
 224   2          }
 225   1      }
 226          
 227          
 228          
 229          
 230          //读flash存储器子程序
 231          //page为页数取值范围0-7,byte_num为字节数,取值范围为0-127
 232          int flash_read(int page,int byte_num)
 233          {
 234   1                      unsigned int read_add;
 235   1                      read_add=0x400+0x80*page+byte_num;    //实际地址
 236   1      
 237   1                      pFlashPage=(char xdata*)read_add;
 238   1                      buffer[0]=*pFlashPage;
 239   1                      if(buffer[0]>128)
 240   1                              buffer[0]+=256;
 241   1                      printf("buffer[0]=%d\n",buffer[0]);
C51 COMPILER V7.06   CSY                                                                   11/16/2007 16:56:48 PAGE 5   

 242   1                      return buffer[0];
 243   1      }
 244          //写flash存储器子程序
 245          //page为页数取值范围0-7,byte_num为字节数,取值范围为0-127,write_data为要写入的数据
 246          void flash_write(int page,int byte_num,int write_data)
 247          {
 248   1                      unsigned int m,lead_add;
 249   1                      lead_add=0x400+0x80*page;                               //页首地址
 250   1      
 251   1                      pFlashPage=(char xdata*)lead_add;
 252   1                      for(m=0;m<128;m++)
 253   1                              buffer[m]=*pFlashPage++;
 254   1      
 255   1                      page_erase(lead_add,0x0ff,DATA_FLASH);
 256   1      
 257   1                      buffer[byte_num]=write_data;

⌨️ 快捷键说明

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