Đồ án tốt nghiệp
Lời nói đầu
Ngày nay kỹ thuật vi điều khiển đã trở nên quen thuộc trong các ngành kỹ thuật điện
tử. Các bộ vi điều khiển có khả năng xử lý nhiều hoạt động phức tạp mà chỉ cần một chip vi
mạch nhỏ, nó đã thay thế các tủ điều khiển lớn và phức tạp bằng những mạch điện gọn nhẹ,
dễ dàng thao tác sử dụng.
Vi điều khiển không những góp phần vào kỹ thuật điều khiển mà còn góp phần to lớn
vào việc phát triển thông tin. Chính vì các lý do trên, việc tìm hiểu, khảo sát vi điều khiển là
điều mà các sinh viên chuyên ngành điện tử phải hết sức quan tâm. Đó chính là một nhu cầu
cần thiết và cấp bách đối với mỗi sinh viên, đề tài này được thực hiện chính là đáp ứng nhu
cầu đó.
Các bộ điều khiển sử dụng vi điều khiển tuy đơn giản nhưng để vận hành và sử dụng
đươc lại là một điều rất phức tạp. Phần công việc xử lý chính vẫn phụ thuộc vào con người,
đó chính là chương trình hay phần mềm. Nếu không có sự tham gia của con người thì hệ
thống vi điều khiển cũng chỉ là một vật vô tri. Do vậy khi nói đến vi điều khiển cũng giống
như máy tính bao gồm 2 phần là phần cứng và phần mềm.
Để tìm hiểu bộ vi điều khiển một cách khoa học và mang lại hiệu quả cao làm nền tản
cho việc tìm hiểu sâu hơn những hệ thống tối tân hơn. Việc trang bị những kiến thức căn
bản về vi điều khiển cho sinh viên là hết sức cần thiết. Xuất phát từ thực tiển này chúng em
đã đi đến quyết định Thiết kế mạch KIT thực hành cho vi điều khiển AVR nhằm đáp
ứng nhu cầu ham muốn học hỏi của bản thân và giúp cho các bạn sinh viên dễ tiếp cận và
tìm hiểu sâu hơn về vi điều khiển.
Trong quá trình thực hiện đề tài vẫn còn nhiều khiếm khuyết, nhóm chúng em mong
nhận được nhiều ý kiến đóng góp từ thầy cô và các bạn. Chúng em chân thành cảm ơn các
thầy cô trong Viện Điện Tử – Viễn Thông, ĐH Bách Khoa Hà Nội, đặc biệt là TS Nguyễn
Thị Kim Thoa đã giúp đỡ chúng em rất nhiều trong quá trình thực hiện đồ án và anh
Nguyễn Trường Thế đã góp ý giúp chúng em hoàn thiện sản phẩm này.
Em xin chân thành cảm ơn!
1
Đồ án tốt nghiệp
Mục lục
Đồ án tốt nghiệp
Khối LED đơn : 37
Khối Led ma trận: 37
Khối giao tiếp PC: 38
Khối đồng hồ thời gian thực: 39
Khối Loa: 40
Khối Rơle: 41
Khối động cơ DC 41
4 Sơ đồ nguyên lý toàn mạch 43
5. Mạch in PCB 44
6. Giới thiệu một vài linh kiện được lựa chọn 46
6.1: IC MAX-232 46
6.2: Cảm biến nhiệt độ LM35 46
6.3: Tụ điện 47
6.4: Transistor 47
6.5: Điện trở 49
6.6: Ngoài ra còn 1 số loại linh kiện khác 49
CHƯƠNG 3: MỘT SỐ BÀI THỰC HÀNH 51
Bài 1. Chương trình hiển thị led đơn 51
Bài 2. Chương trình hiển thị led 7 thanh 52
Bài 3. Chương trình hiển thị led ma trận 53
Bài 4. Chương trình hiển thị LCD 53
Bài 5. Chương trình đọc thời gian từ DS1307 hiển thị LCD 54
Bài 6 Chương trình dùng phím bấm điều khiển Led đơn 55
CHƯƠNG 4: KẾT LUẬN 57
5.1. Ưu điểm của đề tài 57
5.2. Nhược điểm của đề tài 57
5.3. Hướng giải quyết nhược điểm và phát triển đề tài 57
3
Đồ án tốt nghiệp
4
Đồ án tốt nghiệp
• Các cổng vào/ra tương tự, vào/ra số, các cổng ghép nối
ngoại vi mở rộng lập trình được.
• Giao tiếp bàn phím.
• Hiển thị LCD.
• Hiển thị trạng thái bằng đèn LED .
• Hiển thị LED 7 thanh.
• Hiển thị ma trận LED (8x8).
• Khối thời gian thực.
• Khối điều khiển động cơ DC.
• Khối chuyển đổi ADC, DAC.
• Các đầu vào xung.
• Khối âm thanh
• Giao tiếp với máy tính PC qua cổng truyền thông nối tiếp
(COM) và song song (LPT).
+ Các bài thí nghiệm thực hiện trên thiết bị:
• Các bài cơ bản: Giúp sinh viên làm quen với hệ lệnh của chip vi điều
khiển, nhập các lệnh và chạy chương trình để xem kết quả thực hiện của các lệnh
đó.
• Các bài nâng cao: Gồm các bài thí nghiệm phức tạp hơn thực hiện việc
điều khiển các thành phần ngoại vi trên thiết bị. Các bài thí nghiệm thực hiện việc
điều khiển một quá trình tương tự hoặc số, ví dụ: Điều khiển hiển thị đèn LED,
LED 7 thanh, ma trận LED, điều khiển vào/ra số - tương tự, điều khiển động cơ
bước
+ Thực hiện các bài thí nghiệm:
• Các bài tập mẫu xây dựng trước: Đi kèm với sản phẩm phần cứng là
một hệ thống các bài tập mẫu được xây dựng cho các ứng dụng trên thiết bị như
điều khiển các thành phần ngoại vi của thiết bị, điều khiển vào/ra tương tự - số
Sinh viên có thể đọc hướng dẫn sử dụng và thực hiện các bài tập mẫu này trên
khiển, khối hiển thị, điều khiển máy in, hối đồng hồ và lịch là những linh kiện nằm ở bên
ngoài được nối vào bộ vi xử lí.
Mãi đến năm 1976 công ty INTEL (Interlligen-Elictronics). Mới cho ra đời bộ vi điều
khiển đơn chip đầu tiên trên thế giới với tên gọi 8048. Bên cạnh bộ xử lí trung tâm 8048
còn chứa bộ nhớ dữ liệu, bộ nhớ chương trình, bộ đếm và phát thời gian các cổng vào và ra
Digital trên một chip.
Các công ty khác cũng lần lược cho ra đời các bộ vi điều khiển 8bit tương tự như 8048
và hình thành họ vi điều khiển MCS-48 (Microcontroller-sustem-48).
Đến năm 1980 công ty INTEL cho ra đời thế hệ thứ hai của bộ vi điều khiển đơn chip với
tên gọi 8051. Và sau đó hàng loạt các vi điều khiển cùng loại với 8051 ra đời và hình thành
họ vi điều khiển MCS-51 .
Đến nay họ vi điều khiển 8 bit MCS51 đã có đến 250 thành viên và hầu hết các công
ty hàng dẫn hàng đầu thế giới chế tạo. Đứng đầu là công ty INTEL và rất nhiều công ty
khác như : AMD, SIEMENS, PHILIPS, DALLAS, OKI …
* Một số loại vi điều khiển có trên thị trường:
- VĐK MCS-51: 8031, 8032, 8051, 8052, . . .
- VĐK ATMEL: 89Cxx, AT89Cxx51. .
- VĐK AVR AT90Sxxxx, Atmega8/16/32/64,
- VĐK PIC 16C5x, 17C43. . .
6
Đồ án tốt nghiệp
* Cấu trúc tổng quan của vi điều khiển:
CPU:
Là trái tim của hệ thống. Là nơi quản lí tất cả các hoạt động của VĐK. Bên trong
CPU gồm:
+ ALU là bộ phận thao tác trên các dữ liệu
+ Bộ giải mã lệnh và điều khiển, xác định các thao tác mà CPU cần thực hiện
+ Thanh ghi lệnh IR, lưu giữ opcode của lệnh được thực thi
+Thanh ghi PC, lưu giũ địa chỉ của lệnh kế tiếp cần thực thi
+ Một tập các thanh ghi dùng để lưu thông tin tạm thời
a - tinyAVRs :
1-8 kB bộ nhớ chương trình.
8-32-chân.
Hạn chế các thiết bị ngoại vi.
b – megaAVRs:
4-256 kB bộ nhớ chương trình.
28-100-chân.
Mở rộng tập lệnh.
Nhiều thiết bị ngoại vi.
c – XmegaAVRs:
16-256 kB bộ nhớ chương trình.
44-100-chân.
mở rộng các thiết bị như DMA, "Event System", và hỗ trợ mã hóa .
Mở rộng thiết bị ngoại vi với DACs.
d - Application specific AVRs:
MegaAVRs với các thành phần đặc biệt không có trong các sản phẩm khác của AVR
như là LCD controller, USB controlller, PWN, CAN, v. v. . .
FPSLIC (Field Programmable System Level Integrated Circuit), một nhân AVR với
một FPGA. The FPSLIC dùng SRAM cho chương trình AVR, không giống như các dòng
AVR khác. Do đó FPSLIC có thể chạy với xung nhịp 50MHz.
8
Đồ án tốt nghiệp
Một số chip AVR thông dụng
AT90S1200
AT90S2313
AT90S2323 and AT90S2343
AT90S2333 and AT90S4433
AT90S4414 and AT90S8515
AT90S4434 and AT90S8535
AT90C8534
10
Đồ án tốt nghiệp
2: CẤU TẠO BÊN TRONG
2. 1 Cấu trúc bên trong
11
Đồ án tốt nghiệp
Lõi AVR bao gồm 1 tập hợp các lệnh cài đặt với 32 thanh ghi chung đa năng . Tất cả
32 thanh ghi thì được nối trực tiếp với khối số học và logic (ALU ) nó cho phép 2 thanh ghi
độc lập được truy cập trong 1 lệnh thực thi trong một chu kì quét xung đồng hồ . kết quả
của cấu trúc này là có nhiều kiểu chế độ hiệu quả hơn trong khi vẫn đạt được tốc độ tối đa
nhanh hơn 10 lần các bộ vi sử lý CISC thông thường .
Atmega 32 cung cấp các tính năng sau đây :
+ Hiệu suất cao , tiết kiệm điện
+ Hoàn thiện cấu trúc RISC
- 131 lệnh hiệu quả - thực thi tất cả các chu kì đồng hồ đơn
- 32 * 8 thanh ghi chung đa năng + các thanh ghi điều khiển ngoại vi
- Đầy đủ các quá trình điều khiển tĩnh
- Nâng lên 16 MIPS dữ liệu tại 16 MHz
- Chip 2 nhân
+ Độ bền , sức chịu đựng cao , không thay đổi phân vùng nhớ
- 32K Bytes bộ nhở Flash có thể lập trình được trong hệ thống
- 1K Bytes EEPROM
- 1K Bytes bộ nhớ SRAM bên trong
- Chu kì ghi/xóa : 10000 Flash / 100000 EEPROM
- Độ bền dữ liệu 20 năm ở 85 độ / 100 năm ở 25 độ
+ Đặc điểm ngoại vi
- 2 bộ Timer /counter 8 bit với bộ đếm gộp trước riêng biệt và chế độ so
sánh mẫu
- 1 bộ timer /counter 16 bit mở rộng với bộ đếm gộp trước chế độ so
sánh mẫu và chế độ thu thập ( bắt dữ liệu )
lên nguồn dương bên trong. Port C cung cấp các địa chỉ lối ra khi sử dụng bộ nhớ bên
ngoài và đồng thời cung cấp ứng với các tính năng đặc biệt của Atmega32.
Port D gồm các chân từ PD0 đến PD7:là cổng vào/ra hai hướng 8 bit, có điện trở nối
lên nguồn dương bên trong. Port D cung cấp các chức năng ứng với các tính năng đặc biệt
của Atmega32.
Chân nguồn Vcc: điện áp nguồn nuôi của Atmega32 từ 4. 5v đến 5. 5v.
Chân Reset (chân số 4): reset trạng thái chip
Chân GND: chân nối đất.
Chân XTAL1,XTAL2 là hai chân nối thạch anh ngoài (chân số 7 và chân số
8): Atmega32 hỗ trợ sử dụng thạch anh ngoài lên tới16MHz (trong đồ án chúng
em sử dụng thạch anh 8MHz)
Chân ICP: là chân vào cho chức năng bắt tín hiệu cho bộ định thời/đếm 1.
Chân OC1B: là chân ra cho chức năng so sánh lối ra bộ định thời/đếm 1.
Chân INT1: chân ngõ vào ngắt.
ATmega32 có các chế độ tiết kiệm năng lượng như sau:
Chế độ nghỉ (Idle) CPU trong khi cho phép bộ truyền tin nối tiếp đồng
bộ USART, giao tiếp 2 dây, chuyển đổi A/D, SRAM, bộ đếm bộ định
thời, cổng SPI và hệ thống các ngắt vẫn hoạt động.
Chế độ Power-down lưu giữ nội dung của các thanh ghi nhưng làm
đông lạnh bộ tạo dao động, thoát khỏi các chức năng của chip cho đến
khi có ngắt ngoài hoặc là reset phần cứng.
Chế độ Power-save đồng hồ đồng bộ tiếp tục chạy cho phép chương
trình sử dụng giữ được đồng bộ thời gian nhưng các thiết bị còn lại là
ngủ.
Chế độ ADC Noise Reduction dừng CPU và tất cả các thiết bị còn lại
ngoại trừ đồng hồ đồng bộ và ADC, tối thiểu hoá switching noise trong
khi ADC đang hoạt động.
Chế độ standby, bộ tạo dao động (thạch anh/bộ cộng hưởng) chạy trong khi các thiết bị còn
lại ngủ. Các điều này cho phép bộ vi điều khiển khởi động rất nhanh trong chế độ tiêu thụ
công suất thấp.
2.3.4. Các thanh ghi chức năng chung
Hình 1.3 Thanh ghi chức năng chung
Tiệp ghanh ghi ( register file ) : Tiệp 32 thanh ghi đa chức năng ( $0000 -
$001F )
đã được nói ở trên, ngoài chức năng là các thanh ghi đa chức năng, thì các thanh
ghi từ R26 tới R31 từng đôi một tạo thành các thanh ghi 16 bit X, Y, Z được dùng làm
con trỏ trỏ tới bộ nhớ chương trình và bộ nhớ dữ liệu .Thanh ghi con trò X, Y có thể
dùng làm con trỏ trỏ tới bộ nhớ dữ liệu, còn thanh ghi Z có thể dùng làm con trỏ trỏ
tới bộ nhớ chương trình. Các trình biên dịch C thường dùng các thanh ghi con trỏ này
để quản lí Data stack của chương trình C.
16
Đồ án tốt nghiệp
Hình 1.4 Chức năng con trỏ của các thanh ghi R26 –R31
2.3.5. Con trỏ ngăn xếp (SP)
Là một thanh ghi 16 bit nhưng cũng có thể được xem như hai thanh ghi chức
năng đặc biệt 8 bit. Có địa chỉ trong các thanh ghi chức năng đặc biệt là $3E (Trong
bộ nhớ RAM là $5E). Có nhiệm vụ trỏ tới vùng nhớ trong RAM chứa ngăn xếp.
Hình 1.5 Thanh ghi con trỏ ngăn xếp
Khi chương trình phục vu ngắt hoặc chương trình con thì con trỏ PC được lưu
vào ngăn xếp trong khi con trỏ ngăn xếp giảm hai vị trí. Và con trỏ ngăn xếp sẽ giảm 1
khi thực hiện lệnh push. Ngược lại khi thực hiện lệnh POP thì con trỏ ngăn xếp sẽ tăng
1 và khi thực hiện lệnh RET hoặc RETI thì con trỏ ngăn xếp sẽ tăng 2. Như vậy con
trỏ ngăn xếp cần được chương trình đặt trước giá trị khởi tạo ngăn xếp trước khi một
chương trình con được gọi hoặc các ngắt được cho phép phục vụ. Và giá trị ngăn xếp
ít nhất cũng phải lơn hơn hoặc bằng 60H (0x60) vì 5FH trỏ lại là vùng các thanh ghi.
17
Đồ án tốt nghiệp
B : VI ĐIỀU KHIỂN 8051
1: GIỚI THIỆU
Lịch sử của 8051
* Các thành viên khác của họ 8051
Đặc tính 8051 8052 8031
ROM trên chíp 4K byte 8K byte OK
RAM 128 byte 256 byte 128 byte
Bộ định thời 2 3 2
Chân vào ra 32 32 32
Cổng nối tiếp 1 1 1
Nguồn ngắt 6 8 6
19
Đồ án tốt nghiệp
2: CẤU TẠO BÊN TRONG 8051
2. 1 Cấu trúc bên trong
Phần chính của vi điều khiển 8051 là bộ xử lý trung tâm (CPU: central processing unit) bao
gồm :
- Các thanh ghi chức năng đặc biệt (SFR)
- Đơn vị logic học (ALU : Arithmetic Logical Unit ) cổng vào ra (I/O)
- Bộ nhớ chương trình và bộ nhớ dữ liệu.
Đơn vị xử lý trung tâm nhận trực tiếp xung từ bộ dao động, ngoài ra còn có khả năng
đưa một tín hiệu giữ nhịp từ bên ngoài.
Chương trình đang chạy có thể dừng lại nhờ một khối điều khiển ngắt ở bên trong.
Các nguồn ngắt có thể là: các biến cố ở bên ngoài, sự tràn bộ đếm định thời, hoặc cũng có
thể là giao diện nối tiếp. Hai bộ định thời 16 bit động như một bộ đếm.
20
Đồ án tốt nghiệp
Các c ng (port0, port1, port2, port3 ). S d ng vào m c ích i u khi n. ổ ử ụ ụ đ đ ề ể
Ở cổng 3 cũng có thêm các đường dẫn điều khiển dùng để trao đổi với bộ nhớ
bên ngoài, hoặc để đầu nối giao diện nối tiếp,cũng như các đường ngắt dẫn bên ngoài.
2. 2 Cấu tạo chân
Tùy theo khả năng (về kinh tế, kỹ thuật, …) mà các nhà sản xuất các sản phẩm ứng
dụng cụ thể chọn một trong 3 kiểu chân do ATMEL đưa ra.
điện trở nội và có thể dùng làm đầu vào. Khi vai trò là cổng nhập, những chân của port 3 bị
kéo xuống thấp sẽ đổ dòng vì có nội trở kéo lên.
+ Chân RESET (RST) (chân 9) : là ngõ vào Reset dùng để thiết
lập trạng thái ban đầu cho vi điều khiển. Hệ thống sẽ được thiết lập lại
các giá trị ban đầu nếu ngõ này ở mức 1 tối thiểu 2 chu kì máy
+ ALE/PROG (Address Latch Enable) (chân 30): ALE là xung
xuất cho phép chốt byte địa chỉ thấp khi truy cập bộ nhớ ngoài. Chân
này còn là ngõ vào của xung lập trình (PROG) khi lập trình Flash. Trong
hoạt động bình thường, ALE được phát xung với tần số 1/6 tần số dao động on-chip và có
thể được dùng như xung thời gian chuẩn bên ngoài. Tuy nhiên, cần chú ý là một xung ALE
sẽ bị mất khi truy cập bộ nhớ ngoài.
+ PSEN (Program Store Enable) (chân 29): PSEN là xung strobe báo hiệu việc đọc
bộ nhớ chương trình ngoài, PSEN tích cực hai lần (mức thấp) mỗi chu kì máy, ngoại trừ hai
xung PSEN bị mất khi truy xuất dữ liệu ngoài. Khi thi hành chương trình trong RAM nội,
PSEN sẽ ở mức thụ động (mức cao).
+ EA/V
PP
(External Access) (chân31) : Chân EA dùng để xác định chương trình thực
hiện được lấy từ ROM nội hay ROM ngoại. Khi EA nối với logic 1(+5V) thì thực hiện
chương trình lấy từ bộ nhớ nội, logic 0(0V) thì thực hiện chương trình lấy từ bộ nhớ ngoại.
+ XTAL1 và XTAL2 (chân 18,19) : được sử dụng để nhận nguồn xung clock từ bên
ngoài để hoạt động, thường được ghép nối với thạch anh và các tụ để
tạo nguồn xung clock ổn định. Tần số tối đa 24Mhz. Tần số càng
lớn VĐK xử lý cành nhanh
24
Đồ án tốt nghiệp
2. 3. Cấu trúc Port In/Out
Sơ đồ cấu trúc bên trong của chân Port xuất/nhập như sau:
Việc ghi đến 1 chân của Port sẽ nạp dữ liệu vào bộ chốt của Port, ngõ ra Q của bộ chốt
điều khiển một Transistor trường và Transistor này với chân của Port. Khả năng phân chia