找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 8783|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)SPI通信和UART通信原理詳解 附程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:100029 發(fā)表于 2015-12-22 21:42 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
I2C為雙線串行通信,UART為單線串行通信如DS18B20,SPI為三線或四線通信,如DS1302。
UART通信,即通用異步收發(fā)傳輸(Universal Asynchronous Receiver/Transmitter)

UART使用的是異步,串行通信。
    串行通信是指利用一條傳輸線將資料一位位地順序傳送。特點(diǎn)是通信線路簡(jiǎn)單,利用簡(jiǎn)單的線纜就可實(shí)現(xiàn)通信,降低成本,適用于遠(yuǎn)距離通信,但傳輸速度慢的應(yīng)用場(chǎng)合。
    異步通信以一個(gè)字符為傳輸單位,通信中兩個(gè)字符間的時(shí)間間隔多少是不固定的,然而在同一個(gè)字符中的兩個(gè)相鄰位間的時(shí)間間隔是固定的。
    數(shù)據(jù)傳送速率用波特率來(lái)表示,即每秒鐘傳送的二進(jìn)制位數(shù)。例如數(shù)據(jù)傳送速率為120字符/秒,而每一個(gè)字符為10位(1個(gè)起始位,7個(gè)數(shù)據(jù)位,1個(gè)校驗(yàn)位,1個(gè)結(jié)束位),則其傳送的波特率為10×120=1200字符/秒=1200波特。
    數(shù)據(jù)通信格式如下圖:


其中各位的意義如下:
    起始位:先發(fā)出一個(gè)邏輯”0”信號(hào),表示傳輸字符的開(kāi)始。
    數(shù)據(jù)位:可以是5~8位邏輯”0”或”1”。如ASCII碼(7位),擴(kuò)展BCD碼(8位)。小端傳輸
    校驗(yàn)位:數(shù)據(jù)位加上這一位后,使得“1”的位數(shù)應(yīng)為偶數(shù)(偶校驗(yàn))或奇數(shù)(奇校驗(yàn))
    停止位:它是一個(gè)字符數(shù)據(jù)的結(jié)束標(biāo)志?梢允1位、1.5位、2位的高電平。
    空閑位:處于邏輯“1”狀態(tài),表示當(dāng)前線路上沒(méi)有資料傳送。

    注:異步通信是按字符傳輸?shù),接收設(shè)備在收到起始信號(hào)之后只要在一個(gè)字符的傳輸時(shí)間內(nèi)能和發(fā)送設(shè)備保持同步就能正確接收。下一個(gè)字符起始位的到來(lái)又使同步重新校準(zhǔn)(依靠檢測(cè)起始位來(lái)實(shí)現(xiàn)發(fā)送與接收方的時(shí)鐘自同步的)


SPI通訊的DS1302
  1. #include"reg52.h"

  2. #define uchar unsigned char

  3. uchar dd2[]="date:";

  4. uchar dd1[]="Time:";

  5. sbit rs=P2^0;

  6. sbit e=P2^1;

  7. sbit rst=P2^2;

  8. sbit sclk=P2^3;

  9. sbit dio=P2^4;

  10. sbit A7=ACC^7;

  11. sbit B0=B^0;

  12. void delay(uchar us)

  13. {

  14.   while(us--);

  15. }

  16. void w1602(bit rw,uchar dat)

  17. {

  18.   rs=rw;

  19.         e=0;

  20.         P3=dat;

  21.         delay(3);

  22.         e=1;

  23.         delay(8);

  24.         e=0;

  25. }

  26. void init1602()

  27. {

  28.   w1602(0,0x38);

  29.         w1602(0,0x06);

  30.         w1602(0,0x0c);

  31.         w1602(0,0x01);

  32. }

  33. uchar r1302(uchar addr)

  34. {

  35.    uchar i;

  36.         rst=0;

  37.         sclk=0;

  38.         rst=1;

  39.         B=addr;

  40.         for(i=0;i<8;i++)

  41.          {

  42.       sclk=0;

  43.                         dio=B0;

  44.                         sclk=1;

  45.                         B=B>>1;

  46.     }

  47.                 for(i=0;i<8;i++)

  48.                 {

  49.       A7=dio;

  50.                         sclk=1;

  51.                         ACC=ACC>>1;

  52.                         sclk=0;

  53.     }

  54.                 rst=0;

  55.                 return(ACC);

  56. }

  57. void main()

  58. {

  59.         uchar i;

  60.         init1602();

  61.         while(1)

  62.         {

  63.                 w1602(0,0x80);

  64.                for(i=0;i<5;i++)

  65.                  w1602(1,dd1[i]);

  66.                 w1602(1,0x30+((r1302(0x85)>>4)& 0x0f));

  67.                 w1602(1,0x30+(r1302(0x85)& 0x0f));

  68.                 w1602(1,0x2d);

  69.                 w1602(1,0x30+((r1302(0x83)>>4)& 0x0f));

  70.                 w1602(1,0x30+(r1302(0x83)& 0x0f));

  71.                 w1602(1,0x2d);

  72.                 w1602(1,0x30+((r1302(0x81)>>4)& 0x0f));

  73.                 w1602(1,0x30+(r1302(0x81)& 0x0f));

  74.                

  75.                 w1602(0,0xc0);

  76.                for(i=0;i<5;i++)

  77.                  w1602(1,dd2[i]);

  78.                 w1602(1,0x30+((r1302(0x87)>>4)& 0x0f));

  79.                 w1602(1,0x30+(r1302(0x87)& 0x0f));

  80.                 w1602(1,0x2d);

  81.                 w1602(1,0x30+((r1302(0x89)>>4)& 0x0f));

  82.                 w1602(1,0x30+(r1302(0x89)& 0x0f));

  83.                 w1602(1,0x2d);

  84.                 w1602(1,0x30+((r1302(0x8d)>>4)& 0x0f));

  85.                 w1602(1,0x30+(r1302(0x8d)& 0x0f));

  86.   }

  87. }
復(fù)制代碼


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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表