Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 59 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
59
Dung lượng
3,91 MB
Nội dung
BỘ CÔNG THƯƠNG TRƯỜNG CAO ĐẲNG CÔNG NGHIỆP HUẾ KHOA ĐIỆN -o0o - ĐỒ ÁN TỐT NGHIỆP CAO ĐẲNG THIẾT KẾ MẠCH VI XỬ LÝ ĐIỀU KHIỂN THỜI GIAN THỰC ĐẶNG VINH HIỂN Khóa học: 2013 - 2016 BỘ CÔNG THƯƠNG TRƯỜNG CAO ĐẲNG CÔNG NGHIỆP HUẾ KHOA ĐIỆN -o0o - ĐỒ ÁN TỐT NGHIỆP CAO ĐẲNG THIẾT KẾ MẠCH VI XỬ LÝ ĐIỀU KHIỂN THỜI GIAN THỰC Sinh viên thực hiện: Đặng Vinh Hiển Lớp: 13CDDC02 Niên khóa: 2013 - 2016 Giáo viên hướng dẫn: TS Nguyễn Khánh Quang Huế, 05/2016 Em cảm ơn thầy giáo TS Nguyễn Khánh Quang giúp đỡ em công việc làm đề tài cuối năm này, Thầy giúp đỡ tận tình cho em biết nhiều hay môn vi xử lí ứng dụng thực tiễn, em cảm ơn Khoa tạo điều kiện cho em làm việc với thầy Nguyễn Khánh Quang thời gian cuối khóa Tuy thời gian làm việc với thầy không dài để lại cho em nhiều kỉ niệm đẹp, có lẽ in sâu em sau Cuối em xin chúc thầy gia đình thầy dồi sức khỏe, ấm no, hạnh phúc, chúc thầy thành công đường giảng dạy mình, em cảm ơn Khoa tạo điều kiện cho em học hỏi nâng đỡ cho em ngày hôm Em xin chân thành cảm ơn ! Sinh viên Đặng Vinh Hiển MỤC LỤC Phần I LỜI NÓI ĐẦU .1 PHẦN II NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU MẠCH HIỂN THỊ ĐỒNG HỒ THỜI GIAN THỰC .2 A GIỚI THIỆU MẠCH .2 B GIỚI THIỆU LINH KIỆN MẠCH I Vi điều khiển 89S52: Giới thiệu vi điều khiển 89S52 2 Các chân vi điều khiển 89S52 2.1 Sơ đồ khối chức khối vi điều khiển 89S52: .2 2.2 Sơ đồ chân chức vi điều khiển 89S52 2.2.1 Port 2.2.2 Port 2.2.3 Port 2.2.4 Port 2.2.5 Chân PSEN 2.2.6 Chân ALE 2.2.7 Chân EA 2.2.8 Chân XTAL1, XTAL2 2.2.9 Chân RST 2.2.10 Chân VCC, GND Cấu trúc Port xuất nhập 89S52 .9 Tổ chức nhớ AT89S52 11 Bộ nhớ AT89S52 13 5.1 Bộ nhớ chương trình (ROM) .14 5.2.Bộ nhớ liệu (RAM) 14 5.3 Thanh ghi chức đặc biệt (SFR) .17 Bộ nhớ 17 Kết nối truy xuất nhớ chương trình (Accessing External Code Memory) 18 Kết nối truy xuất nhớ liệu (Accessing External Data Memory) .19 Giải mã địa 20 10 Các không gian nhớ chương trình liệu gối 21 II Chip thời gian thực DS1307 22 III IC tạo ổn áp 7805:( IC ổn áp 5v) 27 IV Các khối mạch cần sử dụng mạch .28 Khối tạo nguồn 28 Khối Reset .28 Khối điều khiển .29 Khối tạo xung 29 Khối hiển thị 29 Khối tạo thời gian thực 32 C CÀI ĐẶT THỜI GIAN 32 D CÁC LỆNH CƠ BẢN CỦA VI ĐIỀU KHIỂN .35 E CHƯƠNG TRÌNH NẠP CHO MẠCH 36 Phần III Kết Luận 50 DANH MỤC TÀI LIỆU THAM KHẢO: .51 CÁC TRANG WEB THAM KHẢO 51 Phần I LỜI NÓI ĐẦU Ngày vi điều khiển ứng dụng rộng rãi công ngiệp sống hàng ngày người Ví dụ như: thiết bị có lập trình mạch đếm sản phẩm, mạch điều khiển đèn, mạch cửa tự động,mạch đồng hồ, -Những mạch lập trình để thực hay nhiều thao tác mà người viết lệnh yêu cầu.Trong mạch đống hồ số -Sau thời gian học tập tìm tòi học hỏi với giúp đỡ thầy , em hoàn thành việc thiết kế thi công mạch sử dụng vi điều khiển, mạch đồng hồ hiển thị thời gian thực, hiển thị LCD -Em xin chân thành cảm ơn thầy giáo Nguyễn Khánh Quang hướng dẫn giúp đỡ tận tình để chúng em hoàn thành mạch đồng hồ -Mô hình không tránh khỏi thiếu xót,chúng em mong bảo thầy để em hoàn thành tốt hơn, ứng dụng vào thực tế nhiều Em xin chân thành cảm ơn ! Trang PHẦN II NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU MẠCH HIỂN THỊ ĐỒNG HỒ THỜI GIAN THỰC A GIỚI THIỆU MẠCH - Mạch đồng hồ hiển thị giờ phút giây, có khả lưu giờ mất điện - Mạch sử dụng vi điều khiển at89S52 chip thời gian thực DS 1307 hoạt động ở tần số 32768kHZ được nuôi bằng nguồn dự phòng 3V có thể hoạt động thời gian năm không có nguồn điện B GIỚI THIỆU LINH KIỆN MẠCH I Vi điều khiển 89S52: Giới thiệu vi điều khiển 89S52 - Chip vi điều khiển 89S52 thuộc họ MCS-51 họ vi điều khiển hãng Intel Chip 89S52 có số đặc trưng sau: - Bộ nhớ chương trình bên trong: KB (ROM) - Bộ nhớ liệu bên trong: 256 byte (RAM) - Bộ nhớ chương trình bên ngoài: 64 KB (RAM) - Bộ nhớ liệu bên ngoài: 64 KB (RAM) - port xuất nhập (I/O port) bit - định thời 16 bit - Mạch giao tiếp nối tiếp - Bộ xử lý bit (thao tác bit riêng lẻ) - 210 vị trí nhớ định địa chỉ, vị trí bit - Nhân / Chia 4µs Các chân vi điều khiển 89S52 2.1 Sơ đồ khối chức khối vi điều khiển 89S52: Trang - OSC (Oscillator): Mạch dao động → tạo tín hiệu xung clock cung cấp cho khối chip hoạt động - Interrupt control: Điều khiển ngắt → nhận tín hiệu ngắt từ bên (INT0\, INT1\)), từ định thời (Timer 0, Timer 1) từ cổng nối tiếp (Serial port), đưa tín hiệu ngắt đến CPU để xử lý - Other registers: Các ghi khác → lưu trữ liệu port xuất/nhập, trạng thái làm việc khối chip suốt trình hoạt động hệ thống - RAM (Random Access Memory): Bộ nhớ liệu chip → lưu trữ liệu - ROM (Read Only Memory): Bộ nhớ chương trình chip → lưu trữ chương trình hoạt động chip Trang - I/O port (In/Out ports): Các port xuất/nhập → điều khiển việc xuất nhập liệu dạng song song chip thông qua port P0, P1, P2, P3 - Serial port: Port nối tiếp → điều khiển việc xuất nhập liệu dạng nối tiếp chip thông qua chân TxD, RxD - Timer 0, Timer 1: Bộ định thời 0, → dùng để định thời gian đếm kiện (đếm xung) thông qua chân T0, T1 2.2 Sơ đồ chân chức vi điều khiển 89S52 2.2.1 Port Port (P0.0 – P0.7) có số chân từ 32 – 39 - Port có hai chức năng: • Port xuất nhập liệu (P0.0 – P0.7) → không sử dụng nhớ • Bus địa byte thấp bus liệu đa hợp (AD0 – AD7) → có sử dụng nhớ Lưu ý: Khi Port đóng vai trò port xuất nhập liệu phải sử dụng điện trở kéo lên bên - Ở chế độ mặc định (khi reset) chân Port (P0.0 – P0.7) cấu hình Trang port xuất liệu, Muốn chân Port làm port nhập liệu cần phải lập trình lại, cách ghi mức logic cao (mức 1) đến tất bit port trước bắt đầu nhập liệu từ port _ Khi lập trình cho ROM chip Port đóng vai trò ngõ vào liệu (D0 – D7) 2.2.2 Port - Port (P1.0 – P1.7) có số chân tù – - Port có chức năng: • Port xuất nhập liệu (P1.0 – P1.7) → sử dụng không sử dụng nhớ - Ở chế độ mặc định (khi reset) chân Port (P1.0 – P1.7) cấu hình port xuất liệu Muốn chân Port làm port nhập liệu cần phải lập trình lại, cách ghi mức logic cao (mức 1) đến tất bit port trước bắt đầu nhập liệu từ port - Khi lập trình cho ROM chip Port đóng vai trò ngõ vào địa byte thấp (A0 – A7) 2.2.3 Port - Port (P2.0 – P2.7) có số chân từ 21 – 28 - Port có hai chức năng: • Port xuất nhập liệu (P2.0 – P2.7) → không sử dụng nhớ • Bus địa byte cao (A8 – A15) → có sử dụng nhớ - Ở chế độ mặc định (khi reset) chân Port (P2.0 – P2.7) cấu hình port xuất liệu Muốn chân Port làm port nhâp liêu cần phải lập trình lại, cách ghi mức logic cao (mức 1) đến tất bit port trước bắt đầu nhập liệu từ port - Khi lập trình ROM chip Port đóng vai trò ngõ vào địa byte cao (A8 – A11) tín hiệu điều khiển 2.2.4 Port - Port (P3.0 – P3.7) có số chân tù 10 – 17 - Port có hai chức năng: • Port xuất nhập liệu (P3.0 – P3.7) → không sử dụng nhớ chức đặc biệt Trang delay(1); SCL=0; return gt; } //Ham ghi gia tri vao dia chi void ghi(unsigned char add,unsigned char gt) { start(); truyen(0xd0); truyen(add); truyen(gt); stop(); } // Ham doc gia tri tu dia chi unsigned char doc(unsigned char add) { unsigned char value; start(); truyen(0xd0); truyen(add); start(); truyen(0xd1); value=nhan(); stop(); return value; } // CAC CHUONG TRINH GIAO TIEP 89S52-DS1307 // ISR External Interrupt void Ngoai0() interrupt { mode=mode+1; if(mode==8) mode=0; } //Ham khoi tao gia tri DS1307 void khoitao_DS() { unsigned char check; check=doc(0x08); if(check!='c') { ghi(0x08,'c'); ghi(0x00,(dec_bcd(30))&0x7F); ghi(0x01,(dec_bcd(35))&0x7F); ghi(0x02,(dec_bcd(14))&0x3F); Trang 40 ghi(0x03,dec_bcd(4)); ghi(0x04,dec_bcd(1)); ghi(0x05,dec_bcd(5)); ghi(0x06,dec_bcd(16)); } } //Ham doc gia tri thoi gian tu DS1307 void docgio() { giay =bcd_dec(doc(0x00)); phut =bcd_dec(doc(0x01)); gio =bcd_dec(doc(0x02)); thu=bcd_dec(doc(0x03)); =bcd_dec(doc(0x04)); thang=bcd_dec(doc(0x05)); nam =bcd_dec(doc(0x06)); } //Tach gia tri de hien thi void tach() { s1=giay/10+48;s2=giay%10+48; m1=phut/10+48;m2=phut%10+48; h1=gio/10+48;h2=gio%10+48; day=thu+48; ng1=ngay/10+48;ng2=ngay%10+48; th1=thang/10+48;th2=thang%10+48; n1=nam/10+48;n2=nam%10+48; } //Ham hien thi thoi gian void hienthi() { docgio(); tach(); lenh(0x80); if(thu!=7) { chuoi("Thu "); kitu(day+1); kitu(' '); } else chuoi("CNHAT "); kitu(ng1);kitu(ng2); Trang 41 kitu('/'); kitu(th1);kitu(th2); kitu('/'); chuoi("20"); kitu(n1);kitu(n2); lenh(0xc0); chuoi("Time: "); kitu(h1);kitu(h2); kitu(':'); kitu(m1);kitu(m2); kitu(':'); kitu(s1);kitu(s2); chuoi(" "); } //Hien thi thu thang nam void hienngay() { tach(); lenh(0xc0); if(thu!=7) { chuoi("Thu "); kitu(day+1); kitu(' '); } else chuoi("CNHAT "); kitu(ng1);kitu(ng2); kitu('/'); kitu(th1);kitu(th2); kitu('/'); chuoi("20"); kitu(n1);kitu(n2); } //Hien giay phut gio void hiengio() { tach(); lenh(0xc0); chuoi("Time: "); kitu(h1);kitu(h2); kitu(':'); kitu(m1);kitu(m2); kitu(':'); kitu(s1);kitu(s2); kitu(' '); Trang 42 } //Ham cai dat gia tri thoi gian void caidat() { if(mode==1) // Gio { tang0=tang1;tang1=tang; giam0=giam1;giam1=giam; if(tang0==0 && tang1==1) { gio=gio+1; if(gio==24) gio=0; } if(giam0==0 && giam1==1) { gio=gio-1; if(gio