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

Thiết kế và lập trình đồng hồ số hiển thị giờ, phút, giây cho atmega16

60 28 0

Đ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

Tiêu đề Thiết Kế Và Lập Trình Đồng Hồ Số Hiển Thị Giờ, Phút, Giây Cho Atmega16
Tác giả Lâm Minh Thành
Người hướng dẫn GV. Vũ Đức Vạn
Trường học Trường Đại Học Công Nghiệp TP. HCM
Chuyên ngành Điều Khiển Tự Động
Thể loại Đồ án tốt nghiệp
Năm xuất bản 2018
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 60
Dung lượng 2,36 MB

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

Nội dung

LỜI CẢM ƠN Em xin gửi lời cảm ơn đến Thầy VŨ ĐỨC VẠN đã tận tâm hướng dẫn em trong quá trình thực hiện đồ án này cùng quý thầy cô ở Khoa Điện –điện tử– Trường dại học Công Nghiệp TP.HCM

Trang 1

- -

ĐỒ ÁN TỐT NGHIỆP

THIẾT KẾ VÀ LẬP TRÌNH ĐỒNG HỒ SỐ HỂN THỊ

GIỜ, PHÚT, GIÂY CHO ATMEGA16

CHUYÊN NGHÀNH: ĐIỀU KHIỂN TỰ ĐỘNG

SVTH : Lâm Minh Thành MSSV : 14044481

LỚP : ĐHDKTD10C NIÊN KHÓA: 2015- 2018 GVHD: GV.Vũ Đức Vạn

Trang 2

LỜI CẢM ƠN

Em xin gửi lời cảm ơn đến Thầy VŨ ĐỨC VẠN đã tận tâm hướng dẫn em trong quá trình thực hiện đồ án này cùng quý thầy cô ở Khoa Điện –điện tử– Trường dại học Công Nghiệp TP.HCM với tri thức và tâm huyết của mình đã truyền đạt kiến thức quý báu cho chúng em trong quá trình học tập Nếu không có những lời hướng dẫn, dạy bảo của quý thầy thì đồ án của em rất khó

có thể hoàn thiện được

Sau cùng, em xin kính chúc quý thầy cô thật dồi dào sức khỏe, niềm tin để tiếp tục thực hiện sứ mệnh cao đẹp của mình là truyền đạt kiến thức cho thế

hệ mai sau

Em xin chân thành cảm ơn

Trang 3

TPHCM, ngày … tháng … năm 2017

Giáo viên hướng dẫn

Trang 4

TPHCM, ngày … tháng … năm 2017

Trang 5

chép từ tài liệu hay công trình đã có trước đó Nếu có sao chép em hoàn toàn chịu trách nhiệm

TPHCM, tháng … năm 2017

Sinh viên thực hiện

Trang 6

LỜI CẢM ƠN I NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN II NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN III LỜI CAM ĐOAN IV MỤC LỤC V DANH MỤC HÌNH VI DANH MỤC BẢNG VII

LỜI NÓI ĐẦU 1

CHƯƠNG I: TỔNG QUAN VỀ ĐỀ TÀI 2

CHƯƠNG 2: CƠ SƠ LÝ THUYẾT 3

2.1 Tổng quan về atmega16 3

2.1.1 Khái niệm 3

2.1.2 Sơ đồ chân của Atmega16 4

2.1.3 Chức năng của Atmega16 5

2.1.4 Chức năng khác các PORT của atmega 6

A) Chức năng khác trên PORTA: 6

B) Chức năng khác trên PORTB: 7

C) Chức năng khác trên PORTC: 8

D) Chức năng khác trên PORTD: 9

2.2 Giao tiếp thiết bị theo nghi thức I2C 9

2.2.1 Giới thiệu 9

2.2.2 Đặc tính Error! Bookmark not defined 2.2.3 Nguyên lý hoạt động giao tiếp I2C Error! Bookmark not defined 2.3 DS1307 11

2.3.1 Khái niệm DS1307 10

Trang 7

CODE 14

3.1 Chương trình 14

3.2 Mô phỏng và sơ đồ nguyên lý 48

CHƯƠNG 4: KẾT LUẬN VÀ KIẾN NGHỊ 52 TÀI LIỆU THAM KHẢO VIII

Trang 8

Hình 2.1.1 Hình ảnh Atmega16 thực tế 3

Hình 2.1.2 Sơ đồ chân atmega16 4

Hình 2.1.1 Hình vẽ giao tiếp theo nghi thức I2C 10

Hình 2.1.3-1 Hình định dạng gói dữ liệu 10

Hình 2.1.3-2 Hình dạng lúc bắt đầu 1 start bit 10

Hình 2.1.3-3 Hình dạng chuyển đổi dữ liệu tai chân SCL 10

Hình 2.3.1 IC DS1307 11

Hình 2.3.2 Sơ đồ chân DS1307 11

Hình 2.4 LCD 16x2 12

Hình 3.1-1 Sơ đồ nguyên lý trên proteus 49

Hình 3.1-2 Sơ đồ nối mạch trên mô phỏng 3D 50

DANH MỤC BẢNG [Bảng 2.1.4.A] Chức năng khác của PORTA 6

[Bảng 2.1.4.B] Chức năng khác của PORTB 7

[Bảng 2.1.4.C] Chức năng khác của PORTC 8

[Bảng 2.1.4.3] Chức năng khác của PORTD 9

[Bảng 2.4] Sơ đồ chân LCD 16x2 12

Trang 9

-Là một sinh viên đang còn ngồi trên ghế nhà trường, em đã được trao dồi những kiến thức chuyên môn của ngành học.Tuy được học và thực hành nhiều trên lớp nhưng đó chỉ một phần nào đó nhỏ bé so với những kiến thức ngoài thực tế ngày nay và sau này khi ra trường chúng em sẽ gặp phải vì thế, em rất muốn vận dụng nhũng kiến thức đã được học vào thực tiễn và học hỏi những gì còn thiếu Trong những năm học tập, thực hiện nghiên cứu đồ án vừa qua, được sự giúp đỡ của các thầy cô giáo bộ môn, em đã học hỏi được rất nhiều điều trong thực tế , cũng như tìm hiểu những vấn đề, tài liệu liên quan giúp ích cho việc hoàn thành báo cáo đồ

án này Vì thế sau khi cân nhắc và được sự góp ý của các thầy cô em đã chọn đề tài

“đồng hồ thực”

-Với sự ra đời của chip Vi Điều Khiển nên việc thiết kế của nó cũng nhỏ gọn hơn

và được ứng dụng trong nhiều sản phẩm, công trình khác nhau Còn thời gian là thứ con người ta mong muốn nhất Vì vậy, em muốn dùng ít kiến thức nhỏ bé của mình để nghiên cứu một đồng hồ thực bằng vi xủ lí Mục đích chủ yếu là để nhận biết thời gian hiện tại một cách chính xác

-Kết quả đạt được: Hiển thị thời gian thực lên LCD kèm chỉnh thời gian, cảm biến nhiệt độ và hẹn giờ Không chỉ dừng lại ở đó em còn học hỏi được nhiều hơn, có thêm nhiều kiến thức, có khả năng phân tích, thiết kế, thi công một sản phẩm hoàn chỉnh, tính cẩn thận và đặc biệt là sự kiên nhẫn sau nhiều lần thất bại

-Đồ án đã hoàn thành xong nhưng không tránh được nhiều thiếu sót xin thầy giáo thông cảm và chỉ bảo thêm để có thể ứng dụng rộng rãi trong thực tế

-Tuy nhiên em cũng chưa khắc phục một số hạn chế cũng như bổ sung thêm nhiều

ý tưởng như:Tăng kích thước chữ cho màn hình LCD

Hướng phát triển đề tài: Có thể thiết kế thêm đo nhịp tim,định vị GPS,bộ điều khiển

từ xa bằng Bluetooth, Tia hồng ngoại,…

Em xin chân thành cảm ơn

Trang 10

 Hướng thực hiện đề tài: Thiết kế mạch đồng hồ số thời gian thực có thể hiệu chỉnh thời gian, đo nhiệt độ xung quanh và có báo thức

 Trong công nghệ điện tử vi xử lý, vi điều khiển là một thành phần quan trọng không thể thiếu nó mang nhiều tính ưu việt, có thể thay thế một mạch điện phức tạp bằng một vi mạch nhỏ gọn với chi phí thấp hơn, nhưng ứng dụng lại đa dạng

và linh hoạt hơn, tiết kiệm năng lượng hơn, tốc độ xử lý nhanh hơn,… Để học tập tốt và hiểu sâu về môn học vi xử lý ngoài những kiến thức trên sách vở cần

có những ứng dụng vào thực tế

 Trên cơ sở đó chúng em tìm hiểu và thiết kế sản phẩm là mạch đồng hồ thời gian thực dùng vi điều khiển AVR của ATmega16 Có khả năng điều chỉnh và thay đổi được thời gian AVR có ưu điểm hơn là ngôn ngữ lập trình được viết bằng C thì chương trình sẽ ngắn gọn hơn và tốc độ xử lý tín hiệu nhanh hơn, ngoài ra có nhiều con vi điều khiển khác như: IC 16F887,AT 89C51,ATMEGA8,…

 Có thể hiển thị bằng nhiều cách: Led 7 đoạn, led ma trận, LCD, led đơn,….Nhưng em chọn LCD để tiết kiệm chân, đơn giản ít linh kiện hơn, chương trình ngắn gọn hơn, mạch cũng nhỏ gọn đẹp hơn nhiều

 Chọn cảm biến nhiệt độ LM35, con IC thời gian thực DS1307 và thạch anh 4Mhz vì nó rất được thông dụng và phù hợp với những tính toán sơ lượt ban đầu về đề tài đồng hồ em đang tìm hiểu

 Đồng hồ thời gian thực và điều khiển thiết bị được sử dụng nhiều trong thực tế

Có nhiều phương pháp thiết kế và thực hiện các mạch đồng hồ khác nhau và trong đồ án này em chỉ trình bày một trong các phương pháp đó.

Trang 11

2.1.1 Khái niệm

 Vi điều khiển AVR do hãng Atmel sản xuất , và có rất nhiều dòng khác nhau bao gồm dòng Tiny (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 ( 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 (Mega 16, Mega 32, Mega128… ) với bộ nhớ có kích thước vài Kbyte đến vài trăm Kb cùng với bộ ngoại vi đa dạng Tốc độ của dòng Mega cũng cao hơn so với các dòng khác

Sự khác nhau cơ bản của các dòng chính là cấu trúc ngoại vi, con nhân thì vẫn như nhau

 Atmega 16 là 1 loại vi điều khiển có nhiều tính năng đặc biệt thích hợp cho việc giải quyết những bài toán điều khiển trên nên vi xử lý

mỗi lệnh trong vòng lặp chu kỳ xung clock Atmega16 có thể đạt được tốc độ 1MIPS trên mỗi MHz ( 1 triệu lệnh /s/MHz) các lệnh được xử lý nhanh hơn , tiêu thụ năng lượng thấp.

Hình 2.1.1 Hình ảnh Atmega16 thực tế

Trang 12

2.1.2 Sơ đồ chân của Atmega16

Hình 2.1.2 Sơ đồ chân atmega16

Atmega16 dạng DIP có 40 chân , bao gồm:

 32 chân cho 4 port (PORTA, PORTB, PORTC, PORTD) mỗi port 8 chân

 2 chân nguồn : VCC (10) , GND (11)

 2 chân dao động (12,13)

 1 chân rest mức thấp (9)

 1 chân GND cho tín hiệu mức thấp Analog (31)

 1 chân AVCC tín hiệu tham chiếu cho biến đổi ADC khi chon điện áp tham chiếu là 5v

 1 chân AREF tín hiệu tham chiếu cho biến đổi ADC khi chọn điện áp tham chiếu dưới 5v

 Điện áp hoạt động 2.7v-5.5v chon Atmega16L

 Điện áp hoạt động 4.5v-5.5v cho Atmega16

 Bộ nhớ RAM: 1kb

 Bộ nhớ chương trình Flash memory : 16kb viết/xóa 10.000 lần

 Bộ nhớ EFPROM: 512byte: viết/xóa 100.000 lần

 Bộ khóa chương trình

 Tần số hoạt động từ 0-8Mhz cho Atmega16L:

 Tần số hoạt động từ 0-16Mhz cho Atmega16

 Atmega 16 có 131 câu lệnh rút gọn

Trang 13

chân này vào hay ra

nhau của atmega16

động cơ, tạo tần số , đếm sự kiện 8bit hoặc 16bit…

dụng rất rộng rãi hiện nay dùng để chuyển đổi giữa giao tiếp nối tiếp qua cổng USB

nhau được sử dụng phổ biến hiện nay , trên 1 đường truyền có thể sử dụng nhiều thiết bị, nghi thức giao tiếp này có thể truy xuất đến từng ô nhớ của thiết

bị hay của IC

chuyền song công nghĩa là tại cùng một thời điểm quá trình truyền và nhận có thể xảy ra đồng thời

Trang 14

2.1.4 Chức năng khác các PORT của Atmega16

Ngoài chức năng I/O một số chân có chức năng khác như sau:

A) Chức năng khác trên PORTA:

PORTA còn là ngõ vào của tín hiệu ADC ( biển đổi tín hiệu tương tự sang số), 8 chân của PORTA tương đương với 8 kênh biến đổi ADC từ ADC0 đến ADC7, điện

áp biến đổi từ 0-5v tùy thuộc vào điện áp tham chiếu

[Bảng 2.1.4.A] Chức năng khác của PORTA

Trang 15

B) Chức năng khác trên PORTB:

[Bảng 2.1.4.B] Chức năng khác của PORTB

dùng để nạp chương trình cho vi điều khiển

AIN1 kết hợp với AIN0 dùng để kích hoạt động ADC, hoạt dùng so sánh điện áp trong hoạt động AC

AIN0 kết hợp AIN1 dùng để kích hoạt động ADC, hoạt dùng so sánh điện áp trong hoạt động AC

timer/counter1

timer/counter0

Trang 16

C) Chức năng khác trên PORTC:

[Bảng 2.1.4.C] Chức năng khác của PORTC

động sẽ được nối với chân này, lúc này chân PC7,6 không

có chức năng hoạt động như I/O

được dịch chuyển ra từ thanh ghi lệnh hoặc thanh ghi điều khiển lúc này chân PC5 không có chức năng hoạt động như I/O

được dịch chuyển ra từ thanh ghi lệnh hoặc thanh ghi điều khiển lúc này chân PC5 không có chức năng hoạt động như I/O

liệu , chân SCL dung là xung clock để đồng bộ hóa tín hiệu

Trang 17

D) Chức năng khác trên PORTD:

[Bảng 2.1.4.3] Chức năng khác của PORTD

2.2 Gi

ao tiế

p thi

ết

bị the

o ng

hi th

ức I2C

2.2.1 Giới thiệu

I2C là hoạt động truyền dữ liệu dạng nối tiếp có định địa chỉ , hổ trợ cả Master và

Slave, hoạt động I2C sử dụng chân giao tiếp SDA và SCL, hoạt động I2C có thể truy cập tới từng ô nhớ của thiết bị

Trang 18

Hình 2.1.1 Hình vẽ giao tiếp theo nghi thức I2C

Hình 2.1.3-1 Hình định dạng gói dữ liệu

-Để bắt đầu 1 start bit chân SDA sẽ từ mức cao xuống thấp, trong khi Stop bit chân SDA từ mức thấp chuyên lên mức cao trong cả 2 trường hợp này chân SCL điều ở mức cao

Hình 2.1.3-2 Hình dạng lúc bắt đầu 1 start bit

-Việc chuyển đổi dữ liệu giữa các bịt được thực hiện tại mức thấp của chân SCL

Hình 2.1.3-3 Hình dạng chuyển đổi dữ liệu tai chân SCL

Trang 19

3.3.1 Khái niệm DS1307: là IC thời gian thực giao tiếp dữ liệu theo nghi thức I2C,

IC này có 7 thanh ghi chứa thời gian thực đó là : giây , phút , giờ, thứ , ngày , tháng, năm Ngoài ra nó còn có 56byte Ram dùng để chứa dữ liệu

Hình 2.3.1 IC DS1307

2.3.2 Sơ đồ chân DS1307

Hình 2.3.1 Sơ đồ chân DS1307

Trang 20

 Chân 5 SDA : chân truyền nhận dữ liệu

 Chân 6 SCL : chân tạo xung clock để giao tiếp dữ liệu

 Chân 7 SQW : Tạo tần số dao động xung vuông 1Hz, 4.096Khz, 8.192Khz, 32.768Khz

 Chân 8 VCC : Chân nguồn cung cấp cho DS, khi nguồn cung cấp này mất thì

DS vẫn hoạt động chức năng thời gian nhờ vào nguồn nuôi 3,3v

Trang 21

4 RS LCD (ở chế độ “ghi” - write) hoặc nối với bộ đếm địa chỉ của

LCD (ở chế độ “đọc” - read) + Logic “1”: Bus DB0-DB7 sẽ nối với thanh ghi dữ liệu DR bên trong LCD

+ Ở chế độ ghi: Dữ liệu ở bus sẽ được LCD chuyển vào(chấp nhận) thanh ghi bên trong nó khi phát hiện một xung (high-to- low transition) của tín hiệu chân E

+ Ở chế độ đọc: Dữ liệu sẽ được LCD xuất ra DB0-DB7 khi phát hiện cạnh lên (low-to-high transition) ở chân E và được LCD giữ ở bus đến khi nào chân E xuống mức thấp

Trang 22

CHƯƠNG 3 : MÔ PHỎNG VÀ CHƯƠNG TRÌNH

#define DOWN PIND.4

#define RING PORTD.0

unsigned char sec,mint,hour,day,date,month,year,mode,No_date,time0,blink; eeprom unsigned char min_set,hour_set,alarm;

void nut_nhan(void)

{

if(PIND.2==0)

{

Trang 24

// Voltage Reference: AREF pin

#define ADC_VREF_TYPE ((0<<REFS1) | (0<<REFS0) | (0<<ADLAR)) // Read the AD conversion result

unsigned int read_adc(unsigned char adc_input)

// Wait for the AD conversion to complete

while ((ADCSRA & (1<<ADIF))==0);

Trang 27

//cong thuc tinh thu:

// n=((years-1)+((years-1)/4)-((years-1)/100)+((years-1)/400)+C)%7 // n: thu trong tuan (0=CN;1=T2 6=t7)

// C: ngay thu bao nhieu tu dau nam den hien tai

switch(((2000+year-1)+((2000+year-1)/4)-((2000+year-1)/100)+((2000+year-1)/400)+C)%7)

{

case 0: lcd_puts("CN-"); break;

case 1: lcd_puts("T2-"); break;

case 2: lcd_puts("T3-"); break;

case 3: lcd_puts("T4-"); break;

case 4: lcd_puts("T5-"); break;

case 5: lcd_puts("T6-"); break;

case 6: lcd_puts("T7-"); break;

Trang 33

else

{

if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)

rtc_get_time(&hour,&mint,&sec); // Doc gio, phut, giay tu ds1307

rtc_get_date(&day,&date,&month,&year); // doc ngay, thang, nam tu

ds1307

}

void setting(void)

Trang 42

if(mode==6) //chinh phut bao thuc

Trang 46

// Declare your local variables here

// Input/Output Ports initialization

// Port A initialization

// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In

Bit0=In

DDRA=(0<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3)

| (0<<DDA2) | (0<<DDA1) | (0<<DDA0);

// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T

PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);

// Port B initialization

Trang 47

DDRB=(1<<DDB7) | (1<<DDB6) | (1<<DDB5) | (1<<DDB4) | (1<<DDB3) | (1<<DDB2) | (1<<DDB1) | (1<<DDB0);

// State: Bit7=0 Bit6=0 Bit5=0 Bit4=0 Bit3=0 Bit2=0 Bit1=0 Bit0=0

PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);

// Port C initialization

// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In

Bit0=In

DDRC=(0<<DDC7) | (0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (0<<DDC0);

// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T

PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0);

Ngày đăng: 25/05/2021, 22:55

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