BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC: GIAO THÔNG VẬN TẢI KHOA:ĐIỆNĐIỆN TỬ Giảng viên hướng dẫn : Nguyễn Văn Tiềm Sinh viên thực hiện : nhóm 2 Lớp : tự động hóa và điều khiển ..........., tháng ... năm ....... CÁC THÀNH VIÊN TRONG NHÓM 1, Lê Sỹ Vấn (nhóm trưởng) MSV: 1421121 2,Hoàng Công Hà (nhóm phó) MSV:1402412 3,Nguyễn Viết Dũng MSV: 1420182 4,Nguyễn Văn Bính MSV:1400692 5,Phạm Hồng Quân MSV:1406415 6,Dương Ngọc Minh MSV: 1405225 7, Ninh Công Tuấn Anh MSV: 1400347 8, Bùi Quang Vinh MSV:1409318 9, Kiều Văn Minh MSV: 1405252 10, Phạm Tiến Đạt MSV: 1401895 11, Lê Khắc Ánh MSV: 1400484. 12, Đàm Trung Hiếu MSV: 1303426 13,Nguyễn Vắn Tuyến MSV: 1408849 14,Vũ Văn Doanh MSV: 1401229 15,Tô Thế Tài MSV: 1406879 MỤC LỤC I, giới thiệu sơ bộ về pic 16f877a…………………………………….3 1, sơ đồ nối chân pic 16f877a……………………………......…3 2, sơ đồ khối vi điều khiển ……………………………………..3 3, chức năng của các PORT…………………………………….4 II, Các bài tập báo cáo theo chủ đề…………………………………….6 Chủ đề 1 : …………led…………………………….6 Bài 1: Hướng đẫn mắc led và xuất tín hiệu……………………..6 1,kiểu anode …………………………………………………… 2,cathode chung………………………………………………… Bài 2: các hiệu ứng led………………………………………….8 1,xen kẽ, nửa sáng nửa tắt, sáng hết, tắt hết…………………… 2,sáng dồn, dịch trái, dịch phải, sáng dần, tắt dần …………….. Chủ đề 2:……………………………. đếm …………………………..16 1,sử dụng timer 0…………………………………………………………............. 2,sử dụng timer 1……………………………………………….. 3,đếm xung ngoài……………………………………………… Chủ đề 3: …………………giao tiếp keypad………………………….26 Chủ đề 4: …………………đo nhiệt độ……………………………….30 ¬1,dùng POTHG hiển thị LCD……………………………………………………………..... 2,Dùng LM335 hiển thị led 7 đoạn……………………………………….………………............ 3,Dùng LM35 hiển thị led 7 đoạn………………………………………………………….......... Chủ đề 5: …………………Matrix 8x8………………………………….42 Chủ đề 6: …………….động cơ………………………………………….47 1,dùng pwm ……………………………………………………… 2,tạo pwm với timer.......................................................................... 3,đo tốc độ động cơ dùng encoder.................................................... 4,động cơ bước…………………………………………………… Chủ đề 7: giao tiếp UART……………………………………………….56 SƠ ĐỒ NỐI CHÂN CỦA PIC16F877A SƠ ĐỒ KHỐI VI ĐIỀU KHIỂN PIC16F877A Chức năng các chân của PORTA 1. Chân RA0AN0 RA0: xuất nhập số bit thứ 0 của port A. AN0: ngõ vào tương tự của kênh thứ 0. 2. Chân RA1AN1 RA1: xuấtnhập số bit thứ 1 của port A. AN1: ngõ vào tương tự của kênh thứ 1. 3. Chân RA2AN2VREFCVREF RA2: xuấtnhập số bit thứ 2 của port A. AN2: ngõ vào tương tự của kênh thứ 2. VREF: ngõ vào điện áp chuẩn (thấp) của bộ ADC. CVREF: điện áp tham chiếu VREF ngõ vào bộ so sánh. 4. Chân RA3AN3VREF+ RA3: xuấtnhập số bit thứ 3 của port A. AN3: ngõ vào tương tự kênh thứ 3. VREF+: ngõ vào điện áp chuẩn (cao) của bộ AD. 5. Chân RA4TOCKIC1OUT RA4: xuấtnhập số – bit thứ 4 của port A. TOCKI: ngõ vào xung clock từ bên ngoài cho Timer0. C1OUT: ngõ ra bộ so sánh 1. 6. Chân RA5AN4 SS C2OUT RA5: xuấtnhập số – bit thứ 5 của port A. AN4: ngõ vào tương tự kênh thứ 4. SS : ngõ vào chọn lựa SPI tớ (Slave SPI device). C2OUT: ngõ ra bộ so sánh 2. Chức năng các chân của PORTB 1 Chân RB0INT RB0: xuấtnhập số – bit thứ 0 của port B. INT: ngõ vào nhận tín hiệu ngắt ngoài. 2. Chân RB1 RB1: xuấtnhập số – bit thứ 1 của port B. 3. Chân RB2 RB2: xuấtnhập số – bit thứ 2 của port B. 4. Chân RB3 RB3: xuấtnhập số – bit thứ 3 của port B. 5. Chân RB4 RB4: xuấtnhập số – bit thứ 4 của port B. 6. Chân RB5 RB5: xuấtnhập số – bit thứ 5 của port B. 7.Chân RB6 RB6: xuấtnhập số. 8. Chân RB7 RB7: xuấtnhập số. Chức năng các chân của PORTC 1. Chân RC0T1OSOT1CKI (15): có 3 chức năng: RC0: xuấtnhập số – bit thứ 0 của port C. T1OSO: ngõ ra của bộ dao động Timer1. T1CKI: ngõ vào xung clock từ bên ngoài Timer1. 2. Chân RC1T1OSICCP2 (16): có 3 chức năng: RC1: xuấtnhập số – bit thứ 1 của port C. T1OSI: ngõ vào của bộ dao động Timer1. CCP2: ngõ vào Capture2, ngõ ra compare2, ngõ ra PWM2. 3. Chân RC2 P1ACCP1 (17): có 3 chức năng: RC2: xuấtnhập số – bit thứ 2 của port C. P1A: ngõ ra PWM. CCP1: ngõ vào Capture1, ngõ ra compare1, ngõ ra PWM1 . 4. Chân RC3SCKSCL (18): có 3 chức năng: RC3: xuấtnhập số – bit thứ 3 của port C. SCK: ngõ vào xung clock nối tiếp đồng bộngõ ra của chế độ SPI. SCL: ngõ vào xung clock nối tiếp đồng bộngõ ra của chế độ I2C. 5. Chân RC4SDISDA (23): có 3 chức năng: RC4: xuấtnhập số – bit thứ 4 của port C. SDI: ngõ vào dữ liệu trong truyền dữ liệu kiểu SPI. SDA: xuấtnhập dữ liệu I2C. 6. Chân RC5SDO (24): có 2 chức năng: RC5: xuấtnhập số – bit thứ 5 của port C. SDO: ngõ xuất dữ liệu trong truyền dữ liệu kiểu SPI. 7. Chân RC6TXCK (25): có 3 chức năng: RC6: xuấtnhập số – bit thứ 6 của port C. TX: ngõ ra phát dữ liệu trong chế độ truyền bất đồng bộ USART. CK: ngõ ra cấp xung clock trong chế độ truyền đồng bộ USART. 8. Chân RC7RXDT RC7: xuấtnhập số – bit thứ 7 của port C. RX: ngõ vào nhận dữ liệu trong chế độ truyền bất đồng bộ EUSART. DT: ngõ phát và nhận dữ liệu ở chế độ truyền đồng bộ EUSART. Chức năng các chân của PORTD 1. Chân RD0 RD0: xuấtnhập số – bit thứ 0 của port D. Chân RD1 2.RD1: xuấtnhập số – bit thứ 1 của port D. 3. Chân RD2 RD2: xuấtnhập số – bit thứ 2 của port D. 4.Chân RD3 RD3: xuấtnhập số – bit thứ 3 của port D. 5. Chân RD4 RD4: xuấtnhập số – bit thứ 4 của port D. 6. Chân RD5 RD5: xuấtnhập số – bit thứ 5 của port D. ngõ ra PWM. 7. Chân RD6 RD6: xuấtnhập số – bit thứ 6 của port D. 8. Chân RD7 RD7: xuấtnhập số – bit thứ 7 của port D. Chức năng các chân của PORTE 1 Chân RE0AN5 (8): có 2 chức năng: RE0: xuấtnhập số. AN5: ngõ vào tương tự 5. 2.Chân RE1AN6 (9): có 2 chức năng: RE1: xuấtnhập số. AN6: ngõ vào tương tự kênh thứ 6. 3. Chân RE2AN7 (10): có 2 chức năng: RE2: xuấtnhập số. AN7: ngõ vào tương tự kênh thứ 7. BÀI 1: Hướng đẫn mắc led theo 2 kiểu anode hoặc cathode chung: 1, kiểu anode chung: Nếu nối led theo kiểu này thì muốn led sáng ta phải xuất ra mức 0 thì led mới sáng được. 2, kiểu cathode chung: Nếu nối led theo kiểu này thì muốn led sáng ta phải xuất ra mức 1 thì led mới sáng được. ẢNH MÔ PHỎNG CHƯƠNG TRÌNH CODE CHƯƠNG TRÌNH: include include define _XTAL_FREQ 4000000 include CONFIG pragma config FOSC = XT Oscillator Selection bits (XT oscillator) pragma config WDTE = OFF Watchdog Timer Enable bit (WDT disabled) pragma config PWRTE = OFF Powerup Timer Enable bit (PWRT disabled) pragma config BOREN = OFF Brownout Reset Enable bit (BOR disabled) pragma config LVP = OFF LowVoltage (SingleSupply) InCircuit Serial Programming Enable bit (RB3 is digital IO, HV on MCLR must be used for programming) pragma config CPD = OFF Data EEPROM Memory Code Protection bit (Data EEPROM code protection off) pragma config WRT = OFF Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control) pragma config CP = OFF Flash Program Memory Code Protection bit (Code protection off) void GPIO_init (void); void Anode (void); void Cathode (void); void main (void) { GPIO_init(); while(1) { __delay_ms(100); Anode(); Cathode(); __delay_ms(100); } } void GPIO_init(void) { TRISBbits.TRISB0 = 0; RB0 LÀ OUTPUT TRISBbits.TRISB7 = 0; RB7 LÀ OUTPUT PORTBbits.RB0 = 1; OFF LED RB0 PORTBbits.RB7 = 0; OFF LED RB7 } void Anode (void) { PORTBbits.RB0 = 0; __delay_ms(500); PORTBbits.RB0 = 1; } void Cathode (void) { PORTBbits.RB7 = 1; __delay_ms(500); PORTBbits.RB7 = 0; } BÀI 2: Hiệu ứng led I.Xen kẻ, nữa sáng nữa tắt,sáng hết tắt hết Để tạo được nhứng hiệu ứng đơn giản như vậy thì cần chú tâm đến bảng mã HEX để giúp chúng ta dễ dàng tạo ra nhưng hiệu ứng đơn giản trên. Và đây là bảng tính mã HEX cụ thể để xuất ra các chân của Vi Điều Khiển để điều khiền LED sáng theo mong muốn. Ta biết PORTB thì có 8bit từ chân RB0 RB7, trong bài mắc led theo kiểu Cathode chung nên nếu muốn LED sáng thì phải xuất mức 1 thì LED mới sáng như vậy nếu muốn LED sáng hết thì PORTB = 0XFF. ẢNH CHƯƠNG TRÌNH MÔ PHỎNG CODE CHƯƠNG TRÌNH: include include define _XTAL_FREQ 4000000 include CONFIG pragma config FOSC = XT Oscillator Selection bits (XT oscillator) pragma config WDTE = OFF Watchdog Timer Enable bit (WDT disabled) pragma config PWRTE = OFF Powerup Timer Enable bit (PWRT disabled) pragma config BOREN = OFF Brownout Reset Enable bit (BOR disabled) pragma config LVP = OFF LowVoltage (SingleSupply) InCircuit Serial Programming Enable bit (RB3 is digital IO, HV on MCLR must be used for programming) pragma config CPD = OFF Data EEPROM Memory Code Protection bit (Data EEPROM code protection off) pragma config WRT = OFF Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control) pragma config CP = OFF Flash Program Memory Code Protection bit (Code protection off) void GPIO_init (void); void SANGHET (void); void TATHET (void); void XENKE (void); void SANGNUA (void); void main (void) { GPIO_init(); while(1) { SANGHET(); __delay_ms(500); TATHET(); __delay_ms(500); XENKE(); __delay_ms(500); SANGNUA(); __delay_ms(500); } } void GPIO_init(void) { TRISB = 0X00; PORTB = 0X00; } void SANGHET (void) { PORTB = 0XFF; } void TATHET (void) { PORTB = 0X00; } void XENKE (void) { PORTB = 0XAA; __delay_ms(500); PORTB = 0X55; } void SANGNUA (void) { PORTB = 0X0F; __delay_ms(500); PORTB = 0XF0; } II,Sáng dồn, dịch trái, dịch phải,sáng dần, tắt dần… 1. Dịch phải và dịch trái. Để dịch phải thì ta phải cho giá trị ban đầu của PORTB là : PORTB = 0X01; Sau đó chúng ta sử dụng lệnh DỊCH PHẢI để dịch LED : PORTB = PORTB