Bài giảng: Thực hành Vi xử lý và Vi điều khiển

133 51 0
Bài giảng: Thực hành Vi xử lý và Vi điều khiể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

Môn học này cung cấp cho sinh viên kiến thức về kiến trúc vi xử lý, kiến trúc vi điều khiển, hệ thống bộ nhớ, kỹ thuật giao tiếp vi xử lý, kỹ thuật truyền dữ liệu, lập trình hợp ngữ/C cho vi điều khiển. Sau khi học môn này, sinh viên có khả năng phân tích và thiết kế hệ thống dựa trên vi xử lý, phát triển các kỹ thuật giao tiếp vi xử lý cơ bản, phát triển các kỹ thuật truyền dữ liệu cơ bản và lập trình cho hệ thống vi điều khiển sử dụng hợp ngữ và ngôn ngữ C. Nội dung Chương 1–Giới thiệu hệ vi xử lý tổng quát 1. Giới thiệu sự phát triển của các hệ vi xử lý 2. Sơ đồ khối một hệ vi xử lý cơ bản 3. CPU 4. Bộ nhớ 5. Ngoại vi 6. Bus hệ thống 7. Giải mã địa chỉ 8. Định thì 9. Chương trình 10. Vi xử lý và vi điều khiển Chương 2–Kiến trúc CPU và tập lệnh 1. Sơ đồ khối CPU 8 bit cơ bản 2. Tổ chức các thanh ghi 3. Tổ chức bộ nhớ 4. Ghép nối bus hệ thống 5. Chu kỳ bus, chu kỳ máy 6. Tăng tốc độ CPU 7. Các phương pháp định vị địa chỉ 8. Tập lệnh 9. Khảo sát vi xử lý‎ Z80 Chương 3–Họ vi điều khiển 8051 1. Giới thiệu tóm tắt họ vi điều khiển 8051 2. Kiến trúc phần cứng 8051 3. Các phương pháp định địa chỉ 4. Tập lệnh 5. Bộ định thì 6. Cổng nối tiếp 7. Ngắt 8. Lập trình hợp ngữ 8051 Chương 4–Họ vi xử lý‎ 80x86 1. Giới thiệu 2. Kiến trúc phần cứng 3. Các phương pháp định địa chỉ 4. Tập lệnh 5. Ngắt 6. DMA 7. Chế độ làm việc min/max 8. Lập trình hợp ngữ Chương 5–Thiết kế hệ vi xử lý‎ 1. Giải mã địa chỉ 2. Giao tiếp bộ nhớ 3. Giao tiếp ngoại vi song song 4. Giao tiếp ngoại vi nối tiếp 5. Giao tiếp bàn phím 6. Giao tiếp bộ hiển thị LED 7 đoạn và LCD 7. Giao tiếp ADC và DAC 8. Điều khiển động cơ DC, động cơ bước 9. Giao tiếp bus I2C 10. Thiết kế một kit vi xử lý tiêu biểu Chương 6–Giới thiệu họ vi xử lý‎ 68000 1. Giới thiệu 2. Kiến trúc phần cứng 3. Các phương pháp định địa chỉ 4. Tập lệnh Chương 7–Đa xử lý‎ 1. Giới thiệu về hệ đa xử lý 2. Đa xử lý ghép song song 3. Đa xử lý ghép DPRAM 4. Đa xử lý ghép nối tiếp 5. Các vấn đề cần lưu ý trong thiết kế đa xử lý Nội dung chính: - Nguyên tắc cơ bản của hệ thống vi xử lý: CPU (kiến trúc, phân loại), bộ nhớ (ROM và RAM, sắp thứ tự byte trong bộ nhớ, thiết bị ngoại vi, bus hệ thống, giải mã địa chỉ, qui ước trong giản đồ định thì. - Nghiên cứu của một vi điều khiển 8 bit điển hình (Intel MCS 51): kiến trúc Harvard, giao tiếp bộ nhớ, kết nối hệ thống bus, chu kỳ bus và chu kỳ máy, các cách định địa chỉ, tập lệnh, lập trình hợp ngữ, ngắt và thiết bị ngoại vi có sẵn (định thì /bô đếm, cổng nối tiếp, các cổng I/O). - Phân tích và thiết kế hệ thống số dựa trên 8051: giải mã địa chỉ bộ nhớ và I/O, I/O song song 1/9(phím nhấn/bàn phím, ADC/DAC, PIO, LED đơn, LED 7 đoạn, màn hình LCD), I/O nối tiếp (RS232, LCD loại nối tiếp ), ngắt ngoài, điều khiển động cơ DC, và thí dụ thiết kế. - Lập trình C cho vi điều khiển 8051: trình biên dịch Keil C, các loại dữ liệu, phát biểu, các cấu trúc lập trình, lập trình I/O song song, lập trình mạch định thì /bộ đếm, lập trình cổng nối tiếp và các thí dụ ứng dụng.

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG KHOA CÔNG NGHỆ ĐIỆN TỬ VÀ TRUYỀN THÔNG BÀI GIẢNG MÔN: THỰC HÀNH VI XỬ LÝ VÀ VI ĐIỀU KHIỂN Thái Nguyên, tháng năm 2012 CuuDuongThanCong.com https://fb.com/tailieudientucntt MỤC LỤC PHẦN I MƠ TẢ HỆ THỐNG Giới thiệu Đặc tính I Tổng quan hệ thống II Module LMD01 III Module LMD02 IV Module LMD03 V Module LMD04 VI Module LMD05 VII Module LMD06 VIII Module LMD07 IX Module LMD09 – Module điều khiển PHẦN II THỰC HÀNH BÀI I: KHẢO SÁT MA TRẬN LED 8x8 MỘT MÀU VÀ QUÉT HÀNG BÀI 2: KHẢO SÁT MA TRẬN LED 8x8 MỘT MÀU VÀ QUÉT CỘT BÀI 3: KHẢO SÁT MA TRẬN LED 8x8 MÀU XANH ĐỎ VÀ PHƯƠNG PHÁP QUÉT HÀNG BÀI 4: KHẢO SÁT MA TRẬN LED 8x8 MÀU XANH ĐỎ VÀ PHƯƠNG PHÁP QUÉT CỘT BÀI 5: KHẢO SÁT MODULE HIỂN THỊ 16x32 ĐIỂM MỘT MÀU BÀI 6: KHẢO SÁT MODULE HIỂN THỊ 16x32 ĐIỂM HAI MÀU BÀI 7: KHẢO SÁT HOẶT ĐỘNG CỦA BẢNG TIN ĐIỆN TỬ CuuDuongThanCong.com https://fb.com/tailieudientucntt Đề cương kế hoạch thực hành với KIT LMD (màn hình ma trận Led) Sinh viên giáo viên hướng dẫn thực hành dựa đề cương để chuẩn bị thực hành theo Tài liệu mô tả hướng dẫn thực hành LMD Sinh viên cần chuẩn bị thực hành cách đọc trước phần mô tả hướng dẫn thực hành cho module này, tự tìm hiểu trước vi mạch Buổi 1: Làm quen với hình ma trận Led khảo sát Module LMD01, LMD02, LMD09 Sinh viên sẽ:  Tìm hiểu hình ma trận led đơn sắc sở 8x8 - Cấu tạo ma trận Led (đơn sắc) - Biểu diễn kí tự ma trận sở 8x8 - Cách hiển thị điểm sáng ma trận led - Cách hiển thị kí tự/ hình ảnh ma trận led (2 phương pháp: quét hàng/cột) Yêu cầu: sinh viên phải hiểu cách hiển thị kí tự ma trận sở 8x8 tạo ta liệu hiển thị cho kí tự  Tìm hiểu thành phần cấu tạo lên mạch điện ma trận led cụ thể (Khảo sát trực tiếp Module LMD01, LMD 02 LMD09) - Các vi mạch dùng để đệm/chốt liệu, vi mạch dùng để quét (thanh ghi dịch),… - Các vi điều khiển dùng để điều khiển hiển thị ma trận led, vi điều kiển dùng Module khảo sát LMD09 - Nguyên lý hoạt động hiển thị mạch LMD01 LMD02  Kiểm tra linh kiện xem module hoạt động hiển thị với chương trình lập trình sẵn Yêu cầu: sinh viên nắm cấu tạo mạch, nguyên lý hoạt động hiển thị Module Buổi 2: Khảo sát Module LMD03, LMD04 Tương tự khảo sát với module LMD01 LMD02, khác ma trận led hai module ma trận led hai mầu xanh-đỏ CuuDuongThanCong.com https://fb.com/tailieudientucntt Buổi 3: Khảo sát module LMD05, LMD06, LMD07 - Nắm cách phối ghép ma trận đơn sắc (đa sắc) sở 8x8 thành hình ma trận led đơn sắc (đa sắc) lớn hơn, phương pháp để hiển thị kí tự chuỗi kí tự, hiệu ứng dịch chữ - Khảo sát bảng quang báo thực tế chạy thử chương trình điều khiển máy tính.(LMD07) Đưa kết luận cách thức hoạt động bảng quang báo chương trình điều khiển Giáo viên hướng dẫn đưa số câu hỏi, yêu cầu cho sinh viên sau buổi thực hành Có tập nâng cao cho sinh viên giỏi có nhu cầu tìm hiểu sâu hơn./ CuuDuongThanCong.com https://fb.com/tailieudientucntt PHẦN I: MÔ TẢ HỆ THỐNG Giới thiệu LMD TS hệ thống mơ hình đào tạo phục vụ khảo sát, nghiên cứu, thực hành thiết kế bảng thông tin điện tử sử dụng công nghệ ma trận đèn LED (Light Emitting Diode – Đi ôt phát quang) Hệ thống giúp sinh viên tiếp cận với công nghệ hiển thị bảng ma trận đèn LED từ đến nâng cao, từ sinh viên hiểu, thiết kế hệ thống bảng Hệ thống thiết kế theo tư logic kỹ thuật liền mạch từ đầu trí cuối dựa theo cách nhìn sinh viên, cộng với xếp, phân chia theo vấn đề chuyên môn chi tiết rõ ràng Đặc tính  Làm quen với linh kiện chức  Thiết kế dàn trải  Các điểm kiểm tra (test point)  Sơ đồ nguyên lí rõ ràng  Phân cấp từ đến nâng cao  Phân chia thành nhiều module  Khảo sát phương pháp quét hàng, quét cột  Hiển thị màu đỏ tổ hợp màu xanh đỏ Sau mô tả chi tiết sản phẩm Mục I giới thiệu tổng quan toàn hệ thống, liệt kê thành phần chọn hệ thống , mục từ II đếm IX giới mô tả chi tiết module CuuDuongThanCong.com https://fb.com/tailieudientucntt I Tổng quan hệ thống Hệ thống chia thành module theo thực hành, khung giá kim loại để đỡ module Khi sử dụng module cài module lên ray khung giá kim loại Bảng danh sách module chức chúng Tên Mô tả LMD01 Ma trận LED đơn sắc 8x8, quét theo hàng, khối quét hàng, đệm hàng, chốt hàng, đệm cathode, đệm anode, chốt cấp nguồn kiểm thử tín hiệu LMD02 Ma trận LED đơn sắc 8x8, quét theo cột, khối quét cột, đệm cột, chốt cột, đệm cathode, đệm anode, đầu nối tín hiệu điều điều khiển liệu, chốt cấp nguồn kiểm thử tín hiệu LMD03 Ma trận LED hai màu xanh/đỏ 8x8, quét theo hàng, khối quét hàng, đệm chốt hàng, đệm anode, đầu nối tín hiệu điều điều khiển liệu, chốt cấp nguồn kiểm thử tín hiệu LMD04 Ma trận LED hai màu xanh/đỏ 8x8, quét theo cột, khối quét cột, đệm chốt cột, đệm cathode, đầu nối tín hiệu điều điều khiển liệu, chốt cấp nguồn kiểm thử tín hiệu LMD05 Module hiển thị màu đỏ, 16x32 pixel, qt theo hàng, khối kích dịng, đệm chốt liệu, đầu vào/đầu tín hiệu điều khiển liệu, chốt cấp nguồn kiểm thử tín hiệu LMD06 Module hiển thị hai màu xanh/đỏ 16x32 pixel, quét theo hàng, khối kích dịng, đệm chốt liệu, đầu vào/đầu tín hiệu điều khiển liệu, chốt cấp nguồn kiểm thử tín hiệu LMD07 Bảng tin điện tử 16x96 pixel, outdoor, đơn sắc, giao tiếp RS232, nguồn 220VAC LMD09 Board điều khiển chung, MCU AT89S52, 16Kbyte Ram, RS232, LMD port, KeyBoard, nạp ISP cấp nguồn cho thí nghiệm Khung Giá đỡ kim loại CuuDuongThanCong.com https://fb.com/tailieudientucntt II Module LMD01 LMD01 ma trận LED đơn sắc 8x8, quét theo hàng, khối quét hàng, đệm hàng, chốt hàng, đệm cathode, đệm anode, chốt cấp nguồn kiểm thử tín hiệu Ảnh LMD01 – Quét theo hàng LMD01 chứa loại, linh kiện bản, lí thuyết để điều khiển bảng LED LMD01 đưa ma trận led 8x8 điểm, đơn sắc (đỏ) linh kiện để điều khiển LMD theo phương pháp – Quét theo hàng LMD01 gồm thành phần sau:  Ma trận LED 8x8 pixel, đơn sắc (đỏ)  Khối đệm Kathode – ULN2803  Khối đệm Anode – 74LS574  Khối đệm liệu hàng – 74LS164  Khối chốt liệu hàng – 74LS573  Khối quét hàng – 74LS164 Module có chốt cắm nguồn 5V, jack nối tín hiệu điều khiển để kết nôi với module điều khiển chung Ảnh module LMD01 CuuDuongThanCong.com https://fb.com/tailieudientucntt Các thành phần bố trí dàn trải, có sơ đồ ngun lí rõ ràng, đường tín hiệu có chốt để đo thử Sơ đồ nguyên lí Ảnh Sơ đồ nguyên lí LMD01 CuuDuongThanCong.com https://fb.com/tailieudientucntt Mach in Ảnh Bảng mạch in LMD01 CuuDuongThanCong.com https://fb.com/tailieudientucntt III Module LMD02 Ảnh LMD02 – Quét theo cột LMD02 đưa ma trận LED 8x8 điểm, đơn sắc (đỏ) linh kiện để điều khiển LMD theo phương pháp Quét theo cột Các thành phần bố trí dàn trải, có sơ đồ ngun lí rõ ràng, đường tín hiệu có chốt để đo thử LMD02 gồm thành phần sau:  Ma trận LED 8x8 pixel, đơn sắc (đỏ)  Khối đệm Kathode – ULN2803  Khối đệm Anode – 74LS574  Khối đệm liệu cột – 74LS164  Khối chốt liệu cột – 74LS573  Khối quét cột – 74LS164 Module có chốt cắm nguồn 5V để, jack nối tín hiệu điều khiển để kết nôi với module điều khiển chung Ảnh module LMD02 Sơ đồ nguyên lí CuuDuongThanCong.com https://fb.com/tailieudientucntt break; }//end switch(do_what) }//end while(1) }//end main() /**************************************** chuong trinh dieu khien led de kiem tra cong Bo mon DTVT Khoa CNTT Dai hoc Thai Nguyen ***************************************/ #include #device *=16 #device adc=8 #FUSES NOWDT, HS, PUT, NOPROTECT, NODEBUG, BROWNOUT, NOLVP, NOCPD, NOWRT #use delay(clock=8000000) #include #use rs232(baud=9600, xmit=PIN_C7, rcv=PIN_C6, stream=MYPC) // rs232 setting #include void main() { float temperature; setup_psp(PSP_DISABLED); // huy bo PSP setup_spi(FALSE); //THIET PAP SPI setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); //Thiet lap bo dinh thoi ben setup_timer_1(T1_DISABLED); //cam setup_timer_2(T2_DISABLED,0,1); //cam setup_comparator(NC_NC_NC_NC); setup_vref(VREF_LOW|-2); printf("\n\r Bo mon Dien Tu Vien Thong Khoa CNTT"); printf( "\n\rXin chao, toi la PIC.TS, Toi dang nhiet do\n\r",); delay_ms(100); while (TRUE) { temperature = ds1820_read(); printf( "Nhiet do: %3.1f ", temperature); printf( "oC, "); if(temperature >= 30) printf("Nong!\n\r "); 118 CuuDuongThanCong.com https://fb.com/tailieudientucntt else if( temperature >= 20 && temperature < 30) printf("Nhiet vua\n\r!"); else printf("Lanh!\n\r "); delay_ms(20); } } //***************************************************** Bo mon DTVT Khoa CNTT Thai Nguyen File name: //============================================== //TEN DE TAI :HE THONG DAO TAO VI DIEU KHIEN PIC //Ngon ngu :C cho PIC, dung trinh bien dich CCS compiler //Lap trinh vien :Bo mon dien tu Vien Thong //Chuong trinh :CHUONG TRINH DOC PHIM //Su dung MCU :16f877a cua Microchip.thach anh Mhz //Ngay bat dau :Ngay xx thang' xx nam 2008 //Ngay hoan :Ngay xx thang' xx nam 2008 //file name: button.c //=============================================== #include #fuses HS,NOWDT,NOPROTECT,NOLVP #use delay (clock=8000000) // define crystal = 8MHz #use Fast_IO(D) byte command; //ma lenh // byte const DIGITS[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void keyscan(); void display(); //***************************************************** void main() { Set_tris_D(1); command = 0; output_a(0x00);//bat chan A5 while(true) { keyscan(); 119 CuuDuongThanCong.com https://fb.com/tailieudientucntt display(); } }//end of main program //**************************************************** void keyscan() { output_d(0xff); if(input(PIN_D0) == 0) { delay_ms(150); if (input(PIN_D0)==0) command = 1; display() ; } if(input(PIN_D1) == 0) { delay_ms(150); if (input(PIN_D1)==0) command = 2; display() ; } if(input(PIN_D2) == 0) { delay_ms(150); if (input(PIN_D2)==0) command = 3; display() ; } if(input(PIN_D3) == 0) { delay_ms(150); if (input(PIN_D3)==0) command = 4; display() ; } if(input(PIN_D4) == 0) { delay_ms(150); if (input(PIN_D4)==0) command = 5; display() ; } if(input(PIN_D5) == 0) { delay_ms(150); 120 CuuDuongThanCong.com https://fb.com/tailieudientucntt if (input(PIN_D5)==0) command = 6; display() ; } if(input(PIN_D6) == 0) { delay_ms(150); if (input(PIN_D6)==0) command = 7; display() ; } if(input(PIN_D7) == 0) { delay_ms(150); if (input(PIN_D7)==0) command = 8; display() ; } output_d(0xff); } //****************************************************** void display() { output_b(DIGITS[command] ^ 0xff); } //***************************************************** //END PROGRAM //======================================================== ===================== //TEN DE TAI :RELAY //Ngon ngu:ANSI C cho PIC, dung trinh bien dich Hi-Tech PICC compiler //Lap trinh vien : Bo mon DTVT Khoa CNTT //Chuong trinh :HIEN THI SO BAT KY TREN LED_7T //Su dung MCU : 16f877a cua Microchip.thach anh 20 Mhz //Ngay bat dau :Ngay xx thang' xx nam 20xx //Ngay hoan : Ngay xx thang' xx nam 20xx //Mo ta hardware : //khi dich chon dung loai PIC:Configure >Select Device >chon loai PIC //============================================ #include CONFIG(UNPROTECT & WDTEN & HS & PWRTEN & BOREN & LVPDIS & DUNPROT & DEBUGDIS); 121 CuuDuongThanCong.com https://fb.com/tailieudientucntt //************************************************** void init(void); void Delay(void); //===========Chuong trinh ========================= void main() //chuong trinh trinh { init(); while(1) { if (RB1 == 0) { Delay(); if (RB1 == 0)RB0 ^= 1;} if (RB3 == 0) { Delay(); if (RB3 == 0)RB2 ^= 1;} if (RB5 == 0) { Delay(); if (RB5 == 0)RB4 ^= 1;} if (RB7 == 0) { Delay(); if (RB7 == 0)RB6 ^= 1;} CLRWDT(); } CLRWDT(); } //==============THE END ========================= void init(void) { // -Dinh nghi cacs cong -OPTION = 0x01000000; TRISB = 0b10101010; Delay(); PORTB = 0b10101010; } //=============================================== void Delay() { 122 CuuDuongThanCong.com https://fb.com/tailieudientucntt unsigned char i; for (i =0;iSelect Device >chon loai PIC //============================================ #include CONFIG(UNPROTECT & WDTEN & HS & PWRTEN & BOREN & LVPDIS & DUNPROT & DEBUGDIS); //===============Mang phông so; ép vào mauc thu hai=================== #define KEYPORT PORTC #define NOKEY 16 bit keyfound = 0; const unsigned char KEY_IO[16] = {0xEE, 0xDE, 0xBE, 0x7E, //C4 C5 C6 C7 0xED, 0xDD, 0xBD, 0x7D,//C3 0xEB, 0xDB, 0xBB, 0x7B,//C2 0xE7, 0xD7, 0xB7, 0x77}; const unsigned char KEY_MAP[16] = {12,11, 0,10, 13, 9, 8, 7, 14, 6, 5, 4, 15, 3, 2, 1}; // a b 123 CuuDuongThanCong.com https://fb.com/tailieudientucntt c d e f const unsigned char DIGITS[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x 79,0x71}; unsigned char maphim; //===========Cac dinh nghia ========================= void init(void); //su bat dau void keyscan(void); void display(void); unsigned char kboard_idkey(void); void delay(void); //==================Chuong trinh chinh'=============== void main() //chuong trinh trinh { init(); //bat dau chuong trinh PORTA = 0xff; maphim = 0; PORTB = (DIGITS[maphim] ^ 0xff); while(1) //lenh While(bt).Neu bt=1 luon dung thi lap lai thoat khoi //lenh While(bt).Neu bt=0 thi sai thi thoat khoi vong lap { keyscan(); display(); CLRWDT(); } CLRWDT(); } //================THE END MAIN=================== void init(void) { // -Dinh nghi cacs cong -TRISD = 0b00000000; //cong X la PORTD = 0b11111111; //CONG RA MUC HAY TRISE = 0b00000011; TRISB = 0b00000000; PORTB = 0b00000000; // Dinh nghia cong A -ADCON1 = 0b00001111; so TRISA = 0b11000000; TRISC = 0b11110000; //4bít dau ko làm gì; 4bít sau de cong //C?ng A có A0-5 124 CuuDuongThanCong.com ko https://fb.com/tailieudientucntt PORTC = 0b11110000; } // chia lay gia tri chung cho moi cai //=================================== void keyscan() { maphim = KEY_MAP[(kboard_idkey())]; } void delay() { NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); } void display() { if (keyfound) { PORTB = (DIGITS[maphim] ^ 0xff); PORTA = 0x00; } } //================================= unsigned char kboard_idkey() { unsigned char key = 0xFF; keyfound = 0; { key++; KEYPORT &= 0xF0; // clear lower nibble KEYPORT |= KEY_IO[key] & 0x0F; // output lower nibble NOP(); NOP(); keyfound = ((KEYPORT & 0xF0) == (KEY_IO[key] & 0xF0)); } while((key < NOKEY) && (!keyfound)); 125 CuuDuongThanCong.com https://fb.com/tailieudientucntt return(key); } //=======================THE END=============================== /*************************************************************** * Real time Clock DS1307 * * Dong ho so su dung DS1307 hien thi tren LED 7-segment hh.mm.ss * * Compiler Sofware: Compiler CCS Ver 4.018 * * Program design: Bo Mon DTVT - Khoa CNTT Thai Nguyen * * Harware: * * - Pull up PORTD, Pull-down Switches, connect PORTD to Switches * * - PORTA and PORTB to control leb * * - Switches: F0 - Mode, F1 - set time, F2 - clean status * * - DIP Swich SW2 all ON (Enable 7-segment and RTC DS1307) * File name: DS1307.c ****************************************************************/ #include //file header nguoi dung dinh nghia #include #include #fuses HS,NOWDT,NOPROTECT,NOLVP #use delay(clock=8000000) byte sec,min,hour; //Su dung led loai catot // // byte const MAP[10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; byte DIS1,DIS2,DIS3,DIS4,DIS5,DIS6; byte key,mode; int1 ampm,blink,blink_sec,blink_min,blink_hour; int1 on_off; int16 count; #bit SW1 = 0x8.0 // D0 - mode #bit SW2 = 0x8.1 // D1 - set_time #bit SW3 = 0x8.2 // D2 - Clear_status //*************************************************************** *** //Khai bao chuong trinh 126 CuuDuongThanCong.com https://fb.com/tailieudientucntt //*************************************************************** *** void init(void); void set_blink(void); void change_time(void); void update_1307(void); void keyscan(void); void set_sec(void); void set_min(void); void set_hour(void); void clear_status(void); void read_time(void); void update_time(void); void display(void); //*************************************************************** *** //Chuong trinh chinh //*************************************************************** *** void main() { byte u; Delay_ms(5); init(); u=read_ds1307(0); sec=u & 0x7F;// enable RTC write_ds1307(0,sec);// set second to 00 and enable clock(bit7=0) //Xoa tat ca cac co khien key=5;mode=0;blink=0; blink_sec=0;blink_min=0;blink_hour=0; count=15;on_off=1; ampm = bit_test(hour,5);// test AM_PM if(ampm==0) {RD4 = 0;RD5=1;} //LED AM if(ampm==1) {RD4 = 1;RD5=0;} //LED PM while(true) { read_time(); display(); keyscan(); } }//end of main program //*************************************************************** *** 127 CuuDuongThanCong.com https://fb.com/tailieudientucntt void set_blink() { switch (mode) { case 1: blink_sec=1; break; case 2: {blink_min=1;blink_sec=0;} break; case 3: {blink_hour=1;blink_min=0;} break; case 4: { blink=0;mode = 0;blink_sec=0; blink_min=0;blink_hour=0; } break; } } //*************************************************************** *** void change_time() { if(mode == 1) {blink_sec=1;set_sec();} if(mode == 2) {blink_min=1;set_min();} if(mode == 3) {blink_hour=1;set_hour();} if(mode == 4) { blink=0;mode = 0; blink_sec=0; blink_min=0; blink_hour=0; } } //*************************************************************** *** void update_1307() { write_DS1307(0,sec); write_DS1307(1,min); bit_set(hour,6); if (ampm == 0) {bit_clear(hour,5); write_DS1307(2,hour);} // AM if (ampm == 1) {bit_set (hour,5); write_DS1307(2,hour);} // PM } //*************************************************************** *** void keyscan() { 128 CuuDuongThanCong.com https://fb.com/tailieudientucntt RD0=1;RD1=1;RD2=1;RD3=1; if(SW1 != 1) { key=0;SW1=1;delay_ms(150);} if(SW2 != 1) { key=1;SW2=1;delay_ms(150);} if(SW3 != 1) { key=2;SW3=1;delay_ms(150);} if(key != 5) { switch (key) { case 0: {mode++;key = 5;blink=1;set_blink();} break; case 1: {change_time();key = 5;update_1307();} break; case 2: {clear_status();key = 5;} break; } } } //*************************************************************** *** void set_sec() { sec=read_ds1307(0); if (sec>=0x30) {sec=0; min++; write_ds1307(1,min);} else sec=0; write_ds1307(0,sec); } //*************************************************************** *** void set_min() { byte j; min=read_ds1307(1); min++; j=min & 0x0F; if (j>=0x0A) min=min+0x06; if (min>=0x60) min=0; write_ds1307(1,min); } //*************************************************************** *** void set_hour() { hour= hour & 0x1F; hour++; 129 CuuDuongThanCong.com https://fb.com/tailieudientucntt if(hour== 0x0a) hour = hour+0x06; if(hour == 0x13) { hour = 0x00; if (ampm == 0) ampm = 1; else ampm = 0; } } //*************************************************************** *** void clear_status() { mode=4; set_blink(); } //*************************************************************** *** void read_time() { sec = read_DS1307(0); = read_DS1307(1); hour = read_DS1307(2); update_time(); } //*************************************************************** *** void update_time() { ampm = bit_test(hour,5); //test AM PM if(ampm == 0) {RD4 = 0;RD5=1;} //AM if(ampm == 1) {RD4 = 1;RD5=0;} // PM DIS1= sec & 0x0F; DIS2=(sec & 0xF0)>>4; //convert to BCD SEC DIS3= & 0x0F; DIS4=(min & 0xF0)>>4; //convert to BCD MIN DIS5= hour & 0x0F; DIS6=(hour & 0x10)>>4; //convert to BCD HOUR } //*************************************************************** *** void display() { TRISB=0x00;TRISA=0x00; if(blink==0) goto norm; if(on_off==0) goto led_blink; norm: // 130 CuuDuongThanCong.com https://fb.com/tailieudientucntt // sec - - hour PortB=MAP[DIS1]; RA5=0;//DIS1 delay_ms(1); RA5=1; PortB=MAP[DIS2]; RA4=0; //DIS2 delay_ms(1); RA4=1; PortB=MAP[DIS3];output_low(PIN_B7);RA3=0;//DIS3 delay_ms(1); RA3=1; PortB=MAP[DIS4]; RA2=0;//DIS4 delay_ms(1); RA2=1; PortB=MAP[DIS5];output_low(PIN_B7); RA1=0;//DIS5 delay_ms(1); RA1=1; PortB=MAP[DIS6];if (portb==0xC0) RA0=1; else RA0=0;//DIS6 delay_ms(1); RA0=1;//*/ if(count!=0) goto exit; else { count=15; on_off=0; } goto exit; led_blink: PortB=MAP[DIS1]; if (blink_sec==1) RA5=1;//DIS1 else RA5=0; delay_ms(3); RA5=1; PortB=MAP[DIS2]; if (blink_sec==1) RA4=1;//DIS2 else RA4=0; delay_ms(3); RA4=1; PortB=MAP[DIS3];output_low(PIN_B7); if(blink_min==1) RA3=1;//DIS3 else RA3=0;//DIS3 delay_ms(3); RA3=1; PortB=MAP[DIS4]; if(blink_min==1) RA2=1;//DIS4 else RA2=0;//DIS4 delay_ms(3); RA2=1; PortB=MAP[DIS5];output_low(PIN_B7); if(blink_hour==1) RA1=1;//DIS5 else RA1=0;//DIS5 delay_ms(3); RA1=1; 131 CuuDuongThanCong.com https://fb.com/tailieudientucntt PortB=MAP[DIS6]; if(blink_hour==1) RA0=1;//DIS6 else {if (portb==0xC0) RA0=1; else RA0=0;}//DIS6 delay_ms(3); RA0=1;//*/ if(count==0) {count=15;on_off=1;} // -exit: count ; } //************************************************* void init() { Trisd = 0x0F; Trisb = 0x00;//output Trisa = 0x00; RD4=1;RD5=1; init_ds1307(); } //************************************************* //END PROGRAM 132 CuuDuongThanCong.com https://fb.com/tailieudientucntt ... chương trinh điều khiển Các thành phần có module: - MCU PIC AT89S52 - 16K RAM - Giao diện RS232 - Bàn phím - Giao diện ISP - Cổng điều khiển LMD - Sơ đồ nguyên lí 24 CuuDuongThanCong.com https://fb.com/tailieudientucntt... DEMG, DEMR - Giữ nguyên linh kiện phần - Kiểm tra đế khối QUETG, QUETR, ĐỆMCHỐT khơng có - IC 2803 gắn lên đế khối DEMG, DEMR - Cấp nguồn 5V GND cho bảng - Dùng dây nguồn 5V chấm vào chốt A - Dùng... tốt Kiểm tra đệm cực dương - Giữ nguyên linh kiện phần - Kiểm tra đế khối QUETHANG khơng có gì, có bỏ - IC 74573(4) gắn lên đế khối DEMA - Cấp nguồn 5V GND cho bảng - Dùng dây nguồn 5V chấm vào

Ngày đăng: 24/08/2020, 09:32

Từ khóa liên quan

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

Tài liệu liên quan