1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đồ án_Ứng dụng VĐK AVR ATMEGA32 vào thiết kế máy tính điện tử

58 686 6

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 58
Dung lượng 1,7 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

 Cách lập trình đa dạng với nhiều ngôn ngữ khác nhau như C, basic ,assambly..giúp cho người dùng có thể lựa chọn ngôn ngữ lập trình cho phù hợp  Có bộ nhớ chương trình và bộ nhớ dữ liệ

Trang 1

Mục lục KẾT LUẬN 56

Mở đầu

Kỹ thuật vi điều khiển hiện nay rất phát triển, nó được ứng dụng vào rất nhiềulĩnh vực sản xuất công nghiệp, tự động hóa, trong đời sống và còn nhiều lĩnh vực khácnữa So với kỹ thuật số thì kỹ thuật vi điểu khiển nhỏ gọn hơn rất nhiều do nó đượctích hợp lại và có khả năng lập trình được để điều khiển Nên rất tiện dụng và cơ động.Nằm trong họ vi điều khiển cấp cao, vi điều khiển AVR đuợc ứng dụng rất rộng rãitrong kỹ thuật điều khiển ứng dụng, lĩnh vực đo lường, lĩnh vực quảng cáo Với đề tàinày nhóm chúng em xin làm một mạch ứng dụng khác của vi điều khiển AVR liênquan đến lĩnh vực tính toán là dùng vi điều khiển AVR thiết kế “ THIẾT KẾ MÁYTÍNH ĐIỆN TỬ ” Một máy tính với đầy đủ các chức năng toán học bình thường :cộng, trừ, nhân, chia,tính căn, bình phương và nhiều các phép tính khác với số thực.Đặc biệt còn có phép tính liên quan đến kỹ thuật như tính điện trở tương đương củađoạn mạch Kết quả tính toán hiển thị trên LCD 16x2

Trong quá trình thực hiện đề tài không thể tránh những sai sót, mong thầy hướngdẫn, góp ý kiến để cho đề tài được hoàn chỉnh hơn Cảm ơn Thầy đã giúp đỡ em trongquá trình làm đề tài trên

Máy tính bỏ túi là một công cụ học tập quen thuộc của học sinh, sinh viên, đặtbiệt là sinh viên kỹ thuật Trong đời sống hàng ngày, nó là một vật cần thiết cho việctính tiền trong các vụ mua bán Trong sản xuất, nó được dùng để tính toán số sản phẩmlàm ra Và còn rất nhiều ứng dụng khác của máy tính bỏ túi, cho thấy sự phổ biến, cầnthiết của nó Trên thị trường có nhiều loại máy tính bỏ túi khác nhau, với nhiều tínhnăng dành cho từng đối tượng người dùng riêng Loại đơn giản dùng cho học sinh,nhân viên bán hàng… Loại phức tạp dành cho sinh viên, kỹ sư… Đặc biệt đối với sinhviên kỹ thuật, máy tính bỏ túi là vật dụng rất quen thuộc, cần thiết cho học tập và tínhtoán Nhận thấy sự phổ biến của máy tính bỏ túi đó trong học tập, lao động và đời sống

Trang 2

nên nhóm em quyết định chọn đề tài “Ứng dụng vi điều khiển AVR Atmega32 vào thiết

kế máy tính điện tử ”.

Mục tiêu đề tài: Là một đề tài tốt nghiệp mục tiêu của đề tài “Ứng dụng vi điều

khiển AVR Atmega32 vào thiết kế Máy tính điện tử ” em làm là:

 Hoàn thành đồ án tốt nghiệp do truờng giao để giúp em có thêm kiến thức về

vi điều khiển AVR

 Tạo bước đầu cho sinh viên nghiên cứu những ứng dụng của vi điều khiển nóichung và vi điều khiển AVR nói riêng trong thực tiễn để rồi từ đó tìm tòi, pháttriển nhiều ứng dụng khác trong đời sống hằng ngày cần đến vi điều khiển

 Nắm được cách thức giải quyết một đề tài thực tế nói chung và đề tài tốtnghiệp nói riêng cũng như so sánh các giải pháp và lựa chọn phương án thựchiện để tối ưu sản phẩm trên thực tế

 Nắm đuợc trình tự thiết kế thi công một ứng dụng dùng vi điều khiển AVR:Cách lập trình, cách thiết kế phần cứng

Lý do mà em lựa chọn phương án này là:

 Vi điều khiển AVR là một dòng vi điều khiển tương đối mạnh với nhiều tínhnăng và còn thông dụng trên thị trường hiện nay.Do đó có thể dễ dàng mởrộng thiết kế các ứng dụng khác

 Hoạt động hiệu quả và rất ổn định mà giá thành lại tương đối rẻ so với các viđiều khiển khác

 Cách lập trình đa dạng với nhiều ngôn ngữ khác nhau như C, basic ,assambly giúp cho người dùng có thể lựa chọn ngôn ngữ lập trình cho phù hợp

 Có bộ nhớ chương trình và bộ nhớ dữ liệu tương đối lớn phù hợp với yêu cầulập trình của đề tài

Lý do chọn đề tài : Do trình độ có hạn em mới chỉ dừng lại ở việc lập trình tínhtoán các phép tính đơn giản và thông dụng Nếu còn thời gian và điều kiện cho phép

Em sẽ tìm hiểu và mở rộng những phép tính phức tạp cũng như nghiên cứu các ứngdụng khác của vi điểu khiển AVR Đề tài này chỉ trong giới hạn là đề tài tốt nghiệp và

do trình độ của người làm đề tài còn nhiều hạn chế nên khó tránh khỏi những sai sóttrong nội dung cũng như trong thi công mạch Mong quý thầy cô thông cảm

Trang 3

CHƯƠNG 1

CƠ SỞ LÝ THUYẾT VỀ VI ĐIỀU KHIỂN AVR ATMEGA321.1 Giới thiệu về vi điều khiển AVR của Atmel.

Vi điều khiển AVR do hãng Atmel (Hoa Kì) sản xuất được gới thiệu lần đầu

năm 1996 AVR có rất nhiều dòng khác nhau bao gồm dòng Tiny AVR (như AT tiny

13, 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ẳn 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ó kích thướcvài Kbyte đến vài trăm Kb cùng với các bộ ngoại vi đa dạng được tích hợp trên chip,cũng có dòng tích hợp cả bộ LCD trên chip (dòng LCD AVR) Tốc độ của dòngMega cũng cao hơn so với 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ẫnnhư nhau, Hình 1 Đặt biệt, năm 2008, Atmel lại tiếp tục cho ra đời dòng AVR mới làAtmegaAVR, với những tính năng mạnh mẽ chưa từng có ở các dòng AVR trước đó

Có thể nói XmegaAVR là dòng MCU 8 bit mạnh mẽ nhất hiện nay

Hính 1 : Các dòng Vi xử lý AVR

Trang 4

Cấu trúc cơ bản của vi điều khiển AVR được thể hiện ở hình 2:

HÌnh 2 : Cấu trúc bên trong AVR

Trang 5

_ Internal và External Interrupt.

1.2 Vi điều khiển Atmega32.

1.2.1 Sơ đồ khối vi điều khiển AVR Atmega32.

Trang 6

Hình 3 : Sơ đồ khối Atmega32Giải thích:

Trang 7

Phần cốt lõi là AVR kết hợp với các tập lệnh đa dạng với 32 thanh ghi đanăng 32 thanh ghi được kết nối trực tiếp với bộ số học ALU (Arthmetic Logic Unit),cho phép truy cập 2 thanh ghi độc lập trong một lệnh đơn được thực thi trong mộtxung nhịp Cấu trúc này mang lại nhiều khả năng lập trình có hiệu quả cao đạt trên 10lần nhanh hơn bộ vi xử lý CISC (Complex Instruction Set Computer: máy tính có tậplệnh phức tạp) thông thường.

Atmega32 cung cấp các thông số đặc trưng sau: bộ nhớ Flash 32K byte lậptrình được ngay trên hệ thống với khả năng đọc và ghi, EEPPROM 1024byte, SRAM2K byte, 32 đường vào/ra đa năng, 32 thanh ghi làm việc đa năng, 1 giao diện JTAG,việc lập trình và đáp ứng bộ dò sai trên chip, 3 bộ Timer/Counter làm việc linh hoạtvới chế độ so sánh, các ngắt ngoài và trong, 1 bộ USART lập trình nối tiếp, 1 giaodiện nối tiếp 2 dây byte định hướng, 1 bộ chuyển ADC 8 kênh 10 bit với trạng tháiđầu vào vi sai với độ lợi có thể lập trình, 1 bộ định thời Watchdog có thể lập trình với

bộ dao động bên trong, 1 cổng nối tiếp SPI, và 6 chế độ tiết kiệm năng lượng có thểlựa chọn nhờ phần mềm Chế độ nghỉ làm cho CPU ngừng hoạt động trong khi chophép bộ USART, bộ giao diện 2 dây, bộ chuyển đổi A/D, SRAM, bộ Timer/Counter,cổng SPI, và hệ thống ngắt vẫn tiếp tục làm việc Chế độ làm giảm mức tiêu thụ nănglượng lưu nội dung thanh ghi nhưng lại để bộ dao động hoạt động, cấm tất cả cácchức năng khác trên chip cho đến khi có tín hiệu ngắt ngoài kế tiếp hoặc tín hiệu resetphần cứng Ở chế độ tiết kiệm năng lượng, bộ Timer bất đồng bộ vẫn tiếp tục hoạtđộng và cho phép người sử dụng vẫn tiếp tục duy trì 1 bộ định thời cơ sở trong khicác thiết bị còn lại trong chế độ nghỉ Chế độ giảm nhiễu ADC làm cho CPU ngừnghoạt động và tất cả các môđun vào/ra ngoại trừ bộ Timer bất đồng bộ và bộ ADC, đểnhiễu của việc chuyển mạch đạt cực tiều trong suốt quá trình chuyển đổi ADC Trongchế độ dự phòng, thạch anh/bộ dao động cộng hưởng sẽ hoạt động trong khi các thiết

bị còn lại trong chế độ nghỉ Điều này cho phép việc khởi động nhanh được kết hợpvới việc tiêu thụ năng lượng thấp Ở chế độ dự phòng bên ngoài, cả hai bộ dao độngchính và Timer bất đồng bộ vẫn tiếp tục hoạt động

Các thiết bị được chế tạo bởi công tuy Atmel sử dụng công nghệ bộ nhớ không

tự mất dữ liệu và có mật độ cao Bộ nhớ Flash ISP trên chip cho phép bộ nhớ chương

Trang 8

trình có thể lập trình được ngay trên hệ thống qua 1 bộ giao diện nối tiếp SIP hoặcbằng bộ nạp chương trình vào bộ nhớ không tự mất dữ liệu thông thường, hoặc bằng

1 chương trình khởi động trên chip đang chạy trong lõi AVR Chương trình boot cóthể sử dụng một vài giao diện để tải chương trình ứng dụng trong bộ nhớ Flash ứngdụng Phần mềm trong đoạn Flash khởi động sẽ tiếp tục hoạt động trong khi đoạnFlash khởi động được cập nhật, cung cấp hoạt động đọc ghi một cách chính xác Bằngcách kết hợp 1 CPU 8 bit theo cấu trúc RISC với bộ nhớ Flash lập trình ngay trên hệthống trong một chip đơn, ATmega16 của Atmel là bộ vi điều khiển mạnh nó đáp ứng

sự linh hoạt cao và là giải pháp có giá trị hiệu quả để đưa nhiều ứng dụng điều khiểnvào

1.2.2 Sơ đồ và chức năng các chân.

Sơ đồ chân

Hình 4: Sơ đồ chân Atmega32Chức năng

Trang 9

 Port A (PA7 ÷ PA0).

Port A ( Chân 33-40 ): Là một cổng vào/ra 2 hướng 8 bit, nếu bộ chuyển đổikhông được dùng Chân Port có các điện trở nối lên nguồn dương (được chọn chomỗi bit) Ngõ ra Port A có những đặc tính điều khiển đối xứng với cả hai khả năngchịu đựng nguồn và nhiệt cao Khi chân PA0 tới chân PA7 được sử dụng như là ngõvào và được đặt xuống mức thấp từ bên ngoài, chúng sẽ là nguồn dòng nếu các điệntrở nối lên cực dương được kích hoạt

Port A cũng được sử dụng khi một tín hiệu tương tự ở ngõ vào đến bộ chuyểnđổi A/D Các chân của Port A sẽ được đặt ở trạng thái 3 (tổng trở cao) khi tín hiệureset ở mức tích cực ngay cả khi tín hiệu xung nhịp không hoạt động

 Port B (PB7 ÷ PB0).

Port B( Chân 1-8 ) : Là một cổng vào/ra 2 hướng 8 bit với các điện trở kéo lênnguồn dương bên trong (được chọn cho mỗi bit) Ngõ ra Port B có những đặc tínhđiều khiển đối xứng với cả hai khả năng chịu đựng nguồn và nhiệt cao Cũng như cácchân ngõ vào, các chân Port B được đặt xuống mức thấp từ bên ngoài sẽ là nguồndòng nếu các điện trở nối lên cực dương được kích hoạt

Các chân Port B sẽ được đặt trạng thái thứ 3 khi tín hiệu reset ở mức tích cực,ngay khi xung nhịp không hoạt động

 Port C (PC7 ÷ PC0).

Port C ( Chân 22-29 ) : Là một cổng vào/ra 2 hướng 8 bit với các điện trở kéolên nguồn dương bên trong (được chọn cho mỗi bit) Ngõ ra Port C có những đặc tínhđiều khiển đối xứng với cả hai khả năng chịu đựng nguồn và nhiệt cao Cũng như cácchân ngõ vào, các chân Port B được đặt xuống mức thấp từ bên ngoài sẽ là nguồndòng nếu các điện trở nối lên cực dương được kích hoạt Các chân Port C sẽ được đặttrạng thái thứ 3 (tổng trở cao) khi tín hiệu reset ở mức tích cực, ngay khi xung nhịpkhông hoạt động Nếu giao diện JTAG được mức cho phép, những điện trở kéo lêntrên những chân PC5(TDI), PC3(TMS) và PC2(TCK) sẽ được kích hoạt ngay cả khinếu một reset xuất hiện

Trang 10

 Port D (PD7 ÷ PD0).

Port D ( Chân 14-21) : Là một cổng vào/ra 2 hướng 8 bit với các điện trở kéolên nguồn dương bên trong (được chọn cho mỗi bit) Ngõ ra Port D có những đặc tínhđiều khiển đối xứng với cả hai khả năng chịu đựng nguồn và nhiệt cao Cũng như cácchân ngõ vào, các chân Port D được đặt xuống mức thấp từ bên ngoài sẽ là nguồndòng nếu các điện trở nối lên cực dương được kích hoạt Các chân Port C sẽ được đặttrạng thái thứ 3 (tổng trở cao) khi tín hiệu reset ở mức tích cực, ngay khi xung nhịpkhông hoạt động

 VCC, GND, RESET, XTAL1, XTAL2, AVCC, AREF

_ VCC ( Chân 10,30 ): Nguồn cung cấp

_ XTAL2 ( Chân 13 ): Ngõ ra của bộ khuếch đại dao động đảo

_ AVCC ( Chân 30 ): là chân nguồn cung cấp cho Port A và bộ chuyển đổiA/D Nó nên được kết nối ngoài tới VCC, ngay khi nếu bộ ADC không đượcdùng Nếu bộ ADC được sử dụng thì nó được kết nối tới VCC thông qua mộtmạch lọc thông thấp

_ AREF ( Chân 32 ): là chân tham chiếu cho bộ chuyển đổi A/D

_ Chân INT1 ( Chân 17 ) : Chân ngõ vào ngắt

_ Chân OC1A/B (Chân 19,18) : Chân ra cho chức năng so sánh lối ra bộ địnhthời/đếm 0,1

Trang 11

1.2.3 Cấu trúc bộ nhớ.

Cũng như mọi vi điều khiển khác AVR có cấu trúc Harvard tức là có bộ nhớ

và đường bus riêng cho bộ nhớ chương trình và bộ nhớ dữ liệu

 Bộ nhớ chương trình :Chia làm 2 phần chính

Vùng giành cho các vector ngắt : có địa chỉ từ 0000H tới 0028H Atmega32 cótất cả 20 ngắt

Trang 12

Hình 6 : Bộ nhớ chương trình

Hình 7 : Bảng Vector ngắt

Trang 13

Tiếp theo là vùng nhớ lưu chương trình : Atmega32 chứa bộ nhớ Flash có thểlập trình lại trong hệ thống trên chip 32KByte cho việc lưu trữ chương trình Bộ nhớFlash chịu được ít nhất 10.000 chu kỳ ghi/xóa

 Bộ nhớ dữ liệu :

AVR có 32 thanh ghi chức năng chung và chúng được liên kết trực tiếp với

ALU đây là điểm khác biệt của AVR và tạo cho nó một tốc độ xử lý cực cao Cácthanh ghi được đặt tên từ R0 tới R31 Và đặc biệt cặp 6 thanh ghi cuối (từ R6 tớiR31) từng đôi một tao thành các thanh ghi 16 bit sử dụng làm con trỏ trỏ tới bộ nhớchương trình và dữ liệu Chúng lần lượt có tên là X, Y, Z

Không gian các thanh ghi cổng vào ra bao gồm các thanh ghi dữ liệu và thanhghi điều khiển cho cổng vào ra

Trang 14

o Truy Xuất Đọc/Ghi EEPROM: Thanh ghi truy xuất EEPROM được sử dụng

trong không gian vào/ra Thời gian truy xuất ghi dữ liệu là 8,5ms Một chức năng timing cho phép phần mềm người sử dụng dò tìm khi byte kế tiếp có thể được ghi vào.Một ngắt đọc đặc biệt của EEPROM có thể được thiết lập đến kích khi EEPROM sẵnsàng nhận dữ liệu mới Để tránh định trước việc ghi EEPROM, một quá trình ghi cụthể phải được thể hiện Khi đọc EEPROM thì CPU phải được tạm ngưng trong 4 chu

seft-kỳ xung nhịp trước khi lệnh kế tiếp được thực thi Khi EEPROM được ghi thì CPUphải tạm thời ngưng trong 2 chu kỳ xung nhịp trước khi lệnh kế tiếp được thực thi

o Thanh Ghi Địa Chỉ EEPROM – EEARH và EEARL.

Hình 9: Thanh ghi địa chỉ EEPROM – EEARH và EEARLBit 15 9 – Res: Reserved Bits là các bit thụ trong ATmega16 và luôn luôn đượcđặt ở mức [0]

Bit 8 0 – EEAR8 0: EEPROM Address

Thanh ghi địa chỉ EEPROM – EEARH và EEARL chỉ rõ địa chỉ EEPROM trongkhông gian EEPROM 512 byte Những byte dữ liệu EEPROM được định địa chỉ ở

0÷511 Giá trị ban đầu của EEAR thì không được định nghĩa Một giá trị riêng

phải được viết trước khi EEPROM có thể được truy xuất

o Thanh Ghi Dữ Liệu EEPROM – EEDR

Hình 10: Thanh ghi dữ liệu EEPROM- EEDRBit 7 0- EEDR7 0: Dữ liệu EEPROM

Trang 15

Đối với thao tác ghi của EEPROM, thanh ghi dữ liệu EEDR chứa dữ liệu đượcghi tới EEPROM trong vùng địa chỉ được định bởi thanh EEAR Đối với thao tác đọccủa EEPROM, thanh ghi EEDR chứa dữ liệu được tạo ra EEPROM trong vùng địa chỉđược định bởi thanh ghi EEAR.

o Thanh Ghi Điều Khiển EEPROM- EECR

Hình 11: Thanh ghi điều khiển EEPROM- EECRBit 7 4 - Res: Resserved Bits là những bít thụ động Các bít này luôn được đặt

ở mức [0]

Bit 3 - EERIE: EEPROM Ready Interrupt Enable

Khi bit I trong thanh ghi SREG và EERIE được đặt lên [1], ngắt EEPROMReady được cho phép và khi xoá xuống [0] thì ngắt bị cấm Ngắt EEPROM Ready phát

ra một ngắt hằng khi EEWE bị xoá xuống [0]

Bit 2- EEMWE: EEPROM Master Write Enable

Việc đặt EEMWE lên [1] sau đó việc thiết lập EEWE sẽ chỉ ghi dữ liệu lên bộnhớ EEPROM tại vùng địa chỉ đã được chọn Nếu EEMWE bị xoá xuống [0] thì thiếtlập EEWE cũng không có tác dụng gì Khi EEMWE được đặt lên [1] bằng phần mềmthì phần cứng sẽ xoá bit này xuống [0] sau 4 chu kỳ xung nhịp

Bit 1- EEWE: EEPROM Write Enable

Khi địa chỉ và dữ liệu được cài đặt một chính xác, bit EEWE phải được thiết lập

để ghi giá trị vào trong EEPROM Khi mức logic [1] được đặt vào bit EEWE thì bitEEMWE phải được thiết lập, nếu không sẽ không thao tác ghi EEPROM được Cáclệnh ghi dữ liệu bộ nhớ EEPROM được viết như sau (bước 3 và 4 không cần thiết):

1 Đợi cho đến khi EEWE trở thành [0]

2 Đợi cho đến khi SPMEN ở SPMCR trở thành [0]

3 Ghi địa chỉ EEPROM mới tới EEAR (không bắt buộc)

4 Ghi dữ liệu EEPROM mới tới EEDR (không bắt buộc)

Trang 16

5 Ghi mức lôgic [1] tới bit EEMWE trong khi ghi mức [0] tới EEWE ở thanhghi EECR.

6 Trong vòng bốn chu kỳ đồng hồ sau khi EEMWE được thiết lập, ghi lôgic [1]tới EEWE

Chú ý: Một tín hiệu phá vỡ sự liên tục giữa bước 5 và bước 6 sẽ làm hỏng chu

kỳ ghi, khi đó EEPROM Master Write Enable sẽ nghỉ Nếu có một ngắt thường trìnhđăng nhập EEPROM làm gián đoạn một đăng nhập khác vào EEPROM thì sẽ làm chothanh ghi EEAR hay EEDR bị thay đổi Vì vậy nên cần xoá cờ ngắt toàn cục trong tất

cả những bước để tránh những vấn đề này

Khi thời gian truy xuất ghi trôi qua, bit EEWE sẽ bị xoá xuống [0] bằng phầncứng Phần mềm người sử dụng có thể thăm dò và chờ bit này xem đã là [0] chưa trướckhi ghi byte kế tiếp Khi EEWE được thiết lập, CPU tạm nghỉ trong hai chu kỳ xungtrước khi lệnh kế tiếp được thực hiện

Bit 0 - EERE: EEPROM Read Enable

Khi địa chỉ chính xác được cài đặt trong thanh ghi EEAR, bit EERE được ghimức lôgic [1] tới EEPROM kích đọc Truy xuất đọc EEPROM mất một lệnh và dữ liệuyêu cầu được đáp ứng ngay lập tức Khi EEPROM được đọc, CPU tạm nghỉ bốn chu

kỳ xung trước khi lệnh kế tiếp được thực hiện

Người sử dụng nên kiểm tra bit EEWE trước khi bắt đầu thao tác đọc Nếu mộtthao tác ghi được đang hoạt động, nó không thể đọc EEPROM, mà cũng không thayđổi thanh ghi EEAR

Tránh sai sót trong EEPROM : Trong chu kỳ điện áp nguồn VCC thấp, dữ liệuEEPROM có thể bị thất thoát vì điện áp nguồn cung cấp quá thấp cho CPU vàEEPROM để vận hành chính xác Vấn đề đặt ra là làm sao tránh những thất thoát dữliệu đối với các EEPROM trên chíp cũng như tránh thất thoát dữ liệu đối với những vimạch không có EEPROM trên chip.Khi điện áp quá thấp sẽ phát sinh ra hai nguyênnhân dẫn đến dữ liệu trên EEPROM bị sai lệch Thứ nhất, một trình tự ghi thôngthường lên EEPROM cần điện áp nhỏ nhất để hoạt động chính xác Thứ hai, chínhCPU thực thi lệnh không chính xác nếu nguồn cung cấp cho việc thực thi lệnh quáthấp Sự thất thoát dữ liệu EEPROM có thể dễ dàng được tránh khỏi bằng giải pháp

Trang 17

giữ cho Reset AVR tích cực (thấp) trong thời gian điện áp nguồn nuôi không đủ Đềunày có thể được làm bởi việc cho phép mạch bảo vệ reset nguồn nuôi mức thấp bênngoài, thông thường hay dùng phát hiện Brown-out (BOD).

1.2.4 Các thanh ghi chức năng đặc biệt.

Bao gồm các thanh ghi dữ liệu và các thanh ghi điều khiển các cổng vào ra

 Thanh ghi trạng thái - SREG (STATUS REGISTRY)Nằm trong vùng nhớ I/O,thanh ghi SREG có địa chỉ I/O là 0x003F và địa chỉ bộ nhớ là 0x005F (thường đây là

vị trí cuối cùng của vùng nhớ I/O) là một trong số các thanh ghi quan trọng nhất củaAVR, vì thế mà tôi dành phần này để giới thiệu về thanh ghi này Thanh ghi SREGchứa 8 bit cờ (flag) chỉ trạng thái của bộ xử lí, tất cả các bit này đều bị xóa sau khireset, các bit này cũng có thể được đọc và ghi bởi chương trình

Hình 12 Thanh ghi trạng thái

Bit 0 – C (Carry Flag: Cờ nhớ): là bit nhớ trong các phép đại số hoặc logic, ví

dụ thanh ghi R1 chứa giá trị 200, R2 chứa 70, chúng ta thực hiện phép cộng có nhớ:ADC R1, R2, sau phép cộng, kết quả sẽ được lưu lại trong thanh ghi R1, trong khi kếtquả thực là 270 mà thanh ghi R1 lại chỉ có khả năng chứa tối đa giá trị 255 (vì có 8 bit)nên trong trường hợp này, giá trị lưu lại trong R1 thực chất chỉ là 14, đồng thời cờ Cđược set lên 1 (vì 270=100001110, trong đó 8 bit sau 00001110 =14 sẽ được lưu lạitrong R1)

Bit 1 – Z (Zero Flag: Cờ 0): cờ này được set nếu kết quả phép toán đại số hay

phép Logic bằng 0

Bit 2 – N (Negative Flag: Cờ âm): cờ này được set nếu kết quả phép toán đại số

hay phép Logic là số âm

Bit 3 – V (Cờ tràn của bù 2): hoạt động của cờ này có vẻ sẽ khó hiểu cho bạn vì

nó liên quan đến kiến thức số nhị phân (phần bù), chúng ta sẽ đề cập đến khi nào thấycần thiết

Trang 18

Bit 4 – S (Sign Bit: Bit dấu): Bit S là kết quả phép XOR giữa 1 cờ N và V, S=N

xor V

Bit 5 – H (Half Carry Flag: Cờ nhờ nữa): cờ H là cờ nhớ trong 1 vài phép toán

đại số và phép Logic, cờ này hiệu quả đối với các phép toán với số BCD

Bit 6 – T (Bit Copy Storage): được sử dụng trong 2 Instruction BLD (Bit LoaD)

và BST (Bit STorage) Tôi sẽ giải thích chức năng Bit T trong phần giới thiệu về BLD

và BST

 Bit 7 – I (Global Interrupt Enable) : Cho phép ngắt toàn bộ): Bit này phải đượcset lên 1 nếu trong chương trình có sử dụng ngắt Sau khi set bit này, bạn muốn kíchhoạt loại ngắt nào cần set các bit ngắt riêng của ngắt đó Hai instruction dùng riêng đểSet và Clear bit I là SEI và CLI

Chú ý: Tất cả các bit trong thanh ghi SREG đều có thể được xóa thông qua cácinstruction không toán hạng CLx và set bởi SEx, trong đó x là tên của Bit.Ví dụ CLT làxóa Bit T và SEI là set bit I

Dưới đây là bảng tóm tắt sự ảnh hưởng của các phép toán đại số, logic lên cácBit trong thanh ghi SREG

Hình 13:Ảnh hưởng của các phép toán lên SREG

Trang 19

• Con Trỏ Ngăn Xếp(SP).

Ngăn xếp chủ yếu được sử dụng để cất giữ dữ liệu tạm thời, để cất giữ nhữngbiến cục bộ và cho việc cất giữ những địa chỉ trả về sau khi ngắt và gọi những chươngtrình con Thanh ghi con trỏ ngăn xếp thường trỏ vào đỉnh ngăn xếp Chú ý rằng ngănxếp được thực hiện từ những vị trí ô nhớ cao hơn đến những vị trí ô nhớ thấp hơn.Lệnh PUSH ngăn xếp sẽ giảm bớt con trỏ ngăn xếp Nếu phần mềm đọc bộ đếmchương trình từ ngăn xếp sau một lệnh gọi hay một ngắt, không dùng những bit (15:13)cần phải được định mặt nạ ở ngoài

Con trỏ ngăn xếp chỉ tới vùng ngăn xếp dữ liệu SRAM nơi chương trình con vàngăn xếp ngắt được định vị Không gian ngăn xếp này trong dữ liệu SRAM phải đượcđịnh nghĩa bởi chương trình trước khi gọi chương trình con được thực hiện hay ngắtđược cho phép Con trỏ ngăn xếp phải được thiết lập đến điểm phía trên $60 Con trỏngăn xếp giảm xuống 1 giá trị khi dữ liệu được đẩy về phía trên ngăn xếp bằng lệnhPUSH và nó giảm xuống hai khi một địa chỉ được đẩy lên trên ngăn xếp cùng với việcgọi chương trình con hay ngắt Con trỏ ngăn xếp được tăng lên 1 giá trị khi dữ liệuđược kéo ra từ ngăn xếp với lệnh POP và nó được tăng lên 2 khi một địa chỉ được kéo

ra từ ngăn xếp cùng với việc trả về thủ tục con RET hay lệnh ngắt RETI

Con trỏ ngăn xếp AVR được thực hiện như hai thanh ghi 8 bit trong không gianvào/ra Không gian dữ liệu trong một số những sự thực thi của cấu trúc AVR thì nhỏđến nỗi chỉ SPL được cần Trong này trường hợp, thanh ghi SPH sẽ không hiện hữu

Hình 14:Thanh ghi con trỏ ngăn xếp

Tập thanh ghi đa năng là tập lệnh RISC được tối ưu hóa cho AVR được tăngcường Cấu trúc này được yêu cầu có tính hiệu suất và tính linh hoạt, sơ đồ vào/ra sauđây hỗ trợ bởi tập thanh ghi:

Trang 20

• Một toán hạng đầu ra 8 bit và một kết quả đầu vào 8 bit.

• Hai toán hạng đầu ra 8 bit và một kết quả đầu vào 8 bit

• Hai toán hạng đầu ra 8 bit và một kết quả đầu vào 16 bit

• Một toán hạng đầu ra 16 bit và một kết quả đầu vào 16 bit

Hình 15: Thanh ghi làm việc đa năng trên CPUTất cả các lệnh điều thanh ghi trong tập lệnh đều có thể truy xuất trực tiếp vàtrong 1 chu kỳ đơn Mỗi thanh ghi được phân một địa chỉ bộ nhớ dữ liệu, ánh xạ chúngmột cách trực tiếp tới 32 vị trí đầu của không gian dữ liệu người dùng Thanh Ghi X,

Y, Z là những thanh ghi R26 R31 có một số chức năng bổ sung đã được sử dụng.Những thanh ghi này là những con trỏ địa chỉ 16 bit dùng cho địa chỉ gián tiếp củakhông gian dữ liệu Ba thanh ghi địa chỉ gián tiếp X, Y và Z được định nghĩa và được

mô tả trong hình dưới

Hình 16 :Thanh ghi X, Y, Z

Trang 21

CHƯƠNG 2 :

MÔ TẢ THIẾT KẾ PHẦN CỨNG2.1 Sơ đồ khối

Hình 17: Sơ đồ khối hệ thốngGiải thích chức năng từng khối

• Khối nhập dữ liệu: Là khối có chức năng nhập dữ liệu là các ký tự số, đưa ra cáclệnh điều khiển, các phép toán…đưa đến khối xử lý để thực hiện công việc tính toán vàxuất ra màn hình hiển thị kết quả tính toán.Khối này được chia ra làm 3 nhóm phím vớichức năng như sau:

Nhóm phím số: Nhập dữ liệu dưới dạng các ký tự số để phục vụ các phép tínhđại số.Nhóm phím này gồm các phím từ 0-9

Nhóm phím chức năng: Nhập giá trị và đưa ra các phép tính đại số đơn giản nhưcộng, trừ, nhân, chia,phép lấy căn,lũy thừa…đưa đến khối xử lý để thực hiện

Nhóm phím điều khiển: Nhập giá trị và đưa ra các lệnh điều khiển tới khối xử lýnhư xuất kết quả, lưu kết quả, xóa dữ liệu, mở rộng phép tính toán

• Khối xử lý: Là khối quan trọng nhất, thực hiện chức năng quan trọng nhất là xử

lý dữ liệu từ khối nhập đưa tới, tính toán các phép tính, thực hiện các lệnh và xuất

dữ liệu hiển thị trên khối hiển thị

• Khối hiển thị: Để hiển thị phép tính, kết quả tính toán, các tín hiệu điều khiển

từ khối nhập dữ liệu đưa vào

Trang 22

2.2 Sơ đồ mạch nguyên lý tổng quát.

Trang 23

KHỐI XỬ LÝ

KHỐI

NHẬP DỮ

LIỆU

KHỐI HIỂN THỊ

Trang 24

Số lượng nút nhấn của một keypad thay đổi phụ thuộc vào yêu cầu ứng dụng.

Hình 19 : Ma trận phímCách bố trí ma trận hàng và cột là cách chung mà các ma trận phím sử dụng.Cũng giống như các ma trận LED, các nút nhấn cùng hàng và cùng cột được nối vớinhau, vì thế với ma trận phím 6x6 sẽ có tổng cộng 12 ngõ ra (6 hàng và 6 cột)

Trang 25

Hình 20 : Mạch điện ma trận phímHoạt động của ma trận phím: Giả sử nhút '2' được nhấn, khi đó đường H0 và C2được nối với nhau Giả sử đường C2 được nối với GND (mass, 0V) thì H0 cũng sẽ làGND Tuy nhiên, câu hỏi đặt ra là bằng cách kiểm tra trạng thái đường H0 chúng ta sẽ

có kết luận nút '2' được nhấn? Giả sử tất cả các đường C0,C1,C2,C3,C4,C5 đều nới vớiGND, nếu H0 = GND thì rõ ràng chúng ta không thể kết luận nút 0,1,2,3,4,5 đượcnhấn Kỹ thuật để khắc phục vấn đề này chính là kỹ thuật "quét" Kỹ thuật quét bànphím bằng AVR được trình bày như sau:Nối tất cả 6 hàng, 6 cột của ma trận phím với

2 port của AVR theo bảng sau

Trang 26

Các chân C0,C1,C2,C3,C4,C5 được set như các chân Output và giữ ở mức cao, các chân H0,H1,H2,H3,H4,H5 là Input và có điện trở kéo lên Lần lượt kéo chân C0,C1, C2, C3, C4,C5 xuống thấp ( lần lượt xuất giá trị 0 ra từng chân), đọc trạng thái các chân H0,H1,H2,H3,H4,H5 để kết luận nút nào được nhấn Ví dụ nút '2' được nhấn thì quá trình quét sẽ cho kết quả như sau:

o Bước 1: kéo chân C0 xuống 0 (các chân 2,3,4 vẫn ở mứccao), kiểm tra 6 chân H0, H1, H2, H3, H4, H5 thu được kết quả H0=1, H1=1, H2=1,H3=1.H4=1,H5=1 (giá trị đọc về Portc là 11111100 nhị phân)

o Bước 2: kéo chân C1 xuống 0 (các chân 2,3,4 vẫn ở mứccao), kiểm tra 6 chân H0,H1,H2,H3,H4,H5 thu được kết quả H0=1, H1=1, H2=1,H3=1.H4=1,H5=1 (giá trị đọc về Portc vẫn là 11111100 nhị phân)

o Bước 3: kéo chân C2 xuống 0, kiểm tra lạiH0,H1,H2,H3,H4,H5 kết quả thu được H0=0, H1=1, H2=1, H3=1.H4=1,H5=1 (giá trịđọc về của PortC là 01111100 nhị phân) Chân H0=0 tức có 1 nút ở hàng thứ 1 đượcnhấn, chúng ta lại đang ở Bước thứ 3 tức nút nhấn thuộc cột thứ C2 Đến đây ta có thểkết luận là nút số ‘2’ được nhấn Chúng ta có thể dừng quá trình quét tại đây

Rs(4) Pd0(14) Điều khiển D0-D7 là xuấ dữ liệu hay nhận lệnh từ vi điều khiển

Trang 27

E(6) Pd2(16) Chân điều khiển cho phép LCD hoạt động hay ngừng

Ledb(16) Pa0 Điều khiển tắt mở LCD nhằm tiết kiệm điện

Hình 21: Vi xử lý AVR

+ Mạch Reset vi điều khiển :

Trang 28

Hính 22: Mạch Reset

2.3.3 LCD 16x2.

Giới thiệu: Text LCD là các loại màn hình tinh thể lỏng nhỏ dùng để hiển thịcác dòng chữ hoặc số trong bảng mã ASCII Không giống các loại LCD lớn, Text LCDđược chia sẵn thành từng ô và ứng với mỗi ô chỉ có thể hiển thị một ký tự ASCII Cũng

vì lý do chỉ hiện thị được ký tự ASCII nên loại LCD này được gọi là Text LCD (đểphân biệt với Graphic LCD có thể hiển thị hình ảnh) Mỗi ô của Text LCD bao gồmcác “chấm” tinh thể lỏng, việc kết hợp “ẩn” và “hiện” các chấm này sẽ tạo thành một

ký tự cần hiển thị Trong các Text LCD, các mẫu ký tự được định nghĩa sẵn vì thế việcđiều khiển Text LCD sẽ tương đối dễ dàng hơn các graphic LCD Kích thước của TextLCD được định nghĩa bằng số ký tự có thể hiển thị trên 1 dòng và tổng số dòng màLCD có Ví dụ LCD 16x2 là loại có 2 dòng và mỗi dòng có thể hiển thị tối đa 16 ký tự.Một số kích thước Text LCD thông thường gồm 16x1, 16x2, 16x4, 20x2, 20x4…

Hình 23 : LCD 16x2Giao tiếp : Text LCD có 2 cách giao tiếp cơ bản là nối tiếp (như I2C) và songsong Trong phạm vi đồ án này chúng e chỉ giới thiệu loại giao tiếp song song, cụ thể

là LCD 16x2.LCD có 2 mode giao tiếp là 4 bit và 8 bit Nó chứa sẵn 208 ký tự mẫukích thước font 5x8 và 32 ký tự mẫu font 5x10 (tổng cộng là 240 ký tự mẫu khácnhau)

Trang 29

Sơ đồ chân: Các Text LCD thường có 16 chân trong đó 14 chân kết nối với bộđiều khiển và 2 chân nguồn cho “đèn LED nền” Thứ tự các chân thường được sắp xếpnhư sau:

Hình 24 : Sơ đồ chân LCDChân 1 và chân 2 là các chân nguồn, được nối với GND và nguồn 5V

Chân 3 là chân chỉnh độ tương phản (contrast), chân này cần được nối với 1biến trở chia áp trong khi hoạt động, điều chỉnh để thay đổi giá trị biến trở để đạt được

độ tương phản cần thiết, sau đó giữ mức biến trở này

Các chân điều khiển RS, R/W, EN và các đường dữ liệu được nối trực tiếp với

vi điều khiển Tùy theo chế độ hoạt động 4 bit hay 8 bit mà các chân từ D0 đến D3 cóthể bỏ qua hoặc nối với vi điều khiển

Ngày đăng: 30/05/2016, 13:42

HÌNH ẢNH LIÊN QUAN

HÌnh 2 : Cấu trúc bên trong AVR _ 32K Flash có khả năng lập trình - Đồ án_Ứng dụng VĐK AVR ATMEGA32 vào thiết kế máy tính điện tử
nh 2 : Cấu trúc bên trong AVR _ 32K Flash có khả năng lập trình (Trang 4)
Hình 3 : Sơ đồ khối Atmega32 Giải thích: - Đồ án_Ứng dụng VĐK AVR ATMEGA32 vào thiết kế máy tính điện tử
Hình 3 Sơ đồ khối Atmega32 Giải thích: (Trang 6)
1.2.2. Sơ đồ và chức năng các chân. - Đồ án_Ứng dụng VĐK AVR ATMEGA32 vào thiết kế máy tính điện tử
1.2.2. Sơ đồ và chức năng các chân (Trang 8)
Hình 8 : Bộ nhớ dữ liệu - Đồ án_Ứng dụng VĐK AVR ATMEGA32 vào thiết kế máy tính điện tử
Hình 8 Bộ nhớ dữ liệu (Trang 13)
Hình 17: Sơ đồ khối hệ thống Giải thích chức năng từng khối. - Đồ án_Ứng dụng VĐK AVR ATMEGA32 vào thiết kế máy tính điện tử
Hình 17 Sơ đồ khối hệ thống Giải thích chức năng từng khối (Trang 21)
Hình 18 : Mạch nguyên lý. - Đồ án_Ứng dụng VĐK AVR ATMEGA32 vào thiết kế máy tính điện tử
Hình 18 Mạch nguyên lý (Trang 24)
Hình 25: Mạch nguyên lý. - Đồ án_Ứng dụng VĐK AVR ATMEGA32 vào thiết kế máy tính điện tử
Hình 25 Mạch nguyên lý (Trang 35)
Hình 27: Lưu đồ chương trình chính - Đồ án_Ứng dụng VĐK AVR ATMEGA32 vào thiết kế máy tính điện tử
Hình 27 Lưu đồ chương trình chính (Trang 37)
Hình 28 : Lưu đổ xử lý các phím hiển thị - Đồ án_Ứng dụng VĐK AVR ATMEGA32 vào thiết kế máy tính điện tử
Hình 28 Lưu đổ xử lý các phím hiển thị (Trang 38)
Hình 29 : Lưu đồ xử lý các phím điều khiển - Đồ án_Ứng dụng VĐK AVR ATMEGA32 vào thiết kế máy tính điện tử
Hình 29 Lưu đồ xử lý các phím điều khiển (Trang 41)
Hình 30: Lưu đồ kiểm tra dấu “,” - Đồ án_Ứng dụng VĐK AVR ATMEGA32 vào thiết kế máy tính điện tử
Hình 30 Lưu đồ kiểm tra dấu “,” (Trang 43)
Hình 31 : Lưu đồ kiểm tra dấu “(” , “)” - Đồ án_Ứng dụng VĐK AVR ATMEGA32 vào thiết kế máy tính điện tử
Hình 31 Lưu đồ kiểm tra dấu “(” , “)” (Trang 44)
Hình 33 : Lưu đổ xử lý độ ưu tiên của phép tính. - Đồ án_Ứng dụng VĐK AVR ATMEGA32 vào thiết kế máy tính điện tử
Hình 33 Lưu đổ xử lý độ ưu tiên của phép tính (Trang 49)
Hình 34 : Lưu đồ xử lý tìm dấu ( ) , dấu căn Trường hợp tổng quát (có dấu mở đóng ngoặc, căn 2, 3). - Đồ án_Ứng dụng VĐK AVR ATMEGA32 vào thiết kế máy tính điện tử
Hình 34 Lưu đồ xử lý tìm dấu ( ) , dấu căn Trường hợp tổng quát (có dấu mở đóng ngoặc, căn 2, 3) (Trang 50)
Hình 37 : Lưu đồ hiển thị dòng 2 của LCD - Đồ án_Ứng dụng VĐK AVR ATMEGA32 vào thiết kế máy tính điện tử
Hình 37 Lưu đồ hiển thị dòng 2 của LCD (Trang 53)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w