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 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 N

doc56 trang | Chia sẻ: huyen82 | Lượt xem: 1670 | Lượt tải: 0download
Tóm tắt tài liệu 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
hậ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ánh MỤ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 ._.

Các file đính kèm theo tài liệu này:

  • docLuan Van(Hoang1).doc