標(biāo)題: 單片機(jī)I2C改串口通訊的問題(C語言) [打印本頁]

作者: alexhe    時(shí)間: 2018-8-11 08:21
標(biāo)題: 單片機(jī)I2C改串口通訊的問題(C語言)
之前的工程師用的是I2C的,現(xiàn)在要求用串口通訊,TX  RX 需要重新設(shè)置嗎,改怎么設(shè)置,新手努力學(xué)習(xí)中,請大家?guī)蛶兔Γ。?br />
作者: lyema1    時(shí)間: 2018-8-11 10:09
I2C和串口通訊都是通訊用的,接口需要根據(jù)通訊協(xié)議來配置,具體的接口看你用的是什么mcu,串口是通過模式配置來通訊,I2C是用時(shí)鐘來控制的,接口不一樣,具體看你要怎么用了
作者: woshige    時(shí)間: 2018-8-11 11:12
肯定要改的,查參考手冊,串口用的什么引腳,對應(yīng)改一下,而且IIC和串口通信也不一樣,收發(fā)程序也需要改
作者: angmall    時(shí)間: 2018-8-11 11:32

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

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

  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,請?jiān)诎l(fā)送區(qū)輸入任意信息");

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

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

復(fù)制代碼

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

用的是stc15f2k60s2單片機(jī),然后我把數(shù)據(jù)存入SBUF,發(fā)現(xiàn)沒有數(shù)據(jù),是不是因?yàn)樗麤]有自動(dòng)發(fā)送接收數(shù)據(jù)的功能?如果沒有的話我該怎么處理,是一位一位發(fā)嗎?
作者: alexhe    時(shí)間: 2018-8-11 15:26
lyema1 發(fā)表于 2018-8-11 10:09
I2C和串口通訊都是通訊用的,接口需要根據(jù)通訊協(xié)議來配置,具體的接口看你用的是什么mcu,串口是通過模式配 ...

stc15f2k60s2單片機(jī),現(xiàn)在能發(fā)送數(shù)據(jù)了,但是我把數(shù)據(jù)存入SBUF中,沒有數(shù)據(jù)發(fā)出,我一位一位發(fā)的就有數(shù)據(jù),但是接收不到數(shù)據(jù),請問怎么解決,有相關(guān)的程序例子或者資料嗎
作者: alexhe    時(shí)間: 2018-8-11 15:27
stc15f2k60s2單片機(jī),現(xiàn)在能發(fā)送數(shù)據(jù)了,但是我把數(shù)據(jù)存入SBUF中,沒有數(shù)據(jù)發(fā)出,我一位一位發(fā)的就有數(shù)據(jù),但是接收不到數(shù)據(jù),請問怎么解決,有相關(guān)的程序例子或者資料嗎




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1