精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

使用MAX232在PIC和PC之間進行通信的過程

科技觀察員 ? 來源:allaboutcircuits ? 作者:Jens Christoffersen ? 2022-04-26 17:28 ? 次閱讀

這是使用計算機和 PIC 控制 LED、風扇、繼電器或螺線管的一種簡單方法。

要求

一臺裝有 Microchip MPLAB X IDE 并安裝了 XC8 v1.34 編譯器的計算機。(我使用的是 MPLAB X v3.05 和 XC8 v1.34)

PIC16F628A 微控制器

一個 MAX232 驅動器/接收器

一種對 MCU 進行編程的方法

Eagle 的零件清單(見下文)

帶串口接口電腦/串口轉USB

如果你想把電路放在面包板上,你需要一塊面包板和一些跳線

介紹

Maxim Integrated Products 于 1987 年創建了 MAX232 IC。它是雙驅動器/接收器,通常將 RX、TX、CTS 和 RTS 信號從/到 PC 的串行端口(最高可達 25 v)從/到 TTL 電平(5 伏)。使用 MAX232 IC,您可以輕松地將 PIC 微控制器連接到 PC。這帶來了很多機會。您可以控制 LED、風扇、繼電器和螺線管等。在此操作方法中,我們將簡單地打開然后關閉 LED。這聽起來很簡單,但有了這些知識,您已經可以構建很多東西了!您將需要一臺帶有串行端口或串行到 USB 轉換器的計算機。我正在使用 USB 轉 RS-232 適配器。在Wikipedia上閱讀有關 RS-232 的更多信息

有關 USART、USART 配置和初始化的更深入閱讀,請閱讀 Microchip 的: AN774 - 與 PICmicro USART 的異步通信。對于 ASM 程序員,此鏈接為您提供了一些源代碼示例。

硬件

我們要做的第一件事是制作框圖。這是我們的小工具的圖表,分成塊。這是一個很好的幫助,可以讓我們保持在正軌上,它讓我們可以忽略我們想要我們的電路做什么。

jc_blockdia_max232.png

我們需要:

一種對我們的 MCU(ICSP 塊)進行編程的方法

電腦與單片機通信,半雙工,電腦塊

MCU 控制 LED/輸出,MCU 塊

查看 LED/ 輸出塊

LED/輸出塊可以是 LED、風扇、繼電器或螺線管,或您想要控制的任何其他東西。您需要解決的一個重要問題是確保您的 MCU 具有 USART 端口。我們使用的是 PIC16F628A,它有一個端口。IC 支路 7 和 8 分別是 PORTBbits.RB1 和 PORTBbits.RB2。如果您使用不同的 MCU,則必須考慮到這一點。

繪制電路時,您將需要組件數據表。PIC16F628A 的數據表可在此處找到。當您遇到困難時,這將是您的指南。另一個 IC 的數據表在這里: MAX232CPE。

此原理圖中未考慮硬件握手。為了滿足硬件握手,您必須在 X2 上放置一些跳線:

jc_max232hh_2.png

制作框圖后,我們將繪制原理圖:

jc_PIC16F628-max232_4.png

單擊圖像以獲得更好的分辨率。

poYBAGJnuyiACicjAAByCFoS5qE617.png

零件清單

這是零件列表文件的屏幕截圖。該文件由 EagleCAD 生成。

jc_PIC16F628-MAX232-parts-2.png

硬件做好之后,就是軟件的時候了。

軟件

編寫軟件時,您必須在附近有硬件數據表。我的設置允許我在一個屏幕上顯示數據表,而在另一個屏幕上顯示編程環境。這樣,我可以在幾秒鐘內訪問數據表。

這是基于 MPLAB X IDE 和 XC8 編譯器的。所有內容均可在www.microchip.com免費下載。在編寫代碼時評論代碼是一個好習慣。當你寫它時,你可能會認為你會記住所有行的作用——你可能會記住第二天或一周的剩余時間。但是一個月后呢?你還會記得嗎?使用評論。他們以后會節省很多工作,其他人會感謝你。以下代碼注釋得很好,因此無需逐行查看。因此,事不宜遲,這里是:

// INCLUDES

#include 
#include 
#include 
#include 

// CONFIG
#pragma config FOSC = HS        // Oscillator Selection bits (HS oscillator: High-speed crystal/resonator on RA6/OSC2/CLKOUT and RA7/OSC1/CLKIN)
#pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF      // Power-up Timer Enable bit (PWRT disabled)
#pragma config MCLRE = ON       // RA5/MCLR/VPP Pin Function Select bit (RA5/MCLR/VPP pin function is MCLR)
#pragma config BOREN = ON       // Brown-out Detect Enable bit (BOD enabled)
#pragma config LVP = ON         // Low-Voltage Programming Enable bit (RB4/PGM pin has PGM function, low-voltage programming enabled)
#pragma config CPD = OFF        // Data EE Memory Code Protection bit (Data memory code protection off)
#pragma config CP = OFF         // Flash Program Memory Code Protection bit (Code protection off)

// DEFINITIONS
#define _XTAL_FREQ 16000000      // Tell the compiler that we are useing 16MHz

// GLOBAL VARIABLES
unsigned int choice;            // Variable to hold user choice
bool getchar_active = false;    // Boolean variable

// FUNCTION PROTOTYPE
void interrupt tc_int(void);
void UART_init(void);
unsigned char getch();
unsigned char getche(void);
void showMenu(void);


// FUNCTIONS
void UART_init(void){
    TXSTAbits.BRGH = 0;     // Setting BRGH to use LOW speed
    TXSTAbits.SYNC = 0;     // Setting async mode
    TXSTAbits.TX9 = 0;      // Setting 8-bit transmission
    RCSTAbits.CREN = 1;     // Enable continious receive
    
    SPBRG = 25;             // Setting the SPBRG register to use 16MHz with BRGH 0
    
    PIE1bits.RCIE = 1;      // USART receive interrupt enable
    RCSTAbits.SPEN = 1;     // Enable serial port
    TXSTAbits.TXEN = 1;     // Enable transmit
    
    return;
}

unsigned char getch()
{
    getchar_active = true;  // Boolean variable set to true
    while(getchar_active)   // While true
        continue;           // Carry - on
    return RCREG;           // return the value in RCREG
}

unsigned char getche(void){ 
    unsigned char c;
    putch(c = getch());
    return c;
}

void putch(unsigned char byte){     // Adding Carrier Return and Line feed
    while(!TXSTAbits.TRMT);
    TXREG = byte;
    if ('\n'==byte){
        while (!TXSTAbits.TRMT);
       TXREG = '\r';
    }
    return;
}

void interrupt tc_int(void){
    if(RCIE && RCIF)                // Check RC Inter bit & Inter Flag
    {
        getchar_active = false;
        RCREG;
    }
    return;
}

void showMenu(){
        printf("\n\n*****************************************************\n");
        printf("**        PIC, MAX232 and PC communication demo    **\n");
        printf("*****************************************************\n");
        printf("\n\t1. LED on.\n");
        printf("\t2. LED off.\n"); 
        printf("Your choice: ");
}
/*
 * THIS IS THE MAIN PROGRAM
 */
int main(int argc, char** argv) {
TRISA = 0b00000000;     // All output
PORTB = 0b00000000;     // All low

TRISB = 0b00000110;     // RB1 & RB2 set as input ref datasheet
PORTB = 0b00000000;     // All low

    UART_init();        // Initialize the UART
    
    INTCONbits.PEIE = 1;    // Enable peripheral interrupt
    INTCONbits.GIE = 1;     // Enable global interrupt
    
    do {
        showMenu();         // Show awesome menu

        choice = getchar(); // Assign char from getchar to choice

        switch(choice){     // Menu options
            case '1': printf("\n\n\t\t** Led is ON **\n");
                    PORTBbits.RB3 = 1;
                    break;
            case '2': printf("\n\n\t\t** Led is OFF **\n");
                    PORTBbits.RB3 = 0;
                    break;
            default:    printf("\n\n\t\t** Invalid choice. RTFM :-D **\n\n");
            break;
        }
    } while (choice !=3);
   
    return (EXIT_SUCCESS);
}

如果源代碼編譯時沒有錯誤或警告,您可以對 MCU 進行編程,并將其連接到您的計算機。打開您喜歡的串行通信程序并使用 9600-8-N-1 進行端口設置。給電路通電,您應該會在屏幕上看到一個小菜單。它適用于 Windows 和 Linux。見最后的短視頻。

結論

我們使用 PIC16F628A 和 MAX232 通過 PC 控制 LED。我們沒有使用很多硬件,也沒有很多代碼。我們也沒有費心制作自己的庫來寫入 UART 端口:我們使用了標準的 printf 函數。我們的代碼使用了 PIC 的 9% 的數據存儲器和 21% 的程序存儲器。您可以從本頁底部下載源代碼。

圖片

jc_pic16f628-max_complete.JPG

競爭電路

jc_pic16f628max_mcu.JPG

微控制器部分。

jc_pic16f628max_max232.JPG

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

    關注

    242

    文章

    23141

    瀏覽量

    658538
  • 計算機
    +關注

    關注

    19

    文章

    7425

    瀏覽量

    87719
  • PIC
    PIC
    +關注

    關注

    8

    文章

    507

    瀏覽量

    87479
收藏 人收藏

    評論

    相關推薦

    兩個單片機通過max232串口通信,max232如何連線啊?

    請教高手:兩個單片機通過max232串口通信,max232如何連線啊?
    發表于 07-20 21:02

    PC機通過USB轉串口然后與MAX232連接進行PC機與單片機的多機

    PC機通過USB轉串口連接MAX232,該MAX232與3個單片機的再用MAX232并聯進行多機通信
    發表于 04-17 12:11

    只用串口座和max232可以進行燒錄嗎

    上網查了好多,看了好多u***轉串口的,什么p***啊,ch340了,max232了,已經暈了,有哪位大神可以告訴我這些有什么區別嗎?,ch340和max232是必須同時用嗎?如果只用串口座,max232可以
    發表于 04-18 19:24

    關于stm32使用max232進行串口通信問題

    各位大神,小弟剛剛接觸stm32不久,最近學習串口通信時遇到了一些問題。還望大神們賜教。關于這個stm32,使用了max232之后還能不能使用串口線來進行串口通信啊?還有就是這個u**
    發表于 08-08 21:24

    max232的串口通信和燒錄

    通信,max232如何連線啊?max232pcb中無法生成?!max232能用0.1uf電容嗎求max
    發表于 08-29 17:18

    PIC16f886 USART使用MAX485代替MAX232

    我有一個工作通信電路之間的兩個PIC(使用16f886的硬件通用技術)寫在匯編和連接兩個MAX232。我想用MAX485代替。我必須改變密碼
    發表于 10-08 10:12

    MAX232使用的時候須注意問題

    MAX232使用的時候須注意的問題 把MAX232232端口和TTL端口搞反發現還能工作... 只是有的電腦能行,有的電腦不行... 大家一定要注意了...
    發表于 11-08 10:16 ?1791次閱讀
    <b class='flag-5'>MAX232</b><b class='flag-5'>在</b>使用的時候須注意問題

    max232 串口電路

    max232 串口電路
    發表于 01-05 09:05 ?2.1w次閱讀
    <b class='flag-5'>max232</b> 串口電路

    max232芯片介紹

    max232芯片介紹 有一種hin232芯片,與max232芯片比較的話,價格相對要便宜很多。 該產品是
    發表于 09-22 21:47 ?2w次閱讀
    <b class='flag-5'>max232</b>芯片介紹

    202單片機和PC的串行MAX232接口原理圖

    202單片機和PC的串行MAX232接口原理圖
    發表于 04-02 12:18 ?2689次閱讀
    202單片機和<b class='flag-5'>PC</b>的串行<b class='flag-5'>MAX232</b>接口原理圖

    MAX232數據手冊

    MAX232
    發表于 03-04 17:51 ?76次下載

    基于MAX232實現PC機與CPU通信

    本文介紹了基于MAX232實現PC機與CPU通信,介紹了MAX232芯片的應用及利用MAX232芯片制作的硬件接口電路,通過串口將它們讀到
    發表于 12-18 09:45 ?7544次閱讀
    基于<b class='flag-5'>MAX232</b>實現<b class='flag-5'>PC</b>機與CPU<b class='flag-5'>通信</b>

    max232芯片介紹_max232接線圖

    本文對max232芯片進行了簡單介紹,同時也分享了max232芯片接線圖。
    發表于 01-05 16:05 ?4w次閱讀
    <b class='flag-5'>max232</b>芯片介紹_<b class='flag-5'>max232</b>接線圖

    MAX232與51單片機如何連接_MAX232與51單片機連接圖

    當用單片機和PC機通過串口進行通信,盡管單片機有串行通信的功能,但單片機提供的信號電平和RS232的標準不一樣,因此要通過
    發表于 01-19 08:51 ?3w次閱讀
    <b class='flag-5'>MAX232</b>與51單片機如何連接_<b class='flag-5'>MAX232</b>與51單片機連接圖

    MAX232的引腳說明及工作原理

    MAX232是一種廣為人知的IC,用于微控制器和個人計算機(PC之間建立串行通信。該 IC 用于
    的頭像 發表于 07-02 14:21 ?9993次閱讀
    <b class='flag-5'>MAX232</b>的引腳說明及工作原理