TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN TỬ VIỄN THÔNG
====o0o====
BÁO CÁO
BÀI TẬP LỚN VI XỬ LÝ
ĐỀ TÀI:
THIẾT KẾ MẠCH ĐIỀU KHIỂN ĐÈN
GIAO THÔNG THÔNG MINH DÙNG ATMEGA 32
Nhóm sinh viên:
1.NGUYỄN THỊ THƯƠNG - 20112253
2. TRẦN THỊ HOÀI THƯƠNG -
20104101
3. NGUYỄN TRỌNG THƯỢNG –
20112261
4. NGUYỄN VĂN THUÂN - 20114638
GVHD: NGUYỄN HOÀNG DŨNG
BTL Kỹ thuật Vi xử lí – 2014 Page 1
BTL Kỹ thuật Vi xử lí – 2014 Page 2
MỤC LỤC
BTL Kỹ thuật Vi xử lí – 2014 Page 3
BẢNG PHÂN CHIA CÔNG VIỆC
STT HỌ TÊN CÔNG VIỆC
1. Nguyễn Thị Thương + Tìm hiểu lý thuyết về AVR.
+ Tìm hiểu về Codevision AVR.
+ Viết code và mô phỏng trên proteus.
+ Viết báo cáo.
2. Trần Thị Hoài Thương + Tìm hiểu lý thuyết về Atmega 32.
+ Xây dựng lưu đồ thuật toán cho
code.
+ Viết code.
một kiểu cấu trúc đang thể hiện ưu thế trong các bộ xử lí.
- Ưu điểm của AVR so với các chip vi điều khiển 8 bits khác (ưu điểm cả về tính ứng
dụng và chức năng):
+ Gần như chúng ta không cần mắc thêm bất kỳ linh kiện phụ nào khi sử dụng
AVR, thậm chí không cần nguồn tạo xung clock cho chip (thường là các khối thạch
anh).
+ Thiết bị lập trình (mạch nạp) cho AVR rất đơn giản, có loại mạch nạp chỉ
cần vài điện trở là có thể làm được. một số AVR còn hỗ trợ lập trình on – chip bằng
bootloader không cần mạch nạp…
+ Bên cạnh lập trình bằng ASM, cấu trúc AVR được thiết kế tương thích C.
+ Nguồn tài nguyên về source code, tài liệu, application note…rất lớn
trên internet.
- Các tính năng của chip AVR:
+ Có thể sử dụng xung clock lên đến 16MHz, hoặc sử dụng xung clock
nội lên đến 8 MHz (sai số 3%).
+ Bộ nhớ chương trình Flash có thể lập trình lại rất nhiều lần và dung
lượng lớn, có SRAM (Ram tĩnh) lớn, và đặc biệt có bộ nhớ lưu trữ lập
trình được EEPROM.
+ Nhiều ngõ vào ra (I/O PORT) 2 hướng (bi-directional).
+ 8 bits, 16 bits timer/counter tích hợp PWM.
+ Các bộ chuyển đối Analog – Digital phân giải 10 bits, nhiều kênh.
+ Chức năng Analog comparator.
+ Giao diện nối tiếp USART (tương thích chuẩn nối tiếp RS-232).
+ Giao diện nối tiếp Two –Wire –Serial (tương thích chuẩn I2C) Master và
Slaver.
+ Giao diện nối tiếp Serial Peripheral Interface (SPI)
- Một số chip AVR thông dụng:
+ AT90S1200, AT90S2313, AT90S2323 and AT90S2343, AT90S2333 and
AT90S4433, AT90S4414 and AT90S8515, AT90S4434 and AT90S8535, AT90C8534.
+ ATtiny10, ATtiny11 and ATtiny12, ATtiny15, ATtiny22, ATtiny26, ATtiny28.
I/O
Registers
Internal
SRAM
External
SRAM
8 bit
Hình 1: Tổ chức bộ nhớ của AVR.
+ Bộ nhớ chương trình (Program memory): Là bộ nhớ Flash lập trình được,
trong các chip AVR cũ (như AT90S1200 hay AT90S2313…) bộ nhớ chương trình chỉ
gồm 1 phần là Application Flash Section nhưng trong các chip AVR mới chúng ta có
thêm phần Boot Flash setion.
+ Bộ nhớ dữ liệu (Data Memory): Đây là phần chứa các thanh ghi quan trọng
nhất của chip, việc lập trình cho chip phần lớn là truy cập bộ nhớ này. Bộ nhớ
dữ liệu trên các chip AVR có độ lớn khác nhau tùy theo mỗi chip, tuy nhiên về
cơ bản phần bộ nhớ này được chia thành 5 phần: register file (32 thanh ghi), I/O
Memory (64 thanh ghi nhập/xuất), internal SRAM, external SRAM, EEPROM.
1.1.3. Hoạt động của AVR.
a. Cấu trúc bên trong của AVR.
Sơ đồ cấu trúc bên trong của AVR như sau:
BTL Kỹ thuật Vi xử lí – 2014 Page 8
S5F
S60
64
End Address
End Addresss
End Addresss
Hình 2: Cấu trúc bên trong AVR
+ ALU – Arithmetic Logic Unit: Bộ ALU hiệu suất cao của AVR hoạt động
trong liên kết trực tiếp với 32 thanh ghi làm việc. Trong 1 chu kì clock, hoạt động tính
I/O Module 2
SPI Unit
Interrupt Unit
I/O Lines
EEPROM
32x8 General
Purpose
Registers
ALU
Control Lines
Instruction
Decoder
Instruction
Register
+ Thanh ghi trạng thái – Status Register: Thanh ghi này chứa kết quả liên quan
đến lệnh xử lý số học gần nhất. Kết quả chứa trong thanh ghi này có thể được sử dụng
để thực hiện các hoạt động có điều kiện. Thanh ghi trạng thái không tự động lưu lại khi
nhảy vào interrupt và cũng không tự động phục hồi (restore) khi quay về, cần thực hiện
điều này bằng phần mềm.
• Bit 7 – I: Global Interrupt Enable
Bit cho phép ngắt toàn cục. Bit toàn cục này sẽ bị xóa tự động bằng phần cứng
khi có ngắt nào đó xảy ra. Và nó được set trở lại tự động bằng phần cứng khi lệnh
RETI (lệnh quay về từ chương trình ngắt) được thực thi.
• Bit 6 – T: Bit Copy Storage
• Bit 5 – H: Half Carry Flag
• Bit 4 – S: Sign Bit, S = N + V
• Bit 3 – V: Two’s Complement Overflow Flag
• Bit 2 – N: Negative Flag
• Bit 1 – Z: Zero Flag
• Bit 0 – C: Carry Flag
liên kết trực tiếp với khối xử lý số học và logic (ALU) cho phép 2 thanh ghi độc lập
được truy cập trong một lệnh đơn trong 1 chu kỳ đồng hồ. Kết quả là tốc độ nhanh gấp
10 lần các bộ vi điều khiển CISC thường.
Dưới đây là hình vẽ sơ đồ chân của VĐK At mega32 :
Hình 3 :Sơ đồ chân ATmega32
- ATmega32 gồm có 4 port : port A, port B, port C và port D.
+ Port A gồm 8 chân từ PA0 đến PA7: là cổng vào tương tự cho chuyển đổi
tương tự sang số. Nó cũng là cổng vào/ra hai hướng 8 bít trong trường hợp không sử
BTL Kỹ thuật Vi xử lí – 2014 Page 12
sụng làm cổng chuyển đổi tương tự, có điện trở nối lên nguồn dương bên trong. Port A
cung cấp đường địa chỉ dữ liệu vào/ra theo kiểu hợp kênh khi dùng bộ nhớ bên ngoài.
+ Port B gồm 8 chân từ PB0 đến PB7: là cổng vào/ra hai hướng 8 bít, có điện
trở nối lên nguồn dương bên trong. Port B cung cấp các chức năng ứng với các tính
năng đặc biệt của Atmega32.
+ Port C gồm các chân từ PC0 đến PC7: 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 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 bít, 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 (chân số 10 và chân số 30):điện áp nguồn nuôi của ATmega32 từ
4.5V đến 5.5V.
- Chân Reset (chân số 9): lối vào đặt lại.
- Chân GND (chân số 11 và chân 31): chân nối mát.
- Chân XTAL1, XTAL2 là hai chân nối thạch anh ngoài (chân số 12 và chân số 13).
ATmega32 sử dụng thạch anh ngoài là 8MHz.
- Chân ICP(chân số 20): 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(chân số 18): 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 số 17): chân ngõ vào ngắt.
BTL Kỹ thuật Vi xử lí – 2014 Page 13
động.
+ Chế độ standby, bộ tạo dao động (thuỷ tinh thể/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.
- Thiết bị được sản xuất sử dụng công nghệ bộ nhớ cố định mật độ cao của Atmel. Bộ
nhớ On-chip ISP Flash cho phép lập trình l ại vào hệ thống qua giao diện SPI bởi bộ
lập trình bộ nhớ cố định truyền thống hoặc bởi chương trình On-chip Boot chạy trên
nhân AVR. Chương trình boot có thể sử dụng bất cứ giao điện nào để download
chương trình ứng dụng trong bộ nhớ Flash ứng dụng. Phần mềm trong vùng Boot Flash
sẽ tiếp tục chạy trong khi vùng Application Flash được cập nhật, cung cấp thao tác
Read-While-Write thực sự. Bằng việc kết hợp 1 bộ 8-bit RISC CPU với In-System
Self-Programmable Flash trong chỉ nguyên vẹn 1 chip ATmega32 là một bộ vi điều
BTL Kỹ thuật Vi xử lí – 2014 Page 15
khiển mạnh có thể cung cấp giải pháp có tính linh động cao, giá thành rẻ cho nhiều ứng
dụng điều khiển nhúng.
II. Thiết kế mạch.
II.1. Phân tích yêu cầu, nhiệm vụ của đề tài.
2.1.1. Vai trò của đèn giao thông trong cuộc sống ngày nay.
- Trong hệ thống giao thông hiện nay ở nước ta, vấn đề về an toàn giao thông và ùn tắc
giao thông tại các điểm giao nhau là vấn đề hết sức cấp bách cần được giải quyết. Các
phương tiện hướng dẫn giao thông tại các điểm nút này đóng vai trò rất quan trọng. Hệ
thống đèn giao thông là công cụ điều khiển giao thông công cộng thực tế và hiệu quả
có vai trò rất lớn trong việc đảm bảo an toàn và giảm thiểu tai nạn giao thông, góp
phần hạn chế ùn tắc, định hướng cho các phương tiện di chuyển một cách an toàn. Vì
vậy đèn giao thông hết sức cần thiết cho cuộc sống hiện nay.
II.1.2. Phân tích thiết kế.
- Xây dựng hệ thống điều khiển giao thông từ 2 hướng, ứng dụng tại ngã tư nơi giao
nhau của hai đường một chiều.
- Chế độ hoạt động hàng ngày:
+ Chế độ Auto : Chế độ hoạt động mặc định với thời gian các đèn cài đặt sẵn
tác dụng tao xung nhịp với tần số 16
MHz cho vi điều khiển hoạt động.
Hai đầu này được nối vào hai chân
XTAL1 và XTAL2 của vi điều
khiển.
II.2.4. Khối quét led và hiển thị led 7 thanh.
Các chân của led 7 thanh được nối thông qua một điện trở thanh để nối với IC vi
điều khiển. Việc giải mã nhị phân sang led 7 thanh đều được thực hiện trên vi điều
khiển. Led 7 thanh được nối theo kiểu anode chung, nghĩa là: chân E của transistor
được nối lên nguồn. Led hoạt động với dòng tối thiểu là 20mA. Với các chân điều
BTL Kỹ thuật Vi xử lí – 2014 Page 18
Chọn chế độ SET của switch 3 chân để
cài đặt chế độ hoạt động.
Chế độ tự động khi hoạt động của đèn
giao thông: ban đầuled xanh 1 sáng 25s,
led đỏ 2 sáng 25s, led vàng 2 sáng 5s rồi
chuyển sang led đỏ 1 sáng 25s, led vàng
1 sáng 5s, led xanh 2 sáng 25s. thời gian
đèn đỏ sáng bằng tổng thời gian đèn
xanh và đèn vàng sáng.
Chế độ cài đặt cho các đèn theo ý muốn:
+ dùng nút UP và DOWN để tăng giảm
thời gian sáng của các led.
+ dùng nút NIGHT để chọn chế độ ban
đêm (chỉ có đèn vàng nháy).
+ nút MODE dùng để chọn chế độ.
khiển hoạt động thông qua các transistor PNP điều khiển hoạt động ở chế độ bão hòa
cung cấp dòng cho LED sáng. Transistor PNP được nối với port (P2) của vi điều khiển
có chức năng khuếch đại dòng cho led hoạt động bình thường.
II.2.5. Khối điều khiển.
- Khi mô phỏng trên phần mềm Proteus, mạch chạy ổn định và đúng yêu cầu của đề tài.
- Do trong quá trình thiết kế layout để đặt mạch in và hàn mạch, chúng em đã mắc phải
một số lỗi, nên mạch cứng trên thực tế đã không chạy như mô phỏng.
III. Lập trình và kết quả mô phỏng.
III.1. Lập trình.
3.1.1. Giới thiệu về CodeVisionAVR.
- Phần mềm được chúng em sử dụng để lập trình là CodeVisionAVR 2.05.0.
CodeVisionAVR là công cụ phần mềm sử dụng cho việc soạn thảo và biên dịch
chương trình dành cho các vi điều khiển thuộc họ AVR bằng ngôn ngữ C. Phần mềm
được viết chuyên nghiệp hướng tới người sử dụng bởi sự đơn giản, sự hỗ trợ cao của
các thư viện có sẵn.
- CodeVisionAVR bao gồm các thành phần sau:
BTL Kỹ thuật Vi xử lí – 2014 Page 23
+ Trình biên dịch ngôn ngữ C cho AVR;
+ Trình biên dịch hợp ngữ cho AVR;
+ Các máy phát điện của mã chương trình ban đầu cho phép khởi tạo thiết bị
ngoại vi;
+ Module giao tiếp với debug board STK-500;
+ Module tương tác với các lập trình viên;
+ Terminal.
- CodeVisionAVR cho tập tin đầu ra là:
+ HEX, BIN hoặc tập tin ROM để nạp vào thiết bị thông qua lập trình;
+ COFF - file có chứa thông tin cho trình gỡ lỗi;
+ OBJ - file.
III.1.2.Thuật toán và code chương trình.
Lưu đồ thuật toán:
BTL Kỹ thuật Vi xử lí – 2014 Page 24
BTL Kỹ thuật Vi xử lí – 2014 Page 25
Bật xanh1; đỏ 2