tracgiahan96

New Member

Download miễn phí Luận văn Sử dụng Avr Atmega16





Phần 1. Vi điều khiển ATmega16 4
Chương 1. Giới thiệu chung 5
Chương 2. Cấu trúc nhân AVR 7
2.1.Cấu trúc tổng quát 7
2.2. ALU 7
2.3. Thanh ghi trạng thái 8
Chương 3. Cấu trúc bộ nhớ 11
3.1. Bộ nhớ chương trình (Bộ nhớ Flash) 11
3.2. Bộ nhớ dữ liệu SRAM 11
3.3. Bộ nhớ dữ liệu EEPROM 12
Chương 4. Các cổng vào ra (I/O) 13
4.1. Thanh ghi DDRx 13
4.2.Thanh ghi PORTx 13
4.3. Thanh ghi PINx 13
Chương 5. Bộ định thời 15
5.1. Các thanh ghi 15
5.2. Đơn vị đếm 16
5.3. Đơn vị so sánh ngõ ra 16
5.4. Mô tả các thanh ghi 17
5.4.1. Thanh ghi điều khiển bộ định thời/bộ đếm TCCR0 17
5.4.2. Thanh ghi bộ định thời/bộ đếm 17
5.4.3. Thanh ghi so sánh ngõ ra-OCR0 18
5.4.4. Thanh ghi mặt nạ ngắt 18
5.4.5. Thanh ghi cờ ngắt bộ định thời 18
Chương 6. USART 19
6.1. Tạo xung clock 20
6.2. Định dạng khung truyền 20
6.3. Khởi tạo USART 21
6.4. Truyền thông dữ liệu-bộ truyền USART 21
6.4.1. Truyền khung 5 đến 8 bit dữ liệu 21
6.4.2. Truyền khung 9 bit dữ liệu 22
6.5. Nhận dữ liệu-bộ nhận USART 22
6.5.1. Nhận khung với 5 đến 8 bit dữ liệu 22
6.5.2. Nhận khung với 9 bit dữ liệu 23
Chương 7. Bộ biến đổi A/D 24
7.1. ADMUX: Multiplexer select register 25
7.2. ADCSR-ADC control and status register 26
7.2.1. Bit 7-ADEN:ADC enable 26
7.2.2. Bit 6-ADSC: ADC start conversion 26
7.2.3. Bit 5-ADATE :ADC Auto Trigger enable 26
7.2.4. Bit 4-ADIF: ADC interrupt Flag 26
7.2.5. Bit 3-ADIE:ACD interrupt Enable 26
7.2.6. Bit 2.1.0-ADPS2 ADPS0: Bit lựa chọn xung nhịp(Tốc độ) 26
7.3. Thanh ghi dữ liệu ACDH và ADCL 27
7.4. Nguyên tắc hoạt động và lập trình điều khiển 27
Phần 2. Phần mềm mô phỏng mạch điện Proteus 7.0 29
Chương 1. Giới thiệu chung 30
1. Giới thiệu về Proteus 30
2. Các ưu điểm 30
3. Khả năng ứng dụng 31
4. Khả năng phân tích 31
Chương 2. Mô phỏng và phân tích mạch nguyên lý 32
Phần 3. Thiết kế máy phát trải phổ 37
1. Biến đổi A/D 37
2. Nhân tín hiệu 39
3. Tạo chuỗi PN và tạo dữ liệu vào 39
 
 



Để tải bản Đầy Đủ của tài liệu, xin Trả lời bài viết này, Mods sẽ gửi Link download cho bạn sớm nhất qua hòm tin nhắn.
Ai cần download tài liệu gì mà không tìm thấy ở đây, thì đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí

Tóm tắt nội dung tài liệu:

à giá trị ngăn xếp ít nhất cũng phải lơn hơn hay bằng 60H (0x60) vì 5FH trỏ lại là vùng các thanh ghi.
2.6. Quản lý ngắt
Ngắt là một cơ chế cho phép thiết bị ngoại vi báo cho CPU biết về tình trạng sẵn xàng cho đổi dữ liệu của mình.Ví dụ:Khi bộ truyền nhận UART nhận được một byte nó sẽ báo cho CPU biết thông qua cờ RXC,hợc khi nó đã truyền được một byte thì cờ TX được thiết lập…
Khi có tín hiệu báo ngắt CPU sẽ tạm dừng công việc đạng thực hiện lại và lưu vị trí đang thực hiên chương trình (con trỏ PC) vào ngăn xếp sau đó trỏ tới vector phuc vụ ngắt và thức hiện chương trình phục vụ ngắt đó chơ tới khi gặp lệnh RETI (return from interrup) thì CPU lại lấy PC từ ngăn xếp ra và tiếp tục thực hiện chương trình mà trước khi có ngăt nó đang thực hiện. Trong trường hợp mà có nhiều ngắt yêu cầu cùng một lúc thì CPU sẽ lưu các cờ báo ngắt đó lại và thực hiện lần lượt các ngắt theo mức ưu tiên .Trong khi đang thực hiện ngắt mà xuất hiện ngắt mới thì sẽ xảy ra hai trường hợp. Trường hớp ngắt này có mức ưu tiên cao hơn thì nó sẽ được phục vụ. Còn nó mà có mức ưu tiên thấp hơn thì nó sẽ bị bỏ qua.
Bộ nhớ ngăn xếp là vùng bất kì trong SRAM từ địa chỉ 0x60 trở lên. Để truy nhập vào SRAM thông thường thì ta dùng con trỏ X,Y,Z và để truy nhập vào SRAM theo kiểu ngăn xếp thì ta dùng con trỏ SP. Con trỏ này là một thanh ghi 16 bit và được truy nhập như hai thanh ghi 8 bit chung có địa chỉ :SPL :0x3D/0x5D(IO/SRAM) và SPH:0x3E/0x5E.
Khi chương trình phục vu ngắt hay chương trình con thì con trỏ PC được lưu vào ngăn xếp trong khi con trỏ ngăn xếp giảm hai vị trí.Và con trỏ ngăn xếp sẽ giảm 1 khi thực hiện lệnh push. Ngược lại khi thực hiện lệnh POP thì con trỏ ngăn xếp sẽ tăng 1 và khi thực hiện lệnh RET hay RETI thì con trỏ ngăn xếp sẽ tăng 2. Như vậy con trỏ ngăn xếp cần được chương trình đặt trước giá trị khởi tạo ngăn xếp trước khi một chương trình con được gọi hay các ngắt được cho phép phục vụ. Và giá trị ngăn xếp ít nhất cũng phải lớn hơn 60H (0x60) vì 5FH trỏ lại là vùng các thanh ghi.
Ví dụ:
char cSREG;
cSREG = SREG; /* store SREG value */
/* disable interrupts during timed sequence */
CLI();
EECR |= (1< EECR |= (1< SREG = cSREG; /* restore SREG value (I-bit) */
Chương 3. Cấu trúc bộ nhớ
AVR có 2 không gian bộ nhớ chính là bộ nhớ dữ liệu vào bộ nhớ chương trình. Ngoài ra ATmega16 còn có thêm bộ nhớ EEPROM để lưu trữ dữ liệu.
3.1. Bộ nhớ chương trình (Bộ nhớ Flash)
Bộ nhớ Flash 16KB của ATmega16 dùng để lưu trữ chương trình. Do các lệnh của AVR có độ dài 16 hay 32 bit nên bộ nhớ Flash được sắp xếp theo kiểu 8KX16. Bộ nhớ Flash được chia làm 2 phần, phần dành cho chương trình boot và phần dành cho chương trình ứng dụng.
Hình 3.1. Bản đồ bộ nhớ chương trình
3.2. Bộ nhớ dữ liệu SRAM
1120 ô nhớ của bộ nhớ dữ liệu định địa chỉ cho file thanh ghi, bộ nhớ I/O và bộ nhớ dữ liệu SRAM nội. Trong đó 96 ô nhớ đầu tiên định địa chỉ cho file thanh ghi và bộ nhớ I/O, và 1024 ô nhớ tiếp theo định địa chỉ cho bộ nhớ SRAM nội.
Hình 3.2. Bản đồ bộ nhớ dữ liệu SRAM
3.3. Bộ nhớ dữ liệu EEPROM
ATmega16 chứa bộ nhớ dữ liệu EEPROM dung lượng 512 byte, và được sắp xếp theo từng byte, cho phép các thao tác đọc/ghi từng byte một.
Chương 4. Các cổng vào ra (I/O)
Vi điều khiểnATmega16có 32 đường vào ra chia làm bốn nhóm 8 bit một. Các đường vào ra này có rất nhiều chức năng và có thể lập trình được. Ở đây ta sẽ xét chúng là các cổng vào ra số. Nếu xét trên mặt này thì các cổng vào ra này là cổng vào ra hai chiều có thể định hướng theo từng bit. Và chứa cả điện trở pull-up (có thể lập trình được). Mặc dù mỗi port có các đặc điểm riêng nhưng khi xét chúng là các cổng vào ra số thì dường như điều khiển vào ra dữ liệu thì hoàn toàn như nhau. Chúng ta có thanh ghi và một địa chỉ cổng đối với mỗi cổng, đó là : thanh ghi dữ liệu cổng (PORTA, PORTB, PORTC, PORTD), thanh ghi dữ liệu điều khiển cổng (DDRA, DDRB, DDRC, DDRD) và cuối cùng là địa chỉ chân vào của cổng (PINA, PINB, PINC, PIND).
4.1. Thanh ghi DDRx
Đây là thanh ghi 8 bit (ta có thể đọc và ghi các bit ở thanh ghi này) và có tác dụng điều khiển hướng cổng PORTx (tức là cổng ra hay cổng vào). Nếu như một bit trong thanh ghi này được set thì bit tương ứng đó trên PORTx được định nghĩa như một cổng ra. Ngược lại nếu như bit đó không được set thì bit tương ứng trên PORTx được định nghĩa là cổng vào.
4.2.Thanh ghi PORTx
Đây cũng là thanh ghi 8 bit (các bit có thể đọc và ghi được) nó là thanh ghi dữ liệu của cổng Px và trong trường hợp nếu cổng được định nghĩa là cổng ra thì khi ta ghi một bit lên thanh ghi này thì chân tương ứng trên port đó cũng có cùng mức logic. Trong trường hợp mà cổng được định nghĩa là cổng vào thì thanh ghi này lại mang dữ liệu điều khiển cổng. Cụ thể nếu bit nào đó của thanh ghi này được set (đưa lên mức 1) thì điện trở kéo lên (pull-up) của chân tương ứng của port đó sẽ được kích hoạt. Ngược lại nó sẽ ở trạng thái hi-Z. Thanh ghi này sau khi khởi động Vi điều khiểnsẽ có giá trị là 0x00.
4.3. Thanh ghi PINx
Đây là thanh ghi 8 bit chứa dữ liệu vào của PORTx (trong trường hợp PORTx được thiết lập là cổng vào) và nó chỉ có thể đọc mà không thể ghi vào được.
Tóm lại: 1. Để đọc dữ liệu từ ngoài thì ta phải thực hiện các bước sau:
Đưa dữ liệu ra thanh ghi điều khiển DDRxn để đặt cho PORTx (hay bit n trong port) đó là đầu vào (xóa thanh ghi DDRx hay bit).
Sau đó kích hoạt điện trở pull-up bằng cách set thanh ghi PORTx ( bit).
Cuối cùng đọc dữ liệu từ địa chỉ PINxn (trong đó x: là cổng và n là bit).
2. Để đưa dữ liệu từ vi điều khiển ra các cổng cũng có các bước hoàn toàn tương tự. Ban đầu ta cũng phải định nghĩa đó là cổng ra bằng cách set bit tương ứng của cổng đó….và sau đó là ghi dữ liệu ra bit tương ứng của thanh ghi PORTx.
Ví dụ:
unsigned char i;
...
/* Define pull-ups and set outputs high */
/* Define directions for port pins */
PORTB = (1< DDRB = (1< /* Insert nop for synchronization*/
_NOP();
/* Read port pins */
i = PINB;
Chương 5. Bộ định thời
Bộ định thời (timer/counter0) là một module định thời/đếm 8 bit, có các đặc điểm sau:
Bộ đếm một kênh
Xóa bộ định thời khi trong mode so sánh (tự động nạp)
PWM
Tạo tần số
Bộ đếm sự kiện ngoài
Bộ chia tần 10 bit
Nguồn ngắt tràn bộ đếm và so sánh
Sơ đồ cấu trúc của bộ định thời:
Hình 5.1. Sơ đồ cấu trúc bộ định thời
5.1. Các thanh ghi
TCNT0 và OCR0 là các thanh ghi 8 bit. Các tín hiệu yêu cầu ngắt đều nằm trong thanh ghi TIFR. Các ngắt có thể được che bởi thanh ghi TIMSK.
Bộ định thời có thể sử dụng xung clock nội thông qua bộ chia hay xung clock ngoài trên chân T0. Khối chọn xung clock điều khiển việc bộ định thời/bộ đếm sẽ dùng nguồn xung nào để tăng giá trị của nó. Ngõ ra của khối chọn xung clock được xem là xung clock của bộ định thời (clkT0).
Thanh ghi OCR0 luôn được so sánh với giá trị của bộ định thời/bộ đếm. Kết quả so sánh có thể được sử dụng để tạo ra PWM hay biến...
 

Kiến thức bôn ba

Các chủ đề có liên quan khác

Các chủ đề có liên quan khác

Top