Đo nhiệt độ từ xa hiển thị qua led 7 đoạn

Đo nhiệt độ từ xa hiển thị qua led 7 đoạn
MÃ TÀI LIỆU 301200300023
NGUỒN huongdandoan.com
MÔ TẢ 100 MB Bao gồm tất cả file,.lưu đồ giải thuật... thuyết minh, bản vẽ nguyên lý, bản vẽ thiết kế, FILE lập trình, và nhiều tài liệu liên quan kèm theo đồ án này
GIÁ 989,000 VNĐ
ĐÁNH GIÁ 4.9 20/04/2024
9 10 5 18590 17500
Đo nhiệt độ từ xa hiển thị qua led 7 đoạn Reviewed by admin@doantotnghiep.vn on . Very good! Very good! Rating: 5

ĐỒ ÁN TỐT NGHIỆP

Đề tài:

MẠCH ĐO NHIỆT ĐỘ ĐIỀU KHIỂN TỪ XA

Lời nói đầu

Trong nhiều lĩnh vực sản xuất công nghiệp hiện nay, nhất là ngành công nghiệp luyện kim, chề biến thực phẫm… vấn đề đo nhất là đo nhiệt độ từ xa có ý nghĩa rất quan trọng đến sự chính xác và an toàn cho người công nhân. Nắm được tầm quan trọng của vấn đề trên nhóm thực hiện tiến hành nghiên cứu và thiết kế một hệ thống đo nhiệt độ từ xa dưới dạng tia hồng ngoại, với mong muốn là giải quyết những yêu cầu trên, và lấy đó làm đề tài tốt nghiệp cho mình.

Với những kiến thức trong quá trình học tập với sự nỗ lực và cố gắng của các thành viên trong nhóm với hy vọng hoàn thành tốt đế tài đã được giao. Những kết quả đạt được ngày hôm nay tuy không có gì lớn lao. Nhưng đó là những thành quả của quá trình học tập học tập. Là thành công đầu tiên của  chúng em trước khi ra trường .

Mặc dù chúng em đã rất cố gắng để hoàn thành đồ án này đúng thời hạn, nhưng trong quá trình thực hiện không tránh khỏi những thiếu sót mong quí thầy cô thông cảm. Chúng em mong được đón nhận những ý kiến đóng góp. Cuối cùng xin chân thành cảm ơn quí thầy cô.

Mục lục:

 

 

Chương dẫn nhập                                                                                                               4                                               

 

Chương 2: Giới thiệu về vi điều khiển                                                                              5

            I.  Tóm tắt phần cứng                                                                                               5

                        1-Giới thiệu                                                                                                   5

                        2-Các chân( PINOUT)                                                                                  7

                        3-Tổ chức bộ nhớ                                                                                          9

                        4-Các thanh ghi chức năng đặc biệt( SFR )                                                14

                        5-Bộ nhớ ngoài                                                                                           19

                        6-Các cải tiến của 8032/8052                                                                      24

                        7-Hoạt động reset                                                                                       24

            II.  Tóm tắt tập lệnh                                                                                                26

 

Chương 3: Đo nhiệt độ                                                                                                     42

            I.  Hệ thống đo lường                                                                                             42

                        1-Giới thiệu                                                                                                 42

                        2-Hệ thống đo lường                                                                                  42

            II.  Các phương pháp đo nhiệt độ                                                                           43

 

Chương 4: Chuyển đổi tín hiệu tương tự sang số                                                          45

            I.  Tín hiệu tương tự và tín hiệu số                                                                         45

            II.  Mạch chuyển đổi tương tự sang số                                                                   45

                        1-Mạch ADC kiểu so sánh song song                                                         45

                        2-Mạch ADC kiểu đếm                                                                               46

                        3-Mạch đếm kiểu so sánh liên tục                                                               47

                        4-Mạch ADC xấp xỉ liên tiếp                                                                      48

 

Chương 5: Giới thiệu sơ lược bộ thu phát dùng tia hồng ngoại                                   49

            I.  Cấu tạo nguyên lý hoạt động của led hồng ngoại                                              49

            II  Cấu tạo và nguyên lý hoạt động của quang transistor                                       50

           

Chương 6: Thiết kế – Thi công                                                                                        51

            I.  Nhiệm vụ thiết kế                                                                                               51

            II.  Sơ đồ và chức năng từng khối                                                                          51

            III.  Thiết kế và phân tích nguyên lý hoạt động từng khối                                     52

1. Bộ cảm biến                                                                                            52

2. Bộ chuyển đổi ADC                                                                               56

IV.  Sơ đồ nguyên lý ,nguyên lý hoạt động toàn mạch và  lưu đồ giải thuật                     59

                        1-Sơ đồ nguyên lý                                                                                       59

                        2-nguyên lý hoạt động toàn mạch                                                               62

3-Lưu đồ giải thuật                                                                                     62

V.  Thi công                                                                                                                        63

                        1-Chương trình phần mềm của vi xử lý                                                      63

                        2-Sơ đồ mạch in và bố trí linh kiện                                                             66

Chương kết luận                                                                                                               69

Tài liệu tham khảo                                                                                                 

Chương dẫn nhập

Ngày nay với sự phát triển của công nghiệp điện tử, kỹ thuật số các hệ thống điều khiển dần dần được tự động hóa. Với những kỹ thuật tiên tiến như vi xử lí, vi mạch số … đựơc ứng dụng vào nhiều lĩnh vực điều khiển, thì các hệ thống điều khiển cơ khí thô sơ, với tốc độ xử lí chậm chạp ít chính xác được thay thế bằng các hệ thống điều khiển tự động với các lệnh chương trình đã được thiết lập trước.

Trong quá trình sản xuất và khám phá của nhiều nhà khoa học một yêu cầu hết sức cần thiết và quan trọng… giúp ta biết được nhiệt độ của thiết bị, môi trường.

Để đáp ứng được yêu cầu trên, có nhiều phương pháp để thực hiện, nhưng nhóm thực hiện nhận thấy rằng: ứng dụng vi điều khiển 8051 vào việc đo và khống chế nhiệt độ tự động là phương pháp tối ưu nhất. Đồng được sự đồng ý của khoa Điện tử- Tin học Trường Cao Đẳng Kỹ Thuật Cao thắng. Nhóm chúng em tiến hành thực hiện đề tài “Đo nhiệt độ từ xa hiển thị qua led 7 đoạn

Với thời gian gần mười tuần thực hiện đề tài, cũng như trình hiểu biết có hạn nhưng chúng em đã hết sức nhưng chỉ giải quyết được những vấn đề sau :

  • Thiết kế mạch đo nhiệt độ trong dải từ 00C – 1000C hiển thị số.
  • Thiết kế mạch thu và phát sóng vô tuyến.
  • Viết chương trình (phần mềm) để đáp ứng các yêu cầu trên .

Mục đích trước hết khi thực hiện đề tài này là để hoàn tất chương trình môn học để đủ điều kiện ra trường .

  • Cụ thể khi nghiên cứu thực hiện đề tài là chúng em muốn phát huy những thành quả ứng dụng của vi điều khiển nhằm tạo ra những sản phẩm, những thiết bị tiên tiến hơn, và đạt hiệu quả sản xuất cao hơn.
  • Mặt khác đề tài này cũng có thể làm tài liệu tham khảo cho những học sinh khóa sau. Giúp họ hiểu rõ hơn về những ứng dụng của vi điều khiển .
  • Ngoài ra quá trình nghiên cứu thực hiện đề tài là một cơ hội để chúng em tự kiểm tra lại những kiến thức đã được học ở trường, đồng thời phát huy tính sáng tạo, khả năng giải quyết một vấn đề theo yêu cầu đặt ra. Và đây cũng là dịp để chúng em tự khẳng định mình trước khi ra trường để tham gia vào các hoạt động sản xuất của xã hội.

Chương 2: Giới thiệu chung về vi điều khiển

 

  1. TÓM TẮT PHẦN CỨNG

1.  Giới thiệu

MCS-51 là họ vi điều khiển của Intel. Các nhà sản xuất IC khác như Simens, Advanced Micro Devices, Fujitsu và Philips được cấp phép làm các nhà cung cấp thứ hai cho các chip của họ MCS-51.

Vi mạch tổng quát của họ MCS-51 là chip, linh kiện đầu tiên của họ này được đưa ra thị trường. Chip 8951 có các đặc trưng được tóm tắt như sau:

  • 4KB ROM
  • 128 byte RAM.
  • 4 port xuất nhập (I/O port) 8 bit.
  • 2 bộ định thời 16-bit.
  • Mạch giao tiếp nối tiếp.
  • Không gian nhớ chương trình (mã) ngoài 64K.
  • Không gian nhớ dữ liệu ngoài 64K.
  • Bộ xử lý bit ( thao tác trên các bit riêng rẽ).
  • 210 vị trí nhớ được định địa chỉ, mỗi vị trí một bit.
  • Nhân/chia trong 4ms.

Các thành viên khác của họ MCS-51 có các tổ hợp ROM( EPROM ), RAM trên chip khác nhau hoặc có thêm bộ định thời thứ ba ( xem bảng 1 ).Mỗi một IC của họ MCS-51 cũng có phiên bản CMOS công suất thấp.

 

               
   

Bộ nhớ chương trình trên chip

 

Bộ nhớ dữ liệu trên chip

 

Các bộ định thời

 

Chip

 
 

 

                                            

 

8051                   4 K ROM                                128 byte                                  2

8031                   0 K                                          128 byte                                  2

8751                   4 K EPROM                           128 byte                                  2

8052                   8 K ROM                                256 byte                                  3

8032                   0 K                                          256 byte                                  3

8752                   8 K EPROM                           256 byte                                  3

 

Bản 1: So sánh các chip của họ MCS-51

Hình 1: Sơ đồ khối chip 8051

Interrupt control: điều khiển ngắt

Other registers: các thanh ghi khác

128 bytes RAM: RAM 128 byte

Timer 2, 1, 0 : bộ định thời 2, 1, 0

CPU: đơn vị điều khiển trung tâm

Bus control: điều khiển bus

I/O ports: các port xuất/nhập

Serial port: port nối tiếp

Address/data: địa chỉ/dữ liệu

Thuật ngữ “8051” được dùng để rộng rãi các chip của họ MCS-51. Khi việc thảo luận tập trung vào một cải tiến từ chip 8051 cơ bản, chip cải tiến được chỉ ra rõ ràng. Các đặc trưng vừa nêu trên được trình bày trong sơ đồ khối ở hình 1.

Hình 2: Sơ đồ chân của 8051

2.  Các chân (PINOUT):

Hình 2 cho ta sơ đồ chân của chip 8051. Mô tả tóm tắt chức năng của từng chân như sau.

Như ta thấy trong hình 2, 32 trong số 40 chân của 8051 có công dụng xuất/nhập, tuy nhiên 24 trong 32 đường này có 2 mục đích ( công dụng ) [26/32 đối với 8032/8052]. Mỗi một đường có thể hoạt động xuất/nhập hoặc hoạt động như một đường điều khiển hoặc hoạt động như một đường địa chỉ/dữ liệu đa hợp.

Các đặc trưng đã đề cập ở trên được trình bày trong sơ đồ khối ở hình 1.

32 chân nêu trên hình thành 4 port 8-bit. Với các thiết kế yêu cầu một mức tối thiểu bộ nhớ ngoài hoặc các thành phần bên ngoài khác, ta có thể sử dụng các port này làm nhiệm vụ xuất/nhập.8 đường cho mỗi port có thể được xử lý như một đơn vị giao tiếp với các thiết bị song song như máy in, bộ biến đổi D-A, v.v…hoặc mỗi đường có thể hoạt động độc lập giao tiếp với một thiết bị đơn bit như chuyển mạch, LED, BJT, FET, cuộn dây, động cơ, loa, v.v…

Port 0

Port 0 (các chân từ 32 đến 39 trên 8051) có hai công dụng. Trong các thiết kế có tối thiểu thành phần, port 0 được sử dụng làm nhiệm vụ xuất/nhập. Trong các thiết kế lớn hơn có bộ nhớ ngoài, port 0 trở thành bus địa chỉ và bus dữ liệu đa hợp [byte thấp của bus địa chỉ nếu là địa chỉ ].

Port 1

Port 1 chỉ có một công dụng là xuất/nhập ( các chân từ 1 đến 8 trên 8051). Các chân của port 1 được ký hiệu là P1.0, P1.1,….,P1.7 và được dùng để giao tiếp với thiết bị bên ngoài khi có yêu cầu. Không có chức năng nào khác nữa gán cho các chân của port 1, nghĩa là chúng chỉ được sử dụng để giao tiếp vối các thiết bị ngoại vi. [ Ngoại lệ : với 8032/8052, ta có thể sử dụng P1.0 và P1.1 hoặc làm các đường xuất/nhập hoặc làm các ngõ vào cho mạch định thời thứ ba].

Port 2

Port 2 ( các chân từ 21 đến 28 trên 8051 ) có hai công dụng, hoặc làm nhiệm vụ xuất/nhập hoặc là byte địa chỉ cao của bus địa chỉ 16-bit cho các thiết kế có bộ nhớ chương trình ngoài hoặc các thiết kế có nhiều hơn 256 byte bộ nhớ dữ liệu ngoài.

Port 3

Port 3 ( các chân từ 10 đến 17 trên 8051 ) có 2 công dụng. Khi không hoạt động xuất/nhập, các chân của port 3 có nhiều chức năng riêng ( mỗi chân có chức năng riêng liên quan đến các đặc trưng cụ thể của 8051 ).

Bảng 2 dưới đây cho ta chức năng của các chân của port năng

 

P3.0                    RxD    B0H                Chân nhận dữ liệu của port nối tiếp

P3.1                    TxD     B1H                Chân phát dữ liệu của port nối tiếp

P3.2                    INT0   B2H                Ngõ vào ngắt ngoài 0

P3.3                    INT1   B3H                Ngõ vào ngắt ngoài 1

P3.4                    T0        B4H                Ngõ vào của bộ định thời/đếm 0

P3.5                    T1        B5H                Ngõ vào của bộ định thời/đếm 1

P3.6                    WR      B6H                Điều khiển ghi bộ nhớ dữ liệu ngoài

P3.7                    RD      B7H                Điều khiển đọc bộ nhớ dữ liệu ngoài

P1.0                    T2        90H                 Ngõ vào của bộ định thời/đếm 2

P1.1                    T2EX  91H                 Nạp lại/thu nhận của bộ định thời 2

Bảng 2 : Chức năng của các chân của port 3 và port 1

Chân cho phép bộ nhớ chương trình PSEN

8051 cung cấp cho ta 4 tín hiệu điều khiển bus. Tín hiệu cho phép bộ nhớ chương trình PSEN ( program store enable ) là tín hiệu xuất trên chân 29. Đây là tín hiệu điều khiển cho phép ta xuất bộ nhớ chương trình ngoài. Chân này thường nối với chân cho phép xuất OE ( output enable ) của EPROM  (hoặc ROM) để cho phép đọc các byte lệnh.

Tín hiệu PSEN ở logic 0 trong suốt thời gian tìm-nạp lệnh. Các mã nhị phân của chương trình hay opcode ( mã thao tác ) được đọc từ EPROM, qua bus dữ liệu và được chốt vào thanh ghi lệnh IR của 8051 để được giải mã.

Khi thực thi moat chương trình chứa ở ROM nội,  PSEN được duy trì ở logic không tích cực ( logic 1 ).

Chân cho phép chốt địa chỉ ALE

8051 sử dụng chân 30, chân xuất tín hiệu cho phép chốt địa chỉ ALE  (address latch enable) để giải đa hợp ( demultiplexing ) bus dữ liệu và bus địa chỉ. Khi port 0 được sử dụng làm bus địa chỉ/dữ liệu đa hợp, chân ALE xuất tín hiệu để chốt địa chỉ ( byte thấp của địa chỉ 16-bit ) vào một thanh ghi ngoài trong suốt ½ đầu của chu kỳ bộ nhớ ( memory cycle ). Sau khi điều này đã được thực hiện, các chân của port 0 sẽ xuất/nhập dữ liệu hợp lệ trong suốt ½ thou hai của chu kỳ bộ nhớ.

Tín hiệu ALE có tần số bằng 1/6 tần số của mạch dao động bên trong chip vi điều khiển và có thể được dùng làm xung clock cho phần còn lại của hệ thống. Nếu mạch dao động có tàn số 12 MHz, tín hiệu ALE có tần số 2 MHz. Ngoại hệ thống duy nhất là trong thời gian thực thi lệnh MOVX, moat xung ALE sẽ bị bỏ qua ( xem hình 10 ).

Chân ALE còn được dùng để nhận xung ngõ vào lập trình cho EPROM trên chip đối với các phiên bản của 8051 có EPROM này.

Chân truy xuất ngoài EA

Ngõ vào này ( chân 31 ) có thể được nối 5 V ( logic 1 ) hoặc với GND (logic 0).      

Nếu chân này nối lên 5 V, 8051/8052 thực thi chương trình trong ROM nội ( chương trình nhỏ hơn 4K/8K ). Nếu chân này nối với GND ( và chân PSEN cũng ở logic 0 ), chương trình cần thực thi chứa ở bộ nhớ ngoài. Đối với 8031/8032 chân EA phải ở logic 0 vì chúng không có bộ nhớ chương trình trên chip. Nếu chân EA ở logic 0 đối với 8051/8052, ROM nội bên trong chip được vô hiệu hoá và chương trình cần thực thi chứa ở EPROM bên ngoài.

Các phiên bản EPROM của 8051 còn sử dụng chân EA làm chân nhận điện áp cấp điện 21 V ( Vpp ) cho việc lập trình EPROM nội ( nạp EPROM ).

Chân RESET ( RST )

Ngõ vào RST ( chân 9 ) là ngõ vào xoá chính ( master reset ) của 8051 dùng để thiết lập lại trạng tahí ban đầu cho hệ thống hay gọi tắt là reset hệ thống. Khi ngõ vào này được treo ở logic 1 tối thiểu hai chu kỳ máy, các thanh ghi bên trong của 8051 được nạp các giá trị thích hợp cho việc khởi động lại hệ thống.

Các chân XTAL1 và XTAL2

Như được vẽ trên hình 2, mạch dao động bên trong chip 8051 được ghép với thạch anh bên ngoài ở hai chân XTAL1 và XTAL2 ( chân 18 và 19 ). Các tụ ổn định cũng được yêu cầu như trên hình này. Tần số danh định của thạch anh là 12 MHz bên trong, mạch dao động trong chip không cần thạch anh bên ngoài.

  1. Tổ chức bộ nhớ

Hầu hết các bộ vi xử lý ( CPU ) đều có không gian nhớ chung cho dữ liệu và chương trình. Điều này cũng hợp lý vì các chương trình thường được lưu trên đĩa và được nạp vào RAM để thực thi; vậy thì cả hai, dữ liệu và chương trình, đều lưu trú trong RAM.

Các chip vi điều khiển hiếm khi được sử dụng giống như các CPU trong các hệ máy tính, thay vào đó chúng được dùng làm thành.

Phần trung tâm trong các thiết kế hướng điều khiển, trong đó bộ nhớ có dung lượng giới hạn, không có ổ đĩa và hệ điều hành. Chương trình điều khiển phải thường trú trong ROM.

Do lý do trên, 8051 có không gian bộ nhớ riêng cho chương trình và dữ liệu. Như ta đã thấy trong bảng 1 ở mục 1, cả hai bộ nhớ chương trình và dữ liệu đều đặt bên trong chip, tuy nhiên ta có thể mở rộng bộ nhớ chương trình và bộ nhớ dữ liệu bằng cách sử dụng các chip nhớ bên ngoài với dung lượng tối đa là 64 K cho bộ nhớ chương trình ( hay bộ nhớ mã ) và 64 K cho bộ nhớ dữ liệu.

Bộ nhớ nội trong chip bao gồm ROM ( chỉ có ở 8051/8052 ) và RAM. RAM trên chip bao gồm vùng RAM với từng bit được định địa chỉ ( gọi tắt là vùng RAM địa chỉ bit ), các dãy ( bank ) thanh ghi vàcác thanh ghi chức năng đặc biệt SFR ( special function register ). Hai đặc tính đáng chú ý là :

  1. Các thanh ghi và các port xuất/nhập được định địa chỉ theo kiểu ánh xạ bộ nhớ ( memory mapped ) và truy xuất như một vị trí nhớ trong bộ nhớ.
  2. Vùng stack thường trú trong RAM trên chip ( RAM nội ) thay vì ở trong RAM ngoài như đối với các bộ vi xử lý.

Hình 3 tóm tắt các không gian nhớ cho chip 8031 không có ROM nội, không trình bày chi tiết về bộ nhớ dữ liệu trên chip ( các cải tiến của 8032/8052 sẽ được tóm tắt sau ).

Hình 4 cho ta chi tiết của bộ nhớ dữ liệu trên vchip. Ta thấy rằng không gian nhớ nội này được chia thành : các dãy thanh ghi ( 00H-:-1FH ) , vùng RAM định địa chỉ bit ( 20H-:-2FH ), vùng RAM đa mục đích ( 39H-:-7FH ) và các thanh ghi chức năng đặc biệt ( 80H-:-FFH

Hình 3 : tóm tắt các không gian nhớ của chip 8051

On-chip memory : bộ nhớ trên chip

External memory : bộ nhớ ngoài

Code memory : bộ nhớ chương trình ( mã )

Enabled via PSEN : được cho phép bởi PSEN

Data memor : bộ nhớ dữ liệu

Enable via RD and WR : được cho phép bởi RD và WR

Vùng RAM đa mục đích

Mặc dù hình 4 trình bày vùng RAM đa mục đích có 80 byte đặt ở địa chỉ 30H đến 7FH, bên dưới vùng này từ địa chỉ 00H đến 2FH là vùng nhớ có thể được sử dụng tương tự ( mặc dù các vị trí nhớ này có các mục đích khác như sẽ thảo luận dưới đây ).

Bất kỳ vị trí nhớ nào trong vùng RAM đa mục đích đều có thể được truy xuất tự do bằng cách sử dụng các kiểu định địa chỉ trực tiếp hoặc gián tiếp. Thí dụ để đọc nội dung tại địa chỉ 5FH của RAM nội vào thanh chứa A, ta dùng lệnh sau :

MOV   A, 5FH

Lệnh trên di chuyển 1 byte dữ liệu bằng cách dùng kiểu địa chỉ trực tiếp để xác định vị trí nguồn ( nghĩa là địa chỉ 5FH ). Đích của dữ liệu được xác định rõ ràng trong opcode của lệnh là thanh chứa A

 

 

 

30

2F

2E

2D

2C

2B

2A

29

28

27

26

25

24

23

22

21

20

1F

18

17

10

0F

08

07

00

 

RAM đa dụng

7F

7E

7D

7C

7B

7A

79

78

77

76

75

74

73

72

71

70

6F

6E

6D

6C

6B

6A

69

68

67

66

65

64

63

62

61

60

5F

5E

5D

5C

5B

5A

59

58

57

56

55

54

53

52

51

50

4F

4E

4D

4C

4B

4A

49

48

47

46

45

44

43

42

41

40

3F

3E

3D

3C

3B

3A

39

38

37

36

35

34

33

32

31

30

2F

2E

2D

2C

2B

2A

29

28

27

26

25

24

23

22

21

20

1F

1E

1D

1C

1B

1A

19

18

17

16

15

14

13

12

11

10

0F

0E

0D

0C

0B

0A

09

08

07

06

05

04

03

02

01

00

BANK 3

BANK 2

BANK 1

Default register

Bank for RO¸R7

 

FF

F0

 

E0

 

D0

 

B8

 

B0

 

A8

 

A0

 

 

99

98

 

90

 

8D

8C

8B

8A

89

 

 

F7

F6

F5

F4

F3

F2

F1

F0

B

 

 

E7

E6

E5

E4

E3

E2

E1

E0

ACC

 

 

D7

D6

D5

D4

D3

D2

D1

D0

PSW

 

 

-

-

-

BC

BB

BA

B9

B8

IP

 

 

B7

B6

B5

B4

B3

B2

B1

B0

P3

 

 

AF

-

-

AC

AB

AA

A9

A8

IE

 

 

A7

A6

A5

A4

A3

A2

A1

A0

P2

 

 

SBUF

Not bit addressable

9F

9E

9D

9C

 9B

9A

99

98

SCON

 

 

97

96

95

94

93

92

91

90

P1

 

 

TH1

TH0

 

TL1

TL0

TMOD

Not bit addressable

Not bit addressable

Not bit addressable

Not bit addressable

Not bit addressable

 88

87

 

83

82

81

80

8F

8E

8D

8C

8B

8A

89

88

TCON

Not bit addressable

PCON

 

DPH

DPL

SP

 

Not bit addressable

Not bit addressable

Not bit addressable

87

86

85

84

83

82

81

80

PO

                           
 

 

Hình 4 : Bộ nhớ dữ liệu trên chip 8051

Byte address, bit address : địa chỉ byte, địa chỉ bit

General purpose RAM : vùng RAM đa mục đích

Bank : dãy

Default register bank for R0 – R7 : dãy thanh ghi mặc định R0 – R7

Special function register : các thanh ghi chức năng đặc biệt

Not bit addressable : không định địa chỉ bit

Vùng RAM đa mục đích còn có thể được truy xuất bằng cách dùng kiểu địa chỉ gián tiếp qua các thanh ghi R0, R1. thí dụ hai lệnh sau thực hiện cùng công việc như lệnh ở thí dụ trên :

MOV   R0, #5FH

MOV   A, @R0

Lênh đầu tiên sử dụng kiểu định địa chỉ tức thời di chuyển giá trị 5FH vào thanh ghi R0, lệnh tiếp theo sử dụng kiểu định địa chỉ gián tiếp di chuyển dữ liệu trỏ bởi R0 vào thanh chứa A.

Vùng RAM định địa chỉ bit

8051 chứa 210 vị trí bit được định địa chỉ trong đó 128 bit chứa trong các byte ở địa chỉ từ 20H đến 2FH [16 byte x 8 bit =128 bit ] và phần còn lại chứa trong các thanh ghi chức năng đặc biệt.

Ý tưởng truy xuất các bit riêng rẽ thông qua phần mềm là một đặc trưng mạnh của hầu hết các bộ vi điều khiển. Các bit có thể được set, xoá, AND, OR, v.v…bằng một lệnh. Hầu hết các bộ vi xử lý yêu cầu một chuỗi lệnh đọc-sửa-ghiđể nhận được cùng một kết quả. Ngoài ra 8051 còn có các port xuất/nhập có thể định địa chỉ từng bit, điều này làm đơn giản việc giao tiếp bằng phần mềm với các thiết bị xuất/nhập đơn bit.

Như vừa đề cập trên, 8051 có 128 vị trí bit được định địa chỉ và có nhiều mục đích ở các byte có địa chỉ từ 20H đến 2FH. Các địa chỉ này được truy xuất như là các byte hay các bit tuỳ vào lệnh cụ thể. Thí dụ để set bit 67H bằng 1 ta dùng lệnh sau :

SETB   67H

Tham chiếu hình 2.6 ta thấy bit ở địa chỉ 67H là bit có ý nghĩa lớn nhất của byte ở địa chỉ 2CH. Lệnh vừa nêu trên không ảnh hưởng đến các bit khác trong byte này. Hầu hết các bộ vi xử lý muốn thực hiện như trên phải dùng các lệnh có dạng tương tự như sau :

MOV   A, 2CH                    ; đọc cả byte

ORL   A, #10000000           ; set bit có ý nghĩa lớn nhất

MOV   2CH, A                    ; ghi trở lại cả byte

Các dãy thanh ghi

32 vị trí thấp nhất của bộ nhớ nội chứa các dãy thanh ghi. Các lệnh của 8051 hỗ trợ 8 thanh ghi từ R0 đến R7 thuộc dãy 0 ( bank 0 ). Đây là dãy mặc định sau khi reset hệ thống. Các thanh ghi này ở các địa chỉ 05Hvào thanh chứa

MOV   A, R5

Lệnh này là lệnh 1-byte dùng kiểu địa chỉ thanh ghi. Dĩ nhiên thao tác tương tự có thể được thực hiện với moat lệnh 2-byte bằng cách dùng kiểu định địa chỉ trực tiếp

MOV   A, 05H

Các lệnh sử dụng các thanh ghi từ R0 đến R7 là các lệnh ngắn và thực hiện nhanh hơn so với các lệnh tương đương sử dụng kiểu định địa chỉ trực tiếp. Các giá trị dữ liệu thường được sử dụng nên chứa ở một trong các thanh ghi này. Dãy thanh ghi đang được sử dụng được gọi là dãy thanh ghi tích cực. Dãy thanh ghi tích cực có thể được thay đổi bằng cách thay đổi các bit chọn dãy trong từ trạng thái chương trình PSW ( sẽ đề cập sau ). Giả sử rằng dãy thanh ghi 3 ( bank 3 ) tích cực, lệnh sau đây ghi nội dung của thanh chứa A vào vị trí 18H :

MOV   R0, A

Ý tưởng “ các dãy thanh ghi” cho phép “ chuyển đổi ngữ cảnh” nhanh và có hiệu quả ở những nơi mà các phần riêng rẽ của phần mềm sử dụng một tập thanh ghi riêng, độc lập với các phần khác của phần mềm

4.  Các thanh ghi chức năng đặc biệt( SFR )

Các thanh ghi của hầu hết các bộ vi xử lí đđều đđược truy xuất rõ ràng bởi một tập lệnh. Thí dụ lệnh INC của chip 6809 tăng nội dung của thanh chứa A bởi 1. Thao tác đđược xác đđịnh rõ ràng trong opcode của lệnh. Việc truy xuất các thanh ghi cũng được sử dụng trên 8051. Lệnh INC  A thực hiện cùng công việc trên.

Các thanh ghi nội dung của 8051 đđược cấu hình thành một phần của RAM trên chip, do vậy mỗi một thanh ghi cũng có một đđịa chỉ với 8051, vì chip này có rất nhiều thanh ghi. Cũng như các thanh ghi từ R0 đến R7, ta có 21 thanh ghi chức năng đđặc biệt SFR chiếm phần trên của RAM nội dung từ địa chỉ 80H đđến FFH ( xem hình 4 ).

Lưu ý là không phải tất cả 128 đđịa chỉ từ 80H đđến FFH đđều đđược định nghĩa mà chỉ có 21 đđịa chỉ đđược đđịnh nghĩa [ 26 trên 8032/8052 ].

Thanh chứa A có thể đđược truy xuất rõ ràng như được minh hoạ trong các thí dụ ở các phần trên. Hầu hết các thanh ghi chức năng đđặc biệt đđược truy xuất bằng kiểu đđịnh địa chỉ trực tiếp. trong hình 4 ta cần lưu ý một số thanh ghi chức năng đđặc biệt đđược đđịnh đđịa chỉ từng bit và đđịa chỉ từng byte. Thí dụ ta có lệnh sau:

SETB  0E0H

sẽ set bit 0 của thanh chứa A lên 1, các bit khác của thanh chứa khoâng thay đđổi. ta nhận thấy rằng tại đđịa chỉ E0H có thể là: địa chỉ byte cho cả thanh chứa vàđđịa chỉ bit của bit có ý nghĩa thấp nhất trong thanh chứa. Vì lệnh SETB thao tác trên các bit và không thao tác trên các byte, chỉ có bit đđược đđịnh đđịa chỉ ảnh hưởng. Lưu ý là các bit đđược đđịnh đđịa chỉ trong một thanh ghi chức năng đđặc biệt có 5 bit cao của đđịa chỉ giống nhau cho tất cả các bit của thanh ghi này. Lấy thí dụ port 1 có đđịa chỉ byte là 90H ( hay 100100000B ) và các bit trong port này có các đđịa chỉ từ 90H tới 97H hay 10010xxxB.

Từ trạng thái chương trình PSW ( program status word ) sẽ đđược thảo luận chi tiết trong mục sau.Các thanh ghi chức năng đđặc biệt khác cũng đđược giới thiệu vắn tắt, các chi tiết về chúng sẽ đđược đđề cập trong các chương tiếp theo.

 

Từ trạng thái chương trình PSW

 

   Bit                   Kí hiệu                        địa chỉ              Mô tả

   PSW.7             CY                              D7H                Cờ nhớ

   PSW.6             AC                              D6H                Cờ nhớ phụ

   PSW.5             F0                                D5H                Cờ 0

   PSW.4             RS1                             D4H                Chọn dãy thanh ghi (bit 1)

 

   PSW.3             RS0                             D3H                Chọn dãy thanh ghi ( bit )

                                                                                     00 = bank 0: đđịa chỉ từ

                                                                                     00H đến 07H                                                              

                                                                   01 = bank 1: đđịa chỉ từ

                                                                   08H đđến 0FH

                                                                   10 = bank 2: đđịa chỉ từ

                                                                   10H đến 17H

                                                                   11 = bank 3: đđịa chỉ từ

                                                                   18H đđến 1FH

            PSW2              0V                               D2H                Cờ tràn

   PSW.1             -                                   D1H                Dự trữ

   PSW.0             P                                  D0H                Cờ kiểm tra chẵn lẻ

 

                          Bảng 3 : Thanh ghi PSW

PSW có địa chỉ là D0H chứa các bit trạng thái có chức năng được tóm tắt trong bảng 3. Từng bit của PSW được khảo sát dưới đây:

Cờ nhớ

Cờ nhớ CY ( carry flag ) có 2 công dụng. Công dụng truyền thống trong các phép toán số học làđđược set bằng 1 nếu có số nhớ từ phép cộng bit 7 hoặc có số mượn mang đđến bit 7, Thí dụ nếu thanh chứa A có nội dung là FFH, lệnh :

   ADD  A,# 1

sẽ làm cho thanh A có chứa nội dung là00H và cờ nhớ  CY trong PSW đđược set bằng 1. Cờ nhớ CY còn là thanh chứa logic đđược dùng như một thanh ghi 1-bit đđối với các lệnh logic thao tác trên các bit. Lấy thí dụ lệnh sau đây sẽ AND bit 25H với cờ nhớ CY và đđặt kết quả trở về cờ nhớ :

   ANL  C, 25H

Cờ nhớ phụ

Khi cộng các giá trị BCD, cờ nhớ phụ AC ( auxiliaty carry flag ) đđược set bằng 1 nếu có một số nhớ đđược tạo ra từ bit 3 chuyển sang bit 4 hoặc nếu kết quả trong đđề-cát thấp  nằm trong tầm từ 0AH đến 0FH. Nếu các giá trị đđược cộng là giá trị BCD, lệnh cộng phải đđược tiếp theo bởi lệnh DA  A ( hiệu chỉnh thập phân thanh chứa A ) để đđưa các kết quả lớn hơn 9 về giá trị đúng.

 

Cờ 0

Đây là cờ có nhiều mục đích dành cho các ứng dụng của người lập trình.

Các bit chọn dãy thanh ghi

Các bit chọn dãy thanh ghi RS0, RS1 dùngđđể xác đđịnh dãy thanh ghi tích cực. Các bit này đđược xoá khi có thao tác reset hệ thống và đđổi mức logic bởi phần mềm khi cần. Thí dụ ba lệnh sau đây cho phép thanh ghi 3 ( bank 3 ) tích cực, sau đó di chuyển nội dung của R7 (địa chỉ byte 1FH ) vào thanh chứa A :

SETB  RS1

   SETB  RS0

MOV  A, R7

Khi đđoạn chương trình trên đđược dịch, các địa chỉ bit sẽ thay thế cho các kí hiệu RS0, RS1, như vậy thì lệnh SETB  RS1 tương đđương với lệnh SETB  0D4H.

Cờ tràn

Cờ tràn  0V ( overflow flag 0 được set bằng 1 sau phép toán cộng hoặc trừ nếu có xuất hiện một trên số học. Khi cần số có dấu đđược cộng hoặc đđược trừ, phần mềm có thể đđược kiểm tra bit treân 0V đđể xác định xem kết quả có nằm trong tầm hay không.

Với phép cộng các số không dấu, cờ tràn bỏ qua. Kết quả lớn hơn +128 hoặc nhỏ hơn -127 sẽ set cờ 0V bằng 1. Thí dụ phép cộng sau đây gây ra một tràn vàset cờ 0V trong PSW :

              

               Số hex:                        Số thập phân :                                                                         + 7F     15

               0F                                + 127

               8E                                142

8EH biểu diễn số âm -116, như vậy không đúng với kết quả mong muốn là142 nên cờ 0V đđược set bằng 1.

Cờ chẵn lẻ

Bit chẵn lẻ tự đđộng đđược set bằng 1 hay xoá bằng 0 ở mỗi chu kỳ máy đđể thiết lập kiểm tra chẵn lẻ cho các  thanh chứa A. Số các bit 1 trong thanh chứa cộng với bit P luôn luôn là số chẵn. Thí dụ nếu thanh chứa có nội dung 10101101B, bit P sẽ là 1 để có số bit 1là 6. Bit chẵn lẻ được sử dụng nhiều đđể kết hợp với các chương trình xuất/nhập nối tiếp trước khi chuyển dữ liệu hoặc đđể kiểm tra chẵn lẻ sau khi nhận dữ liệu.

Thanh ghi B

Thanh ghi B ở địa chỉ F0H đđược dùng chung với thanh chứa A trong các phép toán nhân, chia. Lệnh MUL  AB nhân 2 số 8-bit không dấu chứa trong A và B vàchứa kết quả 26-bit và đo cặp thanh ghi B-A ( thanh chứa A cất byte thấp và thanh ghi B cất byte cao ).

Lệnh chia DIV  AB chia A bởi B, thương số cất trong thanh chứa A và dư cất vào thanh B. Thanh ghi B còn đđược xử lý như một thanh ghi nháp. Các bit đđược định đđịa chỉ của thanh ghi B có đđịa chỉ từ F0H đđến F7H.

 

Con trỏ stack

Con trỏ stack SP ( stack poiter ) là một thanh ghi 8-bit  ở đđịa chỉ 81H. SP chứa đđịa chỉ của dữ liệu hiện đđang ở đđỉnh của stack. Các lệnh lieân quan đđến stack bao gồm lệnh cất dữ liệu vào stack bao gồm lệnh lấy dữ liệu ra khỏi stack. Việc cất vào stack làm tăng SP trước khi ghi dữ liệu vào và việc lấy dữ liệu ra khỏi sẽ giảm SP. Vùng stack của 8051 đđược giữ trong RAM nội vàđđược giới hạn đđến các đđịa chỉ truy xuất đđược bởi kiểu đđịnh đđịa chỉ gián tiếp. Vùng RAM nội có128 byte trên 8031/8051 hoặc 256 byte trên 8032/8052; nếu ta khởi đđộng cùng 2 stack ở đđịa chỉ 60H bằng lệnh :

MOV  SP, #5FH

vùng stack đđược giới hạn là 32 byte trên 8031/8051 vì đđịa chỉ cao nhất của RAM trên chip là 7FH. Giá trị 5FH đđược dùng ở đây vì SP tăng lên 60H trước khi thao tác cất vào stack đđầu tieân đđược thực thi.

Nếu ta không khởi đđộng SP, nội dung mặc đđịnh của thanh ghi này là 07H nhằm duy trì sự tương thích với 8048, bộ vi điều khiển tiền nhiệm của 8051. Kết quả là thao tác cất vào stack đđầu tiên sẽ lưu dữ liệu vào có đđịa chỉ 80H. Như vậy nếu phần mềm ứng dụng không khởi đđộng SP, dãy thanh ghi 1 (và có lẽ là 2 và 3 ) không còn hợp lệ vì vùng này đđược sử dụng làm stack. Các lệnh PUSH vàPOP sẽ cất dữ liệu vào stack, các lệnh gọi chương trình con ( ACALL, LCALL ) và các lệnh trở về ( RET, RETI ) cũng cất và phục hồi nội dung của bộ đếm chươnh trình PC ( Program couter ).

Con trỏ dữ liệu DPTR

Con trỏ dữ liệu DPTR ( data poiter ) được dùng đđể truy xuất bộ nhớ chương trình ngoài hoặc bộ nhớ dữ liệu ngoài. DPTR là 1 thanh ghi 26-bit có đđịa chỉ là 82H ( DPL, byte thấp ) và đđịa chỉ 83H ( DPH, byte cao ) Ba lệnh sau đây ghi 55H vào RAM ngoài ở đđịa chỉ 1000H :

MOV  A, #55

   MOV  DPTR, #1000H

   MOV  @DPTR, A

Lệnh đầu tiên sử dụng kiểu đđịnh đđịa chỉ tức thời đđể nạp hằng dữ liệu 55H vào thanh chứa A. Lệnh thứ 2 cũng sử dụng kiểu đđịnh đđịa chỉ tức thời, lần này nạp hằng đđịa chỉ 16-bit 1000H cho con trỏ dữ liệu DPTR. Lệnh thứ 3 sử dụng kiểu đđịnh đđịa chỉ gián tiếp di chuyển giá trị 55H chứa trong thanh chứa A đến RAM ngoài tại đđịa chỉ chứa trong DPTR ( 1000H ).

Các thanh ghi port

Các port xuất/nhập của 8051 bao gồm port 0 tại đđịa chỉ 80H, port 1 tại đđịa chỉ 90H, port 2 tại đđịa chỉ A0H và port 3 tại đđịa chỉ B0H. Các  port 0, 2 và 3 không đđược dùng đđể xuất nhập nếu ta sử dụng thêm bộ nhớ ngoài hoặc.nếu có một số đđặc tính đđặc biệt của 8051 đđược sử dụng ( như là ngắt, port nối tiếp,…). P1.2 đđến P1.7, ngược lại, luôn luôn là đường xuất/nhập đa mục đđích hợp lệ.

Tất cả các port đđều đđược đđịnh đđịa chỉ từng bit nhằm cung cấp khả năng giao tiếp mạnh. Thí dụ ta dùng một đđộng cơ nối qua một  cuộn dây và một mạch kích dùng transistor nối tới bit-7 của port 1, đđộng cơ có thể ngưng hay chạy chỉ nhờ vào một lệnh đđơn giản của 8051 :

SETB  P1.7

làm đđộng cơ chạy

CLR  P1.7

làm đđộng cơ ngưng

Các lệnh trên sử dụng toán tử - (dot) đđể đđịnh đđịa chỉ 1 bit trongđđịnh đđịa chỉ từng bit.

Trình dịch hợp ngữ thực hiện biến đđổi dạng kí hiệu  thành đđịa chỉ thực tế, nghĩa là hai lệnh sau tương tự :

CLR  P1.7

CLR  97H

Việc sử dụng các kí hiệu đđược đđịnh nghĩa trước ( tiền đđịnh nghĩa ) của trình dịch hợp ngữ sẽ đđược thảo luận chi tiết trong các tài liệu về lập trình hợp ngữ trên họ MCS-51.

Thí dụ sau đây khảo sát  việc giao tiếp với 1 thiết bị có bit trạng thái gọi là BUSY, bit này đđược set bằng 1 khi thiết bị đđang bận và đđược xoá khi thiết bị đã sẵn sàng. Nếu BUSY đđược nối với bit 5 của port 1, vòng lặp sau đây đđược dùng đđể chờ cho đđến khi thiết bị sẵn sàng :

WAIT:  JB  P1.5, WAIT

Lệnh trên có nghĩalà nếu bit P1.5 đđược set nhảy đđến nhãn WAIT ( cũng có nghĩa là nhảy về và kiểm tra lần nữa ).

Các thanh ghi định thời

8051 có 2 bộ đđếm định thời ( timer/couter ) 16-bit đđể định các  khoảng thời gian hoặc đđể đđếm sự kiện. Bộ đđịnh thời 0 có đđịa chỉ 8AH ( TL0, byte thấp ) và 8CH ( TH0, byte cao).

Hoạt đđộng của bộ đđịnh thời đđược thiết lập bởi thanh ghi chế độ định thời TMOD ( timer mode register ) ở đđịa chỉ 89H và thanh ghi điều khiển đđịnh thời TCON ( timer control register ) ở đđịa chỉ 88H. Chỉ có TCON đđược đđịnh đđịa chỉ từng bit.

Các bộ đđịnh thời sẽ đđược thảo luận chi tiết sau.

Các  thanh ghi của port nối tiếp

Bên trong 8051 có một port nối tiếp đđể truyền thông với các thiết bị nối tiếp như các thiết bị đđầu cuối modem, hoặc đđể giao tiếp với các IC khác có mạch giao tiếp nối tiếp ( như các thanh ghi dịch chẳng hạn ). Một thanh ghi đđược gọi là bộ đđệm dữ liệu nối tiếp SBUF ( serial data buffer ) ở đđịa chỉ 99H lưu dữ liệu truyền đđi và dữ liệu nhận về. Việc ghi lên SBUF sẽ nạp dữ liệu để truyền và việc đđọc SBUF sẽ lấy dữ liệu đã nhận đđược.

Các chế đđộ hoạt đđộng khác nhau đđược lập trình thông qua thanh ghi điều khiển port nối tiếp SCON ( serial port control register ) ở địa chỉ 98H, thanh ghi này đđược định đđịa chỉ từng bit.

Hoạt đđộng chi tiết của port nối tiếp sẽ mô tả sau.

Các  thanh ghi ngắt

8051 có một cấu trúc ngắt với 2 mức ưu tiên và 5 nguyên nhân ngắt. ( 5 source, 2 priority level interrup structure ). Các ngắt bị vô hiệu hoá sau khi reset hệ thống và sau đó được cho phép bằng cách ghi vào thanh ghi cho phép ngắt IE ( interrup enable register ) ở đđịa chỉ A8H. Mức ưu tiên ngắt đđược thiết lập qua thanh ghi ưu tiên ngắt IP ( interrup priority register ) ở đđịa chỉ B8H. Cả 2 thanh ghi này đều được đđịnh đđịa chỉ từng bit.

Các ngắt sẽ được đề cập chi tiết sau.

Thanh ghi điều khiển nguồn

Thanh ghi điều khiển nguồn PCON ( power control register ) có địa chỉ 87H chứa các bit  điều khiển được tóm tắt trong bảng 4

Bit SMOD tăng gấp đôi tốc độ baud của port nối tiếp khi port này hoạt động ở chế đđộ 1, 2 hoặc 3. Các bit 4, 5 và 6 của PCON không được định nghĩa. Các bit 2 và3 là các bit cờ đa mục đích dùng cho các ứng dụng của người sử dụng.

Các bit đđiều khiển nguồn, nguồn giảm PD và nghỉ IDL, hợp lệ trong tất cả các chip thuộc họ MCS-51, nhưng chỉ được thực hiện trong các phiên bản CMOS của MCS-51. PCON không được đđịnh địa chỉ bit.

Chế độ nguồn giảm

Lệnh thiết lập bit PD bằng 1 sẽ là lệnh sau cùng đđược thực thi trước khi đđi vào chế đđộ nguồn giảm. Ở chế đđộ nguồn giảm:

(1)           Mạch dao đđộng trên chip ngừng hoạt đđộng

(2)           Mọi chức năng ngừng hoạt đđộng

(3)           Nội dung RAM treân chip đđược duy trì

(4)           Các chân  port duy trì mức logic của chúng

(5)           ALE và PSEN được giữ mức thấp. Chỉ ra khỏi chế đđộ này bằng cách reset hệ thống.

Trong suốt thời gian ở chế đđộ nguồn giảm. Vcc điện áp 2V. Cần phải giữ cho Vcc không thấp hơn sau khi đạt chế đđộ nguồn giảm và cần phục hồi Vcc = 5V tối thiểu 10 chu kỳ dao động khi chaân RST đđạt mức thấp lần nữa.

            Bit       Kí hiệu            Mô tả

 

   7          SMOD                        Bit tăng gấp đđôi tốc đđộ baud, bit này khi                           set làm cho tốc đđộ baud tăng 2 ở chế đđộ                                    1, 2 và3 của port nối   tiếp                 

   6          -                       Không định nghĩa

            5          -                       Không định nghĩa

            4          -                       Không định nghĩa

            3          GF1                 Bit cờ đa mục đích 1

            2          GF0                 Bit cờ đa mục đích 2

            1          PD                   Nguồn giảm; thiết lập đđể tích cực chế đđộ                                                               nguồn giảm, chỉ ra khỏi chế đđộ reset.

            0          IDL                 Chế đđộ nghỉ ; thiết lập để tích cực chế đđộ                                                               nghỉ, chỉ ra khỏi chế đđộ bằng ngắt 1 hoặc                                                                 -reset hệ thống.

 

Bảng 4 : Thanh ghi PCON

Chế độ nghỉ

Lệnh thiết lập bit IDL bằng 1 lệnh sẽ là lệnh sau cùng đđược thực thi trước khi vào chế đđộ nghỉ. Ở chế đđộ nghỉ, tín hiệu clock nội được khoá không cho đến CPU nhưng không khoá đối với các chức năng ngắt, đđịnh thời port nối tiếp. Từ trạng thái của CPU đđược duy trì và nội dung của tất cả các thanh ghi cũng đđược giữ không đổi.

Các chân port cũng được duy trì các mức logic của chúng. ALE và PSEN đđược giữ ở mức cao.

Chế đđộ nghỉ kết thúc bằng cách cho phép ngắt hoặc bằng cách reset hệ thống. Cả hai cách vừa nêu đều xoá bit IDL.

5.  Bộ nhớ ngoài

Các bộ vi đđiều khiển cần có khả năng mở rộng các tài nguyên trên chip ( bộ nhớ, I/O, v.v…đđể tránh hiện tượng cổ chai trong thiết kế. Cấu trúc của MCS-51 cho ta khả năng mở rộng không gian bộ nhớ chương trình đến 64Kvà bộ nhớ dữ liệu đđến 64K. ROM và RAM ngoaì đđược thêm vào khi cần.

            Các IC giao tiếp ngoại vi cũng có thể đđược thêm vào để mở rộng khả năng xuất/nhập. Chẳng ta trở thành phần không gian bộ nhớ ngoài đđược sử dụng cách đđịnh đđịa chỉ kiểu I/O ánh xạ bộ nhớ. Khi bộ nhớ ngoài đđược sử dụng, port 0 không làm nhiệm vụ port xuất/nhập, port này trở thành bus địa chỉ ( A0 – A7 ) và bus dữ liệu ( D0 – D7 ) đđa hợp. Ngoài ra ALE chốt byte thấp của đđịa chỉ ở thời đđiểm bắt đđầu mỗi một chu kỳ bộ nhớ ngoài. Port 2 thường ( nhưng không phải luoân luoân ) đđược dùng làm byte cao của bus địa chỉ.          

Sắp xếp khoâng đđa hợp sử dụng 16 đđường đđịa chỉ và 8 đđường dữ liệu, tổng cộng 24 đđường. Sắp xếp đđa hợp kết hợp 8 đđường của bus dữ liệu vàbyte thấp của bus đđịa chỉ, do vậy ta chỉ cần 16 đđường.

Việc tiết kiệm các chân cho phép ta đóng gói bộ vi đđiều khiển họ MCS-51 trong 1 vỏ 40 chân.

Sắp xếp đđa hợp co hoạt đđộng như sau : Trong 1/2 chu kỳ đđầu của chu kỳ bộ nhớ, byte thấp của đđịa chỉ đđược cung cấp bởi port 0 đđược chốt nhờ tín hiệu ALE. mạch chốt 74HC373 giữ cho byte thấp của đđịa chỉ ổn đđịnh trong cả chu kỳ bộ nhớ. Trong 1/2 chu kỳ bộ nhớ, port 0 đđược sử dụng làm bus dữ liệu và dữ liệu đđược đđọc hay ghi.

Truy xuất bộ nhớ chương trình ngoài

Bộ nhớ chương trình ngoài là bộ nhớ chỉ đđọc, đđược cho phép bởi tín hiệu PSEN. Khi có 1 EPROM ngồi được sử dụng, cả 2 port 0 và port 2 đều không còn là các port xuất/nhập.

Kết nối phần cứng với bộ nhớ ngoài EPROM được trình bày ở hình 5

Hình 5: Truy xuất bộ nhớ chương trình ngoài

Một chu kỳ máy của 8051 có 12 chu kỳ dao đđộng. Nếu bộ dao đđộng trên chip có tần số 12MHz, một chu kỳ máy dài 1ìs. Trong 1 chu kỳ máy đđiển hình. ALE có 2 xung và 2 byte của lệnh đđược đđọc từ bộ nhớ chương trình ( nếu lệnh chỉ có 1 byte, byte thứ 2 đđược loại bỏ ). Giản đđồ thời gian của chu kỳ máy này, đđược gọi làchu kỳ tìm-nạp trình bày ở hình 6

Hình 6: Giản đồ thời gian của chu kỳ tìm-nạp lệnh ở bộ nhớ ngoài

One machine cycle : một chu kỳ máy

Program couter high byte : byte cao của PC

Truy xuất bộ nhớ dữ liệu ngoài

Bộ nhớ dữ liệu ngoài là bộ nhớ đđọc/ghi đđược cho phép bởi các tín hiệu RD và WR ở các chân P3.7 và P3.6. Lệnh dùng đđể truy xuất bộ nhớ dữ liệu ngoài là MOVX, sử dụng, hoặc con trỏ dữ liệu 16-bit DPTR hoặc R0, R1 làm thanh ghi chứa đđịa chỉ.  

RAM có thể giao tiếp với 8051 theo cùng cách như EPROM ngoại trừ đđường RD nối với các đđường xuất (OE) của RAM và WR nối với đđường ghi ( w ) của RAM.

Các kết nối của bus dữ liệu và bus đđịa chỉ giống như EPROM. Bằng cách sử dụng các port 0 và port 2 như ở phần trên, ta có một dung lượng RAM ngoài lên đđến 64k đđược kết nối với 8051.

Giản đđồ thời gian của thao tác đđọc dự trữ ở bộ nhớ dữ liệu ngoài đđược trình bày ở hình 2.10 cho lệnh MOVW A, @ DPTR. Lưu ý là cả hai khung ALE và PSEN đđược bỏ qua ở nơi mà xung RD cho phép đđọc RAM [ nếu lệnh MOVX về RAM ngồi không bao giờ  đđược dùng, các xung ALE luôn có tần số 1/6 tần số của mạch dao đđộng ]

Giản đđồ thời gian của chu kỳ ghi ( lệnh MOVX @DPTR, A ) cũng tương tự ngoại trừ các xung WR ở mức thấp và dữ liệu xuất ở  port 0 ( RD vẫn ở  mức cao ).

Hình 7: Giản đồ thời gian của lệnh MOVX

One machine cycle : một chu kỳ máy

Data pointer high byte : byte cao từ DPTR.

External data in : nhập dữ liệu từ bộ nhớ ngoài

Opcode : mã thao tác

Port 2 giảm bớt đđược chức năng làm nhiệm vụ cung cấp byte cao của đđịa chỉ trong các hệ thống  tối thiểu thành phần , hệ thống không dùng bộ nhớ chương trình ngoài mà chỉ có một dung lượng nhỏ  bộ nhớ dữ liệu ngoài. Các địa chỉ 8 bit cóthể truy cập bộ nhớ dữ liệu ngoài với cấu hình nhỏ hướng trang ( page _ oriented) .Nếu có nhiều hơn một trang 256- byte RAM 1 vài bit từ port 2 ( hoặc một port khác)  có thể chọn một trang.

Các bit 0 và1 của port 2 phải đđược khởi đđộng đđể chọn 1 trang, rồi lệnh MOVX đđược dùng đđể đđọc hoặc ghi trên trang này.

Thí dụ ta giả sử P2.0 = P2.1 = 0 các lệnh sau có thể dùng đđể đđọc các nội dung của RAM  ngoài địa chỉ 0050H vào thanh chứa A..

MOV  RO, #50H.

MOVX  A, @RO

Để đđọc ở đđịa chỉ cuối cùng của RAM này, 03FFH trang 3 đđược chọn nghĩa là ta phải set cho các bit p2.0 và p2.1 bằng 1. Chuỗi lệnh sau đđược dùng:

SETB P2.0

SETB P2.1

MOV RO, #OFFH

MOVX A,@RO

Một đđặc trưng của thiết kế này là các bit từ 2 đđến 7 của port 2 không còn  cần làm bit đđịa chỉ nữa,các bit còn lại có thể sử dụng cho mục đích xuất/nhập.

Giải mã địa chỉ

Nếu có nhiều EPROM hoặc nhiều RAM hoặc cả 2 giao tiếp với 8051 ta cần phải giải mã đđịa chỉ. Việc giải mã này cũng cần cho hầu hết các bộ vi xử lý.

Thí dụ  nếu các  RAM và ROM 8KB được sử dụng , đđịa chỉ phải đđược giải mã đđể chọn các IO nhớ này trên các giới hạn 8 K: 0000H - 1FFFH, 2000H - 3FFFH,…

Một IC giải mã đđiển hình là 74HC138 đđược dùng với ngõ ra đđược nối với các ngõ vào chọn chip CS của các  IC  nhớ như đđược mô tả ở hình 8 cho một bộ nhớ có nhiều EPROM 2764 (8K) và RAM 6264 (8K). Cần lưu ý là do các đđường cho phép riêng rẽ ( PSEN cho bộ nhớ chương trình, RD và WR cho bộ nhớ dữ liệu ), 8051 có thể quản lý không gian nhớ đđến 64K cho bộ nhớ EPROM và 64K cho bộ nhớ RAM.                             

                           Hình 8: Giải mã địa chi

Các không gian nhớ chương trình và dữ liệu gối nhau

Vì bộ nhớ chương trình là bộ nhớ chỉ đđọc, một tình huống khi xử lý đđược phát sinh trong quá trình phát triển phần mềm cho 8051. Làm thế nào phần mềm đđược viết cho một hệ thống đđích gỡ rối nếu phần mềm chỉ có thể đđược thực thi từ bộ nhớ chương trình chỉ đđọc.

Giải pháp tổng quát là cho các không gian bộ nhớ chương trình và dữ liệu ngoài gối lên nhau. Vì PSEN được dùng để đđọc bộ nhớ chương trình và RD đđược dùng để đđọc bộ nhớ dữ liệu, một RAM có thể chiếm không gian nhớ chương trình và bộ nhớ dữ liệu bằng cách nối chân OE tới ngõ ra cổng AND có các ngõ vào là PSEN và RD.

Mạch trình bày ở hình 9 cho phép IC  RAM đđược ghi như là bộ nhớ dữ liệu và đđược đđọc như một bộ  nhớ chương trình hoặc dữ liệu. Vậy thì một chương trình có thể đđược nạp vào RAM ( bằng cách ghi vào RAM như là bộ nhớ dữ liệu ) và đđược thực thi ( bằng cách truy xuất như bộ nhớ chương trình ).

Hình 9: Gối 2 không gian nhớ chương trình và dữ liệu

6.  Các cải tiến của 8032/8052

Các vi mạch 8032 / 8052 ( và các phiên bản CMOS ) có hai cải tiến so với 8031/8051. Một là có thêm 128 byte RAM trên chip từ đđịa chỉ 80H đến FFH. Điều này không xung đđột với các thanh ghi chức năng đđặc biệt ( có cùng đđịa chỉ ) vì 128 byte RAM thêm vào chỉ có thể truy xuất bằng cách dùng kiểu địnhđđịa chỉ gián tiếp. Một lệnh như sau :

MOV  A, 0F0H

Di chuyển nội dung của thanh ghi B tới thanh chứa A trên các IC của họ MCS-51. Chuỗi lệnh :

MOV  R0, #0F0H

MOV  A, @R0

đđọc vào thanh ghi A nội dung tại đđịa chỉ F0H trên các IC 8032/8052 nhưng khoâng đđược đđịnh nghĩa trên 8031/8051.

Upper 128 byte: 128 byte trên

Lower 128 byte: 128 byte dưới

Accessible by indirect addressing only: chỉ đđược truy xuất kiểu đđịnh đđịa chỉ trực tiếp

Acessible by direct and indirect addressing: truy xuất bằng kiểu định địa chỉ trực tiếp và gián  tiếp

Thanh ghi                     địa chỉ             Mô tả                          địa chỉ bit

   T2CON                       C8H                điều khiển                    Có

   RCAP2L                     CAH               Nhận byte thấp           Không

   RCAP2H                    CBH                Nhận byte cao             Không

            TL2                             CCH                Byte thấp của              Không

                                                               bộ đđịnh thời

TH2                             CDH               Byte cao của               Không

                                                               bộ đđịnh thời 2

Bảng 5 :Các thanh ghi của bộ đđịnh thời 2

Cải tiến thứ 2 là có thêm bộ đđịnh thời 16-bit. Bộ đđịnh thời 2 này đđược lập trình nhờ vào 5 thanh ghi chức năng đđặc biệt thêm vào. Chẳng đđược tóm tắt trong bảng 5.

7.  Hoạt động reset

..................................................

            V1  = 2,73V

                        Suy ra

                                         6R3>>

                                                R3>> 18,40W

                        Chọn  R2 = R3= R4 = R5= 10 KW; VR2 =10 KW

c.  Thiết kế mạch khuếch đại

Sơ đồ mạch:  

 

Đây là mạch khuếch đại tín hiệu chuẩn để đưa đến ADC để chuyển đổi tín hiệu tương tự sang số có ý nghĩa rất quan trọng.

Tính toán:

Theo lý thuyết về Op-am ta có:

                        Vì (Vin = V+).

            Theo yêu cầu của mạch ta chỉ cần khuếch đại tín hiệu gấp hai lần nên chọn các giá trị của các điện trở như sau:

R6 = R7 = R8 = 1 KW

2. Thiết kế bộ chuyển đổi ADC:

a. Giới thiệu ADC 0809:

   Bộ ADC 0809 là một thiết bị CMOS tích hợp với một bộ chuyển đổi từ tương tự sang số 8 bit, bộ chọn 8 kênh và một bô logic điều khiển tương thích. Bộ chuyển đổi AD 8 bit này dùng phương pháp chuyển đổi xấp xỉ tiếp. Bộ chọn kênh có thể truy xuất bất kềnh nào trong các ngõ vào tương tự một cánh độc lập.

   Thiết bị này loại trừ khả năng cần thiết điều chỉnh điểm 0 bên ngoài và khả năng điều chỉnh tỉ số làm tròn ADC 0809 dễ dàng giao tiếp với các bộ vi xử lý.

* Sơ đồ chân ADC 0809:

* Ý nghĩa các chân:

       . IN0 đến IN7       : 8 ngõ vào tương tự.

       . A, B, C               : giải mã chọn một trong 8 ngõ vào

       . Z-1 đến Z-8         : ngõ ra song song 8 bit

       . ALE                   : cho phép chốt địa chỉ

       . START              : xung bắt đầu chuyển đổi

       . CLK                   : xung đồng hồ

       . REF (+) : điện thế tham chiếu (+)

       . REF (-)  : điện thế tham chiếu (-)

       . VCC                   : nguồn cung cấp

* Các đặc điểm củaADC 0809:

       . Độ phân giải 8 bit

       . Tổng sai số chưa chỉnh định ± ½ LSB; ± 1 LSB

       . Thời gian chuyển đổi: 100ms ở tần số 640 kHz

       . Nguồn cung cấp + 5V

       . Điện áp ngõ vào 0 – 5V

       . Tần số xung clock  10kHz – 1280 kHz

       . Nhiệt độ hoạt động  - 40oC đến 85oC

       . Dễ dàng giao tiếp với vi xử lý hoặc dùng riêng

       . Không cần điều chỉnh zero hoặc đầy thang

* Nguyên lý hoạt động:

   ADC 0809 có 8 ngõ vào tương tự, 8 ngõ ra 8 bit có thể chọn 1 trong 8 ngõ vào tương tự để chuyển đổi sang số 8 bit.

   Các ngõ vào được chọn bằng cách giải mã. Chọn 1 trong 8 ngõ vào tương tự được thực hiện nhờ 3 chân ADDA , ADDB , ADDC  như bảng trạng thái sau:

A

B

C

Ngõ vào được chọn

0

0

0

0

1

1

1

1

0

0

1

1

0

0

1

1

0

1

0

1

0

1

0

1

IN0

IN1

IN2

IN3

IN4

IN5

IN6

IN7   

   Sau khi kích xung start thì bộ chuyển đổi bắt đầu hoạt động ở cạnh xuống của xung start, ngõ ra EOC sẽ xuống mức thấp sau khoảng 8 xung clock (tính từ cạnh xuống của xung start). Lúc này bit cơ trọng số lớn nhất (MSB) được đặt lên mức 1, tất cả các bit còn lại ở mức 0, đồng thời tạo ra điện thế có giá trị Vref/2, điện thế này được so sánh với điện thế vào in.

+ Nếu Vin > Vref/2 thì bit MSB vẫn ở mức 1.

+ Nếu Vin < Vref/2 thì bit MSB vẫn ở mức 0.

Tương tự như vậy bit kế tiếp MSB được đặt lên 1 và tạo ra điện thế có giá trị Vref/4 và cũng so sánh với điện áp ngõ vào Vin. Quá trình cứ tiếp tục như vậy cho đến khi xác định được bit cuối cùng. Khi đó chân EOC lên mức 1 báo cho biết đã kết thúc chuyển đổi.

Trong suốt quá trình chuyển đổi chân OE được đặt ở mức 1, muốn đọc dữ liệu ra chân OE xuống mức 0.

Trong suốt quá trình chuyển đổi nếu có 1 xung start tác động thì ADC sẽ ngưng chuyển đổi.

Mã ra N cho một ngõ vào tùy ý là một số nguyên.

Trong đó Vin    : điện áp ngõ vào hệ so sánh.

                 Vref(+): điện áp tại chân REF(+).

                 Vref(-): điện áp tại chân REF(-).

Nếu chọn Vref(-) = 0 thì N = 256.

                  Vref(+) = Vcc = 5V thì đầy thang là 256.

  • Giá trị bước nhỏ nhất

1 LSB =  = 0,0196 V/byte

Vậy với 256 bước Vin = 5V.

Ap vào lớn nhất của ADC 0809 là 5V.

  • Biểu đồ thời gian của ADC 0809.


                                                                                                                                                                     Biểu đồ thời gian của ADC 0809

IV.  SƠ ĐỒ NGUYÊN LÝ VÀ GIẢI THUẬT

1.  Sơ đồ nguyên lý

a.  Sơ đồ mạch khuếch đại tín hiệu

  1.  Sơ đồ mạch chuyển đổi ADC đến 8951 và phát tín hiệu dùng tia hồng ngoại

c.  Sơ đồ mạch giải mã         

2.  Nguyên lý hoạt động toàn mạch:

IC đo nhiệt độ (IC LM335) là một mạch tích hợp nhận tín hiệu nhiệt độ chuyển tín hiệu điện dưới dạng điện áp.nhưng tín hiệu điện áp này còn rất nhỏ do đó tín hiệu điện áp này cần phải qua một mạch khếch đại lên đủ lớn trước khi đưa vào bộ chuyển đổi tín hiệu từ tương tự sang tín hiệu số (ADC0809)  .sau đótín hiệu tương tự sẽ được bộ ADC0809 là một thiết bị  CMOS tích hợp sẽ chuyển thành tín hiệu số 8bit .

 sau đó tín hiệu số 8bit này sẽ được đưa vào port1 của vi xử lý AT89C51(vi xử lý phát) ở đây tín hiệu số này sẽ được xử lý bằng chương trình phần mềm đã được nạp trong nó để phân tích và mã hoá thành mã số của led 7 đoạn .

sau đó được đưa qua port nối tiếp của vi xử lý (AT89C51) để chuyển dữ liệu từ song song thành nối tiếp thông qua port nối tiếp  để truyền qua mạch phát tia hồng ngoại phát đi.

sau đó tín hiệu này sẽ được mạch thu tia hồng ngoại thu lại và đưa vào

 vi xử lý  ở đây một lần  tín hiệu lại được chương trình phần mềm của vi xử lý AT89C51(vi xử lýthu) chuyển đổi từ tín hiệu nối tiếp thành tín hệu song song thông qua port nối tiếp.

sau đó tín hiệu hiệu sẽ được hiển thị thành thông số nhiệt độ đã đo được bằng LED 7đoạn kết nối với vi xử lý thu dưới dạng số thập phân (phạm vi số hiển thị từ 00-99).     

3. lưu đồ giải thuật :

            NOP

            clr p3.7

cd_b1:             lcall      DELAY10MS                                                                                    MOV A,P1

            mov @r0,a

            RET

;===================

DELAY10MS:

delay2:            MOV 11H,#100

DEL1: MOV 10H,#100

            DJNZ 10H,$

            DJNZ 11H,DEL1

            RET

HEX_BCD:

            mov a,@r0

            MOV B,#10

            DIV AB

            MOV 54h,B    ;don vi

            MOV B,#10   

           

            DIV AB

            MOV 55h,B    ;chuc

            MOV 56h,A    ;tram

 

            mov dptr,#300h

            mov a,54h

            movc a,@a+dptr

            mov 44h,a       ;donvi

           

            mov a,55h

            movc a,@a+dptr

            mov 45h,a       ;chuc

 

            ret

;============

ORG 300H

MA7D:           

            DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H

            END

b.  chương trình phần mềm của vi xử lý  thu:

 

            org       0100h 

;============khoi tao ngan xep du lieu

                        mov tmod,#20h

                        mov th1,#-3

                        setb tr1

                        mov scon,#52h

 

                        mov 38h,#0c0h

                        mov 39h,#0c0h

 

;==============================================

            LOOP:

                       

                        mov r0,#38h   

            loop1:  jnb ri,ht

                        clr ri

                        mov a,sbuf

                        mov @r0,a

                        inc r0

                        cjne r0,#3ah,loop1

                        sjmp loop

            ht:        LCALL HTHI

                        SJMP LOOP

;===========HTHI 2 LINE======================

            hthi:

                        mov p0,38h

                        clr p2.0

                        lcall delay

                        mov p0,#0FFh

                        setb p2.0

 

                        mov p0,39h

                        clr p2.1

                        lcall delay

                        setb p2.1

                        mov p0,#0FFh

                        ret                   

;=================================

            delay:  mov 10h,#250

                        djnz 10h,$      

                        ret

            end2.  sơ đồ mạch in và bố trí linh kiện.

a.  Mạch khuếch đại tín hiệu.

b.  Mạch chuyển đổi ADC

c.  Mạch phát dùng tia hồng ngoại.

d.  Mạch thu dùng tia hồng ngoại.

e.  Mạch giải mã và hiển thị

Chương kết luận

 

Sau gần mười tuần thực hiện với nhiều cố gắng và nỗ lực của chúng em cùng với sự tận tình hướng dẫn của thầy Thượng Văn Bé, đồ án này đã hòan thành đúng thời gian theo yêu cầu đặt ra là thiết kế và thi công một mạch đo nhiệt độ từ xa dùng led hồng ngoại.

Để thực hiện được yêu cầu trên chúng em đã nghiên cứu, tìm hiểu những vấn đế về vi điều khiển, vi xử lí, các phương pháp đo nhiệt độ, các phương pháp chuyển đổi từ tương tự sang số cũng như các phương pháp thu phát dùng led hồng ngoại và các vấn đề khác có liên quan đến đề tài.

Nội dung chính của đề tài này bao gồm những phần chính sau:

* Phần kiến thức.

-  Khảo sát bộ vi điều khiển 8051/8031

-  Khảo sát các bộ nhớ thông dụng .

-  Các phương pháp chuyển đổi từ tương tự  sang số.

-  Hệ thống đo nhiệt độ và các phương pháp đo nhiệt độ.

* Phần thiết kế thi công .

-  Xây dựng sơ đồ khối toàn mạch .

-  Xây dưng lưu đồ giải thuật .

-  Viết chương trình.

-  Thi công lắp ráp và kiểm tra.

Trên đây là những nội dung mà nhóm đã thực hiện trong đề tài này.

Theo nhận định chủ quan của nhóm thì đề tài này đã được trình bày tương đối đầy đủ các nội dung, những kiến thức liên quan và giải quyết đươc những yêu cầu đặt ra.

Tuy nhiên do thời gian cũng như trình độ chuyên  môn có hạn nên không tránh khỏi thiếu sót . Ở đây chỉ giải quyết được các yêu cầu nhiệt độ từ 0oc đến 99oC.

Để đề tài này thêm phong phú và tăng hiệu quả sử dụng thì cần đáp ứng được những yêu cầu sau:

-  Có thể đo được những giá trị nhiệt độ lớn hơn cũng như nhỏ hơn.

-  Có thể đo nhiệt độ từ xa truyền dưới dạng sóng vô tuyến.

Đó là nhũng yêu cầu mà nhóm chưa có điều kiện thực hiện,

Mong rằng đề tài này sẽ được các bạn khoá sau tiếp tục thực hiện những yêu cầu trên và khắc phục được những hạn chế của đề tài này, để tạo ra một sản phẩm có chất lượng cao phục vụ cho sản xuất và đời sống xã hội.

Sau cùng một lần nữa chúng em xin chân thành cảm ơn thầy Thượng Văn Bé cùng qúi thầy cô khoa Điện tử – Tin học đã tận tình hướng dẫn và dẫn dắt chúng em trong suốt những năm học vừa qua.


Tài liệu tham khảo

       1. Kỹ thuật vi điều khiển-Lê văn Doanh   -Phạm Khắc Chương-NXB khoa học kỹ thuật.

       2. Đo lường và đièu khiển bằng máy tính –Ngô Diên Tập-NXB khoa học kỹ thuật

       3. Giáo trình vi mạch số-Nguyễn Hữu Phương-Trường ĐH KH Tự Nhiên TP HCM

       4.  The 8051 Microcontroller –University of Guelph-I.SCOTT MACKENZIE.

       5. Digital Systems Principles andApplications-RONALD J. TOCCI.

       6. Microcomputer for engineer and Scientists-Glenn A. Gibson,Ya Cheng Liu.

7.  Electronics Course III :Modules In Micro –Electronics-Deutsche Gesellschaft-fur Technische-Zusammenarbeit(GTZ)Gmbh.

8.              The TTL Data book:for Design Engineer,Texas Instrumebts



  • Tiêu chí duyệt nhận xét
    • Tối thiểu 30 từ, viết bằng tiếng Việt chuẩn, có dấu.
    • Nội dung là duy nhất và do chính người gửi nhận xét viết.
    • Hữu ích đối với người đọc: nêu rõ điểm tốt/chưa tốt của đồ án, tài liệu
    • Không mang tính quảng cáo, kêu gọi tải đồ án một cách không cần thiết.

THÔNG TIN LIÊN HỆ

doantotnghiep.vn@gmail.com

Gửi thắc mắc yêu cầu qua mail

094.640.2200

Hotline hỗ trợ thanh toán 24/24
Hỏi đáp, hướng dẫn