Đồ án Thiết kế bộ chuông báo giờ học dùng vi điều khiển

94 2.8K 24
Đồ án Thiết kế bộ chuông báo giờ học dùng vi điều khiển

Đ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

LỜI NÓI ĐẦU Ngày nay với sự phát triển của khoa học kỹ thuật và công nghệ trên thế giới ở nhiều lĩnh vực khác nhau đang diễn ra. Đặc biệt là sự phát triển như vũ bão của khoa học máy tính là công cụ hỗ trợ đắc lực và quan trọng trong các ngành công nghệ thông tin và tự động hóa. Nó giúp con người lưu trữ xử lý thông tin, tính toán, điều khiển và đo lường. Hơn nữa cùng với sự phát triển mạnh mẽ của vi điều khiển, việc kết hợp giữa máy tính và Vi điều khiển đã có nhiều nhiều ứng dụng to lớn trong thực tế. Đề tài: “Thiết kế bộ chuông báo giờ học dùng vi điều khiển” do cô giáo Phạm Thanh Loan đưa ra nhằm giúp cho việc nghiên cứu và phát triển các ứng dụng của Vi điều khiển và Máy tính trong đo lường và điều khiển thuận lợi hơn. Công việc chính phải thực hiện trong đề tài này là xây dựng bộ hiển thị thời gian thực trên LCD. Lập trình điều khiển rơle đóng ngắt chuông điện theo giờ đã được cài đặt sẵn. Đề tài bao gồm những nội dung sau: Chương I. Giới Thiệu Chung Về Họ Vi điều khiển AVR. Chương II. Giới Thiệu Về VĐK AVR ATMEGA16. Chương III: Giới Thiệu IC thời gian thực DS1307. Chương IV: Thiết Kế Mạch Chuông Báo Giờ Học. Trong quá trình thực hiện đề tài, mặc dù có sự cố gắng, nhưng em cũng không tránh khỏi những thiếu sót. Em rất mong nhận được những ý kiến đóng góp từ quý Thầy Cô và các bạn sinh viên. Hà nội, ngày 08/ 02/ 2010 Trần Văn Lực: Lớp LTTĐH - K1 Page 1 MỤC LỤC LỜI NÓI ĐẦU 1 MỤC LỤC 2 NHẬN XÉT CỦA GIÁO VIÊN 3 1/ Tổng quan về họ vi điều khiển AVR 5 1.1/ Giới thiệu 5 1.2/ Phân loại AVR 5 2./ Tổ chức của AVR. 5 3/ Cấu trúc tổng quát bên trong của AVR 9 3.1/ Stack Pointer (Con trỏ- Ngăn xếp) 11 3.2/ Thanh ghi trạng thái - SREG (STATUS REGISTRY) 12 3.3/ Quản lý ngắt 13 3.4/ Macro và chương trình con 19 3.5/ Giao Tiếp Truyền Thông Nối Tiếp TWI – I2C 20 Chương 2: 25 2/ Các đặc tính của của ATMEGA16 26 Chương 3: 42 1/ Giới thiệu chung về DS1307 42 2/ Chế độ hoạt động và chức năng của DS1307 43 Chương 4: 50 THIẾT KẾ MẠCH CHUÔNG BAO GIỜ HỌC 50 1/ Sơ Đồ Nguyên Lý 50 2/ Nguyên lý hoạt động của mạch 54 3/ Thiết bị phần cứng 56 4/ Phần mềm thiết kế và lập trình 59 4.1/ Phần mềm thiết kế phần cứng 59 4.2/ Mạch nạp cho AVR. 60 4.3/ Phần mềm mô phỏng 62 Hình 4.5 sơ đồ mạch mô phỏng 63 Trần Văn Lực: Lớp LTTĐH - K1 Page 2 4.4/ Phần mềm lập trình CodeVisonAVR 63 5/ Lưu đồ thuật toán và chương trình 65 6/ Kết quả mô phỏng 89 7/ Kết luận 92 TÀI LIỆU THAM KHẢO 93 NHẬN XÉT CỦA GIÁO VIÊN Trần Văn Lực: Lớp LTTĐH - K1 Page 3 Chương 1: GIỚI THIỆU TỔNG QUAN VỀ HỌ VĐK AVR Trần Văn Lực: Lớp LTTĐH - K1 Page 4 1/ Tổng quan về họ vi điều khiển AVR. 1.1/ Giới thiệu. Vi điều khiển AVR (Atmel Norway design) thuộc họ vi điều khiển Atmel, nó là họ vi điều khiển mới trên thị trường cũng như đối với người sử dụng. Đây là họ vi điều khiển được chế tạo theo cấu trúc RISC (Reduced Intruction Set Computer) có cấu trúc khá phức tạp. Ngoài các tính năng như các họ vi điều khiển khác, nó còn tích hợp nhiều tính năng mới rất thuận tiện cho người thiết kế và lập trình. Sự ra đời của AVR bắt nguồn từ yêu cầu thực tế là hầu hết khi cần lập trình cho vi điều khiển, chúng ta thường dùng những ngôn ngữ bậc cao HLL (Hight Level Language) ngay cả với loại chíp xử lý 8 bit trong đó ngôn ngữ C là phổ biến nhất. Tuy nhiên khi biên dịch thì kích thước đoạn mã sẽ tăng nhiều so với dùng ngôn ngữ Assembly. Từ những yêu cầu đó hãng Atmel đã phát triển một cấu trúc đặc biệt cho ngôn ngữ C để giảm thiểu sự chênh lệch kích thước mã nói trên. Kết quả là họ vi điều khiển AVR ra đời với việc làm giảm kích thước đoạn mã khi biên dịch và thêm vào đó là thực hiện lệnh đúng chu kỳ máy với 32 thanh ghi tích luỹ và đạt tốc độ nhanh hơn các họ vi điều khiển khác từ 4 đến 12 lần. Vì thế nguyên cứu về AVR là một đề tài mới mẻ và lý thú giúp cho sinh viên biết thêm về một họ vi điều khiển mới hiện nay. 1.2/ Phân loại AVR. + AT90S8535: không có lệnh nhân và chia trên thanh ghi. + ATMEGA 8, 16, 32 (AVR loại 8 bit, 16 bit, 32 bit) là loại AVR tốc độ cao, tích hợp sẵn ADC 10 bit. + AVR tích hợp sẵn LCD driver: Atmega 169, 329. + AVR có tích hợp SC (Power stage controller): AT90PWM thường dùng trong các ứng dụng điều khiển động cơ hay chiếu sáng nên gọi là lighting AVR. + Attiny 11, 12, 15: AVR loại nhỏ. 2./ Tổ chức của AVR. AVR có cấu trúc Harvard, trong đó đường truyền cho bộ nhớ dữ liệu (data memory bus) và đường truyền cho bộ nhớ chương trình (program memory bus) được tách riêng. Data memory bus chỉ có 8 bit và được kết nối với hầu hết các thiết bị Trần Văn Lực: Lớp LTTĐH - K1 Page 5 ngoại vi, với register file. Trong khi đó program memory bus có độ rộng 16 bits và chỉ phục vụ cho instruction registers. Hình 1 mô tả cấu trúc bộ nhớ của AVR. Bộ nhớ chương trình (Program memory): Là bộ nhớ Flash lập trình được, trong các chip AVR mới chúng ta có thêm phần Boot Flash setion. Khi nói về bộ nhớ chương trình, chúng ta tự hiểu là Application section.Thực chất, application section bao gồm 2 phần: phần chứa các instruction (mã lệnh cho hoạt động của chip) và phần chứa các vector ngắt (interrupt vectors). Các vector ngắt nằm ở phần đầu của application section (từ địa chỉ 0x0000) và dài đến bao nhiêu tùy thuộc vào loại chip. Phần chứa instruction nằm liền sau đó, chương trình viết cho chip phải được load vào phần này. Chức năng chính của bộ nhớ chương trình là chứa instruction.Tất cả các thanh ghi quan trọng cần khảo sát nằm trong bộ nhớ dữ liệu của chíp. Hình 1.1 Tổ chức bộ nhớ của AVR. Bộ nhớ dữ liệu (data memory): Đây là phần chứa các thanh ghi quan trọng nhất của chip, việc lập trình cho chip phần lớn là truy cập bộ nhớ này. Bộ nhớ dữ liệu trên các chip AVR có độ lớn khác nhau tùy theo mỗi chip, tuy nhiên về cơ bản phần bộ nhớ này được chia thành 5 phần: Trần Văn Lực: Lớp LTTĐH - K1 Page 6 Phần 1: Là phần đầu tiên trong bộ nhớ dữ liệu, như mô tả trong hình 1, phần này bao gồm 32 thanh ghi có tên gọi là register file (RF), hay General Purpose Rgegister – GPR, hoặc đơn giản là các Thanh ghi. Tất cả các thanh ghi này đều là các thanh ghi 8 bits như trong hình 2. Hình 1.2 Thanh ghi 8 bits. Thanh ghi chức năng chung. Tất cả các chip trong họ AVR đều bao gồm 32 thanh ghi Register File có địa chỉ tuyệt đối từ 0x0000 đến 0x001F. Mỗi thanh ghi có thể chứa giá trị dương từ 0 đến 255 hoặc các giá trị có dấu từ -128 đến 127 hoặc mã ASCII của một ký tự nào đó… Các thanh ghi này được đặt tên theo thứ tự là R0 đến R31. Chúng được chia thành 2 phần, phần 1 bao gồm các thanh ghi từ R0 đến R15 và phần 2 là các thanh ghi R16 đến R31. Các thanh ghi này có các đặc điểm sau: • Được truy cập trực tiếp trong các instruction. • Các toán tử, phép toán thực hiện trên các thanh ghi này chỉ cần 1 chu kỳ xung clock. • Register File được kết nối trực tiếp với bộ xử lí trung tâm – CPU của chip. • Chúng là nguồn chứa các số hạng trong các phép toán và cũng là đích chứa kết quả trả lại của phép toán. Tất cả các instruction sử dụng RF làm toán hạng đều có thể truy nhập tất cả các RF một cách trực tiếp trong 1 chu kỳ xung clock, ngoại trừ SBCI, SUBI, CPI, ANDI và LDI, các instruction này chỉ có thể truy nhập các thanh ghi từ R16 đến R31. Thanh ghi R0 là thanh ghi duy nhất được sử dụng trong instruction LPM (Load Program Memory). Các thanh ghi R26, R27, R28, R29, R30 và R31 ngoài chức năng thông thường còn được sử dụng như các con trỏ (Pointer register) trong một số instruction truy xuất gián tiếp. Hình 3 mô tả các chức năng phụ của các thanh ghi. Trần Văn Lực: Lớp LTTĐH - K1 Page 7 Hình 1.3 Register file. Tóm lại 32 RF của AVR được xem là 1 phần của CPU, vì thế chúng được CPU sử dụng trực tiếp và nhanh chóng, để gọi các thanh ghi này, chúng ta không cần gọi địa chỉ mà chỉ cần gọi trực tiếp tên của chúng. RF thường được sử dụng như các toán hạng (operand) của các phép toán trong lúc lập trình. Phần 2: Là phần nằm ngay sau register file, phần này bao gồm 64 thanh ghi được gọi là 64 thanh ghi nhập/xuất (64 I/O register) hay còn gọi là vùng nhớ I/O (I/O Memory). Vùng nhớ I/O là cửa ngõ giao tiếp giữa CPU và thiết bị ngoại vi. Tất cả các thanh ghi điều khiển, trạng thái…của thiết bị ngoại vi đều nằm ở đây. Vùng nhớ I/O có thể được truy cập như SRAM hay như các thanh ghi I/O. Nếu sử dụng instruction truy xuất SRAM để truy xuất vùng nhớ này thì địa chỉ của chúng được tính từ 0x0020 đến 0x005F. Nhưng nếu truy xuất như các thanh ghi I/O thì địa chỉ của chúng đựơc tính từ 0x0000 đến 0x003F. Trần Văn Lực: Lớp LTTĐH - K1 Page 8 Xét ví dụ instruction OUT dùng xuất giá trị ra các thanh ghi I/O, lệnh này sử dụng địa chỉ kiểu thanh ghi, cấu trúc của lệnh như sau: OUT A, Rr, trong đó A là địa chỉ của thanh ghi trong vùng nhớ I/O, Rr là thanh ghi RF, lệnh OUT xuất giá trị từ thanh ghi Rr ra thanh ghi I/O có địa chỉ là A. Giả sử chúng ta muốn xuất giá trị chứa trong R6 ra thanh ghi điều khiển hướng của PORTD, tức thanh ghi DDRD, địa chỉ tính theo vùng I/O của thanh ghi DDRD là 0x0011, như thế câu lệnh của chúng ta sẽ có dạng: OUT 0x0011, R6. Tuy nhiên trong 1 trường hợp khác, nếu muốn truy xuất DDRD theo dạng SRAM, ví dụ lệnh STS hay LDS, thì phải dùng địa chỉ tuyệt đối của thanh ghi này, tức giá trị 0x0031, khi đó lệnh OUT ở trên được viết lại là STS 0x0031, R6. Chúng ta dùng khái niệm “địa chỉ I/O” cho các thanh ghi trong vùng nhớ I/O để nói đến địa chỉ không tính phần Register File, khái niệm “địa chỉ bộ nhớ” của thanh ghi là chỉ địa chỉ tuyệt đối của chúng trong SRAM. Ví dụ thanh ghi DDRD có “địa chỉ I/O” là 0x0011 và “địa chỉ bộ nhớ” của nó là 0x0031, “địa chỉ bộ nhớ” = “địa chỉ I/O” + 0x0020. Phần 3: RAM tĩnh, nội (internal SRAM), là vùng không gian cho chứa các biến (tạm thời hoặc toàn cục) trong lúc thực thi chương trình, vùng này tương tự các thanh RAM trong máy tính nhưng có dung lượng khá nhỏ (khoảng vài KB, tùy thuộc vào loại chip). Phần 4: RAM ngoại (external SRAM), các chip AVR cho phép người sử dụng gắn thêm các bộ nhớ ngoài để chứa biến, vùng này thực chất chỉ tồn tại khi nào người sử dụng gắn thêm bộ nhớ ngoài vào chip. Phần 5: EEPROM (Electrically Ereasable Programmable ROM) là một phần quan trọng của các chip AVR mới, vì là ROM nên bộ nhớ này không bị xóa ngay cả khi không cung cấp nguồn nuôi cho chip, rất thích hợp cho các ứng dụng lưu trữ dữ liệu. Như trong hình 1, phần bộ nhớ EEPROM được tách riêng và có địa chỉ tính từ 0x0000. 3/ Cấu trúc tổng quát bên trong của AVR. Hình 4 biểu diễn cấu trong bên trong của 1 AVR. Bạn thấy rằng 32 thanh ghi trong Register File được kết nối trực tiếp với Arithmetic Logic Unit -ALU (ALU Trần Văn Lực: Lớp LTTĐH - K1 Page 9 cũng được xem là CPU của AVR) bằng 2 line, vì thế ALU có thể truy xuất trực tiếp cùng lúc 2 thanh ghi RF chỉ trong 1 chu kỳ xung clock. Hình 1.4 Cấu trúc bên trong AVR. Các instruction được chứa trong bộ nhớ chương trình Flash memory dưới dạng các thanh ghi 16 bit. Bộ nhớ chương trình được truy cập trong mỗi chu kỳ xung clock và 1 instruction chứa trong program memory sẽ được load vào trong instruction register, instruction register tác động và lựa chọn register file cũng như RAM cho ALU thực thi. Trong lúc thực thi chương trình, địa chỉ của dòng lệnh đang thực thi được quyết định bởi một bộ đếm chương trình – PC (Program counter). Đó chính là cách thức hoạt động của AVR. Trần Văn Lực: Lớp LTTĐH - K1 Page 10 [...]... của bộ định thời TOP: báo hiệu bộ định thời đã tăng đến giá trị lớn nhất BOTTOM: báo hiệu bộ định thời đã giảm đến giá trị nhỏ nhất (0) c) Đơn vị so sánh ngõ ra Trần Văn Lực: Lớp LTTĐH - K1 Page 32 Hình 2.6 Sơ đồ đơn vị so sánh ngõ ra Bộ so sánh 8 bit liên tục so sánh giá trị TCNT0 với giá trị trong thanh ghi so sánh ngõ ra (OCR0) Khi giá trị TCNT0 bằng với OCR0, bộ so sánh sẽ tạo một báo hiệu Báo. .. 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 hoặc biến đổi tần số ngõ ra tại chân OC0 b) Đơn vị đếm Phần chính của bộ định thời 8 bit một đơn... 3/ Cấu trúc bộ nhớ AVR có 2 không gian bộ nhớ chính là bộ nhớ dữ liệu và 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ớ chương trình Flash có thể lập trình lại nằm bên trong vi xử lý ATmega16 chứa 16Kb bộ nhớ Flash nằm trong chíp dùng để lưu trữ chương trình Do các lệnh của AVR có độ dài 16 hoặc 32 bit nên bộ nhớ Flash... 8Kx16 Bộ nhớ Flash được chia làm 2 phần, phần dành cho chương trình boot (chương trình khởi động) và phần dành cho chương trình ứng dụng Bộ nhớ Flash có thể ghi/xoá ít nhất 10.000 lần Bộ đếm chương trình (PC) là 12 bit Bản đồ bộ nhớ chương trình như hình vẽ Trần Văn Lực: Lớp LTTĐH - K1 Page 27 Hình 2.2 Bản đồ bộ nhớ chương trình 3.2/ Bộ nhớ dữ liệu SRAM, EEPROM a) Bộ nhớ dữ liệu SRAM Bản đồ bộ nhớ... so sánh ngõ ra (OCF0) lên 1 vào chu kỳ xung clock tiếp theo Nếu được kích hoạt (OCIE0=1), cờ OCF0 sẽ tạo ra một ngắt so sánh ngõ ra và sẽ tự động được xóa khi ngắt được thực thi Cờ OCF0 cũng có thể được xóa bằng phần mềm d) Mô tả các thanh ghi - Thanh ghi điều khiển bộ định thời /bộ đếm TCCR0 (Timer/Counter Control Register) Là thanh ghi điều khiển hoạt động của T/C0 Hình 2.7 Thanh ghi điều khiển bộ. .. tính dùng tập lệnh rút gọn, bộ xử lý dùng ít lệnh hơn những bộ vi xử lý khác) - Tốc độ thực hiện lệnh lên tới 16 triệu lệnh trong 1 giây với tần số 16MHz Trần Văn Lực: Lớp LTTĐH - K1 Page 26 - 16KB bộ nhớ Flash với khả năng đọc trong khi ghi - 512 byte bộ nhớ EEPROM có thể thực hiện 100.000 lần ghi/xoá - 1KB bộ nhớ SRAM bên trong - 32 thanh ghi chức năng chung, 32 đường vào ra chung - 2 bộ định thời /bộ. .. ghi từ R26 đến R31 dùng để làm các thanh ghi con trỏ địa chỉ gián tiếp Địa chỉ trực tiếp chỉ tới toàn bộ không gian dữ liệu Trần Văn Lực: Lớp LTTĐH - K1 Page 28 Hình 2.3 Bản đồ bộ nhớ dữ liệu SRAM b) 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 4/ Các cổng vào ra (I/O) Vi điều khiểnATmega16 có... 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 2.4 Sơ đồ cấu trúc bộ định thời Trần Văn Lực: Lớp LTTĐH - K1 Page 31 a) 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... tiếp đồng bộ trên các chip AVR dựa trên chuẩn truyền thông I2C I2C là vi t tắc của từ InterIntegrated Circuit là một chuẩn truyền thông do hãng điện tử Philips Semiconductor sáng lập và xây dựng thành chuẩn năm 1990 Tìm hiểu TWI của AVR không chỉ giúp ta giao tiếp giữa các AVR với nhau mà có thể dùng TWI để điều khiển bất kỳ một thiết bị nào theo chuẩn I2C (các chip nhớ, bộ chuyển đổi ADC, DCA, đồng hồ... Lớp LTTĐH - K1 Page 13 – isr (interrupt service routine) Sau khi kết thúc nhiệm vụ trong irs, bộ đếm chương trình sẽ được trả về giá trị trước đó để bộ xử lý quay về thực hiện tiếp các nhiệm vụ còn dang dở 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 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 . thanh ghi Rr ra thanh ghi I/O có địa chỉ là A. Giả sử chúng ta muốn xuất giá trị chứa trong R6 ra thanh ghi điều khiển hướng của PORTD, tức thanh ghi DDRD, địa chỉ tính theo vùng I/O của thanh. hình 2. Hình 1.2 Thanh ghi 8 bits. Thanh ghi chức năng chung. Tất cả các chip trong họ AVR đều bao gồm 32 thanh ghi Register File có địa chỉ tuyệt đối từ 0x0000 đến 0x001F. Mỗi thanh ghi có thể. nào đó… Các thanh ghi này được đặt tên theo thứ tự là R0 đến R31. Chúng được chia thành 2 phần, phần 1 bao gồm các thanh ghi từ R0 đến R15 và phần 2 là các thanh ghi R16 đến R31. Các thanh ghi

Ngày đăng: 21/04/2015, 11:08

Từ khóa liên quan

Mục lục

  • LỜI NÓI ĐẦU

  • MỤC LỤC

  • NHẬN XÉT CỦA GIÁO VIÊN

    • 1/ Tổng quan về họ vi điều khiển AVR.

      • 1.1/ Giới thiệu.

      • 1.2/ Phân loại AVR.

      • 2./ Tổ chức của AVR.  

      • 3/ Cấu trúc tổng quát bên trong của AVR.

        • 3.1/ Stack Pointer (Con trỏ- Ngăn xếp).

        • 3.2/ Thanh ghi trạng thái - SREG (STATUS REGISTRY).

        • 3.3/ Quản lý ngắt.

        • 3.4/ Macro và chương trình con.

        • 3.5/ Giao Tiếp Truyền Thông Nối Tiếp TWI – I2C.

        • Chương 2:

          • 2/ Các đặc tính của của ATMEGA16.

          • Chương 3:

            • 1/ Giới thiệu chung về DS1307.

            • 2/ Chế độ hoạt động và chức năng của DS1307.

            • Chương 4:

            • THIẾT KẾ MẠCH CHUÔNG BAO GIỜ HỌC

              • 1/ Sơ Đồ Nguyên Lý.

              • 2/ Nguyên lý hoạt động của mạch.

              • 3/ Thiết bị phần cứng.

              • 4/ Phần mềm thiết kế và lập trình.

                • 4.1/ Phần mềm thiết kế phần cứng.

                • 4.2/ Mạch nạp cho AVR.

                • 4.3/ Phần mềm mô phỏng.

Tài liệu cùng người dùng

Tài liệu liên quan