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

📄 digital-v-lcd-ok-11-17.lst

📁 基于AT89C51的数字电压表
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.08   DIGITAL_V_LCD_OK_11_17                                                11/17/2008 19:57:19 PAGE 4   

 180   1        writeCommand(0x0c);//设置显示状态:显示器开,有光标,关闪烁 writeCommand(0x0f)
 181   1                           //writeCommand(0x0c);writeCommand(0x0e)
 182   1        writeCommand(0x06);
 183   1        }
 184           
 185          /**********************************************************
 186          函数名称: display_xy
 187          函数描述: LCD确定光标位置函数
 188          入口参数: 列坐标x,行坐标y 
 189          **********************************************************/
 190          
 191           void display_xy(uchar x,uchar y)
 192           {
 193   1          if(y==1)         //若第二行则光标地址加0x80 
 194   1         x+=0x40;         
 195   1         x+=0x80;
 196   1         writeCommand(x);
 197   1         }
 198             
 199          /**********************************************************
 200          函数名称: display_char
 201          函数描述: 显示字符函数
 202          入口参数: 列坐标x,行坐标y,输入数据 
 203          **********************************************************/
 204           
 205           void display_char(uchar x,uchar y,uchar inputData) 
 206           {
 207   1         display_xy(x,y);  //确定光标位置
 208   1         writeData(inputData);  //输入字符数据 
 209   1         }
 210           
 211          /**********************************************************
 212          函数名称: display_string
 213          函数描述: 显示字符串函数
 214          入口参数: 列坐标x,行坐标y,输入数据串 
 215          **********************************************************/
 216           
 217           void display_string(uchar x,uchar y,uchar *stringData)
 218           {
 219   1        uchar columnCoordinate=x; //定义列坐标 
 220   1        uchar rowCoordinate=y;    //定义行坐标 
 221   1       
 222   1         while(*stringData!='\0') //循环条件:字符串没有结束 
 223   1          { 
 224   2            display_char(columnCoordinate,rowCoordinate,*stringData);
 225   2            columnCoordinate++;
 226   2            stringData++;
 227   2           /* if(*stringData==0x60)   //设置是否回车显示 
 228   2            rowCoordinate++;
 229   2               if(rowCoordinate==2)
 230   2                  rowCoordinate=0;  */
 231   2            if(columnCoordinate==16)
 232   2            {
 233   3              columnCoordinate=0;
 234   3              rowCoordinate++;  
 235   3               if(rowCoordinate==2)   //当前页面显示完,准备下一页显示 
 236   3                 {
 237   4                 delay(400); //翻页速度
 238   4                 writeCommand(0x01); //显示完一页后清屏,下一页内容更新 
 239   4                 rowCoordinate=0;    //重新在第一行显示 
 240   4                 }
 241   3            }
C51 COMPILER V8.08   DIGITAL_V_LCD_OK_11_17                                                11/17/2008 19:57:19 PAGE 5   

 242   2          //writeCommand(0x01);
 243   2          }  
 244   1           
 245   1          //一次显示结束 
 246   1          //delay(400);//停留时间,全部内容重新显示 
 247   1             
 248   1        } 
 249           
 250           //以上是TLC1602的驱动程序 
 251           
 252           
 253           /**********************************************************
 254          函数名称:initialSerial
 255          函数描述:串行口初始化 
 256          入口参数: 无 
 257          **********************************************************/ 
 258          
 259          /*void initialSerial()
 260          {
 261            TMOD=0x20;
 262            SCON=0x50;
 263            TH1=0xfd;
 264            TL1=0xfd; 
 265            TR1=1; 
 266             EA=1;  
 267            }
 268          
 269           /**********************************************************
 270          函数名称:serialSend 
 271          函数描述:串行口发送函数 
 272          入口参数: AD转换结果 
 273          **********************************************************/ 
 274          /*void serialSend(uchar send[])
 275          {
 276           uchar i;
 277           while(1)   //设置发送的数组元素个数 
 278            {
 279             SBUF=send[i];
 280             while(!TI);
 281             TI=0; 
 282             i++;
 283             if(i==5)   
 284             break;        
 285             }
 286            }
 287            
 288           /**********************************************************
 289          函数名称:T0interrupt
 290          函数描述:T0定时函数,控制采样时刻 
 291          入口参数: 无 
 292          **********************************************************/
 293          /*void T0interrupt() interrupt 1 using 1
 294          {   
 295             uchar nCounter;         
 296             TH0=0x3C;
 297             TL0=0XB0;
 298             if(nCounter==INTERVAL)
 299               {
 300               nCounter=0;
 301               ADFlag=1;
 302               }
 303             nCounter++;
C51 COMPILER V8.08   DIGITAL_V_LCD_OK_11_17                                                11/17/2008 19:57:19 PAGE 6   

 304              
 305          }
 306            
 307          
 308           /**********************************************************
 309          函数名称: main
 310          函数描述:主函数
 311          入口参数: 无 
 312          **********************************************************/
 313           
 314           void main(void)
 315           { 
 316   1         uint  adData,adResult;
 317   1         uchar hundredBit,tenBit,oneBit;
 318   1         uchar dataString[6];  //转换结果数据 
 319   1         uchar inputdata[]="The Voltage is:";//待显示的内容 
 320   1         delay(100);  //等待LCD进入工作状态 
 321   1         initialLcd1602();
 322   1         //initialSerial();
 323   1          //循环显示内容 
 324   1       while(1)
 325   1       { 
 326   2         
 327   2          display_string(0,0,inputdata);   //起始显示位置 
 328   2          adResult=adConvert(0); 
 329   2          adData=adResult*1.0/4096*500; //设置精度为0.01,AD参考电压为5V 
 330   2          oneBit=adData%10;            //个位数 
 331   2          tenBit=(adData/10)%10;       //十位数 
 332   2          hundredBit=(adData/100)%10;  // 百位数 
 333   2          
 334   2          dataString[0]=hundredBit+0x30;
 335   2          dataString[1]=0x2E;//设置小数点 
 336   2          dataString[2]=tenBit+0x30;
 337   2          dataString[3]=oneBit+0x30; 
 338   2          dataString[4]=0x56; //设置'V' 
 339   2          //以上为对AD转换数据的处理 
 340   2        
 341   2          display_string(6,1,dataString); 
 342   2          delay(100); //避免CPU时刻扫描LCD 
 343   2         // serialSend(dataString);
 344   2         
 345   2        }
 346   1       }
 347           
 348            
 349            
 350            


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    476    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      34
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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