LỜI NÓI ĐẦU4A. PHẦN MỞ ĐẦU5B. PHẦN NỘI DUNG7CHƯƠNG I. CƠ SỞ LÝ THUYẾT7I. GIỚI THIỆU LINH KIỆN71. Vi điều khiển ATMEGA87a. Cấu tạo và chức năng7b. Chế độ hoạt động122. Ma trận LED.163. IC 74HC59519a. Mô tả chung IC 74HC595:19b. Sơ đồ chân IC:20c. Hoạt động của IC 74HC595:22II. SƠ ĐỒ KHỐI VÀ CHỨC NĂNG25CHƯƠNG II. THIẾT KẾ MẠCH NGUYÊN LÝ27I. SƠ ĐỒ NGUYÊN LÝ27II. NGUYÊN LÝ HOẠT ĐỘNG271. Nguyên lý làm việc toàn khối272. Nguyên lý làm việc của ma trận LED27a. Nguyên tắc làm sáng đèn trên bảng LED27b. Nguyên tắc quét bảng ma trận LED28c. Phương pháp tạo hiệu ứng nháy DANCER trên bảng LED:313. Lưu đồ thuật toán314. Chương trình lập trình33CHƯƠNG III. THI CÔNG MẠCH IN VÀ HÀN MẠCH38I. THIẾT KẾ MẠCH IN THEO SƠ ĐỒ NGUYÊN LÝ38II. LÀM MẠCH IN THỦ CÔNG39III. CHẠY THỬ VÀ SỬU LỖI421. Công đoạn chạy thử mạch.422. Sửa lỗi chạy mạch42CHƯƠNG IV. KẾT QUẢ BÁO CÁO43I. KẾT QUẢ NGHIÊN CỨU43II. KẾT QUẢ THI CÔNG44III. ĐÁNH GIÁ KẾT QUẢ44MỤC LỤC HÌNH ẢNHHình 1. Sơ đồ chân Atmega89Hình 2. Sơ đồ khối vi điều khiển AVR Atmega810Hình 3. Ma Trận LED 7x517Hình 4. Mô tả các mà ma trận LED 7x5 được dùng để hiển thị số 418Hình 5. Sơ đồ chân IC 74HC59520Hình 6. Xung clock điển hình21Hì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.21Hình 8. Khi đó bit mới vừa nạp sẽ đẩy bit cũ nhất ra khỏi IC (mất luôn)21Hì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 421Hình 10. Giản đồ thời gian về cách hoạt động của IC 74HC59522Hình 11. Bảng hoạt động của IC 74HC59522Hình 12. Sơ đồ hoạt động của IC 74HC59523Hình 13. Sơ đồ logic của IC 74HC59523Hình 14. Sơ đồ khối mạch quang báo25Hình 15. Mạch in hoàn chỉnh38Hình 16. Sơ đồ ghi chú linh kiện39Hình 17. Sơ đồ nguyên lý hoàn thiện42Hình 18. Kết quả mô phỏng42 LỜI NÓI ĐẦUNgà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.A. PHẦN MỞ ĐẦU1. Đặ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 MATRIXLED 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óaRISC (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.• Nguồn tài nguyên về source code, tài liệu, application note…rất lớn trên internet.• Hầu 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 (IO PORT) 2 hướng (bidirectional). 8 bits, 16 bits timercounter 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 RS232). 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
Trang 1MỤC LỤC
MỤC LỤC HÌNH ẢNH
Trang 2LỜ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ểnnhư 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ữngnghà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- Dancerdù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 caohiể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ềutrong quá trình tìm hiểu, thiết kế và hoàn thành đề tài này
Trang 3A 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ầnbằng thính giác đã nhàm chán và không đem lại hết sự thoải mái thú vị trongnhữ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 trangtrí 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ậynhó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ếthọ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 theonhạ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ềmmedia 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úpngườ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ấptheo 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ềukhiể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úctập lệnh đơn giản hóa-RISC (Reduced Instruction Set Computer), một kiểu cấutrú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ụngAVR, thậm chí không cần nguồn tạo xung clock cho chip (thường là các khốithạ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ằngbootloader 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
Trang 4• Nguồn tài nguyên về source code, tài liệu, application note…rất lớn trên internet.
• Hầu 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
- 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ểnAVR 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ụngkhông chỉ trong các biển quảng cáo hay trang trí mà còn được ứng dụng trongbệnh viện, sân bay, trường học…Với khả năng thay đổi nội dung hiển thị trênmatrix 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 đồngthờ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 raloa để 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
Trang 5a 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ãngAtmel 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ỉ trongmộ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
+ 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 chokiể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, Powerdown, chế độ chờ
Trang 6trong một chu kỳ xung nhịp, Atmega8 đạt được tốc độ xử lý dữ liệu lên đến 1triệu lệnh/giây ở tần số 1MHz Atmega8 còn cho phép người thiết kế hệ thốngtố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ộngxung…Do đó ta phải nghiên cứu và khai thác triệt để các tính năng này để ứngdụ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à powerdown, 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)
Trang 7• Đ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
Trang 8• Sơ đồ khối của Atmega8
Hình 2 Sơ đồ khối vi điều khiển AVR Atmega8
Trang 9• Chức năng các chân ATmega8
- VCC: Điện áp nguồn nuôi.
+ 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
- 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ắnhơ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ớinguồ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
Trang 10+ Để đ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ênngoà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ềurộ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ủachú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ắttimer này
Các thanh ghi phụ trách điều khiển Timer0: Khi set bit ta chỉ set những bitnà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
- - - - - CS02 CS01 CS00
Mặc dù là thanh ghi 8bit nhưng chỉ có 3bit được sử dụng, có tác dụngchọ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 CS01 CS00 Miêu tả chức năng
Trang 111 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 rakhi bộ đếm tràn
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ởitạ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ừ đigiá 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<<CS02)|(1<<CS00); //CS02=1, CS01=0, CS00=1: xung clock bằngFosc/1024
TCNT0=100; //Khởi tạo giá trị bằng 100
TIMSK=(1<<TOIE0); //Cho phép ngắt timer0
#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ênhPWM 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ứagiá trị Byte cao 15-8, TCNT1L chứa Byte thấp 7-0 Hai thanh ghi này độc lậpnhau 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:
Trang 12OCR1A và OCR1B (Ouput Compare Register A và B): Ở timer này xuấthiện thêm 2 thanh ghi 16bit mới, hiểu đơn giản đây là 2 thanh ghi chứa giá trị sosá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ạngthái trên chân OC1A (hoặc chân OC1B) xảy ra (đây là cách tạo PWM bởiTimer1) OCR1A và OCR1B có cấu tạo tương tự TCNT1, sử dụng 2 thanh ghi8bit 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ớithiệ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ườnghợp này, vì thế Input Capture có thể được dùng để cập nhật giá trị TOP củaTimer1 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
Trang 13TIMSK (Timer/Counter Interrupt Mask Register):Là thanh ghi mặt nạngắt ta quan tâm tới các bit sau:
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ớiOCR1B
OCIE1A là bit cho phép ngắt khi xảy ra trong việc so sánh TCNT1 vớiOCR1A
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 takhô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ộ timernà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ệtvớ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
Ta có bảng sau: FoscT2 là xung nhịp đưa vào 2 chân OSC của bộ timer 2
CS22 CS21 CS20 Miêu tả chức năng
Trang 141 1 0 FoscT2/256 - Tần số thạch anh chia 256
OCR2 (Ouput Compare Register): Thanh ghi chứa giá trị so sánh với TCNT2tương tự như timer 1
TIMSK (Timer/Counter Interrupt Mask Register): Là thanh ghi mặt nạ ngắt taquan tâm tới các bit sau:
OCIE2 TOIE2 TICIE1 OCIE1A OCIE1B TOIE1 - 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ôngquan tâm nhiều về thanh ghi này chỉ biết là trong thanh ghi này có các bit
Trang 15Text LCD Tuy nhiên, có thể ghép các ma trận LED này lại để hiển thị các loạihì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ậnLCD 7x5 với 12 ngõ ra được đặt tên từ C0…C4 và D0…D6 (C đại diện choControl 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ìnhtrê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ốichung tạo thành các đường C (Control) Thông thường, các đường D và C đượcchọ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àynhằ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ậnLED, 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
Trang 16Hì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 quantâm đến bảng font Quan sát cột thứ nhất (cột C0) trong hình 2a, trong cột nàychỉ 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ựchiệ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ốngmức 0 trong khi các chân Data khác được giữ ở mức cao Các cột khác đượcthự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ốichung (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ứccao 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 trongkhi 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ộtC0 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ếtcá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
Trang 17cho 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 matrậ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ầnmộ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ọicá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 Trongphương pháp quét dọc, các chân hàng chung sẽ được dùng để chọn hàng cầnhiể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 chomỗ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étdọ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 đượcxâ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 silictiê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:
Trang 18+ 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
Trang 19là 8 bit, nếu vượt quá ngưỡng này thì giá trị mới sẽ được đưa vào IC và đồngthờ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ínhiệu ở ngõ ra không bị xóa mà vẫn giữ nguyên giá trị trước đó) và chân này tíchcực mức thấp ( LOW active ) có nghĩa là muốn reset IC thì phải đưa 0V vàochâ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ạchtrê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ứclogic 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 contrướ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ố caocủa bộ nhớ IC ( bit mới được đưa vào sẽ nằm ở vị trí LSB- trọng số thấp ) nếumắ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íasau
Giản đồ thời gian về cách hoạt động của IC:
Trang 20Hì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
Trang 21- 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