標(biāo)題: 51單片機(jī)和PC串口通信仿真實(shí)驗(yàn)源碼(串口助手應(yīng)答單片機(jī)) [打印本頁(yè)]

作者: 張露婕    時(shí)間: 2018-10-18 19:09
標(biāo)題: 51單片機(jī)和PC串口通信仿真實(shí)驗(yàn)源碼(串口助手應(yīng)答單片機(jī))
晶振12MHz,波特率1200, 程序啟動(dòng)后單片機(jī)主動(dòng)發(fā)出Hello Server, PC使用串口助手應(yīng)答單片機(jī),當(dāng)單片機(jī)收到PC發(fā)來(lái)的數(shù)據(jù)AAH后,將30H-3FH的16個(gè)字節(jié)發(fā)送給PC,當(dāng)51收到E0H時(shí)就發(fā)40H-5FH的32個(gè)字節(jié)數(shù)據(jù),若單片機(jī)收到其他數(shù)據(jù)后,則不做任何修改返回PC。

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機(jī)源程序如下:
  1. #include <reg51.h>
  2. char code table[]="hello server!";
  3. int i=0,j=0;
  4. int a=0;
  5. int n=0,m=0;
  6. char data1[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f};
  7. char *p=0x40;

  8. void send(char *n,char *m)
  9. {
  10.         for(;n<=m;n++)
  11.         {
  12.                 SBUF=*n;
  13.                 while(!TI);
  14.         }        
  15. }

  16. void C51() interrupt 4
  17. {
  18.         if(RI==1)
  19.         {         
  20.                 a=SBUF;
  21.                 RI=0;
  22.         }
  23.         else if(TI==1)
  24.         {
  25.                 TI=0;
  26.         }
  27. }
  28.         
  29. void main()
  30. {
  31.         EA=1;
  32.         TMOD=0x20;
  33.         TH1=0xE6;
  34.         TL1=0xE6;
  35.         TR1=1;
  36.         SCON=0x50;
  37.         ES=1;
  38.         for(;p<=0x5f;p++)
  39.         {
  40.                 *p=data1[j];
  41.                 j++;
  42.         }
  43.         for(i=0;table[i]!='\0';i++)
  44.         {
  45.                 SBUF=table[i];
  46.                 while(!TI);
  47.         }
  48.         while(1)
  49.         {
  50.                 if(a==0xAA)
  51.                 {
  52.                         send(0x50,0x5f);
  53.                         a=0;
  54.                 }
  55.                 if(a==0xE0)
  56.                 {
  57.                         send(0x40,0x5f);
  58.                         a=0;
  59.                 }
  60.                 if(a!=0xAA&&a!=0xE0&&a!=0)
  61.                 {
  62.                         SBUF=a;
  63.                         while(!TI);
  64.                         a=0;
  65.                 }
  66.         }
  67. }
復(fù)制代碼

所有資料51hei提供下載:
實(shí)驗(yàn)五.zip (34.62 KB, 下載次數(shù): 120)



作者: 310139033    時(shí)間: 2019-12-6 08:26
謝謝樓主分享,拿走了
作者: 147wzl    時(shí)間: 2023-11-10 21:02
串口助手要怎么操作?我設(shè)置好相對(duì)的參數(shù),無(wú)法打開(kāi)串口。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1