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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5489|回復: 2
收起左側

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

[復制鏈接]
ID:550414 發表于 2019-5-29 18:04 | 顯示全部樓層 |閱讀模式
單片機和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 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:1042619 發表于 2023-1-13 10:55 | 顯示全部樓層
感謝樓主精彩分享!51因你而精彩!我們STC15系列實驗箱里面有STC15W4K串口收發DEMO,希望能幫到您!    stc15實驗箱jpg.png
STC15W實驗箱jpg.png

回復

使用道具 舉報

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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久久久一区二区 | 欧美日韩一区在线观看 | 午夜免费网站 | 亚洲高清视频在线 | 国产一区2区| 日韩亚洲视频 | 精品国产一区二区三区观看不卡 | 久热精品在线观看视频 | 欧美啊v在线观看 | 欧美一区二区三区在线观看视频 | 91久久精品一区二区二区 | 中文字幕国产 | 午夜欧美 | 亚洲精品一区二区三区蜜桃久 | 亚洲性人人天天夜夜摸 | 日韩av资源站 | 欧美日韩亚洲成人 | 激情视频中文字幕 | 日韩区 | 国产精品久久久久久 | 久久男人天堂 | 日韩免费一区二区 | 国产精品毛片一区二区三区 | 亚洲激情在线视频 | 噜噜噜噜狠狠狠7777视频 | 国产女人第一次做爰毛片 | 全部免费毛片在线播放网站 | 三级黄色大片网站 | 亚洲精品一区中文字幕乱码 | 日韩视频成人 | 黄色片网站在线观看 | 欧美一级久久 | 天天爽综合网 | 欧美精品一区二区在线观看 | 欧美日韩电影一区二区 | 日本视频免费观看 | 中文字幕在线看第二 | 成人在线视频网址 | 五月婷婷导航 | 久久中文字幕电影 | 国产视频2021 |