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

📄 yejing.lst

📁 DS18B20温度采集然后红外发射出去,接收板接收红外并LCD显示接收的数据信息,有完整的发射接收程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 129          void LcdWriteData( char dataW ) 
 130          {
 131   1              WaitForEnable();                                ////检测忙信号////
 132   1              RS = 1; 
 133   1              RW = 0; 
 134   1              _nop_();        
 135   1          DataPort = dataW;               ///将显示字符的代码送往数据口////
 136   1              _nop_();                        
 137   1              E = 1; 
 138   1              _nop_(); 
 139   1              _nop_(); 
 140   1              E = 0;  
 141   1      }
 142          
 143          /**************************** 显示字符串函数 *****************************
 144          * 功能:从坐标x,y处开始显示指针ptr指定的字符串
 145          **************************************************************************/
 146          void Disp_strings(uchar x,uchar y, uchar *ptr)
 147          {
 148   1        while (*ptr != '%')////利用数组最后有空格作为信息结束的判断/////
 149   1           {      
 150   2             LocateXY( x, y );        // 定位显示地址///
 151   2             LcdWriteData(*ptr++ );////对于汉字一个地址要连续写两次,才能构成一个完整的汉字//////
 152   2             LcdWriteData(*ptr++ );////对于字母、数字一个地址可写一次,显示时中间有一个空格//////
 153   2                 ///////////////////////////当然也可连续写两次,显示时中间没有空格///////
 154   2            // LcdWriteCommand(0x18,1);//当主程序只有文字信息显示时,此处可用于滚屏显示/////,
 155   2            // Delay400Ms();       //////滚屏显示要注意延时///////
 156   2             x++;////连续写两次后,地址(横坐标)加1////////
 157   2                }
 158   1      } 
 159          
 160          /**************************** 显示数值函数 *****************************
 161          * 功能:从指定的坐标位置x,y处开始显示"-999.999---+999.999"范围的一个数值.
 162          **************************************************************************/
 163          void Disp_data(uchar x,uchar y, float ndata)
 164          {
 165   1        unsigned long  z;   
 166   1        uchar tab1[10],tab2[10];
 167   1         if(ndata<0) //////////////////第一个if-else结构开始///////////////////////////  
 168   1               {                     //
 169   2                tab1[0]=array4[12];  //
 170   2                    ndata=fabs(ndata);   //对正负数分别赋符号///////
 171   2               }                     //
 172   1         else{tab1[0]=array4[11];} ////第一个if-else结构结束/////////////////////////// 
 173   1      ////////////////////////////////////////////////////////////////////////////////
 174   1      //////////////////第二个if-else结构开始/////////////////////////////////////////   
 175   1      if((ndata<1000)&&(ndata>=0.001))////显示的数其绝对值必须在0.001-1000之间
 176   1        {
 177   2          z=(unsigned long)(ndata*1000);////强制类型转换//////
 178   2           //tab1[0]是符号位////////////////下面是获取各位数值///////
C51 COMPILER V7.50   YEJING                                                                04/10/2008 22:19:37 PAGE 4   

 179   2          tab1[1]=array4[z/100000];      ////获得千位信息'0-9'中的某一个/////
 180   2          tab1[2]=array4[z%100000/10000];////获得百位信息'0-9'中的某一个/////
 181   2          tab1[3]=array4[z%10000/1000];  ////获得十位信息'0-9'中的某一个///// 
 182   2          tab1[4]=array4[10];/////tab1[4]是小数点位////////
 183   2          tab1[5]=array4[z%1000/100];    ////获得十分位信息'0-9'中的某一个/////
 184   2          tab1[6]=array4[z%100/10];      ////获得百分位信息'0-9'中的某一个/////
 185   2          tab1[7]=array4[z%10];          ////获得千分位信息'0-9'中的某一个/////
 186   2          tab1[8]=array4[13];            ////tab1[9]表示的是空格字符/////
 187   2          tab1[9]=array4[14];            ////tab1[8]表示的是'%'字符,数组结束必须有'%'/////
 188   2      ////////////////////////////////////
 189   2         if(tab1[1]=='0')              ////考虑千位为'0'的情况////注意应该是tab1[1]=='0'////
 190   2            {                                                 ////而不是tab1[1]==0/////////
 191   3                 if(tab1[2]=='0')      ////考虑百位为'0'的情况////
 192   3                       {                   //
 193   4                     tab2[0]=tab1[0];  //符号位////
 194   4                     tab2[1]=tab1[3];  //个位////
 195   4                     tab2[2]=tab1[4];  //小数点////
 196   4                     tab2[3]=tab1[5];  //十分位///     
 197   4                     tab2[4]=tab1[6];  //百分位///
 198   4                     tab2[5]=tab1[7];  //千分位///
 199   4                     tab2[6]=tab1[8];  ////数组结束必须有%/////
 200   4                           }                    //                       
 201   3                 else                   ////百位不为'0'的情况////
 202   3                   {                    //
 203   4                         tab2[0]=tab1[0];   ////符号位////
 204   4                     tab2[1]=tab1[2];   ////十位///
 205   4                     tab2[2]=tab1[3];   ////个位////
 206   4                     tab2[3]=tab1[4];   ////小数点////       
 207   4                     tab2[4]=tab1[5];   ////十分位///
 208   4                     tab2[5]=tab1[6];   ////百分位///
 209   4                     tab2[6]=tab1[7];    ////千分位///
 210   4                     tab2[7]=tab1[8];    /////根据实际情况添加的空格//与Disp_strings()有关////
 211   4                     tab2[8]=tab1[9];   ////数组结束必须有%/////
 212   4                           }                    //
 213   3             }                          //
 214   2         else  ////千位不为'0'的情况////
 215   2          {
 216   3           tab2[0]=tab1[0];//符号位////
 217   3           tab2[1]=tab1[1];//千位///
 218   3           tab2[2]=tab1[2];//百位///
 219   3           tab2[3]=tab1[3];//个位////
 220   3           tab2[4]=tab1[4];//小数点////
 221   3           tab2[5]=tab1[5];//十分位///
 222   3           tab2[6]=tab1[6];//百分位///
 223   3           tab2[7]=tab1[7];//千分位///
 224   3           tab2[8]=tab1[9]; ////数组结束必须有%/////
 225   3          }  
 226   2      ////////////////////////////////////   
 227   2         Disp_strings(x,y,tab2);/////////////////显示数值////
 228   2        }
 229   1       else{ Disp_strings(x,y,array5);}//////数值超过显示范围,报错! 
 230   1      ////////////////////////////////////////////////////////////////////////////////
 231   1      //////////////////第二个if-else结构结束/////////////////////////////////////////    
 232   1      }
 233          
 234          /****************************** 初始化函数 ******************************
 235          * 功能:向LCD模块写入不同命令,完成必要的初始化过程
 236          *************************************************************************/
 237          void Lcd_initilize( void ) 
 238          {
 239   1              LcdWriteCommand( 0x38, 0);  /* 设置显示模式(不检测忙信号) */
 240   1              Delay5Ms();                                     /* 短延时 */
C51 COMPILER V7.50   YEJING                                                                04/10/2008 22:19:37 PAGE 5   

 241   1              LcdWriteCommand( 0x38, 0);      /* 共进行三次 */
 242   1              Delay5Ms();
 243   1              LcdWriteCommand( 0x38, 0);
 244   1              Delay5Ms();                            
 245   1              LcdWriteCommand( 0x38, 1);      /* 设置显示模式(以后均检测忙信号) */
 246   1          LcdWriteCommand( 0x08, 1);  /* 显示关闭 */
 247   1              LcdWriteCommand( 0x01, 1);      /* 显示清屏 */
 248   1              LcdWriteCommand( 0x06, 1);      /* 设置显示光标移动 */
 249   1              LcdWriteCommand( 0x0c, 1);      /* 设置显示开及光标位置 */
 250   1      }
 251          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    747    ----
   CONSTANT SIZE    =     29    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      33
   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 + -