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

📄 lcd12864.lst

📁 1、《ADC0804》实验 1)下载程序 2)插上LCD12864 3)LCD12864上显示当前输入ADC0804的电压 4)通过K3按钮切换板载输入或外部输入
💻 LST
字号:
C51 COMPILER V7.06   LCD12864                                                              11/19/2006 14:04:37 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE LCD12864
OBJECT MODULE PLACED IN lcd12864.OBJ
COMPILER INVOKED BY: E:\Program Files\C51\BIN\C51.EXE lcd12864.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /*****************************************************************/ 
   2          /*                                                               */                                       
             -                         
   3          /*名称:            AD转换+LCD12864显示程序                      */                                       
             -                                                                                                                        
             -            
   4          /*功能:         1  AD转换,二进制转换成十进制                   */
   5          /*               2  显示英文,数字,符号,图片。                 */                                       
             -             
   6          /*难度等级:                   高                                */                                       
             -                              
   7          /* 作者:                  zengrenliang                          */
   8          /* 版权:           http://www.51kaifa.com                       */
   9          /*编写日期:        2006.05.20                                   */                                       
             -                                                                                                                        
             -                                              
  10          /*****************************************************************/
  11          
  12          #include <reg52.h>
  13          #include  <string.h>
  14          
  15          #define uchar unsigned char
  16          
  17          /**********引脚定义*********/
  18          
  19          sbit lck = P3^5;//锁存信号
  20          sbit addr0 = P1^4;
  21          sbit addr1 = P1^5;
  22          sbit addr2 = P1^6;
  23          sbit cs138 = P1^7;
  24          
  25          /********常用命令及参数定义********/
  26          #define DISPON     0x3f
  27          #define DISPOFF    0x3e
  28          #define DISPFIRST  0xc0
  29          #define SETX       0x40
  30          #define SETY       0xb8
  31          #define LCDBUZY    0x80
  32          #define L          0x00
  33          #define R          0x40
  34          #define LIMIT      0x80
  35          
  36          /**********全局变量************/
  37          uchar  cbyte;
  38          uchar data statu;
  39          bit xy;
  40          
  41          /**************函数******************/
  42          
  43          void WrL(uchar x);
  44          void WrR(uchar x);
  45          void Lcmcls(void);
  46          void Lcminit (void);
  47          void Putpicture();
  48          void delay(unsigned int time);
C51 COMPILER V7.06   LCD12864                                                              11/19/2006 14:04:37 PAGE 2   

  49          void VtoH8x16change(uchar *hzbuf);
  50          void Puthalf(uchar *strch,uchar row,uchar col);
  51          void Wrdata(uchar x,uchar row,uchar col);
  52          void Locatexy(uchar row,uchar col);
  53          void vWrite8x16Character(uchar *ch,uchar row,uchar col,bit flag);
  54          uchar ADC0804();
  55          
  56          
  57          extern uchar  code  char_Table[95][16];
  58          
  59          extern unsigned char code  picture[];
  60          
  61          /***************微秒级延时*****************/
  62          void delay(unsigned int  time)
  63          { unsigned int i;
  64   1          for(i=0;i<time;i++);
  65   1       }
  66          
  67          
  68          /***********主程序***************/
  69          void main(void)
  70          {  uchar  i,j,k;
  71   1         float voltage,decimal;
  72   1         unsigned int intvolt,tofloat;
  73   1          
  74   1          addr0 = 1;
  75   1          addr1 = 0;
  76   1          addr2 = 1;//ULN2003片选地址  
  77   1          P0 = 0x00;//断开继电器A,B
  78   1          cs138 = 1;
  79   1          cs138 = 0;//数据锁存到U18(74HC574)  
  80   1      
  81   1          Lcminit();//LCD初始化
  82   1          Putpicture();//显示界面图片
  83   1          while(1)
  84   1           { 
  85   2      
  86   2             voltage = ADC0804();
  87   2             voltage = voltage * 0.0391;//将二进制字节数据变成实际电压值   10/256 = 0.0196
  88   2             intvolt = voltage;//取整数部分
  89   2             tofloat = intvolt; 
  90   2             decimal = voltage - tofloat;//取小数部分
  91   2             decimal = decimal * 100;//小数部分取两位
  92   2             i = intvolt % 0x0a + '0';//整数部分个位
  93   2             intvolt = decimal;
  94   2             j = intvolt % 0x0a + '0';//小数部分低位
  95   2             intvolt = intvolt / 0x0a;
  96   2             k = intvolt % 0x0a + '0';//小数部分高位
  97   2             vWrite8x16Character(&char_Table['V'-0x20][0],3,112,0);//显示电压单位
  98   2             vWrite8x16Character(&char_Table[j-0x20][0],3,104,0);//显示小数低位
  99   2             vWrite8x16Character(&char_Table[k-0x20][0],3,96,0); //显示小数高位
 100   2             vWrite8x16Character(&char_Table['.'-0x20][0],3,88,0); //显示小数点
 101   2             vWrite8x16Character(&char_Table[i-0x20][0],3,80,0);//显示整数位        
 102   2             delay(5000);
 103   2            }
 104   1      }
 105          
 106          /*******************0804转换程序********************/
 107          uchar  ADC0804()
 108          {  uchar adc0804value;
 109   1         addr0 = 1;
 110   1         addr1 = 1;
C51 COMPILER V7.06   LCD12864                                                              11/19/2006 14:04:37 PAGE 3   

 111   1         addr2 = 0;//输出AD0804片选地址。
 112   1         cs138 = 1;
 113   1         P0 = 0xff;//向ADC0804发任何数据,0804开始转换
 114   1         WR = 0;
 115   1         WR = 1;
 116   1         delay(1000);//等待转换完成
 117   1         RD = 0;
 118   1         adc0804value=P0;//读取转换后的值
 119   1         RD = 1;
 120   1         cs138 = 0;
 121   1         return(adc0804value);
 122   1      }
 123           
 124          
 125          //***********初始化LCD*******************/
 126          
 127          void Lcminit (void)
 128          { 
 129   1          cbyte=DISPOFF;
 130   1          WrL(cbyte);
 131   1          WrR(cbyte);
 132   1          cbyte=DISPON;
 133   1          WrL(cbyte);
 134   1          WrR(cbyte);
 135   1          cbyte=DISPFIRST;
 136   1          WrL(cbyte);
 137   1          WrR(cbyte);
 138   1          Lcmcls();
 139   1          Locatexy(0,0);
 140   1      }
 141          
 142          
 143          /***************LCD清屏********************/
 144          void Lcmcls(void)
 145          { uchar  i,j;
 146   1          for(i=0;i<8;i++){
 147   2            delay(6);
 148   2              for(j=0;j<LIMIT;j++){
 149   3                delay(6);
 150   3                Wrdata(0x0,i,j);
 151   3               }
 152   2           }
 153   1      }
 154          
 155          /**************写左区***************/
 156          
 157          void WrL(uchar x)
 158          {
 159   1         
 160   1         P0=0xFF;//P0口送FF,准备读
 161   1         lck = 0;
 162   1         P1 = 0x2a;//ELCD=1

⌨️ 快捷键说明

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