Luận văn Thiết kế và thi công mạch quang báo

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

 

 

 

doc56 trang | Chia sẻ: maiphuongdc | Lượt xem: 2262 | Lượt tải: 1download
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
2313 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

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

  • docLuan Van(Hoang1).doc