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

📄 main.lst

📁 基于51单片机实现UART通信 SPI通信 和IIC通信
💻 LST
📖 第 1 页 / 共 2 页
字号:
 157   3                                     Delay_Xms(5);
 158   3                                                        }
 159   2                save_temp();
 160   2                temp_view(datTem);
 161   2                key=keyscan();
 162   2                if(key=='E'){WriteCommandLCM(0x01,1);break; }
 163   2                if(uart_receive_date=='E') {WriteCommandLCM(0x01,1);break; }
 164   2               }while(key!='E');
 165   1        }
 166          /***************主函数***********************************/
 167          void main()
 168          {  
 169   1         unsigned char  baiwei=0,gewei=0,shiwei=0,gao=0,di=0;
 170   1         unsigned int   shifen=0,baifen=0,qianfen=0,wanfen=0;
 171   1               
 172   1         LCMInit();
 173   1         IICInit();
 174   1         com_init();
 175   1         hello();
 176   1         do{  
 177   2             Read_onetemp(datTem);
 178   2             temp_view(datTem);
C51 COMPILER V8.02   MAIN                                                                  06/01/2008 12:34:31 PAGE 4   

 179   2                 if(uart_receive_date!=0) display_lcm(uart_receive_date,0x8f);
 180   2                 
 181   2                    baiwei=((((datTem[1]&0x0F)<<4)+((datTem[0]&0xF0)>>4))%1000/100)+48;         //显示位处理,一边后续显示
 182   2                        shiwei=((((datTem[1]&0x0F)<<4)+((datTem[0]&0xF0)>>4))%100/10)+48;
 183   2                gewei=((((datTem[1]&0x0F)<<4)+((datTem[0]&0xF0)>>4))%10/1)+48;
 184   2                        shifen=(((datTem[0]&0x0F)*625)%10000/1000)+48;
 185   2                        baifen=(((datTem[0]&0x0F)*625)%1000/100)+48;
 186   2                        qianfen=(((datTem[0]&0x0F)*625)%100/10)+48;
 187   2                        wanfen=(((datTem[0]&0x0F)*625)%10/1)+48;
 188   2      
 189   2                        key=keyscan();
 190   2                 switch(key-'A')     //键盘控制
 191   2                        {
 192   3                                 case 0: { save_temp(); } break;            //A  存储温度
 193   3                                 case 1: { over_record();} break;           //B  查看记录
 194   3                                 case 2: {} break;                                  //C  上一个
 195   3                                 case 3: {} break;                                  //D  下一个
 196   3                                 case 4: {} break;                                  //E  返回
 197   3                                 case 5: {auto_save_temp();} break;     //F  5秒自动存储温度 
 198   3                                 case 6: {                                                      //G  串口数据发送
 199   4                                            diaplay_string(uart_transmit,13);
 200   4                                                        send_char_uart(baiwei);
 201   4                                            send_char_uart(shiwei);
 202   4                                                        send_char_uart(gewei);
 203   4                                                        send_char_uart('.');
 204   4                                                        send_char_uart(shifen);
 205   4                                                        send_char_uart(baifen);
 206   4                                                        send_char_uart(qianfen);
 207   4                                                        send_char_uart(wanfen);
 208   4                                                        send_char_uart(' ');
 209   4                                            WriteCommandLCM(0x01,1); 
 210   4                                              } break;          
 211   3                                 case 7: {  diaplay_string(spi_transmit,12);    //H   SPI通信 
 212   4                                                        gao=datTem[1];
 213   4                                                        di=datTem[0];
 214   4                                                        MOSI=0;
 215   4                                            SPI_Transmit(gao);
 216   4                                                        SPI_Transmit(di);
 217   4                                                        MOSI=1;
 218   4                                                        WriteCommandLCM(0x01,1);} break;                                    
 219   3                                 default :  {} break;
 220   3                        }
 221   2              switch(uart_receive_date-'A')     //UART控制
 222   2                        {
 223   3                                 case 0: { save_temp(); } break;              //A  存储温度
 224   3                                 case 1: { over_record();} break;             //B  查看记录
 225   3                                 case 2: {} break;                                    //C  上一个
 226   3                                 case 3: {} break;                                    //D  下一个
 227   3                                 case 4: {} break;                                    //E  返回
 228   3                                 case 5: {auto_save_temp();} break;       //F  5秒自动存储温度 
 229   3                                 case 6: {                                                        //G  串口数据发送
 230   4                                           diaplay_string(uart_transmit,13);
 231   4                                                        send_char_uart(baiwei);
 232   4                                            send_char_uart(shiwei);
 233   4                                                        send_char_uart(gewei);
 234   4                                                        send_char_uart('.');
 235   4                                                        send_char_uart(shifen);
 236   4                                                        send_char_uart(baifen);
 237   4                                                        send_char_uart(qianfen);
 238   4                                                        send_char_uart(wanfen);
 239   4                                                        send_char_uart(' ');
 240   4                                            WriteCommandLCM(0x01,1); 
C51 COMPILER V8.02   MAIN                                                                  06/01/2008 12:34:31 PAGE 5   

 241   4                                              } break;          
 242   3                                 case 7: {  diaplay_string(spi_transmit,12);    //H   SPI通信 
 243   4                                                        gao=datTem[1];
 244   4                                                        di=datTem[0];
 245   4                                                        MOSI=0;
 246   4                                            SPI_Transmit(gao);
 247   4                                                        SPI_Transmit(di);
 248   4                                                        MOSI=1;
 249   4                                                        WriteCommandLCM(0x01,1);} break;                                   
 250   3                                 default :  {} break;
 251   3                        }     
 252   2             if(uart_receive_date!=0) display_lcm(uart_receive_date,0x8f);
 253   2            uart_receive_date=0;    
 254   2           }while(1);
 255   1      }
 256          
 257          /************************************************
 258          UART 串口通信程序
 259          *************************************************/
 260          /*************串口初始化*********************/
 261          void com_init()         
 262           { 
 263   1        TMOD=0x20;                      //定时器1方式2
 264   1        TH1=0xfd;                           //波特率9600
 265   1        TL1=0xfd;
 266   1        SCON=0x50;                      //串口工作方式1,允许接收 
 267   1        PCON= 0x00;             // 波特率不倍增   
 268   1        TR1=1;                                  //启动定时
 269   1        IE=0x90;                            //开串口中断 等效于 EA=1;ES=1;EX0=1
 270   1       }
 271           
 272          
 273          /*************向串口发送一个字符*********************/
 274          void send_char_uart( unsigned char date) 
 275          {  
 276   1         EA=0;
 277   1         SBUF=date; 
 278   1         while(TI==0);
 279   1         TI= 0 ;
 280   1         EA=1;
 281   1      } 
 282          
 283          /************串口中断函数*********************/
 284          void Uart_receive(void) interrupt 4  //串口中断接收
 285           {      
 286   1         EA=0;   
 287   1         if(RI)                                  
 288   1            {
 289   2              uart_receive_date=SBUF;
 290   2                      RI=0;
 291   2                }     
 292   1         else TI=0;      //发送中断。则无操作
 293   1         EA=1;        
 294   1        }
 295          /************INT0中断函数********************
 296          void SPI_INT0(void) interrupt 0  
 297           {
 298              EA=0;
 299              uart_receive_date=SPI_Receive();
 300                  EA=1;
 301           }*/
 302          /************************************************
C51 COMPILER V8.02   MAIN                                                                  06/01/2008 12:34:31 PAGE 6   

 303          THE END OF FILE
 304          *************************************************/


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1979    ----
   CONSTANT SIZE    =     80    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      5      95
   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 + -