CHƯƠNG 4 : BÁO CÁO KẾT QUẢ THI CÔNG
I. Kết quả thi công:
Sau thời gian thi công,mạch đã hoàn thành và chạy ổn định,đã đạt gần đuợc hết nhưng yêu cầu đề ra.Tuy nhiên do thời gian phải hoàn thành tương đối ngắn và khả năng còn hạn chế nên vẫn còn một số yêu cầu chưa hoàn thành được,em rất mong được sự chỉ dẫn và góp ý của thầy cô. Em xin chân thành cảm ơn!
II. Hướng phát triển đè tài:
Có thể mở rộng giao tiếp với máy tính,nhập nội dung cần hiển thị từ máy tính và xuất ra mạch để hiển thị.
Ta có thể ghép nối với mạch hiển thị nhiệt độ,thời gian,
Điều khiển chu kỳ quét led để hiển thị nhiều màu sắc,hình ảnh .
56 trang |
Chia sẻ: linhlinh11 | Lượt xem: 775 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Luận văn Thiết kế và thi công mạch quang báo, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Họ và tên sinh viên :Nguyễn Xuân Hoàng Lớp: 03ĐT1
MSSV:103101031
Giáo viên hướng dẫn : Th.S Lê Trung Tín
Tên đề tài:
THIẾT KẾ VÀ THI CÔNG MẠCH QUANG BÁO
Nhận xét của giáo viên hướng dẫn :
TP. Hồ Chí Minh, Ngày tháng 1 năm 2008
Giáo viên hướng dẫn
Th.s Lê Trung Tín
NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
Họ và tên sinh viên : Nguyễn Xuân Hoàng Lớp: 03ĐT1
MSSV: 103101031
Giáo viên phản biện :
Tên đề tài:
THIẾT KẾ VÀ THI CÔNG MẠCH QUANG BÁO
Nhận xét của giáo viên phản biện :
TP. Hồ Chí Minh, Ngày tháng 1 năm 2008
Giáo viên phản biện
Th.s Phạm Hùng Kim KhánhMỤC LỤC
CHƯƠNG 1: GIỚI THIỆU VỀ CÁC LOẠI QUANG BÁO
CHƯƠNG 2:GIỚI THIỆU VỀ CÁC LOẠI IC SỬ DỤNG TRONG MẠCH
I. Bộ vi điều khiển
1. chức năng của vi điều khiển trong hệ thống
2. Lựa chọn vi điều khiển trong hệ thống
3. Tìm hiểu vi điều khiển Atmêga 8515
3.1. Giới thiệu vi điều khiển Atmêga 8515
3.1.1. Bộ nhớ bên trong
3.1.2. Cấu trúc vi điều khiển Atmêga 8515
4. Tập lệnh vi điều khiển Atmêga 8515
II. Vi mạch 74HC595
III. Vi mạch 74HC4094
IV. Vi mạch SN7407
V. IC khuếch đại dòng IRF244
VI. Led matrix 8X8
CHƯƠNG 3:THIẾT KẾ VÀ THI CÔNG MẠCH QUANG BÁO
I. Sơ đồ khối mạch quang báo
II. Sơ đồ nguyên lý mạch quang báo
1.Mạch vi điều khiển
2.Mạch khuếch đại và quét hàng
2.1.Sơ đồ nguyên lý
2.2. Nguyên tắc hoạt động
2.3.Sơ đồ mạch in
3.Mạch quét cột và hiển thị
3.1. Sơ đồ nguyên lý
3.2. Nguyên tắc hoạt động
3.3 Sơ đồ mạch in
4. Sơ đồ nguyên lý toàn mạch
III. Lưu đồ giải thuật
IV. Chương trình
CHƯƠNG 4: BÁO CÁO KẾT QUẢ THI CÔNG
I. Kết quả thi công
II. Hướng phát triển đề tài
III. Tài liệu tham khảo
LỜI NÓI ĐẦU
Với sự phát triển ngày càng nhanh chóng của khoa học kỹ thuật như hiện nay, việc hiển thị thông tin đã có nhiều bước tiến đáng kể, nhất là về mặt hình thức. Thông tin đến với mọi người không chỉ đơn thuần chỉ thể hiện đúng nội dung mà còn thu hút sự quan tâm chúng ta bằng chính hình thức bề ngoài, về kiểu dáng, về cách trình bày và về cách trang trí lên nội dung thông tin.
Kỹ thuật quang báo được ứng dụng trong nhiều lĩnh vực khác nhau tùy theo mục đích người thiết kế. Tuy nhiên, chúng có đặt điểm chung là tạo mỹ quan và tăng hiệu quả trong thông tin. Mức độ ứng dụng của kỹ thuật này cũng rất đa dạng, phong phú. Từ dạng đơn giản như đèn giao thông đến các dạng phức tạp hơn như “bảng đèn” với nhiều kỹ thuật chạy chữ hay phức tạp hơn nữa như là các panô quảng cáo với các hình ảnh rất đa dạng. Các thông tin chữ hay hình ảnh quảng cáo này có thể tạo ra từ LCD hoặc tổ hợp các điểm sáng trên một ma trận điểm LED. Có thể điều khiển những điểm LED này bằng nhiều phương án khác nhau. Phổ biến hiện nay là sử dụng kit vi điều khiển giao tiếp máy tính nhờ vào đặc tính gọn nhẹ rất linh động trong thiết kế và đây cũng là nội dung của đề tài này .
Đề tài ứng dụng kỹ thuật quang báo để hiển thị nội dung một câu văn bản hoặc những kí tự ra ma trận LED. Vi điều khiển Atmêga8515 được dùng để điều khiển hệ thống quang báo .
Đây là đề tài mang tính hệ thống, đòi hỏi rất nhiều kiến thức liên quan nên việc thực hiện đề tài chắc chắn sẽ không tránh khỏi những sai sót, rất mong các thầy cô thông cảm và cho những lời góp ý.
Em xin chân thành cảm ơn thầy Lê Trung Tín, thầy đã tận tình hướng dẫn, giúp đỡ, tạo nhiều điều kiện cho em trong việc tìm hiểu đề tài cũng như trong quá trình thực hiện làm đồ án để em có thể hoàn thành tốt Luận Văn Tốt Nghiệp. Xin cảm ơn các bạn đã giúp đỡ mình trong suốt thời gian làm đồ án.
SVTH: Nguyễn Xuân Hoàng
LỚP: 03ĐT1 MSSV: 103101031
CHƯƠNG 1: TỔNG QUAN VỀ QUANG BÁO
Giới Thiệu Các Loại Quang Báo:
Loại quang báo mà nội dung hiển thị của nó dược lưu trữ trong bộ nhớ Rom. Loại quang báo này rất bất tiện vì khi muốn thay đổi nội dung của nó ta cần phải nạp lại nội dung trong Rom, điều đó thì rất bất tiện và không có tính kinh tế. Chính vì vậy mà nó ít được sử dụng.
Loại quang báo giao tiếp với bàn phím: để nhập nội dung cần hiển thị ta chỉ cần dùng bàn phím nhập vào nội dung. nó có thể thay đổi nội dung cần hiển thị một cách nhanh chóng nhưng khả năng hiển thị của nó bị giới hạn vì nó chỉ có thể hiển thị các chữ cái đơn giản.
Loại quang báo giao tiếp với máy tính: loại quang báo này được điều khiển bằng máy vi tính, khả năng hiển thị của nó rất đa dang. Thông thường loại quang báo này được thiết kế để truy xuất từng điểm.
Loại quang báo giao tiếp kết hợp giữa Kit vi điều khiển với máy tính: loại này được sử dụng rất phổ biến vì tính đa dạng và phong phú của nó, Nó rất thuận tiện khi thay đổi nội dung hiển thị cũng như khả năng hiển thị các dạng hình ảnh phức tạp khác. Nó có thể kiểm tra nội dung cần hiển thị một cách chính xác và nhanh chóng thông qua màn hình giao tiếp của máy vi tính.
CHƯƠNG 2: GIỚI THIỆU CÁC VI MẠCH ĐƯỢC SỬ DỤNG TRONG MẠCH QUANG BÁO.
I. Bộ vi điều khiển :
1. Chức năng của vi điều khiển trong hệ thống:
Vi điều khiển trong mạch điện được ví như bộ não của con người. Nó chi phối hầu như tất cả mọi hoạt động của hệ thống, có thể tự xử lý các tình huống trong phạm vi của mình tùy theo yêu cầu và khả năng của người lập trình.
Đối với hệ thống quang báo, vi điều khiển sẽ lấy thông tin trong bộ nhớ của mình hoặc sẽ được máy tính truyền xuống đem ra hiển thị bằng ánh sáng. Tùy theo yêu cầu của người lập trình mà vi điều khiển sẽ cho phép những thông tin này hiển thị tĩnh hoặc động, di chuyển ngang hoặc dọc.
2. Lựa chọn bộ vi điều khiển:
Có bốn họ vi điều khiển 8 bit chính là: 6811 của Motorola, 8051 của Intel, Z8 của Zilog và PIC 16x của Microchip Technology. Mỗi loại trên đều có một tập lệnh và thanh ghi riêng nên chúng không tương thích lẫn nhau. Cũng có các bộ vi điểu khiển 16 bit và 32 bit khác. Vậy tiêu chuẩn để lựa chọn bộ vi điều khiển khi thiết kế là gì? Có ba tiêu chuẩn chính là: Đáp ứng yêu cầu tính toán hiệu quả và tinh tế. Có sẵn có công cụ phát triển phẩn mềm, chẳng hạn như các trình biên dịch, trình hợp dịch vả gỡ rối. Nguồn cung cấp bộ vi điều khiển có nhiều và tin cậy. Chúng ta sẽ nghiên cứu rõ hơn về các tiêu chuẩn này.
Tiêu chuẩn đầu tiên khi lựa chọn một bộ vi điều khiển, đó là phải đáp ứng yêu cầu tính toán một cách hiệu quả và kinh tế. Do vậy, trước hết cần xem xét bộ vi điều khiển 8 bit, 16 bit hay 32 bit là thích hợp. Một số tam số kỹ thuật cần được cân nhắc khi lựa chọn là:
Tốc độ: tốc độ lớn nhất mà bộ vi điều khiển hỗ trợ là bao nhiêu.
Kiểu đóng vỏ: là kiểu 40 chân DIP, kiểu QFP hay là kiểu đóng vỏ khác (DIP là vỏ nhựa hai hàng chân, QFP là vỏ vuông dẹp). Kiểu đóng vỏ quan trọng khi có yêu cầu về không gian, kiểu lắp ráp và tạo mẫu thử cho sản phẩm cuối cùng.
Công suất tiêu thụ: là một tiêu chuẩn cần đặt biệt lưu ý nếu sản phẩm dùng pin hoặc ắc quy.
Dung lượng bộ nhớ RAM và ROM trên chip.
Số chân vào/ra và bộ định thời trên chip.
Khả năng dễ dàng nâng cao hiệu suất hoặc giảm thấp công suất tiêu thụ.
Giá thành trên một đơn vị khi mua số lượng lớn: đây là vấn đề có ảnh hưởng đến giá thành cuối cùng của sản phẩm.
Tiêu chuẩn thứ hai khi lựa chọn bộ vi điều khiển là khả năng phát triển các sẩn phẩm như thế nào? Ví dụ , khả năng có sẵn các trình hợp dịch, gỡ rối, biên dịch ngôn ngữ C, mô phỏng, điều kiện hỗ trợ kỹ thuật cũng như khả năng sử dụng trong nhà và bên ngoài môi trường. Trong nhiều trường hợp,sự hỗ trợ của nhà cung cấp thứ ba cũng hết sức quan trọng.
Tiêu chuẩn thứ ba là khả năng sẵn sàng đáp ứng về số lượng ở hiện tại cũng như trong tương lai. Đối với một số nhà thiết kế,vấn đề này thậm chí còn quan trọng hơn cả hai tiêu chuẩn đầu tiên. Hiện nay, trong các họ vi điều khiển 8 bit hàng đầu thì 8051 có số lượng lớn nhất và có nhiều hãng cung cấp. Nhà cung cấp là nhà sản xuất bên cạnh nhà sáng chế bộ vi điều khiển. Đối với 8051 thì nhà sáng chế là Intel, nhưng hiện naycó rất nhiều hãng khác cùng sản xuất. Các hãng này gồm: Intel, Atmel, Philips/Signetics, AMD, Siemens, Matra, Dallas và Semiconductior.
Ở Việt Nam, cho đến nay họ vi điều khiển At89xx vẫn đang được dùng rất phổ biến. Nhưng bên cạnh đó, trên thị trường đã xuất hiện những bộ vi điều khiển với tính năng vượt trội hơn họ At89xx về tốc độ, dung lượng và khả năng tích hợp bên trong. Nổi bật là họ vi điều khiển AVR của hãng Atmel.
Do hệ thống quang báo cần có bộ vi điều khiển có tốc độ cao và dung lượng bộ nhớ lớn nên em đã chọn họ vi điều khiển AVR để đáp ứng cho đề tài này.
3 Tìm hiểu vi điều khiển Atmega8515:
Atmega8515 là một trong số các chip thuộc họ vi điều khiển AVR của Atmel. Một số chip khác thuộc họ AVR là:
AT90S1200
AT90S2313
AT90S2323 and AT90S2343
AT90S2333 and AT90S4433
AT90S4414 and AT90S8515
AT90S4434 and AT90S8535
AT90C8534
ATtiny10, ATtiny11 and ATtiny12
ATtiny15
ATtiny22
ATtiny26
ATtiny28
ATmega8/8515/8535
ATmega16
ATmega161
ATmega162
ATmega163
ATmega169
ATmega32
ATmega323
ATmega103
ATmega64/128
AT86RF401.
3.1 Giới thiệu vi điều khiển Atmega8515:
Loại Atmega8515 được dùng phổ biến nhất tại Việt Nam có hình dáng kiểu 40 chân DIP, với nguồn cung cấp trong khoảng từ 4V - 5,5V.
Hình 2-1
Ngoài ra còn có hai kiểu dáng khác là:
hình 2-2 hình 2-3
Những đặc tính của Atmega8515 là:
Tập lệnh mạnh gồm 130 lệnh. Hầu hết các lệnh có chiều dài cố định và thực thi chỉ trong một chu kỳ xung nhịp.
32 thanh ghi đa năng đựơc nối trực tiếp với khối ALU.
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%).
Khả năng tốc độ xử lý lên đến 16MPIS (16 triệu lệnh trên giây).
8K byte bộ nhớ chương trình Flash có thể ghi/xóa 10.000 lần.
512 byte bộ nhớ lưu trữ lập trình được EEPROM có thể ghi/xóa 100.000 lần.
512 byte bộ nhớ RAM tĩnh (SRAM).
Kết nối đến bộ nhớ SRAM ngoài lên đến 64K byte.
5 port truy xuất (PA, PB, PC, PD, PE) gồm 35 đường I/O.
3 kênh PWM(điều biến độ rộng xung).
16 ngắt trong và ngoài.
Hai bộ Timer/Counter 8bit, trong đó Timer/Counter0 tích hợp PWM.
Một bộ Timer/Counter 16bit.
Một bộ định thời Watchdog với bộ dao động nội.
Bộ dao động RC nội nên khi hoạt động có thể không dùng thạch anh.
3 chế độ ngủ để giảm thiểu năng lượng là: Idle, Power-down và Standby.
Một bộ so sánh Analog.
Tích hợp bộ chuyển đối Analog – Digital phân giải 10 bits, nhiều kênh.
Tích hợp giao diện nối tiếp USART (tương thích chuẩn nối tiếp RS-232).
Tích hợp giao diện nối tiếp Serial Peripheral Interface (SPI) Master và Slaver.
Với những đặc tính và khả năng trên Atmega8515 hoàn toàn có thể đáp ứng được yêu cầu của đề tài mà không cần dùng thêm bộ nhớ ngoại.
3.2 Cấu trúc của vi điều khiển Atmega8515:
AVR Atmega8515 có cấu trúc Harvard, nghĩa là có bộ nhớ dữ liệu và bộ nhớ chương trình tách biệt nhau. Hình 2-4 minh họa một bản phác thảo cấu trúc bên trong của bộ điều khiển. Bus dữ liệu dùng cho bộ nhớ dữ liệu là một bus 8 bit, cho phép nối hầu hết các bộ phận ngoại vi với tệp thanh ghi (register file). Bus dữ liệu dùng cho bộ nhớ chương trình có độ rộng 16 bit và chỉ nối với thanh ghi lệnh.
Hình 2-4
Hình 2-5
Bộ nhớ chương trình là bộ nhớ Flash, với dung lượng là 8K byte(4K x 16 bit). Bộ nhớ chương trình được truy cập theo từng chu kỳ đồng hồ và một lệnh được nạp vào thanh ghi. Thanh ghi lệnh nối với tệp thanh ghi bằng cách lựa chọn xem thanh ghi nào sẽ được ALU sử dụng để thực thi lệnh. Lối ra của thanh ghi lệnh được giải mã bằng bộ giải mã lệnh để quyết định chọn tín hiệu điều khiển nào sẽ được kích hoạt để hoành thành lệnh hiện tại.
Bộ nhớ dữ liệu được phân chia thành nhiều loại khác nhau. Hình 2-5 minh hoạ các bản đồ bộ nhớ khác nhau có trên vi điều khiển Atmega8515. Bộ nhớ dữ liệu có 5 thành phần khác nhau:
Một tệp thanh ghi(register file) với 32 thanh ghi có độ rộng 8 bit. Tất cả các bộ vi điều khiển của họ AVR đều có tệp thanh ghi này.
64 thanh ghi I/O, mỗi thanh ghi 8 bit. Các thanh ghi I/O này thực chất là một phần của bộ nhớ SRAM trên chip và có thể truy nhập hoặc như bộ nhớ SRAM với các địa chỉ giữa $20 và $5F hoặc như các thanh ghi I/O với các địa chỉ giữa $00 đến $3F. Hầu hết các thanh ghi này thường được trao đổi như các thanh ghi I/O chứ không phải như bộ nhớ SRAM.
Bộ nhớ SRAM bên trong. Bộ nhớ SRAM được sử dụng cho ngăn xếp cũng như để lưu trữ các biến. Trong thời gian có ngắt và gọi đoạn chương trình(subroutine), giá trị hiện tại của bộ đếm chương trình thường được lưu trữ trong ngăn xếp. Kích thước của ngăn xếp bị giới hạn bởi bộ nhớ SRAM có mặt trên chip. Vị trí của ngăn xếp được chỉ thị bởi con trỏ ngăn xếp. Con trỏ ngăn xếp có dung lượng 2 byte. Con trỏ ngăn xếp cần phải được khởi tạo sau khi đặt lại(Reset) và trước khi ngăn xếp có thể được sử dụng.
Bộ nhớ SRAM bên ngoài. Đặc tính này chỉ có ở các bộ vi xử lý cỡ lớn của họ AVR. Bộ vi xử lý có các cổng để truy nhập bộ nhớ và dữ liệu bên ngoài.
EEFROM. Bộ nhớ EEFROM được truy nhập theo theo một bản đồ bộ nhớ riêng biệt. Địa chỉ bắt đầu của bộ nhớ EEFROM luôn là $0000. Bộ nhớ EEFROM có thể được đọc và ghi bởi bất kì chương trình nào. Việc đọc bộ nhớ EEFROM diễn ra nhanh hơn việc ghi vào bộ nhớ EEFROM. Bộ nhớ EEFROM có thể ghi vào khoảng 100.000 lần.
Bây giờ chúng ta sẽ tìm hiểu các bộ phận khác nhau hình thành nên bộ vi điều khiển Atmega8515, đó là:
Tệp thanh ghi.
Khối số học logic.
Bộ nhớ I/O.
Bộ nhớ EEFROM.
Các cổng I/O.
Bộ nhớ SRAM.
Bộ truyền nhận UART.
Cấu trúc ngắt.
Bộ định thời.
Bộ biến đổi A/D.
Bộ định thời Watchdog.
Tệp thanh ghi:
Atmega8515 có 32 thanh ghi đa năng. Một số trong các thanh ghi này còn có các chức năng riêng bổ sung. Các thanh ghi được đặt tên từ R0 đến R31. Tệp thanh ghi được tách thành 2 phần, mỗi phần gồm 16 thanh ghi, đánh số từ R0 đến R15 và R16 đến R31. Tất cả các lệnh thao tác trên các thanh ghi đều có thể truy nhập trực tiếp và truy nhập trong một chu kỳ đơn đến tất cả các thanh ghi. Nhưng có một ngoại lệ là các lệnh SBCI, SUBI, CPI, ANDI, ORI và WI, các lệnh này chỉ tác động đến các thanh ghi R16 đến R31.
Các thanh ghi R0 và R26 đến R31 có các chức năng bổ sung. Thanh ghi R0 được sử dụng trong các lệnh nạp bộ nhớ chương trình LPM (Load Program Memory), trong khi các thanh ghi R26 đến R31 được sử dụng làm các thanh ghi con trỏ như minh hoạ trên hình 2-6. Các thanh ghi con trỏ này được sử dụng trong nhiều lệnh gián tiếpdùng cho thanh ghi (register indirect instruction).
Hình 2-6
Khối số học logic:
Khối số học logic (ALU) thực hiện các thao tác như thao tác bit, phép tính số học và logic trên nội dung của các thanh ghi và ghi ngược kết quả vào tệp thanh ghi trên thanh ghi đã được chỉ định. Các thao tác này được thực hiện trên một chu kỳ đồng hồ đơn lẻ. mỗi một thao tác ALU đều làm ảnh hưởng đến các cờ trong thanh ghi trạng thái(Status), tùy thuộc vào lệnh.
Truy nhập bộ nhớ và thực thi lệnh:
Atmega8515 được điều khiển bởi đồng hồ hệ thống, đồng hồ này có thể ở bên ngoài hoặc một đồng hồ RC bên trong. Đồng hồ hệ thống này không qua bất kỳ bộ chia nào và được sử dụng trực tiếp cho tất cả các thao tác truy nhập bên trong bộ xử lý. Bộ xử lý có một đường ống hai tầng, và lệnh tìm nạp/giải mã (fetch/decode) được thực hiện đồng thời với thực thi lệnh.
Cứ mỗi lần lệnh được tìm nạp có liên quan đến ALU, nó có thể được thực thi bởi khối ALU trong một chu kỳ đơn lẻ.
Tuy nhiên, việc truy nhập bộ nhớ SRAM lại mất đến 2 chu kỳ. Nguyên nhân là việc truy nhập bộ nhớ SRAM sử dụng một thanh ghi con trỏ dùng cho địa chỉ nhớ SRAM. Thanh ghi con trỏ này chỉ là một trong các thanh ghi con trỏ (các cặp thanh ghi X, Y hoặc Z) có trên chip. Chu kỳ đồng hồ thứ nhất được cần đến để truy nhập tệp thanh ghi và để thao tác trên thanh ghi con trỏ (các lệnh truy nhập bộ nhớ SRAM cho phép tăng địa chỉ trước/sau thao tác trên thanh ghi con trỏ). Ở thời điểm kết thúc của chu kỳ đồng hồ thứ nhất, khối ALU thực hiện pháp tính này, và sau đó địa chỉ này được sử dụng để truy nhập ô nhớ SRAM và để ghi vào ô nhớ này (hoặc đọc ra từ đó vào thanh ghi đích).
Bộ nhớ vào ra:
Bộ nhớ vào ra là “xa lộ” đến với tất cả các bộ phận ngoại vi của bộ xử lý Atmega8515. Nó được thiết kế giống như SRAM và có thể được trao đổi theo hai cách: giống như bộ nhớ SRAM hoặc như các thanh ghi I/O. Nếu giống như SRAM, các địa chỉ phía bên kia $20 đến $5F. Còn nếu giống như các thanh ghi I/O, các địa chỉ bắt đầu từ $00 đến $3F.
Ta sẽ xem xét các thanh ghi I/O như các thanh ghi chứ không phải như bộ nhớ SRAM. Sau đây là phần giới thiệu các thanh ghi chức năng trong Atmega8515:
Thanh ghi trạng thái (SREG).
Thanh ghi con trỏ ngăn xếp (SP).
Thanh ghi che ngắt chung (GIMSK).
Thanh ghi cờ ngắt chung (GIFR).
Thanh ghi điều khiển toàn bộ vi điều khiển (MCUCR).
Thanh ghi trạng thái bộ xử lý (MCUSR).
Thanh ghi điều khiển Timer/Counter0 (TCCR0).
Thanh ghi Timer/Counter0 (TCNT0).
Thanh ghi điều khiển Timer/Counter1 A (TCCR1A).
Thanh ghi điều khiển Timer/Counter1 B (TCCR1B).
Thanh ghi TCNT1.
Các thanh ghi so sánh lối ra bộ Timer/Counter1 (OCR1A).
Các thanh ghi so sánh lối ra Timer/Counter1 (OCR1B).
Các thanh ghi Timer/Counter1 Input Capture (ICR1H).
Thanh ghi điều khiển bộ định thời Watchdog (WDTCR).
Thanh ghi dữ liệu bộ nhớ EEFROM (EEDR).
Thanh ghi điều khiển EEFROM (EECR).
Thanh ghi hướng dữ liệu các cổng (DDRx).
Thanh ghi dữ liệu (PORTx).
Thanh ghi dữ liệu I/O SPI.
Thanh ghi trạng thái SPI.
Thanh ghi điều khiển SPI.
Thanh ghi dữ liệu I/O UART.
Thanh ghi trạng thái UART.
Thanh ghi điều khiển UART.
Thanh ghi tốc độ Baud UART.
Thanh ghi trang thái và điều khiển bộ so sánh Analog (ACSR).
Bộ nhớ EEFROM:
Bộ nhớ EEFROM được truy nhập qua các thanh ghi truy nhập EEFROM, cụ thể là: thanh ghi địa chỉ EEFROM (EEAR), thanh ghi dữ liệu EEFROM (EEDR), và thanh ghi điều khiển EEFROM (EECR).
Thanh ghi EEAR trên thực tế là 2 thanh ghi: EEARL và EEARH. Thanh ghi EEAR được sử dụng để đặt địa chỉ của bộ nhớ EEFROM mà dữ liệu cần ghi vào đó hoặc cần đọc ra từ đó. Thanh ghi EEAR là một thanh ghi đọc ghi, nghĩa là thanh ghi có thể được đọc để xem cái gì đã đặt vào địa chỉ EEFROM.
Thanh ghi EEDR là thanh ghi dữ liệu bộ nhớ EEFROM và là một thanh ghi đọc/ghi. Khi ta muốn ghi dữ liệu vào bộ nhớ EEFROM, ta nạp các dữ liệu cần thiết vào thanh ghi EEDR. Khi ta muốn đọc dữ liệu từ bộ nhớ EEFROM, thì phải chờ sau khi quá trình ghi thực hiện xong, ta đọc thanh ghi EEDR dùng cho dữ liệu.
Thanh ghi EECR có các bit điều khiển cần thiết cho việc đọc và việc ghi vào dữ liệu bộ nhớ EEFROM. Việc ghi vào bộ nhớ EEFROM không đơn giản như bộ nhớ SRAM. Thời gian truy nhập để ghi đối với bộ nhớ EEFROM nằm trong khoảng 2.5ms đến 4ms tùy thuộc vào điện áp nguồn nuôi. Bit điều khiển EEWE trong thanh ghi EECR cho phép người dùng phát hiện khi một lượng dữ liệu được yêu cầu trước đó đã được ghi vào bộ nhớ EEFROM và liệu một byte mới có thể được ghi.
Cổng vào ra:
Atmega8515 có 35 cổng I/O. Tất cả các cổng ra có dòng đến 20mA, nên rất thích hợp đối với việc điều khiển trực tiếp LED vì không cần đến các mạch đệm bổ sung.
Tất cả các cổng I/O đều có 3 địa chỉ I/O đi kèm vói chúng. Ba địa chỉ I/O được cần đến để đặt cấu hình cho các bit riêng biệt thành lối vào hoặc ra. Các cổng được đánh số là DDRx, PORTx, PINx.
Cổng DDRx là thanh ghi dữ liệu. Khi ghi mức [1] vào một bit ở DDR làm cho bit tương ứng thành lối ra trong PORTx. Sau đó, để xuất ra một giá trị [1] trên bit cổng,bit tương ứng có thể được đặt hoặc reset bằng cách sử dụng lệnh CBI hoặc SBI hoặc một lệnh OUT.
Tương tự, để đọc dữ liệu ở một chân lối vào của một cổng, ta sử dụng thanh ghi PINx. Thanh ghi PINx được nối trực tiếp vớichân của cổng. Chân cổng có thể được cấp tín hiệu để duy trì trạng thái theo cách tạo mức điện áp cao (pull-up) bên trong bằng cách ghi giá trị [1] vào bit cổng ở các địa chỉ PORTx.
Ngược lại, nếu một giá trị [0] được ghi vào bit cổng ở địa chỉ PORTx, thì trạng thái pull-up bị loại bỏ và chân lối vào rời bỏ trạng thái thả nổi chuyển sang trạng thái trở kháng cao.
Bộ nhớ SRAM:
Bộ nhớ SRAM được truy nhập bằng cách sử dụng nhiều lệnh truy nhập dữ liệu trực tiếp hoặc gián tiếp. bộ nhớ SRAM cũng được sử dụng cho ngăn xếp. Thời gian truy nhập bộ nhớ SRAM bằng 2 chu kỳ đồng hồ.
Ngoài ra, Atmega8515 còn có khả năng truy nhập bộ nhớ SRAM ngoài. Để cho phép truy nhập bộ nhớ SRAM ngoài, trên PORTA và PORTC cũng như tín hiệu ALE dùng cho việc phân kênh (demultiplexing) địa chỉ/dữ liệu, bit SRE (bit 3.2.6. trong thanh ghi MCUCR được đặt thành [1]. Thời gian truy nhập mặc định đối với quá trình truy nhập lên SRAM ngoài là 3 chu kỳ đồng hồ.
Bộ định thời:
Bộ định thời trong Atmega có chức năng như bộ định thời hoặc bộ đếm. Ở trường hợp là bộ định thời, tín hiệu giữ nhịp bên trong hoặc một dẫn xuất của tín hiệu giữ nhịp đó được sử dụng để giữ nhịp cho bộ định thời. Trong khi là bộ đếm, một tín hiệu bên ngoài ở chân của một cổng được sử dụng để giữ nhịp bộ đếm.
Bộ trưyền/nhận UART:
Việc truyền dữ liệu được khởi tạo bằng cách ghi dữ liệu vào thanh ghi dữ liệu I/O UART, ký hiệu là UDR. Dữ liệu truyền từ UDR đến thanh ghi dịch truyền khi:
Một ký tự mới đã được ghi vào UDR sau khi bit stop từ ký tự trước đó đã được dịch chuyển ra. Thanh ghi dịch chuyển ra sẽ được nạp ngay lập tức.
Một ký tự mới sẽ được ghi vào UDR trước khi bit stop từ ký tự trước đã được dịch đi. Thanh ghi dịch được nạp khi stop của ký tự đang được truyền đã được dịch chuyển ra.
Cấu trúc ngắt:
Atmega8515 có 16 cấu trúc ngắt. khả năng ngắt đã được chu cấp cho hầu hết các thiết bị ngoại vi sao cho chương trình chính không cần phải thường xuyên kiểm tra các thiết bị này.
Tính ưu tiên của các ngắt được quy định bởi cách gán các vectơ ngắt. Một vectơ ngắt ở địa chỉ thấp hơn trong bộ nhớ chương trình có mức độ ưu tiên cao hơn. Mức độ ưu tiên của ngắt được sử dụng để quyết định xem ngắt nào sẽ được phục vụ trước tiên nếu như nhiều ngắt đang chờ xử lý ở bất kỳ thời điểm nào.
Các địa chỉ thấp nhất của bộ nhớ chương trình được gán cho vectơ reset và ngắt, các địa chỉ này tương ứng với địa chỉ bộ nhớ chương trình được mô tả trong bảng 2-7 sau:
Thứ tự
vectơ
Địa chỉ
Chương trình
Mã nhãn
Giải thích
1
$000
RESET
Reset bằng nguồn ở chân ngoài
2
$001
INT0
Ngắt ngoài 0
3
$002
INT1
Ngắt ngoài 1
4
$003
TIMER1 CAPT
Timer/Counter1 Capture Event
5
$004
TIMER1 COMPA
Timer/Counter1 Compare Match A
6
$005
TIMER1 COMPB
Timer/Counter1 Compare Match B
7
$006
TIMER1 OVF
Tràn bộ Timer/Counter1
8
$007
TIMER0 OVF
Tràn bộ Timer/Counter0
9
$008
SPI, STC
Kết thức truyền nối tiếp SPI
10
$009
USART, RXC
Kết thức nhận nối tiếp USART
11
$00A
USART, UDRE
Rỗng trong thanh ghi dữ liệu USART
12
$00B
USART, TXC
Kết thức truyền nối tiếp USART
13
$00C
ANA_COMP
So sánh tương tự
14
$00D
INT2
Ngắt ngoài 2
15
$00E
TIMER0 COMP
Timer/Counter0 Compare Match
16
$00F
EE_RDY
Đọc EEFROM
17
$010
SPM_RDY
Đọc bộ nhớ chương trình
Bảng 2-7
Bộ so sánh Analog:
Bộ so sánh Analog so sánh các giá tri điện áp ở lối ngõ vào, cụ thể là ở lối vào AIN0 (AC+) và AIN1 (AC-) với nhau. Nếu như điện áp ở lối vào AIN0 lớn hơn 073 lối vào AIN1 thì lối ra của bộ so sánh Analog ACO (Analog Comparator Out) được đặt lên mức [1]. Lối ra này có thể được sử dụng cho bộ Timer/Counter1 để trigger hoặc xóa ngắt bộ so sánh Analog.
Bộ biến đổi A/D bên trong:
Atmega8515 co1 bộ biến đổi tương tự sang số (ADC) với độ phân giải là 10 bit. Ngoài ra bên cạnh bộ biến đổi ADC còn có một bộ dồn kênh với 8 lối vào, mỗi lối vào có thể được dẫn riêng lẻ tới bộ hiển thị ADC.
Bộ biến đổi ADC được điều khiển qua 4 thanh ghi ADMUX, ADCSR, ADHC và ADCL trong vùng địa chỉ vào ra. Bằng thanh ghi ADMUX, một trong 8 kênh được lựa chọn để biến đổi tương tự - số. bộ biến đổi ADC có thể hoạt động trong hai chế độ:
Quá trình biến đổi được người dùng khởi động.
Quá trình biến đổi diễn ra liên tục.
Việc kết thúc quá trình biến đổi, nghĩa là thời điểm mà một tín hiệu Analog đã được số hóa và sẵn sàng xử lý tiếp tục, sẽ được báo hiệu qua một cờ trong thanh ghi trang thái ADC (ADCSR). Trong thanh ghi ADCSR này, người dùng còn có thể chọn một trong hai chế độ. Kết quả của quá trình biến đổi A/D được đặt ở các thanh ghi ADCH (bit 8 và 9) và ADCL (bit 0 đến 7).
Bộ định thời Watchdog bên trong:
Bộ định thời Watchdog là bộ định thời điều khiển được và được sử dụng làm thiết bị đánh thức trong trường hợp phần mềm bị rơi vào một số vòng lập vô tận hoặc trong trường hợp việc thực thi chương trình bị mắc lỗi. Bộ định thời Watchdog có một lối ra có khả năng đặt lại bộ điều khiển.
Mạch định thời Watchdog Timer được giữ nhịp từ một bộ dao động RC riêng biệt trên chip. Bằng cách điều khiển mạch chia tần số, khoảng thời gian reset mạch Watchdog có thể được điều chỉnh. Ngoài ra, các khoảng reset của mạch Watchdog cũng phụ thuộc vào điện áp nguồn nuôi.
Chế độ hoạt động tiết kiệm năng lượng:
Atmega8515 có nhiều khả năng để giảm năng lượng tiêu thụ. Để chuyển sang trang thái ngủ (sleep mode) , bit SE trong thanh ghi điều khiển bộ xử lý (MCUCR) phải được đặt, nghĩa là có giá trị bằng [1] và một lệnh SLEEP cần phải được thực thi. Nếu một ngắt đã cho phép xuất hiện trong khi MCU đang trong trạng thái ngủ, thì MCU sẽ thức dậy thực thi đoạn chương trình ngắt và lại tiếp tục thực thi lệnh kế tiếp theo lệnh SLEEP. Nội dung của tệp thanh ghi, SRAM và bộ nhớ I/O vẫn được giữ nguyên. Nếu một tín hiệu reset xuất hiệntrong trạng thái ngủ, thì MCU sẽ thức dậy và thực thi từ vectơ reset.
Khi bit SM bị xóa, thì lệnh SLEEP đưa MCU chuyển sang chế độ nghĩ, làm ngừng hoạt động của MCU nhưng cho phép bộ Timer/Counter Watchdog và ngắt hệ thống tiếp tục hoạt động. Đặc tính này cho phép MCU đánh thức từ các ngắt được trigger từ bên ngoài cũng như ngắt bên trong giống như ngắt tràn bộ định thời và đặt lại (reset) Watchdog. Nếu sự đánh thức từ ngắt bộ so sánh Analog ACSR. Biện pháp này làm giảm dòng tiêu thụ trong chế độ nghĩ (idle). Khi MCU bị đánh thức khởi chế độ nghĩ, CPU khởi động chương trình chấp hành ngay lập tức.
Khi bit SM được đặt lên [1], lệnh SLEEP bắt buộc MCU chuyển sang chế độ tiết kiệm năng lượng hay giảm dòng tiêu thụ (power down). Trong chế độ này, bộ dao động ngoài bị ngừng hoạt động. trong khi các ngắt ngoài và mạch Watchdog vẫn tiếp tục hoạt động. Chỉ khi thao tác reset bên ngoài, thao tác đặt lại Watchdog, hoặc ngắt theo mức ngoài lên INT0 hoặc INT1 mới có thể đánh thức MCU. Chú ý rằng khi một ngắt trigger theo mức được sử dụng cho việc đánh thức khỏi trạng thái tiết kiệm năng lượng thì mức thấp hơn cần phải được giữ trong một khoảng thời gian dài hơn thời gian làm trễ dài nhất đối với thao tác reset, nếu không thì thiết bị sẽ không thức dậy.
4. Tập lệnh của vi điều khiển Atmega8515:
Atmega8515 có 130 lệnh. Hầu hết các lệnh đều có chiều dài 1 từ (2 byte) và vì thế chiếm một ô nhớ chương trình. Nhiều lệnh thực thi trong một chu kỳ đồng hồ đơn lẻ, trong khi một số khác có thể chiếm 2 hoặc nhiều chu kỳ đồng hồ.Việc thực thi lệnh trong một chu kỳ đơn lẻ là do việc sử dụng một kiểu cấu trúc đường ống (pipeline) hai tầng. Đường ống làm việc theo cách tiếp nhận đồng thời một lệnh mới từ bộ nhớ chương trình trong khi lệnh trước đó đang được thực thi trong phần khác của bộ xử lý. Việc tìm nạp/giải mã và thực thi các lệnh như vậy là những quá trình được thực hiện bởi bộ xử lý một cách đồng thời.
Trước khi giới thiệu tập lệnh của Atmega8515 chúng ta cần biết một số khái niệm về các ký hiệu để tiện cho việc tra cứu khi viết chương trình:
A nội dung của thanh ghi A
b số thứ tự bit trong các thanh ghi
s số thứ tự bit trong thanh ghi trạng thái
Rd thanh ghi đích
Rr thanh ghi nguồn
P các port PA, PB,
K hằng số
K hằng số chỉ địa chỉ tuyệt đối của thanh ghi
X,Y,Z các thanh ghi địa chỉ tương đối
Dưới đây là bảng tập lệnh của Atmega8515:
Mã lệnh
Giải thích
Cờ tác
động
Chu kỳ
Lệnh số học và logic
ADD Rd, Rr
Rd ← Rd + Rr
Z,C,N,V,H
1
ADC Rd, Rr
Rd ← Rd + Rr + C
Z,C,N,V,H
1
ADIW Rdl,K
Rdh:Rdl ← Rdh:Rdl + K
Z,C,N,V,S
2
SUB Rd,Rr
Rd ← Rd - Rr
Z,C,N,V,H
1
SUBI Rd,K
Rd ← Rd - K
Z,C,N,V,H
1
SBC Rd,Rr
Rd ← Rd - Rr - C
Z,C,N,V,H
1
SBCI Rd,K
Rd ← Rd - K - C
Z,C,N,V,H
1
SBIW Rdl,K
Rdh:Rdl ← Rdh:Rdl - K
Z,C,N,V,S
2
AND Rd, Rr
Rd ← Rd • Rr
Z,N,V
1
ANDI Rd, K
Rd ← Rd • K
Z,N,V
1
OR Rd, Rr
Rd ← Rd v Rr
Z,N,V
1
ORI Rd, K
Rd ← Rd v K
Z,N,V
1
EOR Rd, Rr
Rd ← Rd Rr
Z,N,V
1
COM Rd
Rd ← $FF − Rd
Z,C,N,V
1
NEG Rd
Rd ← $00 − Rd
Z,C,N,V,H
1
SBR Rd,K
Rd ← Rd v K
Z,N,V
1
CBR Rd,K
Rd ← Rd • ($FF - K)
Z,N,V
1
INC Rd
Rd ← Rd + 1
Z,N,V
1
DEC Rd
Rd ← Rd − 1
Z,N,V
1
TST Rd
Rd ← Rd • Rd
Z,N,V
1
CLR Rd
Rd ← Rd Rd
Z,N,V
1
SER Rd
Rd ← $FF
1
MUL Rd, Rr
R1:R0 ← Rd x Rr
Z,C
2
MULS Rd, Rr
R1:R0 ← Rd x Rr
Z,C
2
MULSU Rd, Rr
R1:R0 ← Rd x Rr
Z,C
2
FMUL Rd, Rr
R1:R0 ← (Rd x Rr) << 1
Z,C
2
FMULS Rd, Rr
R1:R0 ← (Rd x Rr) << 1
Z,C
2
FMULSU Rd, Rr
R1:R0 ← (Rd x Rr) << 1
Z,C
2
Lệnh rẽ nhánh
RJMP k
PC ← PC + k + 1
2
IJMP
PC ← Z
2
JMP k
PC ← k
3
RCALL k
PC ← PC + k + 1
3
ICALL
PC ← Z
3
CALL k
PC ← k
4
RET
PC ← STACK
4
RETI
PC ← STACK
I
4
CPSE Rd,Rr
PC ← PC + 2 or 3
1/2/3
CP Rd,Rr
Rd − Rr
Z, N,V,C,H
1
CPC Rd,Rr
Rd − Rr − C
Z, N,V,C,H
1
CPI Rd,K
Rd − K
Z, N,V,C,H
1
SBRC Rr, b
if (Rr(b)=0) PC ← PC + 2 or 3
1/2/3
SBRS Rr, b
if (Rr(b)=1) PC ← PC + 2 or 3
1/2/3
SBIC P, b
if (P(b)=0) PC ← PC + 2 or 3
1/2/3
SBIS P, b
if (P(b)=1) PC ← PC + 2 or 3
1/2/3
BRBS s, k
if (SREG(s) = 1) then PC ← PC + k + 1
1/2
BRBC s, k
if (SREG(s) = 0) then PC ← PC + k + 1
1/2
BREQ k
if (Z = 1) then PC ← PC + k + 1
1/2
BRNE k
if (Z = 0) then PC ← PC + k + 1
1/2
BRCS k
if (C = 1) then PC ← PC + k + 1
1/2
BRCC k
if (C = 0) then PC ← PC + k + 1
1/2
BRSH k
if (C = 0) then PC ← PC + k + 1
1/2
BRLO k
if (C = 1) then PC ← PC + k + 1
1/2
BRMI k
if (N = 1) then PC ← PC + k + 1
1/2
BRPL k
if (N = 0) then PC ← PC + k + 1
1/2
BRGE k
if (N V= 0) then PC ← PC + k + 1
1/2
BRLT k
if (N V= 1) then PC ← PC + k + 1
1/2
BRHS k
if (H = 1) then PC ← PC + k + 1
1/2
BRHC k
if (H = 0) then PC ← PC + k + 1
1/2
BRTS k
if (T = 1) then PC ← PC + k + 1
1/2
BRTC k
if (T = 0) then PC ← PC + k + 1
1/2
BRVS k
if (V = 1) then PC ← PC + k + 1
1/2
BRVC k
if (V = 0) then PC ← PC + k + 1
1/2
BRIE k
if ( I = 1) then PC ← PC + k + 1
1/2
BRID k
if ( I = 0) then PC ← PC + k + 1
1/2
Lệnh truyền dữ liệu
MOV Rd, Rr
Rd ← Rr
1
MOVW Rd, Rr
Rd+1:Rd ← Rr+1:Rr
1
LDI Rd, K
Rd ← K
1
LD Rd, X
Rd ← (X)
2
LD Rd, X+
Rd ← (X), X ← X + 1
2
LD Rd, - X
X ← X - 1, Rd ← (X)
2
LD Rd, Y
Rd ← (Y)
2
LD Rd, Y+
Rd ← (Y), Y ← Y + 1
2
LD Rd, - Y
Y ← Y - 1, Rd ← (Y)
2
LDD Rd,Y+q
Rd ← (Y + q)
2
LD Rd, Z
Rd ← (Z)
2
LD Rd, Z+
Rd ← (Z), Z ← Z+1
2
LD Rd, -Z
Z ← Z - 1, Rd ← (Z)
2
LDD Rd, Z+q
Rd ← (Z + q)
2
LDS Rd, k
Rd ← (k)
2
ST X, Rr
(X) ← Rr
2
ST X+, Rr
(X) ← Rr, X ← X + 1
2
ST - X, Rr
X ← X - 1, (X) ← Rr
2
ST Y, Rr
(Y) ← Rr
2
ST Y+, Rr
(Y) ← Rr, Y ← Y + 1
2
ST - Y, Rr
Y ← Y - 1, (Y) ← Rr
2
STD Y+q,Rr
(Y + q) ← Rr
2
ST Z, Rr
(Z) ← Rr
2
ST Z+, Rr
(Z) ← Rr, Z ← Z + 1
2
ST -Z, Rr
Z ← Z - 1, (Z) ← Rr
2
STD Z+q,Rr
(Z + q) ← Rr
2
STS k, Rr
(k) ← Rr
2
LPM
R0 ← (Z)
3
LPM Rd, Z
Rd ← (Z)
3
LPM Rd, Z+
Rd ← (Z), Z ← Z+1
3
SPM
(Z) ← R1:R0
-
IN Rd, P
Rd ← P
1
OUT P, Rr
P ← Rr
1
PUSH Rr
STACK ← Rr
2
POP Rd
Rd ← STACK
2
Lệnh thao tác bit
SBI P,b
I/O(P,b) ← 1
2
CBI P,b
I/O(P,b) ← 0
2
LSL Rd
Rd(n+1) ← Rd(n), Rd(0) ← 0
Z,C,N,V
1
LSR Rd
Rd(n) ← Rd(n+1), Rd(7) ← 0
Z,C,N,V
1
ROL Rd
Rd(0) ← C, Rd(n+1) ← Rd(n),C ← Rd(7)
Z,C,N,V
1
ROR Rd
Rd(7) ←C, Rd(n) ← Rd(n+1), C ← Rd(0)
Z,C,N,V
1
ASR Rd
Rd(n) ← Rd(n+1), n=0..6
Z,C,N,V
1
SWAP Rd
Rd(3..0) ← Rd(7..4), Rd(7..4) ← Rd(3..0)
1
BSET s
SREG(s) ← 1
SREG(s)
1
BCLR s
SREG(s) ← 0
SREG(s)
1
BST Rr, b
T ← Rr(b)
T
1
BLD Rd, b
Rd(b) ← T
1
SEC
C ← 1
C
1
CLC
C ← 0
C
1
SEN
N ← 1
N
1
CLN
N ← 0
N
1
SEZ
Z ← 1
Z
1
CLZ
Z ← 0
Z
1
SEI
I ← 1
I
1
CLI
I ← 0
I
1
SES
S ← 1
S
1
CLS
S ← 0
S
1
SEV
V ← 1
V
1
CLV
V ← 0
V
1
SET
T ← 1
T
1
CLT
T ← 0
T
1
SEH
H ← 1
H
1
CLH
H ← 0
H
1
Lệnh điều khiển MCU
NOP
1
SLEEP
1
WDR
1
Bang II-8
II.Vi Mạch 74HC595:
Đây là vi mạch với 8 bit ngõ vào nối tiếp và 8 bit ghi dịch ra song song với ngõ ra chốt. Thanh ghi tích luỹ có 3 trạng thái ngõ ra. Tín hiệu clock riêng lẽ được cung cấp cho cả thanh ghi dịch và thanh ghi tích luỹ. Thanh ghi dịch có thể được xoá trực tiếp. Tín hiệu clock của cả thanh ghi dịch và thanh ghi tích luỹ đều được kích ở mức cạnh dương. Khi ta nối 2 chân này lại với nhau thì trạng thái thanh ghi dịch sẽ luôn là 1 xung clock ở đầu thanh ghi tích luỹ.
Hình 2.13
Trong đó chức năng của từng chân là:
Chân 1-7 và 15 (Q0 - Q7): ngõ ra song song.
Chân 8: GND.
Chân 16: Vcc.
Chân 9 (Q7’): ngõ ra nối tiếp.
Chân 10 (:Master Reset): Reset, tích cực mức thấp.
Chân 11 (SH_CP:Shift Register Clock Input): ngõ vào xung clock dịch nối tiếp.
Chân 12 (ST_CP:Storage Register Clock Input): ngõ vào xung clock ra song song.
Chân 13 (:Output Enable): cho phép ngõ ra, tích cực mức thấp.
Chân 14 (DS:Data Serial Input): ngõ vào dữ liệu nối tiếp.
IC ghi dịch 74HC595 có những đặc tính sau:
Điện áp cung cấp: Vcc = 2 – 6V.
Điện áp ngõ vào/ra: Vi,Vo = 0 – 6V.
Điện áp mức logic [1] ngõ vào: VIHmin = 2,4V (Vcc = 5V).
Điện áp mức logic [1] ngõ ra: VOH = 5V (Vcc = 5V).
Điện áp mức logic [0] ngõ vào: VILmax = 1,35V (Vcc = 5V).
Điện áp mức logic [0] ngõ ra: VOL = 0,1V (Vcc = 5V).
Dòng ngõ vào/ra: II,IO= 20mA.
Tần số đáp ứng tối đa cho SH_CP và ST_CP : fmax = 100MHz.
Nhiệt độ cho phép trong khoảng -40oC đến 125oC.
.
Hình 2.14
Trong đó:
X bất chấp.
H mức logic [1].
L mức logic [0].
Z tổng trở cao.
chuyển mức logic [0] sang [1].
Hình 2.15
Vi Mạch 74HC4094:
Là thanh ghi dịch nối tiếp với ngõ vào 8 bit nối tiếp cho ra 8 bit song song với ngõ ra chốt.Dữ liệu được dịch nhờ vào xung clock CP,dữ liệu từ thanh ghi dịch được truyền đến thanh ghi lưu trữ khi và chỉ khi chân STR ở mức cao dữ liệu được đưa ra ngõ ra khi chân OE ở mức cao.
Hình 2.16
Chân 1 (STR:Strobe Input): ngõ vào xung cho phép xuất ra song song.
Chân 2 (D: Data input): ngõ vào dữ liệu nối tiếp.
Chân 3 (CP:Clock Input): ngõ vào xung dịch nối tiếp.
Chân 4-7 và 14-11 (QP0 đến QP7): ngõ ra song song.
Chân 8: GND.
Chân 16: Vcc.
Chân 9,10 (QS1,QS2): ngõ ra nối tiếp.
Chân 15 (OE:Output Enable): cho phép ngõ ra
Nguồn cung cấp: Vcc = 2 – 6V.
Điện áp ngõ vào/ra: Vi,Vo = 0 – 6V.
Tần số đáp ứng tối đa cho STR và CP : fmax = 95MHz.
Nhiệt độ cho phép trong khoảng -40oC đến 125oC.
Hình 2.17
Tín hiệu hoạt động của IC ghi dịch 74HC4094:
Hình 2.18
Vi Mạch SN7407:
Là vi mạch dùng để biến đổi mức điện áp từ chuẩn TTL sang MOS,vi mạch này có ngõ ra là các cực thu hở cho ra mức điện áp cao phù hơp với việc điều khiển các thiết bị như Relay,đèn
Hình 2.19
Bên trong SN7407 thực chất là 6 bộ đệm
với:
Chân 1,3,5,9,11,13 là 6 ngõ vào.
Chân 2,4,6,8,10,12 là 6 ngõ ra.
Chân 7 là GND.
Chân 14 là Vcc.
Điện áp cung cấp: Vcc = 4,5 – 5,5V.
Điện áp mức logic [1] ngõ vào: VIHmin = 2V.
Điện áp mức logic [0] ngõ vào: VILmax = 0,8V.
Điện áp mức logic [1] ngõ ra: VIOmax = 30V.
Dòng mức logic [0] ngõ ra: IILmin = 40mA.
Thời gian trễ giữa ngõ I/O khi chuyển mức [0] sang [1] là: tPLHmax = 15ns.
Thời gian trễ giữa ngõ I/O khi chuyển mức [1] sang [0] là: tPHLmax = 26ns.
Nhiệt độ cho phép trong khoảng 0oC đến 70oC.
Hình 2.20
IC khuếch đại dòng IRFZ44:
IRFZ44 là Transistor thuộc họ Mosfet có chức năng là khuếch đại dòng.
Hình 2.21
VDSmax = 55V : điện áp cực đại giữa 2 cực D và S.
VGSmax = 20V : điện áp cực đại giữa 2 cực G và S.
IDmax = 49A : dòng cực đại chảy qua D.
IDđmax = 160A : dòng đỉnh cực đại chảy qua D.
-55 < toC < 170 : nhiệt độ cho phép.
toC > 100 IDmax giảm xuống dưới 35A.
tdon < 26ns : thời gian trễ khi mở.
tdoff < 50ns : thời gian trễ khi mở
Ma Trận LED 8X8:
Ma trận led 2 màu 8X8 gồm có 24 chân,gồm 8 chân điều khiển dòng, 8 chân điều khiển cột đỏ và 8 chân điều khiển cột xanh.
Hình 2.22
Matrận led 8X8 gồm có 64 điểm, mỗi điểm tương ứng là một led đỏ và một led xanh.
CHƯƠNG 3: THIẾT KẾ VÀ THI CÔNG MẠCH QUANG BÁO
Sơ Đồ Khối Mạch Quang Báo:
Khối giải mã hàng
Khối VDK
Khối khuếch đại
Khối ma trận led
Khối giải mã cột
II. Sơ đồ nguyên lý mạch quang báo:
1. Mạch vi điều khiển:
Hình 3-1
2. Mạch khuếch đại và quét hàng:
2.1 Sơ đồ nguyên lý:
Hình 3-2
2.2 Nguyên tắc hoạt động:
Khi chân CLK của 74HC4049 được cấp một xung, trạng thái tín hiệu ở chân D của 74HC4049 sẽ được đưa ra Q1. Nếu tiếp tục có một xung ở chân CLK thì trạng thái tín hiệu ở chân D của 74HC4049 sẽ được đưa ra Q1, và trạng thái trước đó của Q1 sẽ được dịch qua Q2. Cứ như vậy, tín hiệu ở chân D ngõ vào sẽ được dịch lần lượt qua các chân ngõ ra từ Q1 đến Q8.
Ngõ ra của 74HC4094 sẽ qua IC đệm SN7407 để chuyển đổi mức điện áp từ 5V sang 12V kích cho các mostfet IRF Z44 hoạt động.
IRF Z44 sẽ cung cấp ngõ ra dòng lớn để đáp ứng cho màn hình của hệ thống “Quang Báo” hiển thị.
Điện trở R1 đến R8 có chức năng là điện trở kéo lên ở ngõ ra của 7407 và được chọn là 10k.
2.3 Sơ đồ mạch in:
Hình 3-3
3 Mạch quét cột và hiển thị:
3.1 Sơ đồ nguyên lý:
Hình 3-4
3.2 Nguyên tắc hoạt động:
Byte dữ liệu quét cột sẽ được dịch vào từng bit từ chân 14 (SDI) của 74HC595 nhờ xung clock ở chân 11 (SH_CP). Do các chân SH_CP và ST_CP của tất cả các IC 74HC595 được nối chung với nhau, nên dữ liệu được dịch nối tiếp từ 74HC595 đầu tiên đến 74HC595 cuối cùng.
Như vậy từng byte sẽ lần lượt được dịch qua các IC 74HC595 sau cho đúng vị trí của mình. Lúc này chân ST_CP được tích cực nên dữ liệu nối tiếp này sẽ được đưa đến các ngõ ra song song tương ứng trên 74HC595.
Và để hiển thị một hàng nào đó chỉ việc cấp nguồn cho hàng đó nhờ mạch quét hàng ở mục 2.
.
3.3 Sơ đồ mạch in:
Hình 3-5
4.Sơ đồ nguyên lý toàn mạch:
Chọn dòng qua led là 20mA điện trở hạn dòng qua led là:
Vậy ta chọn Rled=150
Ta chọn R1=R2=R3=R4=R5=R6=R7=R8=10K
III. Lưu đồ giải thuật:
Start
Load dữ liệu vào Ram
Khởi tạo hàng = 8
Khởi tạo byte = 10
Xuất nối tiếp 1 byte
Byte = byte - 1
Byte = 0?
Kết thúc
Hàng = hàng - 1
Hàng = 0?
N
Y
Y
N
IV. Chương trình:
;sinh vien hoang
.include "m8515def.inc"
.def rtemp6 = r16
.def rtemp5 = r17
.def rtemp4 = r18
.def rtemp3 = r19
.def rtemp1 = r20
.def rtemp2 = r21
.def truyen = r23
.def nhan = r22
.
.cseg
.org 0
rjmp reset
reset:
ldi rtemp1,low(ramend)
out spl,rtemp1
ldi rtemp1, high(ramend)
out sph,rtemp1
ldi rtemp2,0b11111111
out ddrb, rtemp2
ldi rtemp2,0b11111111
out ddrd, rtemp2
ldi rtemp2,0b11111111
out portb, rtemp2
ldi rtemp2,0b00000000
out portd, rtemp2
ldi r16,$c0
out mcucr,r16
ldi r28,$0 ;delay khoi dong
ldi r29,$10
rcall delaymsc
rcall load
rjmp rxnext2
rxnext2:
ldi rtemp3,10 ;80 cot =10 byte
mov r1,rtemp3
rcall outmain
rjmp rxnext2
;=======================================
load:
ldi r28,$82
clr r29
ldi r31,high(start1*2)
ldi r30,low(start1*2)
xxxx1:
lpm rtemp3,z+
st y+,rtemp3
cpi r28,$ff ;cong 120 byte
brne xxxx1
ldi r28,$80
ldi r29,$1
ldi r31,high(start2*2)
ldi r30,low(start2*2)
xxxx2:
lpm rtemp3,z+
st y+,rtemp3
cpi r28,$ff ;
brne xxxx2
ret
;=======================================
outmain:
ldi rtemp2,7
ldi r30,$82
clr r31
rcall outdri
sbi portb,2
nop
nop
sbi portb,1
nop
nop
;rcall delay1msc
rcall delay1msc
rcall delay1msc
rcall delay1msc
cbi portb,5
outmain1:
rcall outdri
cbi portb,2
nop
nop
sbi portb,1
nop
nop
rcall delay1msc
rcall delay1msc
rcall delay1msc
cbi portb,1
dec rtemp2
brne outmain1
rcall delay1msc
rcall delay1msc
rcall delay1msc
;
ret
;=======================================
exram:
clr r31
ld r22,z
ld r23,z
ldi r31,1
ld r24,z
ld r25,z+
ret
;=======================================
outdri:
mov r2,r1
outdri1:
rcall exram
rcall outdata
dec r2
brne outdri1
ret
;=======================================
outdata:
rcall outbit
rcall outbit
rcall outbit
rcall outbit
rcall outbit
rcall outbit
rcall outbit
rcall outbit
outend: ret
;=======================================
outbit:
rol r22
brcs outd1
sbi portb,2
jmp outdb2
outd1:
cbi portb,2
outdb2:
rol r24
brcs outd3
sbi portb,3
jmp outdb4
outd3:
cbi portb,3
outd4:
sbi portb,0 ;clk
nop
cbi portb,0
ret
;========================================
delay1msc:
push r28
push r29
ldi r29,4
delay1msc1:
ldi r28,100
delay1msc2:
dec r28
brne delay1msc2
dec r29
brne delay1msc1
pop r29
pop r28
ret
;========================================
delaymsc:
tst r28
breq delaymsc1
delaymsc2:
rcall delay1msc
dec r28
brne delaymsc2
delaymsc1:
tst r29
breq delaymsc3
dec r29
jmp delaymsc2
delaymsc3:
ret
start1: .db $0,$0,$0,$0,$0,$0,$0,$0,$0,$1C
.db $38,$41,$11,$08,$9A,$6A,$44,$4C,$6A,$42
.db $44,$40,$11,$48,$A4,$92,$44,$52,$82,$4E
.db $04,$A1,$11,$05,$42,$92,$44,$52,$92,$52
.db $38,$A1,$1F,$42,$24,$73,$87,$CC,$73,$8E
.db $41,$11,$11,$05,$0,$50,$04,$40,$0,$0
.db $45,$11,$11,$08,$80,$20,$04,$40,$20,$0
.db $39,$17,$D1,$08,$80,$0,$04,$40,$40,$0
start2: .db $0,$0,$0,$0,$01,$C0,$0,$0,$0,$0
.db $0,$0,$19,$A6,$A4,$21,$E3,$4C,$0,$0
.db $0,$0,$72,$49,$24,$E1,$14,$92,$0,$0
.db $0,$0,$AA,$49,$25,$21,$14,$92,$0,$0
.db $0,$0,$8A,$47,$38,$E1,$E3,$8C,$0,$0
.db $0,$0,$88,$0,$0,$01,$20,$0,$0,$0
.db $0,$0,$88,$0,$0,$01,$21,$0,$0,$0
.db $0,$0,$70,$0,$0,$01,$C0,$80,$0,$0
CHƯƠNG 4 : BÁO CÁO KẾT QUẢ THI CÔNG
I. Kết quả thi công:
Sau thời gian thi công,mạch đã hoàn thành và chạy ổn định,đã đạt gần đuợc hết nhưng yêu cầu đề ra.Tuy nhiên do thời gian phải hoàn thành tương đối ngắn và khả năng còn hạn chế nên vẫn còn một số yêu cầu chưa hoàn thành được,em rất mong được sự chỉ dẫn và góp ý của thầy cô. Em xin chân thành cảm ơn!
II. Hướng phát triển đè tài:
Có thể mở rộng giao tiếp với máy tính,nhập nội dung cần hiển thị từ máy tính và xuất ra mạch để hiển thị.
Ta có thể ghép nối với mạch hiển thị nhiệt độ,thời gian,
Điều khiển chu kỳ quét led để hiển thị nhiều màu sắc,hình ảnh.
III. Tài liệu tham khảo
www.alldatasheet.com
www.hutech.edu.vn
www.atmel.com
Các file đính kèm theo tài liệu này:
- Luan Van(Hoang1).doc