衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

單片機與PC機串口通信實驗

CHANBAEK ? 來源:狂錘硬件 ? 作者:顧 ? 2023-06-28 11:39 ? 次閱讀

這是我們的實驗要求:

效果1 單片機發送數據給PC機,PC機利用串口調試助手將數據顯示出來。(40分)

效果2 PC機發送數據給單片機,單片機將收到的數據返回給PC機,并通過串口調試助手顯示出來。(50分)

01電路圖

這個圖的最小系統的電路是有問題的。【就是單片機左邊的電路,參考時要慎重】

圖片

虛擬串口:

圖片

然后是單片機的串口設置

圖片

我們把虛擬串口com2給了MCU,那么我們把com3給PC端

02寫代碼前的一些設置

1.晶振設置為11.0592MHz

2.我們的波特率9600

SCON = 0X50;   //SM0=0,SM1 =1【方式一】,REN =1【允許串口接收】
  PCON = 0X80;   //控制波特率的倍速提高一倍:SMOD = 1
  TMOD |= 0X20;  //使用的是定時器T1
  TH1 = 0XFA;    //波特率為9600
  TL1 = 0XFA;
  TR1 = 1;
  IE = 0X90;    // 1001 0000  EA 置為1   ES 置為1
  //EA 中斷總允許位    ES 串行中斷允許位

【注意】 定時器T1作為默認的波特率發生器,要記得禁止T1中斷。

接下來說說我們的TH1和TL1怎么計算的

TL1 = TH1 = 256-(2^SMOD * f_osc )/ 32 * 12 * 波特率

f_osc:晶振頻率 (單位:MHz) 計算時,記得乘以10^6

例如我們本次實驗使用的是提高一倍的波特率的倍速

PCON = 0X80;   //控制波特率的倍速提高一倍:SMOD = 1

波特率為9600,晶振為11.0592MHz

圖片

那么我們的TH1 = 256-(211.059210^6)/(32129600)=250

打開電腦的計算器:將十進制數轉換為十六進制數,在DEC那里輸入250,我們要獲取的就是HEX的值

圖片

最后TH1=TL1 = 0XFA;

這里也要設置哦

image.png

這個是串口助手的設置

圖片

03代碼

代碼很短小哦

#include < reg51.h >


#define u8 unsigned char
#define u16 unsigned int 


u8 data_r;


void init()
{
  SCON = 0X50;
  PCON = 0X80;
  TMOD |= 0X20;
  TH1 = 0XFA;
  TL1 = 0XFA;
  TR1 = 1;
  IE = 0X90;
}


void putchar(u8 n)
{
  SBUF = n;
  while(TI == 0);
  TI = 0;
}


void main(){

  init();
  putchar('H');
  putchar('E');
  putchar('L');
  putchar('L');
  putchar('O');
  while(1)
  {  
  }
}


void Usart () interrupt 4
{
  if(RI == 1)
  {
    data_r = SBUF ;
    putchar(data_r);
    RI = 0;
  }

}

04分塊來講

//串口、定時器T1的初始化
void init()
{
  SCON = 0X50;
  PCON = 0X80;
  TMOD |= 0X20;
  TH1 = 0XFA;
  TL1 = 0XFA;
  TR1 = 1;
  IE = 0X90;
}

這個初始化就不多說了,我們的“02”部分,要點已經講完了。

void putchar(u8 n)
{
  SBUF = n;
  while(TI == 0);
  TI = 0;
}

這一部分也沒啥好講的,就是一個發送字符的函數,我們將要發送的字符,放進我們的發送寄存器SBUF中,TI是系統自動產生的中斷信號,最后記得T1手動清零哦。

TI = 0;

這個是串口中斷函數:

void Usart () interrupt 4
{
  if(RI == 1)
  {
    data_r = SBUF ;
    putchar(data_r); //寫了這句話,是為了在串口助手看到你發過去的數據
    RI = 0;
  }
}

這個SBUF是接收寄存器SBUF

data_r = SBUF ;

將接收到的字符存入我們的data_r中,再通過這句代碼,就可以在串口助手上,看到我們發送給單片機的數據

putchar(data_r); //寫了這句話,是為了在串口助手看到你發過去的數據

最后是我們的主函數

void main(){
  init();
  putchar('H');
  putchar('E');
  putchar('L');
  putchar('L');
  putchar('O');
  while(1)
  {  
  }
}

這塊代碼的效果:串口助手顯示:HELLO【可以自己去試一試昂】

putchar('H');
  putchar('E');
  putchar('L');
  putchar('L');
  putchar('O');
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 電路圖
    +關注

    關注

    10356

    文章

    10725

    瀏覽量

    532906
  • 單片機
    +關注

    關注

    6043

    文章

    44621

    瀏覽量

    638583
  • PC機
    +關注

    關注

    2

    文章

    201

    瀏覽量

    28666
  • 串口通信
    +關注

    關注

    34

    文章

    1627

    瀏覽量

    55732
收藏 人收藏

    評論

    相關推薦

    LabVIEW串口通信實例:PC與51單片機串口通信實

    相關課程推薦:《8周LabVIEW視覺項目編程實戰特訓營》LabVIEW串口通信實例:PC與51單片機
    發表于 06-28 20:04

    LabVIEW串口通信實例:PCPC串口通信實

    08、LabVIEW串口通信實例:PCPC串口
    發表于 06-28 20:07

    LabVIEW串口通信實例:PC與51單片機串口通信實

    LabVIEW串口通信實例:PC與51單片機串口通信實
    發表于 12-18 10:16

    單片機串口通信實驗

    單片機串口通信實驗一、實驗目的二、實驗內容三、實驗步驟四、C代碼如下五、
    發表于 11-10 07:45

    AT89系列單片機PC的串行通信實驗電路圖

    AT89系列單片機PC的串行通信實驗電路圖:
    發表于 05-21 13:43 ?2955次閱讀
    AT89系列<b class='flag-5'>單片機</b>與<b class='flag-5'>PC</b><b class='flag-5'>機</b>的串行<b class='flag-5'>通信實驗</b>電路圖

    單片機PC串口通信應用 (RS232 協議)

    本文是關于計算機與單片機通信實驗的應用。主要包括實驗原理闡述、硬件電路圖、源程序等 目錄: 1、單片機串口
    發表于 08-20 10:38 ?908次下載
    <b class='flag-5'>單片機</b>和<b class='flag-5'>PC</b><b class='flag-5'>機</b>的<b class='flag-5'>串口</b><b class='flag-5'>通信</b>應用 (RS232 協議)

    PC單片機通信應用

    本文是關于計算機與單片機通信實驗的應用。主要包括實驗原理闡述、硬件電路圖、源程序等 目錄: 1、單片機串口
    發表于 08-20 10:33 ?7225次閱讀
    <b class='flag-5'>PC</b><b class='flag-5'>機</b>與<b class='flag-5'>單片機</b><b class='flag-5'>通信</b>應用

    PC單片機串口通信程序設計.zip

    【LabVIEW從入門到精通】5.2.4.4 PC單片機串口通信程序設計
    發表于 01-08 15:48 ?0次下載

    單片機PC串口通信顯示

    單片機基礎學習,串口學習。使單片機PC串口通信
    發表于 06-01 17:48 ?15次下載

    單片機_PC_串口通信

    單片機 PC 串口通信_1,感興趣的小伙伴們可以看看。
    發表于 08-03 17:55 ?46次下載

    單片機之間的串口通信實

    STC80C51-單片機之間的串口通信實
    發表于 09-01 15:44 ?25次下載

    單片機應用系統設計技術——雙單片機串口通信實驗

    單片機串口通信實驗一、實驗目的二、實驗內容三、實驗步驟四、C代碼如下五、
    發表于 11-05 13:50 ?15次下載
    <b class='flag-5'>單片機</b>應用系統設計技術——雙<b class='flag-5'>單片機</b><b class='flag-5'>串口</b><b class='flag-5'>通信實驗</b>

    單片機PC 串口通信實驗

    實驗原理51 單片機的串行口是一個可編程的全雙工的通信接口,具有 UART(通用異步收發器)的全部功能,能同時進行數據的發送和接收,也可以作為同步移位寄存器使用。51 單片機的串行口主
    發表于 11-11 13:36 ?14次下載
    <b class='flag-5'>單片機</b>與 <b class='flag-5'>PC</b> <b class='flag-5'>機</b><b class='flag-5'>串口</b><b class='flag-5'>通信實驗</b>

    串口通信實驗

    串口通信實驗串口通信實驗代碼圖像串口通信實驗晶振12MHz,波特率1200, 程序啟動后
    發表于 01-14 10:12 ?6次下載
    <b class='flag-5'>串口</b><b class='flag-5'>通信實驗</b>

    基于LabVIEW的單片機串口通信實

    電子發燒友網站提供《基于LabVIEW的單片機串口通信實現.pdf》資料免費下載
    發表于 10-30 09:13 ?6次下載
    基于LabVIEW的<b class='flag-5'>單片機</b><b class='flag-5'>串口</b><b class='flag-5'>通信實</b>現
    皇冠娱乐场| 百家乐官网三路法| 圣淘沙百家乐官网游戏| 百家乐官网隔一数打法| 百家乐官网赢钱海立方| 网上百家乐官网是真是假天涯论坛| 百家乐官网赌博赌博平台| 真博百家乐官网的玩法技巧和规则| 怎样玩百家乐官网的玩法技巧和规则 | 百家乐官网api| 百家乐网络赌博真假| 凤凰百家乐的玩法技巧和规则| 六合彩150期开奖结果| 德州扑克 技巧| 百乐坊百家乐官网娱乐城| 百家乐走势图解| 澳门网络博彩| 宝马会百家乐官网的玩法技巧和规则| 百家乐稳赚打法| 大发888娱| 百家乐官网赌场合作| 百家乐网页游戏网址| 利澳娱乐城官方网| 足球百家乐官网系统| 三公百家乐官网在哪里可以玩| 同花順国际娱乐城| 网络百家乐的陷阱| 大发888下载安装| 手机百家乐官网的玩法技巧和规则 | 百家乐套利| 百家乐官网作弊手段| 德州百家乐官网扑克桌| 大发888官方ylc8| 百家乐官网板路| 皇冠开户网| 八大胜百家乐娱乐城| 百家乐官网最好打法与投注 | 澳门百家乐官网官方网站破解百家乐官网技巧| 太阳百家乐官网游戏| 临清市| 顶级赌场是真的吗|