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.
Trang 1ĐẠ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
Trang 2Lờ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ếpthu 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ấtcầ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
Trang 3MỤ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
Trang 4Chươ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ộidung 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ếncao (nội dung do người sử dụng tự thiết kế), giá thành rẻ, hiển thị đượcnhiều màu, chỉ sử dụng 16 LED nên năng lượng tiêu thụ ít, lưu được nhiềuhì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
Trang 5- 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
Máy tính(Phần mềm)
Trang 6Chươ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
Trang 7ATTiny2313 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
Trang 8Con 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:
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
Trang 9Là 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.
Trang 10ghi, 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
Trang 11SRAM 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
Trang 12ngoà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
Trang 13nă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.
Trang 14PCINT3: 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
Trang 15Mô 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
Trang 16Port 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:
Sơ đồ cấu trúc của bộ định thời:
Hình 5.1 Sơ đồ cấu trúc bộ định thời
Trang 17Hoạ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.
Trang 18Clock Select Bit Descri
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)
Trang 19Đơ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
Trang 20o 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))
Trang 21• chống nhiễu sọc ngang (Glitch-free, Phase Correct Pulse Width Modulator (PWM)
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
Trang 22o 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ầnthiế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ềukhiể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 đượcbao gồm để giảm thiểu tải cho bộ xử lý Các tính năng chính của USI:
- Truyềndữ liệu đồng bộ hai dây (Master or Slave, fSCLmax = fCK/16)
- Truyềndữ 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ồmchế độ Power-down
Sơ đồ cấu trúc:
Trang 23Để đ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).
Trang 24- 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:
Trang 25Đọ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 đọctuầ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
Trang 26Ghi dữ liệu vào EEPROM 25LC512
Hình sau mô tả quá trình ghi dữ liệu vào EEPROM 25LC512
Quá trình ghi dữ liệu vào EEPROM 25LC512:
Trước khi ghi dữ liệu vào 25LC512 phải thực hiện mở chốt ghi dữliệu bằng cách phát đi chỉ dẫn WREN Điều này được thực hiện bằng cáchthiết lập CS thấp và sau đó clocking ra các chỉ dẫn thích hợp vào 25LC512.Sau khi 8 bit của chỉ dẫn được truyền đi, CS phải được đưa cao để thiết lậpchốt cho phép ghi Nếu hoạt động ghi được bắt đầu ngay lập tức sau khi chỉthị Wren mà không kéo chân CS lên cao, dữ liệu sẽ không được ghi vì chốtcho phép ghi không có được thiết lập đúng 25LC512 cho phép ghi đè dữliệu mà không cần phải xóa dữ liệu cũ
Sau khi mở chốt ghi dữ liệu, ta tiến hành ghi dữ liêu:
- Kéo chân CS xuống mức logic thấp để chọn chip
- Gửi 8bit chỉ dẫn ghi (WRITE) tới EEPROM 25LC512
- Gửi 16bit địa chỉ của Byte cần đọc tiếp theo chỉ dẫn ghi
- Sau khi chỉ dẫn ghi và địa chỉ được gửi chính xác, dữ liệu sẽ được ghi vào bộ nhớ
Trong quá trình ghi, ta có thể đọc thanh ghi trạng thái để kiểm tra trạng tháicủa bit WPEN, WIP, WEL, BP1 và BP0 Một cố gắng đọc bộ nhớ sẽ khôngthể trong thực hiện trong một chu kỳ ghi Khi chu trình ghi hoàn tất, chốtcho phép ghi được thiết lập lại
Read Status Register Instruction (RDSR)- thanh ghi chỉ dẫntrạng thái đọc: cho phép đọc thanh ghi trạng thái bất kỳ lúc nào,ngay cả khi trong lúc ghi dữ liệu
Write Status Register Instruction (WRSR)- thanh ghi chỉ dẫntrạng thái ghi: cho phép người dùng có thể ghi các bit trong thanhghi trạng thái Người sử dụng có thể chọn một trong bốn chế độbảo vệ cho mảng bằng cách ghi các bit thích hợp trong thanh ghitrạng thái
Trang 272.2.2 IC 74HC595
Là ic ghi dịch 8bit kết hợp chốt dữ liệu, có một số đặc điểm sau:
- Đầu vào nối tiếp đầu ra song song
- Tần số đáp ứng tối đa là 55MHZ
- Điện áp hoạt động từ 2V đến 6V
- Giao tiếp với vi điều khiển chỉ sử dụng 3 dây
- 8 chân xuất dữ liệu
Sơ đồ chân :
Chức năng của các chân :
- Chân 14 (input) : đầu vào dữ liệu nối tiếp Tại 1 thời điểm xung clock
chỉ đưa vào được 1 bit
- Các chân QA=>QH (output) : trên các chân (15,1,2,3,4,5,6,7)
Xuất dữ liệu khi chân chân 13 tích cực ở mức thấp và có một xung tíchcực ở sườn âm tại chân chốt 12
- Chân 13 (output-enable) : Chân cho phép tích cực ở mức thấp (0)
.Khi ở mức cao, tất cả các đầu ra của 74595 trở về trạng thái cao trở,không có đầu ra nào được cho phép
- Chân 9 (SQH): Chân dữ liệu nối tiếp Nếu dùng nhiều 74595 mắc nối
tiếp nhau thì chân này đưa vào đầu vào của con tiếp theo khi đã dịch đủ8bit
- Chân 11 (Shift clock): Chân vào xung clock Khi có 1 xung clock tích
cực ở sườn dương (từ 0 lên 1) thì 1bit được dịch vào ic
Trang 2814 dc 2 bit khi có xung clock ở chân 12 thì dữ liệu sẽ ra ở chân Qa và
Qb (chú ý chiều dịch dữ liệu từ Qa=>Qh)
- Chân 10 (Reset): khi chân này ở mức thấp (mức 0) thì dữ liệu sẽ bị xóa
2.2.3 LED RGB
LED RGB là LED trong đó tích hợp 3 LED riêng biệt tương ứng với 3 màu
cơ bản Red, Green, Blue Dựa trên 3 màu cơ bản này ta có thể phối ra đượcnhiều màu khác nhau dựa theo tỷ lệ [R,G,B] Hiện nay có rất nhiều loạiLED RGB với kiểu dáng và cách đóng gói khác nhau Trong khuôn khổ đểtài này em chọn LED RGB loại chân dán có 6 chân của HARVATEK
Trang 29Các chân 1,3,5 là chân Anode, các chân 2,4,6 là chân Cathode
Cấu tạo: bao gồm 2 lá thép mỏng đặt trong một ống thủy tinh nhỏ
Nguyên tắc hoạt động: Khi đưa nam châm lại gần lực từ sẽ làm 2 lá théptiếp xúc với nhau, làm nối mạch 2 đầu của công tắc từ
Trang 30Chương 3:THIẾT KẾ HỆ THỐNG 3.1 Hệ điều khiển
3.1.1 Nguyên tắc hiển thị hình ảnh
Sử dụng nguyên tắc hoạt động của Propeller clock, theo đó có 1 thanh LEDquay tròn quanh 1 trục Tại mỗi thời điểm trong vòng quay, vi điều khiển sẽbật/tắt các LED để tạo nên các điểm ảnh Quá trình bật/tắt các LED nàydiễn ra liên tục nhiều lần trên một vòng để tạo ra được hình ảnh
Hình dưới đây minh họa nguyên tắc hoạt động:
(Hình minh họa)
Trang 313.1.2 Nguyên tắc pha màu:
Từ 3 màu cơ bản RED, GREEN, BLUE ta có thể tạo ra các màukhác bằng cách kết hợp 3 màu cơ bản trên
3.1.3 Phân hoạch bộ nhớ cho Chip ATTiny2313
- Bộ nhớ Flash nội để lưu chương trình điều khiển
- Bộ nhớ EEPROM nội để lưu các biến phục vụ cho điều khiển
+ Biến Góc quay có địa chỉ: 0x00
+ Biến Thời gian hiển thị hình có địa chỉ 0x01
3.1.4 Phân hoạch bộ nhớ cho EEPROM 25LC512