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

標題: 學51單片機-UART口發送一個字符 [打印本頁]

作者: jiajiamei    時間: 2015-4-8 22:35
標題: 學51單片機-UART口發送一個字符
      
       UART口,又叫做通用異步收發傳輸器(Universal Asynchronous Receiver/Transmitter),是單片機常用功能的一部分,也是早期臺式電腦必備的一個硬件接口。
    當年我調試UART口的時候,用的還是超級終端,現在都用串口助手了,比我們當時方便多了。
       UART口按位發送和接收字節,雖然相比于并口,慢了很多,但是在有限的IO資源面前,這種方式是非常可取的。
       UART口主要用于ASCII碼的傳輸,傳輸過程遵循ANSI/EIA-232標準。ASCII碼是啥?看下表:
       表格太大了,放不下,放個ASCII碼鏈接吧: http://www.zg4o1577.cn/mcu/4342.html 大家可以自己看看。就是說,當我想發送字符“A”的時候,我要向串口發送十進制數65,或者十六進制數41。
       驅動電路主要有有兩種,一種是基于MAX232這類芯片的:
       上圖中,MAX232的10腳接到單片機的TXD上,9腳接到單片機的RXD上。
       另一種以CH340或者PL2303這類芯片為主,因為電腦上的RS232接口越來越少,所以這類芯片使用USB轉UART口的方式來實現,應用電路如下:
       通信過程中主要參數如下:
       波特率:傳輸速率,常用范圍9600~115200.
       數據位:就是每次發送的這個數據有幾位,常用的是8位,別的還有4、5、6、7.
       校驗位:用來校驗傳輸資料的正確性。
       停止位:是一個字符數據傳輸結束的標志,一般設為1位。
       波特率如何計算?
       方式1,3的波特率=1/32或1/16*計時器2的溢出率。
此處有一個公式:
波特率=1/16或1/32*(晶振的頻率/12*(256-TH1))
代入:
9600=11059200/32*12*(256-TH1)
TH1=TH0=FDH
       代碼比較多,不貼出來了,已經加好注釋了。有興趣的可以自己下載去研究,如下:
  1. /**********************51單片機學習例程************************
  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. *                                                        延時子函數
  14. *
  15. ****************************************************/
  16. void delay(uint16 n)
  17. {
  18.         while(n--);
  19. }


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

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



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

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

   




作者: 十九碼的鞋    時間: 2016-3-30 14:59
值得一贊
作者: chwe1112    時間: 2016-5-16 23:15
贊一個,下載下來了,先看一下,正在試著寫232通訊方式的程序
作者: chwe1112    時間: 2016-5-16 23:17
贊一個,正好學習232通訊方式的程序
作者: chwe1112    時間: 2016-5-16 23:22
?附件的代碼也不多啊,也是64行而已的啊
作者: 不吃草的牛    時間: 2017-9-13 11:53
好教程,值得我們新手學習




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 亚洲国产高清免费 | 91欧美精品成人综合在线观看 | 在线观看免费黄色片 | 亚洲网址在线观看 | 国产成人精品a视频一区www | 国产精品成人久久久久 | 91视频在线看 | 国产精品69毛片高清亚洲 | 91av亚洲| 久久精品高清视频 | 日日操操 | 久久国产精品-久久精品 | 中文字幕在线免费视频 | 最新伦理片 | 日韩综合在线视频 | 国产午夜精品福利 | 日韩中文字幕免费在线观看 | 午夜精品一区二区三区在线播放 | 中文字幕视频在线观看免费 | 日本视频在线 | 国产成人免费视频 | 午夜电影网 | 国产精品视频999 | 欧美日本韩国一区二区 | av一级| 日韩免费看片 | 欧美精品a∨在线观看不卡 国产精品久久国产精品 | 久久精品欧美电影 | 亚洲午夜一区二区 | 成人综合久久 | 久久se精品一区精品二区 | 国产精品99久久久久久www | 五十女人一级毛片 | 不卡一区| 特黄视频| 日韩欧美国产一区二区 | 99精品网| 亚洲欧美激情四射 | 久视频在线观看 | 久久久婷 | 亚洲精品一区二区在线 |