[KIT 89S52_V2] Giao tiếp UART với máy tính

0
  • Chưa có sản phẩm

[KIT 89S52_V2] Giao tiếp UART với máy tính

Xin chào các bạn!

Hôm nay Linh kiện điện tử Tuhu xin giới thiệu tới các bạn bài học lập trình vi điều khiển AT89S52 giao tiếp UART với máy tính qua RS232

I) Danh sách sản phẩm để học lập trình

1- Kit 8051 V2

2- Mạch nạp ISP

3- Cáp Micro USB

4- Laptop có cài phần mền Hercules

II) Cơ sở truyền thông nối tiếp (UART)

***Nguồn: Giáo trình Vi sử lý - Vi điều khiển - trường Đại học Sao Đỏ - Bộ Công Thương

Các máy tính truyền dữ liệu theo hai cách: Song song và nối tiếp. Trong truyền dữ liệu song song thường cần 8 hoặc nhiều đường dây dẫn để truyền dữ liệu đến một thiết bị chỉ cách xa vài bước. Ví dụ của truyền dữ liệu song song là các máy in và các  ổ cứng, mỗi thiết bị sử dụng một đường cáp với nhiều dây dẫn. Mặc dù trong các trường hợp như vậy thì nhiều dữ liệu được truyền đi trong một khoảng thời gian ngắn bằng cách dùng nhiều dây dẫn song song nhưng khoảng cách thì không thể lớn được. Để truyền dữ liệu đi xa thì phải sử dụng phương pháp truyền nối tiếp. Trong truyền thông nối tiếp dữ liệu được gửi đi từng bít một so với truyền song song thì một hoặc nhiều byte được truyền đi cùng một lúc. Truyền thông nối tiếp của 8051 là chủ đề của chương này. 8051 đã được cài sẵn khả năng truyền thông nối tiếp, do vậy có thể truyền nhánh dữ liệu với chỉ một số ít dây dẫn.

1.    CÁC CƠ SỞ CỦA TRUYỀN THÔNG NỐI TIẾP

Khi một bộ vi xử lý truyền thông với thế giới bên ngoài thì nó cấp dữ liệu dưới dạng từng khúc 8 bít (byte) một. Trong một số trường hợp chẳng hạn như các máy in thì thông tin đơn giản được lấy từ đường bus dữ liệu 8 bít và được gửi đi tới bus dữ  liệu 8 bít của máy in. Điều này có thể làm việc chỉ khi đường cáp bus không quá dài vì các đường cáp dài làm suy giảm thậm chí làm méo tín hiệu. Ngoài ra, đường dữ liệu 8 bít giá thường đắt. Vì những lý do này, việc truyền thông nối tiếp được dùng để truyền dữ liệu giữa hai hệ thống ở cách xa nhau hàng trăm đến hàng triệu dặm. “Hình 1. Truyền thông” là sơ đồ truyền nối tiếp so với sơ đồ truyền song song.

Hình 1. Truyền thông

Thực tế là trong truyền thông nối tiếp là một đường dữ liệu duy nhất được dùng thay cho một đường dữ liệu 8 bít của truyền thông song song làm cho nó không chỉ rẻ hơn rất nhiều mà nó còn mở ra khả năng để hai máy tính ở cách xa nhau có truyền thông qua đường thoại.

Đối với truyền thông nối tiếp thì để làm được các byte dữ liệu phải được  chuyển đổi thành các bít nối tiếp sử dụng thanh ghi giao dịch vào - song song - ra - nối tiếp. Sau đó nó có thể được truyền quan một đường dữ liệu đơn. Điều này cũng có nghĩa là ở đầu thu cũng phải có một thanh ghi vào - nối tiếp - ra - song song để nhận dữ liệu nối tiếp và sau đó gói chúng thành từng byte một. Tất nhiên, nếu dữ liệu được truyền qua đường thoại thì nó phải được chuyển đổi từ các số 0 và 1 sang âm thanh ở dạng sóng hình sin. Việc chuyển đổi này thực thi bởi một thiết bị có tên gọi là Modem là chữ viết tắt của “Modulator/ demodulator” (điều chế/ giải điều chế).

Khi cự ly truyền ngắn thì tín hiệu số có thể được truyền như nói ở trên, một dây dẫn đơn giản và không cần điều chế. Đây là cách các bàn PC và IBM truyền dữ liệu đến bo mạch mẹ. Tuy nhiên, để truyền dữ liệu đi xa dùng các đường truyền chẳng hạn như đường thoại thì việc truyền thông dữ liệu nối tiếp yêu cầu một modem để điều chế (chuyển các số 0 và 1 về tín hiệu âm thanh) và sau đó giải điều chế

Trong RS232 thì mức 1 được biểu diển bởi - 3v đến 25v trong khi đó mức 0 thì ứng với điện áp + 3v đến +25v làm cho điện áp - 3v đến + 3v là không xác định. Vì lý do này để kết nối một RS232 bất kỳ đến một hệ vi điều khiển thì ta phải sử dụng các  bộ biến đổi điện áp như MAX232 để chuyển đổi các mức lô-gíc TTL về mức điện áp RS232 và ngược lại.

8051 có hai chân được dùng chuyên cho truyền và nhận dữ liệu nối tiếp. Hai chân này được gọi là TxD và RxD và là một phần của cổng P3 (đó là P3.0 và P3.1). chân 11 của 8051 là P3.1 được gán cho TxD và chân 10 (P3.0) được dùng cho RxD. Các chân này tương thích với mức lô-gích TTL. Do vậy chúng đòi hỏi một bộ điều khiển đường truyền để chúng tương thích với RS232. Một bộ điều khiển như vậy là chíp MAX232.

Trong phần này chúng ta sẽ nghiên cứu về các thanh ghi truyền thông nối tiếp của 8051 và cách lập trình chúng để truyền và nhận dữ liệu nối tiếp. Vì các máy tính IBM PC và tương thích được sử dụng rất rộng rãi để truyền thông với các hệ dựa trên 8051, do vậy ta chủ yếu tập trung vào truyền thông nối tiếp của 8051 với cổng COM của PC. Để cho phép truyền dữ liệu giữa máy tín PC và hệ thống 8051 mà không có bất kỳ lỗi nào thì chúng ta phải biết chắc rằng tốc độ baud của hệ 8051 phải phù hợp với tốc độ baud của công COM máy tính PC.

Các thanh ghi cần nghiên cứu: SCON, SBUF, TMOD, TH1, TL1, ...

8051 có 1 cổng UART làm việc ở chuẩn TTL, mặc định sau khi khởi động tất

các cổng của 8051 đều làm việc ở chế độ vào ra số, vì thế để có thể sử dụng UART cần phải cấu hình cho cổng này làm việc thông qua các thanh ghi điều khiển và ghép nối tương thích với chuẩn rs232.

Hình 2. Ghép nối RS232 với 8051

2.    CÁC THANH GHI ĐIỀU KHIỂN TRUYỀN THỒNG

2.1 SBUF: Vùng đệm truyền thông dữ liệu ra/vào cổng nối tiếp

Hình 3. Thanh ghi SBUF

-   Việc truyền dữ liệu tương ứng với việc nạp cho SBUF một giá trị

-   Dữ liệu nhận từ RxD cũng được lưu vào SBUF

2.2 SCON: Thanh ghi điều khiển hoặt động cổng nối tiếp

Hình 4. Thanh ghi SCON

Trong đó:

Bảng 1. Các bit của thanh SCON

3.     LỰA CHỌN CHẾ ĐỘ TRUYỀN THÔNG

Bảng 2. Lựa chọn chế độ làm việc

3.1.    Mode 0

Đây là chế độ thanh ghi dịch 8 bit, không có bit start/stop, ở chế độ này RxD là chân truyền nhận, còn TxD phát xung đồng bộ.

Hình 5. Truyền thông nối tiếp – Mode 0

- Quá trình truyền bắt đầu khi ghi giá trị vào SBUF, kết thúc được báo qua TI

Hình 6. Giản đồ thời gian truyền nối tiếp – Mode 0

- Quá trình nhận tự động bởi hệ thống và kết thúc khi RI=1

Hình 7. Giản đồ thời gian nhận nối tiếp – Mode 0

3.2.    Mode 1

Truyền thông bất đồng bộ với frame truyền 10 bit, gồm 1 start, 8 bit dữ liệu và  1 stop. TxD thực hiện truyền, RxD nhận dữ liệu, tốc độ truyền cài đặt qua Timer 1

Hình 8. Truyền nhận nối tiếp – Mode 1

- Quá trình truyền

Hình 9. Giản đồ thời gian truyền nối tiếp – Mode 1

- Quá trình nhận

Hình 10. Giản đồ thời gian nhận nối tiếp – Mode 1

3.3.    Mode 2

Truyền thông bất đồng bộ với frame truyền 11 bit, gồm 1 start, 8    bit dữ liệu, 1 bit lập trình được(nêu truyền là TB8, nhận là RB8) và 1 bit stop. TxD thực hiện truyền, RxD nhận dữ liệu, tốc độ truyền cài đặt qua Timer 1. Bit thứ 9 thường được dùng là bit phát hiện lỗi party

- Quá trình truyền

Hình 6-11. Giản đồ thời gian truyền nối tiếp – Mode 2

- Quá trình nhận

Hình 6-12. Giản đồ thời gian nhận nối tiếp – Mode 2

3.4.    Mode 3

Mode 3 tương tự mode 2 về mọi mặt ngoại trừ tốc độ baud

Tốc độ Baud

Trong một số hoạt mode động của cổng nối tiếp thì tốc độ baud phụ thuộc vào timer 1. Để cài đặt cần qua các bước sau:

-   Cho phép timer 1 hoặt động và cho phép ngắt tràn timer 1

-   Cấu hình cho timer 1 làm việc ở chế độ tự nạp lại

Đặt giá trị cho thanh ghi TH1 tùy thuộc vào tốc độ mong muốn theo bảng dưới :

Bảng 3. Một số giá trị thường dùng trong truyền thông nối tiếp

III) Viết chương trình

Ở đây mình chỉ viết chương trình cho mode phổ biến nhất là mode 1. Các mode khác các bạn có thêt viết dựa vào tài liệu bên trên nhé

Tải code TẠI ĐÂY

 

Bình luận từ Facebook

Phản hồi

Bài viết khác

Tìm kiếm toàn bộ trang
Danh mục Sản Phẩm
Hỗ Trợ Online
  • Bán Hàng Trực Tiếp 098.272.5005
  • Bán Hàng Olline0243.2025005 - 097.212.5005
  • Phone kinh doanh 1 0911.792.811
  • Phone kinh doanh 2 0941.344.233
  • Phone tư vấn kỹ thuật 096.202.5005
  • Mail Nhận Làm Đồ Án - Dự Án điện tửthietkemachtuhu@gmail.com
  • Mail Báo Giá linhkiendientutuhu@gmail.com
Sản Phẩm Khuyến Mại Đặc Biệt
FaceBook Bán Hàng
Lượt truy cập
  • Hôm nay 20751
  • Tổng lượt truy cập 24,290,998