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

📄 197.lst

📁 这是本人完全调好的MAX197的程序
💻 LST
字号:
C51 COMPILER V7.08   197                                                                   09/04/2007 13:17:21 PAGE 1   


C51 COMPILER V7.08, COMPILATION OF MODULE 197
OBJECT MODULE PLACED IN 197.OBJ
COMPILER INVOKED BY: D:\Program Files\C51\BIN\C51.EXE 197.c DEBUG OBJECTEXTEND

line level    source

   1          /**************************************************
   2                      引脚连接
   3          /CS->P2.7;HBEN->P1.3;/SHDN->P1.2;/INT->P3.0;
   4          /**************************************************/
   5          #include <reg51.h>
   6          #include <absacc.h>
   7          #include<intrins.h>
   8          #define uchar unsigned char
   9          #define uint  unsigned int
  10          sbit CS=P2^7;
  11          sbit HBEN=P2^6;
  12          sbit INT=P3^2;
  13          sbit LCM_RS=P2^0;
  14          sbit LCM_RW=P2^1;
  15          sbit LCM_EN=P2^2;
  16          #define BUSY  0x80              //常量定义
  17          #define DATAPORT P0
  18          #define  ADC XBYTE[0x7fff]
  19          uchar DATAH;
  20          uchar DATAL;
  21          long int DATA;
  22          uchar volt[4]={0};
  23          uchar code str0[]={"**VOLT: .   V***"};
  24          uchar code str1[]={"***WANG CHENG***"};
  25          void lcd_wait(void);
  26          
  27          /****************************************
  28                          延时K*1ms,12.000mhz
  29          *****************************************/
  30          void delay(uint k)
  31          {
  32   1          uint i,j;
  33   1          for(i=0;i<k;i++)
  34   1          {
  35   2              for(j=0;j<60;j++)
  36   2                      {;}
  37   2          }
  38   1      } 
  39          /*********************************************
  40                          写指令到ICM子函数
  41          *********************************************/
  42          
  43          void WriteCommandLCM(uchar WCLCM,uchar BusyC)
  44          {
  45   1          if(BusyC)lcd_wait();
  46   1              DATAPORT=WCLCM;
  47   1          LCM_RS=0;                   // 选中指令寄存器
  48   1          LCM_RW=0;                   // 写模式       
  49   1          LCM_EN=1;    
  50   1              _nop_();   
  51   1              _nop_();
  52   1              _nop_(); 
  53   1          LCM_EN=0;
  54   1         
  55   1      }
C51 COMPILER V7.08   197                                                                   09/04/2007 13:17:21 PAGE 2   

  56          /*******************************************
  57                          写数据到LCM子函数
  58          ********************************************/
  59          
  60          void WriteDataLCM(uchar WDLCM)
  61          { 
  62   1          lcd_wait( );            //检测忙信号    
  63   1              DATAPORT=WDLCM;
  64   1          LCM_RS=1;               // 选中数据寄存器
  65   1          LCM_RW=0;                   // 写模式
  66   1          LCM_EN=1;
  67   1          _nop_();
  68   1              _nop_();
  69   1              _nop_();
  70   1          LCM_EN=0;
  71   1      }
  72          /*******************************************
  73                                  lcm内部等待函数
  74          *******************************************/
  75          
  76          void lcd_wait(void)
  77          {
  78   1          DATAPORT=0xff;           //读LCD前若单片机输出低电平,而读出LCD为高电平,则冲突,Proteus仿真会有显示逻辑黄色
  79   1              LCM_EN=1;
  80   1          LCM_RS=0;                           
  81   1          LCM_RW=1;                           
  82   1          _nop_();
  83   1          _nop_();
  84   1              _nop_();
  85   1          while(DATAPORT&BUSY);
  86   1      /*      {  LCM_EN=0;
  87   1                 _nop_();
  88   1                 _nop_();
  89   1                 LCM_EN=1;
  90   1                 _nop_();
  91   1                 _nop_();
  92   1                 }*/
  93   1              LCM_EN=0;
  94   1              
  95   1      }
  96          /******************************************
  97                          LCM初始化子函数
  98          ******************************************/
  99          void initLCM( )
 100          {   
 101   1              DATAPORT=0;     
 102   1              delay(15);
 103   1              WriteCommandLCM(0x38,0);    //三次显示模式设置,不检测忙信号
 104   1          delay(5); 
 105   1          WriteCommandLCM(0x38,0);
 106   1          delay(5); 
 107   1          WriteCommandLCM(0x38,0);
 108   1          delay(5); 
 109   1      
 110   1          WriteCommandLCM(0x38,1);    //8bit数据传送,2行显示,5*7字型,检测忙信号
 111   1          WriteCommandLCM(0x08,1);    //关闭显示,检测忙信号
 112   1          WriteCommandLCM(0x01,1);    //清屏,检测忙信号
 113   1          WriteCommandLCM(0x06,1);    //显示光标右移设置,检测忙信号
 114   1          WriteCommandLCM(0x0c,1);    //显示屏打开,光标不显示,不闪烁,检测忙信号
 115   1      }
 116          /********************************************
 117                          显示指定坐标的一个字符子函数
C51 COMPILER V7.08   197                                                                   09/04/2007 13:17:21 PAGE 3   

 118          ********************************************/
 119          
 120          void DisplayOneChar(uchar X,uchar Y,uchar DData)
 121          {
 122   1          Y&=1;
 123   1          X&=15;
 124   1          if(Y)X|=0x40;               //若y为1(显示第二行),地址码+0X40
 125   1          X|=0x80;                    //指令码为地址码+0X80
 126   1          WriteCommandLCM(X,0);
 127   1          WriteDataLCM(DData);
 128   1      }
 129          /************************************************
 130                          显示指定坐标的一串字符子函数
 131          **************************************************/
 132           
 133          void DisplayListChar(uchar X,uchar Y,uchar code *DData)
 134          {
 135   1          uchar ListLength=0;
 136   1          Y&=0x01;
 137   1          X&=0x0f;
 138   1          while(X<16)
 139   1          {
 140   2              DisplayOneChar(X,Y,DData[ListLength]);
 141   2              ListLength++;
 142   2              X++;
 143   2          }
 144   1      }
 145          /***************************************************
 146                  ADC data collection funcation 
 147          ****************************************************/
 148          void data_collection(void)
 149          {
 150   1       ADC=0x40;
 151   1       while(INT!=0);
 152   1       HBEN=0;
 153   1       DATAL=ADC;
 154   1       HBEN=1;
 155   1       DATAH=ADC;
 156   1       HBEN=0;
 157   1      // led=!led;
 158   1      }
 159          /**************************************************
 160                          data pro funcation 
 161          **************************************************/
 162          void data_pro(void)
 163          {
 164   1        DATA=DATAH*256+DATAL;
 165   1        DATA=((DATA*50*5000)/41/4117);
 166   1        volt[0]=(DATA/1000)&0x0f;
 167   1        volt[1]=(DATA/100%10)&0x0f;
 168   1        volt[2]=(DATA%100/10)&0x0f;
 169   1        volt[3]=(DATA%10)&0x0f;
 170   1      }
 171          
 172          /************************************************
 173          display funcation
 174          ************************************************/
 175          void display(void)
 176          {
 177   1              WriteCommandLCM(0x01,1);                    //清显示屏
 178   1              DisplayListChar(0,0,str0);
 179   1              DisplayListChar(0,1,str1);
C51 COMPILER V7.08   197                                                                   09/04/2007 13:17:21 PAGE 4   

 180   1          DisplayOneChar(7,0,volt[0]+0x30);
 181   1              DisplayOneChar(9,0,volt[1]+0x30);
 182   1              DisplayOneChar(10,0,volt[2]+0x30);
 183   1              DisplayOneChar(11,0,volt[3]+0x30);
 184   1      }
 185          /*************************************************
 186                                  main funcation
 187          **************************************************/
 188          void main(void)
 189          {
 190   1       HBEN=0;
 191   1       delay(500);
 192   1       initLCM();
 193   1       WriteCommandLCM(0x01,1);                   //清显示屏
 194   1       DisplayListChar(0,0,str0);
 195   1       DisplayListChar(0,1,str1);
 196   1      
 197   1       while(1)
 198   1         {
 199   2           _nop_(); _nop_(); _nop_();
 200   2          data_collection();
 201   2              _nop_(); _nop_(); _nop_();
 202   2              data_pro();
 203   2              _nop_(); _nop_(); _nop_();
 204   2              display();
 205   2              _nop_(); _nop_(); _nop_();
 206   2              delay(1000);
 207   2         }
 208   1      }
 209          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    577    ----
   CONSTANT SIZE    =     34    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     10       8
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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