0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

單片機(jī)與PC機(jī)串口通信實(shí)驗(yàn)

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

這是我們的實(shí)驗(yàn)要求:

效果1 單片機(jī)發(fā)送數(shù)據(jù)給PC機(jī),PC機(jī)利用串口調(diào)試助手將數(shù)據(jù)顯示出來。(40分)

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

01電路圖

這個(gè)圖的最小系統(tǒng)的電路是有問題的。【就是單片機(jī)左邊的電路,參考時(shí)要慎重】

圖片

虛擬串口:

圖片

然后是單片機(jī)的串口設(shè)置

圖片

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

02寫代碼前的一些設(shè)置

1.晶振設(shè)置為11.0592MHz

2.我們的波特率9600

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

【注意】 定時(shí)器T1作為默認(rèn)的波特率發(fā)生器,要記得禁止T1中斷。

接下來說說我們的TH1和TL1怎么計(jì)算的

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

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

例如我們本次實(shí)驗(yàn)使用的是提高一倍的波特率的倍速

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

波特率為9600,晶振為11.0592MHz

圖片

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

打開電腦的計(jì)算器:將十進(jìn)制數(shù)轉(zhuǎn)換為十六進(jìn)制數(shù),在DEC那里輸入250,我們要獲取的就是HEX的值

圖片

最后TH1=TL1 = 0XFA;

這里也要設(shè)置哦

image.png

這個(gè)是串口助手的設(shè)置

圖片

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分塊來講

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

這個(gè)初始化就不多說了,我們的“02”部分,要點(diǎn)已經(jīng)講完了。

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

這一部分也沒啥好講的,就是一個(gè)發(fā)送字符的函數(shù),我們將要發(fā)送的字符,放進(jìn)我們的發(fā)送寄存器SBUF中,TI是系統(tǒng)自動(dòng)產(chǎn)生的中斷信號(hào),最后記得T1手動(dòng)清零哦。

TI = 0;

這個(gè)是串口中斷函數(shù):

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

這個(gè)SBUF是接收寄存器SBUF

data_r = SBUF ;

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

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

最后是我們的主函數(shù)

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');
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 電路圖
    +關(guān)注

    關(guān)注

    10289

    文章

    10707

    瀏覽量

    523880
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6023

    文章

    44376

    瀏覽量

    628383
  • PC機(jī)
    +關(guān)注

    關(guān)注

    2

    文章

    200

    瀏覽量

    28331
  • 串口通信
    +關(guān)注

    關(guān)注

    34

    文章

    1601

    瀏覽量

    55235
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    LabVIEW串口通信實(shí)例:PC機(jī)與51單片機(jī)串口通信實(shí)

    相關(guān)課程推薦:《8周LabVIEW視覺項(xiàng)目編程實(shí)戰(zhàn)特訓(xùn)營》LabVIEW串口通信實(shí)例:PC機(jī)與51單片機(jī)
    發(fā)表于 06-28 20:04

    LabVIEW串口通信實(shí)例:PC機(jī)PC機(jī)串口通信實(shí)

    08、LabVIEW串口通信實(shí)例:PC機(jī)PC機(jī)串口
    發(fā)表于 06-28 20:07

    LabVIEW串口通信實(shí)例:PC機(jī)與51單片機(jī)串口通信實(shí)

    LabVIEW串口通信實(shí)例:PC機(jī)與51單片機(jī)串口通信實(shí)
    發(fā)表于 12-18 10:16

    單片機(jī)串口通信實(shí)驗(yàn)

    單片機(jī)串口通信實(shí)驗(yàn)一、實(shí)驗(yàn)目的二、實(shí)驗(yàn)內(nèi)容三、實(shí)驗(yàn)步驟四、C代碼如下五、
    發(fā)表于 11-10 07:45

    AT89系列單片機(jī)PC機(jī)的串行通信實(shí)驗(yàn)電路圖

    AT89系列單片機(jī)PC機(jī)的串行通信實(shí)驗(yàn)電路圖:
    發(fā)表于 05-21 13:43 ?2833次閱讀
    AT89系列<b class='flag-5'>單片機(jī)</b>與<b class='flag-5'>PC</b><b class='flag-5'>機(jī)</b>的串行<b class='flag-5'>通信實(shí)驗(yàn)</b>電路圖

    單片機(jī)PC機(jī)串口通信應(yīng)用 (RS232 協(xié)議)

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

    PC機(jī)單片機(jī)通信應(yīng)用

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

    PC機(jī)單片機(jī)串口通信程序設(shè)計(jì).zip

    【LabVIEW從入門到精通】5.2.4.4 PC機(jī)單片機(jī)串口通信程序設(shè)計(jì)
    發(fā)表于 01-08 15:48 ?0次下載

    單片機(jī)PC機(jī)串口通信顯示

    單片機(jī)基礎(chǔ)學(xué)習(xí),串口學(xué)習(xí)。使單片機(jī)PC機(jī)串口通信,
    發(fā)表于 06-01 17:48 ?15次下載

    單片機(jī)_PC_串口通信

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

    單片機(jī)之間的串口通信實(shí)

    STC80C51-單片機(jī)之間的串口通信實(shí)
    發(fā)表于 09-01 15:44 ?25次下載

    單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)技術(shù)——雙單片機(jī)串口通信實(shí)驗(yàn)

    單片機(jī)串口通信實(shí)驗(yàn)一、實(shí)驗(yàn)目的二、實(shí)驗(yàn)內(nèi)容三、實(shí)驗(yàn)步驟四、C代碼如下五、
    發(fā)表于 11-05 13:50 ?15次下載
    <b class='flag-5'>單片機(jī)</b>應(yīng)用系統(tǒng)設(shè)計(jì)技術(shù)——雙<b class='flag-5'>單片機(jī)</b><b class='flag-5'>串口</b><b class='flag-5'>通信實(shí)驗(yàn)</b>

    單片機(jī)PC 機(jī)串口通信實(shí)驗(yàn)

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

    串口通信實(shí)驗(yàn)

    串口通信實(shí)驗(yàn)串口通信實(shí)驗(yàn)代碼圖像串口通信實(shí)驗(yàn)晶振12MHz,波特率1200, 程序啟動(dòng)后
    發(fā)表于 01-14 10:12 ?6次下載
    <b class='flag-5'>串口</b><b class='flag-5'>通信實(shí)驗(yàn)</b>

    基于LabVIEW的單片機(jī)串口通信實(shí)現(xiàn)

    電子發(fā)燒友網(wǎng)站提供《基于LabVIEW的單片機(jī)串口通信實(shí)現(xiàn).pdf》資料免費(fèi)下載
    發(fā)表于 10-30 09:13 ?6次下載
    基于LabVIEW的<b class='flag-5'>單片機(jī)</b><b class='flag-5'>串口</b><b class='flag-5'>通信實(shí)</b>現(xiàn)