You are on page 1of 6

BÀI TẬP LỚN

HỌC PHẦN: LẬP TRÌNH C ỨNG DỤNG

(Viết tay và đóng bìa quyển với các thông tin: Tên sinh viên, mã sinh viên, mã lớp; Lớp
trưởng thu và nộp cho giáo viên giảng dạy chậm nhất 5 ngày trước khi thi)

PHẦN I: LẬP TRÌNH C CĂN BẢN

Bài 1:

Viết chương trình thực hiện nhập điểm 2 môn học từ bàn phím: Toán học, Văn học.
Tính tổng điểm và điểm trung bình rồi đánh giá:
- Nếu điểm trung bình lớn hơn hoặc bằng 5: Đạt.
- Nếu điểm trung bình nhỏ hơn 5: Chưa đạt.
Bài 2:

Viết chương trình nhập vào một số nguyên dương 3 chữ số từ bàn phím (từ 100 đến 999). Xác
định các chữ số hàng trăm, hàng chục và hàng đơn vị.
Bài 3:

Viết chương trình nhập các hệ số (a, b) của phương trình: ax+b=0. Xác định nghiệm của
phương trình với các hệ số đã nhập ở trên.

Bài 4:

Viết chương trình nhập các hệ số (a, b, c) của phương trình bậc 2: ax2+bx+c=0 (điều kiện a#0).
Xác định nghiệm của phương trình bậc 2 với các hệ số đã nhập ở trên.
Bài 5:

Viết chương trình thực hiện nhập quãng đường theo số Km đã đi trên xe Taxi.
Tính tiền cước xe Taxi theo cách tính như sau:
- 1 Km đầu tiên là 17.000đ.
- Cứ 1Km tiếp theo là 12.000đ.
- Nếu quãng đường lớn hơn 30 Km thì mỗi Km thêm ra sẽ trả 10.000 đ.
Bài 6:

Viết chương trình nhập một mảng 10 nguyên từ bàn phím. Tìm các số có giá trị nhỏ hơn 5 và
tính tích các số đó. Tìm các số có giá trị lớn hơn 5 và tính tổng các số đó.
Bài 7:

Viết chương trình nhập một mảng 15 số nguyên dương từ bàn phím. Tìm các số lẻ trong mảng
và tính tổng các số đó. Tìm các số chẵn trong mảng và tính tích các số đó.
Bài 8:

1
Viết chương trình nhập một mảng 20 số thực từ bàn phím. Tìm giá trị lớn nhất và giá trị nhỏ
nhất của mảng.

Bài 9:

Viết chương trình nhập một mảng 10 số nguyên từ bàn phím. Sắp xếp các số theo thứ tự tăng
dần và thứ tự giảm dần.

PHẦN II: LẬP TRÌNH C ỨNG DỤNG

Bài 1:

Cho sơ đồ kết nối như Hình 1. Viết chương trình điều khiển 8 led đơn D1...D8 được nối với
Port D sáng tắt liên tục với tần số 2Hz. (Các led được nối A chung).

10k

U1
13 33
OSC1/CLKIN RB0/INT
14 34 LEFT RIGHT
OSC2/CLKOUT RB1
35
RB2
2 36
RA0/AN0 RB3/PGM
3 37
RA1/AN1 RB4
4 38
RA2/AN2/VREF-/CVREF RB5
5 39
RA3/AN3/VREF+ RB6/PGC
6 40
RA4/T0CKI/C1OUT RB7/PGD
7
RA5/AN4/ SS/C2OUT
15
RC0/T1OSO/T1CKI
8 16
9
RE0/AN5/ RD
RE1/AN6/ WR
RC1/T1OSI/CCP2
RC2/CCP1
17 D8 D7 D6 D5 D4 D3 D2 D1
10 18
RE2/AN7/ CS RC3/SCK/SCL
23
RC4/SDI/SDA
1 24
MCLR /Vpp/THV RC5/SDO
25
RC6/TX/CK
26
RC7/RX/DT
19
RD0/PSP0
20
RD1/PSP1
21
RD2/PSP2
22
RD3/PSP3
27
RD4/PSP4
28
RD5/PSP5
29
RD6/PSP6
30
RD7/PSP7
220
PIC16F877A

Hình 1. Kết nối nút nhấn, led đơn với PIC16F877A


Bài 2:

Cho sơ đồ kết nối như Hình 1. Viết chương trình điều khiển 8 led đơn D1..D8 được nối với
Port D sáng dần từ ngoài vào trong (từ led D1 và D8 vào trong) rồi tắt dần từ trong ra ngoài
và lặp lại. (Các led được nối A chung).

Bài 3:

Cho sơ đồ kết nối như Hình 1. Viết chương trình điều khiển 8 led đơn D1...D8 được nối với
Port D sáng dần từ giữa ra ngoài (từ led D4 và D5 ra ngoài) rồi tắt dần từ ngoài vào trong và
lặp lại. (Các led được nối A chung).

Bài 4:

Cho sơ đồ kết nối như Hình 1. Viết chương trình điều khiển 8 led đơn D1...D8 được nối với
Port D sáng dần từ D1->D8 rồi tắt tắt dần từ D8->D1 và lặp lại. (Các led được nối A chung).

Bài 5:

2
Cho sơ đồ kết nối như Hình 1. Vẽ lưu đồ thuật toán, viết chương trình điều khiển 8 led đơn
D1...D8 theo yều cầu:

- Khi khởi động led D5 sáng, các led còn lại tắt hết.

- Khi nhấn nút RIGHT thì led sẽ sáng dịch sang bên trái 1 đơn vị.

- Khi nhấn nút LEFT thì led sẽ sáng dịch sang bên phải 1 đơn vị.

Bài 6:

Cho sơ đồ kết nối như Hình 1. Vẽ lưu đồ thuật toán, viết chương trình điều khiển 8 led đơn
D1...D8 theo yều cầu:

- Khi khởi động các led tắt hết.

- Khi nhấn nút RIGHT thì 8 LED sáng dần từ D1 đến D8 và dừng lại.

- Khi nhấn nút LEFT thì 8 LED tắt dần từ D8 đến D1 và dừng lại.

Bài 7:

Cho sơ đồ kết nối như Hình 2. Viết chương trình hiển thị trên led 7 thanh đếm tiến từ 0-9, sau
đó đếm lùi từ 9-0. Thời gian mỗi lần đếm là 1s (Các led được nối A chung).
U1
13 33
OSC1/CLKIN RB0/INT
14 34
OSC2/CLKOUT RB1
35
RB2
2 36
RA0/AN0 RB3/PGM
3 37
RA1/AN1 RB4
4 38
RA2/AN2/VREF-/CVREF RB5
5 39
RA3/AN3/VREF+ RB6/PGC
6 40
RA4/T0CKI/C1OUT RB7/PGD
7
RA5/AN4/ SS/C2OUT
15
RC0/T1OSO/T1CKI
8 16
RE0/AN5/ RD RC1/T1OSI/CCP2
9 17
RE1/AN6/ WR RC2/CCP1
10 18
RE2/AN7/ CS RC3/SCK/SCL
23
RC4/SDI/SDA
1 24
MCLR /Vpp/THV RC5/SDO
25
RC6/TX/CK
26 220
RC7/RX/DT
19
RD0/PSP0
20
RD1/PSP1
21
RD2/PSP2
22
RD3/PSP3
27
RD4/PSP4
28
RD5/PSP5
29
RD6/PSP6
30
RD7/PSP7
PIC16F877A

Hình 2. Kết nối led 7 thanh với PIC16F877A

Bài 8:

Cho sơ đồ kết nối như Hình 2. Viết chương trình hiển thị trên led 7 thanh đếm tiến theo số chẵn
từ 0-8, sau đó đếm lùi từ 8-0. Thời gian mỗi lần đếm là 1s (Các led được nối A chung).
Bài 9:

Cho sơ đồ kết nối như Hình 2. Viết chương trình hiển thị trên led 7 thanh đếm tiến theo số lẻ từ
1-9, sau đó đếm lùi từ 9-1. Thời gian mỗi lần đếm là 1s (Các led được nối A chung).
Bài 10:

3
Cho sơ đồ kết nối như Hình 3. Vẽ lưu đồ thuật toán, viết chương trình hiển thị trên led 7 thanh
theo yều cầu:
- Khi khởi động các led tắt hết.
- Khi nhấn nút TANG thì hiển thị từ 00->99 rồi dừng lại.
- Khi nhấn nút GIAM thì hiển thị từ 99->00 rồi dừng lại.

10k 10k

TANG GIAM
13 33
OSC1/CLKIN RB0/INT
14 34
OSC2/CLKOUT RB1
35
RB2
2 36
RA0/AN0 RB3/PGM
3 37
RA1/AN1 RB4
4 38
RA2/AN2/VREF-/CVREF RB5
5 39
RA3/AN3/VREF+ RB6/PGC
6 40
RA4/T0CKI/C1OUT RB7/PGD
7
RA5/AN4/SS/C2OUT
15
RC0/T1OSO/T1CKI
8 16
RE0/AN5/RD RC1/T1OSI/CCP2
9 17
RE1/AN6/WR RC2/CCP1
10 18
RE2/AN7/CS RC3/SCK/SCL
23
RC4/SDI/SDA
1 24
MCLR/Vpp/THV RC5/SDO
25
RC6/TX/CK
26
RC7/RX/DT 220
PNP PNP
19
RD0/PSP0
20
RD1/PSP1
21
RD2/PSP2 1k
22
RD3/PSP3
27
RD4/PSP4
28
RD5/PSP5
29
RD6/PSP6
30
RD7/PSP7
PIC16F877A

Hình 3. Kết nối nút nhấn, led 7 thanh với PIC16F877A


Bài 11:

Cho sơ đồ kết nối như Hình 3. Vẽ lưu đồ thuật toán, viết chương trình hiển thị trên led 7 thanh
theo yều cầu:
- Khi khởi động các led hiển thị số 55.
- Khi nhấn nút TANG thì hiển thị tăng thêm 1 đơn vị.
- Khi nhấn nút GIAM thì hiển thị giảm 1 đơn vị.
Bài 12:

Cho sơ đồ kết nối như Hình 4. Vẽ lưu đồ thuật toán, viết chương trình điều khiển động cơ bước
theo yều cầu:
- Khi khởi động, động cơ chạy thuận ở thời gian cho mỗi bước là 50ms.
- Khi nhấn nút GIAM, thời gian cho mỗi bước giảm đi 5ms.
- Khi nhấn nút TANG, thời gian cho mỗi bước tăng lên 5ms.

4
10
COM
13 33 1 18
OSC1/CLKIN RB0/INT 1B 1C
14 34 2 17
OSC2/CLKOUT RB1 2B 2C
35 3 16
RB2 3B 3C
2 36 4 15
RA0/AN0 RB3/PGM 4B 4C
3 37 5 14 +88.8
RA1/AN1 RB4 5B 5C
4 38 6 13
RA2/AN2/VREF-/CVREF RB5 6B 6C
5 39 7 12
RA3/ AN3/VREF+ RB6/PGC 7B 7C
6 40 8 11
RA4/ T0CKI/C1OUT RB7/PGD 8B 8C
7
RA5/ AN4/SS/C2OUT
15 ULN2803
RC0/T1OSO/T1CKI
8 16
RE0/AN5/RD RC1/T1OSI/CCP2
9 17
RE1/AN6/WR RC2/CCP1
10 18
RE2/AN7/CS RC3/SCK/SCL
23
RC4/SDI/SDA
1 24
MCLR/Vpp/THV RC5/SDO
25
RC6/TX/CK
26 10k 10k
RC7/RX/DT
19
RD0/PSP0
20 TANG GIAM
RD1/PSP1
21
RD2/PSP2
22
RD3/PSP3
27
RD4/PSP4
28
RD5/PSP5
29
RD6/PSP6
30
RD7/PSP7
PIC16F877A

Hình 4. Kết nối nút nhấn, động cơ bước với PIC16F877A


Bài 13:

Cho sơ đồ kết nối như Hình 5. Vẽ lưu đồ thuật toán, viết chương trình điều khiển động cơ bước
theo yều cầu:
- Khi khởi động, động cơ không chạy.
- Khi giữ nút THUAN, động cơ chạy thuận.
- Khi giữ nút NGUOC, động cơ chạy ngược.

10
COM
13 33 1 18
OSC1/CLKIN RB0/INT 1B 1C
14 34 2 17
OSC2/CLKOUT RB1 2B 2C
35 3 16
RB2 3B 3C
2 36 4 15
RA0/AN0 RB3/PGM 4B 4C
3 37 5 14 +88.8
RA1/AN1 RB4 5B 5C
4 38 6 13
RA2/AN2/VREF-/CVREF RB5 6B 6C
5 39 7 12
RA3/ AN3/VREF+ RB6/PGC 7B 7C
6 40 8 11
RA4/ T0CKI/C1OUT RB7/PGD 8B 8C
7
RA5/ AN4/SS/C2OUT
15 ULN2803
RC0/T1OSO/T1CKI
8 16
RE0/AN5/RD RC1/T1OSI/CCP2
9 17
RE1/AN6/WR RC2/CCP1
10 18
RE2/AN7/CS RC3/SCK/SCL
23
RC4/SDI/SDA
1 24
MCLR/Vpp/THV RC5/SDO
25
RC6/TX/CK
26 10k 10k
RC7/RX/DT
19
RD0/PSP0
20 THUAN NGUO C
RD1/PSP1
21
RD2/PSP2
22
RD3/PSP3
27
RD4/PSP4
28
RD5/PSP5
29
RD6/PSP6
30
RD7/PSP7
PIC16F877A

Hình 5. Kết nối nút nhấn, động cơ bước với PIC16F877A


Bài 14:

Cho sơ đồ kết nối như Hình 6. Vẽ lưu đồ thuật toán, viết chương trình điều khiển động cơ DC
theo yều cầu:
- Khi khởi động, động cơ chạy ở Duty = 150.
- Khi nhấn nút TANG, Duty tăng lên 10 đơn vị.
- Khi nhấn nút GIAM, Duty giảm đi 10 đơn vị.
(Biết động cơ hoạt động tại Prescaler = 1:16, Period = 250)

5
10k 10k
TANG GIAM
13 33
OSC1/CLKIN RB0/INT
14 34
OSC2/CLKOUT RB1
35
RB2
2 36
RA0/AN0 RB3/PGM
3 37
RA1/AN1 RB4
4 38
RA2/AN2/VREF-/CVREF RB5
5 39
RA3/AN3/VREF+ RB6/PGC
6 40
RA4/T0CKI/C1OUT RB7/PGD
7
RA5/AN4/SS/C2OUT
15
RC0/T1OSO/T1CKI
8 16 12V
RE0/AN5/RD RC1/T1OSI/CCP2
9 17
RE1/AN6/WR RC2/CCP1
10 18
RE2/AN7/CS RC3/SCK/SCL 1k
23
RC4/SDI/SDA
1 24
MCLR/Vpp/THV RC5/SDO
25
RC6/TX/CK
26
RC7/RX/DT
19
RD0/PSP0
20
RD1/PSP1
21
RD2/PSP2
22
RD3/PSP3
27
RD4/PSP4
28
RD5/PSP5
29
RD6/PSP6
30
RD7/PSP7
PIC16F877A

Hình 6. Kết nối nút nhấn, động cơ DC với PIC16F877A

Bài 15:

Cho sơ đồ kết nối như Hình 7. Vẽ lưu đồ thuật toán, viết chương trình điều khiển động cơ DC
theo yều cầu:
- Khi không nhấn nút động cơ dừng.
- Khi giữ nút THUAN động cơ quay thuận.
- Khi giữ nút NGUOC động cơ quay ngược.
(Biết động cơ hoạt động tại Duty = 160, Prescaler = 1:16, Period = 250)

10k 10k
THUAN NGUOC
13 33
OSC1/CLKIN RB0/INT
14 34
OSC2/CLKOUT RB1
35
RB2
2 36
RA0/AN0 RB3/PGM
3 37
RA1/AN1 RB4
4 38
RA2/AN2/VREF-/CVREF RB5
5 39
RA3/AN3/VREF+ RB6/PGC
6 40
RA4/T0CKI/C1OUT RB7/ PGD
7
RA5/AN4/SS/C2OUT
15
RC0/T1OSO/T1CKI
8 16 12V
RE0/AN5/RD RC1/T1OSI/CCP2
9 17 12V
RE1/AN6/WR RC2/CCP1
10 18
RE2/AN7/CS RC3/SCK/SCL 1k
23
RC4/SDI/SDA
1 24
MCLR/Vpp/THV RC5/SDO
25
RC6/TX/CK
26
RC7/RX/DT
19
RD0/PSP0
20
RD1/PSP1 1k
21
RD2/PSP2
22
RD3/PSP3
27
RD4/PSP4
28
RD5/PSP5
29
RD6/PSP6
30
RD7/PSP7
PIC16F877A

Hình 7. Kết nối nút nhấn, role, động cơ DC với PIC16F877A

You might also like