Lập trình C cho pic 16f877a

Mục lục
I. Tổng quan về CCS………………………………………………………10
1.1. Vì sao ta sử dung CCS ?
1.2. Giới thiệu về CCS ?
1.3. Một số ví dụ cho lập trình CCS…………………………………………….10
II.Chúng ta cùng nhau tìm hiểu lần lượt các phần sau………….11
1. I/O_Delay
1.2. Input_output………………………………………………………….......11
1.3. Nháy LED PortB7…………………………………………………………..14
1.4. Nháy Led nhiều chế độ……………………………………………………..15
1.5. Điều khiển led sáng dồn…………………………………………………….18
1.6. I/O + Delay _ Delay 1s RB0…………………………………………………18
1.7. Nháy Led RB0………………………………………………………….........19
1.8. Delay 1s portB……………………………………………………………….21
1.9. Delay_Timer0……………………………………………………………......22
2. ADC……………………………………………………………………………25
A. Sơ đồ:
B.Code
B.1. ADC reading voltage…………………………………………………….......25
B.2. LM335_LCD…………………………………………………………………26
B.3. LM335_F877A_LCD1602……………………………………………………29
B.4. ADC_186……………………………………………………………………...33
3. DAC……………………………………………………………………………..36
3.1. DAC_1446……………………………………………………………………..36
4. Timer…………………………………………………………………………….37
4.1. Timer0…………………………………………………………………………38
4.2. Timer1…………………………………………………………………………39
4.3. Timer2…………………………………………………………………………39
4.4. frequencymeter………………………………………………………………..40
5. INTERRUPT………………………………………………………………..…43
5.1. Ngắt Timer0…………………………………………………………………...44
5.2. Ngắt ngoài …………………………………………………………………….48
5.3. Ngắt ngoài trên RB4-RB7 ……………………………………………………51
5.4. Giải mã bàn phím .............................................................................................56
5.5. Chương trình gửi ký tự ra 2x16 LCD dùng CCS C ………………………..59
5.7. Ví dụ nhỏ về ngắt ngoài ………………………………………………………61
5.8. Ngắt ngoài và đèn 7 đoạn …………………………………………………….62
5.9. Chương trình hiển thị phím số ra đèn 7 đoạn (không dùng interrupt) …...63
5.10. Chương trình hiển thị phím số ra đèn 7 đoạn (DÙNG INTERRUPT) ….64
5.11. Thay đổi tốc độ đèn led dung ngắt………………………………………….65
6. Chương trình ví dụ sau mô tả cách dùng PWM do CCS cung cấp...….72
7. Tìm hiểu về LCD ..............................................................................................76
7.1. 8bit interface…………………………………………………………………..77
7.2. 4bit interface…………………………………………………………………..78
7.3. LCD_lib_4bit
7.4. LCD lib 8bits…………………………………………………………………...80
7.5. Hiển thị LCD 8bit interface…………………………………………………..81
7.6. Hiển thị LCD 4bit interface ………………………………………………….86
7.7. LCD_8bit interface, có kiểm tra cờ bận. ……………………………………86
7.8. LCD and Keypad drive……………………………………………………….89
7.9.LM335_F877A_LCD1602……………………………………………………106
7.10. LM35_F877A_LCD1602…………………………………………………...107
7.11. LM335_F877A_LCD1602………………………………………………….110
7.12. lcd_bargraph………………………………………………………………..113
7.13. Chương trình gửi ký tự ra 2x16 LCD dùng CCS C………………………113
8. LED ma trận……………………………………………………………..……118
8.1. font_ascii
8.2. font_ascii2……………………………………………………………………..120
8.3. led matrix_Ngat ngoai_COM………………………………………………..122
8.4. led matrix ket noi RS232……………………………………………………..128
8.5. led matrix (595 va 154) ket noi rs232………………………………………..132
8.6. led matrix ver 1.2……………………………………………………………..136
8.7. 16f877a_8x16_2mau……………………………………………………...…...141
9. Động cơ………………………………………………………………………....148
9.1. DC Motor……………………
9.1.1. code
9.1.2. Position_Control…………………………………………………………….151
9.1.3. check_encoder……………………………………………………………….175
9.2. DK Step Motor………………………………………………………………...177
9.2.1. Code
9.2.2. Step_motor_F877A
9.2.3. Chương trình điều khiển động cơ bước …………………………………...181
9.2.4. Điều khiển động cơ bước………………………………………………...….183
10. Capture……………………………………………………………..………….187
10.1. Code cho CCS
10.2. Sử dụng capture newcode……………………………………………………188
10.3.Capture_LCD_5MH………………………………………………………….190
10.4. Sử dụng capture_LCD……………………………………………………….193
10.5. Sử dụng capture………………………………………………………………195
11. SPI……………………………………………………………………………....196
12. Các chuẩn giao tiếp……………………………………………………….….197
12.1. Chuẩn giao tiếp I2C
12.1.1. Master_Slave……………………………………………………………….204
12.1.1.1. I2Cmaster………………………………………………………………...204
12.1.1.2. I2Cslave…………………………………………………………………...205
12.1.2. lcd1_lib
12.1.3. lcd2_lib……………………………………………………………………...208
12.2. Giao tiếp RS232………………………………………………………………210
Serial Port - lập trình giao tiếp nối tiếp…………………………………………..210
12.2.1. Giao tiep COM_LCD………………………………………………………222
12.2.2. USART-RS232……………………………………………………………...224
12.2.3. RS232TUT.H………………………………………………………………..225
12.2.4. RS232TUT…………………………………………………………………..225
12.2.5. RS232TUTDlg………………………………………………………………227
12.2.6. RS232TUTDlg.CPP………………………………………………………...228
12.2.7. StdAfx.H…………………………………………………………………….235
12.2.8. mscomm.H………………………………………………………………….
12.2.9. mscomm.CPP……………………………………………………………….237
12.2.10. Giao tiep pc va pic6f877 qua cong rs232………………………………...244
13. Ghi đọc RAM ngoài……………………………………………………….…246
13.1. Sơ đồ………………………………………………………………………….
13.2. Code…………………………………………………………………………...246
Project 1: Kết nối PIC 16F877A với EEPROM 25AA640………………….248