Tải bản đầy đủ (.doc) (62 trang)

Thiết kế và chế tạo đèn quảng cáo 8 màu sử dụng vi điều khiển ATTINY2313

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (9.29 MB, 62 trang )

ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG

ĐỒ ÁN TỐT NGHIỆP
Chuyên ngành Công nghệ thông tin

Đề tài:
THIẾT KẾ VÀ CHẾ TẠO ĐÈN QUẢNG CÁO 8 MÀU
SỬ DỤNG VI ĐIỀU KHIỂN ATTINY2313

Sinh viên thực hiện : Trịnh Quốc Hùng
Lớp : CNTT – K1 HÀ NAM
Giáo viên hướng dẫn: Phạm Đức Long
HÀ NAM 12 - 2014


Lời cảm ơn
Trước tiên em xin gửi lời cảm ơn chân thành sâu sắc tới các thầy cô
giáo trong trường Đại học Công nghệ thông tin và truyền thông – Đại
học Thái Nguyên đã tận tình giảng dạy, truyền đạt cho em những kiến
thức, kinh nghiệm quý báu trong suốt thời gian qua.
Đặc biệt em xin gửi lời cảm ơn đến thầy Phạm Đức Long, thầy đã
tận tình giúp đỡ, trực tiếp chỉ bảo, hướng dẫn em trong suốt quá trình làm
đồ án tốt nghiệp. Trong thời gian làm việc với thầy, em không những tiếp
thu thêm nhiều kiến thức bổ ích mà còn học tập được tinh thần làm việc,
thái độ nghiên cứu khoa học nghiêm túc, hiệu quả, đây là những điều rất
cần thiết cho em trong quá trình học tập và công tác.

Lời cam đoan của sinh viên:
Tôi – Trịnh Quốc Hùng - cam kết Đồ án tốt nghiệp là công trình nghiên cứu
của bản thân tôi dưới sự hướng dẫn của ThS Phạm Đức Long. Các kết quả nêu


trong Đồ án tốt nghiệp là trung thực, không phải là sao chép toàn văn của bất kỳ
công trình nào khác.

Hà Nam, ngày 10 tháng 12 năm 2014
Sinh viên

Trịnh Quốc Hùng

2


MỤC LỤC
CHƯƠNG 1: MỤC ĐÍCH VÀ YÊU CẦU CỦA VIỆC THIẾT KẾ VÀ CHẾ TẠO ĐÈN QUẢNG
CÁO 8 MÀU SỬ DỤNG VI ĐIỀU KHIỂN...................................................................................................4

1.1 Sơ lược về các loại LED quang báo.....................................................4
1.2 Mục đích, ý nghĩa đề tài.......................................................................4
.......................................................................................................................5
CHƯƠNG 2:GIỚI THIỆU CÁC THÀNH PHẦN CẤU THÀNH SỬ DỤNG.........................................6

2.1 Vi điều khiển ATTiny2313....................................................................6
2.1.1 CPU..............................................................................................7
2.1.2 Cấu trúc bộ nhớ............................................................................9
2.1.3 Cấu trúc ngắt của ATTiny2313...................................................10
2.1.4 Các cổng vào ra (I/O)................................................................12
2.1.5 Bộ định thời 8Bit TIMER/COUNTER 0....................................16
2.1.6 Bộ định thời 16Bit TIMER/COUNTER1...................................20
2.1.7 USI (Universal Serial Interface).................................................22
2.2 Các linh kiện khác...............................................................................24
2.2.1 EEPROM 25LC512....................................................................24

2.2.2 IC 74HC595...............................................................................27
2.2.3 LED RGB..................................................................................28
2.2.4 Công tắc từ (Cảm biến)..............................................................29
CHƯƠNG 3:THIẾT KẾ HỆ THỐNG.........................................................................................................30

3.1 Hệ điều khiển.......................................................................................30
3.1.1 Nguyên tắc hiển thị hình ảnh......................................................30
3.1.2 Nguyên tắc pha màu:..................................................................31
3.1.3 Phân hoạch bộ nhớ cho Chip ATTiny2313.................................31
3.1.4 Phân hoạch bộ nhớ cho EEPROM 25LC512.............................31
3.2 Sơ đồ nguyên lý....................................................................................32
3.1.2 Mạch hiển thị..............................................................................32
3.1.3 Mạch giao tiếp với máy tính (mạch nạp)....................................37
3.1.4 Mạch cấp nguồn cho mạch hiển thị............................................37
3.2 Phần mềm thiết kế dữ liệu hiển thị....................................................39
3.2.1 Nhiệm vụ các phần mềm............................................................39
3.2.2 Các thuật toán.............................................................................40
CHƯƠNG 4: HOẠT ĐỘNG CỦA HỆ THỐNG........................................................................................54

4.1 Kết quả thực hiện................................................................................54
Mạch hiển thị.......................................................................................54
Mạch USB giao tiếp với máy tính.......................................................55
4.2 Hướng phát triển.................................................................................61
Kết luận......................................................................................................61
Tài liệu tham khảo....................................................................................62

3


Chương 1: MỤC ĐÍCH VÀ YÊU CẦU CỦA VIỆC THIẾT

KẾ VÀ CHẾ TẠO ĐÈN QUẢNG CÁO 8 MÀU SỬ DỤNG
VI ĐIỀU KHIỂN
1.1 Sơ lược về các loại LED quang báo
 LED vẫy: Các LED được sắp xếp theo chữ hoặc hình cố định trước
và được đặt trong hộp mica. Các LED được điều khiển theo cụm và
nhấp nháy theo hiệu ứng của người làm biển quảng cáo.
Ưu điểm: Dễ thi công lắp đặt, không tốn nhiều không gian.
Nhược điểm: Khi muốn thay đổi nội dung phải làm biển quảng cáo
khác, chỉ thể hiện được một nội dung duy nhất trên biển quảng cáo. Sử
dụng nhiều LED nên tiêu thụ nhiều năng lượng.
 LED Matrix 1 màu: Được sản xuất dưới dạng các module có sẵn,
nếu muốn tăng kích thước phải ghép các module lại với nhau. Nội
dung quảng cáo được lưu trong bộ nhớ Flash của vi điều khiển.
Ưu điểm: Nội dung có thể thay đổi được, có thể làm được các hiệu ứng
hiển thị khác nhau.
Nhược điểm: Vì bộ nhớ nhỏ nên khả năng lưu trữ thấp, thường chỉ giới
hạn trong một câu có số lượng từ cố định. Giá thành cũng khá đắt. Sử
dụng nhiều LED nên tiêu thụ nhiều năng lượng.
 Màn hình Full color: Được sản xuất dưới dạng các module có sẵn,
nếu muốn tăng kích thước phải ghép các module lại với nhau.
Ưu điểm: Nội dung tùy biến, có thể hiển thị các đoạn video.
Nhược điểm: Giá thành quá đắt đỏ, không thể áp dụng phổ biến được.
Sử dụng nhiều LED nên tiêu thụ nhiều năng lượng.

1.2 Mục đích, ý nghĩa đề tài
Từ những ưu, nhược điểm thực tế của các loại LED quang báo đã
thôi thúc em tìm hiểu một loại LED quảng cáo khác có khả năng tùy biến
cao (nội dung do người sử dụng tự thiết kế), giá thành rẻ, hiển thị được
nhiều màu, chỉ sử dụng 16 LED nên năng lượng tiêu thụ ít, lưu được nhiều
hình ảnh.

Đèn quảng cáo 8 màu sử dụng vi điều khiển phải đáp ứng được các
yêu cầu sau:
- Hiển thị được 8 màu (kể cả màu đen)
- Chỉ sử dụng 16 LED
- Hiển thị được các hình ảnh
- Khả năng tùy biến cao, người sử dụng tự thiết kế các hình ảnh
4


- Lưu trữ được nhiều hình ảnh (42 hình)
- Giao tiếp được với máy tính
- Có phần mềm trên máy tính giúp người sử dụng thiết kế và quản lý
hình ảnh.
- Giá thành rẻ.
Sơ đồ kết nối:

Mạch hiển
thị
(Mạch
LED)

SPI

Mạch kết
nối
USB

5

USB


Máy tính
(Phần
mềm)


Chương 2:GIỚI THIỆU CÁC THÀNH PHẦN CẤU THÀNH
SỬ DỤNG
2.1 Vi điều khiển ATTiny2313
ATTiny2313 là vi điều khiển 8 bit dựa trên kiến trúc RISC. Với khả năng
thực hiện mỗi lệnh trong vòng một chu kỳ xung clock, ATTiny2313 có thể đạt
được tốc độ 1MIPS trên mỗi MHz (1 triệu lệnh/s/MHz).
Những Tính Năng Chính Của ATTiny2313:
o Có 2KByte bộ nhớ flash
o Có thể xóa lập trình được và có thể chịu được 10000 lần ghi xóa.
o Có 32 thanh ghi đa năng 8 bit,
o Có 128 Byte bộ nhớ EEPROM tích hợp trên chíp,
o Có 128 Byte SRAM nội.
o Có một bộ Timer/counter 8 bit và một bộ timer/counter 16 bit với bộ chia
tần lập trình được.
o Có 4 kênh điều xung.
o ATTiny2313 có 20 chân, trong đó có 18 cổng vào ra.
o Nguồn nuôi từ 1.8 đến 5.5 đối với ATTiny2313V và từ 2.7 đến 5.5 đối với
ATTiny2313,
o Làm việc tiêu thụ dòng 3.6mA.
o Sử dụng mạch dao động ngoài từ 0 đến 10 Mhz với ATTiny2313V và từ 0
đến 20 Mhz với ATTiny2313.
o Ngoài ra chíp ATTiny2313 còn có bộ xung nội bên trong có thể lập trình
chế độ xung nhịp
Dưới đây là sơ đồ khối của ATTiny2313


6


ATTiny2313 hỗ trợ đầy đủ các chương trình và công cụ phát triển hệ thống
như: trình dịch C, macro assemblers, chương trình mô phỏng/sửa lỗi, kit thử
nghiêm,..

2.1.1 CPU
ALU
ALU làm việc trực tiếp với các thanh ghi chức năng chung. Các phép toán
được thực hiện trong một chu kỳ xung clock. Hoạt động của ALU được
chia làm 3 loại: đại số, logic và theo bit.
Thanh ghi trạng thái
Đây là thanh ghi trạng thái có 8 bit lưu trữ trạng thái của ALU sau các phép
tính số học và logic.

Thanh ghi trạng thái SREG

Các thanh ghi chức năng chung

Thanh ghi chức năng chung
Tệp thanh ghi ( register file ) : Tệ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.

7



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.

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.

Các thanh ghi chức năng đặc biệt
Bao gồm các thanh ghi dữ liệu và các thanh ghi điều khiển các cổng vào ra.
Chúng có thể truy nhập được bằng 2 cách:
 Bằng địa chỉ trực tiếp
Ví dụ:
STR $3F,R11
hoặc: STR SREG.R11
 Hoặc có thể truy nhập gián tiếp chúng thông qua thanh ghi X, Y, Z.
Ví dụ :
LDI R28,0x00
LDI R27,0x5F
STD X,R11

Hai ví dụ này hoàn toàn tương đương, đều ghi dữ liệu vào thanh ghi SREG.

Status Register (SREG)
Đây là thanh ghi trạng thái có 8 bit lưu trữ trạng thái của ALU sau các phép
tính số học và logic.

Stack Pointer
8


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ó nhiệm vụ trỏ tới vùng nhớ trong RAM chứa 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 hợc bằng 60H (0x60) vì
5FH trỏ lại là vùng các thanh ghi.

2.1.2 Cấu trúc bộ nhớ
AVR có 2 không gian bộ nhớ chính là bộ nhớ dữ liệu vào bộ nhớ chương
trình. Ngoài ra ATTiny2313 còn có thêm bộ nhớ EEPROM để lưu trữ dữ liệu.

Bộ nhớ chương trình (Bộ nhớ Flash)
Bộ nhớ Flash 2KB của ATTiny2313 dùng để lưu trữ chương trình. Do các
lệnh của AVR có độ dài 16 hoặc 32 bit nên bộ nhớ Flash được sắp xếp theo kiểu
1KX16.


Bộ nhớ dữ liệu SRAM
224 ô nhớ của bộ nhớ dữ liệu định địa chỉ cho file thanh ghi, bộ nhớ I/O và bộ
nhớ dữ liệu SRAM nội. Trong đó 32 ô nhớ đầu tiên định địa chỉ cho file thanh

9


ghi, 64 ô nhớ tiếp theo định địa chỉ bộ nhớ I/O, và 128 ô nhớ tiếp theo định địa
chỉ cho bộ nhớ SRAM nội.

Bản đồ bộ nhớ dữ liệu SRAM

Bộ nhớ dữ liệu EEPROM
ATTiny2313 chứa bộ nhớ dữ liệu EEPROM dung lượng 128 Byte, và được
sắp xếp theo từng Byte, cho phép các thao tác đọc/ghi từng Byte một. Đây là bộ
nhớ dữ liệu có thể ghi xóa ngay trong lúc vi điều khiển đang hoạt động và không
bị mất dữ liệu khi nguồn điện cung cấp bị cắt. Có thể ví bộ nhớ dữ liệu EEPROM
giống như là ổ cứng ( Hard disk ) của máy vi tính. EEPROM được xem như là
một bộ nhớ vào ra được đánh địa chỉ độc lập với SRAM, điều này có nghĩa là ta
cần sử dụng các lệnh in, out … khi muốn truy xuất tới EEPROM. Để điều khiển
vào ra dữ liệu với EEPROM ta sử dụng 3 thanh ghi sau :

2.1.3 Cấu trúc ngắt của ATTiny2313
KHÁI NIỆM VỀ NGẮT
Ngắt là một cơ chế cho phép thiết bị ngoại vi báo cho CPU biết về tình trạng
sẵn xàng cho đổi dữ liệu của mình.Ví dụ:Khi bộ truyền nhận UART nhận được
một Byte nó sẽ báo cho CPU biết thông qua cờ RXC,hợc khi nó đã truyền được
một Byte thì cờ TX được thiết lập…
Khi có tín hiệu báo ngắt CPU sẽ tạm dừng công việc đạng thực hiện lại và lưu

vị trí đang thực hiên chương trình (con trỏ PC) vào ngăn xếp sau đó trỏ tới
vector phuc vụ ngắt và thức hiện chương trình phục vụ ngắt đó chơ tới khi gặp
lệnh RETI (return from interrup) thì CPU lại lấy PC từ ngăn xếp ra và tiếp tục
thực hiện chương trình mà trước khi có ngăt nó đang thực hiện. Trong trường
hợp mà có nhiều ngắt yêu cầu cùng một lúc thì CPU sẽ lưu các cờ báo ngắt đó lại
và thực hiện lần lượt các ngắt theo mức ưu tiên .Trong khi đang thực hiện ngắt
mà xuất hiện ngắt mới thì sẽ xảy ra hai trường hợp. Trường hợp ngắt này có mức
ưu tiên cao hơn thì nó sẽ được phục vụ. Còn nó mà có mức ưu tiên thấp hơn thì
nó sẽ bị bỏ qua.
Bộ nhớ ngăn xếp là vùng bất kì trong SRAM từ địa chỉ 0x60 trở lên. Để truy
nhập vào SRAM thông thường thì ta dùng con trỏ X,Y,Z và để truy nhập vào

10


SRAM theo kiểu ngăn xếp thì ta dùng con trỏ SP. Con trỏ này là một thanh ghi
16 bit và được truy nhập như hai thanh ghi 8 bit chung có địa chỉ :SPL :
0x3D/0x5D (IO/SRAM) và SPH:0x3E/0x5E.
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 60H (0x60) vì 5FH trỏ lại
là vùng các thanh ghi.

CÁC NGẮT NGOÀI
Các ngắt ngoài được kích hoạt bởi 2 chân INT0, và INT1. Chú ý rằng nếu
đã kích hoạt, các ngắt sẽ kích bằng (trigger even) nếu các chân INT0,INT1 được

cấu hình là các ngõ ra. Các đặc điểm này cung cấp 1 con đường chung cho ngắt
mềm.Các ngắt ngoài có thể được kích bởi cạnh xuống hoặc lên hoặc mức thấp.
Sự cài đặt này được chỉ định đặc biệt trong thanh ghi điều khiển MCU –
MCUCR.

CÁC THANH GHI ĐIỀU KHIỂN NGẮT:
 MCU Control Register– MCUCR
Thanh ghi MCU chứa các bit điều khiển ngắt có ý thức kiểm soát và chức năng
MCU chung .

• Bit 3, 2 – ISC11, ISC10: Interrupt Sense Control 1 Bit 1 and Bit 0
External Interrupt 1 được kích hoạt bởi chân ngoài INT1 nếu SREG I-bit
và mặt nạ ngắt tương ứng trong GIMSK là set (1). Các mức độ và cạnh trong
chân INT1 ngoài
kích hoạt ngắt được định nghĩa trong bảng sau:

• Bit 1, 0 – ISC01, ISC00: Interrupt Sense Control 0 Bit 1 and Bit 0
External Interrupt 0 được kích hoạt bởi chân ngoài INT0 nếu SREG I-bit và mặt
nạ ngắt tương ứng trong GIMSK là set (1). Các mức độ và cạnh trong chân INT0

11


ngoài

kích

hoạt

ngắt


được

định

nghĩa

trong

bảng

sau:

 General Interrupt Mask Register– GIMSK

• Bit 7 – INT1: External Interrupt Request 1 Enable
Khi bit INT1 set lên 1 và I-bit trong thanh ghi trạng thái SREG là 1,ngắt chân
ngoài được kích hoạt. Ngắt tương ứng của External Interrupt Request 1 được
thực thi từ INT0 Interrupt Vector.
• Bit 6 – INT0: External Interrupt Request 0 Enable
Khi bit INT0 set lên 1 và I-bit trong thanh ghi trạng thái SREG là 1,ngắt chân
ngoài được kích hoạt. Ngắt tương ứng của External Interrupt Request 0 được
thực thi từ INT0 Interrupt Vector.
 External Interrupt Flag Register – EIFR

• Bit 7 – INTF1: External Interrupt Flag 1
Khi 1 sự kiện tại chân INT1 kích hoạt 1 yêu cầu ngắt INTF1 sẽ lên 1. Nếu I-bit
trong SREG và bit INT1 trongGICR là 1,MCU sẽ nhảy đến vector ngắt tương
ứng. Cờ sẽ xóa khi thực hiện ngắt thường xuyên. Đôi khi, cờ có thể được xóa nếu
ta ghi trực tiếp 1 giá trị vào nó

• Bit 6 – INTF0: External Interrupt Flag 0
Khi 1 sự kiện tại chân INT0 kích hoạt 1 yêu cầu ngắt INTF0 sẽ lên 1. Nếu I-bit
trong SREG và bit INT1 trong GIMSK là 1,MCU sẽ nhảy đến vector ngắt tương
ứng. Cờ sẽ xóa khi thực hiện ngắt thường xuyên. Đôi khi, cờ có thể được xóa nếu
ta ghi trực tiếp 1 giá trị vào nó

2.1.4 Các cổng vào ra (I/O)
Vi điều khiểnATTiny2313 có 18 đường vào ra chia làm 3 nhóm: một nhóm 8
bit, một nhóm 7 bit và một nhóm 3 bit . Các đường vào ra này có rất nhiều tính

12


năng và có thể lập trình được. Ở đây ta sẽ xét chúng là các cổng vào ra số. Nếu
xét trên mặt này thì các cổng vào ra này là cổng vào ra hai chiều có thể định
hướng theo từng bit. Và chứa cả điện trở pull-up (có thể lập trình được). Mặc dù
mỗi port có các đặc điểm riêng nhưng khi xét chúng là các cổng vào ra số thì
dường như điều khiển vào ra dữ liệu thì hoàn toàn như nhau. Chúng ta có thanh
ghi và một địa chỉ cổng đối với mỗi cổng, đó là : thanh ghi dữ liệu cổng
( PORTA, PORTB, PORTD), thanh ghi dữ liệu điều khiển cổng (DDRA, DDRB,
DDRD) và cuối cùng là địa chỉ chân vào của cổng (PINA, PIND, PIND).

Port A
• RESET – Port A, Bit 2
RESET, Reset pin: Khi cầu chì RSTDISBL đã lập trình, chức năng của chân này
là vào ra binh thường,và 1 phần sẽ phải dựa vào Power-on Reset và Brown-out
Reset như là nguồn reset của nó.
• XTAL2– Port A, Bit 1
XTAL2: Chân 2 dao động tạo clock. Sử dụng chân clock thạch anh,hoặc
dao động thạch anh tần số thấp. Khi dùng chân làm dao động thì không thể làm

chân nhập xuất được nữa.
• XTAL1– Port A, Bit 0
XTAL1: Chân 1 dao động tạo clock. Sử dụng chân clock thạch anh,hoặc
dao động thạch anh tần số thấp. Khi dùng chân làm dao động thì không thể làm
chân nhập xuất được nữa.

Port B
•USCK/SCL/PCINT7 – Port B, Bit 7
SCK: Master Clock output, Slave Clock input pin for SPI channel. Khi SPI được
kích hoạt là Slave, chân này được cấu hình là 1 chân ngõ vào bất chấp sự điều
chỉnh từ DDB7.
• MISO/DO/PCINT6 – Port B, Bit 6
MISO: Master Data input, Slave Data output pin for SPI channel, Three-wire
mode Universal Serial Interface Data output. Khi SPI được kích hoạt là Master,
chân này được cấu hình là 1 chân ngõ vào bất chấp sự điều chỉnh từ DDB6.
• MOSI/DI/SDA/PCINT5 – Port B, Bit 5
MOSI: SPI Master Data output, Slave Data input for SPI channel, Three-wire
mode Universal Serial Interface Data input. Khi SPI được kích hoạt là Slave,
chân này được cấu hình là 1 chân ngõ vào bất chấp sự điều chỉnh từ DDB5. Khi
SPI được kích hoạt là Master, dữ liệu trực tiếp của chân này được điều khiển bởi
DDB5.
• OC1B/PCINT4 – Port B, Bit 4
OC1B: Output Compare Match B output. chân PB4 có thể phục vụ như là một
đầu ra bên ngoài cho Timer/Counter1 Output Compare B.
PCINT4: Pin Change Interrupt Source 4, có thể phục vụ như một nguồn ngắt bên
ngoài.
• OC1A /PCINT3 – Port B, Bit 3
OC1A: Output Compare Match A output. Chân PB3 có thể phục vụ như là một
đầu ra bên ngoài cho Timer/Counter1 Output Compare A.


13


PCINT3: Pin Change Interrupt Source 3, có thể phục vụ như một nguồn ngắt bên
ngoài.
• OC0A/PCINT2 – Port B, Bit 2
OC0A: Output Compare Match A output. Chân PB2 có thể phục vụ như là một
đầu ra bên ngoài cho Timer/Counter0 Output Compare A.
PCINT2: Pin Change Interrupt Source 2, có thể phục vụ như một nguồn ngắt bên
ngoài.
• AIN1/PCINT1 – Port B, Bit 1
AIN1: Analog Comparator Negative input. Cấu hình như là bộ so sánh tín hiệu
Analog thụ động đầu vào.
PCINT1: Pin Change Interrupt Source 1, có thể phục vụ như một nguồn ngắt bên
ngoài.
• AIN0/PCINT1 – Port B, Bit 1
AIN0: Analog Comparator Positive input. Cấu hình như là bộ so sánh tín hiệu
Analog tích cực đầu vào.
PCINT0: Pin Change Interrupt Source 0, có thể phục vụ như một nguồn ngắt bên
ngoài.

Port D
• ICP – Port D, Bit 6

(ICP): Timer/Counter1 Input Capture Pin. Chân PD6 có thể hoạt động như
một Input Capture cho Timer/Counter1
• OC0B/T1 – Port D, Bit 5
OC0B: Output Compare Match B output. Chân PD5 pin có thể phục vụ như là

một đầu ra bên ngoài cho Timer/Counter0.

T1: Timer/Counter1 External Counter Clock input, được thiết lập khi set giá trị 1
cho bit CS02 và CS01 trong thanh ghi Timer/Counter1 Control Register
(TCCR1)
• T0 – Port D, Bit 4
T0: Timer/Counter0 External Counter Clock input, được thiết lập khi set giá trị 1
cho bit CS02 và
CS01 trong thanh ghi Timer/Counter0 Control Register (TCCR0)
• INT1 – Port D, Bit 3
INT1, Ngắt nguồn bên ngoài 1: Chân PD3 có thể làm chức năng như 1 nguồn
ngắt ngoài.
• INT0 – Port D, Bit 2
INT0, Ngắt nguồn bên ngoài 0: Chân PD2 có thể làm chức năng như 1 nguồn
ngắt ngoài.
• TXD – Port D, Bit 1
TXD, Truyền tải dữ liệu (chân dữ liệu ra của USART). Khi bộ truyền USART
được kích hoạt ,chân này được cấu hình như là một ngõ ra bất kể giá trị của
DDD1.
• RXD – Port D, Bit 0
RXD, Nhận dữ liệu (chân dữ liệu vào của USART). Khi bộ nhận USART được
kích hoạt ,chân này được cấu hình như là một ngõ vào bất kể giá trị của DDD0

14


Mô tả thanh ghi của port I/O
- Port A:
Port A Data Register – PORTA

Port A Data Direction Register – DDRA


Port A Input Pins Address – PINA

- Port B:
Port B Data Register – PORTB

Port B Data Direction Register – DDRB

Port B Input Pins Address – PINB

- Port D:
Port D Data Register – PORTD

15


Port D Data Direction Register – DDRD

Port D Input Pins Address – PIND

2.1.5 Bộ định thời 8Bit TIMER/COUNTER 0
Bộ định thời (timer/counter0) là một module định thời/đếm 8 bit, có các đặc
điểm sau:
 Bộ đếm một kênh
 Xóa bộ định thời khi trong mode so sánh (tự động nạp)
 PWM
 Tạo tần số
 Bộ đếm sự kiện ngoài
 Bộ chia tần 10 bit
 Nguồn ngắt tràn bộ đếm và so sánh
Sơ đồ cấu trúc của bộ định thời:


Hình 5.1. Sơ đồ cấu trúc bộ định thời

16


Hoạt động của bộ Timer/Couter
+ Mạch đếm lên làm thanh ghi TCNTn tăng 1 đơn vị mỗi khi có xung clkTn, khi
đạt giá trị lớn nhất (8bit=255), cờ TOVn được set (logic 1) và bộ đếm tràn, giá
trị bộ đến TCNTn trở về 00 và tiếp tục đếm.
+ Xung clkTn có thể được lựa chọn từ nhiều nguồn khác nhau. Khi chọn xung
nội (system clock), Timer/Counter là một Timer. Khi chọn xung ngoài (thông
qua chân Tn) Timer/Counter là Counter.
Hoạt động này có thể diễn tả bằng giản đồ xung sau:

Cũng giống như bộ timer/counter trong các vi điều khiển khác, chúng ta quan
tâm đến 2 thanh ghi: Timer/Counter Control và Timer/Counter Value. Trong
AVR, đó là thanh ghi TCCRn và TCNTn.

17


Clock Select Bit Descri
ption

TCNT0 - Timer/C
TCNT0 và OCR0 là các thanh ghi 8 bit. Các tín hiệu yêu cầu ngắt đều nằm
trong thanh ghi TIFR. Các ngắt có thể được che bởi thanh ghi TIMSK.
Bộ định thời có thể sử dụng xung clock nội thông qua bộ chia hoặc xung
clock ngoài trên chân T0. Khối chọn xung clock điều khiển việc bộ định thời/bộ

đếm sẽ dùng nguồn xung nào để tăng giá trị của nó. Ngõ ra của khối chọn xung
clock được xem là xung clock của bộ định thời (clkT0).
Thanh ghi OCR0 luôn được so sánh với giá trị của bộ định thời/bộ đếm. Kết
quả so sánh có thể được sử dụng để tạo ra PWM hoặc biến đổi tần số ngõ ra tại
chân OC0.

Đơn vị đếm
Phần chính của bộ định thời 8 bit là một đơn vị đếm song hướng có thể lập
trình được. Cấu trúc của nó như hình dưới đây:

Hình 5.2. Đơn vị đếm
count: tăng hay giảm TCNT0 1
direction: lựa chọn giữa đếm lên và đếm xuống
clear: xóa thanh ghi TCNT0
clkT0: xung clock của bộ định thời
TOP: báo hiệu bộ định thời đã tăng đến giá trị lớn nhất
BOTTOM: báo hiệu bộ định thời đã giảm đến giá trị nhỏ nhất (0)

18


Đơn vị so sánh ngõ ra

Hình 5.3. Sơ đồ đơn vị so sánh ngõ ra
Bộ so sánh 8 bit liên tục so sánh giá trị TCNT0 với giá trị trong thanh ghi so
sánh ngõ ra (OCR0). Khi giá trị TCNT0 bằng với OCR0, bộ so sánh sẽ tạo một
báo hiệu. Báo hiệu này sẽ đặt giá trị cờ so sánh ngõ ra (OCF0) lên 1 vào chu kỳ
xung clock tiếp theo. Nếu được kích hoạt (OCIE0=1), cờ OCF0 sẽ tạo ra một
ngắt so sánh ngõ ra và sẽ tự động được xóa khi ngắt được thực thi. Cờ OCF0
cũng có thể được xóa bằng phần mềm.


Các thanh ghi
o Timer/Counter Control Register A – TCCR0A

o Timer/Counter Control Register B – TCCR0B

o Thanh ghi bộ định thời/bộ đếm

o Thanh ghi mặt nạ ngắt

19


o Thanh ghi cờ ngắt bộ định thời

2.1.6 Bộ định thời 16Bit TIMER/COUNTER1
Sơ đồ khối và một số đặc điểm

Bộ định thời (timer/counter1) là một module định thời/đếm 16 bit, có các đặc
điểm sau:
• True 16-bit Design (i.e., allows 16-bit PWM)
• 2 đơn vị ngõ vào so sánh độc lập (Two Independent Output Compare Units)
• đôi thanh ghi so sánh ngõ ra đệm (Double Buffered Output Compare Registers)
• 1 đơn vị chốt ngõ vào (One Input Capture Unit)
• Bộ chống nhiễu lối vào (Input Capture Noise Canceler)
• Xóa timer trong Compare Match (Clear Timer on Compare Match (Auto
Reload))

20



• chống nhiễu sọc ngang (Glitch-free, Phase Correct Pulse Width Modulator
(PWM)
• Giá trị chu kỳ PWM
• Bộ phát tần số chung
• Bộ đếm sự kiện ngoài
• 4 nguồn ngắt độc lập (TOV1, OCF1A, OCF1B, and ICF1)

Một số định nghĩa
BOTTOM Bộ đếm đạt tới BOTTOM khi co giá trị 0x0000
MAX Bộ đếm đạt tới MAXimum khi khi đạt giá trị 0xFFFF (decimal 65535).
TOP Bộ đếm đạt tới TOP khi nó bằng với giá trị lớn nhất của chuỗi đếm. Giá trị
này có thể được gán bởi các giá trị cố định : 0x00FF, 0x01FF, or 0x03FF,hoặc giá
trị trong bộ nhớ của các thanh ghi OCR1A ,ICR1 .
 Các thanh ghi
o Timer/Counter 1 Control Register A – TCCR1A

o Timer/Counter 1 Control Register B – TCCR1B

o Timer/Counter 1 – TCNT1H and TCNT1L

o Output Compare Register 1 A – OCR1AH and OCR1AL

o Output Compare Register 1 B – OCR1BH and OCR1BL

21


o Input Capture Register 1 – ICR1H and ICR1L


o Timer/Counter Interrupt Mask Register – TIMSK

o Timer/Counter Interrupt Flag Register – TIFR

2.1.7 USI (Universal Serial Interface)

Sơ đồ và định nghĩa
USI là một giao tiếp cung cấp các tài nguyên phần cứng cơ bản cần
thiết cho nối tiếp truyền thông. Kết hợp với tối thiểu của phần mềm điều
khiển, USI cho phép tốc độ truyền cao hơn đáng kể và sử dụng không gian
mã lệnh ít hơn so với các giải pháp chỉ dựa trên phần mềm. Các ngắt được
bao gồm để giảm thiểu tải cho bộ xử lý. Các tính năng chính của USI:
- Truyền dữ liệu đồng bộ hai dây (Master or Slave, fSCLmax = fCK/16)
- Truyền dữ liệu đồng bộ ba dây (Master, fSCKmax = fCK/2, Slave
fSCKmax = fCK/4)
- Thức dậy từ chế độ Idle
- Sử dụng 3 dây để truyền dữ liệu là: SCK, DI/SDA và DO.
- Trong Mode hai dây Mode: Thức dậy từ tất cả các chế độ ngủ, bao gồm
chế độ Power-down.
Sơ đồ cấu trúc:

22


Để điều khiển khối giao tiếp USI thì chúng ta có 3 thanh ghi. Đó là 1 thanh
ghi điều khiển USICR (USI control Register), thanh ghi trang thái USISR (USI
status Register) và cuối cùng là thanh ghi dữ liệu USIDR (USI Data Register).

Các thanh ghi
o Thanh ghi điều khiển USICR: Thanh ghi điều khiển bao gồm cho phép

ngắt, thiết lập chế độ dây, chọn xung Clock, và Clock Strobe.

o Thanh ghi trạng thái USISR: Bao gồm cờ ngắt, cờ trạng thái dòng và

giá trị đếm

o Thanh ghi dữ liệu USIDR

23


2.2 Các linh kiện khác
2.2.1 EEPROM 25LC512
Bộ nhớ 512 Kbit, được chế tạo theo công nghệ CMOS, có một số đặc điểm
chính sau:
-

Tần số hoạt động tối đa 20MHZ

-

Điện áp hoạt động 2,5 - 5,5V

-

Hỗ trợ đọc ghi theo Byte, page, sector

-

Giao tiếp SPI


Dạng đóng gói 8 chân

Sơ đồ chân:

Sơ đồ khối:
24


Đọc dữ liệu từ EEPROM 25LC512
Hình sau mô tả quá trình đọc dữ liệu từ EEPROM 25LC512

Quá trình đọc dữ liệu từ EEPROM 25LC512:
-

Kéo chân CS xuống mức logic thấp để chọn chip.

-

Gửi 8bit chỉ dẫn đọc (READ) tới EEPROM 25LC512.

-

Gửi 16bit địa chỉ của Byte cần đọc tiếp theo chỉ dẫn đọc.

Sau khi chỉ dẫn đọc và địa chỉ được gửi chính xác, dữ liệu trong bộ nhớ
sẽ được gửi ra chân SO.
Các dữ liệu được lưu trữ trong bộ nhớ ở địa chỉ kế tiếp có thể được đọc
tuần tự bằng cách tiếp tục cung cấp xung clock. Con trỏ địa chỉ được tự
động tăng lên để các địa chỉ kế tiếp cao hơn sau mỗi Byte dữ liệu được

chuyển ra. Khi địa chỉ cao nhất đạt (1FFFFh), truy cập địa chỉ quay trở lại
địa chỉ 00000h, cho phép các chu kỳ đọc được tiếp tục vô thời hạn. Hoạt
động đọc được chấm dứt bởi kéo chân CS lên mức logic cao (Hình 2-1).
-

25


×