Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 24 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
24
Dung lượng
627,37 KB
Nội dung
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP VIỆT HUNG KHOA ĐIỆN-ĐIỆN TỬ BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN Giáo viên hướng dẫn : Phùng Toàn Thắng Sinh viên thực : Vũ Văn Được MSV :1700347 Lớp : k41 tđh Hà Nội 2019 BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC Nội dung thực hành: - Bài thực hành số 1: Thực hành điều khiển led đơn - Bài thực hành số 2: Thực hành hiển thị led đoạn - Bài thực hành số 3: Thực hành hiển thị LCD 16x2 - Bài thực hành số 4: Thực hành nhận biết phím đơn - Bài thực hành số 5: Thực hành nhận biết phím matrix 4x3 - Bài thực hành số 6: Thực hành xử lý ngắt INT - Bài thực hành số 7: Thực hành giao tiếp ADC - Bài thực hành số 8: Thực hành giao tiếp với ROM - Bài thực hành số 9: Thực hành giao tiếp thời gian thực DS1307 - Bài thực hành số 10: Thực hành điều khiển động DC - Bài thực hành số 11: Thực hành điều động khiển bước VŨ VĂN ĐƯỢC BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC 01: Điều khiển hiển thị led đơn Bài tập ứng dụng: Thực hành điều khiển led đơn sáng dần từ phải sang trái Dữ liệu điều khiển led xuất cổng Port D Sơ đồ nguyên lý Hình 1.1 Sơ đồ nguyên lý khối led đơn -Giải thuật #use delay(clock=12000000) #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8) #use Fast_IO(D) // thu vien cau hinh chan VŨ VĂN ĐƯỢC BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC void main(void) { set_tris_D(0xF0); //while(true) for(;;) { output_D(0x0F); delay_ms(10); output_D(0xF0); delay_ms(20); //200us(chu ky may 1Mhz >200/1=?) } } • Kết • - Nhận xét Chương trình thực chạy theo nguyên lý đưa Thời gian sáng tắt đèn led phải đủ lớn để mắt nhận thấy thay đổi trạng thái led, thời gian lưu ảnh võng mạc VŨ VĂN ĐƯỢC BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC Bài thực hành số 02: Điều khiển hiển thị led Bài tập ứng dụng: Hiển thị từ 0-9 led Dữ liệu điều khiển qua cổng PORTD Tín hiệu điều khiển led điều khiển qua cổng PORTA 2.1 Sơ đồ nguyên lý Hình 2.1 Sơ đồ nguyên lý khối led Giải thuật #include #device adc=8 • #FUSES NOWDT //No Watch Dog Timer #FUSES WDT128 //Watch Dog Timer uses 1:128 Postscale #FUSES LP //Low power osc < 200 khz #FUSES NOPROTECT //Code not protected from reading #FUSES BROWNOUT //Reset when brownout detected //FUSES BORV25 //Brownout reset at 2.5V #FUSES NOPUT //No Power Up Timer #FUSES NOCPD //No EE protection #FUSES STVREN //Stack full/underflow will cause reset #FUSES NODEBUG //No Debug mode for ICD VŨ VĂN ĐƯỢC BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC #FUSES LVP //Low Voltage Programming on B3(PIC16) or B5(PIC18) #FUSES NOWRT //Program memory not write protected #FUSES NOWRTD //Data EEPROM not write protected #FUSES IESO //Internal External Switch Over mode enabled #FUSES FCMEN //Fail-safe clock monitor enabled #FUSES PBADEN //PORTB pins are configured as analog input channels on RESET #FUSES NOWRTC //configuration not registers write protected #FUSES NOWRTB //Boot block not write protected #FUSES NOEBTR //Memory not protected from table reads #FUSES NOEBTRB //Boot block not protected from table reads #FUSES NOCPB //No Boot Block code protection #FUSES LPT1OSC //Timer1 configured for low-power operation #FUSES MCLR //Master Clear pin enabled //#FUSES XINST //Extended set extension and Indexed Addressing mode enabled #use delay(clock=12000000) #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8) #use Fast_IO(D) // thu vien cau hinh chan void main(void) { set_tris_D(0x00); set_tris_A(0x00); set_tris_B(0x00); set_tris_c(0x00); //while(true) while(true) { //donvi output_D(0x99); output_low(PIN_A0); output_high(PIN_A1); output_high(PIN_A2); VŨ VĂN ĐƯỢC BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC output_high(PIN_A3); delay_ms(200); //nghin output_D(0xa4); output_high(PIN_A0); output_low(PIN_A1); output_high(PIN_A2); output_high(PIN_A3); delay_ms(200); //tram output_D(0xb0); output_high(PIN_A0); output_high(PIN_A1); output_low(PIN_A2); output_high(PIN_A3); delay_ms(200); //chuc output_D(0x90); output_high(PIN_A0); output_high(PIN_A1); output_high(PIN_A2); output_low(PIN_A3); delay_ms(200); //output_bit(PIN_A0,0); } } • Kết VŨ VĂN ĐƯỢC BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC • Nhận xét - Chương trình thực chạy theo nguyên lý đưa VŨ VĂN ĐƯỢC BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC Bài thực hành số 03: Điều khiển hiển thị LCD 16x02 Bài tập ứng dụng: Thực hành hiển thị LCD16x2 chữ: “KIT PIC18F4520” ; “CHUC THANH CONG” Tín hiệu điều khiển liệu LCD xuất cổng PORTD 3.1 Sơ đồ nguyên lý VŨ VĂN ĐƯỢC BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC VŨ VĂN ĐƯỢC 10 BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC Hình 3.1 Sơ đồ nguyên lý khối LCD16x02 Giải thuật #include #include"my_lcd.h" #fuses NOWDT,NOLVP,XT #use delay(clock=4Mhz) #use Fast_IO(C) //=========== char dong1 []="Hello,World"; char dong2 []="Chuc cong"; //ham chinh // void main() { set_tris_C(0);// cac pin port C la cong LCD_Init (); LCD_Gotoxy(0,0); LCD_Puts(dong1); LCD_Gotoxy(0,1); LCD_Puts(dong2); while(true); } • • Kết VŨ VĂN ĐƯỢC 11 BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC • - Nhận xét Chương trình thực chạy theo nguyên lý đưa Điều chỉnh độ tương phản hình để nhìn rõ ký - tự hiển thị Gửi liệu hiển thị lên LCD phải biết ý địa hiển thị liệu tránh bị ghi đè Bài thực hành số 04: Nhận biết phím đơn Bài tập ứng dụng: Điều khiển hiển thị thông báo trạng thái nút lên LCD nút nhấn mô đun tác động Port D kết nối với LCD để hiển thị PortB kết nối với nút nhấn 4.1 Sơ đồ nguyên lý VŨ VĂN ĐƯỢC 12 BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC Hình 4.1 Sơ đồ nguyên lý khối nút nhấn • Giải thuật #include #device adc=8 #include "my_lcd.h" // khoi tao phan cung #use fast_IO(D) #use fast_IO(B) #define button1 pin_B0 #define button2 pin_B1 #define button3 VŨ VĂN ĐƯỢC 13 BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC pin_B2 #define button4 pin_B3 char dong1[]="\fTEST BUTTON"; char dong2[]="\fphim vua bam: 1"; char dong3[]="\fphim vua bam: 2"; char dong4[]="\fphim vua bam: 3"; char dong5[]="\fphim vua bam: 4"; void main() { set_tris_D(0); set_tris_B(0); LCD_Init(); while(true) { if(!input(button1)) { LCD_Gotoxy(0,0); LCD_Puts(dong1); LCD_Gotoxy(0,1); LCD_Puts(dong2); VŨ VĂN ĐƯỢC 14 BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC delay_ms(5); } if(!input(button2)) { LCD_Gotoxy(0,0); LCD_Puts(dong1); LCD_Gotoxy(0,1); LCD_Puts(dong3); delay_ms(5); } if(!input(button3)) { LCD_Gotoxy(0,0); LCD_Puts(dong1); LCD_Gotoxy(0,1); LCD_Puts(dong4); delay_ms(5); } if(!input(button4)) { VŨ VĂN ĐƯỢC 15 BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC LCD_Gotoxy(0,0); LCD_Puts(dong1); LCD_Gotoxy(0,1); LCD_Puts(dong5); delay_ms(5); } } } • Kết VŨ VĂN ĐƯỢC 16 BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC • - Nhận xét Chương trình thực chạy theo nguyên lý đưa VŨ VĂN ĐƯỢC 17 BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC Bài thực hành số 05: Nhận biết ma trận phím 3x4 Bài tập ứng dụng: Thực hành nhận biết ma trận phím nhấn thị lên LCD Cổng PORTD điều khiển hiển thị LCD, cổng PORTB quét phím nhấn 5.1 Sơ đồ nguyên lý Hình 5.1 Sơ đồ ngun lý khối bàn phím 3x4 • Giải thuật /*================= thiet ke: phung thang thang7, 2015 file: vd2_io_4550.c ========== #use Fast_IO() set_tris_x( valu) cac ham vao ccs Chuong trinh bat tat led tai port B =======================*/ #include #device adc=8 VŨ VĂN ĐƯỢC 18 BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC #include"my_lcd.h" #FUSES NOWDT #FUSES WDT128 Postscale #FUSES LP #FUSES NOPROTECT reading #FUSES BROWNOUT detected //#FUSES BORV25 #FUSES NOPUT #FUSES NOCPD #FUSES STVREN reset #FUSES NODEBUG #FUSES LVP B3(PIC16) or B5(PIC18) #FUSES NOWRT protected #FUSES NOWRTD protected #FUSES IESO mode enabled #FUSES FCMEN #FUSES PBADEN //No Watch Dog Timer //Watch Dog Timer uses 1:128 //Low power osc < 200 khz //Code not protected from //Reset when brownout //Brownout reset at 2.5V //No Power Up Timer //No EE protection //Stack full/underflow will cause //No Debug mode for ICD //Low Voltage Programming on //Program memory not write //Data EEPROM not write //Internal External Switch Over //Fail-safe clock monitor enabled //PORTB pins are configured as analog input channels on RESET #FUSES NOWRTC //configuration not registers write protected #FUSES NOWRTB #FUSES NOEBTR //Boot block not write protected //Memory not protected from table reads #FUSES NOEBTRB //Boot block not protected from table reads #FUSES NOCPB #FUSES LPT1OSC VŨ VĂN ĐƯỢC //No Boot Block code protection //Timer1 configured for low19 BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC power operation #FUSES MCLR //#FUSES XINST //Master Clear pin enabled //Extended set extension and Indexed Addressing mode enabled #Define Button1 PIN_B0 #Define Button2 PIN_B1 #Define Button3 PIN_B2 #Define Button4 PIN_B3 #use delay(clock=4Mhz) #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8) //#use Fast_IO(D)//thu vien cau hinh chan #fuses NOWDT,NOLVP,XT #use Fast_IO(C) //============== //ham chinh // void main() { set_tris_B(0xff); set_tris_D(0); LCD_Init (); while(true) { LCD_Gotoxy (0,0); printf(LCD_Putchar("TEST KEY 4x3")); output_low(PIN_B6); { if(!input(button1)) { LCD_Gotoxy (0,1); printf(LCD_Putchar("TEST BAT DAU :1")); Delay_ms(10); } if(!input(button2)) { VŨ VĂN ĐƯỢC 20 BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC LCD_Gotoxy (0,1); printf(LCD_Putchar("CHAO VAN DUOC :1")); Delay_ms(10); } if(!input(button3)) { LCD_Gotoxy (0,1); printf(LCD_Putchar("RAT VUI DUOC GAP BAN :1")); } if(!input(button4)) { LCD_Gotoxy (0,1); printf(LCD_Putchar("TEST DA HET :1")); } output_high(PIN_B6); output_low(PIN_B5); if(!input(button1)) { LCD_Gotoxy (0,1); printf(LCD_Putchar("TEST BAT DAU :2")); } if(!input(button2)) { LCD_Gotoxy (0,1); printf(LCD_Putchar("CHAO VAN DUOC :2")); if(!input(button3)) { LCD_Gotoxy (0,1); printf(LCD_Putchar("BAN KHOE KHONG :2")); } if(!input(button4)) { LCD_Gotoxy (0,1); printf(LCD_Putchar("TEST DA HET :2")); VŨ VĂN ĐƯỢC 21 BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC } output_high(PIN_B5); output_low(PIN_B4); if(!input(button1)) { LCD_Gotoxy (0,1); printf(LCD_Putchar("TEST BAT DAU:3")); } if(!input(button2)) { LCD_Gotoxy (0,1); printf(LCD_Putchar("CHAO VAN DUOC :3")); } if(!input(button3)) { LCD_Gotoxy (0,1); printf(LCD_Putchar("BAN KHOE KHONG :3")); } if(!input(button4)) { LCD_Gotoxy (0,1); printf(LCD_Putchar("TEST DA HET :3")); output_high(PIN_B4); } } } } } • Kết VŨ VĂN ĐƯỢC 22 BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC • - Nhận xét Chương trình thực chạy theo nguyên lý đưa Cần thêm thuật tốn chống dội phím tác động nhiễu khí từ phím nhấn VŨ VĂN ĐƯỢC 23 BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC VŨ VĂN ĐƯỢC 24 ... PIC18F4520” ; “CHUC THANH CONG” Tín hiệu điều khiển liệu LCD xuất cổng PORTD 3.1 Sơ đồ nguyên lý VŨ VĂN ĐƯỢC BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC VŨ VĂN ĐƯỢC 10 BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC... //output_bit(PIN_A0,0); } } • Kết VŨ VĂN ĐƯỢC BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC • Nhận xét - Chương trình thực chạy theo nguyên lý đưa VŨ VĂN ĐƯỢC BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC Bài thực hành số... VŨ VĂN ĐƯỢC 15 BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC LCD_Gotoxy(0,0); LCD_Puts(dong1); LCD_Gotoxy(0,1); LCD_Puts(dong5); delay_ms(5); } } } • Kết VŨ VĂN ĐƯỢC 16 BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC