Truyền dữ liệu từ PC đến màn hình LCD sử dụng UART của PIC16F628A
Thế giới của chúng ta phụ thuộc vào Viễn thông. Trong thế giới ngày nay, chúng ta có thể làm cho gần như mọi thứ giao tiếp với nhau! Vậy còn việc giao tiếp giữa một máy tính và một vi điều khiển (PIC) thì sao?
Mô-đun USART trong một PIC có thể được coi như chiếc hộp thoại của nó. Nếu không có mô-đun USART, bộ điều khiển sẽ giống như đang ở trong trạng thái im lặng. Đây là những gì chúng ta sẽ làm: Khi bạn gõ vào chương trình terminal của mình (trên máy tính của bạn), PIC sẽ nhận được và hiển thị nó trên một màn hình LCD 16×2. Ngoài ra, nó sẽ phản hồi lại ký tự đã gõ cho máy tính.
PIC16F628A có một mô-đun USART, được cấu hình ở chế độ không đồng bộ (full duplex). Các chân PORT B RB1 và RB2 lần lượt đóng vai trò là chân RX và TX. Màn hình LCD hoạt động ở chế độ 4-Bit. Máy tính và PIC được kết nối thông qua một module USB to UART dựa trên SiLabs CP210x (bạn có thể thay thế bằng một module MAX232 TTL to RS232 và giao diện qua cổng DB9).
PIC:
Vi điều khiển được sử dụng ở đây là PIC16F628A. Nó có hai cổng, A và B. Vì màn hình LCD được giao tiếp ở chế độ 4-bit, chỉ có 6 chân của vi điều khiển được sử dụng cho LCD (4 chân dữ liệu + chân chọn bộ đếm + chân kích hoạt). Cổng B là đủ cho việc điều khiển LCD và UART. RB1 và RB2 được cấu hình lần lượt là UART RX và TX, RB0 và RB3 là chọn bộ đếm và kích hoạt cho LCD tương ứng và RB4-RB7 là dữ liệu 4-bit cho LCD. Bộ dao động nội bộ không có đầu ra xung được sử dụng ở tần số 4MHz (Tham khảo trình biên dịch).
LCD:
Một mô-đun LCD 16×2 (16 chân) dựa trên bộ điều khiển Hitachi HD44780 được sử dụng. Các chân 4(RS), 6(E), 11-14(DB4-DB7) được giao tiếp với vi điều khiển, chân 5(Read/Write) được nối đất vì không có hoạt động đọc được thực hiện. Kết nối các chân 15 và 16 là tùy chọn (Đây là các chân đèn LED nền).
Cầu nối USB tới TTL:
Kết nối PIC UART với cổng USB của máy tính. Ngoài ra, chúng ta có thể lấy nguồn điện (5V và 3.3V) từ mô-đun này. Hoặc có thể sử dụng một IC chuyển đổi cấp RS232 sang TTL như MAX232 để kết nối UART với cổng serial của máy tính.
Trình biên dịch:
Trình biên dịch được sử dụng là MikroC pro for PIC từ Mikroelectronika. Tôi đã chọn trình biên dịch này vì nó có rất nhiều thư viện. Chúng ta có thể dễ dàng cấu hình UART và LCD mà không cần phải rối não với việc sử dụng ngôn ngữ Assembly. IDE (Môi trường Phát triển tích hợp) cũng trông rất gọn gàng và có một hướng dẫn rõ ràng để bắt đầu trên trang web của mikroe: www.mikroe.com. Dưới đây là ảnh chụp màn hình cấu hình và sử dụng bộ dao động nội bộ. Bạn có thể truy cập vào đây qua Project–>Edit Project.
// LCD module connections
sbit LCD_RS at RB0_bit;
sbit LCD_EN at RB3_bit;
sbit LCD_D4 at RB4_bit;
sbit LCD_D5 at RB5_bit;
sbit LCD_D6 at RB6_bit;
sbit LCD_D7 at RB7_bit;
sbit LCD_RS_Direction at TRISB0_bit;
sbit LCD_EN_Direction at TRISB3_bit;
sbit LCD_D4_Direction at TRISB4_bit;
sbit LCD_D5_Direction at TRISB5_bit;
sbit LCD_D6_Direction at TRISB6_bit;
sbit LCD_D7_Direction at TRISB7_bit;
// End LCD module connections
char i;
int row=1,col=1;
void main(){
Lcd_Init(); //Initialize LCD
Delay_ms(100);
UART1_Init(1200); //Initialize UART module
Delay_ms(200);
Lcd_Cmd(_LCD_CLEAR); //Clear Display
Lcd_Cmd(_LCD_UNDERLINE_ON); //Underline fashion cursor
Lcd_Out(1,2,"LCD/UART TEST");
Delay_ms(2000);
Lcd_Cmd(_LCD_CLEAR);
//Lcd_Cmd(_LCD_CLEAR);
while(1){
if(UART1_Data_Ready()==1){ //If Data Ready,
i=UART1_Read(); //Read it and store in variable i
Lcd_Chr(row,col,i); //Print it in co−ordinates specified
if(i==27){ //If ESC is pressed, clear display
Lcd_Cmd(_LCD_CLEAR);
col=1,row=1;
}
UART1_Write(i); //Echo back in UART
col=col+1;
}
if(col==17 && row==1){ //On end of row, goto second row
row=2;
col=1;
}
if(row==2 && col==17){ //On end of display, clear display
Lcd_Cmd(_LCD_CLEAR);
col=1;
row=1;
}
}
}
Sơ đồ mạch:
Một số hình ảnh của bộ cài đặt hoạt động và chương trình terminal: MikroC cũng có một chương trình terminal USART và nó có thể được truy cập thông qua Tools–>USART Terminal. Bạn cũng có thể sử dụng hyperterminal của Windows. Baud rate và lựa chọn cổng COM có thể được thực hiện trong terminal USART.
Bố trí
Hotline: 0979 466 469