找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

學(xué)51單片機(jī)-UART口發(fā)送一個字符

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:74835 發(fā)表于 2015-4-8 22:35 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
      
       UART口,又叫做通用異步收發(fā)傳輸器(Universal Asynchronous Receiver/Transmitter),是單片機(jī)常用功能的一部分,也是早期臺式電腦必備的一個硬件接口。
    當(dāng)年我調(diào)試UART口的時候,用的還是超級終端,現(xiàn)在都用串口助手了,比我們當(dāng)時方便多了。
       UART口按位發(fā)送和接收字節(jié),雖然相比于并口,慢了很多,但是在有限的IO資源面前,這種方式是非?扇〉。
       UART口主要用于ASCII碼的傳輸,傳輸過程遵循ANSI/EIA-232標(biāo)準(zhǔn)。ASCII碼是啥?看下表:
       表格太大了,放不下,放個ASCII碼鏈接吧: http://www.torrancerestoration.com/mcu/4342.html 大家可以自己看看。就是說,當(dāng)我想發(fā)送字符“A”的時候,我要向串口發(fā)送十進(jìn)制數(shù)65,或者十六進(jìn)制數(shù)41。
       驅(qū)動電路主要有有兩種,一種是基于MAX232這類芯片的:
       上圖中,MAX232的10腳接到單片機(jī)的TXD上,9腳接到單片機(jī)的RXD上。
       另一種以CH340或者PL2303這類芯片為主,因?yàn)殡娔X上的RS232接口越來越少,所以這類芯片使用USB轉(zhuǎn)UART口的方式來實(shí)現(xiàn),應(yīng)用電路如下:
       通信過程中主要參數(shù)如下:
       波特率:傳輸速率,常用范圍9600~115200.
       數(shù)據(jù)位:就是每次發(fā)送的這個數(shù)據(jù)有幾位,常用的是8位,別的還有4、5、6、7.
       校驗(yàn)位:用來校驗(yàn)傳輸資料的正確性。
       停止位:是一個字符數(shù)據(jù)傳輸結(jié)束的標(biāo)志,一般設(shè)為1位。
       波特率如何計算?
       方式1,3的波特率=1/32或1/16*計時器2的溢出率。
此處有一個公式:
波特率=1/16或1/32*(晶振的頻率/12*(256-TH1))
代入:
9600=11059200/32*12*(256-TH1)
TH1=TH0=FDH
       代碼比較多,不貼出來了,已經(jīng)加好注釋了。有興趣的可以自己下載去研究,如下:
  1. /**********************51單片機(jī)學(xué)習(xí)例程************************
  2. *  平臺:Keil U4 + STC89C52
  3. *  名稱:UART口傳輸一個字符 A
  4. *  編寫:起航
  5. *  晶體:11.0592MHZ
  6. ******************************************************************/

  7. #include <reg52.h>
  8. typedef   unsigned char  uint8;
  9. typedef   unsigned int   uint16;

  10. uint8 num = 65;
  11. /***************************************************
  12. *
  13. *                                                        延時子函數(shù)
  14. *
  15. ****************************************************/
  16. void delay(uint16 n)
  17. {
  18.         while(n--);
  19. }


  20. /***************************************************
  21. *
  22. *                                                        串口初始化子函數(shù)
  23. *
  24. ****************************************************/
  25. void UART_init(void)
  26. {
  27.         SCON = 0x50;                                //工作在方式1 ,8位異步收發(fā),波特率由定時器控制
  28.         TMOD = 0x20;                                //選擇定時器1做為波特率發(fā)生器,方式2
  29.         TH1  = 0xFD;                                //定時器賦初值
  30.         TL1  = 0xFD;
  31.         TR1  = 1;                                                //啟動定時器
  32.         ES   = 1;                                                //串口中斷允許
  33.         EA   = 1;                                                //開啟總中斷
  34. }

  35. /***************************************************
  36. *
  37. *                                                        字節(jié)發(fā)送子函數(shù)
  38. *
  39. ****************************************************/
  40. void UART_send_byte(uint8 dat)
  41. {
  42.         SBUF = dat;
  43.         while(!TI);                                        //等待發(fā)送完成
  44. }



  45. int main()
  46. {
  47.         UART_init();
  48.         while(1)                                                //循環(huán)發(fā)送字符 A
  49.         {
  50.                 UART_send_byte(num);
  51.                 delay(20000);
  52.         }
  53.         return(0);
  54. }
復(fù)制代碼

程序及hex文件下載: UART1.zip (28.52 KB, 下載次數(shù): 72)

   



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂1 踩

相關(guān)帖子

回復(fù)

使用道具 舉報

沙發(fā)
ID:111422 發(fā)表于 2016-3-30 14:59 | 只看該作者
值得一贊
回復(fù)

使用道具 舉報

板凳
ID:120844 發(fā)表于 2016-5-16 23:15 | 只看該作者
贊一個,下載下來了,先看一下,正在試著寫232通訊方式的程序
回復(fù)

使用道具 舉報

地板
ID:120844 發(fā)表于 2016-5-16 23:17 | 只看該作者
贊一個,正好學(xué)習(xí)232通訊方式的程序
回復(fù)

使用道具 舉報

5#
ID:120844 發(fā)表于 2016-5-16 23:22 | 只看該作者
?附件的代碼也不多啊,也是64行而已的啊
回復(fù)

使用道具 舉報

6#
ID:208733 發(fā)表于 2017-9-13 11:53 | 只看該作者
好教程,值得我們新手學(xué)習(xí)
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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