Thiết kế mạch đồng hồ và đo nhiệt độ
Trang 1====o0o====
BÁO CÁO BÀI TẬP LỚN VI XỬ LÝ
ĐỀ TÀI:
THIẾT KẾ MẠCH ĐỒNG HỒ
VÀ ĐO NHIỆT ĐỘ
Nhóm: 03 – TC406 – kỳ 20142 GVHD: PGS.TS PHẠM NGỌC NAM
Trang 2Hà Nội, 6/2015
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN TỬ VIỄN THÔNG
====o0o====
BÁO CÁO BÀI TẬP LỚN VI XỬ LÝ
ĐỀ TÀI:
THIẾT KẾ MẠCH ĐỒNG HỒ
VÀ ĐO NHIỆT ĐỘ
Nhóm: 03 – TC406 – kỳ 20142 GVHD: PGS.TS PHẠM NGỌC NAM
Trang 3Hà Nội, 6/2015 NHÓM 03 – TC406
Thành viên (#1 là trưởng nhóm):
Nhận xét (phần GVHD ghi):
Trang 4
MỤC LỤC
MỤC LỤC 4
DANH MỤC HÌNH VẼ 5
LỜI NÓI ĐẦU 6
CHƯƠNG 1: MÔ TẢ ĐỀ TÀI 7
1.1 Yêu cầu chức năng 7
1.2 Yêu cầu phi chức năng 7
1.3 Sơ đồ khối hệ thống 7
1.4 Kế hoạch thực hiện và phân chia công việc 8
CHƯƠNG 2: THIẾT KẾ HỆ THỐNG 9
Chương2 9
2.1 Khối nguồn 9
2.2 Khối điều khiển 9
2.3 Khối Setup 12
2.4 Khối đo nhiệt độ 13
2.5 Khối thời gian thực 14
2.6 Khối hiển thị 15
2.7 Khối báo thức 17
2.8 Hoàn thiện sản phẩm 19
2.9 Sơ đồ nguyên lý toàn mạch 20
2.10 Sơ đồ Layout mạch 21
2.11 Hình ảnh thật sản phẩm 22
CHƯƠNG 3: KẾT LUẬN 23
TÀI LIỆU THAM KHẢO 24
PHỤ LỤC A: ĐÓNG GÓP CÁC THÀNH VIÊN 25
PHỤ LỤC B: SOFTWARE CODE 26
Trang 5DANH MỤC HÌNH VẼ
Hình 1.1 Sơ đồ khối hệ thống 7
Hình 1.2 Phân công nhiệm vụ 8
Hình 2.1 Sơ đồ nguyên lý jack DC 9
Hình 2.2 Sơ đồ chân PIC 16F887 Error! Bookmark not defined.0 Hình 2.3 Sơ đồ nguyên lý khối điều khiển 101
Hình 2.4 Sơ đồ nguyên lý thạch anh ngoài và nút reset 111
Hình 2.5 Sơ đồ nguyên jump nạp code 122
Hình 2.6 Sơ đồ nguyên lý khối cài đặt 122
Hình 2.7 IC LM35 133
Hình 2.8 Sơ đồ nguyên lý khối đo nhiệt độ 144
Hình 2.9 Sơ đồ chân ic DS1307 144
Hình 2.10 Sơ đồ nguyên lý khối thời gian thực 145
Hình 2.11 LED ma trận 8x8 15
Hình 2.12 Sơ dồ chân ic 74HC595 16
Hình 2.13 Sơ đồ nguyên lý khối hiển thị 17
Hình 2.14 Sơ đồ nguyên lý jump mở rộng 18
Hình 2.15 Còi báo thức 5v 18
Hình 2.16 Sơ đồ nguyên khối báo thức 18
Hình 2.17 Sơ đồ nguyên lý toàn mạch 200
Hình 2.18 Sơ đồ layout toàn hệ thống 211
Hình 2.19 Hình ảnh mạch thật 222
Trang 6LỜI NÓI ĐẦU
Ngày nay, những ứng dụng của vi điều khiển đã đi sâu vào đời sống sinh hoạt và sản xuất của con người, là một phần tất yếu không thể thiếu trong đời sống hiện đại Thế kỷ 21 được xem là thế kỷ của khoa học công nghệ, là thế kỷ mà máy móc được thiết kế và lập trình một cách tự động để thay thế hoạt động của conngười trong sản xuất, cũng như để phục vụ các công việc trong sinh hoạt Trong cuộc sống mang tính tự động hóa cao thì các vi xử lý như là một công cụ đắc lực hỗ trợ cho con người thực hiện nhu cầu ngày càng cao và càng hoàn thiện của mình
Đang là sinh viên ngồi trên ghế nhà trường, cơ hội tiếp cận, học tập những công nghệ tiên tiến, hiện đại chưa nhiều, nên trong quá trình tự học và nghiên cứu, chúng em đã cố gắng tìm hiểu về bộ vi xử lý, cũng như các ứng dụng của nó, đặc biệt là vi xử lý PIC16F877 Với những gì nghiên cứu được nhóm chúng em đã làm thực hành ứng dụng thông qua việc thiết kế đồng hồ đa năng có thể hiện thị nhiệt
độ Đây là cơ hội rất lớn cho chúng em trau dồi kiến thức thực tế, áp dụng lý thuyết
đã học và rèn luyện bản thân trong môi trường làm việc nhóm
Do thời gian thực hiện và kiến thức còn hạn chế nên còn nhiều sai sót trong quá trình thực hiện đề tài, rất mong được sự bổ sung đóng góp của các thầy cô và các bạn
Chúng em xin chân trọng cảm ơn thầy TS Phạm Ngọc Nam và anh Hoà đã nhiệt tình hướng dẫn chúng em suốt quá trình học tập
Trang 7CHƯƠNG 1: MÔ TẢ ĐỀ TÀI
1.1 Yêu cầu chức năng
Đồng hồ
o Hiển thị ngày, giờ theo chế độ 12h và 24h trên LED ma trận
o Chỉnh ngày, giờ của mạch
o Hẹn giờ báo thức
Nhiệt độ: hiện thị nhiệt độ hiện tại của phòng
1.2 Yêu cầu phi chức năng
Khối cài đặt
Khối nhiệt độ
Khối hiển thị
Khối Nguồn
Khối báo thức
Trang 81.4 Kế hoạch thực hiện và phân chia công việc
Hình 1.2 Phân công nhiệm vụ
Trang 9CHƯƠNG 2: THIẾT KẾ HỆ THỐNG
2.1 Khối nguồn
Khối nguồn sẽ sử dụng để cấp nguồn cho vi điều khiển (trong project này là PIC) và các module (nếu cần) Vì thế nên khối nguồn sẽ phải đưa ra được nguồn 5v cho vi điều khiển, đồng thời dùng 1 pin 3V để nuôi khối thời gian thực Để làm được điều này ta có thể sử dụng adapter 5V Giải pháp này có ưu điểm: dễ kết nối,
dễ mua và nhỏ gọn
Hình 2.1 Sơ đồ nguyên lý jack DC
2.2 Khối điều khiển
Theo yêu cầu của project, ta sử dụng PIC Trong dự án này, nhóm chúng tôi
sử dụng PIC 16F877
PIC16F877 có các đặc điểm :
- PIC 16F877 là loại vi điều khiển 8bit tầm trung của hãng microchip
- PIC 16F877 có kiến trúc Havard, sử dụng tập lệnh kiểu RISC (Reduced Instruction Set Computer) với chỉ 35 lệnh cơ bản
- Tất cả các lệnh được thực hiện trong một chu kì lệnh ngoại trừ các lệnh rẽ nhánh
- Sơ đồ chân với chip loại cắm 40 chân:
Trang 10Hình 2.2 Sơ đồ chân PIC16F887
Các chức năng cơ bản của PIC16F877 là:
- PIC16F877 có tất cả 5 PORT I/O (RA, RB, RC, RD, RE) với tổng cộng
- ADC: có 14 kênh ADC 10bit
- Bộ nhớ: 8K x 14Words Flash; 368x8 Bytes RAM; 256x8Bytes EEPROM
- Ngoài ra còn có 2 bộ so sánh tương tự
Khối điều khiển sẽ được thiết lập các chân vào ra để giao tiếp với các khối khác:
Trang 11Hình 2.3 Sơ đồ nguyên lý khối điều khiển
Ngoài ra, để tạo tần số dao động ngoại cho PIC, chúng ta dùng thạch anh và
để reset mạch sẽ sử dụng thêm phím bấm
Trang 12Việc nạp code sẽ được thực hiện thông qua các jump nạp code (dùng để kết nối với mạch nạp PIC sử dụng phần mềm nạp Burn E)
Hình 2.5 Sơ đồ nguyên lý jump nạp code
2.3 Khối Setup
Hình 2.2 Sơ đồ nguyên lý khối cài đặt
Mỗi nút bấm đều được nối với PIC để điều chỉnh những chức năng riêng SW1 được nối với chân RB1 giúp ta chuyển giữa các chế độ SW2 cho phép ta tăng các giá trị hiện thị SW3 giảm các giá trị hiện thị
Trang 132.4 Khối đo nhiệt độ
Để đo được nhiệt độ môi trường, chúng ta sử dụng LM35 làm cảm biến nhiệt độ Cấu trúc của LM35:
U là điện áp đầu vào
T là nhiệt độ môi trường
K là hệ số theo nhiệt độ của LM35, 10mV/1C
Trang 14Hình 2.4 Sơ đồ nguyên lý khối đo nhiệt độ
2.5 Khối thời gian thực
Module thời gian sử dụng IC thời gian thực DS1307
Hình 2.5 Sơ đồ chân ic DS1307
Đi kèm với nó là thạch anh để tạo xung nhịp đồng hồ DS1307 là chip thời gian thực hay RTC (Read time clock) Đây là một IC tích hợp cho thời gian bởi vì tính chính xác về thời gian tuyệt đối cho thời gian: Thứ, ngày, tháng, năm, giờ, phút, giây DS1307 được chế tạo bởi Dallas Chip này có 7 thanh ghi 8 bit mỗi thanh ghi này chứa : Thứ, ngày, tháng, năm, giờ, phút, giây Ngoài ra DS1307 còn chứa 1 thanh ghi điều khiển ngõ ra phụ và 56 thanh ghi trống các thanh ghi này có thể dùng như là RAM DS1307 được đọc thông qua chuẩn truyền thông I2C nên do đó để đọc được và ghi từ DS1307 thông qua
Trang 15được đưa vào chân X1 và X2 Vbat là nguồn cung cấp cho DS1307, thường là 3V Vì vậy ta có thể sử dụng nguồn pin 3,3V để cấp cho DS1307 Vcc là nguồn cho giao tiếp I2C, trong project này là sử dụng cho PIC nên Vcc sẽ là chuẩn 5V Chân SCL và SDA là 2 chân ghi và truyền dữ liệu sẽ được nối với vi xử lý Sau khi nhận được dữ liệu từ DS1307 thì vi xử lý sẽ phát tín hiệu hiển thị ngày, giờ, tháng, năm lên LCD, cũng như bật tắt cho đèn
2.5-Hình 2.6 Sơ đồ nguyên lý khối thời gian thực
Trang 16quét led, hiểu một cách đơn giản là chúng ta sẽ cho các hàng led sáng liên tục trong thời gian ngắn hơn khả năng lưu ảnh của mắt Tuy nhiên nếu làm như vậy số lượng chân của led rất lớn nên ta sẽ dùng 74HC595
Hình 2.8 Sơ dồ chân ic 74HC595
Nó là IC ghi dịch 8bit kết hợp chốt dữ liệu, đầu vào nối tiếp đầu ra song song được dùng để tiết kiệm số chân VĐK (tối đa 3 chân) Để làm được điều này, chân Q7’ của IC trước được nối với chân 14 (DATA) của IC tiếp theo Bằng các này chúng ta có thể kiểm soát số chân của VĐK theo ý muốn
Trang 17Hình 2.9 Sơ đồ nguyên lý khối hiển thị
2.7 Khối báo thức
Trang 18chức năng, chúng tôi có thiết kế thêm các jump mở rộng
Hình 2.14 Sơ đồ nguyên lý jump mở rộng
Các chân từ 1 đến 9 của khối mở rộng được nối tương ứng với các chân từ 2 đến 10 của PIC Chức năng được nhóm phát triển trên jump mở rộng này báo thức dùng còi chip 5V
Hình 2.15 Còi báo thức 5v
Còi có 2 chân và được sử dụng rất đơn giản
Hình 2.16 Sơ đồ nguyên lý khối báo thức
Trang 202.9 Sơ đồ nguyên lý toàn mạch
Hình 2.17 Sơ đồ nguyên lý khối hiển thị
Trang 212.10 Sơ đồ Layout mạch
Hình 2.18 Sơ đồ layout toàn hệ thống
Trang 222.11 Hình ảnh thật sản phẩm
Hình 2.19 Hình ảnh mạch thật
Trang 23Chúng em xin chân thành cảm ơn!
Trang 24TÀI LIỆU THAM KHẢO
[1] http://codientu.org/
[2] http://www.picvietnam.com/
[3] http://www.dientuvietnam.net/
[4] http://vidieukhien.net/
Trang 25Cả nhóm tham gia hàn mạch và test mạch
Trang 26#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT enabled)
#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)
#pragma config MCLRE = ON // RE3/MCLR pin function select bit (RE3/MCLR pin function is MCLR)
#pragma config CP = OFF // Code Protection bit (Program memory code protection is disabled)
#pragma config CPD = OFF // Data Code Protection bit (Data memory code protection is disabled)
#pragma config BOREN = OFF // Brown Out Reset Selection bits (BOR enabled)
#pragma config IESO = OFF // Internal External Switchover bit (Internal/External Switchover mode is enabled)
#pragma config FCMEN = OFF // Fail-Safe Clock Monitor Enabled bit Safe Clock Monitor is enabled)
(Fail-#pragma config LVP = OFF // Low Voltage Programming Enable bit (RB3/PGM pin has PGM function, low voltage programming enabled)
#define SCL_PIN PORTCbits.RC3
#define SDA_PIN PORTCbits.RC4
#define SCL_TRIS TRISC3
#define SDA_TRIS TRISC4
unsigned char mang1 [ ]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};
Trang 270x00,0x61,0x83,0x85,0x89,0x91,0x61,0x00, //2 0x00,0x42,0x81,0x91,0x91,0x91,0x6E,0x00, //3 0x00,0x0C,0x14,0x24,0x44,0xFF,0x04,0x00, //4 0x00,0xF2,0x91,0x91,0x91,0x91,0x0E,0x00, //5 0x00,0x7E,0x91,0x91,0x91,0x91,0x0E,0x00, //6 0x00,0x80,0x80,0x87,0x88,0x90,0xE0,0x00, //7 0x00,0x6E,0x91,0x91,0x91,0x91,0x6E,0x00, //8 0x00,0x72,0x89,0x89,0x89,0x89,0x7E,0x00, //9 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //off
0x00,0x8E,0x9F,0x91,0xFF,0x7F,0x00,0x00, //a 0x00,0x7e,0xff,0x81,0x89,0x8f,0x8e,0x00, //G 0x00,0xff,0x08,0x10,0x10,0x10,0x0f,0x00, //h 0x00,0xfe,0xff,0x03,0x03,0xff,0xfe,0x00, //U 0x00,0x70,0xf1,0x89,0x89,0x8f,0x06,0x00, //S 0x00,0x80,0x80,0xff,0xff,0x80,0x80,0x00, //T 0x00,0xff,0xff,0x91,0x91,0x91,0x00,0x00, //E 0x00,0xff,0x90,0x90,0x90,0x60,0x00,0x00, //P 0x00,0xff,0xff,0x60,0x1c,0xff,0xff,0x00, //D 0x00,0xff,0x40,0x20,0x10,0x08,0xff,0x00, //N 0x00,0x60,0x90,0x90,0x60,0x00,0x00,0x00, //' 0x00,0x7E,0xff,0x81,0x81,0x81,0x66,0x00, //C 0x00,0x80,0x80,0xff,0x80,0x80,0x00,0x00, //t 0x00,0xe0,0x10,0x0f,0x10,0xe0,0x00,0x00, //y 0x7e,0x81,0x81,0x81,0xB1,0x89,0x85,0x81, // dong ho bao thuc
0x7e,0x00,0xff,0x91,0x91,0x91,0x6e,0x00,
0x00,0x80,0x80,0xff,0x80,0x80,0x00,0x00,
0xc0,0x38,0xc0,0x00,0xf8,0xa8,0xa8,0x00, // year G3
0x01,0x00,0x00,0x21,0x41,0xff,0x01,0x01, //.1
0x01,0x00,0x61,0x83,0x85,0x89,0x91,0x61, //.2
0x01,0x00,0x42,0x81,0x91,0x91,0x91,0x6E, //.3
0x01,0x00,0x0C,0x14,0x24,0x44,0xFF,0x04, //.4
0x01,0x00,0xF2,0x91,0x91,0x91,0x91,0x0E, //.5
0x01,0x00,0x7E,0x91,0x91,0x91,0x91,0x0E, //.6
0x01,0x00,0x80,0x80,0x87,0x88,0x90,0xE0, //.7
Trang 28date_1,date_2,month_1,month_2,year_1,year_2,gio_hg1,gio_hg2,phut_hg1,phut_hg2;
long long ADC_GTri ;
float T ,T10;
int sec ,min,hour,day,date,month,year,gio_hg= ,phut_hg= ;
/* KHOI TAO I2C
Trang 29unsigned char get_data , ;
Trang 30sec = BCD_DEC(DS1307_read( ));// delay_ms(1);
min = BCD_DEC(DS1307_read( ));// delay_ms(1);
hour = BCD_DEC(DS1307_read( ));// delay_ms(1);
day = BCD_DEC(DS1307_read( ));// delay_ms(1);
date = BCD_DEC(DS1307_read( ));// delay_ms(1);
month = BCD_DEC(DS1307_read( ));// delay_ms(1);
year = BCD_DEC(DS1307_read( )); delay_ms( );
ANSELHbits.ANS10 = 1 // bat che do analog cho chan RB1/AN10
ADCON1bits.ADFM = 1 // ADC thuc hien can le phai
ADCON1bits.VCFG0 = 0 // dien ap tham chieu Vdd
ADCON1bits.VCFG1 = 0 // dien ap tham chieu Vss
ADCON0bits.ADCS = 10; // tan so lay mau la Fosc/32
ADCON0bits.CHS = 10; // Chon kenh xuat analog AN10
ADCON0bits.ADON = 1 // Turn on ADC
else PORTCbits RC1 = 0 // xuat bit 0 vaochan DATA
x <<= ; // dich trai 1 bit
Trang 31PORTD = mang1[ ]; // quet cot
PORTCbits.RC2 = 0 // tao xung tren chan 12
PORTCbits.RC2 = 1 // de xuat du lieu ra song song
PORTD = mang1[ ]; // quet cot
PORTCbits.RC2 = 0 // tao xung tren chan 12
PORTCbits.RC2 = 1 // de xuat du lieu ra song song
unsigned int delayTime = 0 delay_ADC= ,status= , , , ,nhay= , , = , = ;
unsigned char bien ;
void interrupt isr ()
{
if (INTCONbits.INTF == 1
Trang 32if (status==0 status = 69;
if (status==3){ if (hour_cd==12)hour_cd=24; else hour_cd = 12;};
if (status==96){phut_hg++; if (phut_hg >= 60) phut_hg = 0;};
if (status==97)
{
if (hour_cd==24){gio_hg++; if (gio_hg >= 24) gio_hg = 0;}
if (hour_cd==12){gio_hg++; if (gio_hg >= 13) gio_hg = 1;}
};
if (status==4)
{
if (hour_cd==24){ hour++; if (hour>=24)hour = 0 DS1307_write( ,hour);}
if (hour_cd==12){ hour++; if (hour>=13)hour = 1 DS1307_write( ,hour);}
};
if (status==5){min++; if (min >= 60) min = 0 DS1307_write( ,min);};
if (status==6){date++; if (date>31)date= 1 DS1307_write( ,date);};
if (status==7){month++; if (month>=13)month= 1 DS1307_write( ,month);};
if (status==8){year++; if (year>=100)year= 0 DS1307_write( ,year);};
if (hour_cd==24){gio_hg ; if (gio_hg < 0 gio_hg = 23;}
if (hour_cd==12){gio_hg ; if (gio_hg < 0 gio_hg = 12;}
if (status==5){min ; if (min < 0 min = 59;DS1307_write( ,min);};
if (status==6){date ; if (date <= )date=31;DS1307_write( ,date);};
Trang 33while (ADCON0bits.GO==1){}; // doi cho den khi
chuyen doi ket thuc
ADC_GTri = ((ADRESH<<8)|ADRESL); // gan 10bit chuyen doi
vao bien ADC_GTri
T = (ADC_GTri*5.5) / 10.24; // chuyen doi 10bit ra
gia tri nhiet do
m =( int ) T/10; // gia tri hang chuc
n =( int ) %10; // gia tri hang don vi
HienThi2(hour_1,hour_2,min_1,min_2,10,sec_1,sec_2); break ;
case 1 HienThi2(20,date_1,date_2,10,23,month_1,month_2); break ;
case 2 HienThi2( , ,year_1,year_2,28,29,30); break ;
case 3 HienThi2(15,17,16,10,hour_cd1,hour_cd2,13); break ;
case 4 HienThi2(15,17,16,10,13,hour_1,hour_2); break ;
case 5 HienThi2(15,17,16,10,18,min_1,min_2); break ;
case 6 HienThi2(15,17,16,10,20,date_1,date_2); break ;
case 7 HienThi2(15,17,16,10,23,month_1,month_2); break ;
case 8 HienThi2(15,17,16,10,24,year_1,year_2); break ;
case 69:HienThi( , , ,10,10,21,22); break ;
case 96:HienThi2(18,10,phut_hg1,phut_hg2,25,26,27); break ;
case 97:HienThi2(13,10,gio_hg1,gio_hg2,25,26,27); break ;
}
}
}
}