2011年7月12日 星期二

DIY - PIC:PIC18F4550 + MAX232 USART 電路程式 (九十九)

DIY - PICPIC18F4550 + MAX232 USART 電路程式 (九十九)

Microchip PIC18F4550 MAX232 USART 電路程式,程式是利用 USART 介面,連接到 MAX232 驅動 ICMAX232 昇電壓到  ±10V 的電源作 RS- 232C 通信之用,並將資料送出或接收,程式會讀取接收資料數據,然後在 LC1602 顯示屏顯示時間。

18F4550 MAX232 USART 電路程式流程圖


void main (void)
{        
//                   1234567890123456
    char LCD_name[]="BWS RS-232  v1.0";

    ADCON0 = 0x00; // Disable the AD converter
    ADCON1 = 0x0F; // Set all ports to digital
    TRISA = 0b00000000;            // Setup PORTB as output for LED's   
   
    // Initialise LCD
    LcdOpen();                // See lcd.c
     OpenXLCD(FOUR_BIT&LINES_5X7);        // Init the LCD Display
    BusyXLCD();
    LcdSetLine1();                // Put cursor on start of line 1
    putsXLCD(LCD_name);            // Display Title
    LcdSetLine2();   

        TRISC = 0b10111111;                 //RC7(RX): input mode   RC6(TX): output mode

        OpenUSART(  USART_TX_INT_OFF &      // Interrupt TX OFF
                    USART_RX_INT_ON  &      // Interrupt RX ON
                    USART_ASYNCH_MODE &     // Asynchronous Mode
                    USART_EIGHT_BIT &       // Length 8 bit
                    USART_CONT_RX &         // Continue RX Mode
                    USART_BRGH_HIGH,        // Baud Rate Mode spbrg=129 
                                            // Baud Rate = Fosc/(128*(spbrg + 1))
                    129 );                  // = 20000000/(16*(129 + 1)) = 9615.4 bps
                                            // error rate = (9615.4-9600)/9600 = 0.0016
         putrsUSART("PIC Ready ....");

         RCONbits.IPEN = 0;                 // Interrupt Priority Control
         INTCONbits.GIE = 1;                // All Interrupt
         INTCONbits.PEIE = 1;               // Peripherial Interrupt Enable
     i=0;
   
    while(1)
    {
    }

        CloseUSART();
        return;
   
} // END main.c
18F4550 MAX232 USART 電路主程式



void rs232()                           // RS232 RX Interrupt
{
        char Buffer[17];               // LCD Buffer
        char* str;
        char LCD_name[]="RS232 ISR";
        char temp;
        char temp2[1];

        PIR1bits.RCIF = 0;             // PIR1 Clear Flag


        buf[i] = getcUSART();          // Read RX Data
    buf[i+1] = '\0';  

    LcdClear();
    LcdSetLine1();                // Put cursor on start of line 1
    putsXLCD(LCD_name);          // Display Title
    LcdSetLine2();   


                if( buf[i] != '\r')              // Not Enter Key
                {
                    str=&buf[i];
                    putsXLCD(str);     // Display Title
                    putrsXLCD(" ");
                    putsXLCD(buf);                             
                    i++;
                }
                else                            // Enter Key
                {      
                    i=0;   
                }

}
18F4550 MAX232 USART 電路中斷程式

18F4550 加入USART 電路模塊
 測試是用 PC Computer RS-232C 介面,連接上串行電纜至 PIC18F4550 USART 介面,測試是用 Hyper Terminal (超級終端機) 程式,使用方法會在明天說明。

18F4550 USART 電路啟動
18F4550 USART 電路接收資料,啟動 Interrupt (RS233)程式
18F4550 USART 電路顯示接收字符及字串
相關網頁:
 DIY - 電子:EIA RS-232 串行通信協議標準 (九十二) :
DIY - 電子:MAX232 串行通信協議標準 IC (九十三) :
 DIY - 電子:C18 PIC18F4550 USART 函數庫程式 (九十四) :
DIY - 電子:PIC18F4550 USART 電路功能介紹 (九十五) :
 DIY - 電子:PIC18F4550 USART 自動波特率電路介紹 (九十六) :
DIY - 電子:PIC18F4550 USART 異步模式 (九十七) :
◆ DIY - 電子:PIC18F4550 + MAX232 USART 電路 (九十八) :
◆ DIY - 電子:PIC18F4550 + MAX232 USART 電路程式 (九十九) :
DIY - 電子:PIC18F4550 測試程式 Hyper Terminal (一百) :

相關網頁:
◎ RS-232 ﹣串列數據通訊的介面標準 (一)
◎ RS-232 ﹣超級終端機串列介面測試 (二)
◎ RS-232 ﹣超級終端機串列介面 Loopback 測試 (三)
◎ RS-232 ﹣用 Excel 做串列介面數據傳輸及接收 (四)
◎ RS-232 ﹣用 Excel API做串列介面數據傳輸及接收 (五)

相關網頁:
◎ DIY - 智能小車:TL-WR703N 無線路由器與 16F877A 控制版串口連接電路 (二十)
◎ DIY - 智能小車:ser2net 詳細介紹 (二十一)
◎ DIY - 智能小車:智能小車 ser2net 設定 (二十二)
◎ DIY - 智能小車:16F877A 控制版串口連接程式 (二十三)
◎ DIY - 智能小車:TL-WR703N 路由器和 RS232 串行板組裝 (二十九)
◎ DIY - 智能小車:PIC 16F877A 處理器板 RS232 接收程式碼 (三十三)

相關網頁:
◎ ESCORT 3146A 5 1/2位數字雙顯示桌上型電錶數據傳輸
◎ Hameg HM507 CombiScope (模數組合示波器) – RS232

2011 07 12 天氣報告 
氣溫:27.8 @ 22:00 
相對濕度:百分之89% 
天氣:微雨

沒有留言:

張貼留言