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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5680|回復(fù): 2
收起左側(cè)

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

[復(fù)制鏈接]
ID:550414 發(fā)表于 2019-5-29 18:04 | 顯示全部樓層 |閱讀模式
單片機和PC端的串口通信例程,有需要的同學可以參考,單片機為STC15W4K32S4系列

單片機源程序如下:
  1. /*************        功能說明        **************
  2. 串口1全雙工查詢方式收發(fā)通訊程序。先進行握手聯(lián)系,雙方準備好之后,
  3. 通過PC向MCU發(fā)送數(shù)據(jù), MCU收到后通過串口把收到的數(shù)據(jù)原樣返回.
  4. 數(shù)據(jù)顯示保留
  5. ******************************************/
  6. #include        "STC15F.H"
  7. u8  segcode    ;         //對應(yīng)鍵碼顯示段碼
  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); //發(fā)送一個字節(jié)數(shù)據(jù)到595
  16. void mcu_ini();        //初始化單片機
  17. //========================================================================
  18. // 函數(shù): void main(void)
  19. // 描述: 主函數(shù)。

  20. //========================================================================
  21. void main(void)
  22. {        u8 dat_recivd;
  23.      mcu_ini();  
  24. //監(jiān)控接收狀態(tài)
  25.    while(!flag)
  26.          { while(RI)
  27.                { RI=0;
  28.                      if (SBUF==0x55) //是否握手信號
  29.                     { SBUF=0xAA; //是,則發(fā)送應(yīng)答信號
  30.                           while(!TI); //等待發(fā)送完畢                           
  31.                           TI=0; //發(fā)送完畢,清除中斷位
  32.                          flag=1; //握手成功,跳出循環(huán)
  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. //握手成功之后,進入接收、發(fā)回狀態(tài)
  42.     while(1)
  43.              { if (RI)
  44.                      { RI=0;            //清除中斷標志
  45.                            dat_recivd=SBUF;        //接收
  46.                            SBUF=dat_recivd; //發(fā)回
  47.                            while (!TI);//等待發(fā)送完畢
  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發(fā)送一個字節(jié)函數(shù)/
  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;        //設(shè)置為準雙向口
  72.            P1M1 = 0;        P1M0 = 0;        //設(shè)置為準雙向口
  73.            P2M1 = 0;        P2M0 = 0;        //設(shè)置為準雙向口
  74.              P3M1 = 0;        P3M0 = 0;        //設(shè)置為準雙向口
  75.            P4M1 = 0;        P4M0 = 0;        //設(shè)置為準雙向口
  76.            P5M1 = 0;        P5M0 = 0;        //設(shè)置為準雙向口
  77.            P6M1 = 0;        P6M0 = 0;        //設(shè)置為準雙向口
  78.            P7M1 = 0;        P7M0 = 0;        //設(shè)置為準雙向口

  79.       //串口初始化: //9600bps@11.0592MHz        
  80.             TH2 = 0xFE;         
  81.             TL2 = 0xE0;         
  82.             AUXR=0x15;        //串口1選擇定時器2為波特率發(fā)生器,啟動定時器2
  83.             SCON=0x50; //8位數(shù)據(jù),可變波特率
  84.             TI=0;
  85.             RI=0;         
  86.             //P_SW1 |= 0x80; //切換到P1.6 p1.7引腳上去
  87.             P_SW1=0;
  88.           }
復(fù)制代碼
  1. /*************        功能說明        **************
  2. 串口1全雙工查詢方式收發(fā)通訊程序。先進行握手聯(lián)系,雙方準備好之后,
  3. 通過PC向MCU發(fā)送數(shù)據(jù), MCU收到后通過串口把收到的數(shù)據(jù)原樣返回.
  4. 數(shù)據(jù)顯示保留
  5. ******************************************/
  6. #include        "STC15Fxxxx.H"
  7. u8  segcode    ;         //對應(yīng)鍵碼顯示段碼
  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); //發(fā)送一個字節(jié)數(shù)據(jù)到595
  16. void mcu_ini();        //初始化單片機
  17. //========================================================================
  18. // 函數(shù): void main(void)
  19. // 描述: 主函數(shù)。

  20. //========================================================================
  21. void main(void)
  22. {        u8 dat_recivd;
  23.      mcu_ini();  
  24. //監(jiān)控接收狀態(tài)
  25.    while(!flag)
  26.          { while(RI)
  27.                { RI=0;
  28.                      if (SBUF==0x55) //是否握手信號
  29.                     { SBUF=0xAA; //是,則發(fā)送應(yīng)答信號
  30.                           while(!TI) //等待發(fā)送完畢
  31.                             {}
  32.                           TI=0; //發(fā)送完畢,清除中斷位
  33.                          flag=1; //握手成功,跳出循環(huán)
  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. //握手成功之后,進入接收、發(fā)回狀態(tài)
  43.     while(1)
  44.              { if (RI)
  45.                      { RI=0;
  46.                            dat_recivd=SBUF;        //接收
  47.                            SBUF=dat_recivd; //發(fā)回
  48.                            while (!TI)
  49.                                {}//等待發(fā)送完畢
  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發(fā)送一個字節(jié)函數(shù)/
  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;        //設(shè)置為準雙向口
  77.            P1M1 = 0;        P1M0 = 0;        //設(shè)置為準雙向口
  78.            P2M1 = 0;        P2M0 = 0;        //設(shè)置為準雙向口
  79.              P3M1 = 0;        P3M0 = 0;        //設(shè)置為準雙向口
  80.            P4M1 = 0;        P4M0 = 0;        //設(shè)置為準雙向口
  81.            P5M1 = 0;        P5M0 = 0;        //設(shè)置為準雙向口
  82.            P6M1 = 0;        P6M0 = 0;        //設(shè)置為準雙向口
  83.            P7M1 = 0;        P7M0 = 0;        //設(shè)置為準雙向口

  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.           }
復(fù)制代碼

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

評分

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

查看全部評分

回復(fù)

使用道具 舉報

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

回復(fù)

使用道具 舉報

ID:241550 發(fā)表于 2023-10-3 11:19 | 顯示全部樓層
大漠孤煙001 發(fā)表于 2023-1-13 10:55
感謝樓主精彩分享!51因你而精彩!我們STC15系列實驗箱里面有STC15W4K串口收發(fā)DEMO,希望能幫到您!   

...

以前還從來沒注意過isp里有demo
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 精品在线免费观看 | 精品伊人久久 | 成人午夜精品 | 国产欧美日韩 | 日韩黄色免费视频 | 日韩一区二区免费视频 | 做爰xxxⅹ性生交 | 亚洲综合五月天婷婷丁香 | 日韩精品在线视频 | 国产中文字幕一区 | 五月天婷婷激情网 | 欧美一区二区在线观看 | 国产精品毛片一区视频播 | 亚洲精品国产精品国自产观看浪潮 | 欧美日日夜夜 | 日本特黄一级片 | 欧美在线视频一区 | 日产精品久久久一区二区 | 欧美日韩黄 | 午夜xxx | 男人操女人视频网站 | av网站免费在线观看 | 欧美激情第二页 | 三年中文在线观看免费大全中国 | 天天天天躁天天爱天天碰2018 | 深夜福利视频网站 | 亚洲黄色精品 | 久久久久久网站 | 在线成人 | 国产欧美精品一区二区三区 | cao在线 | 日韩城人网站 | 色综合视频在线观看 | 性生活视频网站 | 国内自拍xxxx18 | 国产福利在线 | 黄色国产在线观看 | 精品久久一区二区三区 | 黄色小视频免费 | 婷婷狠狠爱| 久久精品久久精品 |