THIẾT kế ĐỒNG hồ điện tử HIỂN THỊ BẰNG 8 LED 7 đoạn

17 612 0
THIẾT kế ĐỒNG hồ điện tử HIỂN THỊ BẰNG 8 LED 7 đoạ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

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI ĐỒ ÁN MÔN HỌC THIẾT KẾ ĐỒNG HỒ ĐIỆN TỬ HIỂN THỊ BẰNG 8 LED 7 ĐOẠN Nhóm 6 : NGUYỄN ĐỨC NAM ĐINH THÀNH LUÂN TRẦN TIẾN NAM Hà Nội 2010 A. Cơ Sở Lý Thuyết I. Giới thiệu tổng quan về họ vi điều khiển 8051 Họ vi điều khiển 8051 là một trong những họ vi điều khiển thông dụng nhất . Đây là họ vi điều khiển được sản xuất theo công nghệ CMOS . Có tốc độ cao và công suất thấp, bộ nhớ Flash có thể lập trình được . 1. Sơ đồ khối của AT89S52 2. Những đặc trưng của AT89S52  4 Kbyte bộ nhớ Flash có thể lập trình lặp vơi 1000 chu kỳ đọc xoá  Hoạt động tĩnh đầy đủ : Từ 0 HZ đến 24 MHZ  Khoá bộ nhớ chương trình ba cấp  128x8 bit RAM nội  32 đường xuất nhập lập trình được  Hai timer / counter khoong bit  Một port nối tiếp sang công có thể lập trình được  Mạch đồng hồ và bộ dao động trên chíp 3. Sơ đồ chân và chức năng của AT89S52 Như vậy theo sơ đồ trên AT89S52 có 40 chân .mỗi chân có chức năng như các đường I/O (xuất nhập ) , trong đó 24 chân có công dụng kép,mỗi đường có thể hoạt động như một đường I/O hoặc như đường điều khiển hoặc như thành phần của bus điều khiển và bus dữ liệu. 3.1 Port 0 ( P0.0- P0.7) Port 0 gồm 8 chân, ngoài các chức năng xuất nhập, Port 0 còn là bus đa hợp dữ liệu và địa chỉ(AD0-AD7), chức năng này sẽ được sử dụng khi 8051 giao tiếp với các thiết bị ngoài có kiến trúc bus như các vi mạch nhớ, mạch nhớ PIO… 3.2 Port 1 ( P1.0- P1.7) Port 1 có chức năng xuất nhập theo bit và byte. Ngoài ra, ba chân P1.5, P1.6, P1.7 được dùng để nạp ROM theo chuẩn ISP, hai chân P1.0, và P1.1 được dùng cho bộ Timer 2. 3.3 Port 2 (P2.0-P2.7) Là một port có công dụng kép, là đường xuất nhập hoặc là byte cao của bus dịa chỉ đối vớo các thiết bị đồng bộ nhớ mở rộng. 3.4 Port 3 (P3.0- P3.7) Mỗi chân trên Port 3 ngoai chuc năng xuất nhập còn có chuc năng riêng, cụ thể như sau : Bit Tên Chức năng P3.0 RXD Dữ liệu nhận cho port nối tiếp P3.1 TXD Dữ liệu truyền cho port nối tiếp P3.2 INT0 Ngắt bên ngoài 0 P3.3 INT1 Ngắt bên ngoài 1 P3.4 T0 Ngõ vào của Timer/counter 0 P3.5 T1 Ngõ vào của Timer/ counter 1 P3.6 /WR Xung ghi bộ nhớ dữ liệu ngoài P3.7 /RD Xung đọc bộ nhớ dữ liệu ngoài. 3.5 Chân /PSEN ( Program store Enable) /PSEN là chân điều khiển đọc chương trình ở bộ nhớ ngoài, nó được nối với chân /OE để cho phép đọc các byte mã lệnh trên ROM ngoài . /PSEN sẽ ở mức thấp trong thời gian đọc mã lệnh . Mã lẹnh được đọc từ bộ nhớ ngoài qua bus dữ liệu (Port 0) thanh ghi lệnh để được giải mã . Khi thực hiện chương trình trong ROM nội thì /PSEN ở mức cao. 3.6 Chân ALE (Address Latch Enable) ALE là tín hiệu điều chỉnh chốt địa chỉ có tần số bằng 1/6 tần số dao động của vi điều khiển. tín hiệu ALE được dùng để cho phép vi mạch chốt bên ngoài như 74373, 74573 chốt byte địa chỉ thấp ra khỏi bus đa hợp địa chỉ / dữ liệu (Port 0). 3.7 Chân /EA (External Access) Tín hiệu /EA cho phép chọn bộ nhớ chương trình là bộ nhớ trong hay ngoài vi điều khiển . Nếu EA ở mức cao (nối với Vcc), thì vi điều khiển thi hành chương trình trong ROM nội . Nếu /EA ở mức thấp (nối với GND), thì vi điều khiển thi hành chương trình từ bộ nhớ ngoài . 3.8 RST (Reset) Ngõ vào RST trên chân 9 la f ngõ Reset của 8051. Khi tín hiệu này được đưa lên mức cao , các thanh ghi trong bộ vi điều khiển được tải những giá trị thích hợp để khởi động hệ thống . 3.9 XTAL1, XTAL2 AT89S52 có một bộ dao động trên chíp, nó thường được nối với với bộ dao động bằng thạch anh có tần số lớn nhất là 33MHZ, thông thường là 12MHZ. Hình trên là cách nối bộ dao động thạch anh 3.10 Vcc, GND AT89s52 dùng nguồn điện áp một chiều có dải điện áp từ 4v đến 5,5v được cấp qua chân 20 và 40. B.Code /*Co 5 phim bam, phim select1 de choin kieu hien thi(theo ngay/nam) dung ngat ngoai, phim select2 de chon chinh sua cho nao dung 1 ngat ngoai, 2phim de up va down dung bt*/ #include<AT89X52.H> //khai bao cac bien, ham #define N 2 #define LED7_DATA P0 //khai bao cac bien #define DIGIT1 P2_3 #define DIGIT2 P2_2 #define DIGIT3 P2_1 #define DIGIT4 P2_0 #define DIGIT5 P1_4 #define DIGIT6 P1_3 #define DIGIT7 P1_2 #define DIGIT8 P1_1 #define LED P1_0 #define up P3_5 #define down P3_7 const unsigned char LED_code[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; const unsigned char thangbt[]={31,28,31,30,31,30,31,31,30,31,30,31};//nam binh thuong const unsigned char thangdb[]={31,29,31,30,31,30,31,31,30,31,30,31}; //nam nhuan int select1,select2,ngay,thang,nam,gio,phut,giay,tic; unsigned char digit1,digit2,digit3,digit4,digit5,digit6,digit7,digit8; void hienthi(); void thietlap1(); void thietlap2(); void thietlap3(); void delay(unsigned int); void quetLED(unsigned char,unsigned char,unsigned char,unsigned char,unsigned char,unsigned char,unsigned char,unsigned char); //dinh nghia cac ham void main() { EA=1,EX0=1; EX1=1; ET1=1; PT0=1; IT0=1;IT1=1; //Khoi tao Timer 1 TMOD=0x10; TH1=-10000/256;//timer tran sau 1tic tac TL1=-10000%256; // ngay=1; thang=1; nam=2008; gio=phut=giay=tic=0; select1=0; select2=0; LED=0; TR1=1; while(1) { while(select2==0) { hienthi(); } while(select2==1) { thietlap1(); hienthi(); } while(select2==2) { thietlap2(); hienthi(); } while(select2==3) { thietlap3(); hienthi(); } } } void thietlap1() { if(select1==0) { if(up==0) { giay++; if(giay>59) giay=0; } if(down==0) { giay ; if(giay<0) giay=59; } hienthi(); hienthi(); } if(select1==1) { if(up==0) { nam++; } hienthi(); if(down==0) { nam ; } hienthi(); hienthi(); } } void thietlap2() { if(select1==0) { if(up==0) { phut++; if(phut>59) phut=0; } if(down==0) { phut ; if(phut<0) phut=59; } hienthi(); hienthi(); } if(select1==1) { if(up==0) { thang++; if(thang>12)thang=1; } if(down==0) { thang ; if(thang<0) thang=12; } hienthi(); hienthi(); } } void thietlap3() { if(select1==0) { if(up==0) { [...]... thi digit 4 LED7 _DATA = LED_ code[so4]; DIGIT4 = 0; delay(N); DIGIT4 = 1; // hien thi digit 5 LED7 _DATA = LED_ code[so5]; DIGIT5 = 0; delay(N); DIGIT5 = 1; // hien thi digit 6 LED7 _DATA = LED_ code[so6]; DIGIT6 = 0; delay(N); DIGIT6 = 1; // hien thi digit 7 LED7 _DATA = LED_ code[so7]; DIGIT7 = 0; delay(N); DIGIT7 = 1; // hien thi digit 8 LED7 _DATA = LED_ code[so8]; DIGIT8 = 0; delay(N); DIGIT8 = 1; } void... hienthi(); } C.Đánh giá Qua bài tập lớn nhóm em vừa thực hiện Đồ án thiết kế trên họ Vi Điều Khiển 80 51 đồng hồ đếm thời gian thực trên 8led 7 thanh có ưu điểm - Hệ thống hiển thị thời gian thự ở 2 chế độ - Sai số chưa đến 5s - Có nguồn nuôi dự phòng - Các phím tùy chỉnh được thiết kế đơn giản dễ sử dụng Tuy nhiên trong quá trình thiết kế còn gặp nhiều sai sót và không tránh khỏi các phím có độ chính... //Ham quet LED 7 thanh void quetLED(unsigned char so1,unsigned char so2,unsigned char so3,unsigned char so4,unsigned char so5,unsigned char so6,unsigned char so7,unsigned char so8) { // hien thi digit 1 LED7 _DATA = LED_ code[so1]; DIGIT1 = 0; delay(N); DIGIT1 = 1; // hien thi digit 2 LED7 _DATA = LED_ code[so2]; DIGIT2 = 0; delay(N); DIGIT2 = 1; // hien thi digit 3 LED7 _DATA = LED_ code[so3]; DIGIT3 = 0; delay(N);... digit8=gio/10; digit7=gio%10; digit6=phut/10; digit5=phut%10; digit4=giay/10; digit3=giay%10; digit2=tic/10; digit1=tic%10; } if(select1==1) //Hien thu ngay,thang, nam { digit8=ngay/10; digit7=ngay%10; digit6=thang/10; digit5=thang%10; digit4=nam/1000; digit3=(nam%1000)/100; digit2=(nam%100)/10; digit1=nam%10; } quetLED(digit1,digit2,digit3,digit4,digit5,digit6,digit7,digit8); } //Ham quet LED 7 thanh... } if(select1==1) { if(up==0) { ngay++; if(nam==20 08| nam==2012|nam==2016| nam==2020|nam==2024|nam==20 28| nam==2032|nam==2036|nam==2040| nam==20 48) { if(ngay>thangdb[thang-1]) ngay=0; } else { if(ngay>thangbt[thang-1]) ngay=0; } } if(down==0) { ngay ; if(nam==20 08| nam==2012|nam==2016| nam==2020|nam==2024|nam==20 28| nam==2032|nam==2036|nam==2040| nam==20 48) { if(ngay23) { gio=0; ngay++; } if(nam==20 08| nam==2012|nam==2016|nam==2020|nam==2024| nam==20 28| nam==2032|nam==2036|nam==2040|nam==20 48) { if(ngay>thangdb[thang-1]) { ngay=0; thang++; } } else { if(ngay>thangbt[thang-1]) { ngay=0; thang++; } } if(thang>12) { thang=1; nam++; } if(tic==0) if(tic==20) TR1=1; LED= 0; LED= 1; } void ngatngoai0() interrupt 0 { select1++; if(select1>1) . HỌC THIẾT KẾ ĐỒNG HỒ ĐIỆN TỬ HIỂN THỊ BẰNG 8 LED 7 ĐOẠN Nhóm 6 : NGUYỄN ĐỨC NAM ĐINH THÀNH LUÂN TRẦN TIẾN NAM Hà Nội 2010 A. Cơ Sở Lý Thuyết I. Giới thiệu tổng quan về họ vi điều khiển 80 51 Họ. 6 LED7 _DATA = LED_ code[so6]; DIGIT6 = 0; delay(N); DIGIT6 = 1; // hien thi digit 7 LED7 _DATA = LED_ code[so7]; DIGIT7 = 0; delay(N); DIGIT7 = 1; // hien thi digit 8 LED7 _DATA = LED_ code[so8]; DIGIT8. bài tập lớn nhóm em vừa thực hiện. Đồ án thiết kế trên họ Vi Điều Khiển 80 51 đồng hồ đếm thời gian thực trên 8led 7 thanh có ưu điểm - Hệ thống hiển thị thời gian thự ở 2 chế độ - Sai số chưa

Ngày đăng: 04/09/2015, 10:15

Từ khóa liên quan

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

Tài liệu liên quan