Đồ án Tìm hiểu VĐK AVR và lâp trình điều khiển LED 7 đoạn

Ngày nay cùng với sự phát triển của các ngành khoa học kĩ thuật, mà kĩ thuật điện tử đóng vai trò quan trọng hầu hết các lĩnh vực khoa học kĩ thuật, quản lý, công nghiệp tự động hóa, thông tin liên lạc vv do đó là những sinh viên ngành tinh học, thế hệ tương lai của đát nước cần phải nắm vững các kiến thức và vận dụng một cách có hiệu quả nhằm góp phần vào sự phát triển của khoa học kĩ thuật nước nhà rộng hơn là khoa học thế giới trong ngành tin học. Trong phạm vi lần này em được giao đề tài “Tìm hiểu VĐK AVR và lâp trình điều khiển LED 7 đoạn” Vi điều khiển AVR là một trong những họ vi điều khiển và có ứng dụng rộng rãi trong thực tế. Diều khiển LED 7 đoạn chỉ là một ứng dụng nhỏ của vi điều khiển AVR. Mục đích của đề tài này là làm cho sinh viên như em làm quen với họ vi điều khiển AVR và một trong những ứng dụng của nó cụ thể là điều khiển LED 7đoạn. Nhưng qua quá trình thiết kế và làm đề tài thì em đã rút ra được nhiều kinh nghiệm quý báu cho bản thân. Mặc dù em đã có nhiều cố gắng để hoàn thành đề tài nhưng do kiến thức của bản thân còn kém cỏi, em biết đề tài lần này của em còn rất nhiều thiếu xót. Do vậy em rất mong nhận được những đóng góp của thầy cô và toàn thể các bạn để đề tài của em được hoàn thiện hơn. Cuối cùng em xin giử lời cảm ơn cô Lưu Thị Liễu người đã tận tình hưỡng dẫn em trong xuất quá trình em làm đề tài lần này và toàn thể các thầy cô trong trong bộ môn Kỹ Thuật máy tính đã tạo điều kiện để em được nghiên cứu và làm đề tài lần này. Em xin chân thành cảm ơn.

doc36 trang | Chia sẻ: ngtr9097 | Lượt xem: 2884 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Đồ án Tìm hiểu VĐK AVR và lâp trình điều khiển LED 7 đoạn, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Lới nói đầu Ngày nay cùng với sự phát triển của các ngành khoa học kĩ thuật, mà kĩ thuật điện tử đóng vai trò quan trọng hầu hết các lĩnh vực khoa học kĩ thuật, quản lý, công nghiệp tự động hóa, thông tin liên lạc…vv do đó là những sinh viên ngành tinh học, thế hệ tương lai của đát nước cần phải nắm vững các kiến thức và vận dụng một cách có hiệu quả nhằm góp phần vào sự phát triển của khoa học kĩ thuật nước nhà rộng hơn là khoa học thế giới trong ngành tin học. Trong phạm vi lần này em được giao đề tài “Tìm hiểu VĐK AVR và lâp trình điều khiển LED 7 đoạn” Vi điều khiển AVR là một trong những họ vi điều khiển và có ứng dụng rộng rãi trong thực tế. Diều khiển LED 7 đoạn chỉ là một ứng dụng nhỏ của vi điều khiển AVR. Mục đích của đề tài này là làm cho sinh viên như em làm quen với họ vi điều khiển AVR và một trong những ứng dụng của nó cụ thể là điều khiển LED 7đoạn. Nhưng qua quá trình thiết kế và làm đề tài thì em đã rút ra được nhiều kinh nghiệm quý báu cho bản thân. Mặc dù em đã có nhiều cố gắng để hoàn thành đề tài nhưng do kiến thức của bản thân còn kém cỏi, em biết đề tài lần này của em còn rất nhiều thiếu xót. Do vậy em rất mong nhận được những đóng góp của thầy cô và toàn thể các bạn để đề tài của em được hoàn thiện hơn. Cuối cùng em xin giử lời cảm ơn cô Lưu Thị Liễu người đã tận tình hưỡng dẫn em trong xuất quá trình em làm đề tài lần này và toàn thể các thầy cô trong trong bộ môn Kỹ Thuật máy tính đã tạo điều kiện để em được nghiên cứu và làm đề tài lần này. Em xin chân thành cảm ơn. Chương I: Tổng Quát Về AVR Giới thiệu về AVR - AVR là một họ vi điều khiển do hãng Atmel sản xuất được giới thiệu lần đầu vào năm 1996. AVR là một vi điều khiển 8bits với cấu trúc tập lệnh đơn giản hóa – RISC( Reduced Instruction Set Computer), một vi điều khiển đang có ưu thế trong họ vi xử lý. Cả trong tính ứng dụng và đặc biệt là chức năng. Khi sử dụng AVR gần như chúng ta không cần măng thêm bất ký linh kiện phụ nào. Thậm chí không cần tạo nguồn xung clock cho chip. Thiết bị lập trình (mạch nạp) cho AVR rất đơn giản, có loại chỉ cần vài điện trở là có thể làm được, một số AVR còn hỗ chợ chíp on-Chíp bằng bootloader không cần mach nạp… Bên cạnh lập trình với ASM, cấu trúc của AVR được thiết kế tương thích với C. Hầu hết Chíp AVR có những tính năng sau. Có thể xử dụng xung clock lên đên 16MHz, hoặc sử dụng xung clock nôi lên đến 8MHz (sai số 3%). Bộ nhớ chương trinh Flash có thể lập trinh lại rất nhiều lần và dung lượng lớn. Có SRAM lơn, đặc biết có bộ nhớ lưu trữ lập trình được ở EEPROM. Nhiều ngõ vào ra (I/O Folt) 2 hướng (bi-directional) 8bits, 16bits tiemr/counter tích hợp PWM Có bộ chuyển đổi Analog – Digital phân giải 10 bits, nhiều kênh. Chức năng Analog comparator. Giao diện tiếp nối URART (Tương thích chuẩn nối tiếp RS 232) Giao diện tiếp nối TWO – Wire – Serial (Tương thích chuẩn I2C) Master và slaver … AVR có rất nhiều dòng khác nhau bao gồm dòng Tiny AVR (như AT tiny 12, AT tiny 22…) có kích thước bộ nhớ nhỏ, ít bộ phận ngoại vi, rồi đến dòng AVR ( chăng hạn AT90S8535, AT90S8515) có kích thước bộ nhớ vào loại trung bình và mạnh hơn là dòng Mega (như Atmega32, Atmega128,…) với bộ nhớ có kich thước vài Kbyte đến vài Kb cùng với các bộ ngoại vi đa dạng được tích hợp trên chíp, cũng có dòng tích hợp cả LCD trên chip (dòng LCD AVR). Tốc độ của dòng mega cũng cao hơn các dòng khác, Sự khác nhau cơ bản giữa các dòng chính là cấu trúc ngoại vi, còn nhân thì vẫn như nhau. Cấu trúc của AVR. Các tính năng của AVR ATmega128. ROM: 128 Kbytes SRAM: 4 Kbytes 64 thanh ghi I/O 160 thanh ghi đa mục đích 2 bộ định thời 8 bit (0.2) 2 bộ định thời 16 bit Bộ định thời watchdog Bộ dao động nội RC tần số 1MHz, 2MHz, 4MHz, 8MHz ADC 8 kênh với độ phân giải 10bit (Ở dòng Zmega lên đến 12 bit) 2 kênh PƯM 8 bit 6 kênh PƯM có thể lập trình thay độ phân giải từ 2 tới 16 bit Bộ so sanh tương tự có thể lựa chọn ngõ vào Hai khối USART lập trình được Khối truyền nhận nối tiếp SPI Khối giao tiếp nối tiếp 2 dây TWI Hỗ trợ boot loader 6 chế độ tiết kiệm năng lượng Lựa chọn tần số hoạt đông bằng phần mền Dóng gói 64 chân kiểu TQFP Tần số tối đa 16MHz Điện thế 4,5v – 5,5v ……. Các cổng vào ra của ATmega 128 Cổng vào ra là một trong số các phương tiện để vi điều khiển giao tiếp với các thiết bị ngoại vi. ATmega128 có cả thảy 7 cổng ( port ) vào ra 8 bit là : PortA, PortB, PortC, PortD, PortE, PortF, PortG, tương ứng với 56 đường vào ra. Các cổng vào ra của AVR là cổng vào ra hai chiều có thể định hướng, tức có thể chọn hướng của cổng là hướng vào (input ) hay hướng ra (output ). Tất các các cổng vào ra của AVR điều có tính năng Đọc – Chỉnh sửa – Ghi ( Read – Modify – write ) khi sử dụng chúng như là các cổng vào ra số thông thường. Điều này có nghĩa là khi ta thay đổi hướng của một chân nào đó thì nó không làm ảnh hưởng tới hướng của các chân khác. Tất cả các chân của các cổng ( port )điều có điện trở kéo lên ( pull-up ) riêng, ta có thể cho phép hay không cho phép điện trở kéo lên này hoạt động. Cách hoát động. Khi khảo sát các cổng như là các cổng vào ra số thông thường thì tính chất của các cổng ( PortA, PortB,…PortG ) là tương tự nhau, nên ta chỉ cần khảo sát một cổng nào đó trong số 7 cổng của vi điều khiển là đủ. Mỗi một cổng vào ra của vi điều khiển được liên kết với 3 thanh ghi : PORTx, DDRx, PINx. ( ở đây x là để thay thế cho A, B,…G ). Ba thanh ghi này sẽ được phối hợp với nhau để điều khiển hoạt động của cổng, chẳn hạn thiết lập cổng thành lối vào có sửdụng điện trở pull-up, ..v.v.. .Sau đây là diễn tả cụ thể vai trò của 3 thanh ghi trên. Thanh ghi DDRx Đây là thanh ghi 8 bit ( có thể đọc ghi ) có chức năng điều khiển hướng của cổng (là lối ra hay lối vào ). Khi một bit của thanh ghi này được set lên 1 thì chân tương ứng với nó được cấu hình thành ngõ ra. Ngược lại, nếu bit của thanh ghi DDRx là 0 thì chân tương ứng với nó được thiết lập thành ngõ vào. Lấy ví dụ: Khi ta set tất cả 8 bit của thanh ghi DDRA đều là 1, thì 8 chân tương ứng của portA là PA1, PA2, … PA7 ( tương ứng với các chân số 50, 49, …44 của vi điều khiển ) được thiết lập thành ngõ ra. Thanh ghi PORTx PORTx là thanh ghi 8 bit có thể đọc ghi. Đây là thanh ghi dữ liệu của PORTx, Nếu thanh ghi DDRx thiết lập cổng là lối ra, khi đó giá trị của thanh ghi PORTx cũng là giá trị của các chân tương ứng của PORTx, nói cách khác, khi ta ghi một giá trị logic lên 1 bit của thanh ghi này thì chân tương ứng với bit đó cũng có cùng mức logic. Khi thanh ghi DDRx thiết lập cổng thành lối vào thì thanh ghi PORTx đóng vai trò như một thanh ghi điều hiển cổng. Cụ thề , nếu một bit của thanh ghi này được ghi thành 1 thì điện trở treo ( pull-up resistor ) ở chân tương ứng với nó sẽ được kích hoạt, ngược lại nếu bit được ghi thành 0 thì điện trở treo ở chân tương ứng sẽ không được kích hoạt, cổng ở trạng thái cao trở ( Hi-Z ). Thanh ghi PINx PINx không phải là một thanh ghi thực sự, đây là địa chỉ trong bộ nhớ I/O kết nối trực tiếp tới các chân của cổng. Khi ta đọc PORTx tức ta đọc dữ liệu được chốt trong PORTx, còn khi đọc PINx thì giá trị logic hiện thời ở chân của cổng tương ứng được đọc. Vì thế đối với thanh ghi PINx ta chỉ có thể đọc mà không thể ghi. Bảng 1 thể hiện các các thiết lập cách hoạt có thể có của cổng DDRxn PORTxn PUD (Trong thanh ghi SFIOR) I/O Pull/Up Ghi chú 0 0 x Ngõ vào Không Cao trở 0 1 0 Ngõ vào Có Như một nguồn dòng 0 1 1 Ngõ vào Không Cao trở 1 0 x Ngõ ra Không Ngõ ra thấp 1 1 x Ngõ ra Không Ngõ ra cao Cấu hình cho các chân cổng DDRxn là bít thứ n của thanh ghi DDRx PORTxn là thanh ghi thứ n của thanh ghi PORTx Dấu “x” ơ cậu thứ ba là chỉ trạng thái logic tùy ý Đưới đây là địa chỉ của tất cả các port. Tên PORT Địa chỉ I/O Địa chỉ SRAM PORTA $1B $3B DDRA $1A $3A PINA $19 $39 PORTB $18 $38 DDRB $17 $37 PINB $16 $36 PORTC $15 $35 DDRC $14 $34 PINC $13 $33 PORTD $12 $32 DDRD $11 $31 PIND $10 $30 PORTE $03 $23 DDRD $02 $22 PINE $01 $21 PORTF Không có $62 DDRF Không có $61 PINF $00 $20 PORTG Không có $65 DDRG Không có $64 PING Không có $6 Đưới đây là địa chỉ của tất cả các port. Chú y: 3 bit cuối (bit 5, 6, 7) của các thanh ghi PORTG, DDRG và PING không sử dụng được. Khi đọc ta luôn nhận được giá trị 0. Port A (PA0…PA7). Port A là cổng I/O 8-bit hai chiều với các điện trở pull -up bên trong (được lựa chọn cho mỗi bit). Bộ đệm đầu ra của Port A có đặc tính điều kiển cân đối với cả tín hiệu source và sink. Khi là tín hiệu đầu vào, các chân của cổng A sẽ tiêu thụ dòng nếu các điện trở pull-up bên trong được kích hoạt. Port A được sử dụng làm các đường địa chỉ thấp và dữ liệu khi giao tiếp với bộ nhớ ngoài theo bảng sau: Các chân Port A cũng là ngõ vào analog của bộ chuyển đổi A/D PA7…PA0 Chức năng bổ sung PA7 ADC7 (địa chỉ và dữ liệu bit 7 giao tiếp với bộ nhớ ngoài) PA6 ADC6 (địa chỉ và dữ liệu bit 6 giao tiếp với bộ nhớ ngoài) PA5 ADC5 (địa chỉ và dữ liệu bit 5 giao tiếp với bộ nhớ ngoài) PA4 ADC4 (địa chỉ và dữ liệu bit 4 giao tiếp với bộ nhớ ngoài) PA3 ADC3 (địa chỉ và dữ liệu bit 3 giao tiếp với bộ nhớ ngoài) PA2 ADC2 (địa chỉ và dữ liệu bit 2 giao tiếp với bộ nhớ ngoài) PA1 ADC1 (địa chỉ và dữ liệu bit 1 giao tiếp với bộ nhớ ngoài) Port B (PB0…PB7): Port B là cổng I/O 8-bit hai chiều với các điện trở pull -up bên trong (đư ợc lựa chọn cho mỗi bit). Bộ đệm đầu ra của Port B có đặc tính điều kiển cân đối với cả tín hiệu source và sink. Khi là tín hi ệu đầu vào, các chân của cổng B sẽ ti êu thụ dòng nếu các điện trở pull-up bên trong đ ược kích hoạt. Port B được sử dụng với những chức năng bổ sung theo bảng sau: PB7…PB0 Chức năng bổ sung PB7 OC2/OC1C( đầu ra so sánh v à đầu ra PWM cho timer/counter2 và đầu ra so sánh và đầu ra PWM C cho timer/counter1) PB6 OC1B (đầu ra so sánh và đầu ra PWM B cho timer/counter1) PB5 OC1A (đầu ra so sánh và đầu ra PWM A cho timer/counter1) PB4 OC0 (đầu ra so sánh và đầu ra PWM cho timer/counter0) PB3 MISO (đầu vào chủ/đầu ra tớ bus SPI) PB2 MOSI (đầu ra chủ/đầu v ào tớ bus SPI) PB1 SCK (chân Clock của SPI) PB0 SS (ngõ vào chọn Slave của SPI) Port C (PC0…PC7): Port C là cổng I/O 8-bit hai chiều với các điện trở pull -up bên trong (đư ợc lựa chọn cho mỗi bit). Bộ đệm đầu ra của Port C có đặc tính điều kiển cân đối với cả tín hiệu source và sink. Khi là tín hi ệu đầu vào, các chân của cổng C sẽ ti êu thụ dòng nếu các điện trở pull-up bên trong đư ợc kích hoạt. Port C được sử dụng với những chức năng bổ sung theo bảng sau: PC7…PC0 Chức năng bổ sung PC7 địa chỉ bit 15 giao tiếp với bộ nhớ ngoài PC6 địa chỉ bit 14 giao tiếp với bộ nhớ ngoài PC5 địa chỉ bit 13 giao tiếp với bộ nhớ ngoài PC4 địa chỉ bit 12 giao tiếp với bộ nhớ ngoài Pc3 địa chỉ bit 11 giao tiếp với bộ nhớ ngoài PC2 địa chỉ bit 10 giao tiếp với bộ nhớ ngoài PC1 địa chỉ bit 9 giao tiếp với bộ nhớ ngoài PC địa chỉ bit 8 giao tiếp với bộ nhớ ngoài Port D (PD0…PD7) Port D là cổng I/O 8-bit hai chiều với các điện trở pull -up bên trong (được lựa chọn cho mỗi bit). Bộ đệm đầu ra của Port D có đặc tính điều kiển cân đối với cả tín hiệu source và sink. Khi là tín hi ệu đầu vào, các chân của cổng D sẽ ti êu thụ dòng nếu các điện trở pull-up bên trong đ ược kích hoạt.) Port D được sử dụng với những chức năng bổ sung theo bảng sau. PD7…PD0 Chức năng bổ sung PD7 T2 (ngõ vào của bộ đếm ngoài counter 2) PD6 T1 (ngõ vào của bộ đếm ngoài counter 1) PD5 XCK1 (chân I/O Clock của USART1) PD4 ICP1 (chân bắt mẫu của Timer/Counter1) PD3 INT3/TXD1(ngõ vào ngắt ngoài 3 hoặc truyền tín hiệu UART1) PD2 INT2/RXD1(ngõ vào ngắt ngoài 2 hoặc nhận tín hiệu UART1) PD1 INT1/ SDA (ngõ vào ngắt ngoài 1 hoặc Chân data I/O của giao thức Two-wire) PD0 INT0/ SCL (ngõ vào ngắt ngoài 0 hoặc Chân Clock của giao thức Port E (PE0…PE7) Port E là cổng I/O 8-bit hai chiều với các điện trở pull -up bên trong (được lựachọn cho mỗi bit). Bộ đệm đầu ra của Port E có đặc tính điều kiển cân đối với cả tín hiệu source và sink. Khi là tín hi ệu đầu vào, các chân của cổng E sẽ ti êu thụ dòng nếu các điện trở pull-up bên trong đư ợc kích hoạt. Các chức năng khác của Port E PE7… PD0 Chức năng bổ sung PE7 INT7/ICP3 (ngõ vào ngắt ngoài 7 hoặc chân bắt mẫu của Timer/ Counter3) PE6 INT6/T3 (ngõ vào ngắt ngoài 6 hoặc ngõ vào của bộ đếm ngoài Timer/Counter 3) PE5 INT5/OC3C (ngõ vào ngắt ngoài 5 hoặc ngõ ra so sánh PWM C của Timer/Counter3) PE4 INT4/OC3B (ngõ vào ngắt ngoài 4 hoặc ngõ ra so sánh PWM B của Timer/Counter3) PE3 AIN1/OC3A (ngõ vào Negative của bộ so sánh analog hoặc ngõ ra so sánh PWM A của Timer/Counter3) PE2 AIN0/ XCK0 (ngõ vào Possitive của bộ so sánh analog hoặc chân I/O Clock của USART0) PE1 PDO/TXD0 (ngõ ra dữ liệu hoặc ngõ ra USART0) PE0 PDI/RXD0 (ngõ vào dữ liệu hoặc ngõ vào USART0) Port F (PF0…PF7): Port F có chức năng làm đầu vào cho bộ chuyển đổi ADC tích hợp sẵn. Khi không được sử dụng với chức năng l àm đầu vào của ADC, Port F cũng là cổng I/O 8-bit hai chiều với các điện trở pull -up bên trong (đư ợc lựa chọn cho mỗi bit). Bộ đệm đầu ra của Port F có đặc tính điều kiển cân đối với cả tín hiệu so urce và sink. Khi là tín hiệu đầu vào, các chân của cổng F sẽ tiêu thụ dòng nếu các điện trở pull -up bên trong được kích hoạt. Port F được sử dụng với những chức năng bổ sung theo bảng sau: PF0… PF7 Chức năng bổ sung PF7 ADC7/TDI (ngõ vào ADC 7 hoặc chân dữ liệu vào Test JTAG) PF6 ADC6/TDO (ngõ vào ADC 6 hoặc chân dữ liệu ngõ ra Test JTAG) PF5 ADC5/ TMS (ngõ vào ADC 5 hoặc chân chọn Mode Test JTAG) PF4 ADC4/ TCK (ngõ vào ADC 4 hoặc chân Clock Test JTAG PF3 ADC3 (ngõ vào ADC 3) PF2 ADC2 (ngõ vào ADC 2) PF1 ADC1 (ngõ vào ADC 1) PF0 ADC0 (ngõ vào ADC 0) Port G (PF0… PG7) Port G là cổng I/O 5-bit hai chiều với các điện trở pull -up bên trong (được lựa chọn cho mỗi bit). Bộ đệm đầu ra của Port G có đặc tính điều kiển cân đối với cả tín hiệu source và sink. Khi là tín hi ệu đầu vào, các chân của cổng G sẽ t iêu thụ dòng nếu các điện trở pull-up bên trong đư ợc kích hoạt) Port G được sử dụng với những chức năng bổ sung theo bảng sau: Chân Chức năng PG4 TOSC1 (Chân 1 bộ dao động của Timer/Counter 0) PG3 TOSC2 (Chân 2 bộ dao động của Timer/Counter 0) PG2 ALE (cho phép ch ốt địa chỉ tới bộ nhớ ngoài) PG1 RD(cho phép đ ọc bộ nhớ ngoài) PG0 WR(cho phép vi ết tới bộ nhớ ngoài) Sơ đồ chân của ATMEGA 128. GND: Chân nối mass VCC: Điện áp nguồn Cấu trúc bộ nhớ của Atmage 128. Bộ nhớ của ATmega 120. Bộ nhớ của AVR có cấu trúc harvard là cấu trúc bus riêng cho bộ nhớ chường trình và bộ nhớ dữ liệu. Bộ nhớ AVR chia làm 2 phần chính bộ nhớ chương trình (program memory) và bộ nhớ dữ liệu (Data memory). Bộ nhớ chương trình. Bộ nhớ chương trình của AVR có cấu trúc flash có dung lương 128 kbytes. Bộ nhớ chương trình có độ rộng 16 bit. Ở ATmega 128 bộ nhớ chương trình có thể được chia làm 2 phần: Phần boot loader (Boot loader program section) và phần ứng dụng (Applcation program section) Phần boot loader chứa chương trình boot loader. Chương trình boot loader là một phần mền nhỏ nap trong vi điều khiển được chạy lúc khởi động. Phần mền này có thề tải vào trong vi điều khiển chương trình của người sử dụng và sau đó thược thi chương trình nay. Mỗi khi reset vi điều khiển CPU sẽ nhảy tới thực thi chương trình boot loader này trước, chương trình boot loader sẽ dò xem chương trình nào cần nạp vào vi điều khiển hay không, nếu có chương trình cần nạp, boot loader sẽ nạp vào vùng nhớ ứng dụng (Application program section) rồi thực thi chương trình này. Ngược lại boot loader sẽ chuyển sang chương trinh ứng dụng có sẵn trong vùng nhớ ứng dụng để thực thi chương trình nay. Phần ứng dụng (Application program section ) là vùng nhớ chứa chương trình ứng ụng của người dùng. Kích thước của phần boot loader và phần ứng dụng có thể ùy chọn. Hình 2.1 thể hiện cấu trúc bộ nhớ chương trình có sử dụng và không sử ụng boot loader, khi sử dụng phần boot loader ta thấy 4 word đầu tiên thay vì chỉ thị cho CPU chuyển tới chương trình ứng dụng của người dùng (là chương trình có nhãn start) thì chỉ thị CPU nhảy tới phần chương trình boot loader để thực hiện trước, rồi mới quay trở lại thực hiện chương trình ứng dụng. Bộ nhớ dữ liêu. Bộ nhớ dữ liệu của AVR chia làm 2 phần chính là bộ nhớ SRAM và bộ nhớ EEPROM. Tuy cùng là bộ nhớ dữ liệu nhưng hai bộ nhớ này lại tách biệt nhau và được đánh địa chỉ riêng Bộ nhớ SRAM có dụng lượng 4 K bytes, Bộ nhớ SRAM có hai chế độ hoạt động là chế độ thông thường và chế độ tương thích vớ ATmega103,  muốn thiết lập bộ nhớ SRAM hoạt động theo chế độ nào ta sử dụng bit cầu chì M103C ( M103C fuse bit(9) ) Bộ nhớ SRAM ở chế độ bình thường : Ở chế độ bình thường bộ nhớ SRAM được Chia thành 5 phần: Phần đầu là 32 thanh ghi chức năng chung (General Purpose Register ) R0 đến R31 có địa chỉ từ $0000 tới $001F. Phần thứ 2 là không gian nhớ vào ra với 64 thanh ghi vào ra ( I/O Register ) có địa chỉ từ $0020 tới $005F. Phần thứ 3 dùng cho vùng nhớ dành cho các thanh ghi vào ra mở rộng ( Extended I/O Registers ) có địa chỉ từ $0060 tới $00FF. Phần thứ 4 là vùng SRAM nội với 4096 byte có địa chỉ từ $0100 tới $10FF. Phần thứ 5 là vùng nhớ SRAM ngoài ( External SRAM ) bắt đầu từ địa chỉ $1100, vùng SRAM mở rộng này có thể mở rộng lên đến 64 K byte. Khi nói bộ nhớ SRAM có dung lượng 4 K byte là nói tới phần thứ 4 ( SRAM nội ). Nếu tính cả các thanh ghi thì bộ nhớ SRAM trong chế độ bình thường sẽ là 4.25 K byte = 4352 byte. Bộ nhớ SRAM ở chế độ tương thích ATmega103 : Ở chế này bộ nhớ SRAM cơbản cũng giống ở chế độ bình thường, ngoại trừ phần thứ 3 là vùng nhớ dành chocác thanh ghi vào ra mở rộng không tồn tại, ngoài ra kích thước của phần SRAMnội ( internal SRAM ) chỉ có 4000 byte so với 4096 byte ở chế độ bình thường. Bộ nhớ định thời của ATmega 128. ATmega 128 có 4 bộ nhớ định thời, bộ nhớ 1 và 3 là bộ nhớ 16 bit, bộ nhớ định thời 0 và 2 là bộ nhớ định thời 8 bit. Dưới đây là mô tả chi tiết của 4 bộ nhới định thời. BỘ ĐỊNH THỜI TIMER/COUTER 0: Timer/Counter0 là Timer/Counter 8 bit với các đặc điểm chính PWM Phát tần số Bộ định trước tỉ lệ đồng hồ 10bit Các nguồn ngắt báo tràn và báo so sánh phù hợp (OCFO và TOVO) Cho phét đồng tự báo động 32kHz bên ngoài bên ngoài đông lập với đồng hồ I/O BỘ ĐỊNH THỜI TIMER/COUTER 2: Timer/Counter2 là Timer/Counter 8 bits, v ới các đặc điểm chính: PWM Phát tấn số Bộ định trước tỉ lệ đồng hồ 10bit Các nguồn ngắt báo tràn và báo so sánh phù hợp (OCFO và TOVO) BỘ ĐỊNH THỜI TIMER/COUTER 1 VÀ TIMER/COUNTER 3: Timer/Counter1và Timer/Count er3 là các Timer/Counter 16 bits, với các đặc điểmchính Thiết kế 16bit thực sự (cho phép tạo ra xung PWM 16bit) 2 bộ so sánh ngõ ra độc lập 1 bộ bắt mẫu từ ngõ vào 1 bộ giảm nhiều ngõ vào Chế dộ xóa times khi đát tới giá trị so sánh. Tạo tần số Tạo xung PWM có thể thay đổi giá trị Đếm sự kiện ngoài Các chết độ hoạt động Chế độ bình thường. Chế độ xóa times khi đạt tới giá trị so sánh. Chế độ PWM khi đạt tấn số cao Chế độ PWM hiệu chỉnh ba pha Chế độ PWM hiểu chỉnh ba pha và tấn số. . IC giải mã 7447 Là IC có chức năng giả mã nhị phân BCD ra mã led 7 đoạn loại A chung. Như vậy đầu vào có 4bit đầu ra có 7bit. Đều là dạng song song. Chức năng các chân như sau. A,B,C,D: Chân đầu vào mã BCD với trọng số bit tăng dần từ A – D EBI: Ripple Blanking Input RBO: Ripple Blanking Output QA – QF: Đầu ra của mã 7 đoạn Bảng chân lý: LED A B C D a b c d e f g 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 1 1 1 1 1 0 0 1 0 0 0 1 0 0 1 0 2 0 0 1 1 0 0 0 0 1 1 0 3 0 1 0 0 1 0 0 1 1 0 0 4 0 1 0 1 0 1 0 0 1 0 0 5 0 1 1 0 1 1 0 0 0 0 0 6 0 1 1 1 0 0 0 1 1 1 1 7 1 0 0 0 0 0 0 0 0 0 0 8 1 0 0 1 0 0 0 1 1 0 0 9 Chương II: Ngôn ngữ lập trình cho AVR Giới thiêu. Có rất nhiều phần mền hỗ trợ ngôn ngữ bậc cao như BascomAVR (Basic) hay codevisionAVR (C) mà bạn có thể không cần biết về cấu trúc của AVR. Tuy