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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 24011|回復: 3
打印 上一主題 下一主題
收起左側

學51單片機-UART口發送一串字符

[復制鏈接]
跳轉到指定樓層
樓主
ID:74835 發表于 2015-4-8 22:38 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
      
       昨天說的是如何通過UART口發送一個英文字母,其實對照那個ASCII碼表,大小寫字母、數字、標點,還有一些符號都可以發送,只要你找到它對應的編碼就行。
       今天說一下如何用UART口發送字符串和漢字。
       如果按照昨天的思路,發送一串字母或者數字也很好實現,我只要把這串字母或者數字對應的ASCII碼找出來,寫進一個數組就行了。但是這樣還要查表,有點麻煩,今天說一個更簡單的方法。
       假如我想發送5個字母 A,用昨天的方法,怎么實現?定義一個數組:
       Uchar table[] = {0x41,0x41,0x41,0x41,0x41};              //五個字母 A
       顯得很傻,這次的方法:
       Uchar table[] =”AAAAA”;                            //五個字母A
       有沒有覺得這個很高端~~~
       如果我想發送漢字呢?
       Uchar table[] = “大家好,我是MCU起航!”;                     //字符串
       為什么會這樣簡單?又要扯編碼的事了,雖然我也不是很懂。
首先,我們知道計算機能識別的是二進制的編碼:0和1.
而ASCII碼是處理英文信息的標準編碼,hello,fine,thank you!等等語句都可以用ASCII碼表示。
那么漢字呢?為了讓我們國家的語言沖出亞洲,走進計算機,也要有一套統一的編碼。于是,1981年5月,國家標準局頒布了《信息交換用漢字編碼字符集——基本集》,代號為GB2312-8.在這套編碼里面,漢字用兩個字節表示。
而我們寫的這一串字符,在進行編譯的時候,KEIL會幫我們生成相應的編碼,統稱為:機內碼!漢字有漢字的機內碼,英文有英文的機內碼。
說了這么多,開始寫程序,還是昨天的電路,今個顯示的字符多一點!如下圖:

  1. /**********************51單片機學習例程************************
  2. *  平臺:Keil U4 + STC89C52
  3. *  名稱:UART口傳輸一個字符 A
  4. *  編寫:起航
  5. *  晶體:11.0592MHZ
  6. ******************************************************************/

  7. #include <reg52.h>
  8. #define jingzhen     11059200UL                         /*使用11.0592M晶體*/         
  9. #define botelv   9600UL                     /*波特率定義為9600*/
  10. unsigned char zifuchuan[]="大家好,我是MCU起航!";                        //待顯示字符。
  11. volatile unsigned char sending;

  12. void delay(unsigned char i)
  13. {
  14.         unsigned char j,k;
  15.         for(j=i;j>0;j--)
  16.                 for(k=90;k>0;k--);
  17. }
  18. void init(void)                                //串口初始化
  19. {
  20. EA=0; //暫時關閉中斷
  21. TMOD&=0x0F;  //定時器1模式控制在高4位
  22. TMOD|=0x20;    //定時器1工作在模式2,自動重裝模式
  23. SCON=0x50;     //串口工作在模式1
  24. TH1=256-jingzhen/(botelv*12*16);  //計算定時器重裝值
  25. TL1=256-jingzhen/(botelv*12*16);
  26. PCON|=0x80;    //串口波特率加倍
  27. ES=1;         //串行中斷允許
  28. TR1=1;        //啟動定時器1
  29. REN=1;        //允許接收
  30. EA=1;         //允許中斷
  31. }

  32. void send(unsigned char d)                  //發送一個字節的數據,形參d即為待發送數據。
  33. {

  34. SBUF=d; //將數據寫入到串口緩沖
  35. sending=1;         //設置發送標志
  36. while(sending); //等待發送完畢
  37. }

  38. void sendc(unsigned char * pd)
  39. {
  40. while((*pd)!='\0') //發送字符串,直到遇到0才結束
  41. {
  42.   send(*pd); //發送一個字符
  43.   pd++;  //移動到下一個字符
  44. }
  45. }

  46. int main()
  47. {
  48.         init();
  49.         while(1)
  50.         {
  51.                         delay(200);
  52.                         sendc(zifuchuan);
  53.         }
  54.         return(0);
  55. }

  56. void uart(void) interrupt 4                 //串口發送中斷
  57. {
  58. if(RI)    //收到數據
  59. {
  60.   RI=0;   //清中斷請求
  61. }
  62. else      //發送完一字節數據
  63. {
  64.   TI=0;
  65.   sending=0;  //清正在發送標志
  66. }
  67. }
復制代碼
       下載鏈接: UART_CHAR.zip (31.79 KB, 下載次數: 94)
       對了,留個思考題,如果在字符串的結尾加上 \r  或者  \n 是什么效果,大家可以試試!
       Uchar table[] =”AAAAA\r”;      




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

使用道具 舉報

沙發
ID:208733 發表于 2017-9-13 11:46 | 只看該作者
樓主強大,下來學習學習
回復

使用道具 舉報

板凳
ID:325608 發表于 2018-5-20 17:11 | 只看該作者
學習下
回復

使用道具 舉報

地板
ID:190832 發表于 2018-5-20 19:21 | 只看該作者
啥破玩意?不用去ASCII碼表查找,直接把自己要輸出的用char類型表示就行,比如u8 table[5] = {'A', 'B', 'V', 'D' ,'E'};,通過串口輸出電腦端收到的就是ABCDE
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产成人精品免费视频大全最热 | 久久精品日产第一区二区三区 | 精品欧美乱码久久久久久 | 亚洲精品9999久久久久 | 欧美日韩国产一区二区 | 99免费视频 | 亚洲日本激情 | 欧美久久久网站 | 美女视频黄的免费 | 黄色在线免费看 | 成人免费看片网 | 亚洲日韩中文字幕一区 | 97免费在线视频 | 中文字幕国产视频 | 成人九色 | 欧美一级免费看 | 呦呦在线视频 | 天天综合永久入口 | 亚洲电影一区二区三区 | 亚洲天堂久久 | 精品自拍视频在线观看 | 国产欧美一区二区三区在线播放 | 久草福利 | 国产精品中文在线 | 免费视频久久久久 | 日本成人毛片 | 日韩成人免费中文字幕 | 久久美女视频 | www.久草.com | 无毛av | 综合视频在线 | 国际精品鲁一鲁一区二区小说 | 男人av的天堂 | 欧美日韩中文字幕 | 日本a v在线播放 | 中文字幕国产日韩 | 又爽又黄axxx片免费观看 | 亚洲欧美男人天堂 | 国内精品久久久久久久影视简单 | 国产精品久久一区二区三区 | 国产高清视频一区 |