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

📄 lcdmain.lst

📁 51单片机接受SPI口数据
💻 LST
📖 第 1 页 / 共 2 页
字号:
 156          
 157          init()
 158          {
 159   1              RDB=1;
 160   1              RESET=0;
 161   1              delay(200);
 162   1              RESET=1;
 163   1              delay(200);
 164   1              init_uc1698();
 165   1              RAM_ADDRESS();
 166   1              refresh();              
 167   1      }
 168          
 169          void init_serial()
 170          {       
 171   1              TMOD=0x20;
 172   1              TH1=0xcb;
 173   1              TL1=0xcb;
 174   1              TR1=1;
 175   1              SM0=0;
 176   1              SM1=1;
 177   1              REN=1;
 178   1              ES=1;   
C51 COMPILER V8.05a   LCDMAIN                                                              04/20/2009 18:39:19 PAGE 4   

 179   1      }
 180          SPI_init()
 181          {
 182   1              EA=1;
 183   1              ES=1;            //开串口中断 (须和SPI中断使能位都置高 才能使能SPI中断)
 184   1              SPCTL=0xc8;     //SPI控制寄存器  (从机模式 时钟极性为低有效 时钟线后延触发移位)
 185   1              SPCFG=0x00;      //该配置寄存器最高位--SPI字节数据传送结束标志位
 186   1              
 187   1      }
 188          void look()
 189          {
 190   1              unsigned char cnt;
 191   1              for(cnt=0;cnt<receibufnum;cnt++)
 192   1              {
 193   2                      ES=0;
 194   2                      SBUF=dispbuf[cnt];
 195   2                      while(!TI);
 196   2                      TI=0;
 197   2                      ES=1;
 198   2              }       
 199   1      }
 200          void initstrpui(void)
 201          {
 202   1              uchar i, j;
 203   1      
 204   1              for(i=0; i<7; i++)
 205   1                      for(j=0; j<11; j++)
 206   1                      {strpui[i][j]=0;}
 207   1      
 208   1              strpui[0][0] ='U';
 209   1              strpui[0][1] ='a';
 210   1              strpui[0][2] =':';
 211   1              strpui[0][6] ='.';
 212   1              strpui[0][8] ='V';
 213   1      
 214   1              strpui[1][0] ='U';
 215   1              strpui[1][1] ='b';
 216   1              strpui[1][2] =':';
 217   1              strpui[1][6] ='.';
 218   1              strpui[1][8] ='V';
 219   1      
 220   1              strpui[2][0] ='U';
 221   1              strpui[2][1] ='c';
 222   1              strpui[2][2] =':';
 223   1              strpui[2][6] ='.';
 224   1              strpui[2][8] ='V';
 225   1      
 226   1              strpui[3][0] ='I';
 227   1              strpui[3][1] ='a';
 228   1              strpui[3][2] =':';
 229   1              strpui[3][5] ='.';
 230   1              strpui[3][8] ='A';
 231   1      
 232   1              strpui[4][0] ='I';
 233   1              strpui[4][1] ='b';
 234   1              strpui[4][2] =':';
 235   1              strpui[4][5] ='.';
 236   1              strpui[4][8] ='A';
 237   1      
 238   1              strpui[5][0] ='I';
 239   1              strpui[5][1] ='c';
 240   1              strpui[5][2] =':';
C51 COMPILER V8.05a   LCDMAIN                                                              04/20/2009 18:39:19 PAGE 5   

 241   1              strpui[5][5] ='.';
 242   1              strpui[5][8] ='A';
 243   1      
 244   1              strpui[6][0] ='C';
 245   1              strpui[6][1] ='T';
 246   1              strpui[6][2] =':';
 247   1              for(i=0; i<7; i++)
 248   1              {
 249   2                      GUI_DispStringAt(&strpui[i][0], 0, 0);
 250   2                      CopyRAMToLCD(0, i*16, 81, 15+i*16);
 251   2              }
 252   1      }
 253                  
 254          void main(void)
 255          {       
 256   1              RUN_LED=0;
 257   1              init();
 258   1              init_serial(); //串口初始化
 259   1              SPI_init();//SPI初始化
 260   1      //      GUI_DispStringAt(strp, 0, 0); 
 261   1      //      CopyRAMToLCD(0, 0, 159, 15);  //写液晶"XJT-5000/f"
 262   1              RUN_LED=1;
 263   1              initstrpui();
 264   1              while(1)
 265   1              {        
 266   2                      RUN_LED=1;
 267   2                      if(fflag==1)
 268   2                      {
 269   3                              fflag=0;        
 270   3                              RUN_LED=0;
 271   3                              datapro();
 272   3                              look();
 273   3      
 274   3      //                      for(i=0; i<7; i++)
 275   3      //                      {GUI_DispStringAt(&strpui[0][0], 0, 0);}
 276   3                              if(disnum >=1 ) CopyRAMToLCD(0, (disnum-1)*16, 81, 15+(disnum-1)*16);
 277   3      #if 0
                                      if((disnum==1)||(disnum==2)||(disnum==3))
                                      {
                                              GUI_DispStringAt(strpu, 0, 0); 
                                      CopyRAMToLCD(0, 0, 159, 15);  //写液晶"XJT-5000/f"
                                      }
                                      else if((disnum==4)||(disnum==5)||(disnum==6))
                                      {
                                              GUI_DispStringAt(strpi, 0, 0);
                                              CopyRAMToLCD(0, 16, 159, 31);  //写液晶"XJT-5000/f      
                                      }
              #endif
 289   3                      }                                                                                                                                                                                                                                                                                                               
 290   2              }
 291   1      }
 292          void serial() interrupt 4
 293          {
 294   1              while(!SPCFG);  //等待SPI接受数据结束,SPI中断硬件置位SPCFG最高位(一字节数据传送结束标志,须软件清零)
 295   1              receibuf[i++]=SPDAT;
 296   1              SPCFG=0;  //软件清零数据传送结束标志位
 297   1              if(i==8)
 298   1              {
 299   2                      i=0;
 300   2                      fflag=1;
 301   2              }       
 302   1      }
C51 COMPILER V8.05a   LCDMAIN                                                              04/20/2009 18:39:19 PAGE 6   



MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1194    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =     96    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     22       4
   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 + -