Nghiên cứu, thiết kế bộ nạp Acquy ứng dụng vi điều khiển

MỤC LỤC Lời nói đầu .0 Chương 1 TỔNG QUAN VỀ HỆ THỐNG TỰ ĐỘNG SẠC ACQUI TRONG ĐIỆN LỰC 1 I. Giới thiệu về nguồn thao tác 1 II. Nguồn thao tác một chiều 1 1. Acqui, công dụng và phân loại .1 2. Acqui axit .2 3. Acqui kiềm .6 III. Các chế độ nạp điện 8 1. Giới thiệu các chế độ nạp .8 2. Các chế độ nạp: .8 2.1 Nạp điện đầu 8 2.2 Nạp điện thường 11 2.3 Nạp điện cân bằng .11 2.4 Chế độ phụ nạp 12 Chương 2 GIỚI THIỆU MỘT SỐ TỦ NẠP ĐẶC TRƯNG .14 I. Giới thiệu chung 14 II. Tủ nạp CDN-HPT 50 220 XE (truyền tải huế) 14 1. Sơ đồ nguyên lý 14 2. Nguyên tắc hoạt động .16 III. Tủ nạp 3PH DC 110 50 của Hyundai-Vinashin 21 1. Sơ đồ nguyên lý .21 2. Đặc tính chung .24 3. Đặc tính kỹ thuật 25 IV. Tủ nạp CHLORIDE 3CBC 220 50 (công ty Việt Á) .27 1. Sơ đồ nguyên lý 27 2. Các thông số bộ nạp 27 3. Chức năng của bộ nạp .28 4. Nguyên tắc chung .28 5. Mô tả tóm tắt về bộ nạp 28 6. Đặc tính kỹ thuật chung 29 7. Các chế độ hoạt động 30 8. Mô tả tóm tắt mạch điều khiển 3CBC-4 .30 Chương 3 THIẾT KẾ BỘ NẠP .33 I. Giới thiệu công nghệ 33 II. Phần thiết kế .34 Phần 1:Thiết kế phần chỉnh lưu .34 1. Tính toán bộ nguồn và mạch chỉnh lưu 34 2. Tính toán các thông số và chọn các linh kiện của mạch điều khiển .40 Phần 2: Thiết kế mạch vi điều khiển 44 1. Giới thiệu về họ vi điều khiển 44 2. Cấu trúc phần cứng của 8051 .47 3. Giới thiệu các chế độ địa chỉ của 8051 .58 4. Hoạt động của bộ định thời timer .59 5. Hoạt động của cổng nối tiếp .61 6. Hệ thống ngắt 65 Phần 3: Giới thiệu các bộ biến đổi DAC, ADC 69 1. Bộ biến đổi tương tự DAC .69 1.1 Giới thiệu chung .69 1.2 Ghép nối DAC0808 (MC1408) với 8051 .71 2. Bộ biến đổi tương tự số ADC 72 2.1 Giới thiệu chung .72 2.2 Ghép nối ADC0804 với 8051 .72 Phần 4: Chương trình 77 1. Sơ đồ mạch ghép nối giữa AT89C51 với các bộ DAC, ADC 77 2. Viết chương trình 78 Tài liêu tham khảo .81 LỜI NÓI ĐẦU Ngày nay, cuộc cách mạng khoa học kỹ thuật trên đà phát triển. Đặc trưng là kỹ thuật máy tính, công nghệ thông tin và tự động hoá. Điều đó đã mang lại lợi ích to lớn về nhiều mặt như đảm bảo và nâng cao chất lượng sản phẩm, tiết kiệm nguyên vật liệu, nâng cao năng suất và hiệu quả sản xuất Cùng trong xu thế đó, năm 1972 hãng Intel đã đưa ra giới thiệu bộ vi điều khiển (microcontroller), một chip tương tự như bộ vi xử lý là một trong những bộ đã và đang có những ứng dụng ngày càng rộng rãi và thâm nhập ngày càng nhiều trong các lĩnh vực kỹ thuật và đời sống xã hội. Hầu hết các thiết bị kỹ thuật từ phức tạp đến đơn giản như thiết bị điều khiển tự động, thiết bị văn phòng cho đến các thiết bị trong gia đình đều có dung các bộ vi điều khiển. Dựa trên những kiến thức đã học, em sử dụng bộ vi điều khiển 8051 để thiết kế bộ sạc acqui điện lực. Đây là dịp để chúng em cũng cố lại kiến thức đã học, từng bước nắm bắt kiến thức thực tế khi ra trường hoà nhập vào trong xã hội. Đề tài của em gồm có 3 chương cơ bản: Chương1 TỔNG QUAN VỀ HỆ THỐNG TỰ ĐỘNG SẠC ACQUI TRONG ĐIỆN LỰC Nội dung của chương này là giới thiệu tổng quan về hệ thống tự động sạc acqui điện lực, nguồn thao tác một chiều, các nguồn thao tác một chiều và các chế độ nạp của acqui. Chương2 GIỚI THIỆU MỘT SỐ TỦ NẠP ĐẶC TRƯNG Nội dung cơ bản của chương này là đưa ra một số tủ nạp điện lực đặc trưng ứng dụng vi diều khiển gồm các tủ nạp: Tủ nạp CDN-HPT 220 50 XE (của truyền tải huế), tủ nạp 3PH DC 110 50 (của công ty TNHH Hyundai_Vinashin), và tủ nạp CHLORIDE 3CBC 220 50 (của công ty Việt Á) Chương 3 THIẾT KẾ BỘ NẠP Nội dung của chương này là phần thiết kế chính. Giới thiệu công nghệ chính. Phần chỉnh lưu, tính toán phần chỉnh lưu. Phần điều khiển, tính toán mạch điều khiển. Phần vi điều khiển, phần ghép nối với thiết bị tương tự DAC ADC. Sơ đồ thuật toán và viết chương trình. Với điều kiện thời gian cũng như kiến thức có hạn nên chắc chắn đồ án không thể tránh khỏi các thiếu sót. Do vậy em rất mong được sự chỉ bảo của các Thầy Cô. Em xin chân thành cảm ơn sự giúp đỡ tận tình của thầy Đoàn Quang Vinh-Giáo viên hướng dẫn, cùng với sự giúp đỡ của các thầy cô giáo trong khoa Điện, đặc biệt là quí thầy cô trong bộ môn Tự động - Đo lường đã tạo mọi điều kiện để em có thể hoàn thành tốt đồ án của mình.

doc94 trang | Chia sẻ: lvcdongnoi | Lượt xem: 2570 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Nghiên cứu, thiết kế bộ nạp Acquy ứng dụng vi điều khiển, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
khuếch đại cuối cùng ngược trở lên. 3.1. Chọn phần tử ghép quang: Là loại optoTranzistor B817 có cấu trúc như hình dưới: Các thông số của B817 (TA = 25°C): Nhiệt độ hoạt động : –30°C to +100°C Khả năng chịu được sự quá nhiệt 260°C /10 s Dòng vào cực Anôt của 817 : IF = 50 mA Tổn hao công suất ở đầu vào: PI= 70 mW Dòng Colector : IC= 50 mA Điện áp giữa 2 cực C và E : VCEO= 35 V Điện áp giữa E và C : VECO= 6 V Công suất tiêu tán ở cực C : 150 mW Tổng công suất tiêu tán : 200 mW Điện trở cách điện : R=1011Ω Tính chọn điện trở nối vào cực 1 của opto: R > = = 240Ω Chọn R=1kΩ (=R5=R4=R22=R20) Tính chọn điện trở nối vào chân 4 của B817 (cực C). R = =240Ω Chọn R=R4=R6=R21=R23=1kΩ Để kích mở Ti, ta nối đầu ra của B817 một Tranzistor nhằm khuếch đại tín hiệu từ B817. Dòng kích mở yêu cầu Ig= 40mA =Ic. Chọn Transistor C1815 có các thông số:. C1815 Chọn Tranzitor công suất nối vào OPC là loại C1815 kiểu NPN, bán dẩn Silic để mở phần tử ghép quang với các thông số sau: Điện áp giữa colectơ và bazơ : UCBO = 60V Điện áp giữa colector và emitter : UCEO= 50V Điện áp giữa hai cực E và B : UBE = 5V Dòng điện lớn nhất ở colectơ : ICmax = 150mA. Công suất tiêu tán ở colectơ : PC = 400mW Hệ số khuếch đại : hEF = =70 ~700 Dòng điều khiển bazơ của trazitor : IB == =2.1 mA Nhiệt độ làm việc : -55 ~ +150 °C Như vậy cần đặt một điện trở ở đầu vào cực C của trazitor có thông số: R = == 80Ω R= R15=R26=R19=100Ω 3.2.Chọn Transistor nối vào chân 2 của OPC: Q1,Q2 Ta chọn loại 2 con C1815 như trên. 3.3. Chọn cổng AND: Toàn bộ mạch điều khiển sẽ dùng 2 cổng AND nên ta chọn IC 4081 họ CMOS. Một IC có 4 cổng AND, các thông số: Nguồn nuôi IC : Vcc = -0.3 ÷ 16V, ta chọn Vcc = 12V. Nhiệt độ làm việc : -400C ÷ +850C Điện áp ứng với mức logic”1”: 2 ÷ 4.5V Dòng điện : < 1mA Công suất tiêu thụ : P = 2.5nW / 1cổng 3.4. Chọn tụ C1, C3 và điện trở R1,R9 nối vào Q1,Q2: R1,R9 dùng để hạn chế dòng vào Q1,Q2.Chúng phải thoả mãn điều kiện: R1 = R9 ≥ = = 2kΩ Chọn R = 2kΩ Chọn R1*C1 = tx = 167µs. Suy ra C = ==0,0835µs Chọn C = 0,1µs(=100pF). 3.5. Chọn khuếch đại thuật toán: Mạch điều khiển phải dùng 4 khuếch đại thuật toán, do đó ta chọn 1 IC loại LM324 của hãng Fairchild Semiconductor. LM324 Sơ đồ chân IC LM324 : Các thông số của LM324: Điện áp nguồn nuôi : Vcc = ± 12V Điện áp vào : -0.3 ~ ± 32V Nhiệt độ làm việc : 0 ~ 70oC Công suất tiêu thụ : P = 1310 mW = 1,13W Tổng trở đầu vào : 106MΩ Dòng cung cấp : Icc = 1mA Dòng điện ra : Ira = 40mA 3.5. Tính chọn điện trở nối vào khâu so sánh: Khuếch đại thuật toán đã chọn là loại LM324: Chọn R10 = R13 > = = 12 kΩ Trong đó nguồn nuôi Vcc = 12V thì điện áp vào khâu so sánh là Uv ≈ 12V. Dòng điện vào được hạn chế để Ilv < 1mA Do đó ta chọn R10=R13=15kΩ, khi đó dòng vào khâu so sánh là: Ilvmax = = 0,8mA. 3.6 Tính chọn bộ tạo xung chùm: U 2 1 7 6 8 4 3 5 Ura R2 C 0.01µF IC555 R1 Muốn tạo xung chùm xung có tần số f== 3kHz hay chu kỳ của của xung chùm (chu kỳ tín hiệu ra): T = = 334µs Ta có: T = 0.693(R1 + 2R2)C Chọn C = 100pF=0,1µF, Suy ra T = 0,693(R1 +2R2)0,1=334 R1+ 2R2 = 4819Ω Chọn R1 là biến trở 200Ω, còn chọn R2 =5k. Phần 2. Thiết kế mạch vi điều khiển 1. Tổng quan về họ vi điều khiển 8051. 1.1 Sơ đồ khối chung của bộ vi điều khiển: Sơ đồ khối chung của hầu hết các bộ vi điều khiển là toàn bộ những phần nằm trong đường chấm trên hình1.1. Nó bao gồm bộ nhớ ROM và RAM, mạch giao tiếp nối tiếp, mạch giao tiếp song song, bộ định thời gian, hệ thống ngắt và các bus được tích hợp trên cùng một chíp. Nguồn đồng hồ ngoài Ngắt ngoài Thiết bị nối tiếp Thiết bị song song Đồng hồ nội Timers Điều khiển ngắt Giao tiếp nối tiếp Giao tiếp song song CPU Bus dữ liệu, địa chỉ, điều khiển RAM ROM Hình 3.6: Sơ đồ khối tổng quát của một bộ điều khiển 1.2 Đơn vị xử lý trung tâm CPU (Central Processing Unit): Thanh ghi lệnh (IR) Khối điều khiển và giải mã lệnh Khối Logic và số học CPU Hình 3.7 Sơ đồ khối của CPU Các thanh ghi Bộ đếm chương trình ( PC) Là thành phần chính của một chíp vi điều khiển, nó quản lý tất cả hoạt động của bộ vi điều khiển, thực hiện các phép toán trên số liệu. Thực chất, nó chỉ là tập hợp các mạch logic nhằm thực hiện liên tục hai hoạt động chính là tìm lệnh và thi hành lệnh. Hình 3.7 mô tả các khối bên trong của CPU. Nó có một tập các thanh ghi dùng cho việc lưu trữ tạm thời các thông tin, khối số học và logic ALU (Arithmetic and Logic Unit) thực hiện các phép toán dựa trên các thông tin được lưu trong thanh ghi, khối điều khiển và giải mã lệnh (Instruction Decode and Contrrol Unit) xác định phép thi hành và chuẩn bị các hoạt động cần thiết để thực hiện lệnh đó có kết hợp với thông tin trong 2 thanh ghi phụ. Thanh ghi lệnh (Instruction Register) chứa mã nhị phân của mỗi lệnh được thi hành. Bộ đếm chương trình (Program Couter) lưu giữ địa chỉ trong bộ nhớ của lệnh cần thực hiện tiếp theo. 1.3 Bộ nhớ bán dẫn RAM và ROM (EPROM): Bộ nhớ dùng để lưu trữ chương trình và dữ liệu, có hai loại bộ nhớ là RAM và ROM. Chúng ta có thể phân biệt sự khác nhau giữa RAM và ROM dựa trên hai tính năng. - Thứ nhất, RAM (Random Access Memory) là bộ nhớ cho phép đọc và ghi dữ liệu được, còn ROM (Read Only Memory) là bộ nhớ chỉ đọc, trong một số chíp vi điều khiển còn sử dụng EPROM (Erasable Programmable ROM) là ROM lập trình có thể xoá được để thay thế cho ROM . - Thứ hai, dữ liệu trong RAM sẽ bị mất đi khi không cung cấp điện, còn dữ liệu trong ROM thì vẫn lưu lại khi không cấp nguồn cho nó. 1.4 Bus địa chỉ, bus dữ liệu và bus điều khiển: Bus là tập hợp các đường dây mang thông tin với cùng mục đích. Trong chíp vi điều khiển có 3 loại bus là bus địa chỉ, bus dữ liệu và bus điều khiển. Trong hoạt động đọc hay ghi, CPU xác định vị trí của dữ liệu bằng cách đặt một địa chỉ vào bus địa chỉ, rồi kích hoạt một tín hiệu trên bus điều khiển để chỉ thị hoạt động đó là đọc hay ghi. Hoạt động đọc sẽ lấy 1 byte dữ liệu từ bộ nhớ tại một vị trí xác định rồi đặt lên bus dữ liệu. CPU đọc dữ liệu này và đặt nó vào một trong các thanh ghi nội trú của CPU. Hoạt động ghi thì ngược lại, CPU lấy dữ liệu đưa ra bus dữ liệu. Nhờ có tín hiệu điều khiển, bộ nhớ nhận biết được đây là một hoạt động ghi và nó sẽ lưu dữ liệu trên vào vùng nhớ đã xác định nhờ địa chỉ mà CPU đã gởi tới nó từ trước. - Bus dữ liệu mang thông tin trao đổi giữa CPU và bộ nhớ, giữa CPU và thiết bị I/O. Độ rộng của bus dữ liệu đóng vai trò khá quan trọng trong vấn đề tăng tốc cho một bộ vi điều khiển, 8051có độ rộng bus dữ liệu là 8 bit. Hiện nay nhiều bộ vi điều khiển sử dụng bus địa chỉ và dữ liệu dồn kênh, nghĩa là sử dụng cùng một đường truyền cho các bus dữ liệu và một số bit địa chỉ. Trong trường hợp này, bộ vi điều khiển có thêm các mạch ngoài dùng để phân tích các tín hiệu địa chỉ và dữ liệu trong các bus tương ứng. - Các bus dữ liệu hoạt động theo 2 hướng, còn bus địa chỉ thì hoạt động theo 1 hướng. Bởi vì thông tin địa chỉ luôn luôn được cung cấp bởi CPU, nhưng dữ liệu thì có thể lưu thông theo cả hai chiều tuỳ theo hoạt động ghi vào hay đọc ra. Thông tin lưu trữ trên bus dữ liệu có thể là những lệnh của chương trình, địa chỉ gắn vào câu lệnh, dữ liệu được sử dụng bởi chương trình. Bus điều khiển là 1 tổ hợp các báo hiệu, mỗi báo hiệu có một vai trò xác định để điều khiển hoạt động của hệ thống hoạt động một cách hiệu quả. Những tín hiệu điều khiển là những tín hiệu định thời được cung cấp bởi CPU nhằm đồng bộ việc vận chuyển thông tin trên bus địa chỉ và bus dữ liệu. 2. Cấu trúc phần cứng của 8051. Sơ đồ khối của IC vi điều khiển 8051: IC 8051 là chíp vi điều khiển trong họ vi điều khiển 5 đã được Intel giới thiệu và đưa ra thị trường. Các thành phần bên trong nó gồm có: 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ớ giữ liệu ngoài 64K Bộ vi xử lý bit (thao tác trên các bit riêng lẽ). 210 vị trí nhớ được định địa chỉ, mỗI vị trí 1 bit. Nhân/chia trong 4s. Các chíp vi điều khiển còn lại trong họ 51 khác với 8051 ở sự tích hợp các thành phần bên trong chíp như RAM, ROM (hoặc EPROM), bộ đếm thời gian. Chip Bộ nhớ chương trình trên chip Bộ nhớ dữ liệu trên chip Các bộ định thời 8051 4K ROM 128 byte 2 8031 0K 128 byte 2 8751 4K EPROM 128 byte 2 8052 8K ROM 256 byte 3 8032 OK 256 byte 3 8752 8K EPROM 256 byte 3 Hình 3.8: So sánh các IC thuộc họ vi điều khiển 51 Hình 3.9: Sơ đồ chân của 8051 2.2 Chức năng của các chân IC 8051: Chíp vi điều khiển 8051 có 32 trong tổng số 40 chân có chức năng như là những cổng I/O, trong đó có 24 chân được sử dụng vào 2 mục đích. Nghĩa là ngoài chức năng I/O, mỗi chân có thể là một đường điều khiển của bus địa chỉ hay bus dữ liệu khi hệ thống sử dụng bộ nhớ ngoài. Hoặc là mỗi đường hoạt động một cách độc lập để giao tiếp với các thiết bị đơn bit như là các công tắc, đèn LED, Transistor, mô tơ và loa. Trong những mô hình thiết kế không dùng bộ nhớ ngoài, P0 được sử dụng như là cổng I/O. còn đối với những hệ thống lớn hơn có yêu cầu một số lượng đáng kể bộ nhớ ngoài thì P0 trở thành các đường truyền dữ liệu và 8 bit thấp của bus địa chỉ. - Cổng P1 được chỉ định là cổng I/O từ chân 1 đến 8. Chúng được sử dụng cho mục đích duy nhất là giao tiếp với các thiết bị ngoài khi cần thiết. - Cổng P2 là cổng I/O hoặc là đường truyền 8 bit cao của bus địa chỉ cho những mô hình thiết kế có bộ nhớ chương trình nằm ở ngoài hoặc có hơn 256 byte bộ nhớ dữ liệu ngoài. - Cổng P3 ngoài mục đích chung là cổng I/O, những chân này còn kiêm luôn nhiều chức năng khác nữa liên quan đến các tính năng đặc biệt của 8051. Interup contrl Other register 128 bytes RAM Timer 1 Timer 0 CPU Oscillator Bus contrlo I/ O ports Serial port ADRESS/DATA EA RST PSEN ALE TXD* RXD ROM 4K- 8051 INT1 INT0 Timer1 Timer 0 Serial T1 T1 Hình 3.10: Sơ đồ khối của 8051 Bit Tên Địa chỉ bit Chức năng thứ hai P3.0 RXD BOH Nhận dữ liệu cho cổng nối tiếp P3.1 TXD B1H Truyền dữ liệu cho cổng nối tiếp P3.2 INT0 B2H Ngắt 0 bên ngoài P3.3 INT1 B3H Ngắt 1 bên ngoài P3.4 T0 B4H Ngõ vào bộ đếm thời gian 0 P3.5 T1 B5H Ngõ vào bộ đếm thời gian 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 Hình 3.11: Chức năng thứ hai của các chân Port 3 - PSEN là một tín hiệu điều khiển cho phép bộ nhớ chương trình bên ngoài hoạt động. Nó thường được kết nối đến chân OE (Output Enable) của EPROM để thực hiện đọc các byte chương trình. Xung tín hiệu PSEN luôn ở mức thấp trong suốt phạm vi quá trình của một lệnh. Còn khi thi hành chương trình từ ROM ở ngay bên trong chip, chân PSEN luôn ở mức cao (không hoạt động). - Tín hiệu ALE có chức năng tách byte địa chỉ thấp và bus dữ liệu khi cổng P0 được sử dụng ở chế độ tuần tự hay còn gọi là chế độ dò kênh, nghĩa là sử dụng một đường truyền cho các bit dữ liệu và byte thấp của bus địa chỉ.Khi chân EA ở mức cao, 8051/8052 được phép thực hiện các chương trình lưu trữ ở vùng nhớ thấp hơn 4Kbyte/8Kbyte ROM bên trong chíp. Còn khi EA ở mức thấp chỉ có những chương trình lưu ở bộ nhớ bên ngoài mới được thực hiện. (dùng cho 8051) - 8051 có một bộ dao động nội bộ bên trong chíp hoạt động bám theo tần số của một con dao động thạch anh nằm bên ngoài. Tần số thông dụng của thạch anh là 12MHz cho hầu hết các IC thuộc họ 51. 2.3. Tổ chức bộ nhớ: Không gian bộ nhớ của bộ vi điều khiển được phân chia ra thành 2 phần dữ liệu và chương trình. Hầu hết các IC MCS-51 đều có bộ nhớ chương trình và dữ liệu nằm bên trong chíp, tuy nhiên cũng có thể mở rộng dung lượng lên đến 64K bộ nhớ chương trình và 64K bộ nhớ dữ liệu bằng cách sử dụng thêm một số bộ nhớ ngoài. Bên trong chíp vi điều khiển 8031 chỉ có 128 byte bộ nhớ dữ liệu (RAM) mà không có bộ nhớ chương trình (ROM). Nó có thể kết nối tối đa 64Kbyte bộ nhớ chương trình và 64Kbyte bộ nhớ dữ liệu bên ngoài. Bộ nhớ dữ liệu Hoạt động nhờ 2 tín hiệu điều khiển RD và WK 0000 FFFF Bộ nhớ Chương trình Hoạt động nhờ tín hiệu PSEN FFFF 0000 Bộ nhớ chương trình 00 FF Bộ nhớ Bên ngoài Bộ nhớ bên trong chip Hình 3.12 Không gian bộ nhớ của 8051 Hình 3.12 trình bày chi tiết bộ nhớ dữ liệu. Không gian bộ nhớ trong được phân chia ra gồm các bank thanh ghi (00H-1FH), RAM địa chỉ theo bit (20H-2FH), RAM dùng chung (30H-7FH), và các thanh ghi chức năng đặc biệt. Byte Address Bit Address Byte Address Bit Address 7F Ram dùng chung FF F0 F7 F6 F5 F4 F3 F2 F1 F0 B E0 E7 E6 E5 E4 E3 E2 E1 E0 ACC D0 D7 D6 D5 D4 D3 D2 D1 D0 PSW 30 B8 - - - BC BB BA B9 B8 IP 2F 7F 7E 7D 7C 7B 7A 79 78 2E 77 76 75 74 73 72 71 70 B0 B7 B6 B5 B4 B3 B2 B1 B0 P3 2D 6F 6E 6D 6C 6B 6A 69 68 2C 67 66 65 64 63 62 61 60 A8 AF - - AC AB AA A9 A8 IE 2B 5F 5E 5D 5C 5B 5A 59 58 2A 57 56 55 54 53 52 51 50 A0 A7 A6 A5 A4 A3 A2 A1 A0 P2 29 4F 4E 4D 4C 4B 4A 49 48 28 47 46 45 44 43 42 41 40 99 Not bit addressable SBUF 27 3F 3E 3D 3C 3B 3A 39 38 98 9F 9E 9D 9C 9B 9A 99 98 SCON 26 37 36 35 34 33 32 31 30 25 2F 2E 2D 2C 2B 2A 29 28 90 97 96 95 94 93 92 91 90 P1 24 27 26 25 24 23 22 21 20 23 1F 1E 1D 1C 1B 1A 19 18 8D Not bit addressable TH1 22 17 16 15 14 13 12 11 10 8C Not bit addressable TH0 21 0F 0E 0D 0C 0B 0A 9 8 8B Not bit addressable TL1 20 7 6 5 4 3 2 1 0 8A Not bit addressable TL0 1F Bank 3 89 Not bit addressable TMOD 18 88 8F 8E 8D 8C 8B 8A 89 88 TCON 17 Bank 2 87 Not bit addressable PCON 10 0F Bank 1 83 Not bit addressable DPH 8 82 Not bit addressable DPL 7 Default Register bank 0 for R0 - R7 81 Not bit addressable SP 0 80 87 86 85 84 83 82 81 80 P0 RAM Thanh ghi chức năng đặc biệt Hình 3.13. Tổ chức bộ nhớ dữ liệu . Các thanh ghi chức năng đặc biệt: 8051 có các thanh ghi R0 đến R7 và 21 thanh ghi chức năng đặc biệt SFR (Special Function Register) nằm ở phần trên của RAM trong từ địa chỉ 80H đến FFH. Thanh ghi trạng thái PSW (Program Status Word): Thanh ghi PSW chứa các bit trạng thái được tóm tắt trong hình 1.9. CY AC F0 RS1 RS0 OV - P Hình 3.14: Các bit thanh ghi trạng thái + Cờ nhớ CY (Carry Flag): Cờ nhớ được sử dụng cho 2 mục đích. Nó được dùng trong các phép toán số học, cờ nhớ được lập khi kết quả phép toán có nhớ hoặc là phải mượn. Ngoài ra cờ nhớ còn được sử dụng như là thanh ghi 1 bit cho các lệnh booorlean hoạt động trên các bit. + Cờ nhớ phụ AC (Auxiliary Carry flag): Khi thực hiện phép tính các số BCD, bit AC được bật nếu kết quả phép toán vừa thực hiện cờ nhớ hay có mượn đối với 4 bit thấp. + Cờ 0 F0 (Flag 0): Là bit cờ dùng chung được dành sẵn cho các ứng dụng của người sử dụng. + Bit chọn lựa bank thanh ghi: các bit RS0 và RS1 dùng để xác định bank thanh ghi tích cực. Chúng được xóa mỗi khi hệ thống khởi động lại và được thay bởi phần mềm khi cần thiết. + Cờ tràn OV (Over low Flag): Cờ tràn được bật nếu kết quả của một phép toán cộng hay trừ các số có dấu bị sai. + Bit chẵn lẻ P (parity bit): Bit Parity được tự động lập hay xóa sau mỗi chu kỳ máy để thiết lập Parity chẵn với thanh ghi A. Nghĩa là tổng số bit 1 của thanh ghi A cộng với bit Parity thì luôn luôn chẵn. -Thanh ghi B: Thanh ghi B được sử dụng đi kèm với thanh ghi A để thực hiện các phép toán nhân và chia. Thanh ghi B cũng được xem như là thanh ghi đệm dùng chung. Nó có địa chỉ bit từ F0H đến F7H. - Con trỏ ngăn xếp SP: Là một thanh ghi 8 bit, nó chứa địa chỉ của phần dữ liệu đang hiện diện tại đỉnh của ngăn xếp. Ngăn xếp hoạt động theo phương thức vào trước ra sau. Hoạt động đẩy vào ngăn xếp làm tăng SP lên trước khi ghi dữ liệu vào. Hoạt động lấy ra khỏi ngăn xếp sẽ đọc dữ liệu ra rồi giảm SP. -Con trỏ dữ liệu DTPR (Data Pointer): DTPR được sử dụng để truy cập vào bộ nhớ chương trình và bộ nhớ dữ liệu bên ngoài, đó là thanh ghi 16bit có 8bit thấp ở địa chỉ 82H (DPL) và 8bit cao ở địa chỉ 83H (DPH).Các thanh ghi cổng: các cổng I/O của 8051 bao gồm P0 tại địa chỉ 80H, P1 tại địa chỉ 90H, P2 tại địa chỉ A0H và P3 tại địa chỉ B0H. tất cả các cổng đều có địa chỉ bit nên cung cấp khả năng giao tiếp với bên ngoài rất mạnh. -Các thanh ghi bộ đếm thời gian: 8051 có 2 bộ đếm thời gian 16bit để định các khoảng thời gian hay đếm các sự kiện. Timer 0 có địa chỉ 8AH (TL0: byte thấp) và 8CH (TH0: byte cao), Timer 1 có địa chỉ 8BH (TL1: byte thấp) và 8DH (TL2: byte cao). Hoạt động của bộ đếm thời gian được thiết lập bởi thanh ghi chế độ thời gian TMOD và thanh ghi điều khiển thời gian TCON, chỉ có TCON có địa chỉ bit. -Thanh ghi cổng tuần tự: IC8051 chứa 1 cổng nối tiếp để kết nối với các thiết bị nối tiếp như modem hoặc để giao tiếp với các IC khác sử dụng giao tiếp nối tiếp (bộ chuyển đổi A/D, thanh ghi dịch, bộ nhớ RAM...). bộ đệm dữ liệu nối tiếp SBUF lưu giữ cả dữ liệu truyền đi và dữ liệu nhận được. Hoạt động ghi SBUF sẽ nạp vào dữ liệu để truyền đi, còn hoạt động đọc SBUF sẽ truy cập vào dữ liệu đã nhận được. Nhiều chế độ hoạt động khác nhau có thể lập trình được thông qua địa chỉ bit của thanh ghi điều khiển cổng nối tiếp tại địa chỉ 98H. -Các thanh ghi ngắt: 8051 có 5 nguồn ngắt và 2 mức ưu tiên. Các ngắt bị cấm sau khi hệ thống khởi động lại và sẽ được bật bằng cách ghi vào thanh ghi cho phép ngắt IE (Interrup enable register). Mức ưu tiên được thiết lập thông qua thanh ghi ưu tiên ngắt IP (Interrup priority register). Cả 2 thanh ghi này đều có địa chỉ bit. -Thanh ghi điều khiển năng lượng PCON (Power control register): Chứa nhiều bit điều khiển đảm nhận những chức năng khác nhau. SMOD - - - GF1 GF0 PD IDL Hình 3.15 : các bit thanh ghi điều khiển năng lượng + Bit SMOD làm tăng gấp đôi tốc độ baud của cổng nối tiếp khi ở chế độ1, 2, 3. Bit 2 và 3 là các bit cờ dùng chung được dành sẵn cho các ứng dụng của người dùng. Các bit điều khiển năng lượng là: bit hạ thấp năng lượng PD (Power down) và bit ngừng không hoạt động IDL (Idle). Các bit này sẽ chuyển bộ vi điều khiển sang 2 chế độ hoạt động cơ bản. 2.5. Bộ nhớ ngoài: Vi điều khiển cho phép mở rộng lên đến 64K không gian bộ nhớ chương trình và 64K không gian bộ nhớ dữ liệu nằm bên ngoài. Khi sử dụng bộ nhớ ngoài thì cổng P0 không được dành cho hoạt động I/O, nó trở thành đường truyền bus dữ liệu (D0-D7) và byte thấp (A0-A7) của bus địa chỉ. Cổng P2 thường được sử dụng cho đường truyền byte cao của bus địa chỉ. Trong suốt một nửa chu kỳ nhớ đầu, tín hiệu ALE sẽ chốt byte thấp của bus địa chỉ vào bộ chốt 74HC573, và trong nữa chu kỳ nhớ còn lại, cổng P0 được sử dụng như là bus dữ liệu để đọc dữ liệu vào MC hay ghi dữ liệu ra bộ nhớ ngoài. Chế độ hoạt động như vậy gọi là chế độ dồn kênh. Địa chỉ A0...A15 Dữ liệu D0...D7 A8...A15 Không ghép kênh (24 đường) Địa chỉ Địa chỉ Dữ liệu Ghép kênh (16 đường) Hình 3.16: Giản đồ thời gian trong chế độ dồn kênh và không dồn kênh. Phương thức truy cập vào bộ nhớ chương trình ngoài: Bộ nhớ chương trình ngoài được đọc bởi tín hiệu PSEN. Khi bộ nhớ chương trình bên ngoài được sử dụng, cả cổng P0 và P2 đều không sử dụng như cổng I/O. các kết nối phần cứng được mô tả trên hình 1.12. Một vòng chu kỳ máy của 8051 gồm có 12 chu kỳ dao động. Nếu bộ dao động nội hoạt động bám theo một dao động thạch anh 12MHz thì một chu kỳ máy là 1ms. Suốt một chu kỳ máy chuẩn, tín hiệu ALE dao động 2 lần và 2 byte được đọc ra từ bộ nhớ chương trình. Port 0 EA ALE 8051 Port 2 /PSEN D0...D7 A0...A7 EPROM A8...A15 /OE D Q G 74HC573 Hình 3.17: Sơ đồ đấu nối phần cứng của 8051 với ROM ngoài Một chu kỳ máy Port 0 P1 P2 S1 P1 P2 P1 P2 P1 P2 P1 P2 S2 S3 S4 S5 S6 P1 P2 P1 P2 S1 OSC Opcode PCL PCL Byte 2 Port 2 PCH PCH Hình 3.18: Giản đồ thời gian cho hoạt động đọc bộ nhớ chương trình bên ngoài Truy cập bộ nhớ dữ liệu ngoài: Các hoạt động đọc ghi bộ nhớ dữ liệu được điều khiển bởi 2 tín hiệu RD cà WR. Cách duy nhất truy cập đến bộ nhớ dữ liệu ngoài là dùng lệnh MOVX, sử dụng con trỏ dữ liệu DPTR 16bit hoặc R0 hay R1 làm thanh ghi địa chỉ. Giản đồ thời gian cho hoạt động đọc bộ nhớ dữ liệu ngoài bằng lệnh MOVX A, @DPTR được chỉ trong hình 1.15. Lúc này, một xung ALE và một xung PSEN bị bỏ qua và thay vào đó là một xung RD để đọc RAM. Giản đồ thời gian cho một hoạt động ghi cũng tương tự, chỉ khác là xung WR ở mức thấp để ghi dữ liệu ra cổng P0 và RD tồn tại ở mức cao. Port 0 ALE 8051 Port 2 /RD /WR /PSEN D0...D7 A0...A7 RAM A8...A15 /OE /WR /CS D Q G 74HC573 Hình 3.19 : Sơ đồ đấu nối phần cứng của 8051 với RAM bên ngoài Một chu kỳ máy Port 0 Một chu kỳ máy S1 S2 S3 S4 S5 S6 ALE DPL External Data in PCH DPH S1 S2 S3 S4 S5 S6 Port 2 Hình 3.20: Giản đồ thời gian của lệnh MOVX 2.6 Reset hệ thống: 5V 100 8,2K 10uF Hình 3.21: Sơ đồ mạch thực hiện reset hệ thống Để reset 8051: Ta phải giữ chân RST ở mức cao trong tối thiểu 2 chu kỳ máy rồi mới trở lại mức thấp. Việc reset có thể thực hiện hoàn toàn bằng tay thông qua công tắc, hoặc có thể tự động reset khi cấp điện. Tình trạng các thanh ghi trong 8051 sau khi reset được tóm tắt trong hình1.17. Bộ đếm chương trình sẽ được nạp vào giá trị 0000H, bởi vì khi RST xuống mức thấp, sự thực hiện chương trình luôn luôn bắt đầu tại tai địa chỉ đầu tiên của bộ nhớ chương trình. Nội dung của RAM bên trong chíp không bị ảnh hưởng bởi hoạt động reset. Thanh ghi Nội dung Thanh ghi Nội dung Bộ đếm CT 0000H IP xxx00000B Thanh ghi A 00H IE 0xx00000B Thanh ghi B 00H Thanh ghi Timer 00H PSW 00H SCON 00H SP 07H SBUF 00H DPTR 0000H PCON(Hmos) 0xxxxxxxB Cổng P(0,1,2,3) FFH PCON(Cmos) 0xxx0000B Hình 3.22: Giá trị các thanh ghi sau reset hệ thống 3. Giới thiệu các chế độ đia chỉ của 8051: 3.1. Các chế độ địa chỉ của 8051: Bộ vi điều khiển 8051 sử dụng 8 chế độ địa chỉ để xác định vùng dữ liệu cần thiết cung cấp cho chế độ hoạt động. Bao gồm các chế độ địa chỉ sau: Địa chỉ thanh ghi. Địa chỉ trực tiếp. Địa chỉ gián tiếp . Địa chỉ tức thời. Địa chỉ tương đối. Địa chỉ tuyệt đối . Địa chỉ dài . Địa chỉ liệt kê. 3.2.Tập lệnh: Tập lệnh của 8051 chia thành 5 nhóm chính là: Lệnh số học: Gồm các lệnh cộng, trừ, nhân, chia, tăng, giảm tác động trên các địa chỉ và thanh ghi. Lệnh logic:Gồm các lệnh thực hiện phép toán Boolean, lệnh quay thanh ghi. Lệnh chuyển dữ liệu: Gồm các lệnh chuyển dữ liệu giữa các thanh ghi, giữa thanh ghi và bộ nhớ, giữa các vùng nhớ với nhau. Lệnh Boolean: 8051 chứa một bộ xử lý Boolean hoàn chỉnh thực hiện các phép toán trên từng bit. Những lệnh truy cập các bit này không chỉ là các lệnh rẽ nhánh có điều kiện mà còn có các lệnh chuyển, bật, xoá, bù, AND và OR. Lệnh rẽ nhánh chương trình: Gồm những lệnh rẽ nhánh có điều kiện hay không có điều kiện. Các lệnh rẽ nhánh chương trình sữ dụng 3 kiểu địa chỉ là kiểu địa chỉ tương đối, địa chỉ dài và địa chỉ tuyệt đối. 4 . Hoạt động của bộ định thời Timer: 4.1 Giới thiệu bộ Timer trong 8051: Bộ Timer là một dãy các flip - flop chia 2, chúng nhận một tín hiệu đưa vào như là nguồn đồng hồ. Tín hiệu từ nguồn đồng hồ đưa vào flip flop thứ nhất, và ngõ ra của flip flop thứ nhất được đưa vào flip flop thứ 2 và cứ thế tiếp tục. Mỗi tầng kế tiếp nhau được chia cho 2, nên bộ định thời n tầng sẽ chia tầng số tín hiệu đồng hồ cho 2n. Ngõ ra của tầng cuối cùng dùng để điều khiển flip flop tràn, còn gọi là cờ tràn, nó được kiểm tra bởi phân mềm và thường dùng để tạo ra một ngắt. Giá trị nhị phân trong các flip flop hiểu là các xung đồng hồ được đếm khi bộ định thời hoạt động. Các bộ đếm sẽ thực hiện đếm lên từ giá trị nạp vào thanh ghi THx và TLx, cho đến FFFFh và cơ tràn được bật và bộ đếm lại lấy giá trị trong thanh ghi THx và THx. Ban đầu mật định giá tri trong thanh ghi THx và TLx là 0000h. Trong 8051 có 2 bộ định thời 16 bít, mỗi bộ có 4 chế độ hoạt động nó thường được sử dụng: Tạo ra tốc độ baud cho việc truyền thông nối tiếp. Đếm sự kiện và đo khoảng thời gian trôi qua giữa các sự kiện. Để truy cập vào bộ định thời ta dùng 6 thanh ghi sau: SFR Mục đích Địa chỉ Chế đô địa chỉ bít TCON Điều khiển 88h Có TMOD Định Mode 89h 0 TL0 Byte thấp của Timer0 8Ah 0 TL1 Byte thấp của Timer1 8Bh 0 TH0 Byte cao của Timer0 8Ch 0 TH1 Byte cao của Timer1 8Dh 0 Hình 3.23: Các thanh ghi chức năng đặc biệt của bộ định thời. Thanh ghi kiểu thời gianTMOD: Bit Tên Timer Chức năng 7 GATE 1 Nếu GATE=1và INT1 cao thì Timer1 mới hoạt động 6 C/T 1 Bít chọn Counter/Timer 5 M1 1 Bit chọn Mode 4 M0 1 Bit chọn Mode 3 GATE 0 Bit GATE của Timer0 2 C/T 0 Bít chọn Counter/Timer 1 M1 0 Bit chọn Mode 0 M0 0 Bit chọn Mode Hình 3.24: các bit trong thanh ghi TMOD 4.3 Thanh ghi điều khiển định thời TCON : TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 TCON chứa các bít tình trạng và các bít điều khiển cho Timer0 và Timer1. TF0, TF1: cờ tràn bật bởi phần cứng khi sảy ra tràn và được xoá bởi phần mềm hoặc phần cứng khi sử dụng ngắt. TR0, TR1: điều khiển chạy cho Timer0 và Timer1. Bật xoá bởi phần mềm. IE0, IE1: cờ phát hiện ngắt từ bên ngoài, được xoá bởi phần mềm hoặc phần cứng khi sử dụng ngắt. IT0, IT1: chọn lựa cách tác động của ngắt bên ngoài là tác động mức thấp hay tác động sườn âm. Nguồn đồng hồ: Có thể định nhịp bởi 1 trong hai nguồn đồng hồ, việc lựa chọn này bằng cách ghi vào C/T trong thanh ghi TMOD khi mà bộ định thời được thiết lập. Một nguồn đồng hồ dùng để xác định khoảng thời gian và nguồn kia dùng để đếm sự kiện. Nếu C/T= 0, Timer nhận xung từ từ bộ dao động bên trong chíp, và được chia cho 12 để tạo ra xung hợp lí phù hợp cho các ứng dụng. Các thanh ghi THx và TLx được tăng lên sau mỗi xung nhịp có tần số 1Mhz nếu bộ dao động nội hạt có tần số là 12Mhz. Hiện tượng tràn sảy ra phụ thuộc vào giá trị nạp vào thanh ghi THx và TLx. Nếu C/T=1, bộ định thời được định nhịp bởi nguồn từ bên ngoài thông qua 2 chân P3.4(T0) và P3.5(T1). Trong hầu hết các ứng dụng, nguồn bên ngoài này cung cấp cho Timer một xung vào lúc xảy ra một sự kiện nào đó, lúc này bộ Timer là bộ đếm sự kiện. Số các sự kiện được xác định bởi phần mềm bằng cách đọc các thanh ghi định thời TLx/THx, bởi vì giá trị 16bit trong các thanh ghi này tăng lên sau mỗi sự kiện. 0= Up (Interval Timing) 1= Down (Event Counting) On - chip Oscillator ¸12 Timer Clock T0 or T1 pin C/T Hình 3.25: Nguồn đồng hồ 5. Hoạt động của cổng nối tiếp: 5.1 Giới thiệu chung: Bộ vi điều khiển có chứa một cổng nối tiếp ở bên trong, nó có thể hoạt động ở 4 Mode khác nhau. Chức năng chủ yếu của cổng nối tiếp là thực hiện việc chuyển đổi từ song song sang nối tiếp để xuất dữ liệu ra, và từ nối tiếp sang song song để nhập dữ liệu vào thông qua 2 chân P3.1 (TXD) và P3.0 (RXD). Cổng nối tiếp có tính năng hoạt động kép, tức là cùng một lúc có thể truyền và nhận dữ liệu, ngoài ra 8051 còn sử dụng cơ chế bộ đệm cho phép một ký tự được nhận vào và lưu trữ trong bộ đệm trong khi nhận vào ký tự thứ 2. Nếu CPU đọc ký tự đầu tiên trước khi ký tự thứ 2 được nhận đầy đủ thì dữ liệu sẽ không bị mất. Hoạt động ghi vào SBUF sẽ nạp vào dữ liệu để truyền đi, và hoạt động đọc SBUF truy cập vào phần dữ liệu nhận được. Thật sự SBUF là 2 thanh ghi khác biệt và tách rời nhau, thanh ghi phát chỉ ghi và thanh ghi nhận chỉ đọc. Tần số hoạt động của cổng nối tiếp hay tốc độ baud có thể cố định (được cấp bởi bộ dao động nội của 8051) hay thay đổi. Timer 1 được sử dụng làm nguồn phát tốc độ baud có thể thay đổi được bằng cách lập trình cho nó. 5.2 Thanh ghi điều khiển cổng nối tiếp SCON: Chế độ hoạt động của cổng nối tiếp trong 8051 được thiết lập bằng thanh ghi điều khiển cổng nối tiếp SCON. SM0 SM1 SM2 REN TB8 RB8 TI RI Hình 3.26: Các bit trong thanh ghi điều khiển cổng nối tiếp SCON. SM0, SM1: là 2 bit thiết lập mode hoạt động cho cổng nối tiếp SM2: Bit mode cho phép chế độ truyền thông đa xử lý trong mode2 và mode3. Ri sẽ không được kích hoạt nếu nhận được bit thứ 9 là bit 0 REN: Bit cho phép nhận, phải được bật bởi chương trình để nhận ký tự TB8: Chứa bit thứ 9 được truyền đi trong mode2 và mode3 RB8: Nơi nhận bit thứ 9 trong mode2 và mode3 TI: Cờ ngắt phát, được bật sau khi truyền xong bit cuối cùng của một ký tự và được xoá bởi chương trình. RI: Cờ ngắt nhận, được bật sau khi truyền xong bit cuối cùng của một ký tự. Và được xoá bởi chương trình. 5.3 Các chế độ hoạt động (Mode): Cổng nối tiếp của 8051 có tất cả 4 chế độ hoạt động được chọn lựa bởi các bit SM0 và SM1 trong SCON. SM0=0, SM1=0:Mode 0 (thanh ghi dịch) SM0=0, SM1=1:Mode 1 (8bit UART) SM0=1, SM1=0:Mode 2 (9 bit UART) SM0=1, SM1=1:Mode 3 (9 bit UART) Thanh ghi dịch 8bit (Mode 0): Trong mode 0, cổng nối tiếp hoạt động như một thanh ghi dịch 8bit. Hai chân RXD và TXD không được dùng như truyền thống, chân RXD được sử dụng cho cả dữ liệu nhập vào và dữ liệu xuất ra, còn chân TXD dùng xuất nhịp đồng hồ, bit LSB được truyền hay nhận đầu tiên trong 8 bit. Hoạt động nhận dữ liệu được bắt đầu khi bit cho phép nhận REN bật 1 và bit ngắt RI bị xoá về 0. Khi RI bị xoá,các xung đồng hồ được ghi ra đường TXD, tại thời điểm bắt đầu của một chu kỳ máy và dữ liệu sẽ được dịch chuyển vào ngõ RXD bởi nhịp đồng hồ. Tốc độ baud = 1/12 (tần số của bộ dao động nội). Chế độ 8bit UART với tốc độ baud thay đổi (Mode 1): Trong mode 1, cổng nối tiếp của 8051 hoạt động như là một bộ 8bit UART có tốc độ baud thay đổi. 10bit được phát đi trên đường TXD hoặc được nhận vào ngõ RXD. Chúng bao gồm một bit Start (luôn luôn ở mức 0), tiếp theo là 8bit dữ liệu (bit LSB ở đầu ), và bit Stop cuối cùng (luôn luôn là 1). Chu kỳ của mỗi bit là số nghịch đảo của tốc độ baud. Tốc độ baud được thiết lập bởi mức tràn Timer 1. Hoạt động phát được khởi đầu bằng cách ghi vào SBUF. Dữ liệu được chuyển dịch ra ngõ TXD bắt đầu bởi bit Start, tiếp theo là 8bit dữ liệu và kết thúc bằng bit Stop. Cờ ngắt phát được đi TI được bật ngay khi bit Stop xuất hiện ở chân TXD. Hoạt động nhận được khởi đầu bằng sự chuyển đổi từ 1 qua 0 tại ngõ RXD. Giả thiết rằng một bit Start hợp lệ đã được phát hiện, sau đó bit Start bị bỏ qua, 8bit dữ liệu được dịch chuyển vào trong thanh ghi dịch của cổng nối tiếp. Tiếp theo: Bit thứ 9 (bit Stop) được dịch chuyển vào trong RB8 của SCON 8bit dữ liệu được nạp vào SBUF Cờ ngắt báo hiệu nhận được (RI) bật lên. Tốc độ baud = (tốc độ tràn Timer 1). Ví dụ, nếu tốc độ baud là 1200 thì tốc độ tràn là: Tốc độ tràn Timer 1 = 38,4KHz Nếu sử dụng thạch anh 12MHz để điều khiển bộ dao động nội, thì Timer 1 được định nhịp ở mức 1MHz. Vì bộ định thời phải tràn ở tốc độ 38,4KHz và nó cũng được định nhịp ở mức 1000KHz. Như vậy cứ 1000¸38,4 = 26,04 nhịp đồng hồ thì phải xảy ra tràn một lần (làm tròn thành 26 nhịp đồng hồ). Bởi vì bộ định thời đếm lên và hiện tượng tràn xảy ra khi có sự chuyển đổi từ FFH qua 00H, một giá trị đếm 26 nhỏ hơn 0 được yêu cầu nạp vào cho TH1. Như vậy giá trị đúng là -26 tức là E6H.. Mode 9 bit UART với tốc độ baud cố định (Mode 2): Trong mode 2, 11bit dược phát đi hay nhận gồm có: bit Start, 8bit dữ liệu, 1 bit dữ liệu thứ chín được lập trình và bit Stop. Khi phát đi thì cho dù thế nào đi nữa, bit thứ chín cũng được đặt vào TB8 trong SCON (có thể là bit Parity). Khi nhận, bit thứ chín nhận được sẽ được đặt vào RB8 trong mode 2 bằng 1/32 hay 1/64 tần số của bộ dao động nội. Tốc độ baud = (Tần số bộ dao động nội) Mode 9bit UART với tốc độ baud thay đổi (Mode 3): Mode 3 cũng giống như mode 2 ngoại trừ tốc độ baud được lập trình và được cung cấp bởi bộ định thời. Thực tế thì mode 1, mode 2 và mode 3 rất giống nhau, điểm khác biệt ở đây là tốc độ baud (cố định trong mode 2, thay đổi trong mode 1 và 3) và số bit dữ liệu (8bit trong mode 1, 9bit trong mode 2 và 3). Tốc độ baud = (Tốc độ tràn Timer 1). On chip oscillator ¸12 Baud rate clock (a) Mode 0 ¸64 ¸32 Baud rate clock On chip oscillator (b) Mode 2 SMOD = 0 SMOD = 1 ¸64 ¸32 Baud rate clock On chip oscillator (c) Mode 1 and Mode 3 SMOD = 0 SMOD = 1 Hình 3.27: Nguồn đồng hồ cho cổng nối tiếp Truyền thông đa xử lý Các chế độ 2 và 3 là các chế độ dự phòng cho việc truyền thông đa xử lý. Trong các chế độ này, 9 bit dữ liệu được thu và bit thứ 9 được đưa đến RB8. Port có thể được lập trình sao cho khi bit Stop được nhận, ngắt do port được tích cực khi chỉ nếu RB8 =1. Đặc trưng này có được bằng cách set bit SM2 trong thanh ghi SCON bằng 1. Đặc trưng này được ứng dụng trong mô hình mạng sử dụng nhiều 8051 được sắp xếp theo mô hình chủ/tơ ( master/slave ) như trình bày trong hình vẽ: Master 8051 TXD P0 P1 P2 P3 8051 Slave1 RXD P0 P1 P2 P3 8051 Slave2 RXD 32 I/O lines 32 I/O lines 3. Hệ thống ngắt: Khi bộ xử lý chủ muốn truyền một khối dữ liệu đến một trong nhiều bộ xử lý tớ, trước tiên bộ xử lý chủ phát đi một byte địa chỉ nhận dạng bộ xử lý tớ đích. Một byte địa chỉ khác với một byte dữ liệu ở chỗ bit thứ 9 là một trong byte địa chỉ và là 0 trong byte dữ liệu. Một byte dịa chỉ ngắt tất cả các bộ xử lý tớ để cho mỗi một bộ xử lý tớ có thể khảo sát byte nhận được để kiểm tra xem có phải là bộ xử lý tớ đang được định địa chỉ không. Bộ xử lý tớ được định địa chỉ sẽ xóa bit SM2 của mình và chuẩn bị nhận các byte dữ liệu theo sau. Các bộ xử lý tớ không được định địa chỉ có các bit SM2 của chúng được set bằng 1 và thực thi công việc riêng của chúng, bỏ qua khong nhận các byte dữ liệu. Các bộ xử lý này sẽ được ngắt lần nữa khi bộ xử lý chủ phát tiếp byte địa chỉ kế. Khi liên kết đã được thiết lập trạm tớ có thể phát đến trạm chủ bằng cách không sử dụng bit dữ liệu thứ 9 . 6. Hệ thống ngắt: 6.1 Giới thiệu chung: Ngắt đóng vai trò quan trọng trong việc thiết kế và thực hiện các ứng dụng của vi điều khiển. Chúng cho phép hệ thống đáp ứng một cách không đồng bộ đến 1 sự kiện và giải quyết sự kiện đó khi chương trình khác đang chạy. Khi một ngắt xảy ra thì chương trình chính tạm thời dừng công việc đang thi hành và rẽ nhánh sang ISR, tiếp theo ISR hoạt động để đáp ứng yêu cầu của ngắt, và nó sẽ kết thúc bằng lệnh quay về, chương trình chính sẽ hoạt động tiếp tục tại ngay sau điểm rẽ nhánh. Chương trình chính thực hiện ở mức cơ bản (base - level), còn ISR thực hiện ở mức ngắt (Interrup - level). a) Quá trình thực hiện chương trình mà không có ngắt t Chương trình chính ISR ISR CT chính CT chính CT chính t Thực hiện ISR Quay trở lại CT chính b) Quá trình thực hiện chương trình có ngắt Hình 3.28: Trình tự thực hiện chương trình không có ngắt và có ngắt 6.2 Tổ chức ngắt của 8051: Có tất cả là 5 nguồn ngắt trên 8051: 2 ngắt ngoài, 2 ngắt bộ định thời và 1 ngắt cổng nối tiếp. Tất cả các ngắt đều bị cấm sau khi hệ thống khởi động và được bật riêng lẻ bởi phần mềm. Có thể truy cập đến các ngắt thông qua thanh ghi cho phép ngắt IE. Độ ưu tiên của ngắt: Mỗi một nguồn ngắt có thể được lập trình để đạt được một trong 2 mức ưu tiên thông qua thanh ghi chức năng đặc biệt có địa chỉ bit IP tại địa chỉ 0B8H. thanh ghi IP bị xóa sau khi hệ thống khởi động để đặt các ngắt ở mức ưu tiên thấp hơn so với mặc định. Trong 8051 tồn tại 2 mưc ưu tiên. Khi một ngắt có mức ưu tiên cao xuất hiện trong khi một ISR có mức ưu tiên thấp đang thi hành thì ISR đó sẽ bị ngừng lại, và ISR có mức ưu tiên cao hơn sẽ được thực hiện. Bit Tên Địa chỉ bit Chức năng 1= Enable; 0= Disable IE.7 EA AFH Bit bật/tắt dùng chung IE.6 - AEH Không được định nghĩa IE.5 ET2 ADH Cho phép ngắt Timer 2(8052) IE.4 ES ACH Cho phép ngắt cổng nối tiếp IE.3 ET1 ABH Cho phép ngắt Timer 1 IE.2 EX1 AAH Cho phép ngắt ngoài 1 IE.1 ET0 A9H Cho phép ngắt Timer 0 IE.0 EX0 A8H Cho phép ngắt ngoài 0 Hình 3.29: Các bit trong thanh ghi IE ( Interrupt Enable) Bit Tên Địa chỉ bit Chức năng 1= Enable; 0= Disable IP.7 - - Không xác định IP.6 - - Không xác định IP.5 PY2 0BDH Ưu tiên cho ngắt Timer 2 IP.4 PS 0BCH Ưu tiên cho ngắt cổng nối tiếp IP.3 PT1 0BBH Ưu tiên cho ngắt Timer 1 IP.2 PX1 0BAH Ưu tiên cho ngắt ngoài 11 IP.1 PT0 0B9H Ưu tiên cho ngắt Timer 0 IP.0 PX0 0B8H Ưu tiên cho ngắt ngoài 0 Cơ chế chọn lựa tuần tự: Nếu có 2 ngắt với cùng mức ưu tiên xảy ra đồng thời, thì một cơ chế chọn lựa theo thứ tự có sẵn sẽ xác định ngắt nào được đáp ứng trước. Việc chọn lựa theo thứ tự sẽ là External 0, Timer 0, External 1, Timer 1, Serial Port, Timer 2.Hình 1.24 giới thiệu 5 nguồn ngắt, cơ cấu cho phép chung và riêng lẻ, cơ chế chọn lựa tuần tự, và các mức ưu tiên. Tình trạng của tất cả các nguồn ngắt là sẵn sàng nhờ vàobit cờ tương ứng trong thanh ghi SFR. Tất nhiên, nếu bất cứ ngắt nào bị cấm, ngắt đó sẽ không xuất hiện nhưng phần mềm vẫn có thể kiểm tra cờ ngắt. Ngắt của cổng nối tiếp có được là nhờ kết quả của phép toán OR cờ ngắt nhận được RI với cờ ngắt phát đi TI. Cũng như vậy, ngắt của Timer 2 được tạo ra bởi sự tràn bộ định thời TF2 OR với EXF2. INT0 INT0 TF0 TF1 RI TI IE0 IE0 Interrupt enable Global enable Interrupt polloing sequence Low priority interrupt High priority interrupt IP register IE register IT0 IT1 0 1 0 1 Hình 3.30: Cấu trúc hệ thống ngắt trong 8051 6.3 Quá trình xử lý ngắt: - Khi một ngắt xuất hiện và nó được CPU chấp nhận, chương trình chính bị ngừng, các hoạt động tiếp theo xảy ra như sau: Thực hiện xong lệnh hiện hành lúc đó Bộ đếm chương trình PC được lưu vào trong Stack Lưu giữ tình trạng của ngắt hiện tại Các nguồn ngắt được giữ tại mức của ngắt hiện tại Nạp vào PC địa chỉ vector của ISR ISR thực hiện - ISR hoạt động để đáp lại yêu cầu của ngắt. ISR kết thúc bằng lệnh RETI có tác dụng quay trở lại chương trình chính, lệnh này sẽ nạp lại giá trị củ của PC trong ngăn xếp và khôi phục lại tình trạng của ngắt củ. Việc thực hiện chương trình chính tiếp tục diễn ra tại nơi nó tạm dừng. Vector ngắt: - Khi một ngắt được chấp nhận thì giá trị nạp vào trong PC gọi là vector ngắt. Nó chính là địa chỉ bắt đầu của ISR tương ứng với ngắt được chấp nhận. - Các vector ngắt được cho trong hình 1.31. Cờ RST cũng tạo ra một ngắt nhằm khởi động lại hệ thống có vector ngắt là 0000H, nó ngắt chương trình chính và nạp vào PC giá trị mới là 0000H. Ngắt Cờ Địa chỉ Vector System reset RST 0000H Exernal 0 IE0 0003H Timer 0 TF0 000BH External 1 IE1 0013H Timer 1 TF1 001BH Serial Port RI or TI 0023H Timer 2 TF2 or EXF2 002BH Hình 3.31: Các Vector ngắt Phần 3. Giới thiệu các bộ biến đổi DAC, ADC: 1. Bộ biến đổi số tương tự DAC: 1.1 Giới thiệu: Bộ biến đổi số tương tự DAC là thiết bị được sử dụng rộng rãi để chuyển đổi xung số về tín hiệu tương tự. Cấu trúc của bộ biến đổi: VCC VREF(-) VREF(+) RANGE CONTROL MSB LSB A1 A2 A3 A4 A5 A6 A7 A8 COMPE VCC GND I0 CURRENT SWITCH H 2R LADDER B CIRCUIT NPN CURRENT SOURCE PAIR REFERENCE CURRENT AMP MSB A1 5 9 A5 10 A6 11 A7 12 AB LSB 13 VCC 14 VREF(+) 15 VREF(-) 16 COMP A4 8 A3 7 A2 6 I0 4 VEE 3 GND 2 NC (NOTE2) 1 DAC0808 Hình3.32. Cấu trúc và sơ đồ chân của DAC0808 Ở đây ta sử dụng bộ biến đổi D/A–8 bit loại DAC0808 Các thông số cơ bản của bộ biến đổi: Nhiệt độ hoạt động: 00 ≤ TA ≤ +750C Điện áp nguồn cung cấp (TA = 250C): Vcc = 5VDC VEE = 5VDC Dòng của nguồn cung cấp (Tất cả các bit ở mức thấp) Icc = 2,3 ~ 22 mA IEE = - 4,3 ~ -13mA Dòng điện tham chiếu Iref = 2mA Dòng điện ra (VEE = -15V): Io = 2 ~ 4,2mA Công suất tiêu hao: 1000mW Nhiệt độ lớn nhất tại mối hàn mà IC chịu được (trong 10s): 260oC Có hai phương pháp thực hiện chuyển đổi DAC: Phương pháp trọng số nhị phân và phương pháp bậc thang R/2R. Rất nhiều mạch tích hợp DAC, trong đó có MC1408 (DAC0808) được sử dụng trong phần này, đều sử dụng phương pháp hình thang R/2R vì phương pháp này cho phép đạt được độ chính xác cao hơn. Tiêu chuẩn để đánh một bộ DAC trước hết là độ phân giải. Độ phân giải là hàm của số đầu vào nhị phân. Độ phân giải chung thường 8, 10 và 12 bit. Số bit dữ liệu đầu vào quyết định độ phân giải của bộ DAC, vì số mức đầu vào bằng 2n với n là số bit dữ liệu đầu vào. Do vậy, một bộ DAC 8 bit như DAC0808 chẳng hạn có 256 mức điện áp (dòng điện) rời rạc ở đầu ra. Tương tự như vậy, một bộ DAC 12 bit cho 4096 mức điện áp rời rạc. Cũng có các bộ DAC 16 bit song chúng rất đắt . Ta có một số đặc tính của bộ biến đổi DAC0808: 1.2 Ghép nối DAC0808 (MC1408) với 8051: Ở DAC0808 tín hiệu đầu vào số được chuyển thành dòng (Iout) và nếu nối điện trở tới chân Iout thì kết quả được chuyển thành điện áp, dòng tổng được cấp bởi chân Iout là một hàm của số nhị phân đầu vào D0-D7 của DAC0808 và được tính theo Iref như sau: Iout =Iref (+++++++) Trong đó D0 là bit thấp LSB và D7 là bit cao MSB, dòng đầu vào Iref phải được áp vào chân 14. Dòng Iref thường đặt giá trị 2,0mA. Hình vẻ giới thiệu mạch tạo tham chiếu dòng (thiết lập Iref = 2mA) bằng cách sử dụng điện áp nuôi 5V và các điện trở 1KW. Nếu Iref = 2mA, còn tất cả đầu vào nối tới DAC ở mức cao, thì dòng điện cực đại ở đầu ra là 1,99Ma. Chuyển Iout sang điện áp ở DAC0808 R=2,5K POT 100PF 2.5K 1K 1.5K Dải điều khiển +5V VREF(-) VREF(+) -12V VEE COMP GND 8051 +5V P1.0 P1.7 D0 D7 8051 DAC 8051 Vcc IOUT Điện máy hiện sóng vout=0-10V Nếu nối điện trở tới chân Iout thì dòng được chuyển thành điện áp và có thể kiểm tra đầu ra bằng máy hiện sóng. Tuy nhiên, như vậy sẽ làm giảm độ chính xác do bị thay đổi trở kháng vào của tải. Vì vậy, dòng ra Iref cần được cách ly bằng cách dùng khuyếch đại thuật toán với điện trở hồi tiếp R = 5kΩ. Nếu R = 5kΩ, thì khi đầu vào thay đổi nhị phân, điện áp đầu ra sẽ thay đổi: Vout = Io*R. Hình3.33. Nối ghép 8051với DAC0808 Sơ đồ lấy điện áp ra dùng khuếch đại thuật toán: V0 OUTPUT DIGITAL INPUTS 5000K VREF =10000V 5K 5000K VCC =5V VEE =-15V MSB LSB 12 10 11 10 9 8 7 6 5 13 14 15 2 4 16 3 0,1 LF351 DAC0808 Hình 3.34. Sơ đồ lấy điện áp ra dùng khuyếch đại thuật toán 2. Bộ chuyển đổi tương tự số ADC: 2.1 Giới thiệu: Các bộ chuyển đổi ADC được sử dụng hết sức rộng rãi. Máy tính số làm việc trên các giá trị nhị phân, tuy nhiên trong thực tế, các đại lượng vật lý đều ở dạng tương tự (liên tục ) nhiệt độ áp suất, độ ẩm, tốc độ… là một trong những đại lượng vật lý của thế giới thực mà ta thường gặp hàng ngày. Một đại lượng vật lý được chuyển về dòng điện hoặc điện áp qua một thiết bị được gọi là bộ biến đổi. Bộ biến đổi cũng có thể được xem như bộ cảm biến. Mặc dù chỉ có các bộ cảm biến nhiệt, tốc độ, áp suất, ánh sáng và nhiều đại lượng tự nhiên khác, nhưng chúng đều có một đặt điểm chung là cho ra các tín hiệu dòng điện hoặc điện áp ở dạng liên tục. Do vậy, cần một bộ chuyển đổi tương tự số để bộ vi điều khiển có thể đọc được chúng. Chip ADC được sử dụng rộng rãi hiện nay là ADC804. 2.2 Chip ADC 804: Chip ADC804 là bộ chuyển đổi tương tự số thuộc họ ADC800 của hãng National Semiconductor. Chip này cũng được nhiều hãng khác sản xuất. Chip có điện áp nuôi +5V và độ phân giải 8bit. Ngoài độ phân giải thì thời gian chuyển đổi cũng là một tham số quan trọng khi đánh giá bộ ADC. Thời gian chuyển đổi được định nghĩa là thời gian mà bộ ADC cần để chuyển đổi một đầu vào tương tự thành một số nhị phân. Đối với ADC804 thời gian chuyển đổi phụ thuộc vào tần số đồng hồ được cấp tới chân CLK R và CLK IN và không bé hơn 110µs. Sơ đồ tổng quát nối ghép ADC0804 với bộ vi điều khiển: TRANSDUCER DIFF INPUTS 150PF 10K 5V 20 19 4 6 7 8 9 10 1 2 3 5 11 12 13 14 15 16 17 18 BUS ANY PROCESSOR CS RD WR INTR D87 D86 D85 D84 D83 D82 D81 D80 VCC CLK R CLK IN VIN(+) VIN(-) A GND VREF/2 D GND A/D Hình 3.35. Sơ đồ ghép nối ADC với bộ điều khiển Các chân của ADC804 có các chức năng sau: CS (Chip select): Chọn chip Là chân chọn chip, đầu vào tích cực mức được sử dụng để kích hoạt chip ADC804. RD (Read): Đọc Đây là tín hiệu đầu vào, tích cực mức thấp. Có một xung cao xuống thấp đến chân RD thì dữ liệu Các bộ ADC chuyển đổi tương tự thành số nhị phân và giữ nó ở một thanh ghi trong. RD được sử dụng để cóp dữ liệu đã chuyển đổi tới đầu ra của ADC804. Khi CS=0 nếu ra dạng số 8 bit được đưa tới các chân dữ liệu DO-D7. Chân RD còn được coi là cho phép đầu ra . WR (Write): Ghi Chân vào tích cực mức thấp được dùng để báo cho ADC804 bắt đầu quá trình chuyển đổi. Nếu CS =0 khi WR tạo ra xung co xuống thấp thì bộ ADC804 bắt đầu tiến hành chuyển đổi giá trị đầu vào tương tự Vin về số nhị phân 8 bit. CLK IN và CLK R CLK IN là chân vào nối với đồng hồ ngoài được sử dụng để tạo thời gian. Tuy nhiên, 804 cũng có một bộ tạo xung đồng bộ trên chip. Để dùng đồng hồ trong (cũng còn được gọi là đồng hồ riêng) của 804 thì các chân CLK IN và CLK R được nối tới một tụ điện và các điện trở như chỉ ra ở hình dưới. Trong trường hợp này tần số đồng hồ được xác định bằng biểu thức: Giá trị thông thường của các đại lượng trên là R = 10k, C = 150pF và tần số nhận được là f =606Hz, còn thời gian chuyển đổi sẽ là 110. Thường mở START Đến đèn LEDs 5 3 11 12 13 14 15 16 17 18 INTR WR D7 D6 D5 D4 D3 D2 D1 D0 D GND RD CS CLK IN CLK R V ref/2 A GND Vin(-) Vin(+) 20 150pF 10K 10 2 1 4 19 9 8 7 6 10K POT +5V ADC0804 Hinh 3.36. Sơ đồ kiểm tra ADC804 ở chế độ chạy tự do Ngắt INTR (Interrupt) Là chân tích cực mức thấp. Bình thường, chân này ở trạng thái cao và khi việc chuyển đổi hoàn tất thì nó xuống thấp để báo cho CPU biết là dữ liệu được chuyển đổi đã sẵn sàng để lấy đi. Sau khi INR xuống thấp, cần đặt CS=0 và gửi một xung cao xuống thấp tới chân RD để đưa dữ liệu ra. Vin(+) và Vin(-) Đây là hai đầu vào tương tự vi sai, trong đó Vin= Vin (+) -Vin(-). Thông thường Vin(-) được nối xuống đất và Vin (+) được dùng làm đầu vào tương tự và sẽ chuyển đổi về dạng số. Vcc Là chân nguồn nuôi +5V. Chân này còn dùng làm điện áp tham chiếu khi đầu vào Vref/2 (chân 9) để hở. Vref/2 Chân 9 là điện áp đầu vào được dùng làm điện áp tham chiếu. Nếu chân này hở thì điện áp đầu vào tương tự cho ADC804 nằm trong dải 0 đến +5V. Tuy nhiên, có nhiều ứng dụng mà đầu vào tương tự mà áp đến Vin khác với dải 0 đến 5V. Chân Vref/2 được dùng để thực hiện các điện áp đầu vào có dải khác với 0 – 5V. Ta có bảng quan hệ điện áp Vref/2 với Vin Vref/2(V) Vin(V) Kích thước bước (mV) Hở* 0 đến 5 5/256 = 19.53 2 0 đến 4 4/255 = 15.62 1.5 0 đến 3 3/255 = 11.71 1.28 0 đến 2.56 2.56/256 = 10 1 0 đến 2 2/256 = 7.81 0.5 0 đến 1 1/256 = 3.90 Ghi chú: Vcc = 5V. Khi Vref/2 hở thì đo được ở đó khoảng 2,5V. D0-D7 D0-D7 là các chân ra dữ liệu số (D7 là bit cao nhất MSB và D0 là bit thấp nhất). Các chân này được đệm ba trạng thái và dữ liệu đã được chuyển đổi chỉ được truy cập khi chân CS = 0 và chân RD đưa xuống mức thấp. Điện áp đầu ra có thể được tính theo công thức: Dout = Trong đó: Dout là đầu ra dữ liệu số (dạng thập phân); Vin là điện áp đầu vào tương tự; Kích thước bước hay độ phân giải là sự thay đổi nhỏ nhất được tính bằng (2*Vref/2) chia cho 256 đối với ADC 8 bit. Chân đất tương tự và chân đất số: Đây là những chân đầu vào cấp chung cho cả tín hiệu số và tương tự. Đất tương tự được nối với chân đất của chân Vin tương tự, còn đất số được nối với đất của chân Vcc. Lý do có hai đất là để cách ly tín hiệu tương tự Vin khỏi các điện áp ký sinh gây ra do các chuyển mạch số đầu ra D0-D7. Việc cách ly này nhằm tăng độ chính xác của dữ liệu ra số. Ta có một số đường đặc tính của ADC0804: Phần 4: ` Sơ đồ mạch ghép nối giữa AT89C51 với các bộ ADC, DCA. CHƯƠNG TRÌNH NẠP CHO MẠCH VI ĐIỀU KHIỂN ;……….......................Định nghĩa……………………………… VOLT_1 EQU 20H VOL_2 EQU 21H VOL_3 EQU 22H ;……..FORMAT : VOLT_1, VOLT_2, VOLT_3 DATE_READ EQU 23H FL_FULL BIT 24H.0 ;……………………..ADC0804…………………………………….. READ BIT P2.5 WRITE BIT P2.6 INTR BIT P2.7 IN_DATA EQU P1 BUT_START BIT P2.0 ;……………………DAC0808…………………………………….. OUT_DATA EQU P3 ORG MAIN: SETB BUT_START WAIT: JB BUT-START, WAIT; Chờ ấn nút CLR FL_FULL LOOP: JB FL_FULL, WAIT ACALL START_ADC ACALL START_DAC SJMP LOOP ;…………………….CHUYEN DOI ADC……………………………. START_ADC: SETB READ CLR WRITE SETB INTR ACALL START ACALL GET_DATA ACALL CONVERT RET ,…………………………………START……………………………………….. ; WR CHUYỂN TỪ MỨC THẤP LÊN CAO ; CHỜ INTR CHUYỂN SANG MỨC THẤP , RD GỬI XUNG CAO XUỐNG THẤP ;……………………………………………………………………………………. START: CLR WRITE NOP SETB WRITE, Chuyển xung thấp lên cao CHECK: JB INTR, Chờ chuyển đổi xong ;………………………………GET_DATA………………………………………. GET_DATA: CLR READ; Gửi xung cao xuống thấp chờ READ MOV A, IN_DATA, Đọc DATA MOV DATA_READ, A RET ,…………………………….CONVERT…………………………………………. CONVER: MOV B, #51 DIV AB MOV VOLT_1, A MOV A, B MOV B, #10 DIV AB MOV VOLT_2, A MOV VOLT_3, B RET ,……………………………………………………………………………………. START_DAC: MOV A, DATA_READ, Nhận lại tín hiệu khi đọc vào. CJNE A, #0FFH, TIEP_THEO MOV OUT_DATA, #00H SETB FL_FULL, Báo là acqui đã đầy SJMP END_DAC TIEP_THEO: SWAP A MOV OUT_DATA, A MOV P0, A, xuất ra LED END_DAC: RET ,…………………………END OF PROGRAMMER…………………………. END. Tài liệu tham khảo Sách điện tử công suất (tác giả: Nguyễn Bính) Sách điện tử công suất I (tác giả: Lê Văn Doanh, Nguyễn Thế Công, Trần Văn Thịnh) Sách điện tử công suất II (tác giả: Lê Văn Doanh, Nguyễn Thế Công, Trần Văn Thịnh) Sách điện tử công suất (tác giả: Võ Minh Chính, Phạm Quốc Hải, Trần Trọng Minh) Automatismes Energie Electronique Systemes. CDN-HPT 50 220 (truyền tải huế) Sách 3PH DC 110 50 của Hyundai-Vinashin Shipyard co, ltd. Sách CHLORIDE 3CBC 220 50 (công ty TNHH Việt Á) Sách hướng dẩn vận hành tủ nạp PTX-SC và acqui ESG (truyền tải II) Sách hướng dẩn vận hành tủ nạp G11, G12 và acqui axit-chì Sách hướng dẩn vận hành tủ nạp acqui HPT (AEES) Sách hướng dẩn vận hành tủ nạp ắc qui QD 216/80 và acqui 4OPzS200 Họ vi điều khiển 8051 (tác giả: Tống Văn On, Hoàng Đức Hải) Sách vi điều khiển (tác giả: Nguyễn Tăng Cường, Phan Quốc Thắng) Một số trang web tham khảo: www.alldatasheet.com www.google.com.vn

Các file đính kèm theo tài liệu này:

  • docNghiên cứu, thiết kế bộ nạp Acquy ứng dụng vi điều khiển.doc