Tải bản đầy đủ (.docx) (43 trang)

mach Led nháy theo nhạc

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 (1.82 MB, 43 trang )

[Type the document title]
MỤC LỤC

MỤC LỤC HÌNH ẢNH

Thực tập cơ sở

Trang 1


[Type the document title]
LỜI NÓI ĐẦU
Ngày nay khoa học công nghệ ngày càng phát triển, vi điều khiển AVR và
vi điều khiển PIC ngày càng thông dụng và hoàn thiện hơn. Với sự phát triển
như vậy vi điều khiển đang ăn sâu tới mọi lĩnh vực của cuộc sống từ những
nghành công nghiệp đến những dịch vụ thường ngày của cuộc sống. Điều đó
cho thấy công nghệ điện tử đã là một phần không thể thiếu đối với mọi hoạt
động của con người.
Trên cơ sở kiến thức đã học trong môn học: Tin đại cương, Điện tử tương
tự và môn thực hành cơ sở cùng với những hiểu biết về các thiết bị điện tử,
chúng em đã quyết định thực hiện đề tài: Mạch nháy theo nhạc Led- Dancer
dùng Matix Led và IC ATMEGA8 với mục đích để tìm hiểu thêm về thiết kế
mạch điện tử và lập trinh AVR, làm quen với các thiết bị điện tử và nâng cao
hiểu biết cho bản thân. Do kiến thức còn hạn hẹp nên không tránh khỏi thiếu sót,
hạn chế vì thế chúng em rất mong nhận được sự góp ý và nhắc nhở từ thầy giáo
để có thể hoàn thiện đề tài của mình.
Chúng em xin chân thành cám ơn thầy cô đã giúp đỡ chúng em rất nhiều
trong quá trình tìm hiểu, thiết kế và hoàn thành đề tài này.

Thực tập cơ sở


Trang 2


[Type the document title]

A. PHẦN MỞ ĐẦU
1. Đặt vấn đề
Cuộc sống hiện đại, nhu cầu của con người về giải trí ngày càng cao.
Song song với nó là sự phát triển về công nghệ điện tử. Với mỗi lĩnh vực , điện
tử viễn thông đều đem lại những ý nghĩa thiết thực.
Với mỗi bản nhạc mà chúng ta nghe dường như việc cảm thụ đơn thuần
bằng thính giác đã nhàm chán và không đem lại hết sự thoải mái thú vị trong
những thời gian thư giãn của chúng ta, đồng thời với mỗi dịp lễ tết nhu cầu trang
trí bằng những mạch đèn LED là rất phổ biến và thực sự rất đẹp mắt, do vậy
nhóm chúng tôi đã dựa trên cơ sở đó cùng với yêu cầu là một bài báo cáo hết
học phần của môn chúng tôi đã tiến hành thiết kế và thi công mạch nháy theo
nhạc sử dụng IC ATMEGA8.
2. Xây dựng phương án
Dựa trên hình ảnh các cột biên tần âm thanh hiển thị trên các phần mềm
media chuyển động theo giai điệu nhạc khá bắt mắt và đồng thời với mỗi giai
điệu nhạc lại đem lại những cảm nhận khác nhau mỗi hiệu ứng kèm theo sẽ giúp
người nghe cảm thấy hấp dẫn hơn với bài hát mình đang nghe. Như vậy ta có thể
hình dung một bảng biên tần là một khối MATRIX-LED nhấp nháy cao thấp
theo giai điệu trầm bổng của âm thanh.
Qua tìm hiểu trên các trang web tôi thấy rằng AVR là một họ vi điều
khiển do hãng Atmel sản xuất.Chip AVR là chip vi điều khiển 8 bits với cấu trúc
tập lệnh đơn giản hóa-RISC (Reduced Instruction Set Computer), một kiểu cấu
trúc đang thể hiện ưu thế trong các bộ vi điều khiển hiện nay.
So với các chip vi điều khiển 8 bits khác, AVR có nhiều đặc tính ưu việt
hơn hẳn, cả về giá thành lẫn tài nguyên hỗ trợ,dung lượng bộ nhớ :

• 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.

Thực tập cơ sở

Trang 3


[Type the document title]
• Nguồn
• Hầu

tài nguyên về source code, tài liệu, application note…rất lớn trên internet.

hết các chip AVR có những tính năng (features) sau:

- 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.
- 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)
Với những ưu điểm trên chúng tôi quyết định chọn dòng vi điều khiển
AVR cho mạch điều khiển trung tâm của mình.
3. Hướng phát triển
Trong thị trường hiện nay mạch điều khiển matrix LED rất thông dụng
không chỉ trong các biển quảng cáo hay trang trí mà còn được ứng dụng trong
bệnh viện, sân bay, trường học…Với khả năng thay đổi nội dung hiển thị trên
matrix LED chúng tôi tin rằng mạch nháy theo nhạc matrix-LED DANCER này
sẽ có thể phát triển hơn nữa đáp ứng nhiều mục đích khác trong cuộc sống như
matrix LED có thể thay đổi nội dung nháy theo bài hát như trên MEDIA đồng
thời hiển thị tên bài hát ngoài ra có thể kết hợp với bộ khuếch đại âm thanh ra
loa để trở thành một thiết bị giải trí hoàn thiện.

B. PHẦN NỘI DUNG
CHƯƠNG I. CƠ SỞ LÝ THUYẾT
I. GIỚI THIỆU LINH KIỆN
1. Vi điều khiển ATMEGA8
Thực tập cơ sở


Trang 4


[Type the document title]
a. Cấu tạo và chức năng
• Mô tả chung về Atmega8
Atmega8 là một con vi điều khiển thuộc dòng Mega AVR của hãng
Atmel. Dòng vi điều khiển này có nhiều tính năng hoạt động nổi trội như:
- Rất tiết kiệm năng lượng, hiệu suất cao
- CPU có kiến trúc RISC, có 130 lệnh hầu hết chúng chỉ thực hiện chỉ trong
một chu kỳ xung clock
- Có 23 thanh ghi đa dụng
- Tốc độ tối đa lên 16MIPS với thạch anh là 16MHZ
- Bộ nhớ phân đoạn có độ bền cao không dễ bay hơi
- Có 8KB bộ nhớ flash lập trình ISP
- 512 bytes EEROM
- 1KB SRAM
- Chu kỳ ghi và xóa 10.000 lần cho bộ nhớ Flash ROM và 100000 cho
EEPROM
- Dữ liệu không bị mất sau nhiều năm
- Có tính năng bảo mật
- Tính năng ngoại vi:
+ 2 bộ timer/counter 8 bit và 1 bộ so sánh
+ 1 bộ timer/counter 16 bit
+ Bộ đếm thời gian thực với dao động riêng
+ 3 kênh PWM
+ 6 kênh ADC 10 bit cho kiểu vỏ PDIP và 8 kênh ADC 10 bit cho
kiểu vỏ TQFP
+ Giao tiếp nối tiếp TWI
+ Lập trình nối tiếp USART giao tiếp nối tiếp SPI master/slave

+ Bộ so sánh Analog on chip
- Tính năng đặc biệt của atmega8
+ Hiệu chuẩn bộ dao động RC nội
+ Bộ nguồn ngắt bên trong và ngoài
+ Năm chế độ: Idle, giảm nhiễu ADC, tiết kiệm năng lượng, Power
down, chế độ chờ.
- Có 23 ngõ ra
- Được đóng gói trong 32 chân kiểu TQFP
- Điện áp hoạt động 4,5- 5,5V
- Tần số hoạt động 0- 16 MHz
• Đặc điểm Atmega8
Vi điều khiển Atmega8 của hãng ATMEL là một loại vi điều khiển AVR
mới với kiến trúc rất phức tạp.
Atmega 8 là bộ vi điều khiển RISC 8 bit tiêu thụ năng lượng nhưng đạt
hiệu suất rất cao, dựa trên kiến trúc RISC AVR. Bằng việc thực hiện các lệnh
Thực tập cơ sở

Trang 5


[Type the document title]
trong một chu kỳ xung nhịp, Atmega8 đạt được tốc độ xử lý dữ liệu lên đến 1
triệu lệnh/giây ở tần số 1MHz. Atmega8 còn cho phép người thiết kế hệ thống
tối ưu hoá mức độ tiêu thụ năng lượng mà vẫn đảm bảo tốc độ xử lý. Atmega 8
đã tích hợp đầy đủ các tính năng như bộ chuyển đổi ADC 10bit, bộ so sánh, bộ
truyền nhận nối tiếp, bộ định thời, bộ đếm thời gian thực, bộ điều chế độ rộng
xung…Do đó ta phải nghiên cứu và khai thác triệt để các tính năng này để ứng
dụng hiệu quả vào những mạch trong thực tế. Atmega8 sử dụng kiến trúc RISC
(Reduced Instruction Set Computer) AVR.
• Atmega8 với kiến trúc RISC có chỉ tiêu chất lượng cao và tiêu thụ

năng lượng ít:
- 130 lệnh hầu hết được thực hiện trong một chu kỳ xung nhịp.
- 32 thanh ghi làm việc đa năng.
- Tốc độ xử lý lệnh lên đến 16 triệu lệnh/giây ở tần số 16MHz.
• Bộ nhớ dữ liệu và bộ nhớ chương trình không tự mất dữ liệu:
- 8K byte bộ nhớ Flash lập trình được ngay trên hệ thống, có thể nạp xoá
- 10000 lần.
- 512 byte bộ nhớ EEFROM lập trình được ngay trên hệ thống, có thể ghi xóa
100000 lần.
- 1K byte bộ nhớ SRAM.
- Có thể giao tiếp với 8K byte bộ nhớ ngoài.
- Khóa bảo mật phần mềm lập trình được.
- Giao diện nối tiếp SPI để lập trình ngay trên hệ thống.
• Các tính năng ngoại vi:
- Hai bộ đếm/ bộ định thời 8 bit với chế độ so sánh và chia tần số tách biệt.
- Một bộ định thời 16 bit với chế độ so sánh, chia tần số tách biệt và chế độ bắt mẫu
(Capture Mode).
- Bộ đếm thời gian thực (RTC) với bộ dao động tách biệt.
- Bộ điều chế độ rộng xung PWM 8 bit.
- Bộ biến đổi ADC bên trong 8 kênh 10 bit.
- 2 bộ USART nối tiếp lập trình được.
- Bộ định thời Watchdog lập trình được với bộ dao động trên chip.
- Một bộ so sánh Analog.
• Các tính năng vi điều khiển đặc biệt:
- Có mạch power - on reset và có thể reset bằng phần mềm.
- Các nguồn ngắt ngoài và trong.
- Có 5chế độ ngủ: nghỉ (Idle). Tiết kiệm năng lượng (power save) và power
down, ADC Noise Reduction, Standby.
- Tần số làm việc có thể thay đổi được bằng phần mềm.
• Vào ra và các cách đóng vỏ:

- 23 đường vào ra lập trình được.
- 32 chân dán kiểu vỏ vuông (TQFP)
Thực tập cơ sở

Trang 6


[Type the document title]
• Điện thế làm việc:
- VCC = 2,7V đến 5,5V đối với Atmega8L.
- VCC = 4,5V đến 5,5V đối với Atmega8.
• Vùng tốc độ làm việc:
- 0 đến 8 MHz đối với Atmega8L.
- 0 đến 16 MHz đối với Atmega8.
• Sơ đồ chân Atmega8:

Hình 1. Sơ đồ chân Atmega8

Thực tập cơ sở

Trang 7


[Type the document title]
• Sơ đồ khối của Atmega8

Hình 2. Sơ đồ khối vi điều khiển AVR Atmega8

Thực tập cơ sở


Trang 8


[Type the document title]
• Chức năng các chân ATmega8
- VCC: Điện áp nguồn nuôi.
- GND: Đất.
- Port B (PB0…PB7):
+ Port B là port I/O 8 bit với điện trở kéo lên ở bên trong, cung cấp dòng điện
40mA có thể điều khiển trực tiếp led đơn.
+ Khi các chân Port B là các lối vào được đặt xuống mức thấp từ bên
ngoài, chúng sẽ là nguồn dòng nếu như các điện trở nối lên nguồn dương được
kích hoạt. Các chân này sẽ ở trạng thái tổng trở cao khi tín hiệu Reset ở
mức tích cực hoặc ngay cả khi không có dao động.
- Port C (PC0…PC6)
+ Port C là port I/O 8 bit với điện trở kéo lên ở bên trong, cung cấp dòng điện
40mA có thể điều khiển trực tiếp led đơn.
+ Khi các chân Port C là các lối vào được đặt xuống mức thấp từ bên
ngoài, chúng sẽ là nguồn dòng nếu như các điện trở nối lên nguồn dương được
kích hoạt. Các chân này sẽ ở trạng thái tổng trở cao khi tín hiệu Reset ở
mức tích cực hoặc ngay cả khi không có dao động.
+ Port C cũng đóng vai trò như 8 đường địa chỉ cao từ A8 đến A15 khi kết nối bộ
nhớ SRAM bên ngoài.
- Port D (PD0…PD7)
+ Port D là port I/O 8 bit với điện trở kéo lên ở bên trong, cung cấp dòng điện
40mA có thể điều khiển trực tiếp LED đơn.
+ Khi các chân Port D là các lối vào được đặt xuống mức thấp từ bên
ngoài, chúng sẽ là nguồn dòng nếu như các điện trở nối lên nguồn dương được
kích hoạt. Các chân này sẽ ở trạng thái tổng trở cao khi tín hiệu Reset ở
mức tích cực hoặc ngay cả khi không có dao động.

- Reset: Ngõ vào được đặt lại. ATmega8 sẽ được đặt lại khi chân này ở mức thấp
trong hơn 50ns hoặc ngay cả khi không có tín hiệu xung clock. Các xung ngắn
hơn không tạo ra tín hiệu đặt lại.
- AVCC: Cung cấp nguồn cho Port C và bộ chuyển đổi ADC hoạt động. Ngay khi
không sử dụng bộ chuyển đổi ADC thì chân AVCC vẫn phải đươc kết nối tới
nguồn VCC.
- AREF: Đây là chân điều chỉnh điện áp tham chiếu cho chuyển đổi A/D.
- XTAL1: Ngõ vào bộ khuếch đại đảo và ngõ vào mạch tạo xung nhịp bên ngoài.
- XTAL2: Ngõ ra bộ khuếch đại đảo.
- Bộ tạo dao động thạch anh :
+ XTAL1 và XTAL2 lần lượt là lối vào và lối ra của một bộ khuếch đại đảo, bộ
khuếch đại này được bố trí để làm bộ tạo dao động trên chip

Thực tập cơ sở

Trang 9


[Type the document title]
+ Để điều khiển được bộ Vi Điều Khiển từ một nguồn xung nhịp bên ngoài,
chân XTAL2 để không, chân XTAL1 được nối với tín hiệu dao động bên
ngoài.
b. Chế độ hoạt động
Vi điều khiển AVR được thiết kế với 3 bộ Timer/Counter theo thứ tự
Timer 0, Timer 1, Timer 2: Có chức năng định thời, đếm sự kiện, tạo xung điều
rộng PWM, căn chỉnh thời gian như một bộ RTC - Thời gian thực (chỉ có ở
Timer 2)... Ta sẽ xét từng bộ timer một xem sự khác nhau và giống nhau của
chúng để các bạn có thể chọn bộ timer tương thích với ứng dụng của bạn:
Ta sẽ thay định nghĩa Timer/Counter gọi chung là Timer.
• Timer 0:

Đây là một bộ định thời có độ dài 8bit, nó hoạt động tương tự như chế độ
timer 8bit của 8051 tức đếm từ 0-255 và tràn khi đạt 256 lúc này bộ đếm trở về
00H và cờ tràn TOV0 được set lên 1, có thể xảy ra 1 ngắt nếu có khai báo ngắt
timer này.
Các thanh ghi phụ trách điều khiển Timer0: Khi set bit ta chỉ set những bit
nào có giá trị bằng 1 và chỉ set bằng 0 khi bit đang ở mức 1 .
TCCR0 (Timer/Counter Control Register): Là thanh ghi điều khiển quá
trình hoạt động của bộ timer0
7

6

5

4

3

2
1
0
CS02
CS01
CS00
Mặc dù là thanh ghi 8bit nhưng chỉ có 3bit được sử dụng, có tác dụng
chọn xung clock cho bộ timer0, cứ mỗi xung clock là bộ đếm được tăng lên 1
đơn vị
Ta có bảng Set bit như sau:
CS02
0

0
0
0
1
1
1

CS01
0
0
1
1
0
0
1

CS00
0
1
0
1
0
1
0

Thực tập cơ sở

Miêu tả chức năng
Không có xung clock - Timer0 Stop
Fosc/1 - Bằng xung nhịp đưa vào chip

Fosc/8 - Tần số thạch anh chia 8
Fosc/64 - Tần số thạch anh chia 64
Fosc/256 - Tần số thạch anh chia 256
Fosc/1024 - Tần số thạch anh chia 1024
Đếm sự kiện bên ngoài ở chân T0 cạnh xuống
Trang 10


[Type the document title]
1

1
1
Đếm sự kiện bên ngoài ở chân T0 cạnh lên
TIMSK (Timer/Counter Interrupt Mask Register): Là thanh ghi mặt nạ
ngắt ta chỉ quan tâm tới bit TOIE0, nếu set bit này lên 1 thì sẽ có ngắt tràn xảy ra
khi bộ đếm tràn
7
6
5
4
3
2
1
0
OCIE2 TOIE2 TICIE1 OCIE1A OCIE1B TOIE1
TOIE0
TIFR (Timer/Counter Interrupt Flag Register): Là thanh ghi lưu trạng thái
cờ tràn của tất cả các timer, ở timer 0 chỉ có bit TOV0 là cờ tràn và cũng là cờ
chỉ thị ngắt

TCNT0: Là thanh ghi chứa giá trị đếm của timer0, ta sẽ ghi dữ liệu khởi
tạo timer vào đây, mặc định là 00H. Cách tính giá trị dựa vào giá trị tràn trừ đi
giá trị cần đặt. thời gian trễ phụ thuộc vào nguồn xung clock đưa vào timer cài
đặt ở thanh ghi TCCR0
Code mẫu cách khởi tạo timer0:
TCCR0=(1<Fosc/1024
TCNT0=100; //Khởi tạo giá trị bằng 100
TIMSK=(1<#asm("sei")

//Set bit I cho phép ngắt toàn cục

Về chương trình ngắt chúng ta sẽ xét trong bài sau.
• Timer 1:
Đây là bộ timer có độ phân giải 16bit đa chức năng, có thể tạo 2 kênh
PWM từ bộ timer này, InputCapture...
Bản chất là bộ timer 16bit nhưng do VDK lõi 8bit lên nó sẽ phải sử dụng
2 thanh ghi 8bit ghép lại thành 16bit là TCNT1H và TCNT1L: TCNT1H chứa
giá trị Byte cao 15-8, TCNT1L chứa Byte thấp 7-0. Hai thanh ghi này độc lập
nhau cho phép đọc và ghi vào nó hoàn toàn độc lập không chung đụng :)
TCCR1A và TCCR1B (Timer/Counter Control Register): Là 2 thanh ghi
điều khiển quá trình hoạt động của timer1:

Thực tập cơ sở

Trang 11


[Type the document title]

TCCR1A:
7
6
5
4
3
2
1
0
COM1A1 COM1A0 COM1B1 COM1B0 FOC1A FOC1B WGM11 WGM10
TCCR1B:
7
6
5
4
3
2
1
0
ICNC1
ICES1
- WGM13
WGM12
CS12
CS11
CS10
Cũng tương tự timer0 ở trên 3 bit CS12, CS11, CS10 của thanh ghi
TCCR1B là 3 bit chọn xung clock cho timer:
CS12 CS11 CS10 Miêu tả chức năng
0

0
0
Không có xung clock - Timer1 Stop
0
0
1
Fosc/1 - Bằng xung nhịp đưa vào chip
0
1
0
Fosc/8 - Tần số thạch anh chia 8
0
1
1
Fosc/64 - Tần số thạch anh chia 64
1
0
0
Fosc/256 - Tần số thạch anh chia 256
1
0
1
Fosc/1024 - Tần số thạch anh chia 1024
1
1
0
Đếm sự kiện bên ngoài ở chân T1 cạnh xuống
1
1
1

Đếm sự kiện bên ngoài ở chân T1 cạnh lên
OCR1A và OCR1B (Ouput Compare Register A và B): Ở timer này xuất
hiện thêm 2 thanh ghi 16bit mới, hiểu đơn giản đây là 2 thanh ghi chứa giá trị so
sánh với giá trị của thanh ghi TCNT1 nếu xảy ra quá trình TCNT1 đếm lên và
bằng với OCR1A hoặc OCR1B thì sẽ xảy ra một ngắt hoặc 1 sự thay đổi trạng
thái trên chân OC1A (hoặc chân OC1B) xảy ra (đây là cách tạo PWM bởi
Timer1). OCR1A và OCR1B có cấu tạo tương tự TCNT1, sử dụng 2 thanh ghi
8bit ghép thành OCR1AH, OCR1AL và OCR1BH, OCR1BL đây là cách mà ta
có thể tạo 2 kênh PWM độc lập với nhau.
Kỹ thuật điều chế xung PWM sẽ được nói ở bài khác, bài viết này chỉ giới
thiệu về các bộ timer của AVR
ICR1 (InputCapture Register 1): Là thanh ghi 16bit bao gồm ICR1H và
ICR1L. Khi có 1 sự kiện trên chân ICP1, thanh ghi ICR1 sẽ sao chép (Capture Chụp) giá trị của thanh ghi đếm TCNT1. Một ngắt có thể xảy ra trong trường
hợp này, vì thế Input Capture có thể được dùng để cập nhật giá trị TOP của
Timer1. Tính năng này có thể biến con VDK thành một máy đo tần số đơn giản.

Thực tập cơ sở

Trang 12


[Type the document title]
TIMSK (Timer/Counter Interrupt Mask Register):Là thanh ghi mặt nạ
ngắt ta quan tâm tới các bit sau:
7
6
5
4
3
2

1
0
OCIE2 TOIE2 TICIE1 OCIE1A OCIE1B TOIE1
TOIE0
TOIE1 bit quy định ngắt tràn Timer1 (tương tự trường hợp của Timer0).
OCIE1B là bit cho phép ngắt khi xảy ra trong việc so sánh TCNT1 với
OCR1B.
OCIE1A là bit cho phép ngắt khi xảy ra trong việc so sánh TCNT1 với
OCR1A.
TICIE1 là bit cho phép ngắt trong trường hợp Input Capture được dùng.
TIFR (Timer/Counter Interrupt Flag Register): Là thanh ghi cờ ngắt ta
không quan tâm nhiều về thanh ghi này chỉ biết là trong thanh ghi này có các bit
cờ TOV1, OCF1A, OCF1B, ICF1.
• Timer 2:
Là bộ timer có độ phân giải 8bit tương tự như timer0 nhưng với bộ timer
này có thêm tính năng mới đó là căn chỉnh thời gian do được thiết kế đặc biệt
với chân OSC riêng không dùng chung nguồn dao động của chip như timer0 và
timer1, có thể điều chế xung điều rộng PWM
TCNT2: Thanh ghi chứa giá trị đếm của timer 2
TCCR2 (Timer/Counter Control Register): Là thanh ghi điều khiển hoạt
động của timer 2
7
FOC2
CS22
0
0
0
0
1
1


6
5
4
3
2
1
0
WGM20 COM21 COM20 WGM21 CS22 CS21
CS20
Ta có bảng sau: FoscT2 là xung nhịp đưa vào 2 chân OSC của bộ timer 2
CS21
0
0
1
1
0
0

CS20
0
1
0
1
0
1

Thực tập cơ sở

Miêu tả chức năng

Không có xung clock - Timer 2 Stop
FoscT2/1 - Bằng xung nhịp đưa vào timer 2
FoscT2/8 - Tần số thạch anh chia 8
FoscT2/32 - Tần số thạch anh chia 32
FoscT2/64 - Tần số thạch anh chia 64
FoscT2/128 - Tần số thạch anh chia 128
Trang 13


[Type the document title]
1
1

1
1

0
1

FoscT2/256 - Tần số thạch anh chia 256
FoscT2/1024 - Tần số thạch anh chia 1024

OCR2 (Ouput Compare Register): Thanh ghi chứa giá trị so sánh với TCNT2
tương tự như timer 1
TIMSK (Timer/Counter Interrupt Mask Register): Là thanh ghi mặt nạ ngắt ta
quan tâm tới các bit sau:
7
OCIE2

6

TOIE2

5
TICIE1

4
OCIE1A

3
OCIE1B

2
TOIE1

1
-

0
TOIE0

- TOIE2 là bit quy định ngắt tràn Timer2 (tương tự trường hợp của Timer0,
timer1).
- OCIE2 là bit cho phép ngắt khi xảy ra trong việc so sánh TCNT2 với OCR2.
TIFR (Timer/Counter Interrupt Flag Register): Là thanh ghi cờ ngắt ta không
quan tâm nhiều về thanh ghi này chỉ biết là trong thanh ghi này có các bit
cờ TOV2, OCF2.
ASSR (Asynchronous Timer/Counter): Thanh ghi status của timer 2, chỉ bit AS2
là ghi/đọc, còn lại là chỉ đọc
7


6
-

5
-

4
-

-

3
AS2

2
TCN2UB

1
OCR2UB

0
TCR2UB

2. Ma trận LED.

Ma trận LED tức Dot Matrix LED là tập hợp nhiều đèn LED được bố trí
thành dạng “ma trận” hình chữ nhật hoặc vuông với số hàng là a và số cột là b.
Ma trận LED được dùng rất nhiều trong các ứng dụng hiển thị như các biển
quảng cáo, hiển thị thay thế LCD hoặc thậm chí dùng hiển thị video…Để giảm
số lượng các đường điều khiển, trong các ma trận LED các LED được nối chung

với nhau theo hàng và cột. Số lượng LED trên ma trận LED là axb trong khi số
lượng ngõ ra bằng tổng số hàng và cột: a + b. Việc điều khiển 1 ma trận LED
kích thước lớn đòi hỏi thiết kế một mạch driver và điều khiển rất phức tạp. Vi dụ
trình bày thao tác với 1 ma trận LED có kích thước 7x5 (7 hàng, 5 cột). ma trận
LED 7x5 thường được dùng để hiển thị các ký tự trong bảng mã ASCII thay cho
Thực tập cơ sở

Trang 14


[Type the document title]
Text LCD. Tuy nhiên, có thể ghép các ma trận LED này lại để hiển thị các loại
hình ảnh bất kỳ có độ phân giải thấp. Hình 1 mô tả một cấu trúc của một ma trận
LCD 7x5 với 12 ngõ ra được đặt tên từ C0…C4 và D0…D6 (C đại diện cho
Control line và D là Data line).

Hình 3. Ma Trận LED 7x5

Bên trong các ô của ma trận LED là các LED phát sáng. Trong mô hình
trên, Cathod (cực âm) của các LED trên mỗi hàng được nối chung với nhau và
ngõ ra chung là các ngõ D (Data). Các Anod của các LED trên mỗi cột được nối
chung tạo thành các đường C (Control). Thông thường, các đường D và C được
chọn sao số số lượng đường D nhiều hơn đường C hoặc sao cho số lương các
đường D gần nhất với số 8, 16, 32…(lũy thừa của 2). Lý do của việc chọn này
nhằm giảm kích thước bộ font chứa các ký tự hoặc hình ảnh hiển thị lên ma trận
LED, bạn sẽ hiểu rõ hơn khi tìm hiểu các điều khiển ma trận LED 7x5 bên dưới.

Thực tập cơ sở

Trang 15



[Type the document title]

Hình 4. Mô tả các mà ma trận LED 7x5 được dùng để hiển thị số 4

Trước hết chúng ta sẽ khảo cách cho sang các LED mà không cần quan
tâm đến bảng font. Quan sát cột thứ nhất (cột C0) trong hình 2a, trong cột này
chỉ có 2 LED ở hàng D2 và D3 là sáng, các LED còn lại tắt. Điều này được thực
hiện bằng cách kích chân C0 (Anod) lên mức cao, kéo các chân D2, D3 xuống
mức 0 trong khi các chân Data khác được giữ ở mức cao. Các cột khác được
thực hiện tương tự. Tuy nhiên, câu hỏi ở đây là làm sao hiển thị các cột với các
đèn LED sáng khác nhau trong khi các ngõ Cathod của chúng đều được nối
chung (thành các chân D). Ví dụ một người kéo tất cả 5 chân C0…C4 lên mức
cao vào xuất tín hiệu ra các chân D, khi đó tất cả các LED trên dùng một hàng sẽ
sáng hoặc tắt như nhau. “Bí quyết” ở đây chính là kỹ thuật “quét”, chúng ta sẽ
hiển thị tuần tự các cột với các giá trị tương ứng của chúng chứ không hiển thị
đồng thời. Trong ví dụ hiển thị số ‘4’, trước hết hãy kích chân C0 lên cao trong
khi các chân C1…C4 ở mức thấp, xuất tín hiệu ra các chân D để hiển thị lên cột
C0. Tiếp theo kéo chân C1 lên cao và các chân Control khác ở mức thấp, xuất
dữ liệu ra các chân D để hiển thị cột C1…Cứ như thế cho đến khi hiển thị hết
các cột thì quay lại cột C0. Quá trình này gọi là “quét LED”. Do tốc độ “quét”
rất cao nên chúng ta sẽ không có cảm giác “nhấp nháy”, các cột của ma trận như
được hiển thị đồng thời. Chú ý là độ sáng của LED phụ thuộc vào số cột LED,
nếu bạn “quét” quá nhiều cột LED, tỉ lệ thời gian “ON” của mỗi cột sẽ rất nhỏ
so với thời gian “OFF” vì phải chờ quét các cột khác. Vì thế nếu ma trận LED
có nhiều cột hoặc khi ghép nhiều ma trận, các mạch driver cần được sử dụng để
đảm bảo độ sáng của LED.
Giả sử mỗi LED đại diện cho 1 bit và các LED sáng đại diện cho giá trị
nhị phân 1 trong khi các LED tắt là số 0. Hình 2b thể hiện mô hình số nhị phân

Thực tập cơ sở

Trang 16


[Type the document title]
cho trường hợp hiển thị số 4 trên ma trận LED 7x5. Nếu xem mỗi cột của ma
trận là 1 con số 7 bit thì 5 giá trị cần thiết để hiền thị số ‘4’ là: 0x0C, 0x14,
0x24, 0x7F, 0x04. Bộ 5 giá trị này tạo thành mã font cho ký tự ‘4’, chúng sẽ
được định nghĩa trước và lưu trong bộ nhớ của chip điều khiển (AVR), mỗi lần
một ký tự được yêu cầu hiển thị, bộ font tương ứng của ký tự đó sẽ được “load”
ra và xuất lần lượt trên các đường Data, đây chính là lý do tại sao chúng ta gọi
các đường D là các đường Data. Cách “quét” LED tôi vừa trình bày là cách
“quét ngang”, bạn có thể thực hiện “quét dọc” nếu ứng dụng yêu cầu. Trong
phương pháp quét dọc, các chân hàng chung sẽ được dùng để chọn hàng cần
hiển thị, dữ liệu sẽ xuất ra theo từng hàng trên 5 cột và lần lượt thay đổi hàng
(hàng 0 trước, đến 1…và cuối cùng là 6). So sánh 2 cách quét cho trường hợp
ma trận LED 7x5, rõ ràng trong cách quét ngang chúng ta chỉ cần quet 5 cột cho
mỗi lần LED nên tỉ lệ thời gian ON sẽ cao hơn (1/5 so với 1/8 của cách quét
dọc). Mặt khác, nếu thực hiện quét dọc chúng ta cần 8 số số để tạo thành 1 bộ
font cho một ký tự và vì thế tốn nhiều bộ nhớ hơn cho việc lưu trữ bảng font.
Trong bài học này tôi thực hiện theo cách quét ngang và bảng font cũng được
xây dựng cho cách quét này.
3. IC 74HC595
a. Mô tả chung IC 74HC595:
- IC 74HC595 là IC ghi dịch 8 bit có chốt đầu ra dùng công nghệ CMOS cổng silic
tiên tiến. Thiết bị này sở hữu sự chống nhiễu và tiêu thụ điện áp thấp. Thiết bị
này chứa đựng 8 mẫu tuần tự song song kiểu D.
- Dòng vào thấp: 1uA max
- 8 bit đầu ra song song

- Phạm vi vận hành điện áp rộng
- Kết nối tầng nối tiếp
- Thanh ghi dịch có xóa trực tiếp
- Bảo đảm tần số chuyển dịch DC tới 30MHz
b. Sơ đồ chân IC:

Thực tập cơ sở

Trang 17


[Type the document title]

Hình 5. Sơ đồ chân IC 74HC595

+ Các chân 1, 2, 3, 4, 5, 6, 7 tương ứng với Q1, Q2, Q3, Q4, Q5, Q6, Q7
là ngõ ra của IC.
+ Chân 14 ( chân DS) là ngõ vào của IC ( đây là IC nối tiếp nên chỉ cần
một ngõ vào).
+ Chân 16 ( chân VCC ) là chân cấp nguồn dương ( từ 2V- 6V).
+ Chân 8 ( chân GND ) là chân nối đất cực âm của nguồn.
+ Chân 11 ( chân SHCP ) là chân đưa xung clock ( xung nhịp) vào IC và
khi có cạnh lên của xung thì IC đưa tín hiệu ở ngõ vào bộ nhớ của IC để chờ xử
lý. Trong đó: xung clock là một chuỗi tín hiệu logic 0 và 1 cũng có thể là 1 xen
kẽ với 0 có thể 0 với 1 ngẫu nhiên, nhưng nói chung là một chuỗi logic.

Hình 6. Xung clock điển hình

Cạnh lên cạnh xuống như hình trên. Cạnh lên là khi xung clock chuyển từ
trạng thái 0 lên 1 còn cạnh xuống là thời điểm trạng thái từ 1 xuống 0. Vậy khi

có cạnh lên của xung tại chân SHCP thì một tín hiệu logic từ ngõ vào của IC sẽ
được lưu giữ vào trong IC để chờ tín hiệu cho phép xử lý. Bộ nhớ tối đa của IC

Thực tập cơ sở

Trang 18


[Type the document title]
là 8 bit, nếu vượt quá ngưỡng này thì giá trị mới sẽ được đưa vào IC và đồng
thời giá trị cũ của IC sẽ được xóa đi.

Hình 7. Giả sử IC đã nạp đầy 8 bit nhưng ta vẫn nạp tiếp một bít nữa thêm vào.

Hình 8. Khi đó bit mới vừa nạp sẽ đẩy bit cũ nhất ra khỏi IC (mất luôn)

+ Chân 12 ( chân STCP ) là chân đưa xung clock vào IC để khi có cạnh
lên của xung thì IC đưa toàn bộ 8 bit data đã được lưu ra ngõ ra của IC

Hình 9. Nội dung bộ nhớ của I ra của IC vã ngõ ra của IC khi có xung cạnh lến STCP ứng với nội dung bộ nhớ hình 4

+ Chân 10 ( chân MR) là chân reset IC ( trả IC về trạng thái ban đầu- khi
chân này tích cực thì toàn bộ bộ nhớ của IC sẽ bị xóa tất cả bằng 0, tuy nhiên tín
hiệu ở ngõ ra không bị xóa mà vẫn giữ nguyên giá trị trước đó) và chân này tích
cực mức thấp ( LOW active ) có nghĩa là muốn reset IC thì phải đưa 0V vào
chân này.
+ Chân 13 ( chân OE ) là chân output enable chân khi được tích cực thì
mới cho phép ta điều chỉnh được giá trị ngõ ra. Khi tên chân IC mà có dấu gạch
trên đầu tức là nó tích cực thấp tức là muốn tích cực chân này thì ta phải đưa 0V
( GND) vào chân này. Còn nếu khi chân này không tích cực ( tức là đưa mức

logic 1 vào chân này thì ngõ ra bị đưa lên trạng thái trở kháng cao).
+ Chân 9 ( chân Q7S) chữ S viết tắt cho từ Serial ( nối tiếp) chân này
thường được dùng khi ta nối tiếp các IC 74HC595 với nhau ( chân Q7S của con
trước nối tiếp với DS của con sau ) chân này sẽ có giá trị của bit trọng số cao
của bộ nhớ IC ( bit mới được đưa vào sẽ nằm ở vị trí LSB- trọng số thấp ) nếu
mắc nối tiếp các IC74HC595 theo cách như vậy thì khi bit MSB bị đẩy ra khỏi
bộ nhớ của IC sẽ không mất đi mà trước đó nó đã được sao chép qua IC phía
sau.
Giản đồ thời gian về cách hoạt động của IC:

Thực tập cơ sở

Trang 19


[Type the document title]

Hình 10. Giản đồ thời gian về cách hoạt động của IC 74HC595

c. Hoạt động của IC 74HC595:
- Bảng hoạt động của IC 74HC595

Hình 11. Bảng hoạt động của IC 74HC595

- Sơ đồ hoạt động của IC 74HC595

Hình 12. Sơ đồ hoạt động của IC 74HC595

Thực tập cơ sở


Trang 20


[Type the document title]
- Sơ đồ logic của IC 74HC595

Hình 13. Sơ đồ logic của IC 74HC595

- Nguyên lý hoạt động IC 74HC595
+ Đưa chân xuống 0V, cho phép đầu ra của IC hoạt động
+ Đưa chân lên 5V, không cho phép xóa dữ liệu đầu vào
+ Tạo một xung ở chân clock SCK
+ Đưa dữ liệu vào chân data SER
+ Tạo một xung vào chân chốt dữ liệu RCK

Thực tập cơ sở

Trang 21


[Type the document title]
Ta đặt dữ liệu vào chân DS, và tạo một xung SHCP thì dữ liệu tại chân
DS sẽ được dịch vào thanh ghi 8-STAGE SHIFT REGISTER.
Lần lượt làm như trên 8 lần (dịch bit cao trước), thì ta được 8 bit trong
thanh ghi 8-STAGE SHIFT REGISTER.
Sau đó ta tạo một xung STCP thì 8 bit trong thanh ghi 8-STAGE SHIFT
REGISTER sẽ được sao chép sang thanh ghi 8-BIT STORAGE REGISTER.
Lúc này nếu chân OE ở mức thấp thì ngõ ra sẽ bằng với giá trị thanh ghi 8-BIT
STORAGE REGISTER, còn nếu chân OE ở mức cao thì ngõ ra ở trạng thái tổng
trở cao.

Chú ý:
- Khi dịch dữ liệu vào thanh ghi 8-STAGE SHIFT REGISTER, và chưa tạo xung
STCP thì thanh ghi 8-BIT STORAGE REGISTER sẽ giữ nguyên trạng thái và
ngõ ra cũng giữ nguyên trạng thái.
- Khi chân MR ở mức 0 thì dữ liệu trên thanh ghi 8-STAGE SHIFT REGISTER sẽ
bị xóa, còn thanh ghi 8-BIT STORAGE REGISTER sẽ giữ nguyên trạng thái và
ngõ ra cũng giữ nguyên trạng thái

Thực tập cơ sở

Trang 22


[Type the document title]
II. SƠ ĐỒ KHỐI VÀ CHỨC NĂNG

Hình 14. Sơ đồ khối mạch quang báo

• KHỐI GIẢI MÃ ĐỊA CHỈ CỘT :
Nhận tín hiệu từ Vi Điều Khiển, từ đó đưa ra tín hiệu cho phép cột LED
nào trên bảng đèn (ma trận LED) được phép sáng. Tại mỗi thời điểm chỉ có một
cột LED được phép sáng.Tín hiệu sau đó được đưa qua bộ đệm dòng cho cột. IC
được sử dụng cho bộ giải mã cột là 74HC595 - Ghi dịch 8 bit vào nối tiếp ra
song song
• KHỐI GIẢI MÃ HÀNG VÀ CHỐT DỮ LIỆU RA HÀNG:
Nhận tín hiệu từ Vi Điều Khiển. Dử liệu sau đó được đưa qua bộ đệm
dòng cho hàng sử dụng 16 con Transistor A1015 để phun dòng ra hàng
• KHỐI CÁC BỘ ĐỆM DÒNG CHO CỘT VÀ HÀNG :
Được sử dụng đề đảm bảo độ sáng của các LED trân màn hình là đồng
đều khi chỉ 1 LED sáng hay cả 8 LED của một cột đều sáng. Sử dụng

transistor(A1015) .
• ĐỆM DÒNG CHO HÀNG:
Để tính dòng điện cho IC đệm dòng hàng thì phải xem độ dài trên một
hàng có bao nhiêu con Led.
VD: Ta dùng matrix đang là 8x16 có16 Led nằm trên một hàng, giả sử tại
một thời điểm nào đó cả 16 Led này đều sáng, mỗi Led coi là 20mA, như vậy ta
cần một dòng điện ra hàng>=16*20mA = 320mA. (Cho một hàng) Bộ đệm dòng
này cũng có thể gọi là bộ phun dòng.
Thực tập cơ sở

Trang 23


[Type the document title]
• KHỐI ĐIỀU KHIỂN TRUNG TÂM (ATMEGA8):
Gồm vi điều khiển cú nhiệm vụ xuất tín hiệu điều khiển khối giải mã cột
và hàng để cung cấp sự điều khiển cho led ma trận
• KHỐI CẤP NGUỒN:
Có nhiệm vụ cấp đủ nguồn cho mạch điện nhưng bản thân nó không bị
quá dòng.
CHƯƠNG II. THIẾT KẾ MẠCH NGUYÊN LÝ
I. SƠ ĐỒ NGUYÊN LÝ

II. NGUYÊN LÝ HOẠT ĐỘNG
1. Nguyên lý làm việc toàn khối
Mạch điện sử dụng Vi Điều Khiển nên về phần cứng khá đơn giản.
Khối điều khiển trung tâm sử dụng Vi Điều Khiển atmega8.
Khối giải mã dữ liệu hàng sử dụng 16 con transistor ,chức năng giống như
cổng NOT.
Khối giải mã địa chỉ cột sử dụng IC 74HC595, đây là thanh ghi dịch 8-bit

vào nối tiếp ra song song. Ta sử dụng IC này nhằm mục đích tiết kiệm chân giao
tiếp giữa IC giải mã với Vi Điều Khiển. Chân DATA-IN (14) để đưa dữ liệu nối
tiếp vào, chân CLK (11) đưa xung đồng hồ dịch bit, chân LATCH(12) để chốt

Thực tập cơ sở

Trang 24


[Type the document title]
dữ liệu được gửi ra. 8 đầu ra được nối đến 8 cột của bảng LED thông qua mạch
đệm dòng.
Nguyên lý hoạt động: Chương trình phần mềm chứa trong Vi Điều Khiển
làm nhiệm vụ điều khiển chính mọi hoạt động của mạch. Chương trình phần
mềm gồm có nhiều chương trình con: chương trình hiển thị, chương trình cập
nhật.
2. Nguyên lý làm việc của ma trận LED
a. Nguyên tắc làm sáng đèn trên bảng LED
Khi muốn làm sáng LED đơn, ta cần đưa điên áp dương vào chân
Anode và điện áp âm vào chân Cathode với giá trị thích hợp, khi đó LED
sáng. Giá trị điện áp và dòng điện tuỳ thuộc vào màu sắc từng loại LED.
Dòng chảy qua các LED để đảm bảo độ sáng bình thường là từ 10mA cho
đến 25mA.
Khi ta muốn làm sáng một điểm trên bảng ma trận LED ta cũng
làm tương tự. Xét với bảng LED 5x7 dưới đây

b. Nguyên tắc quét bảng ma trận LED
Trong đề tài này em sử dụng hai bảng LED 8x8 ghép lại thành một bảng
cỡ 8x16 (8 hàng và 16 cột). Mỗi hiệu ứng sẽ được hiển thị trong một khung cỡ
8x8. Dưới đây là nguyên tắc quét và hiển thị một hiệu ứng trên khung hình 8x8.

Để hiển thị ký tự lên bảng LED, ở đây ta dùng phương pháp quét cột và
xuất dữ liệu hàng. Quá trình quét cột là ta gửi tín hiệu cho phép đến từng cột
trong từng thời điểm. Cùng lúc đó ta gửi dữ liệu hàng đến 8 hàng. Trong đề tài
này tín hiệu cho phép cột là mức logic ‘1’, và dữ liệu hàng tương ứng là mức ‘0’
hay ‘1’ của từng hàng, mức ‘0’ ứng với LED sáng (on) và mức ‘1’ là tắt (off).
• Đầu tiên ta đưa dữ liệu cần hiển thị đến 8 hàng, ví dụ 11100110
Thực tập cơ sở

Trang 25


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×