Xưởng điện tử - Lập trình
Hiện nay, vi xửlý và vi điều khiển đóng vai trò rất quan trọng trong lĩnh vực
điều khiển tự động. Các bộ điều khiển dùng linh kiện rời dần dần được thay thế
bởi các bộ điều khiển dùng vi xửlý. Mặc dù đã được học các vấn đềcơbản như
quét bàn phím, quét bảng đèn, điều khiển động cơbước, điều rộng xung, tuy
nhiên đa sốsinh viên đều gặp nhiều khó khăn khi phải phối hợp các lý thuyết cơ
bản trên để được chương trình hoàn chỉnh điều khiển một đối tượng cụthể. Mục
đích của bài thực hành này giúp sinh viên làm quen với vi điều khiển thông dụng
hiện nay và ứng dụng chúng để điều khiển các đối tượng cụthể. Bài thực hành tập
trung vào phương pháp thiết kếchương trình sao cho dễsửa chữa, mởrộng.
9 trang |
Chia sẻ: tlsuongmuoi | Lượt xem: 2024 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Xưởng điện tử - Lập trình, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Xưởng điện tử Bài 6: Lập trình
Thực tập công nhân Trang 28
begin
MemoEditor.Lines.LoadFromFile(editFileName.Text);
isModified:=False;
end;
procedure TForm1.buttSaveClick(Sender: TObject);
begin
if isModified then
MemoEditor.Lines.SaveToFile(editfilename.Text);
end;
procedure TForm1.MemoEditorChange(Sender: TObject);
begin
isModified:=true;
end;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if ismodified then
if MessageBox(handle,'Do you want to save
file','Warning',MB_YESNO)=ID_YES then
ButtSaveClick(Sender);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
MemoEditor.Lines.Clear;
end;
procedure TForm1.editFileNameChange(Sender: TObject);
begin
end;
end.
Sau khi nhấn F9 ta có
Xưởng điện tử Bài 6: Lập trình
Thực tập công nhân Trang 29
2.2.6. Trình đơn chính (MainMenu)
Trình đơn là đối tượng đồ họa bạn thường thấy và rất hay dùng trong các
chương trình ứng dụng. Trình đơn chính (main menu) là một dãy các lựa chọn
nằm phía trên cửa sổ. Khi click chuột vào một lựa chọn nào đó, bạn sẽ nhận được
danh sách các mục chọn khác sổ xuống. Chọn một mụ trên trình đơn, cũng đồng
nghĩa với việc yêu cầu chương trình thực hiện một tác vụ nào đó.
Đối tượng của trình đơn chính Delphi đặt tên là TMAINMENU
Dưới đây là các bước hướng dẫn bạn cách xây dựng một thanh trình đơn
chính cho cửa sổ Form.
• Chọn File/ New Application, đặt lên Form đối tượng trình đơn
TmainMenu.
• Để xây dựng các mục chọn trình đơn, bạn hãy kích chuột vào đối tượng
TmainMenu, hoặc chọn thuộc tính Items từ cửa sổ Object Inspector.
Delphi sẽ hiển thị cửa sổ thiết kế trình đơn cho phép bạn nhập vào từng
mục chọn.
• Bạn bắt đầu nhập vào tiêu đề cho từng mục chọn bằng cách thay đổi thuộc
tính caption trong cửa sổ Object Inspector. Delphi sẽ tự tạo ra một mục
chọn rỗng tiếp theo để bạn có thể thêm vào mục chọn mới. Mỗi mục chọn
được xem là một đối tượng có tên gọi là TMENUITEM.
• Để chọn trình đơn con cho một mục chọn, bạn nhấn phím phải chuột vào
mục chọn để Delphi hiện thị chương trình đơn tắt, tiếp theo hãy chọn
Create Submenu để tạo trình đơn con.
2.2.7. Đối tượng Timer
Có lẽ, Timer là thành phần có ít thuộc tính và phương thức xử lý nhất, trong
số những thành phần VCL do Delphi cung cấp. Tuy nhiên , Timer là thành đối
tượng hữu dụng và rất thú vị. Timer do Delphi đặt trên bảng công cụ System.
Timer được xem là thành phần VCL không trực quan,, bởi vì bạn không nhìn thấy
lúc chương trình thực thi. Thay vào đó, Timer hoạt động phía sau hậu trường. Nó
được dùng để đếm gian. Nếu có khoảng thời gian nào đó trôi qua, mã lệnh đặt
Xưởng điện tử Bài 6: Lập trình
Thực tập công nhân Trang 30
trong phương thức xử lý tình huống OnTimer sẽ được gọi thực thi. Nếu Tiẻ vẫn
còn hiệu lực thì OnTimer sẽ được thực thi đều đặn.
Timer được Delphi dặt lớp đối tượng có tên TTIMER
Thuộc tính thường được sử dụng nhất của Timer là
Thuộc tính Ý nghĩa
Interval Khoảng thời gian định kỳ của Timer được Windows cho phép hoạt
động. Giá trị Interval được tính bằng 1/1000 giây. Interval =1000
tương đương với khoảng thời gian 1 giây.
Enabled TRUE: Timer ở trạng thái hoạt động. FALSE: Timer đặt ở trạng thái
vô hiệu lực.
Vi dụ trình hiển thị thời gian.
procedure TForm1.FormCreate(Sender: TObject);
begin
caption:=TimeTostr(now());
end;
Kết quả.
2.2.8. Đối tượng Comport
Đây là thành phần Delphi dùng để giao tiếp với thiết bị bên ngoài thông qua
cổng Com.
Comport được Delphi dặt lớp đối tượng có tên TCOMPORT
Tình huống thường được sử dụng của đối tượng TCOMPORT là OnAfterClose (
đóng cổng Com), OnAfterOpen ( mở cổng Com), OnRxChar (nhận dữ liệu từ
cổng Com).
Ví dụ:
Viết một chương trình xuất nhập dữ liệu thông qua cổng Com
Chọn File/New Application từ trình đơn đặt Form1 đối tượng Tedit, 1 đối tượng
Tmemo, 5 đối tượng Tbutton thiết lập tình huống và phương thức xử lý từng đối
tượng như sau:
Đối tượng Thuột tính Giá trị
TFORM Name
Caption
Form1
Delphi Notepad
TMEMO Name
Lines(…)
Memo1
Xóa trắng
TEDIT Name Edit1
Xưởng điện tử Bài 6: Lập trình
Thực tập công nhân Trang 31
Tex Xóa trắng
TBUTTON Name
Caption
ButtonOpen
Open
TBUTTON Name
Caption
ButtonSetting
Setting
TBUTTON Name
Caption
ButtonSend
Send
TBUTTON Name
Caption
ButtonClear
Clear
TBUTTON Name
Caption
ButtonExit
Exit
TCOMPORT Name
OnRxChar
Comport
ComportRxChar
unit cong;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, CPort;
type
TForm1 = class(TForm)
Panel1: TPanel;
Memo1: TMemo;
ButtonOpen: TButton;
Edit1: TEdit;
ButtonSend: TButton;
ButtonExit: TButton;
ComPort: TComPort;
ButtonSettings: TButton;
ButtonClear: TButton;
procedure ButtonExitClick(Sender: TObject);
procedure ButtonOpenClick(Sender: TObject);
procedure ButtonSettingsClick(Sender: TObject);
procedure ButtonSendClick(Sender: TObject);
procedure ComportRxChar(Sender: TObject; Count: Integer);
procedure ButtonClearClick(Sender: TObject);
procedure Memo1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Xưởng điện tử Bài 6: Lập trình
Thực tập công nhân Trang 32
implementation
{$R *.DFM}
// Đóng cổng Com và exit chương trình
procedure TForm1.ButtonExitClick(Sender: TObject);
begin
Comport.Close;
Close;
end;
// Đóng mở Cổng Com
procedure TForm1.ButtonOpenClick(Sender: TObject);
begin
if ComPort.Connected then // Kiểm tra cổng Com có mở không
begin
Comport.Close; // Nếu mở thì ta đóng cổng lại và hiển thị ‘ Close’
ButtonOpen.Caption:='Close';
end
else
begin
Comport.Open;
ButtonOpen.Caption:='Open';
end;
end;
// Đặt các tham số cho cổng Com
procedure TForm1.ButtonSettingsClick(Sender: TObject);
begin
Comport.ShowSetupDialog;
Comport.Open;
end;
// Gửi dữ liệu ra cổng Com
procedure TForm1.ButtonSendClick(Sender: TObject);
var i: byte;
s: string;
begin
if edit1.Text='' then exit;
s:=chr(strtoint(edit1.Text));
// s:=edit1.text;
for i:=1 to length(s) do comport.WriteStr(s[i]); //Nhận dữ liệu từ Edit1 ghi ra
cổng Com
end;
// Nhận dữ liệu từ cổng com xuất ra Memo1
procedure TForm1.ComportRxChar(Sender: TObject; Count: Integer);
var str:string;
begin
Xưởng điện tử Bài 6: Lập trình
Thực tập công nhân Trang 33
comport.ReadStr(str,count);
//Memo1.Text := Memo1.Text + str;
Memo1.Text := inttostr(ord(str[1]));
end;
// Xóa vùng Memo1
procedure TForm1.ButtonClearClick(Sender: TObject);
begin
Memo1.Lines.Clear;
end;
procedure TForm1.Memo1Change(Sender: TObject);
begin
end;
end.
Khi chạy chương trình ta được.
III. PHẦN THỰC TẬP CỤ THỂ
• Viết chương trình xuất nhập dữ liệu.
- Giới thiệu về tổ thực tập
- Thiết lập cổng com
- Đóng, mở cổng
- Gửi dữ liệu ra cổng COM
- Nhận dữ liệu từ cổng COM và hiển thị
*. Yêu cầu sinh viên thao tác nhanh, trang trí đẹp.
Xưởng điện tử Bài 7:Giám sát và điều khiển
Thực tập công nhân Trang 34
BÀI 7
GIÁM SÁT VÀ ĐIỀU KHIỂN THIẾT BỊ
I. MỤC ĐÍCH YÊU CẦU
- Hiện nay, vi xử lý và vi điều khiển đóng vai trò rất quan trọng trong lĩnh vực
điều khiển tự động. Các bộ điều khiển dùng linh kiện rời dần dần được thay thế
bởi các bộ điều khiển dùng vi xử lý. Mặc dù đã được học các vấn đề cơ bản như
quét bàn phím, quét bảng đèn, điều khiển động cơ bước, điều rộng xung,… tuy
nhiên đa số sinh viên đều gặp nhiều khó khăn khi phải phối hợp các lý thuyết cơ
bản trên để được chương trình hoàn chỉnh điều khiển một đối tượng cụ thể. Mục
đích của bài thực hành này giúp sinh viên làm quen với vi điều khiển thông dụng
hiện nay và ứng dụng chúng để điều khiển các đối tượng cụ thể. Bài thực hành tập
trung vào phương pháp thiết kế chương trình sao cho dễ sửa chữa, mở rộng.
- Bài thực hành này yêu cầu sinh viên phải biết trước cấu tạo và lập trình
89C51
II. NỘI DUNG
1. Kiến trúc của vi điều khiển 8951.
2.
IC vi điều khiển 8951 thuộc họ MCS51 có các đặc điểm sau :
+ 4 kbyte Flash.
U1
AT89C51
9
18
19
29
30
31
1
2
3
4
5
6
7
8
21
22
23
24
25
26
27
28
10
11
12
13
14
15
16
17
39
38
37
36
35
34
33
32
RST
XTAL2
XTAL1
PSEN
ALE/PROG
EA/VPP
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD
P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
Xưởng điện tử Bài 7:Giám sát và điều khiển
Thực tập công nhân Trang 35
+ 128 byte RAM
+ 4 port I/0 8 bit
+ Hai bộ định thời 16 bits
+ Giao tiếp nối tiếp
+ 64KB không gian bộ nhớ chương trình ngoài
+ 64 KB không gian bộ nhớ dữ liệu ngoài
a.Port0: là port có 2 chức năng, ở trên chân từ 32 đến 39 của MC 8951.
Trong các thiết kế cỡ nhỏ không dùng bộ nhớ ngoài, P0 được sử dụng như là
những cổng I/O. Còn trong các thiết kế lớn có yêu cầu một số lượng đáng kể bộ
nhớ ngoài thì P0 trở thành các đường truyền dữ liệu và 8 bit thấp của bus địa chỉ.
b. Port1: là một port I/O chuyên dụng, trên các chân 1-8 của MC8951.
Chúng được sử dụng với một múc đích duy nhất là giao tiếp với các thiết bị ngoài
khi cần thiết.
c. Port2: là một cổng có công dụng kép trên các chân 21 – 28 của MC 8951.
Ngoài chức năng I/O, các chân này dùng làm 8 bit cao của bus địa chỉ cho những
mô hình thiết kế có bộ nhớ chương trình ROM ngoài hoặc bộ nhớ dữ liệu RAM có
dung lượng lớn hơn 256 byte.
d. Port3: là một cổng có công dụng kép trên các chân 10 – 17 của MC 8951.
Ngoài chức năng là cổng I/O, những chân này kiêm luôn nhiều chức năng khác
nữa liên quan đến nhiều tính năng đặc biệt của MC 8951, được mô tả trong bảng
sau:
Bit Tên Chức năng chuyển đổi
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5
P3.6
P3.7
RxD
TxD
0INT
1INT
T0
T1
ÖWR
RD
Ngõ vào dữ liệu nối tiếp.
Ngõ xuất dữ liệu nối tiếp.
Ngắt ngoài 0.
Ngắt ngoài 1.
Ngõ vào TIMER 0.
Ngõ vào của TIMER 1.
Điều khiển ghi dữ liệu lên bộ nhớ ngoài.
Điều khiển đọc bộ nhớ dữ liệu ngoài.
Bảng 2.1 : Chức năng của các chân trên port3
e. PSEN (Program Store Enable): 8951 có 4 tín hiệu điều khiển, PSEN là
tín hiệu ra trên chân 29. Nó là tín hiệu điều khiển để cho phép truy xuất bộ nhớ
chương trình mở rộng và thường được nối đến chân OE (Output Enable) của một
EPROM để cho phép đọc các byte mã lệnh của chương trình. Tín hiệu PSEN ở
mức thấp trong suốt phạm vi quá trình của một lệnh. Các mã nhị phân của
chương trình được đọc từ EPROM qua bus và được chốt vào thanh ghi lệnh của
8951 để giải mã lệnh. Khi thi hành chương trình trong ROM nội PSEN sẽ ở mức
cao.
Xưởng điện tử Bài 7:Giám sát và điều khiển
Thực tập công nhân Trang 36
f. ALE (Address Latch Enable ): Tín hiệu ra ALE trên chân 30 tương hợp
với các thiết bị làm việc với các xử lý 8585, 8088. 8951 dùng ALE để giải đa hợp
bus địa chỉ và dữ liệu, khi port 0 được dùng làm bus địa chỉ/dữ liệu đa hợp: vừa là
bus dữ liệu vừa là byte thấp của địa chỉ 16 bit . ALE là tín hiệu để chốt địa chỉ vào
một thanh ghi bên ngoài trong nữa đầu của chu kỳ bộ nhớ. Sau đó, các đường Port
0 dùng để xuất hoặc nhập dữ liệu trong nữa sau chu kỳ của chu kỳ bộ nhớ.
Các xung tín hiệu ALE có tốc độ bằng 1/6 lần tần số dao động trên chip và
có thể được dùng là nguồn xung nhịp cho các hệ thống. Nếu xung trên 8951 là
12MHz thì ALE có tần số 2MHz. Chân này cũng được làm ngõ vào cho xung lập
trình cho EPROM trong 8951.
g. EA (External Access): Tín hiệu vào EA trên chân 31 thường được nối lên
mức cao (+5V) hoặc mức thấp (GND). Nếu ở mức cao, 8951 thi hành chương
trình từ ROM nội trong khoảng địa chỉ thấp (4K). Nếu ở mức thấp, chương trình
chỉ được thi hành từ bộ nhớ mở rộng. Người ta còn dùng chân EA làm chân cấp
điện áp 21V khi lập trình cho EPROM trong 8951.
h. RST (Reset): Ngõ vào RST trên chân 9 là ngõ reset của 8951. Khi tín hiệu
này được đưa lên mức cao (trong ít nhất 2 chu kỳ máy), các thanh ghi trong 8951
được đưa vào những giá trị thích hợp để khởi động hệ thống.
i.OSC: 8951 có một bộ dao động trên chip, nó thường được nối với thạch
anh giữa hai chân 18 và 19. Tần số thạch anh thông thường là 12MHz.
j. POWER: 8951 vận hành với nguồn đơn +5V ( 20%. Vcc được nối vào
chân 40 và Vss (GND) được nối vào chân 20.
2. Tìm hiểu về tập lệnh của 89C51.
Một số lệnh thường gặp.
ACALL addr11 : Gọi chương trình con(gọi đến địa chỉ tuyệt đối).
Mô tả: ACALL gọi không điều kiện một chương trình con đặt tại địa chỉ được chỉ
ra trong lệnh. Lệnh này tăng nội dung của PC bởi 2 để PC chứa địa chỉ của lệnh kế
lệnh ACALL, sau đó cất nội dung 16 bit của PC vào stack(Byte thấp cất trước) và
tăng con trỏ stack SP bởi 2. Do vậy chương trình con được gọi phải được bắt đầu
trong cùng khối 2K của bộ nhớ chương trình với Byte đầu tiên của lệnh theo sau
lệnh ACALL. Các cờ khong bị ảnh hưởng.
LCALL addr16 : Gọi chương trình con. Chương trình con được gọi phải được bắt
đầu trong cùng khối 64K của bộ nhớ chương trình với Byte đầu tiên của lệnh theo
sau lệnh LCALL. Các cờ khong bị ảnh hưởng.
ADD A,: Cộng
Mô tả: ADD Cộng nội dung của một byte ở địa chỉ được chỉ ra trong lệnh với nội
dung thanh chứa và đặt kết quả vào thanh chứa.
ADD có 4 kiểu định địa chỉ cho toán hạn nguồn: thanh ghi, trực tiếp, thanh ghi
gián tiếp hoặc tức thời.
AJMP addr11: Nhảy đến địa chỉ tuyệt đối. Đích nhảy đến phải trong cùng khối
2K của bộ nhớ chương trình với byte đầu tiên của lệnh theo sau lệnh AJMP.
Các file đính kèm theo tài liệu này:
- Xưởng điện tử - Lập trình.pdf