找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3081|回復: 6
打印 上一主題 下一主題
收起左側(cè)

單片機I2C改串口通訊的問題(C語言)

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:381738 發(fā)表于 2018-8-11 08:21 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
之前的工程師用的是I2C的,現(xiàn)在要求用串口通訊,TX  RX 需要重新設置嗎,改怎么設置,新手努力學習中,請大家?guī)蛶兔Γ。?br />
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:385204 發(fā)表于 2018-8-11 10:09 | 只看該作者
I2C和串口通訊都是通訊用的,接口需要根據(jù)通訊協(xié)議來配置,具體的接口看你用的是什么mcu,串口是通過模式配置來通訊,I2C是用時鐘來控制的,接口不一樣,具體看你要怎么用了
回復

使用道具 舉報

板凳
ID:174087 發(fā)表于 2018-8-11 11:12 | 只看該作者
肯定要改的,查參考手冊,串口用的什么引腳,對應改一下,而且IIC和串口通信也不一樣,收發(fā)程序也需要改
回復

使用道具 舉報

地板
ID:155507 發(fā)表于 2018-8-11 11:32 | 只看該作者

  1. /*-----------------------------------------------
  2.   名稱:串口通信
  3.   內(nèi)容:連接好串口或者usb轉(zhuǎn)串口至電腦,下載該程序,打開電源
  4.         打開串口調(diào)試程序,將波特率設置為2400,無奇偶校驗
  5.         晶振12MHz,發(fā)送和接收使用的格式相同,如都使用
  6.         字符型格式,按復位重啟程序,可以看到接收到 UART test,請在發(fā)送區(qū)輸入任意信
  7.                 然后在發(fā)送區(qū)發(fā)送任意信息,接收區(qū)返回同樣信息,表明串口收發(fā)無誤
  8. ------------------------------------------------*/

  9. #include<reg52.h> //包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義                        

  10. /*------------------------------------------------
  11.                    函數(shù)聲明
  12. ------------------------------------------------*/
  13. void SendStr(unsigned char *s);

  14. /*------------------------------------------------
  15.                     串口初始化
  16. ------------------------------------------------*/
  17. void InitUART  (void)
  18. {

  19.     SCON  = 0x50;                        // SCON: 模式 1, 8-bit UART, 使能接收  
  20.     TMOD |= 0x20;               // TMOD: timer 1, mode 2, 8-bit 重裝
  21.     TH1   = 0xF3;               // TH1:  重裝值 2400 波特率 晶振 12MHz  
  22.     TR1   = 1;                  // TR1:  timer 1 打開                        
  23.     EA    = 1;                  //打開總中斷
  24.    // ES    = 1;                  //打開串口中斷
  25. }                           
  26. /*------------------------------------------------
  27.                     主函數(shù)
  28. ------------------------------------------------*/
  29. void main (void)
  30. {

  31. InitUART();

  32. SendStr("UART test,請在發(fā)送區(qū)輸入任意信息");

  33. ES    = 1;                  //打開串口中斷
  34. while (1)                       
  35.     {
  36.    
  37.     }
  38. }

  39. /*------------------------------------------------
  40.                     發(fā)送一個字節(jié)
  41. ------------------------------------------------*/
  42. void SendByte(unsigned char dat)
  43. {
  44. SBUF = dat;
  45. while(!TI);
  46.       TI = 0;
  47. }
  48. /*------------------------------------------------
  49.                     發(fā)送一個字符串
  50. ------------------------------------------------*/
  51. void SendStr(unsigned char *s)
  52. {
  53. while(*s!='\0')// \0 表示字符串結(jié)束標志,通過檢測是否字符串末尾
  54.   {
  55.   SendByte(*s);
  56.   s++;
  57.   }
  58. }
  59. /*------------------------------------------------
  60.                      串口中斷程序
  61. ------------------------------------------------*/
  62. void UART_SER (void) interrupt 4 //串行中斷服務程序
  63. {
  64.     unsigned char Temp;          //定義臨時變量
  65.    
  66.    if(RI)                        //判斷是接收中斷產(chǎn)生
  67.      {
  68.           RI=0;                      //標志位清零
  69.           Temp=SBUF;                 //讀入緩沖區(qū)的值
  70.           P1=Temp;                   //把值輸出到P1口,用于觀察
  71.       SBUF=Temp;                 //把接收到的值再發(fā)回電腦端
  72.          }
  73.    if(TI)                        //如果是發(fā)送標志位,清零
  74.      TI=0;
  75. }

復制代碼
回復

使用道具 舉報

5#
ID:381738 發(fā)表于 2018-8-11 15:17 | 只看該作者
lyema1 發(fā)表于 2018-8-11 10:09
I2C和串口通訊都是通訊用的,接口需要根據(jù)通訊協(xié)議來配置,具體的接口看你用的是什么mcu,串口是通過模式配 ...

用的是stc15f2k60s2單片機,然后我把數(shù)據(jù)存入SBUF,發(fā)現(xiàn)沒有數(shù)據(jù),是不是因為他沒有自動發(fā)送接收數(shù)據(jù)的功能?如果沒有的話我該怎么處理,是一位一位發(fā)嗎?
回復

使用道具 舉報

6#
ID:381738 發(fā)表于 2018-8-11 15:26 | 只看該作者
lyema1 發(fā)表于 2018-8-11 10:09
I2C和串口通訊都是通訊用的,接口需要根據(jù)通訊協(xié)議來配置,具體的接口看你用的是什么mcu,串口是通過模式配 ...

stc15f2k60s2單片機,現(xiàn)在能發(fā)送數(shù)據(jù)了,但是我把數(shù)據(jù)存入SBUF中,沒有數(shù)據(jù)發(fā)出,我一位一位發(fā)的就有數(shù)據(jù),但是接收不到數(shù)據(jù),請問怎么解決,有相關的程序例子或者資料嗎
回復

使用道具 舉報

7#
ID:381738 發(fā)表于 2018-8-11 15:27 | 只看該作者
stc15f2k60s2單片機,現(xiàn)在能發(fā)送數(shù)據(jù)了,但是我把數(shù)據(jù)存入SBUF中,沒有數(shù)據(jù)發(fā)出,我一位一位發(fā)的就有數(shù)據(jù),但是接收不到數(shù)據(jù),請問怎么解決,有相關的程序例子或者資料嗎
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表