Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 80 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
80
Dung lượng
2,65 MB
Nội dung
TRƯỜNG ĐẠI HỌC CÔNG NGHI ỆP HÀ N ỘI KHOA ĐIỆN TỬ Tài li ệu VI ĐIỀU KHIỂN PIC (Dùng cho HS-SV tra cứu trong trình thực hành, thi, kiểm tra môn h ọc Vi điều khiển) Mục lục Mục lục PHẦN CỨNG CỦA PIC 18F4520 1.1 Sơ đồ chân 1.2 Tổ chức nhớ 1.3 Các ghi EEPROM 1.4 Các ghi phát xung 1.5 Các ghi hoạt động Reset 12 1.6 Hoạt động vào/ra 14 1.7 Lệnh điều khiển vào/ra theo byte ho ặc theo bit 15 NGƠN NG Ữ LẬP TRÌNH VÀ TRÌNH D ỊCH 16 2.1 Khung chương trình viết cho vi điều khiển 16 2.1.1 Hằng số 16 2.1.2 Biến 17 2.1.3 Lưu trữ đối tượng nhớ 17 2.1.4 Con trỏ 18 2.1.5 Các định danh phần cứng 18 2.1.6 Viết ệlnh hợp ngữ chương trình 18 2.2 Các hàm 19 2.2.1 Xây d ựng hàm 19 2.2.2 Hàm thư viện trình dịch 20 2.3 Các ệlnh xử lý bit 21 HOẠT ĐỘNG NGẮT 23 3.1 Tổ chức ngắt PIC 18F4520 23 3.2 Các ghi liên quan 23 3.2.1 Thanh ghi RCON 24 3.2.2 Các ghi điều khiển ngắt INTCON 24 3.2.3 Thanh ghi yêu cầu ngắt PIR 26 3.2.4 Thanh ghi cho phép ngắt ngoại vi PIE 28 3.2.5 Thanh ghi ưu tiên ngắt IPR 29 3.3 Khung chương trình sử dụng ngắt 31 HOẠT ĐỘNG ĐỊNH THỜI 35 4.1 Timer 35 4.1.1 Các ghi Timer0 35 4.1.2 Chế độ hoạt động Timer0 36 4.1.3 Ngắt Timer0 37 4.2 Timer1 37 4.2.1 Các ghi Timer1 37 4.2.2 Chế độ hoạt động Timer1 38 4.2.3 Ngắt Timer1 40 4.3 Timer2 40 4.3.1 Các ghi Timer2 40 4.3.2 Chế độ hoạt động Timer2 41 4.3.3 Ngắt Timer2 41 4.4 Timer3 41 4.4.1 Các ghi Timer3 41 4.4.2 Chế độ hoạt động Timer3 43 4.4.3 Ngắt Timer3 43 ĐIỀU CHẾ ĐỘ RỘNG XUNG – PWM 44 5.1 Sơ đồ khối PWM 44 5.2 Các ghi liên quan 44 5.3 Sử dụng PWM 45 Thiết lập chu kỳ 45 Thiết lập độ rộng xung dương 45 5.4 Các hàm thư viện pwm.h 46 BỘ CHUYỂN ĐỔI TƯƠNG TỰ - SỐ (ADC) 47 6.1 Sơ đồ khối ADC PIC18F4520 47 6.2 Các ghi liên quan 47 6.4 Các bước lập trình chuyển đổi A/D 50 6.5 Các hàm thư viện adc.h 51 TRUYỀN THÔNG N ỐI TIẾP QUA USART 56 7.1 Các ghi liên quan 56 7.2 Tốc độ baud 59 7.3 Chế độ không đồng 61 7.5 Một số hàm thông d ụng thư viện usart.h 64 Phụ lục Màn hình tinh th ể lỏng –LCD 67 PHẦN CỨNG CỦA PIC 18F4520 1.1 Sơ đồ chân 1.2 Tổ chức nhớ Sơ đồ tổ chức nhớ chương trình ng ăn xếp Sơ đồ tổ chức nhớ liệu RAM Phân b ổ địa ghi chức đặc biệt SFR 1.3 Các ghi ủca EEPROM - Thanh ghi điều khiển EEPROM : EECON1 Ghi chú: R = Cho phép đọc -n = Reset - POR bit EEPGD: Bit lựa chọn nhớ liệu EEPROM hay nhớ chương trình Flash = Truy cập nhớ chương trình Flash = Truy cập nhớ liệu EEPROM bit EEPROM CFGS: Bit lựa chọn cấu hình nhớ chương trình Flash/dữ liệu = Truy cập ghi cấu hình = Truy cập nhớ chương trình Flash liệu EEPROM bit 5Không s dụng, đọc trả giá trị ‘0’ bit FREE: Bit cho phép xóa hàng b ộ nhớ Flash = Xóa hàng b ộ nhớ chương trình thiết lập, địa chứa ghi TBLPTR, xóa t lệnh WR kê tiếp = Chỉ thực ghi bit EEPROM WRERR: Bit cờ lỗi nhớ chương trình Flash/ nhớ liệu = Lỗi hoạt động ghi (hoạt động ghi bị kết thúc trước) = Ghi hoàn thành bit EEPROM WREN: Bit cho phép ghi nhớ chương trình Flash / Dữ liệu = Cho phép ghi vào nhớ chương trình Flash /dữ liệu EEPROM = Không cho phép ghi bit WR: Bit điều khiển ghi = Khởi tạo q trình xóa/ghi nhớ liệu EEPROM xóa b ộ nhớ chương trình ghi nhớ chương trình (Được xóa b ằng phần cứng việc ghi hoàn thành Thi ết lập phần mềm khơng xóa) = Q trình ghi hồn bit RD: Bit điều khiển đọc = Khởi tạo trìnhđọc nhớ EEPROM ( Đọc chu kỳ máy Bit RD xóa b ằng phần cứng Thiết lập phần mềm không xóa Bit RD khơng thiết lập EEPGD = CFGS = 1.) = Không kh ởi tạo trìnhđọc EEPROM - Thanh ghi điều khiển EEPROM : EECON2 Thanh ghi EECON2 không ph ải v ật lý , dành riêng cho việc ghi xóa b ộ nhớ Đọc EECON2 ‘0’ - Thanh ghi liệu EEPROM: EEDATA ghi đệm liệu cho nhớ liệu liệu Thanh ghi EEDATA có bit, EEPROM, sử dụng để truy cập vào d ữ nhớ (Cho phép đọc ghi phần mềm, ô nh EEPROM có bit) - Thanh ghi địa EEPROM: EEADR Thanh ghi EEADR có bit, ghi địa nhớ liệu EEPROM bit ghi EEADR sử dụng để địa hóa 256 nh EEPROM từ 00h đến FFh 1.4 Các ghi ủca phát xung - Thanh ghi chuyển chế độ phát xung : OSCTUNE Ghi chú: R= Cho phép đọc -n = Reset - POR W = Cho phép ghi U= Không sử dụng, đọc ‘0’ ‘1’ = Được thiết lập ‘0’ = Được xóa -x= Reset khơng xác định bit INTSRC: Bit lựa chọn nguồn xung nội tần số thấp = Chọn tần số 31.25 kHz từ chia tần Postscaler (8 MHz INTOSC chia 256) = Chọn tần số 31 kHz từ dao động nội INTRC bit PLLEN: Bit lựa chọn nhân PLL cho ch ế độ INTOSC = Cho phép xung ừt INTOSC qua nhân t ần số PLL (chỉ sử dụng với tần số MHz MHz) = Không cho phép PLL bit Không s dụng: Đọc ‘0’ b i t 4-0 TUN 4:TU N0: Bit chuy ển chế độ tần số 0111 1= Tần số Max 00001 00000 = Tần số trung bình Bộ phát xung hoạt động tần số hi ệu chuẩn 11111 10000 = Tần số Min - Thanh ghi điều khiển phát xung OSCCON 60 Các ghi liên quan đến điều chỉnh tốc độ baud (BRG): Tên B TXSTA CSR RCSTA SPE BAUDCON AB SPBRGH EUS SPBRG EUS Ghi chú: — 7.3 Chế độ không đồng Truyền EUSART chế độ không đồng Thanh ghi TSR (Transmit (Serial) Shift Register) sử dụng để dịch bit liệu n ối tiếp từ bit trọng số thấ p nhấp LSb đến bit có tr ọng số cao MSb chân TX Thanh ghi TSR không cho phép đọc/ghi phần mềm Thanh ghi TXREG sử dụng để đệm liệu cho ghi TSR Dữ liệu cần truyền nạp vào ghi TXREG, sau liệu nạp tự động từ TXREG sang TSR Thanh ghi TSR chưa nạp liệu bit Dừng (Stop) trước chưa truyền Ngay sau bit Dừng truyền liệu nạp vào TRS (n ếu có d ữ liệu TXREG) Ngay sau liệu nạp từ TXREG sang TSR (trong chu kỳ máy), ghi TXREG rỗng c ngắt truyền TXIF (PIR1) thiết lập (=1) Bit TXIF sử dụng để biết trạng thái ghi TXREG, bit TRMT (TXSTA) sử dụng để biết trạng thái ghi TSR Bit TRMT phép đọc, thi ết lập TSR rỗng Hoạt động ngắt không gắn liền với bit này, ch ỉ sử dụng để báo trạng thái ỗrng ghi TSR Các bước để truyền liệu chế độ không đồng bộ: Bước Khởi tạo giá trị cho cặp ghi SPBRGH:SPBRG, thiết lập xóa bit BRGH BRG16 để đạt tốc độ truyền mong muốn (theo bảng chế độ công thức tính tốc độ baud) Bước Xóa bit SYNC (TXSTA) phép chế độ không đồng thi ết lập bit SPEN (RCSTA) phép PORT nối tiếp Bước Nếu muốn sử dụng ngắt cần phải thiết lập bit TXIE Bước Để thiết lập khung truyền 9-bit c ần thiết lập bit TX9 (TXSTA) Khi bit-9 có th ể sử dụng để chứa địa chỉ/dữ liệu bit kiểm tra chẵn lẻ Bước Cho phép truyền liệu bit TXEN Bước Nếu khung truyền bit lựa chọn, bit thứ cần nạp vào TX9D 61 Bước Nạp liệu cần truyền vào ghi TXREG (quá trình truyền liệu bắt đầu) Bước Nếu sử dụng ngắt, cần chắn bit GIE PEIE c ghi INTCON (INTCON) thiết lập Sơ đồ khối hoạt động truyền EUSART chế độ không đồng bộ: Các ghi liên quan đến hoạt động truyền không đồng bộ: Name Bit INTCON GIE/GIEH PIR1 PSPIF(1) PSPIE(1) PIE1 IPR1 RCSTA TXREG PSPIP(1) SPEN Thanh ghi TXSTA BAUDCON SPBRGH CSRC ABDOVF Thanh ghi SPBRG Thanh ghi Nhận EUSART chế độ không đồng Sơ đồ khối hoạt động nhận chế độ bất động thể hình 8.2 Dữ liệu nhận qua chân RX kh ối phục hồi liệu Chế độ thường sử hệ thống truyền thơng RS-232 62 Hình 8.4 Sơ đồ khối nhận liệu EUSART chế độ không đồng Các bước để truyền liệu chế độ không đồng bộ: Bước Khởi tạo giá trị cho cặp ghi SPBRGH:SPBRG, thiết lập xóa bit BRGH BRG16 để đạt tốc độ truyền mong muốn (theo bảng chế độ cơng thức tính tốc độ baud) Bước Xóa bit SYNC (TXSTA) phép chế độ không đồng thi ết lập bit SPEN (RCSTA) phép PORT nối tiếp Bước Nếu sử dụng ngắt cần phải thiết lập bit RCIE Bước Để cho phép nhận bit thứ cần phải thiết lập bit RX9(RCSTA) Bước Thiết lập bit CREN phép hoạt động nhận Bước Bit cờ ngắt RCIF thiết lập hoạt động nhận hoàn thành, ng xảy bit cho phép ngắt RCIE thiết lập trước Bước Đọc bit RX9D(RCSTA) để có bit thứ (nếu khung truyền bit cho phép), vào bit th ứ để phát lỗi khung truyền Bước Đọc bit liệu nhận ghi RCREG Bước Nếu phát liệu nhận bị lỗi, xóa l ỗi cách xóa bit cho phép nhận CREN Bước 10 Nếu sử dụng ngắt, cần chắn bit GIE PEIE c ghi INTCON (INTCON) thiết lập Các ghi liên quan đến chế độ nhận không đồng bộ: Name INTCON PIR1 PIE1 63 IPR1 RCSTA RCREG Thanh gh TXSTA BAUDCON ABDOV SPBRGH Thanh gh SPBRG Thanh gh 7.5 Một số hàm thông d ụng thư viện usart.h Hàm báo bận hoạt động truyền nối tiếp char BusyUSART( void ); Sử dụng để báo trạng thái truyền PORT nối tiếp Bằng nếu hoạt động truyền trạng thái nghỉ Bằng truyền Hàm while (BusyUSART()); BusyUSART CloseUSART OpenUSART putsUSART ReadUSART WriteUSART • Hàm : BusyUSART Chức : Nguyên mẫu : Chú thích : Giá trị trả : Ví dụ: • Hàm : OpenUSART Chức : Cấu hình cho PORT nối tiếp Nguyên mẫu : void OpenUSART( unsigned char config, unsigned int spbrg); Các đối số: “config”: dùng thi ết lập thông số sau cho USART (các thơng số có th ể thiết lập đồng thời tốn ửt “&”): Thơng s ố 1: USART_TX_INT_ON: cho phép ngắt truyền USART_TX_INT_OFF: cấm ngắt truyền Thông s ố 2: USART_RX_INT_ON: cho phép ngắt nhận USART_RX_INT_OFF: cấm ngắt nhận 64 Thông s ố 2: USART_ASYNCH_MODE: Chọn chế độ cận đồng (Asynchronous Mode) USART_SYNCH_MODE: Chọn chế độ đồng (Synchronous Mode) Thông s ố 3: USART_EIGHT_BIT: Chọn chế độ truyền/nhận bit (8-bit transmit/receive) USART_NINE_BIT: Chọn chế độ truyền/nhận bit (9-bit transmit/receive) Thông s ố 4: USART_SYNC_SLAVE: Chọn chế độ tớ (Synchronous Slave mode) USART_SYNC_MASTER: Chọn chế độ chủ (Synchronous Master mode) Thông s ố 5: USART_SINGLE_RX: Chọn chế độ nhận byte (Single reception) USART_CONT_RX: Chọn chế độ nhận liên ụtc byte (Continuous reception) Thông s ố 6: USART_BRGH_HIGH: Chọn tốc độ baud cao (High baud rate) USART_BRGH_LOW: Chọn tốc độ baud thấp (Low baud rate) “spbrg ”: dùng để đặt tốc độ baud, tốc độ baud tính sau: - Với chế độ cận đồng bộ, tốc độ baud cao (Asynchronous mode, high speed): Tốc độ baud=Fosc/ (16 * (spbrg+ 1)) - Với chế độ cận đồng bộ, tốc độ baud thấp (Asynchronous mode, low speed): Tốc độ baud=Fosc/ (64 * (spbrg+ 1)) Với chế độ đồng (Synchronous mode): Tốc độ baud=Fosc/ (4 * (spbrg+ 1)) Chú thích : Sử dụng để đặt thơng số USART • Hàm : CloseUSART Chức : Nguyên mẫu : Chú thích : Đóng (cấm) USART void CloseUSART( void ); Ví dụ: CloseUSART(); Hàm gọi khơng s dụng USART • Hàm : WriteUSART Chức : Nguyên mẫu : Ghi byte vào b ộ đệm truyền USART void WriteUSART( char data); Chú thích : Hàm sử dụng để truyền byte Ví dụ: WriteUSART( 0x41); //truyền ký tự A 65 • Hàm : ReadUSART Chức : Nguyên mẫu : Nhận byte từ đệm nhận USART char ReadUSART( void ); Chú thích : Hàm sử dụng để nhận byte Ví dụ: char x; x= ReadUSART(); • Hàm : putsUSART Chức : Nguyên mẫu : Nhận byte từ đệm nhận USART char ReadUSART( void ); Chú thích : Hàm sử dụng để nhận byte Ví dụ: char x; x= ReadUSART(); 66 Phụ lục Màn hình tinh th ể lỏng –LCD Các mô-đun LCD hiển thị ký t ự thiết kế dựa điều khiển HD44780 Hitachi, loại LCD 16x2 ký t ự gồm 14 chân, ý ngh ĩa chân sau: Chân s ố 10 11 12 13 14 Điều khiển hiển thị ký tự LCD thực chất g ửi mã lệnh tới điều khiển HD44780, mã lệnh liệt kê sau: 67 TT Lệnh Start Cấu hình LCD Thiết lập chế độ hiển thị Bật/Tắt hiển thị RS Dịch trỏ/hiển thị Xóa hình Thiết lập vị trí trỏ Hiển thị ký tự Ghi chú: - DDRAM (Display Data RAM) : Chứa liệu cần hiển thị (mã ASCII c ký tự); địa DDRAM tương ứng với vị trí trỏ hình - Các bit/byte viết tắt mã l ệnh: 68 TT Tên 10 11 I/D S D C B S/C R/L DL N F address Giản đồ thời gian mơ t ả q trình ghi lệnh ghi d ữ liệu vào DDRAM (hi ển thị ký tự) sau: Ghi Ghi lệnh liệu Căn cứu giản đồ thời gian mô t ả trình ghi lệnh ghi d ữ liệu, trình ghi mã lệnh bao gồm bước sau: Đặt chân RS, R/W mức thấp; chân E mức cao Xuất mã l ệnh cần ghi lên bus DB0÷DB7 Đặt chân E mức thấp Quá trình ghi liệu vào DDRAM (hi ển thị ký tự) bao gồm bước sau: Đặt chân R/W mức thấp; chân RS, chân E mức cao Xuất mã ký t ự cần hiển thị lên bus DB0÷DB7 Đặt chân E mức thấp Nguyên tắc hiển thị ký tự LCD: Một chương trình hiển thị ký tự LCD ẽs theo bốn bước sau: Xố tồn hình 69 Đặt chế độ hiển thị Đặt vị trí trỏ (Nơi bắt đầu ký tự hiển thị) Hiển thị ký tự Ví dụ: // Buoc 1: xoa man hinh Lcd_Write_Command(0x01); // Lcd_Write_Command:Hàm //ghi lệnh cho LCD // Buoc 2: Dat che hien thi //(1)dua LCD ve che "bat dau" Lcd_Write_Command(0x03); / (2)Cau hinh LCD: / - DL=1: 8-bit du lieu / - N=1: LCD hien thi tren dong - F=0: Font chữ gom 5x7 diem (dot) / Lcd_Write_Command(0x38); / (3)Thiet lap che hien thi: / - I/D=1: Vi tri tro tang (hien thi tu trai qua phai) / - S=0: Khong hien thi dich (cac ky tu khong dich chuyen) Lcd_Write_Command(0x06); / (4)Bat/Tat hien thi: / - D=1: Bat hien thi (hien thi lien tuc-khong nhap nhay) / - B=0: Con tro khong nhap nhay / - C=0: Tat tro (khong hien thi tro tren LCD) Lcd_Write_Command(0x0c); //Buoc 3: Dat vi tri hien thi Lcd_Write_Command(0XC0); // dau dong thu //Buoc 4: Hien thi ky tu Lcd_Write_Data(0x41); // hien thi A / Lcd_Write_Data: / Hàm ghi liệu vào DDRAM Chú ý: - Các bước 3, lặp lại nhiều lần cần hiển thị nhiều ký tự - Khi thực ghi lệnh ghi liệu hiển thị lên LCD ầnc lưu ý đến thời gian thi hành l ệnh điều khiển HD44780 Ví dụ sau xố hình t ối thiểu 1.64 mS sau lệnh khác 70 - Chế độ hiển thị mặc định hi ển thị dịch, vị trí trỏ mặc định đầu dòng th ứ 71 72 ... chức ngắt PIC 18F4520 Logic ngắt PIC 18F4520 3.2 Các ghi liên quan Vi điều khiển PIC 18F4520 có 10 ghi điều khiển hoạt động ngắt: • RCON – ghi điều khiển Reset • INTCON – ghi điều khiển ngắt... VÀ TRÌNH D ỊCH 2.1 Khung chương trình vi? ??t cho vi điều khiển //khai báo thư vi? ??n, ví dụ: #include #include //Cấu hình cho vi điều khiển, ví dụ: #pragma config OSC = HS... khiển vào/ra theo byte ho ặc theo bit - Lệnh điều khiển đọc liệu theo byte x = PORTD; - Lệnh điều khiển ghi theo byte PORTD = x; - Lệnh điều khiển đọc liệu theo bit x = PORTDbits.RD0; // x biến