Luận văn tốt nghiệp
Bộ Giáo Dục và Đào Tạo
Đại Học Quốc Gia Tp.Hồ Chí Minh
Trường ĐH Sư Phạm Kó Thuật
Khoa Điện
Bộ Môn : Điện Tử
NHIỆM VỤ LUẬN VĂN TỐT NGHIỆP
Sinh viên thực hiện : TRẦN ĐẠI NGHĨA
Lớp : 95 KĐĐ
MSSV : 95101099
Số điện thoại : 8854340 ( Tp.Hồ Chí Minh ).
1/ Tên đề tài :
Điện Năng Kế Điện Tử Giao Tiếp Máy Tính
2/ Nội Dung Luận Văn Tốt Nghiệp :
Tính toán các thông số kó thuật.
Thiết kế phần cứng.
Giới thiệu phần mềm.
3/ Các Bản Vẽ:
Sơ đồ nguyên lí.
4/ Giáo Viên Hướng Dẫn : Thầy QUÁCH THANH HẢI
5/ Ngày Giao Nhiệm Vụ : 13 / 12 / 1999.
6/ Ngày Hoàn Thành Nhiệm Vụ : 28 / 2 / 2000.
Giáo Viên Hướng Dẫn Kí Tên :
_ _ _ _ _ _ _ _ _ _ _ _ _ Thông Qua Bộ Môn
_ _ _ _ _ _ _ _ _ _ _ _ _ Ngày ….. tháng ….. năm 2000.
_ _ _ _ _ _ _ _ _ _ _ _ _ Chủ nhiệm Bộ Môn
_ _ _ _ _ _ _ _ _ _
Quách Thanh Hải _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _
ngày càng đáp ứng được trọn vẹn yêu cầu của người dùng, do vậy bản thân người làm
đề tài cảm thấy cần phải rèn luyện mình nhiều hơn nữa không chỉ trong luận văn tốt
nghiệp ra trường mà một điều còn quan trọng hơn nữa là khi đã ra trường vẫn phải
không ngừng phấn đấu.
2
Điện năng kế điện tử giao tiếp máy tính
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI :
Đề tài “Điện năng kế điện tử giao tiếp máy tính” đã được hoàn thành trong thời
hạn đã giao. Đối với một đề tài mới thì việc nghiên cứu lần đầu chắc chắn không
thể tránh khỏi sự thiếu sót do vậy tuy đã cố gắng nhiều nhưng người làm đề tài
vẫn chưa thật sự đáp ứng được hết các yêu cầu đề ra ban đầu, rất mong sự thông
cảm của q Thầy, Cô và các bạn sinh viên.
Nhìn chung, đề tài đã hoàn thành xong những vấn đề chính yếu nhất và điều đó
giúp tạo ra sườn chung cho việc nghiên cứu phát triển sau này.
Điều cần làm đối với người kế tục đề tài là nghiên cứu sâu hơn tất cả các vấn đề
đã nêu ra trong luận văn tốt nghiệp nhằm tìm ra phương pháp tốt hơn hoặc hoàn chỉnh
phương pháp đã nêu, sự gợi ý này chỉ mang tính chất chung chung mà điều cần thiết
là phải biết tự suy nghó.
Mạch điện đã trình bày chưa phải là một mạch điện hoàn hảo vì việc sử dụng các
thiết bò chưa có sự chuẩn hóa mà đều phải tận dụng các thiết bò có sẵn, đây là một
điều bắt buộc ngoài ý muốn. Nếu như có thể thì tất cả các bộ phận bên trong điện
năng kế điện tử đều được chế tạo chuyên dùng, khi được như vậy thì chắc chắn
thiết bò hoạt động sẽ chính xác và bền bỉ hơn nhiều. Nhưng điều này chỉ có thể trở
thành hiện thực khi mô hình và lí thuyết tính toán thật chi tiết và chính xác sau đó
cần trải qua một thời gian dài thử nghiệm và điều chỉnh. Sau khi đã đạt được tất cả
các thông số yêu cầu và được ngành điện lực chấp nhận thì lúc đó mới đặt hàng tại
các xí nghiệp điện tử để sản xuất các bộ phận. Đây cũng là điều mong mỏi lớn
nhất của người làm đề tài này.
Ngoài ra, nếu như phần mềm có thể được viết tốt hơn sẽ thay thế cho một số thiết
bò phần cứng bên ngoài, nhưng lúc đó cần phải lưu ý về khả năng hoạt động của khối
4 ports I/O (Input/Output).
2 bộ đònh thời (timer) 16 bits.
Giao tiếp nối tiếp.
64 Kbytes không gian bộ nhớ chương trình mở rộng.
64 Kbytes không gian bộ nhớ dữ liệu mở rộng.
Một bộ xử lí luận lí (thao tác trên các bit đơn).
210 bits được đòa chỉ hóa.
Bộ nhân chia 4 µs.
5
Luận văn tốt nghiệp
2/ Sơ lược về các chân của 8951:
µC 8951 có tất cả 40 chân có chức năng như các đường xuất nhập.
Trong đó có 24 chân có công dụng kép, mỗi đường có thể hoạt động
như đường xuất nhập hoặc như đường điều khiển hoặc là thành phần
của bus dữ liệu và bus đòa chỉ.
2.1/ Hệ thống giao tiếp port:
a/ Port 0:
Port 0 là một port hai chức năng trên các chân 32 – 39. Trong các
thiết kế cỡ nhỏ (không dùng bộ nhớ mở rộng) nó có chức năng như
các đường I/O. Đối với các thiết kế lớn với bộ nhớ mở rộng, nó được
hợp kênh giữa bus dữ liệu và byte thấp của bus đòa chỉ.
6
Điện năng kế điện tử giao tiếp máy tính
b/ Port 1:
Port 1 là một port I/O trên các chân 1 – 8. Các chân được kí hiệu:
P1.0 ; P1.1 ; P1.2 … có thể dùng cho giao tiếp với các thiết bò ngoài
nếu cần. Port 1 không có chức năng khác, vì vậy chúng chỉ được dùng
cho giao tiếp với các thiết bò ngoài.
c/ Port 2:
Port 2 là một port công dụng kép trên các chân 21 – 28 được dùng
Xung đọc bộ nhớ dữ liệu ngoài
2.2/ Các tín hiệu điều khiển:
µC 8951 có 4 tín hiệu điều khiển:
a/ PSEN\ (Program Store Enable):
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 bộ nhớ chương trình mở rộng, PSEN\ 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.
PSEN\ sẽ ở mức thấp trong thời gian lấy lệnh. Các mã nhò phân của
chương trình được đọc từ EPROM qua bus dữ liệu và được chốt vào
7
Luận văn tốt nghiệp
thanh ghi lệnh của 8951 để giải mã lệnh. Nếu thi hành chương trình
trong ROM nội (8951) thì PSEN\ sẽ ở mức thụ động (mức cao).
b/ 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 vi xử lí 8085, 8088, 8086.
µC 8951 dùng ALE một cách tương tự cho việc giải kênh các bus
đòa chỉ và dữ liệu.
Khi port 0 được dùng trong chế độ chuyển đổi: vừa là bus dữ liệu
vừa là byte thấp của bus đòa chỉ, ALE là tín hiệu để chốt byte thấp
đòa chỉ vào một thanh ghi bên ngoài trong nửa đầu chu kì bộ nhớ. Sau
đó, các đường port 0 dùng để xuất nhập dữ liệu trong nửa sau 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àm nguồn xung nhòp cho các phần khác
của hệ thống. Nếu xung nhòp trên 8951 là 12 Mhz thì ALE có tần số 2
Mhz. Chỉ ngoại trừ khi thi hành lệnh MOVX, một xung ALE sẽ bò
mất. Trong trường hợp là 8051 thì chân này cũng được làm ngõ vào
cho xung lập trình cho EPROM trong chip.
(8951); dù vậy chúng có thể được mở rộng bằng các thành phần ngoài
lên đến tối đa 64 Kbytes bộ nhớ chương trình và 64 Kbytes bộ nhớ dữ
liệu.
Bộ nhớ bên trong bao gồm ROM (8951) và RAM trên chip bao gồm
nhiều thành phần: Phần lưu trữ đa dụng, phần lưu trữ đòa chỉ hóa từng
bit, các bank thanh ghi và các thanh ghi chức năng đặc biệt.
FFFF
Bộ nhớ
chương trình
được chọn
qua PSEN\
FFFF
Bộ nhớ
dữ liệu
được chọn
qua WR\ và
RD\
FF
00 000
0
0000
Bộ nhớ trên chip Bộ nhớ mở rộng
Tóm tắt các vùng bộ nhớ của 8951.
9
Luận văn tốt nghiệp
Hai đặc tính cần lưu ý là:
Các thanh ghi và các port xuất nhập đã được xếp trong bộ nhớ và có thể được
26 37 36 35 34 33 32 31 30
25 2F 2E 2D 2C 2B 2A 29 28 90 97 96 95 94 93 92 91 90 P1
24 27 26 25 24 23 22 21 20
23 1F 1E 1D 1C 1B 1A 19 18 8D không được đòa chỉ hóa bit TH1
22 17 16 15 14 13 12 11 10 8C không được đòa chỉ hóa bit TH0
21 0F 0E 0D 0C 0B 0A 09 08 8B không được đòa chỉ hóa bit TL1
20 07 06 05 04 03 02 01 00 8A không được đòa chỉ hóa bit TL0
1F BANK 3 89 không được đòa chỉ hóa bit TMOD
18 88 8F 8E 8D 8C 8B 8A 89 88 TCON
17 BANK 2 87 không được đòa chỉ hóa bit PCON
10
0F BANK 1 83 không được đòa chỉ hóa bit DPH
08 82 không được đòa chỉ hóa bit DPL
07 BANK 0
( Mặc đònh cho R0 – R7 )
81 không được đòa chỉ hóa bit SP
00 80 87 86 85 84 83 82 81 80 P0
10
Điện năng kế điện tử giao tiếp máy tính
RAM CÁC THANH GHI CHỨC NĂNG ĐẶC BIỆT
Tóm tắt bộ nhớ dữ liệu trên chip
Mọi đòa chỉ trong vùng RAM đa dụng đều có thể được truy xuất tự
do dùng cách đánh đòa chỉ trực tiếp hoặc gián tiếp. Ví dụ, để đọc nội
dung ở đòa chỉ 5FH của RAM nội vào thanh ghi tích lũy, lệnh sau sẽ
được dùng:
MOV A, 5FH
Lệnh này di chuyển 1 byte dữ liệu dùng cách đánh đòa chỉ trực tiếp
để xác đònh “đòa chỉ nguồn” (5FH). Đích nhận dữ liệu được ngầm xác
đònh trong mã lệnh là thanh ghi tích lũy A.
ъ Các bank thanh ghi:
32 bytes thấp nhất của bộ nhớ nội là dành cho các bank thanh ghi.
Bộ lệnh của 8951 hỗ trợ 8 thanh ghi (R0 – R7) và theo mặc đònh (sau
khi reset hệ thống) các thanh ghi này ở các đòa chỉ 00H – 07H. Lệnh
sau đây sẽ đọc nội dung ở đòa chỉ 05H vào thanh ghi tích lũy :
MOV A, R5
Đây là lệnh một byte dùng đòa chỉ thanh ghi. Tất nhiên, thao tác
tương tự có thể được thi hành bằng lệnh 2 bytes dùng đòa chỉ trực tiếp
nằm trong byte thứ hai:
MOV A, 05H
Các lệnh dùng các thanh ghi R0 đến R7 thì ngắn hơn và nhanh hơn
các lệnh tương ứng nhưng dùng đòa chỉ trực tiếp. Các giá trò dữ liệu
được dùng thường xuyên nên dùng một trong các thanh ghi này.
Bank thanh ghi tích cực có thể được chuyển đổi bằng cách thay đổi
các bit chọn bank thanh ghi trong từ trạng thái chương trình (PSW).
Giả sử rằng bank thanh ghi 3 được tích cực, lệnh sau sẽ ghi nội dung
của thanh ghi tích lũy vào đòa chỉ 18H:
MOV R0, A
Ý tưởng dùng “các bank thanh ghi” cho phép “chuyển hướng”
chương trình nhanh và hiệu quả (từng phần riêng rẽ của phần mềm sẽ
có một bộ thanh ghi riêng không phụ thuộc vào các phần khác).
4/ Các thanh ghi chức năng đặc biệt:
Các thanh ghi nội của 8951 được truy xuất ngầm đònh bởi bộ lệnh.
Ví dụ lệnh “INC A” sẽ tăng nội dung của thanh ghi tích lũy A lên 1.
Tác động này được ngầm đònh trong mã lệnh.
Các thanh ghi trong 8951 được đònh dạng như một phần của RAM
trên chip. Vì vậy mỗi thanh ghi sẽ có một đòa chỉ (ngoại trừ thanh ghi
12
Điện năng kế điện tử giao tiếp máy tính
đếm chương trình và thanh ghi lệnh vì các thanh ghi này hiếm khi bò
PSW.1 _ D1H Dự trữ
PSW.0 P D0H Cờ parity chẵn
• Cờ nhớ:
13
Luận văn tốt nghiệp
Cờ nhớ (CY) có công dụng kép. Thông thường nó được dùng cho
các lệnh toán học: nó sẽ được set nếu có một số nhớ sinh ra bởi phép
cộng hoặc có một số mượn bởi phép trừ. Ví dụ, nếu thanh ghi tích lũy
chứa FFH, thì lệnh sau:
ADD A, #1
sẽ trả về thanh ghi tích lũy kết quả 00H và set cờ nhớ trong PSWK.
Cờ nhớ cũng có thể xem như một thanh ghi 1 bit cho các lệnh luận lí thi hành trên
bit. Ví dụ, lệnh sau sẽ AND bit 25H với cờ nhớ và đặt kết quả trở vào cờ nhớ:
AND C, 25H
• Cờ nhớ phụ:
Khi cộng các số BCD, cờ nhớ phụ (AC) được set nếu kết quả của 4
bit thấp trong khoảng 0AH đến 0FH. Nếu các giá trò được cộng là số
BCD thì sau lệnh cộng cần có DA A (hiệu chỉnh thập phân thanh ghi
tích lũy) để điều chỉnh kết quả cho phù hợp.
• Cờ 0:
Cờ 0 (F0) là 1 bit cờ đa dụng dành cho các ứng dụng của người
dùng.
0 Các bit chọn bank thanh ghi :
Các bit chọn bank thanh ghi (RS0 và RS1) xác đònh bank thanh ghi
nào được tích cực. Chúng được xóa sau khi reset hệ thống và được
thay đổi bằng phần mềm nếu cần. Ví dụ, 3 lệnh sau cho phép bank
thanh ghi 3 và di chuyển nội dung của thanh ghi R7 (đòa chỉ byte
1FH) đến thanh ghi tích lũy:
SETB RS1
SETB RS0
Con trỏ ngăn xếp (SP) là một thanh ghi 8 bit ở đòa chỉ 81H. Nó chứa
đòa chỉ của byte dữ liệu hiện hành trên đỉnh của ngăn xếp. Các lệnh
trên ngăn xếp bao gồm các thao tác cất dữ liệu vào ngăn xếp và lấy
dữ liệu ra khỏi ngăn xếp. Lệnh cất dữ liệu vào ngăn xếp sẽ làm tăng
SP trước khi cất dữ liệu, và lệnh lấy dữ liệu ra khỏi ngăn xếp sẽ đọc
dữ liệu và giảm SP.
Ngăn xếp của 8951 được giữ trong RAM nội và được giới hạn các
đòa chỉ có thể truy xuất bằng đòa chỉ gián tiếp. Chúng là 128 bytes
đầu của 8951.
Để khởi động lại SP với ngăn xếp bắt đầu tại 60H, các lệnh sau đây
được dùng:
MOV SP, #5FH
Trên 8951 ngăn xếp bò giới hạn 32 bytes vì đòa chỉ cao nhất của
RAM trên chip là 7FH. Sở dó dùng giá trò 5FH vì SP sẽ tăng lên 60H
trước khi cất byte dữ liệu đầu tiên.
15
Luận văn tốt nghiệp
Người thiết kế có thể chọn không phải khởi động lại con trỏ ngăn
xếp mà để nó lấy giá trò mặc đònh khi reset hệ thống. Giá trò mặc
đònh đó là 07H và kết quả là ngăn đầu tiên để cất dữ liệu có đòa chỉ
là 08H.
Nếu phần mềm ứng dụng không khởi động lại SP, thì bank thanh ghi
1 (có thể cả 2 và 3) sẽ không dùng được vì vùng RAM này đã được
dùng làm ngăn xếp.
Ngăn xếp được truy xuất trực tiếp bằng lệnh PUSH và POP để lưu
trữ tạm thời và lấy lại dữ liệu, hoặc được truy xuất ngầm bằng các
lệnh gọi chương trình con (ACALL, LCALL) và các lệnh trở về
(RET, RETI) để cất và lấy lại bộ đếm chương trình.
d/ Con trỏ dữ liệu:
Con trỏ dữ liệu (DPTR) để truy xuất bộ nhớ ngoài là một thanh ghi
WAIT : JB P1.5, WAIT
Lệnh này có nghóa là “nếu bit P1.5 được set thì nhảy tới nhãn
WAIT”.
Nói cách khác “nhảy trở lại và kiểm tra lần nữa”.
f/ Các thanh ghi timer:
µC 8951 chứa hai bộ đònh thời/đếm 16 bits được dùng cho việc
đònh thời hoặc đếm sự kiện.
Timer 0 ở đòa chỉ 8AH (TL0: byte thấp) và 8CH (TH0 : byte cao).
Timer 1 ở đòa chỉ 8BH (TL1: byte thấp) và 8DH (TH1 : byte cao).
Việc vận hành timer được set bởi thanh ghi Timer Mode (TMOD) ở
đòa chỉ 89H và thanh ghi điều khiển timer (TCON) ở đòa chỉ 88H.
Chỉ có TCON được đòa chỉ từng bit.
g/ Các thanh ghi port nối tiếp:
µC8951 chứa một port nối tiếp trên chip dành cho việc trao đổi
thông tin với các thiết bò nối tiếp như máy tính, modem hoặc cho việc
giao tiếp với các IC khác có giao tiếp nối tiếp (các bộ chuyển đổi
A/D, các thanh ghi dòch … ).
Một thanh ghi gọi là bộ đệm dữ liệu nối tiếp (SBUF) ở đòa chỉ 99H
sẽ giữ cả hai dữ liệu truyền và nhận.
Khi truyền dữ liệu thì ghi lên SBUF, khi nhận dữ liệu thì đọc SBUF.
Các mode vận hành khác nhau được lập trình qua thanh ghi điều
khiển port nối tiếp (SCON) (được đòa chỉ hóa từng bit) ở đòa chỉ 98H.
17
Luận văn tốt nghiệp
h/ Các thanh ghi ngắt:
µC 8951 có cấu trúc 5 nguồn ngắt (2 mức ưu tiên).
Các ngắt bò cấm sau khi reset hệ thống và sẽ được cho phép bằng
việc ghi thanh ghi cho phép ngắt (IE) ở đòa chỉ A8H.
Cả hai thanh ghi được đòa chỉ hóa từng bit.
i/ Thanh ghi điều khiển công suất:
a/ Truy xuất bộ nhớ chương trình ngoài:
Bộ nhớ chương trình ngoài là một IC ROM được cho phép bởi tín
hiệu PSEN\.
Hình sau mô tả cách nối một EPROM vào 8951:
Giao tiếp giữa 8951 và EPROM.
Một chu kì máy của 8951 có 12 chu kì xung nhòp. Nếu bộ dao động
trên chip được lái bởi một thạch anh 12 Mhz thì một chu kì máy kéo
dài 1 µs.
Trong một chu kì máy, sẽ có hai xung ALE và hai byte được đọc từ
bộ nhớ chương trình (nếu lệnh hiện hành là lệnh 2 bytes thì byte thứ
hai sẽ được loại bỏ). Giản đồ thời gian của một lần lấy lệnh được vẽ
ở hình sau:
19
Luận văn tốt nghiệp
Giản đồ thời gian đọc bộ nhớ chương trình ngoài.
b/ Truy xuất bộ nhớ dữ liệu ngoài:
Giao tiếp giữa 8951 và RAM.
Bộ nhớ dữ liệu ngoài là một bộ nhớ RAM được cho phép ghi/đọc
bằng các tín hiệu WR\ và RD\ (các chân P3.6 và P3.7 thay đổi chức
năng). Chỉ có một cách truy xuất bộ nhớ dữ liệu ngoài là với lệnh
MOVX dùng con trỏ dữ liệu (DPTR) 16 bits hoặc R0 và R1 xem như
thanh ghi đòa chỉ.
Kết nối bus đòa chỉ và bus dữ liệu giữa RAM và 8951 cũng giống như EPROM và
do đó cũng có thể lên đến 64 Kbytes bộ nhớ RAM.
20
Điện năng kế điện tử giao tiếp máy tính
Ngoài ra, chân RD\ của 8951 được nối tới chân cho phép xuất (OE\)
của RAM và chân WR\ được nối tới chân ghi (WR\) của RAM.
Giản đồ thời gian cho lệnh đọc dữ liệu ngoài được vẽ trên hình sau đối với lệnh
MOVX A, @DPTR:
chương trình).
6/ Lệnh Reset:
µC8951 được reset bằng cách giữ chân RST ở mức cao ít nhất trong
hai chu kì máy và trả nó về mức thấp.
Mạch reset hệ thống.
RST có thể được kích bằng tay dùng một nút bấm hoặc có thể được
kích khi cấp điện dùng một mạch R-C.
Trạng thái của tất cả các thanh ghi trong 8951 sau khi Reset hệ
thống được tóm tắt trong bảng sau:
Thanh ghi Nội dung
Đếm chương trình 0000 H
Tích lũy 00 H
B 00 H
PSW 00 H
SP 07 H
DPTR 0000 H
23
Luận văn tốt nghiệp
Port 0 ÷ 3 FF H
IP XXX00000 B
IE 0XX00000 B
Các thanh ghi đònh thời 00 H
SCON 00 H
SBUF 00 H
PCON ( HMOS ) 0XXXXXXX B
PCON ( CMOS ) 0XXX0000 B
Quan trọng nhất trong các thanh ghi trên là thanh ghi đếm chương
trình, nó được đặt lại 0000H.
Khi RST trở lại mức thấp, việc thi hành chương trình luôn bắt đầu ở
c/ Đòa chỉ gián tiếp:
R0 và R1 được dùng để chứa đòa chỉ tạm ô nhớ mà lệnh tác động
đến. Người ta qui ước dùng dấu @ trước R0 hoặc R1.
Mã lệnh i
Đòa chỉ gián tiếp.
d/ Đòa chỉ tức thời:
Người ta dùng dấu # trước các toán hạng tức thời. Các toán hạng đó
có thể là một hằng số, một kí số hay một biểu thức toán học …Trình
hợp dòch sẽ tự động tính toán và thay thế dữ liệu vào mã lệnh.
Mã lệnh Dữ liệu tức thời
Đòa chỉ tức thời.
e/ Đòa chỉ tương đối:
Đòa chỉ tương đối được dùng trong các lệnh nhảy.
µC8951 dùng giá trò 8 bit có dấu để cộng thêm vào thanh ghi đếm
chương trình (PC).
Tầm nhảy của lệnh này trong khoảng từ –128 đến 127 ô nhớ. Trước
khi cộng, thanh ghi PC sẽ tăng đến đòa chỉ theo sau lệnh nhảy rồi tính
toán đòa chỉ offset cần thiết để nhảy đến đòa chỉ yêu cầu.
25