久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2568|回復: 4
打印 上一主題 下一主題
收起左側

求大神幫忙看一下,哪里出問題了,為什么不能完成雙機通訊

[復制鏈接]
回帖獎勵 50 黑幣 回復本帖可獲得 5 黑幣獎勵! 每人限 1 次
跳轉到指定樓層
樓主
超聲波檢測停車位信息,傳給另一個單片機顯示信息,為什么仿真不出來,代碼有問題嗎?主機代碼
  1. #include <REGX52.H>
  2. #include <stdio.h>
  3. #include<intrins.h>

  4. sbit csb=P1^0;                        // 第一路 Trig
  5. sbit csbint=P1^1;                // 第一路 Echo
  6. sbit csb1=P1^3;                   //  第二路 Trig
  7. sbit csbint1=P1^2;           //  第二路 Echo
  8. sbit csb2=P1^5;                   //  第三路 Trig
  9. sbit csbint2=P1^4;           //  第三路 Echo
  10. sbit csb3=P1^7;                   //  第四路 Trig
  11. sbit csbint3=P1^6;           //  第四路 Echo

  12. sbit RS = P0^7;   //定義端口
  13. sbit RW = P0^6;
  14. sbit EN = P0^5;

  15. #define RS_CLR RS=0
  16. #define RS_SET RS=1

  17. #define RW_CLR RW=0
  18. #define RW_SET RW=1

  19. #define EN_CLR EN=0
  20. #define EN_SET EN=1
  21.        
  22. unsigned char cc[]={' ',' ',' ',' ','T','o','t','a','l',':','4',' ',' ',' ',' ',' '};
  23. unsigned char dd[]={'F','r','e','e',':',' ',' ',' ',' ','B','u','s','y',':',' ',' '};
  24.                                          
  25. unsigned int a1,a2,a3,a4,s,j,s1,s2,s3,s4,kw;
  26. float csbc;

  27. void DelayUs2x(unsigned char t)
  28. {   
  29.         while(--t);
  30. }

  31. void DelayMs(unsigned char t)
  32. {
  33.           while(t--)                 //大致延時1mS
  34.         {
  35.              DelayUs2x(245);
  36.                  DelayUs2x(245);
  37.         }
  38. }
  39. void MasterUART_init(void)
  40. {
  41.     SCON = 0x50;
  42.     TMOD = 0x20;
  43.     TH1  = 0xFD;
  44.     TL1  = 0xFD;
  45.     TR1  = 1;
  46. }
  47. void Send(unsigned char dat)

  48. {

  49.         SBUF=dat;
  50.    while(TI==0)
  51.       ;                        //等待
  52.     TI=0;
  53. }
  54. void write_com(unsigned char com) //寫命令
  55. {
  56.         RS_CLR;
  57.         RW_CLR;
  58.         P2=com;
  59.         DelayMs(2);
  60.         EN_SET;
  61.         DelayMs(2);
  62.         EN_CLR;
  63. }

  64. void write_data(unsigned char date)         //寫一個字符
  65. {
  66.         RS_SET;
  67.         RW_CLR;
  68.         P2=date;
  69.         DelayMs(2);
  70.         EN_SET;
  71.         DelayMs(2);
  72.         EN_CLR;
  73. }

  74. void init()                        //初始化
  75. {
  76.         write_com(0x38);
  77.         write_com(0x0c);
  78.         write_com(0x06);
  79.         write_com(0x01);
  80. }

  81. /*------------------------------------------------
  82.               寫入字符串函數
  83. ------------------------------------------------*/
  84. void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s)
  85. {     
  86.         if (y == 0)
  87.         {     
  88.                  write_com(0x80 + x);     
  89.         }
  90.         else
  91.         {     
  92.                 write_com(0xC0 + x);     
  93.         }        
  94.         while (*s)
  95.         {     
  96.                 write_data( *s);     
  97.                 s ++;     
  98.         }
  99. }
  100. main()
  101. {
  102.         TH0=0;
  103.         TL0=0;
  104.         TMOD=0X11;        //T1,T0為16位定時器
  105.         EA=0;
  106.         init();
  107.           while(1)
  108.         {
  109.                
  110. ///////////////////////////////////////////
  111. //                    第一路        測距模塊                         //
  112. ///////////////////////////////////////////
  113.                   csb=0;                                             //啟動一次模塊
  114.                   _nop_();
  115.                   _nop_();
  116.                   _nop_();
  117.                   _nop_();
  118.                   _nop_();
  119.                   _nop_();
  120.                   _nop_();
  121.                   _nop_();
  122.                   _nop_();
  123.                   _nop_();
  124.                   _nop_();
  125.                   _nop_();
  126.                   _nop_();
  127.                   _nop_();
  128.                   _nop_();
  129.                   _nop_();
  130.                   _nop_();
  131.                   _nop_();
  132.                   _nop_();
  133.                   _nop_();
  134.                   _nop_();
  135.                   _nop_();
  136.                   _nop_();
  137.                   _nop_();
  138.                   _nop_();
  139.                   csb=1;
  140.                 ET0=1;        //啟動計數器T0,用以計時
  141.                 TR0=1;
  142.                 EA=1;
  143.                 j=150;        //延時                 
  144.             while(j--)
  145.                 {
  146.                 }
  147.                 csbint=1;
  148.         j=0;
  149.                    while(csbint)                        //判斷接收回路是否收到超聲波的回波
  150.                 {
  151.                         j++;
  152.                         if(j>=2500)                        //如果達到一定時間沒有收到回波,則將csbint置零,退出接收回波處理程序
  153.                         csbint=0;
  154.                 }
  155.                 TR0=0;
  156.                 s1=TH0*256+TL0;                        //讀取時間數據
  157.                 TH0=0;
  158.                 TL0=0;
  159.                 csbc=0.034;
  160.                 csbc=csbc/2;
  161.                 s1=s1*csbc-8;

  162. ///////////////////////////////////////////
  163. //                    第二路        測距模塊                         //
  164. ///////////////////////////////////////////
  165.                   csb1=0;                                             //啟動一次模塊
  166.                   _nop_();
  167.                   _nop_();
  168.                   _nop_();
  169.                   _nop_();
  170.                   _nop_();
  171.                   _nop_();
  172.                   _nop_();
  173.                   _nop_();
  174.                   _nop_();
  175.                   _nop_();
  176.                   _nop_();
  177.                   _nop_();
  178.                   _nop_();
  179.                   _nop_();
  180.                   _nop_();
  181.                   _nop_();
  182.                   _nop_();
  183.                   _nop_();
  184.                   _nop_();
  185.                   _nop_();
  186.                   _nop_();
  187.                   _nop_();
  188.                   _nop_();
  189.                   _nop_();
  190.                   _nop_();
  191.                   csb1=1;
  192.                 ET0=1;        //啟動計數器T0,用以計時
  193.                 TR0=1;
  194.                 EA=1;
  195.                 j=150;        //延時                 
  196.             while(j--)
  197.                 {
  198.                 }
  199.                 csbint1=1;
  200.         j=0;
  201.                    while(csbint1)                        //判斷接收回路是否收到超聲波的回波
  202.                 {
  203.                         j++;
  204.                         if(j>=2500)                        //如果達到一定時間沒有收到回波,則將csbint置零,退出接收回波處理程序
  205.                         csbint1=0;
  206.                 }
  207.                 TR0=0;
  208.                 s2=TH0*256+TL0;                        //讀取時間數據
  209.                 TH0=0;
  210.                 TL0=0;
  211.                 csbc=0.034;
  212.                 csbc=csbc/2;
  213.                 s2=s2*csbc-8;

  214. ///////////////////////////////////////////
  215. //                    第三路        測距模塊                         //
  216. ///////////////////////////////////////////

  217.                   csb2=0;                                             //啟動一次模塊
  218.                   _nop_();
  219.                   _nop_();
  220.                   _nop_();
  221.                   _nop_();
  222.                   _nop_();
  223.                   _nop_();
  224.                   _nop_();
  225.                   _nop_();
  226.                   _nop_();
  227.                   _nop_();
  228.                   _nop_();
  229.                   _nop_();
  230.                   _nop_();
  231.                   _nop_();
  232.                   _nop_();
  233.                   _nop_();
  234.                   _nop_();
  235.                   _nop_();
  236.                   _nop_();
  237.                   _nop_();
  238.                   _nop_();
  239.                   _nop_();
  240.                   _nop_();
  241.                   _nop_();
  242.                   _nop_();
  243.                   csb2=1;
  244.                 ET0=1;        //啟動計數器T0,用以計時
  245.                 TR0=1;
  246.                 EA=1;
  247.                 j=150;        //延時                 
  248.             while(j--)
  249.                 {
  250.                 }
  251.                 csbint2=1;
  252.         j=0;
  253.                    while(csbint2)                        //判斷接收回路是否收到超聲波的回波
  254.                 {
  255.                         j++;
  256.                         if(j>=2500)                        //如果達到一定時間沒有收到回波,則將csbint置零,退出接收回波處理程序
  257.                         csbint2=0;
  258.                 }
  259.                 TR0=0;
  260.                 s3=TH0*256+TL0;                        //讀取時間數據
  261.                 TH0=0;
  262.                 TL0=0;
  263.                 csbc=0.034;
  264.                 csbc=csbc/2;
  265.                 s3=s3*csbc-8;
  266. ///////////////////////////////////////////
  267. //                    第四路        測距模塊                         //
  268. ///////////////////////////////////////////

  269.                   csb3=0;                                             //啟動一次模塊
  270.                   _nop_();
  271.                   _nop_();
  272.                   _nop_();
  273.                   _nop_();
  274.                   _nop_();
  275.                   _nop_();
  276.                   _nop_();
  277.                   _nop_();
  278.                   _nop_();
  279.                   _nop_();
  280.                   _nop_();
  281.                   _nop_();
  282.                   _nop_();
  283.                   _nop_();
  284.                   _nop_();
  285.                   _nop_();
  286.                   _nop_();
  287.                   _nop_();
  288.                   _nop_();
  289.                   _nop_();
  290.                   _nop_();
  291.                   _nop_();
  292.                   _nop_();
  293.                   _nop_();
  294.                   _nop_();
  295.                   csb3=1;
  296.                 ET0=1;        //啟動計數器T0,用以計時
  297.                 TR0=1;
  298.                 EA=1;
  299.                 j=150;        //延時                 
  300.             while(j--)
  301.                 {
  302.                 }
  303.                 csbint3=1;
  304.         j=0;
  305.                    while(csbint3)                        //判斷接收回路是否收到超聲波的回波
  306.                 {
  307.                         j++;
  308.                         if(j>=2500)                        //如果達到一定時間沒有收到回波,則將csbint置零,退出接收回波處理程序
  309.                         csbint2=0;
  310.                 }
  311.                 TR0=0;
  312.                 s4=TH0*256+TL0;                        //讀取時間數據
  313.                 TH0=0;
  314.                 TL0=0;
  315.                 csbc=0.034;
  316.                 csbc=csbc/2;
  317.                 s4=s4*csbc-8;

  318.                 if(s1>100) //測量值小于下限
  319.                 {
  320.                         a1=0;
  321.                 }
  322.                 else
  323.                 {
  324.                         a1=1;
  325.                 }


  326.                 if(s2>100) //測量值小于下限
  327.                 {
  328.                         a2=0;
  329.                 }
  330.                 else
  331.                 {
  332.                         a2=1;
  333.                 }

  334.                 if(s3>100) //測量值小于下限
  335.                 {
  336.                         a3=0;
  337.                 }
  338.                 else
  339.                 {
  340.                         a3=1;
  341.                 }


  342.                 if(s4>100) //測量值小于下限
  343.                 {
  344.                         a4=0;
  345.                 }
  346.                 else
  347.                 {
  348.                         a4=1;
  349.                 }

  350.                 kw=a1+a2+a3+a4;
  351.                 dd[14]=kw+'0';
  352.                 dd[5]=4-kw+'0';
  353.                 LCD_Write_String(0,0,cc);
  354.                 LCD_Write_String(0,1,dd);
  355.         }
  356.         MasterUART_init();
  357.         while(1)
  358.         {
  359.            Send(kw);        //發送數據i
  360.        DelayMs(2);
  361.          }
  362. }
復制代碼
從機代碼

  1. #include<reg51.h>
  2. #include<intrins.h>
  3. #define uchar  unsigned char
  4. #define uint    unsigned int
  5. uchar code DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
  6. void delay_ms(uint t)
  7. {
  8.   uint m,n;
  9.   for (m=0;m<t;m++)
  10.    for (n=0;n<1000;n++);

  11. }
  12. void SlaveUART_init(void)
  13. {
  14.     SCON = 0x50;
  15.     TMOD = 0x20;
  16.     TH1  = 0xFD;
  17.     TL1  = 0xFD;
  18.     TR1  = 1;
  19. }
  20. unsigned char Receive(void)
  21. {
  22.           unsigned char dat;
  23.           while(RI==0)  
  24.          ;      //等待,直至接收完畢(RI=1)
  25.         RI=0;      //為了接收下一幀數據,需將RI清0
  26.     dat=SBUF;  //將接收緩沖器中的數據存于dat
  27.         return dat;
  28. }

  29. main()
  30. {
  31.     unsigned char tmp;
  32.     SlaveUART_init();
  33.     while(1);
  34.         {
  35.             tmp=Receive();
  36.                 P0=DSY_CODE[tmp];
  37.         }
  38. }
復制代碼
電路圖

QQ截圖20170524150421.png (20.19 KB, 下載次數: 70)

QQ截圖20170524150421.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:82765 發表于 2017-5-24 20:25 | 只看該作者
提示: 作者被禁止或刪除 內容自動屏蔽
回復

使用道具 舉報

板凳
ID:201803 發表于 2017-5-25 12:42 | 只看該作者
cjjcjj1 發表于 2017-5-24 20:25
你好!你現在仿真的情況是怎么樣?實現了什么,還存在什么問題

您好 情況已經解決了 謝謝
回復

使用道具 舉報

地板
ID:205012 發表于 2017-5-26 10:40 | 只看該作者
這么快就解決了
回復

使用道具 舉報

5#
ID:191910 發表于 2017-5-27 13:23 | 只看該作者
超聲波檢測在protues用的是哪個器件,請樓主分享一下,謝謝
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品成人久久久久 | 久久久久久久久久一区二区 | 一本色道久久综合亚洲精品高清 | 国产日产久久高清欧美一区 | 91免费高清 | 精品入口麻豆88视频 | 91麻豆精品国产91久久久更新资源速度超快 | 欧美国产日韩在线观看成人 | h片免费在线观看 | 欧洲尺码日本国产精品 | 蜜桃特黄a∨片免费观看 | 成人免费久久 | 91成人在线 | 国产伦精品一区二区三区精品视频 | 国产一区2区 | 亚洲国产成人精品女人久久久 | 欧美性久久久 | 久久久精品 | 国产亚洲第一页 | 亚洲欧美一区二区三区1000 | 9久9久9久女女女九九九一九 | 久久精品一级 | 亚洲一区有码 | 欧美日韩在线看 | 九一在线观看 | 激情福利视频 | www.婷婷 | 国产免费一区二区 | 蜜桃传媒av| 秋霞电影一区二区 | 麻豆国产精品777777在线 | 久久久成人一区二区免费影院 | 欧美一区 | 91精品国产综合久久久动漫日韩 | 精品国产欧美一区二区 | 久久精品综合网 | 黄色一级大片在线免费看产 | 夜夜草 | 狠狠色狠狠色综合日日92 | 一区二区三区亚洲 | 日韩成人在线播放 |