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

📄 main.lst

📁 PC机通过串口向单片机传输数据
💻 LST
📖 第 1 页 / 共 2 页
字号:
 131   1                                              //delayms(2);
 132   1              led_sel=0x3f;   //RW=0,RS=0,E=0 恢复
 133   1              delayms(2);
 134   1      }
 135          /*-----------------------------------------------------------------------------------------------
 136                                                                                          液晶写数据子程序
 137          -----------------------------------------------------------------------------------------------*/
 138          void wdat(void)         //写数据
 139          { 
 140   1              led_sel=0xff;   //RW=0,RS=1,E=1 写
 141   1                                              //delayms(2);
 142   1              led_data=LCD_cn;
 143   1                                              //delayms(2);
 144   1              led_sel=0x7f;   //写脉冲Rs=1,wr=0;e=0 恢复
 145   1              //led_sel=0x3f; //RW=0,RS=0,E=0 恢复  这句代替上句的话,RS=0,无法显示数据
 146   1              delayms(2);
 147   1      }
 148          /*--------------------------------------------------------------------
 149                                                          地址转换子程序
 150          第一行: 80H ———87H ,第二行: 90H ———97H 第三行:88H ———8FH 第四行:9
 151          --------------------------------------------------------------------*/
 152          void changeAddr(uchar lin)
 153           { 
 154   1              switch(lin)
 155   1              {
 156   2                      case 0:
 157   2                                      LCD_cn=0x80;                    //LINE 1
 158   2                                      break;
 159   2                      case 1:
 160   2                                      LCD_cn=0x90;                    //LINE 2
 161   2                                      break;
 162   2                      case 2:
 163   2                                      LCD_cn=0x88;                    //LINE 3
 164   2                                      break;
 165   2                      case 3:
 166   2                                      LCD_cn=0x98;                    //LINE 4
 167   2                                      break;  
 168   2                }
 169   1      }
 170          /*------------------------------------------------------------------------------------------
 171                                                                                  插入字符子程序
 172          相应位插入空字符,同时该位以后的所有字符逐位往后退一位
 173          ------------------------------------------------------------------------------------------*/
 174          void insert(uchar p)
 175          {
 176   1              uchar p1;
 177   1              p1=p;
C51 COMPILER V7.06   MAIN                                                                  11/17/2006 10:44:48 PAGE 4   

 178   1              while(buffer[p]!='\0')                  //将数组指针移到数组末尾第一个\0处
 179   1              {
 180   2                      p++;
 181   2               }
 182   1              for(;p>p1;p--)                                  //从第p1+1位开始,逐位往后退一位
 183   1                      buffer[p]=buffer[p-1];
 184   1              buffer[p1]=' ';                                 //p1位补空字符
 185   1      }
 186          /*----------------------------------------------------------------------------------------
 187                                                                          数组重排列子程序
 188          ----------------------------------------------------------------------------------------*/
 189          void changeArr(void)
 190          {
 191   1              uchar count;                                    //用于计算字母(单字符)个数
 192   1              uchar j=0;
 193   1              while(buffer[j]!='\0')
 194   1              {
 195   2                      if(buffer[j]<127)                       //判断是否位字母
 196   2                      {
 197   3                              count++;
 198   3                              j++;
 199   3                       }
 200   2                       if(buffer[j]>127)                      //判断是否位汉字
 201   2                       {
 202   3                              if(count%2!=0)                  //若汉字前字母个数为奇数则调用子函数insert(),作相应的处理
 203   3                                      {
 204   4                                              insert(j);
 205   4                                              j=j+2;                  //跳到汉字后的字符(一个汉字占用2个字节位置)
 206   4                                              count=0;
 207   4                                       }
 208   3                              else
 209   3                              {
 210   4                                      count=0;
 211   4                                      j++;
 212   4                               }
 213   3                        }
 214   2               }
 215   1       }
 216          /*---------------------------------------------------------------------------------------------------
 217                                                                                          液晶显示子程序
 218          ---------------------------------------------------------------------------------------------------*/
 219           void show(void)
 220           {
 221   1              uchar j=0;
 222   1              uchar line;
 223   1              LCD_cn=0x80;
 224   1              wcom();
 225   1              while(buffer[j]!='\0')
 226   1              {
 227   2                      if(j%16==0)                                     //每行智能显示16个字符,到达字符个数自动换行
 228   2                      {
 229   3                              line=j/16;
 230   3                              if(line>4) break;
 231   3                              changeAddr(line);                       //改变地址
 232   3                              wcom();
 233   3                       }
 234   2                       LCD_cn=buffer[j];
 235   2                       wdat();
 236   2                       j++;
 237   2               }
 238   1       }
 239          /*----------------------------------------------------------------------------------------------
C51 COMPILER V7.06   MAIN                                                                  11/17/2006 10:44:48 PAGE 5   

 240                                                                                          串口中断子程序
 241          ----------------------------------------------------------------------------------------------*/
 242          serial()interrupt 4 using 1
 243          {
 244   1              RI=0;
 245   1              buffer[i]=SBUF;
 246   1              i++;
 247   1              if(SBUF=='*')
 248   1              {
 249   2                      
 250   2                      for(k=i-1;k<100;k++)
 251   2                              buffer[k]='\0';
 252   2                      flag=1;
 253   2              
 254   2              }
 255   1              
 256   1      }


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