Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 35 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
35
Dung lượng
506 KB
Nội dung
TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI KHOA ĐIỆN – ĐIỆN TỬ BÀI TẬP LỚN VI XỬ LÝ Đề 23: Thiết kế đồng hồ hiển thị giờ, phút, giây led ma trận sử dụng AT89C51 HÀ NỘI Tháng 07 năm 2016 MỤC LỤC Thiết kế 1.1 Mạch làm nhiệm vụ gì? 1.2 Các linh kiện dùng mạch 1.3 Sơ đồ mạch nguyên lý 1.4 Sơ đồ mạch in Lập trình cho mạch điều khiển 2.1 Sơ yêu cầu, nhiệm vụ 2.2 Sơ đồ khối toàn chương trình 2.3 Code Kết đạt 34 3.1 Mô protus 34 3.2 Mạch thật 34 Page | 1 Thiết kế 1.1 Mạch làm nhiệm vụ gì? Mạch sử dụng số linh kiện led matrix, AT89C51,DS1307,74S373 tạo thành đồng hồ ngày,giờ, phút, giây 1.2 Các linh kiện dùng mạch -Mô tả DS1307 Các DS1307 nối tiếp đồng hồ thời gian thực (RTC) lượng thấp, đầy đủ số thập phân mã nhị phân (BCD) đồng hồ / lịch cộng với 56 byte NV SRAM Địa liệu chuyển nối tiếp thông qua 2C, bus hai chiều Đồng hồ lịch cung cấp giây, phút, giờ, ngày, ngày, tháng, năm thông tin Sự kết thúc ngày tháng tự động điều chỉnh theo tháng có 31 ngày, bao gồm điều chỉnh cho bước nhảy vọt năm Đồng hồ hoạt động 24 12 định dạng với số AM / PM Các DS1307 xây dựng mạch điện có ý nghĩa phát điện tự động chuyển sang cung cấp lưu Hoạt động chấm công tiếp tục phần hoạt động từ việc cung cấp lưu Real-Time Clock (RTC) Đếm Giây,Phút, giờ, ngày tháng, tháng, ngày tuần năm Giao diện nối tiếp Lập trình Quảng trường-Wave Đầu tín hiệu Tự động Power-Fail Phát Chuyển Mạch Tiêu thụ 500nA Battery-Backup Chế độ với dao động chạy - Mô tả LS373 Những tính ghi 8-bit đầu trạng thái thiết kế đặc biệt cho driver có dung trở kháng tương đối thấp Các trở kháng cao tăng-logic cấp cao ổ đĩa cung cấp đăng ký với khả kết nối trực tiếp driver đường bus hệ thống bus tổ chức mà không cần giao diện pullup thành phần Các thiết bị đặc biệt hấp dẫn cho thực đăng ký đệm, cổng I/O, bus hai chiều, đăng ký làm việc chốt LS373 S373 minh bạch D-loại chốt, có nghĩa (C CLK) đầu vào cho phép cao, kết đầu Q theo liệu đầu vào (D) Khi C CLK thực thấp, đầu bám vào mức độ liệu thiết lập Page | Tám flip-flops LS374 S374 kích hoạt D-type flip-flops Trên tích cực trình chuyển đổi đồng hồ, kết đầu Q thiết lập để trạng thái logic thiết lập đầu vào D.Schmitt-kích hoạt đệm đầu vào cho phép / đồng hồ dòng S373 S374 thiết bị đơn giản hóa thiết kế hệ thống ac dc tiếng ồn từ chối cải thiện cách thường 400 mV trễ đầu vào Một đệm đầu kiểm soát (OC) đầu vào sử dụng để đặt đầu trạng thái logic bình thường (logic cao thấp ) trạng thái trở kháng cao Trong trạng thái trở kháng cao, kết đầu tải không đáng kể OC không ảnh hưởng đến hoạt động nội chốt dép xỏ ngón Đó là, liệu cũ giữ lại liệu nhập vào, kết đầu tắt -Mô tả AT89C51 Các AT89C51 lượng thấp, hiệu suất cao CMOS 8-bit vi tính với 4Kbyte Flash lập trình xóa Read Only Memory (PEROM) Các thiết bị sản xuất sử dụng công nghệ nhớ không bay mật độ cao Atmel tương thích với tiêu chuẩn công nghiệp MCS-51 ™ hướng dẫn thiết lập sơ đồ chân.Trên chip Flash cho phép nhớ chương trình lập trình hệ thống khái ventional lập trình nhớ không bay Bằng cách kết hợp CPU 8-bit đa với Flash chip nguyên khối, Atmel AT89C51 máy vi tính mạnh mẽ cung cấp giải pháp hiệu linh hoạt chi phí để kiểm soát nhiều nhúng application CẤU TẠO CỦA AT89C51 VCC :Cung cấp điện áp GND:Nối đất Cổng 0: Port 8-bit mở cống hai chiều I / O port Như cổng pin chìm tám đầu vào TTL Khi 1s ghi vào cổng chân, chân sử dụng trở kháng đầu vào cao Port cấu hình để ghép thấp Page | Port nhận byte mã chương trình Flash-ming, kết đầu byte mã chương trình kiểm điểm hóa Pullups bên yêu cầu chương trình kiểm điểm hóa Cổng 1: Cổng 8-bit hai chiều cổng I / O với pullups nội Cổng đệm đầu chìm / nguồn bốn đầu vào TTL Khi 1s ghi vào Port chân họ kéo cao pullups nội sử dụng đầu vào Cổng chân bên bị kéo nguồn thấp (tôi IL) Vì pullups nội Cổng nhận byte địa thấp trật tự lập trình flash xác minh Cổng 2: Cổng 8-bit hai chiều cổng I / O với pullups nội Cổng đệm đầu chìm / nguồn bốn đầu vào TTL Khi 1s viết để Port chân họ kéo cao pullups nội sử dụng đầu vào Cổng chân bên bị kéo nguồn thấp pullups nội Port phát byte địa bậc cao trình nạp từ nhớ chương trình bên trình truy cập đến nhớ liệu bên mà sử dụng địa 16-bit (MOVX @ DPTR) Trong ứng dụng sử dụng pullups nội mạnh mẽ Cổng 3: Cổng 8-bit hai chiều cổng I / O với pullups nội Cổng đệm đầu chìm / nguồn bốn đầu vào TTL Khi 1s viết để Port chân họ kéo cao pullups nội sử dụng đầu vào Cổng chân bên bị kéo nguồn thấp (tô I L) pullups Port phục vụ chức tính đặc biệt khác AT89C51 liệt kê đây: Port nhận số tín hiệu điều khiển cho Flash chuyên nghiệp gramming xác minh RST Page | Thiết lập lại đầu vào Một cao pin cho hai chu kỳ máy dao động chạy reset thiết bị ALE / PROG Địa chốt cho phép đầu xung cho chốt byte thấp địa thời gian truy cập vào nhớ bên Này pin đầu vào xung chương trình (PROG) flash lập trình Trong ALE hoạt động bình thường phát với tốc độ không đổi 1/6 tần số dao động, sử dụng cho bên timing mục đích ép xung Lưu ý, nhiên, ALE xung bỏ qua truy cập vào liệu bên Mem PSEN Chương trình Cửa hàng Enable nhấp nháy đọc để bên ủng hộ nhớ gram Cổng Pin: Chức thay P3.0 RXD (cổng đầu vào nối tiếp) P3.1 TXD (cổng nối tiếp) P3.2 INT0 (bên gián đoạn 0) P3.3 INT1 (ngắt 1) P3.4 T0 (timer đầu vào bên ngoài) P3.5 T1 (1 đầu vào bên ngoài) P3.6 WR (bộ nhớ liệu bên ghi nhấp nháy) P3.7 RD (bộ nhớ liệu bên đọc nhấp nháy) Page | R4 RP1 10k R3 h33 h34 h35 h36 h37 h38 h39 h40 h41 h42 h43 h44 h45 h46 h47 h48 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 c1 c2 c3 c4 c5 c6 c7 c8 c1 c2 c3 c4 c5 c6 c7 c8 mode c1 c2 c3 c4 c5 c6 c7 c8 c1 c2 c3 c4 c5 c6 c7 c8 h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 c1 c2 c3 c4 c5 c6 c7 c8 c1 c2 c3 c4 c5 c6 c7 c8 1.3 Sơ đồ mạch nguyên lý RESPACK-8 menu R2 10K tang 10K R1 U7 giam 19 XTAL1 P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 10K 18 R6 R5 4k7 4k7 U SCL SDA C1 X1 VBAT X2 SDA SCL mode3 menu4 tang giam 33p 3V l1 11 OE LE 74S373 PSEN ALE EA P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD 39 38 37 36 35 34 33 32 21 22 23 24 25 26 27 28 d1 d2 d3 d4 d5 d6 d7 d8 10 11 12 13 14 15 16 17 l1 l2 l3 l4 l5 l6 AT89C51 U1 D0 D1 D2 D3 D4 D5 D6 D7 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 33p X1 32.768Hz C2 SOUT DS1307 B1 d1 d2 d3 d4 d5 13 d6 14 d7 17 d8 18 RST SCL6 SDA 29 30 31 XTAL2 U2 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 12 15 16 19 h1 h2 h3 h4 h5 h6 h7 h8 d1 d2 d3 d4 d5 13 d6 14 d7 17 d8 18 l2 11 D0 D1 D2 D3 D4 D5 D6 D7 OE LE 74S373 U3 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 h9 h10 h11 h12 12 h13 15 h14 16 h15 19 h16 d1 d2 d3 d4 d5 13 d6 14 d7 17 d8 18 l3 11 D0 D1 D2 D3 D4 D5 D6 D7 OE LE 74S373 U4 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 h17 h18 h19 h20 12 h21 15 h22 16 h23 19 h24 d1 d2 d3 d4 d5 13 d6 14 d7 17 d8 18 l4 11 D0 D1 D2 D3 D4 D5 D6 D7 OE LE 74S373 U5 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 h25 h26 h27 h28 12 h29 15 h30 16 h31 19 h32 d1 d2 d3 d4 d5 13 d6 14 d7 17 d8 18 l5 11 D0 D1 D2 D3 D4 D5 D6 D7 OE LE 74S373 U6 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 h33 h34 h35 h36 12 h37 15 h38 16 h39 19 h40 d1 d2 d3 d4 d5 13 d6 14 d7 17 d8 18 l611 D0 D1 D2 D3 D4 D5 D6 D7 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 h41 h42 h43 h44 12 h45 15 h46 16 h47 19 h48 OE LE 74S373 Page | 1.4 Sơ đồ mạch in Page | Lập trình cho mạch điều khiển 2.1 Sơ yêu cầu, nhiệm vụ Lập trình cho mạch điều khiển sau nạp chương trình cho chip AT89C51 2.2 Sơ đồ khối toàn chương trình 2.3 Code #include // KHAI BAO NGUYEN MAU CHO CAC HAM unsigned char bcd_dec(unsigned char bcd); // Ham chuyen doi so bcd-thap phan unsigned char dec_bcd(unsigned char dec); // chuyen doi thap phan-bcd void Caidat(); void Hiengio(); void Hienngay(); void Display_hour(); void Display_min(); void Display_sec(); void Display_day(); void Display_month(); void Display_year(); void tach(); void Docgio(); unsigned char mode=0,doc=0; int i,k,l,j; int dem; Page | bit tang0=1,tang1=1,giam0=1,giam1=1,menu=0,Menu0=1,Menu1=1,chedo0=0,che do1=1; // Khai bao cac bit cho nut nhan char giay,phut,gio,h1,h2,m1,m2,s1,s2,ngay,thang,ng1,ng2,th1,th2,n1,n2; Các gia tri thoi gian // int nam; // Nam unsigned char cot[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; unsigned char code hang[]={ 0xFF,0x81,0x7E,0x7E,0x7E,0x7E,0x81,0xFF, //0 0xFF,0x7B,0x7D,0x00,0x7F,0x7F,0xFF,0xFF, //1 0xFF,0x3D,0x5E,0x6E,0x76,0x79,0xFF,0xFF, 0xFF,0xBD,0x6E,0x66,0x6A,0x9D,0xFF,0xFF, 0xFF,0xCF,0xD7,0xDB,0xDD,0x00,0xDF,0xFF, 0xFF,0xB0,0x76,0x76,0x76,0x76,0x8E,0xFF, 0xFF,0x81,0x6E,0x76,0x76,0x76,0x8D,0xFF, 0xFF,0xFF,0xFE,0x1E,0xEE,0xF6,0xF8,0xFF, 0xFF,0x89,0x76,0x76,0x76,0x76,0x89,0xFF, 0xFF,0xB1,0x6E,0x6E,0x6E,0x6E,0x81,0xFF}; //9 unsigned char mang[50]; sbit SDA=P1^0; sbit SCL=P1^1; sbit chedo=P1^2; // chon che hien ngay/gio sbit Menu=P1^3; // Khai bao chan nut nhan "menu" sbit tang=P1^4; // Khai bao chan nut nhan "tang" Page | void Display_day() // Hien { tach(); xuly2(); for(k=0;k[...]... | 14 { mang[i]=hang[h1*8+i]; } for(i=0;i