Tải bản đầy đủ

thực hành kỹ thuật lập trình

HỌC VIỆN NÔNG NGHIỆP VIỆT NAM
KHOA CƠ ĐIỆN
BỘ MÔN TỰ ĐỘNG HÓA
*********o O o*********

TÀI LIỆU HƯỚNG DẪN THÍ NGHIỆM

KỸ THUẬT LẬP TRÌNH
TRONG ĐIỀU KHIỂN

HÀ NỘI – 2014


BÀI 1

DÕNG ĐIỀU KHIỂN
1. Các câu lệnh lựa chọn:
C cung cấp cho người sử dụng một số câu lệnh lựa chọn sau:
 Cấu trúc if
- Cú pháp: if (biểu thức điều kiện)
câu lệnh;

(Biểu thức điều kiện) = TRUE  câu lệnh được thực hiện
= FALSE  bỏ qua câu lệnh
- Cú pháp: if (biểu thức điều kiện)
{
câu lệnh 1;
câu lệnh 2;
…..
}
Khi không đặt trong { } nếu biểu thức điều kiện đúng chỉ có câu lệnh 1 được thực hiện
if ( Biểu thức điều kiện)
câu lệnh 1;
hoặc
{ khối lệnh 1}
else
câu lệnh 2;
hoặc
{khối lệnh 2}
- Cấu trúc else if – cho phép nhiều lựa chọn:
Cú pháp tổng quát:
if
( biểu thức điều kiện 1)
câu lệnh 1;
else if (biểu thức điều kiện 2)
câu lệnh 2;
else if (biểu thức điều kiện 3)
câu lệnh 3;
else
câu lệnh 4
 Cấu trúc switch – case:
Switch (biểu thức)
{
case hằng 1:
câu lệnh 1; break;
case hằng 2:
câu lệnh 2; break;
case hằng 3:
câu lệnh 3; break;
case hằng 4:
câu lệnh 4; break;
………………………………..

default:
câu lệnh;
}


2. Vòng lặp:

Vòng lặp For
Cú pháp:
for ( biểu thức 1; biểu thức 2; biểu thức 3)
{
Câu lệnh;
}
Biểu thức 1: khởi tạo giá trị cho biến điều khiển.
Biểu thức 2: biểu thức điều kiện xác định điều kiện thoát cho vòng lặp.
Biểu thức 3: biểu thức thay đổi giá trị cho biến điều khiển ( thường là tăng
hoặc giảm giá trị)
 Vòng lặp While:
Cú pháp
while ( biểu thức )
câu lệnh;
hoặc {
các câu lệnh;
}
3. Nội dung thực hành:
1. Sử dụng sơ đồ mô phỏng đã cho:


Viết chương trình để các đèn sáng theo qui luật sau:
a)
b)

Biết các đèn được sáng trong 1s thì chuyến trạng thái khác.
2. Cho sơ đồ mô phỏng như sau:

a. Vẽ sơ đồ mô phỏng trên Proteus
b. Viết chương trình sao cho khi ấn button thì các đèn sáng theo qui luật sau:


BÀI 2

MẢNG – HIỂN THỊ LED 7 THANH
1. Mảng:
- Khái niệm: Mảng là một tập hợp các phần tử dữ liệu có cùng kiểu dữ liệu. Mỗi phần tử sẽ
được lưu trữ ở các vị trí kế tiếp nhau trong bộ nhớ chính.
- Khai báo:
< Kiểu dữ liệu> Tên_mảng [ Kích thước mảng]
 Kiểu dữ liệu: là kiểu dữ liệu của các phần tử trong mảng (char, int, float, double,…)
 Các phần tử trong mảng chỉ có chung một kiểu dữ liệu duy nhất.
 Tên mảng: được qui định đặt giống như tên biến.
 Kích thước mảng: bao gồm một hoặc nhiều chỉ số cho biết số phần tử có trong
mảng và số chiều của mảng.
 Kích thước mảng = n thì mảng có n+1 phần tử được đánh số thứ tự từ 0 đến n.
- Các phần tử của mảng:
Sau khi khai báo một mảng có thể tham chiếu đến các phần tử của mảng ở bất cứ nơi
nào khi có yêu cầu.
Để truy xuất phần tử thứ m của mảng thực hiện cú pháp sau: Tên_mảng [chỉ số m-1].
Các phần tử của mảng cho phép thực hiện tất cả các phép toán tương ứng với kiểu dữ
liệu của chúng ( + - * / % , quan hệ, logic;…)
2. Hiển thị Led 7 thanh:
Từ bảng mã của LED 7 dưới đây, ta có thể thành lập được ma trận gồm các phần tử
chứa các giá trị hiển thị của LED 7 như sau:
Ví dụ ma trận hiển thị của LED 7 có anot chung:
int hien_thi=[0C0h, 0F9h, 0A4h, 0B0h, 0x99h, 0x92h, 0x82h, 0F8h, 0x80h, 0x90h]
Muốn hiển thị một chữ số nào đó, ta chỉ cần truy xuất vào phần tử tương ứng của ma trận
trên và gửi giá trị đó ra port xuất nhập.
Ví dụ muốn hiển thị số 7: P0=hien_thi[7];


Bảng 2.1. Bảng mã hiển thị của Led 7 thanh có anot chung:

Bảng 2.2. Bảng mã hiển thị của Led 7 thanh có catot chung:


3. Nội dung thực hành:
1. Hãy viết chương trình đếm số xung được đưa vào chân P1.0 và hiển thị lên Led 7
đoạn.
Khi đếm đến 9 thì reset về 0. Quá trình được lặp đi lặp lại.
2. Vẽ sơ đồ mô phỏng hình dưới và thực hiện các công việc sau:
-

Viết chương trình đếm từ 0-99

-

Viết chương trình giảm từ 99-0.


BÀI 3
TIMER /COUNTER – NGẮT
I.Tóm tắt lý thuyết
1. Timer/Counter:
a. Thanh ghi định thời
- 8051 có hai bộ điều khiển định thời là Timer 0 và Timer 1.
- Mỗi Timer có một thanh ghi định thời 16bit, và được chia thành hai thanh ghi 8bit: Timer
high (TH) và Timer Low (TL).

Hình 4.1. Các thanh ghi định thời
b.Thanh ghi điều khiển TCON:

-

TFx: Cờ tràn Timerx. Được set và clear bởi phần cứng
Dùng khi ngắt Timer 0,1.

-

TRx: bit điều khiển Timerx: TRx=0  dừng Timerx
TRx=1  bật Timerx

-

IEx: Ngắt ngoài 0,1

-

ITx:Ngắt nối tiếp 0,1


c.Thanh ghi chế độ định thời TMOD:
Để thiết lập chế độ làm việc của các Timer ta sử dụng thanh ghi TMOD 8bit. Cả
Timer 0 và Timer 1 đều dùng chung thanh ghi TMOD để điều khiển, trong đó: 4bit thấp
thiết lập chế độ điều khiển cho Timer 0 và 4bit cao thiết lập chế độ điều khiển cho Timer 1.
-Gate: Khi Gate =1 thì Timer/Counter chỉ làm việc khi cả TRx =1 và INTx=1.
Khi Gate = 0 thì Tmer/Counter làm việc được khi TRx=1.
- C/T: Bit lựa chọn chế độ đếm (counter) hay định thời (Timer).
C/T = 0: chế độ Timer
C/T=1: chế độ định thời.
- M0,M1: Lựa chọn chế độ định thời.


2. Ngắt:
89C51 có 5 nguồn ngắt: 2 ngắt ngoài, 2 ngắt timer và ngắt nối tiếp.
a. Thanh ghi điều khiển ngắt IE:

-

EA: =1 cho phép ngắt toàn cục
=0 không cho phép ngắt


-

ES: cho phép ngắt nối tiếp

-

ET1, ET0: cho phép ngắt Timer 1, Timer0.

-

EX1, EX0: cho phép ngắt ngoài 1, ngắt ngoài 0.

Muốn cho phép một ngắt nào xảy ra phải set 2 bit: Bit cho phép ngắt toàn cục và bit cho
phép từng ngắt riêng rẽ.
Dưới đây là các vector ngắt và vị trí ngắt tương ứng:

II. Nội dung thí nghiệm
1. Viết lại chương trình đếm từ 0-9 dùng Timer/counter.
2. Viết lại chương trình tạo một xung vuông có tần số 330hz trên chân P3.7 dùng ngắt
Timer .
3. Viết chương trình tạo đàn điện tử với các phím tạo ra âm thanh có tần số như sau:

Các phím tương ứng từ button 1  Button 8.



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay

×