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.. 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
Trang 1HỌ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
Trang 2BÀ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;
}
Trang 32 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ị)
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:
Trang 4Viế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:
Trang 5BÀ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:
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];
Trang 6Bả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:
Trang 73 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
Trang 8BÀ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
Trang 9c.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
Trang 102 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
Trang 11- 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