GIAO TIẾP UART VỚI MÁY TÍNH

*

*

*
*
*
*
*
*

*

*

phiên bản cập nhật mạch đồng hồ đeo tay 60 LED Full màu sắc F8


bài viết: 326/326 Thành viên: 9.997 Đang online: 4 khách hôm nay: 497 khách hôm qua: 3.479 Tổng khách: 12.916.638

Lập trình tiếp xúc UART và RS232

Hôm nay họ sẽ tìm hiểu về truyền thông media nối tiếp, trên sao chúng ta phải học mẫu này do cái này dc ứng dụng rất nhiều như giao tiếp với những module, cảm biến, thiết bị tính, những vdk cùng với nhau.....

Bạn đang xem: Giao tiếp uart với máy tính

Chuẩn giao tiếp UART không giống với RS232 ở mức điện áp ở đoạn UART trình bày mức xúc tích và ngắn gọn 0 (0V) và súc tích 1 (3-5V), còn cùng với RS232 là -12V cho -3V là mức 1 với +3V đến +12V là mức 0 , trường đoản cú -3V cho +3V là vùng cấm - ko xác định. Sự chênh lệch điện áp bởi thế thì làm sao chúng rất có thể kết nối dc cùng nhau nhỉ??????? Để trả lời câu hỏi này ngta đã chế tạo ra IC MAX232 đấy là IC cho phép ta kết nối UART cùng với RS232

Dưới đấy là mạch MAX232 để tiếp xúc với cổng COM của máy tính: để ý chân cẳng tụ cho chính xác

*

Máy tính ko gồm cổng COM (laptop) áp dụng mạch USB to COM dùng ic PL2303:

*

Nếu hai bé IC gồm cùng phổ biến mức điện áp logic 3-5V (Chuẩn UART) hoặc theo chuẩn RS232 thì ko rất cần phải có MAX232 !!!!!!!!!!

Chú ý khi giao tiếp UART cùng RS232 ta bắt buộc nối theo phong cách bắt chéo tức TX của bé này cùng với RX của nhỏ kia cùng TX của con kia cùng với RX của nhỏ này, kiểu hợp tác TX1-RX2 cùng RX1-TX2 nối sai vẫn ko truyền dấn dc dữ liệu.

Như bọn họ đã biết VDK bọn họ 8051 được tích đúng theo sẵn chỉ một cổng UART cho lên họ ko cần ân cần nó dc chế tạo ntn nhưng mà chỉ nên biết chân TX (P3.1) là chân truyền tài liệu và RX (P3.0) là nhận dữ liệu.

Trong media nối tiếp tất cả 2 biện pháp truyền là đồng bộ với ko đồng bộ. Đồng bộ là 2 bên thống tuyệt nhất với nhau về kiểu cách truyền cũng giống như dữ liệu truyền còn Không đồng bộlà chỉ 1 mặt đường truyền cho một quá trình, tài liệu dc truyền theo size dữ liệuđã được chuẩn hóa bởi những thiết bị yêu cầu không phải đường xung nhịp báo trước dữ liệu đến.

Ở phía trên ta sẽ tìm hiểu về truyền dữ liệu ko nhất quán 1 bit start và 1 bit stop vày chỉ thực hiện duy độc nhất vô nhị 2 dây TX và RX để truyền dìm dữ liệu, với bí quyết truyền này ta phải setup tốc độ truyền cho phía 2 bên phải tương tự nhau. Các tốc độ: 2400, 4800, 9600, 14400, 19200... Thông thường là tốc độ 9600 tuỳ ứng dụng của bạn.

Cơ phiên bản là đã hiểu sơ sơ rồi ta ban đầu vào phần lập trình cho VDK 8051. Như trên ta đã lấy ví dụ về vận tốc 9600 để code.

Để lập trình sẵn dc ta phải tò mò 1 số thanh ghi: SBUF, SCON, PCON:

+ SBUF là thanh ghi lưu dữ liệu truyền, thực ra là 2 thanh ghi truyền cùng nhận mà lại nó gồm cùng 1 tên.

+ Thanh ghi SCON là thanh ghi cấu hình thiết lập chế độ truyền:

BitTên bitĐịa chỉChức năng
7SM09FHXác định cơ chế truyền - Bit 0
6SM19EHXác định cơ chế truyền - Bit 1
5SM29DHTruyền thông đa xử lý
4REN9CHCho phép nhận
3TB89BHSử dụng trong cơ chế 2 với 3
2RB89AHSử dụng trong chính sách 2 với 3
1TI99HCờ truyền - Lên 1 lúc truyền xong 1 byte
0RI98HCờ nhận- Lên 1 khi nhận hoàn thành 1 byte

Các bit SM0 với SM1 là bit xác định cơ chế đóng khung truyền:

SM0SM1Chế độKhung dữ liệuTốc độ baud
0008bit Shift RegisterOSC/12
0118bit UARTBởi TIMER 1 (*)
1029bit UARTOSC/64 (*)
1139bit UARTBởi TIMER 1 (*)

(*)Lưu ý:Tốc độ truyền chỉ ra rằng trong bảng này được tăng vội đôi nếu như bitPCON.7(bit SMOD) được tùy chỉnh lên 1, mang định của hệ thống làPCON.7=0.

Xem thêm: Hướng Dẫn Đo Tụ Điện Dung Hiệu Quả Nhất, Hướng Dẫn Cách Đo Điện Dung Hiệu Quả Nhất

Trong bốn cơ chế trên ta chỉ thân yêu đếnchế độ 1. Khi cơ chế 1 được chọn thì dữ liệu được đóng góp khung thành10 bit: gồm1 bit Start, kế tiếp là8 bit dữ liệu,và sau cuối là1 bit Stop. đặc biệt quan trọng hơn là chế độ nối tiếp 1 mang lại phéptốc độ baud thế đổivà được tùy chỉnh bởiTimer1của 8051.

- Bit SM2

BitSM2là bitD5của thanh ghiSCON. Bit này có thể chấp nhận được khả năng đa cách xử trí của 8051. Đối với những ứng dụng của bọn chúng ta, đặtSM2 = 0vì ta không sử dụng 8051 trong môi trường thiên nhiên đa xử lý.

-Bit REN

REN(Receive Enable) là bit có thể chấp nhận được nhận (bitD4của thanh ghiSCON). Khi bitRENcao thì nó được cho phép 8051 nhận tài liệu trên chânRxDcủa nó.Và hiệu quả là trường hợp ta mong 8051 vừa truyền vừa nhận tài liệu thì bit REN yêu cầu được bỏ lên trên 1. Bit này rất có thể được dùng để làm khống chế mọi vấn đề nhận dữ liệu thông liền và nó làbit rất là quan trọngtrong thanh ghiSCON.

-Bit TB8 và RB8

BitTB8vàRB8được cần sử dụng trong chính sách nối tiếp2và3. Ta đặtTB8=0vàRB8=0vì nó không được sử dụng trong số ứng dụng của mình.

Nói thêm, vào chế độ2và3thì gồm 9 bit dữ liệu được truyền rằng hoặc nhận về. BitTB8sẽ đựng bit tài liệu thứ 9 khi truyền, còn bitRB8sẽ cất bit dữ liệu thứ 9 khi nhận, trong chế độ nối tiếp1thì bitRB8này nhấn một phiên bản sao của bitStopkhi một tài liệu 8 bit được nhận, với ta cũng không yêu cầu quan tâmJ.

-Các bit TI cùng RI

các bit ngắt truyềnTIvà ngắt nhậnRIlà những bitD1vàD0của thanh ghiSCON. Những bit này làcực kỳ quan tiền trọngcủa thanh ghiSCON:

·Khi 8051 ngừng truyền một cam kết tự 8 bit thì nó bậtTIđể báo rằng nó chuẩn bị truyền một byte khác. BitTIđược bật lên trước bitStop.

·Khi 8051 cảm nhận dữ liệu nối tiếp qua chânRxDvà nó bóc tách các bit Start và Stop để mang ra 8 bit dữ liệu để đặt vào SBUF, sau khoản thời gian hoàn tất nó bật cờRIđể báo rằng nó đã nhận dứt 1 byte và cần phải lấy đi kẻo tài liệu bị mất. CờRIđược nhảy khi đang tách bóc bit Stop.

Thanh ghi PCON bao gồm bit SMOD:

- Khi SMOD = 0 KhiSMOD = 0thì 8051 chia1/12tần số thạch anh cho32và áp dụng nó mang lại bộTimer1để cấu hình thiết lập tốc độbaud. Đây làgiá trị mang địnhcủaSMODkhi 8051 bật nguồn.-Khi SMOD = 1 KhiSMOD = 1thì 8051 chia1/12tần số thạch anh cho16(thay bởi chia cho32như khi SMOD = 0) và đó là tần số đượcTimer1dùng để tùy chỉnh tốc độbaud.Để khẳng định giá trị cài đặt trongTH1để tạo thành một tốc độbaudnhất định, chúng ta cũng có thể sử dụng các phương trình sau đây (giả sử bitPCON.7=0):TH1 = 256 - ((Crystal / (12*32)) / Baud) = 256 - ((Crystal / 384) / Baud)(1)NếuPCON.7=1thì vận tốc truyền tăng vội vàng đôi, cho nên phương trình trở thành:TH1 = 256 - ((2*Crystal / (12*32)) / Baud) = 256 - ((Crystal / 192) / Baud)(2)Ví dụ 1:Nếu bọn họ có một tinh thể thạch anh tần số11.059Mhzvà chúng ta muốn cấu hình cho cổng tiếp nối đạt tốc độ9600 baud, thì ta sử dụngphương trình 1:TH1 = 256 - ((Crystal / 384) / Baud)TH1 = 256 - ((11059000/384) / 9600)TH1 = 256 - ((28800) / 9600)TH1 = 256-3 = 253

Ví dụ 2: cho những trường hợp khó xác minh giá trị nạp

Vậy: để có được tốc độ9600 baudvới một tinh thể thạch anh tần số11.059MHzchúng ta phải:1. Cấu hìnhchế độ 12. Cấu hìnhTimer 1chế độ 2(8-bit auto nạp lại).3. Thiết lập đặtTH1giá trị253(0xFD).

Code của chúng ta sẽ như sau:

#include #include void delay(unsigned int t)//Ctr delay 50ms dung timer0 unsigned int i; for(i=0;i TH0=0x3c; //-50000us TL0=0xb0; TR0=1; while(!TF0); //cho timer0 tran TF0=TR0=0; }void send(unsigned char *s)//Ham gui chuoi ki tu qua UART unsigned char n,i; n=strlen(s); //Dem xem teo bao nhieu ky tu for(i=0;i SBUF=s;//Gui 1 byte while(!TI); TI=0;//xoa co truyen }void ngat_uart()interrupt 4 //Ngat nhan du lieu tu uart if(RI) P1=SBUF; //Xuat du lieu ra Post 1 RI = 0; //Xoa teo nhan void main(void) TMOD=0x21; //Timer 1 bít do 8bit nap lai tu dong, timer0 mang lại delay bít do 16bit SCON=0x50;//01010000 che do 1, mang lại phep nhan TH1=TL1=0xFD;//Nap 253 tao baud 9600 ko nhan doi baud TR1=1; //khoi dong timer1 ES=1; //Ngat UART EA=1; //Cho phep ngat delay(20); send("He thong san sang trọng !!! "); delay(20); send("Moi ban nhap ky tu bat ky tu ban phim: "); while(1) //ko lam gi ca

*

Tải code với mô phỏng:http://www.mediafire.com/download/pbpj6oj4exa9661/grimaceworks.com_giao-tiep-uart.zip