Giáo Trình 8051 Cơ Bản

128 86 0
Giáo Trình 8051 Cơ Bản

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

DKS_GROUP Microcontroller Training Center Leon_heaty@yahoo.com Nguyễn Huy Thanh Cơ Điện Tử K47 Đại học BKHN 048392893 DKS_GROUP www.EmbestDKS.com CuuDuongThanCong.com -1- Số nhà 38 ngõ 36 Lê Thanh Nghị 048684577 https://fb.com/tailieudientucntt DKS_GROUP Microcontroller Training Center Mơc Lơc: Bµi 1: Giíi thiệu vi điều khiển 1.1)Tiêu chuẩn lựa chọn vi điều khiển 1.2)Vi điều khiển vi xử lí 1.3)Sơ đồ chân vi điều khiển 8051 1.4) Mạch 8051 tối thiểu (6) 1.5)Cấu trúc_sơ đồ khối vi điều khiển 8051 (8) 1.6)Các thành viên khác họ 8051 (9) 1.7)Ram nội ghi SFR 8051 (10) 1.8)Giới thiệu sơ qua nguồn ngắt (13) BAI : Ngôn ngữ lập trình C 21.)Cấu trúc chơng trình 2.2)Cỏc loi bin C (14) (16) 2.3)Hm C (17) 2.4)Các toán tử 2.5)C¸c cÊu tróc lƯnh rÏ nh¸nh, kiĨm tra (19) (19) DKS_GROUP www.EmbestDKS.com CuuDuongThanCong.com -2- Số nhà 38 ngõ 36 Lê Thanh Nghị 048684577 https://fb.com/tailieudientucntt DKS_GROUP Microcontroller Training Center Bài 1: Giới thiệu vi điều khiển Chú ý : Đây hoàn toàn phần lí thuyết, đ rút gọn tối đa, bạn nên đọc hết Cha nên thực hành vội hớng dân sau 1.1)Tiêu chuẩn lựa chọn vi điều khiển: khả sẵn sàng đáp ứng số lợng tơng lai Đối với số nhà thiết kế điều quan Hiện nay, vi điều khiển bit đứng đầu họ 8051 có số lơng lớn nhà cung cấp đa dạng (nhiều nguồn) Nhà cung cấp có nghĩa nhà sản xuất bên cạnh nhà sáng chế vi điều khiển Trong trờng hợp 8051 nhà sáng chế Intel, nhng hiƯn cã rÊt nhiỊu h ng s¶n xt nã (cũng nh trớc đ sản xuất) Các h ng nµy bao gåm: Intel, Atmel, Philips/signe-tics, AMD, Siemens, Matra vµ Dallas, Semicndictior Bảng địa số h ng sản xuất thành viên họ 8051 H ng §Þa chØ Website Intel www.intel.com/design/mcs51 Antel www.atmel.com Plips/ Signetis www.semiconductors.philips.com Siemens www.sci.siemens.com Dallas Semiconductor www.dalsemi.com 8051 lµ mét bé xư lý bit cã nghÜa lµ CPU chØ cã thĨ làm việc với bit liệu thời điểm Dữ liệu lớn bit đợc chia thành liệu bit xử lý 8051 có tất cổng vào - I/O cổng rộng bit Các nhà sản xuất đ cho xt x−ëng chØ víi 4K byte ROM trªn chÝp Bảng đặc tính 8051 Đặc tính Số lợng ROM chíp 4K byte RAM 128 byte Bộ định thời Các chân vào - 32 Cổng nối tiếp Nguồn ngắt 1.2)Vi điều khiển vi xử lí: Xin nhắc đến máy tính bạn, chíp Intel hay ADM bạn bé vi xư lÝ, nã kh«ng cã RAM, ROM,cỉng IO thiết bị ngoại vi on Chip Còn vi điều khiển chứa vi xử lí RAM,ROM, cổng IO, có thiết bị ngoại vi DKS_GROUP www.EmbestDKS.com CuuDuongThanCong.com -3- Số nhà 38 ngõ 36 Lê Thanh Nghị 048684577 https://fb.com/tailieudientucntt DKS_GROUP Microcontroller Training Center 1.3)Sơ đồ chân vi điều khiển 8051: Là IC đóng vỏ dạng DIP có 40 chân, chân có kí hiệu tên có chức nh sau: Chân 40: nối với nguồn nuôI +5V Chân 20: nối với đất(Mass, GND) Chân 29 (PSEN)(program store enable) tín hiƯu ®iỊu khiĨn xt cđa 8051, nã cho phÐp chọn nhớ đợc nối chung với chân OE (Outout Enable) EPROM phép đọc byte chơng trình Các xung tín hiệu PSEN hạ thấp suốt thời gian thi hành lệnh Những m nhị phân chơng trình đợc đọc từ EPROM qua bus liệu đợc chốt vào ghi lƯnh cđa 8051 bëi m lƯnh.(chó ý viƯc đọc đọc lệnh (khác với đọc liệu), VXL đọc bit opcode lệnh đa chúng vào hàng đợi lệnh thông qua Bus địa liệu) Chân 30 (ALE : Adress Latch Enable) tín hiệu điều khiển xuất 8051, cho phép phân kênh bus địa bus liệu Port Chân 31 (EA : Eternal Acess) đợc đa xuống thấp cho phép chọn nhớ m ngoàI 8051 Đối víi 8051 th× : EA = 5V : Chän ROM nội EA = 0V : Chọn ROM ngoại 32 chân lại chia làm cổng vào ra: Vào tức dùng chân để đọc mức logic (0;1 tơng ứng với 0V ; 5V)vào hay xuất mức logic ra(0;1) P0 từ chân 39 32 tơng ứng chân P0_0 P0_7 P1 từ chân tơng ứng chân P1_0 P1_7 P2 từ chân 21 28 tơng ứng chân P2_0 P2_7 P3 từ chân 10 17 tơng ứng chân P3_0 P3_7 DKS_GROUP www.EmbestDKS.com CuuDuongThanCong.com -4- Sè nhµ 38 ngâ 36 Lê Thanh Nghị 048684577 https://fb.com/tailieudientucntt DKS_GROUP Microcontroller Training Center U1 10 11 12 13 14 15 16 17 18 19 20 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 RESET RXD TXD INT0 INT1 T0 T1 WR RD X2 X1 VSS AT89C51 VCC P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 EA/VP ALE/P PSEN P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 P0 P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 P1 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P2 P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7 P3 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 Port's Bit D0 D1 D2 D3 D4 D5 D6 D7 Riªng cỉng có chức mối chân nh hình vẽ: P3.0 RxD : chân nhận liệu nối tiÕp giao tiÕp RS232(Cæng COM ) P3.1 _ TxD : phân truyền liệu nối tiếp giao tiếp RS232 P3.2 _ INTO : interrupt , ngắt P3.3 _ INT1: interrupt 1, ngắt P3.4 _T0 : Timer0 , đầu vào timer0 P3.5_T1 : Timer1, đầu vào timer P3.6_ WR: Write, điều khiển ghi dứ liệu P3.7 _RD: Read , điều khiển đọc liệu Chân 18, 19 nối với thạch anh tạo thành mạch tạo dao động cho VĐK Tần số thạch anh thờng dùng ứng dụng : 11.0592Mhz(giao tiếp với cổng com máy tính) 12Mhz Tần số tối đa 24Mhz Tần số lớn VĐK xử lí nhanh Dao dong cua thach anh S1 P1 S2 S3 S4 S5 S6 P2 chu ki may chu kì máy = 12 dao động thạch anh tần số thạch anh 12 Mhz có nghĩa tần số làm việc chip 1Mhz chu kì 1uS.Lệnh lập trình cho vi điều khiển có lệnh vi điều khiển chu kì máy thực hiƯn DKS_GROUP www.EmbestDKS.com CuuDuongThanCong.com -5- Sè nhµ 38 ngâ 36 Lê Thanh Nghị 048684577 https://fb.com/tailieudientucntt DKS_GROUP Microcontroller Training Center xong,có lệnh nhiều chu kì máy Cụ thể lập trính biết lệnh chu kì máy U1 1.4) Mạch 8051 tối thiểu: Mạch tạo dao ®éng: Thach anh 33p Tu gom 19 18 Tan so 12Mhz X1 X2 33p Tu gom 20 VSS 8051 Ch©n đợc mắc với mạch tạo thành mạch reset Khi reset VĐK hoạt động lại từ đầu.(Ram bị xóa, ghi bị xóa) 5VDC U3 Mạch RESET VCC + 40 C4 CAPACITOR POL RESET R1 R 20 VSS 8051 DKS_GROUP www.EmbestDKS.com CuuDuongThanCong.com -6- Sè nhµ 38 ngõ 36 Lê Thanh Nghị 048684577 https://fb.com/tailieudientucntt DKS_GROUP Microcontroller Training Center Mạch vi điều khiển đơn giản nhất: 5VDC 40 10Kx9 U3 VCC P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 EA/VP RESET 39 38 37 36 35 34 33 32 31 R4 R7 R9 + C3 10uF/25V R1 10K C2 33p 19 18 12Mhz 20 C1 33p X1 X2 GND 8051 Mạch cha có khối bạn dùng IC sau: Sơ đồ chân: nguồn để tạo nguån 5V U6 LM7805/TO VIN VOUT GND Giới thiệu IC ổn áp 7805 : Đầu vào > 7V đầu 5V 500mA Mạch ổn áp: cần cho VĐK nguồn cho VĐK không ổn định treo, không chạy đúng, reset liên tục, chí tẻo chíp Mạch nguồn 12VDC In U1 LM7805/TO VIN VOUT GND C1 104 + C3 10uF/25V C2 104 5VDC Out Mach vi dieu khien co ban DKS_GROUP www.EmbestDKS.com CuuDuongThanCong.com -7- Sè nhµ 38 ngâ 36 Lê Thanh Nghị 048684577 https://fb.com/tailieudientucntt DKS_GROUP Microcontroller Training Center VCC U1 40 5VDC + C3 RESET 10uF/25V R1 10K C2 33p 18 X2 12Mhz C1 33p 19 20 X1 VSS 8051 1.5)Cấu trúc_sơ đồ khối vi điều khiển 8051: EXTERNAL INTERRUPTS TIMER INTERRUPT CONTROL ON - CHIP RAM TIMER I/O PORTS SERIAL PORT COUNTER INPUTS ETC CPU OSC BUS CONTROL P P P P TXD RXD ADDRESS/DATA DKS_GROUP www.EmbestDKS.com CuuDuongThanCong.com -8- Sè nhµ 38 ngâ 36 Lê Thanh Nghị 048684577 https://fb.com/tailieudientucntt DKS_GROUP Microcontroller Training Center Chú ý:Sơ đồ khối bên 8051 có tài nguyền Interrupt, Ram, Timer, Serial prort 1.6)Các thành viên khác họ 8051: Có hai vi điều khiển thành viên khác họ 8051 8052 8031 Bộ vi điều khiển 8052: 8052 có tất đặc tính chuẩn 8051 có thêm 128 byte RAM định thời Hay nói cách khác 8052 có 256 byte RAM định thời Nó có 8K byte ROM Trên chíp thay 4K byte nh 8051 Bảng : So sánh đặc tính thành viên họ 8051 Đặc tính ROM chíp RAM Bộ định thêi 8051 4K byte 128 byte 32 8052 8K byte 256 byte 32 Ch©n vào Cổng nối tiếp Nguồn ngắt Do tất chơng trình viết cho 8051 chạy 8052 nhng điều ngợc lại không đúng.Đặc biệt : Một nhà sản xuất họ 8051 khác Philips Corporation Hang có dải lựa chọn dộng lớn cho vi điều khiển họ 8051 Nhiều sản phẩm h ng đ có kèm theo đặc tính nh chuyển đổi ADC, DAC, chân PWM, cổng I/0 mở rộng Update sản phẩm 8051 trang web nhà sản xuất địa đ có phần giới thiệu Chủ yếu: www.atmel.com 1.7)Ram nội ghi SFR cña 8051: F0 F7 F6 F5 F4 F3 F2 F1 F0 E0 E7 E6 E5 E4 E3 E2 E1 E0 D0 D7 D6 6D 6C 6B 6A 69 68 B8 - - - BC BB BA B9 B8 B0 B7 B6 B5 B4 B2 B1 B0 A8 AF AE AD AC AB AA A9 A8 DKS_GROUP www.EmbestDKS.com CuuDuongThanCong.com -9- B3 Số nhà 38 ngõ 36 Lê Thanh Nghị 048684577 https://fb.com/tailieudientucntt DKS_GROUP Microcontroller Training Center A0 A7 A2 A1 A0 99 98 Không định địa bít 9F 9E 9D 9C 9B 9A 99 98 90 97 91 90 8D 8C 8B 8A 89 88 Không định địa bít Không định địa bít Không định địa bít Không định địa bít Không ®Þnh ®Þa chØ tõng bÝt 8F 8D 8C 8B 8A E Không định địa bít 89 88 81 80 87 83 82 81 80 A6 96 A5 A4 95 94 A3 93 92 Không định địa bít Không định địa bít Không định ®Þa chØ tõng bÝt 87 86 84 83 82 THANH GHI CHƯC NĂNG ĐĂC BIÊT Các ghi SFR có địa nàm 80H FFH địa 80H, địa từ 00 đến 7FH địa nhớ RAM bên 8051 Không phải tất địa chØ tõ 80H ®Õn FFH ®Ịu SFR sư dơng, nhng vị trí ngăn nhớ từ 80H đến FFH cha dùnglà để trữ lập trình viên 8051 không đợc sử dụng Bảng : chức ghi chức đặc biệt SFR DKS_GROUP www.EmbestDKS.com CuuDuongThanCong.com - 10 - Số nhà 38 ngõ 36 Lê Thanh Nghị 048684577 https://fb.com/tailieudientucntt DKS_GROUP Microcontroller Training Center Sau khởi tạo song cho ngắt timer chạy điều xảy ra? Khi bắt đầu cho timer chạy đếm timer đếm dao động thạch anh, 12 dao động thạch anh(1 chu kì máy), đếm timer TL1(Timer Low1) tăng 1,có thển nói timer đếm số chu kì máy Đối với chế độ bít TL1 ghi bít, đếm định thời rõ Nó đếm từ 0, đến 255 Nếu đếm đến 256 đếm tràn, TL1 quay vòng lại 0, cờ ngắt TF1(Timer Flag 1) tự động gán lên 1(bằng phần cứng vi điều khiển) công tắc tự động bật, ngắt xảy Còn với chế độ 16 bít, đếm định thời ghi bít TH1(Timer high 1), cấu hình cho timer hoạt động chế độ 16 bit TL1 tràn đếm sang TH1(TH1 tăng 1) Như ta đếm: 216 chu kì máy( ghi 8+8=16 bít) Chú ý đếm tràn ngắt xảy Nếu ta cần đếm 256 chu kì máy khởi tạo ta cho TL1=0; , khơng muốn đếm 256 chu kì mày mà ta cần đếm 100 thơi ngắt xảy ta fải làm sau: 256-100 = 156; khởi tạo ta gán : TL1=155; đếm từ 155 đến 255 đủ 100 lần ngắt xảy Với yêu cầu Tạo xung tần số 1Khz Chu kì = 1/103 = 0,001 giây= mili giây=1000 uS= 1000 chu kì máy Với 10 cấp tốc độ, tức bạn phải tạo xung 10%, 20%, 30%, 40%, …, 90%, 100% xung sau: 5V 0V T : Chu kì 1000 miro giây Khoảng thời gian xung kéo dài 5V T1 Xung 10% tức T1/ T= 10%=1/10 Xung 20% T2/T=2/10…PWM(Thay đổi độ rộng xung) Bây xin nói phần 7.3) Ngun lí hoạt động: - Xung PWM: Đưa mở transitor, xung với độ rộng lớn transitor mở lâu động quay nhanh hơn,dĩ nhiên khơng tuyến tính Khơng có xung động khơng quay, có xung 100% động quay max.Tuy nhiên xung phải lớn mức đủ khởi động cho động DKS_GROUP www.EmbestDKS.com CuuDuongThanCong.com - 114 - Sè nhµ 38 ngõ 36 Lê Thanh Nghị 048684577 https://fb.com/tailieudientucntt DKS_GROUP Microcontroller Training Center Các đặc tính bạn tham khảo giáo trình máy điện, khí cụ điện, bạn cần thơng số xác Để thay đổi 10 cấp tốc độ với chu kì 1000uS, ta khởi tạo cho ngắt timer: 100 uS ngắt lần Trong hàm ngắt kiểm tra xem ta cần cấp xung % ta gán giá trị cho Cụ thể sau: * Hàm khởi tạo ngắt Dùng ngắt timer 0, 100 uS ngắt lần, dùng chế độ bit tự động nạp lại timer (vì cần đếm đến 100).TL0 nạp 156 Đối với chế độ tràn đếm TL0 quay vòng giá trị 0, sau lại nạp giá trị lưu TH0(giá trị nạp lại), ta cần gán giá trị choTL0 TH0 hàm khởi tạo, chế độ khác 16 bit, timer counter bit, tràn đếm TL0 không nạp lại mà ta phải tự gán lại giá trị cho hàm ngắt void khoitaotimer0(void)// Ham khoi tao { EA=0;// Cam ngat toan cuc TMOD=0x02;// Timer che bit auto reload TH0=0x9B;// Gia tri nap lai 155 doi so hex TL0=0x9B;// Gia tri khoi tao 155 doi so hex ET0=1;// Cho phep ngat timer EA=1;// Cho phep ngat toan cuc TR0=1;// Chay timer bat dau dem so chu ki may } DKS_GROUP www.EmbestDKS.com CuuDuongThanCong.com - 115 - Số nhà 38 ngõ 36 Lê Thanh NghÞ 048684577 https://fb.com/tailieudientucntt DKS_GROUP DKS_GROUP www.EmbestDKS.com CuuDuongThanCong.com Microcontroller Training Center - 116 - Số nhà 38 ngõ 36 Lê Thanh NghÞ 048684577 https://fb.com/tailieudientucntt DKS_GROUP Microcontroller Training Center * Hàm ngắt: unsigned char dem=0;// Khai bao bien dem de dem tu den 10 unsigned char phantramxung;// Bien chua phan tram xung(0 10) void timer0(void) interrupt //Ngat timer { TR0=0;// Dung chay timer TF0=0;// Xoa co, o che co tu duoc xoa,che khac can toi cu viet vao day dem++; if(dem

Ngày đăng: 16/12/2019, 18:42

Từ khóa liên quan

Mục lục

  • 10-12-2009

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan