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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機和PC端的串口通信例程,有需要的同學可以參考,單片機為STC15W4K32S4系列

[復制鏈接]
跳轉到指定樓層
樓主
單片機和PC端的串口通信例程,有需要的同學可以參考,單片機為STC15W4K32S4系列

單片機源程序如下:
  1. /*************        功能說明        **************
  2. 串口1全雙工查詢方式收發通訊程序。先進行握手聯系,雙方準備好之后,
  3. 通過PC向MCU發送數據, MCU收到后通過串口把收到的數據原樣返回.
  4. 數據顯示保留
  5. ******************************************/
  6. #include        "STC15F.H"
  7. u8  segcode    ;         //對應鍵碼顯示段碼
  8. u8 code dsply_code[]={        //標準字庫
  9. //         0    1    2    3    4    5    6    7    8    9    A    B    C    D    E    F         H
  10.         0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x76};

  11. sbit        P_HC595_SER   = P4^0;        //pin 14        SER                data input
  12. sbit        P_HC595_RCLK  = P5^4;        //pin 12        RCLk        store (latch) clock
  13. sbit        P_HC595_SRCLK = P4^3;        //pin 11        SRCLK        Shift data clock
  14. bit flag=0;                   //握手成功標志 =1握手成功,=0沒有成功
  15. void Send_595(u8 dat); //發送一個字節數據到595
  16. void mcu_ini();        //初始化單片機
  17. //========================================================================
  18. // 函數: void main(void)
  19. // 描述: 主函數。

  20. //========================================================================
  21. void main(void)
  22. {        u8 dat_recivd;
  23.      mcu_ini();  
  24. //監控接收狀態
  25.    while(!flag)
  26.          { while(RI)
  27.                { RI=0;
  28.                      if (SBUF==0x55) //是否握手信號
  29.                     { SBUF=0xAA; //是,則發送應答信號
  30.                           while(!TI); //等待發送完畢                           
  31.                           TI=0; //發送完畢,清除中斷位
  32.                          flag=1; //握手成功,跳出循環
  33.                                    segcode=dsply_code[5];
  34.                        Send_595(0xFC);
  35.                        Send_595(segcode);
  36.                         P_HC595_RCLK = 0;
  37.                         P_HC595_RCLK = 1;
  38.                          }
  39.                         }
  40.           }
  41. //握手成功之后,進入接收、發回狀態
  42.     while(1)
  43.              { if (RI)
  44.                      { RI=0;            //清除中斷標志
  45.                            dat_recivd=SBUF;        //接收
  46.                            SBUF=dat_recivd; //發回
  47.                            while (!TI);//等待發送完畢
  48.                                      TI=0; //清除中斷標志
  49.                            //顯示收到的字符
  50.                                segcode=dsply_code[dat_recivd];
  51.                        Send_595(0x7f);
  52.                        Send_595(segcode);
  53.                         P_HC595_RCLK = 0;
  54.                         P_HC595_RCLK = 1;
  55.                            }
  56.                   }
  57. }


  58. void Send_595(u8 dat) // 向HC595發送一個字節函數/
  59. {
  60.          u8        i;
  61.         for(i=0; i<8; i++)
  62.         {
  63.                 dat <<= 1;
  64.                 P_HC595_SER   = CY;
  65.                 P_HC595_SRCLK = 0;
  66.                 P_HC595_SRCLK = 1;
  67.                 }
  68. }
  69. void mcu_ini()
  70.      {//端口初始化
  71.            P0M1 = 0;        P0M0 = 0;        //設置為準雙向口
  72.            P1M1 = 0;        P1M0 = 0;        //設置為準雙向口
  73.            P2M1 = 0;        P2M0 = 0;        //設置為準雙向口
  74.              P3M1 = 0;        P3M0 = 0;        //設置為準雙向口
  75.            P4M1 = 0;        P4M0 = 0;        //設置為準雙向口
  76.            P5M1 = 0;        P5M0 = 0;        //設置為準雙向口
  77.            P6M1 = 0;        P6M0 = 0;        //設置為準雙向口
  78.            P7M1 = 0;        P7M0 = 0;        //設置為準雙向口

  79.       //串口初始化: //9600bps@11.0592MHz        
  80.             TH2 = 0xFE;         
  81.             TL2 = 0xE0;         
  82.             AUXR=0x15;        //串口1選擇定時器2為波特率發生器,啟動定時器2
  83.             SCON=0x50; //8位數據,可變波特率
  84.             TI=0;
  85.             RI=0;         
  86.             //P_SW1 |= 0x80; //切換到P1.6 p1.7引腳上去
  87.             P_SW1=0;
  88.           }
復制代碼
  1. /*************        功能說明        **************
  2. 串口1全雙工查詢方式收發通訊程序。先進行握手聯系,雙方準備好之后,
  3. 通過PC向MCU發送數據, MCU收到后通過串口把收到的數據原樣返回.
  4. 數據顯示保留
  5. ******************************************/
  6. #include        "STC15Fxxxx.H"
  7. u8  segcode    ;         //對應鍵碼顯示段碼
  8. u8 code dsply_code[]={        //標準字庫
  9. //         0    1    2    3    4    5    6    7    8    9    A    B    C    D    E    F         H
  10.         0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x76};

  11. sbit        P_HC595_SER   = P4^0;        //pin 14        SER                data input
  12. sbit        P_HC595_RCLK  = P5^4;        //pin 12        RCLk        store (latch) clock
  13. sbit        P_HC595_SRCLK = P4^3;        //pin 11        SRCLK        Shift data clock
  14. bit flag=0;                   //握手成功標志 =1握手成功,=0沒有成功
  15. void Send_595(u8 dat); //發送一個字節數據到595
  16. void mcu_ini();        //初始化單片機
  17. //========================================================================
  18. // 函數: void main(void)
  19. // 描述: 主函數。

  20. //========================================================================
  21. void main(void)
  22. {        u8 dat_recivd;
  23.      mcu_ini();  
  24. //監控接收狀態
  25.    while(!flag)
  26.          { while(RI)
  27.                { RI=0;
  28.                      if (SBUF==0x55) //是否握手信號
  29.                     { SBUF=0xAA; //是,則發送應答信號
  30.                           while(!TI) //等待發送完畢
  31.                             {}
  32.                           TI=0; //發送完畢,清除中斷位
  33.                          flag=1; //握手成功,跳出循環
  34.                                    segcode=dsply_code[5];
  35.                        Send_595(0xFC);
  36.                        Send_595(segcode);
  37.                         P_HC595_RCLK = 0;
  38.                         P_HC595_RCLK = 1;
  39.                          }
  40.                         }
  41.           }
  42. //握手成功之后,進入接收、發回狀態
  43.     while(1)
  44.              { if (RI)
  45.                      { RI=0;
  46.                            dat_recivd=SBUF;        //接收
  47.                            SBUF=dat_recivd; //發回
  48.                            while (!TI)
  49.                                {}//等待發送完畢
  50.                                      TI=0;
  51.                            //顯示收到的字符
  52.                                segcode=dsply_code[dat_recivd];
  53.                        Send_595(0x7f);
  54.                        Send_595(segcode);
  55.                         P_HC595_RCLK = 0;
  56.                         P_HC595_RCLK = 1;
  57.                            
  58.                         
  59.                            }
  60.                   }
  61.                   
  62.   }


  63. void Send_595(u8 dat) // 向HC595發送一個字節函數/
  64. {
  65.          u8        i;
  66.         for(i=0; i<8; i++)
  67.         {
  68.                 dat <<= 1;
  69.                 P_HC595_SER   = CY;
  70.                 P_HC595_SRCLK = 0;
  71.                 P_HC595_SRCLK = 1;
  72.                 }
  73. }
  74. void mcu_ini()
  75.      {//端口初始化
  76.            P0M1 = 0;        P0M0 = 0;        //設置為準雙向口
  77.            P1M1 = 0;        P1M0 = 0;        //設置為準雙向口
  78.            P2M1 = 0;        P2M0 = 0;        //設置為準雙向口
  79.              P3M1 = 0;        P3M0 = 0;        //設置為準雙向口
  80.            P4M1 = 0;        P4M0 = 0;        //設置為準雙向口
  81.            P5M1 = 0;        P5M0 = 0;        //設置為準雙向口
  82.            P6M1 = 0;        P6M0 = 0;        //設置為準雙向口
  83.            P7M1 = 0;        P7M0 = 0;        //設置為準雙向口

  84.       //串口初始化        
  85.             TH2 = 0xFE;
  86.             TL2 = 0xE0;
  87.             AUXR=0x15;
  88.             SCON=0x50;
  89.             TI=0;
  90.             RI=0;         
  91.             //P_SW1 |= 0x80; //切換到P1.6 p1.7引腳上去
  92.             P_SW1=0;
  93.           }
復制代碼

所有資料51hei提供下載:
MCU2PC串口1.rar (58.83 KB, 下載次數: 63)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發
ID:1042619 發表于 2023-1-13 10:55 | 只看該作者
感謝樓主精彩分享!51因你而精彩!我們STC15系列實驗箱里面有STC15W4K串口收發DEMO,希望能幫到您!   


回復

使用道具 舉報

板凳
ID:241550 發表于 2023-10-3 11:19 | 只看該作者
大漠孤煙001 發表于 2023-1-13 10:55
感謝樓主精彩分享!51因你而精彩!我們STC15系列實驗箱里面有STC15W4K串口收發DEMO,希望能幫到您!   

...

以前還從來沒注意過isp里有demo
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品精品久久久 | 18成人在线观看 | 高清18麻豆 | 日韩精品免费一区二区在线观看 | 久久精选| 久久午夜电影 | 色资源在线观看 | 美女久久视频 | 国产不卡一区 | 日韩国产在线 | 中文字幕在线国产 | 九九热在线视频免费观看 | 国产在线麻豆精品入口 | 精品一区二区三区免费视频 | 国产精品久久久久无码av | 天堂色区 | 日韩在线观看一区二区三区 | 久在线视频播放免费视频 | 久久一| 日本一二三区电影 | 91精品国产91久久久久久丝袜 | 亚洲精品一区二区三区蜜桃久 | 香蕉国产在线视频 | 亚洲黄色一区二区三区 | 久久99精品久久久久久国产越南 | 日本不卡一区 | 九九热精| 狠狠躁夜夜躁人人爽天天高潮 | 午夜影院在线观看版 | 国产精品视屏 | 日韩不卡一二区 | 九九热久久免费视频 | 欧美午夜激情在线 | 久久久久一区二区三区 | 99热播精品 | 国产一级免费视频 | 亚洲高清视频在线 | 国产999精品久久久久久 | 免费av手机在线观看 | 99久久婷婷| 亚洲欧美日韩在线不卡 |