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                                                          _ _ _ _ _ _ _ _ _ _                      _ _ _ _ _ _ _ _ _ _

v     LỜI GIỚI THIỆU :

Là sinh viên thuộc ngành Điện tử, bản thân người làm đề tài từ lâu đã có mong muốn trước khi ra trường sẽ có cơ hội sử dụng những kiến thức đã học để tạo ra một sản phẩm có ích cho xã hội cũng như chính bản thân và đó cũng là dịp để đánh giá lại kiến thức đã học tập trong suốt quá trình rèn luyện trên giảng đường Đại học.

Luận văn tốt nghiệp có lẽ là cơ hội tốt nhất mà nhà trường đã tạo ra để bản thân người làm có dịp thử thách chính mình trước khi tiếp cận với thực tế.

Được sự gợi ý của thầy TRẦN SUM, người làm luận văn đã quyết định chọn đề tài  “Điện năng kế điện tử giao tiếp máy tính”. Trước khi giao đề tài này thầy TRẦN SUM cũng đã hỏi thử có dám làm không vì đây là một đề tài mới. Lúc đó bản thân người làm cũng cảm thấy hơi lo nhưng cũng đã đồng ý nhận đề tài và chỉ biết là sẽ cố gắng hết sức mình.

“Điện năng kế điện tử” là một đề tài ứng dụng kĩ thuật điện tử trong thiết bị đo lường và hiển thị số nhưng đã nâng cao hơn một chút so với các thiết bị đo lường điện tử trước đây là có khả năng tính toán số liệu đã thu thập bằng phần mềm và giao tiếp được với máy tính. Điều này tạo nhiều thuận lợi cho việc sử dụng và điều khiển, và đây cũng là xu hướng chung của các thiết bị ngày nay.

Như vậy, khâu cơ bản của đề tài là đo lường các đại lượng điện bằng các phương pháp truyền thống nhưng vì các bộ phận xử lí phía sau là thiết bị số cho nên tuy là vẫn đo đạc các đại lượng đó nhưng phương pháp đã có khác đi chút  ít nhằm làm tương hợp với thiết bị điện tử.

Khi đã có các đại lượng điện được đo đạc cụ thể thì phần công việc tiếp theo là do phần mềm chịu trách nhiệm xử lí thông qua một thiết bị có khả năng tính toán và xử lí dữ liệu đó có thể là một vi xử lí hoặc một vi điều khiển có sự kết nối với các thiết bị phụ trợ bên ngoài.

Đề tài do vậy đã có sự liên quan đến khá nhiều vấn đề lí thuyết, điều này đòi hỏi bản thân người làm phải cần phải tìm tòi và vận dụng.

Trong xu thế hiện nay là việc điện tử hóa các thiết bị phục vụ cho con người nhằm 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.

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 quí 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 xử lí không thể nào đáp ứng được tất cả các yêu cầu từ thiết bị bên ngoài mà không cần sự trợ giúp từ một thiết bị phần cứngï.

Cần phải lưu ý rằng, công việc quan trọng nhất của khối điều khiển là thu thập tín hiệu tại các đầu dò và xử lí dữ liệu để tính toán ra đại lượng mong muốn là điện năng tiêu thụ, do vậy khi viết phần mềm để đảm nhận những công việc thay thế cho phần cứng bên ngoài tức là khối xử lí sẽ phải gánh vác thêm nhiệm vụ thì có thể gây ra sự sai số quá mức cho phép và lúc đó chương trình sẽ trở nên quá phức tạp.

Sinh viên thực hiện đề tài

Trần Đại Nghĩa

CHƯƠNG 1:

TÓM LƯỢC

CÁC VẤN ĐỀ LÍ THUYẾT

LIÊN QUAN ĐỀ TÀI

Đề tài :  “Điện năng kế điện tử giao tiếp máy tính” có liên quan đến nhiều vấn đề lí thuyết. Nhưng trong phạm vi của một Luận Văn Tốt Nghiệp, người làm đề tài không thể trình bày chi tiết từng vấn đề được, mà chỉ đề cập đến một cách tóm lược nhằm làm cơ sở cho các lí luận sau này. Do vậy nếu các bạn sinh viên nếu có nhu cầu tìm hiểu sâu hơn hãy nên tham khảo trong các tài liệu chuyên môn của ngành.

A.  VI ĐIỀU KHIỂN 8951

I .  MÔ TẢ CẤU TRÚC PHẦN CỨNG CỦA VI ĐIỀU KHIỂN 8951.

1/  Giới thiệu họ MCS51:

MCS51 là một họ IC vi điều khiển (Microcontroller ) do hãng Intel sản xuất. Các IC tiêu biểu cho họ MCS51 là 8051 và 8031. Đặc biệt, vi điều khiển 8951 được sản xuất gần đây mang các đặc điểm sau:

§   4 Kbytes EEPROM.

§   128 bytes RAM.

§   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 ms.

2/  Sơ lược về các chân của 8951:

mC 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ỉ.

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 như các đường xuất nhập hoặc là byte cao của bus địa chỉ đối với các thiết kế dùng bộ nhớ mở rộng.

d/  Port 3:

Port 3 là một port công dụng kép trên các chân 10 – 17. Các chân của port này có nhiều chức năng, các công dụng chuyển đổi có liên hệ với các đặc tính đặc biệt của 8951 như ở 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

INT0\

INT1\

T0

T1

WR\

RD\

Dữ liệu nhận cho port nối tiếp

Dữ liệu phát cho port nối tiếp

Ngắt 0 bên ngoài

Ngắt 1 bên ngoài

Ngõ vào của Timer/counter 0

Ngõ vào của Timer/counter 1

Xung ghi bộ nhớ dữ liệu ngoài

Xung đọc bộ nhớ dữ liệu ngoài

2.2/  Các tín hiệu điều khiển:

mC 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 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.

mC 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.

c/  EA\ (External Access):

Tín hiệu vào EA\ trên chân 31 thường được mắc 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.

Khi dùng 8031, EA\ luôn được nối mức thấp vì 8031 không có bộ nhớ chương trình trên chip. Nếu EA\ được nối mức thấp thì bộ nhớ chương trình bên trong 8951 sẽ bị cấm và chương trình chỉ được thi hành từ EPROM mở rộng.

Người ta còn dùng EA\ làm chân cấp điện áp 21V khi lập trình cho EEPROM trong 8051.

d/ 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 bên trong 8951 được tải những giá trị thích hợp để khởi động hệ thống.

e/  Các ngõ vào bộ dao động trên chip:

Như đã thấy trong các hình trên, 8951 có một bộ dao động trên chip. Nó thường được nối với một thạch anh giữa hai chân 18 và 19. Các tụ giữ cũng cần thiết như đã vẽ. Tần số thạch anh thông thường là 12 Mhz.

f/  Các chân nguồn:

8951 hoạt động với nguồn đơn +5V. Vcc được nối vào chân 40 và Vss (GND) được nối vào chân 20.

3/  Tổ chức bộ nhớ:

3.1/  Khảo sát tổ chức bộ nhớ 8951:

mC  8951 có bộ nhớ được tổ chức theo cấu trúc Harvard : có những vùng bộ nhớ riêng biệt cho chương trình và dữ liệu.

Như đã nói ở trên, cả chương trình và dữ liệu có thể ở bên trong (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

0000

0000

Bộ nhớ trên chip                                        Bộ nhớ mở rộng

Tóm tắt các vùng bộ nhớ của 8951.

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 truy xuất trực tiếp giống như các địa chỉ bộ nhớ khác.

§         Ngăn xếp bên trong RAM nội nhỏ hơn so với RAM ngoài so với bộ xử lí khác.

3.2/  Chi tiết về bộ nhớ RAM trên chip:

Như sẽ thấy trong hình sau, RAM bên trong 8951 được phân chia thành các bank thanh ghi (00H – 1FH), RAM địa chỉ hóa bit (20H – 2FH), RAM đa dụng (30H – 7FH) và các thanh ghi chức năng đặc biệt trong khoảng (80H – FFH).

v    RAM đa dụng:

Mặc dù trên hình cho thấy 80 bytes RAM đa dụng chiếm các địa chỉ từ 30H – 7FH, 32 bytes dưới cùng từ 00H – 1FH cũng có thể được dùng với mục đích tương tự (mặc dù các địa chỉ này đã có mục đích khác).

Địa chỉ                                                    Địa chỉ

byte                Địa chỉ bit                         byte                 Địa chỉ bit

7F

RAM đa dụng

FF

F0

F7

F6

F5

F4

F3

F2

F1

F0

B

E0

E7

E6

E5

E4

E3

E2

E1

E0

ACC

D0

D7

D6

D5

D4

D3

D2

_

D0

PSW

30

B8

_

_

_

BC

BB

BA

B9

B8

IP

2F

7F

7E

7D

7C

7B

7A

79

78

2E

77

76

75

74

73

72

71

70

B0

B7

B6

B5

B4

B3

B2

B1

B0

P3

2D

6F

6E

6D

6C

6B

6A

69

68

2C

67

66

65

64

63

62

61

60

A8

AF

_

_

AC

AB

AA

A9

A8

IE

2B

5F

5E

5D

5C

5B

5A

59

58

2A

57

56

55

54

53

52

51

50

A0

A7

A6

A5

A4

A3

A2

A1

A0

P2

29

4F

4E

4D

4C

4B

4A

49

48

28

47

46

45

44

43

42

41

40

99

không được địa chỉ hóa bit

SBUF

27

3F

3E

3D

3C

3B

3A

39

38

98

9F

9E

9D

9C

9B

9A

99

98

SCON

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

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.

RAM bên trong cũng có thể được truy xuất dùng cách đánh địa chỉ gián tiếp qua R0 hay R1. Ví dụ, hai lệnh sau thi hành cùng nhiệm vụ như lệnh đơn ở trên:

MOV   R0,  #5FH

MOV     A,  @R0

Lệnh đầu dùng địa chỉ tức thời để di chuyển giá trị 5FH vào thanh ghi R0, và lệnh thứ hai dùng địa chỉ gián tiếp để di chuyển dữ liệu “được trỏ bởi R0” vào thanh ghi tích lũy.

v    RAM địa chỉ hóa từng bit:

mC 8951 chứa 210 bits được địa chỉ hóa, trong đó 128 bits là ở các địa chỉ byte 20H đến 2FH, và phần còn lại là trong các thanh ghi chức năng đặc biệt.

Ý tưởng truy xuất từng bit riêng rẽ bằng phần mềm là một đặc tính tiện lợi của vi điều khiển nói chung. Các bit có thể được đặt, xóa, AND, OR, … với một lệnh đơn. Trong khi đó, đa số các vi xử lí đòi hỏi một chuỗi lệnh đọc – sửa – ghi để đạt được hiệu quả tương tự. Hơn nữa, các port I/O cũng được địa chỉ hóa từng bit làm đơn giản phần mềm xuất nhập từng bit.

Có 128 bits được địa chỉ hóa đa dụng ở các byte 20H đến 2FH. Các địa chỉ này được truy xuất như các byte hoặc như các bit phụ thuộc vào lệnh được dùng. Ví dụ, để đặt bit 67H, ta dùng lệnh sau:

SET   67H

Chú ý rằng “địa chỉ bit 67H” là bit có trọng số lớn nhất (MSB) ở “địa chỉ byte 2CH”. Lệnh trên sẽ không tác động đến các bit khác ở địa chỉ này. Các vi xử lí sẽ phải thi hành nhiệm vụ tương tự như sau:

MOV   A, 2CH            ; đọc cả byte

ORL    A,  #10000000B      ; set MSB

MOV   2CH, A            ; ghi lại cả byte

v    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 đếm chương trình và thanh ghi lệnh vì các thanh ghi này hiếm khi bị tác động trực tiếp, nên không lợi lộc gì khi đặt chúng vào trong RAM trên chip). Đó là lí do để 8951 có nhiều thanh ghi như vậy. Cũng như R0 đến R7, có 21 thanh ghi chức năng đặc biệt (SFR: Special Function Register) ở vùng trên của RAM nội, từ địa chỉ 80H đến FFH. Chú ý rằng hầu hết 128 địa chỉ từ 80H đến FFH không được định nghĩa. Chỉ có 21 địa chỉ SFR là được định nghĩa.

Ngoại trừ thanh ghi tích lũy A có thể được truy xuất ngầm như đã nói, đa số các SFR được truy xuất dùng địa chỉ trực tiếp. Chú ý rằng một vài SFR có thể được địa chỉ hóa bit hoặc byte. Người thiết kế phải thận trọng khi truy xuất bit và byte. Ví dụ lệnh sau:

SETB  0E0H

Lệnh này sẽ set bit 0 trong thanh ghi tích lũy, các bit khác không đổi. Ta thấy rằng E0H đồng thời là địa chỉ byte của cả thanh ghi tích lũy và là địa chỉ bit của bit có trọng số nhỏ nhất trong thanh ghi tích lũy. Vì lệnh SETB chỉ tác động trên bit, nên chỉ có địa chỉ bit là có hiệu quả.

a/  Từ trạng thái chương trình:

Từ trạng thái chương trình (PSW: Program Status Word) ở địa chỉ D0H chứa các bit trạng thái như bảng tóm tắt sau:

Bit

Kí hiệu

Địa chỉ

Ý nghĩa

PSW.7

CY

D7H

Cờ nhớ

PSW.6

AC

D6H

Cờ nhớ phụ

PSW.5

F0

D5H

Cờ 0

PSW.4

RS1

D4H

Bit 1 chọn bank thanh ghi

PSW.3

RS0

D3H

Bit 0 chọn bank thanh ghi

00 = bank 0 ( địa chỉ 00H – 07H )

01 = bank 1 ( địa chỉ 08H – 0FH )

10 = bank 2 ( địa chỉ 10H – 17H )

11 = bank 3 ( địa chỉ 18H – 1FH )

PSW.2

OV

D2H

Cờ tràn

PSW.1

_

D1H

Dự trữ

PSW.0

P

D0H

Cờ parity chẵn

•        Cờ nhớ:

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.

•        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

MOV   A, R7

Khi chương trình được hợp dịch, các địa chỉ bit đúng được thay thế cho các kí hiệu “RS1” và “RS0”.

Vậy, lệnh SETB RS1 sẽ giống như lệnh SETB 0D4H.

•        Cờ tràn:

Cờ tràn (OV) được set sau một lệnh cộng hoặc trừ nếu có phép toán bị tràn. Khi các số có dấu được cộng hoặc trừ với nhau, phần mềm có thể kiểm tra bit này để xác định xem kết quả có nằm trong tầm xác định không. Khi các số không dấu được cộng, bit OV có thể được bỏ qua. Các kết quả lớn hơn +127 hoặc nhỏ hơn –128  sẽ set bit OV.

Ví dụ, phép cộng sau bị tràn và bit OV được set :

Hex        0F                          Thập phân       15

+                                               +

7F                                                  127

8E                                                  142

Kết quả là một số có dấu 8EH được xem như –14, không phải là một kết quả đúng (142), vì vậy bit  OV được set.

b/  Thanh ghi B:

Thanh ghi B ở địa chỉ F0H được dùng với thanh ghi tích lũy A cho các phép toán nhân và chia.

Lệnh MUL AB sẽ nhân các giá trị không dấu 8 bit trong A và B rồi trả về kết quả 16 bit trong A (byte thấp) và B (byte cao).

Lệnh DIV AB sẽ chia A cho B rồi trả về kết quả nguyên trong A và phần dư trong B.

Thanh ghi B cũng có thể được xem như thanh ghi đệm đa dụng. Nó được địa chỉ hóa từng bit bằng các địa chỉ bit F0H đến F7H.

c/  Con trỏ ngăn xếp:

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.

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 16 bit ở địa chỉ 82H (DPL: byte thấp) và 83H (DPH: byte cao).

Ba lệnh sau sẽ ghi 55H vào RAM ngoài ở địa chỉ 1000H:

MOV       A, #55H

MOV       DPTR, #1000H

MOVX    @DPTR, A

Lệnh đầu tiên dùng địa chỉ tức thời để tải dữ liệu 55H vào thanh ghi tích lũy. Lệnh thứ hai cũng dùng địa chỉ tức thời, lần này để tải dữ liệu 16 bits 1000H vào con trỏ dữ liệu. Lệnh thứ ba dùng địa chỉ gián tiếp để di chuyển dữ liệu trong A (55H) đến RAM ngoài ở địa chỉ được chứa trong DPTR (1000H).

e/  Các thanh ghi port xuất nhập:

Các port của 8951 bao gồm Port 0 ở địa chỉ 80H, Port 1 ở địa chỉ 90H, Port 2 ở địa chỉ A0H và Port 3 ở địa chỉ B0H.

Tất cả các port đều được địa chỉ hóa từng bit. Điều đó cung cấp một khả năng giao tiếp thuận lợi.

Ví dụ, nếu một motor được nối qua một cuộn dây có transistor lái đến bit 7 của Port 1, nó có thể được bật và tắt bằng một lệnh đơn:

SETB   P1.7   ; bật motor

CLR     P1.7   ; tắt motor

Các lệnh trên dùng dấu chấm để xác định một bit trong một byte. Trình hợp dịch sẽ thi hành sự chuyển đổi cần thiết, vì vậy hai lệnh sau đây là như nhau:

CLR   P1.7

CLR   97H

Trong một ví dụ khác, xem xét giao tiếp đến một thiết bị với một bit trạng thái gọi là BUSY, được set khi thiết bị đang bận và được xóa khi thiết bị đã sẵn sàng. Nếu BUSY được nối tới P1.5, vòng lặp sau sẽ được dùng để chờ thiết bị trở lại trạng thái sẵn sàng:

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:

mC 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:

mC8951 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.

h/  Các thanh ghi ngắt:

mC 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:

Thanh ghi điều khiển công suất (PCON) ở địa chỉ 87H chứa nhiều bit điều khiển. Chúng được tóm tắt trong bảng sau:

Bit

Kí hiệu

Ý nghĩa

7

SMOD

Bit gấp đôi tốc độ baud, nếu được set thì tốc độ baud sẽ tăng gấp đôi trong các

mode1, 2 và 3 của port nối tiếp.

6

_

Không định nghĩa

5

_

Không định nghĩa

4

_

Không định nghĩa

3

GF1

Bit cờ đa dụng 1

2

GF0

Bit cờ đa dụng 0

1

PD

Giảm công suất, được set để kích hoạt  mode giảm công suất, chỉ thoát khi

reset.

0

IDL

Mode chờ, set để kích hoạt mode chờ, chỉ thoát khi có ngắt hoặc reset hệ thống.

5/  Bộ nhớ ngoài:

mC 8951 có khả năng mở rộng bộ nhớ lên đến 64K bộ nhớ chương trình và 64K bộ nhớ dữ  liệu ngoài. Do đó, có thể dùng thêm ROM và RAM bên ngoài nếu cần.

Khi dùng bộ nhớ ngoài, Port 0 không còn là một port I/O thuần túy nữa. Nó được hợp kênh giữa bus địa chỉ (A0 – A7) và bus dữ liệu (D0 – D7) với tín hiệu ALE để chốt byte thấp của địa chỉ khi bắt đầu mỗi chu kì bộ nhớ. Port 2 thông thường được dùng cho byte cao của bus địa chỉ.

Trong nửa đầu của mỗi chu kì bộ nhớ, byte thấp của địa chỉ được cấp trong Port 0 và được chốt bằng xung ALE. Một IC chốt 74HC373 (hoặc tương đương) sẽ giữ byte địa chỉ thấp trong phần còn lại của chu kì bộ nhớ. Trong nửa sau của chu kì bộ nhớ Port 0 được dùng như bus dữ liệu và được đọc hoặc ghi tùy theo lệnh.

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 ms.

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:

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.

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:

Giản đồ thời gian của lệnh MOVX.

Giản đồ thời gian cho lệnh ghi (MOVX  @DPTR, A) cũng tương tự chỉ khác đường WR\ sẽ thay vào đường RD\ và dữ liệu được xuất ra trên chân Port 0 (RD\ vẫn giữ mức cao).

c/  Giải mã địa chỉ:

Nếu có nhiều EPROM và/hoặc nhiều RAM được giao tiếp với 8951, thì cần phải giải mã địa chỉ.

Mạch giải mã cũng tương tự như các hệ vi xử lí khác. Ví dụ, nếu dùng nhiều EPROM và RAM 8Kbytes thì bus địa chỉ cần phải được giải mã để xác định IC nhớ nào được chọïn.

Người ta thường dùng IC giải mã 74HC138 với các ngõ ra được nối tới các ngõ vào chọn chip (CS) trên các IC nhớ. Hình sau vẽ một hệ thống với nhiều EPROM 8K 2764  và RAM 8K 6264:

Giải mã địa chỉ.

d/  Xếp chồng bộ nhớ chương trình và dữ liệu bên ngoài:

Vì bộ nhớ chương trình là ROM, nên nảy sinh một vấn đề bất tiện khi phát triển phần mềm cho 8051/8031. Đối với 8951 đã cải tiến bằng cách thay thế bằng EEPROM, hoặc dùng một cách để khắc phục nhược điểm trên là xếp chồng các vùng nhớ chương trình và dữ liệu.

Một IC RAM có thể chứa cả chương trình và dữ liệu bằng cách nối đường OE\ của RAM vào một mạch logic AND của PSEN\ và RD\.

Mạch trên hình sau cho phép một IC RAM được dùng làm bộ nhớ chương trình và dữ liệu:

Vậy một chương trình có thể được tải vào RAM (bằng cách ghi nó như bộ nhớ dữ liệu) và thi hành (bằng cách truy xuất nó như bộ nhớ chương trình).

6/  Lệnh Reset:

mC8951 đượ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

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 ở địa chỉ đầu tiên trong bộ nhớ chương trình: địa chỉ 0000H.

Nội dung của RAM trên chip không bị thay đổi bởi lệnh Reset.

II/  TẬP LỆNH CỦA 8951 :

Tập lệnh 8951 có 255 lệnh gồm 139 lệnh 1 byte, 92 lệnh 2 byte và 24 lệnh 3 byte.

1/  Các chế độ đánh địa chỉ:

a/  Địa chỉ thanh ghi:

mC8951 có bốn bank thanh ghi, mỗi bank có 8 thanh ghi đánh số từ R0 đến R7. Tại mỗi thời điểm chỉ có một bank thanh ghi được tích cực.

Mã lệnh       n    n   n

Địa chỉ thanh ghi

Muốn chọn bank thanh ghi nào ta chỉ cần gán các bít nhị phân thích hợp vào RS1 (PSW.4) và RS0 (PSW.3) trong thanh ghi trạng thái chương trình (PSW).

Ngoài ra, một số thanh ghi đặc biệt như thanh ghi tích lũy, thanh ghi con trỏ dữ liệu cũng được xác định trong các lệnh trên nên không cần bit địa chỉ.

Trong các lệnh này thanh ghi tích lũy được kí hiệu là “A”, con trỏ dữ liệu là “DPTR”, thanh ghi đếm chương trình là “PC”, cờ nhớ là “C”, cặp thanh ghi tích lũy là “AB”.

b/ Địa chỉ trực tiếp:

Trong chế độ này, các thanh ghi bên trong 8951 được đánh địa chỉ trực tiếp bằng 8 bits địa chỉ nằm trong byte thứ hai của mã lệnh.

Mã lệnh                                            Địa chỉ trực tiếp

Địa chỉ trực tiếp.

Dù vậy, trình hợp dịch cho phép gọi tên các thanh ghi chức năng đặc biệt (có địa chỉ trực tiếp từ 80H đến FFH).

Ví dụ, P0 cho Port 0, TMOD cho thanh ghi chế độ timer, …

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.

mC8951 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.

Như vậy, địa chỉ mới là địa chỉ tương đối so với lệnh kế tiếp chứ không phải bản thân lệnh nhảy. Thường lệnh này có liên quan đến nhãn được định nghĩa trước.

Mã lệnh                                            Offset tương đối

Địa chỉ tương đối.

f/  Địa chỉ tuyệt đối :

Địa chỉ tuyệt đối chỉ dùng trước các lệnh ACALL và AJIMP.

Các lệnh 2 byte này dùng để rẽ nhánh vào một trang 2Kbyte của bộ nhớ chương trình bằng cách cấp 11 bit địa chỉ thấp (A0-A10) để xác định địa chỉ đích trong trang mã. Còn 5 bit cao của địa chỉ đích chính là 5 bit hiện hành trong thanh ghi đếm chương trình.

Vì vậy, địa chỉ của lệnh theo sau lệnh rẽ nhánh và địa chỉ đích của lệnh rẽ nhánh cần phải cùng trang mã 2Kbyte (có cùng 5 bits địa chỉ cao).

A15                 A11   A10                                                    A0

Xác định trang mã.               Xác định địa chỉ trong trang mã.

A10-A8         Mã lệnh                                   Offset tương đối

Địa chỉ tuyệt đối.

g/  Địa chỉ dài :

Địa chỉ dài chỉ dùng cho lệnh LCALL và LJIMP. Các lệnh này chiếm 3 byte và dùng 2 byte sau (byte 2 và byte 3) để định địa chỉ đích của lệnh (16 bit). Ưu điểm của lệnh này là có thể sử dụng trong toàn bộ vùng nhớ 64 Kbyte.

Tuy nhiên, lệnh này chiếm nhiều byte và lệ thuộc vào vị trí vùng nhớ.

Mã lệnh   `                                A15 - A8                               A7 – A0

Địa chỉ dài.

h/  Địa chỉ tham chiếu:

Địa chỉ tham chiếu dùng một thanh ghi cơ bản (hoặc thanh ghi đếm chương trình PC hoặc thanh ghi con trỏ dữ liệu DPTR) và địa chỉ offset (trong thanh ghi tích lũy A) để tạo địa chỉ được tác động cho các lệnh JMP hoặc MOVC.

Các bảng nhảy và bảng tìm kiếm dễ dàng được tạo ra để sử dụng địa chỉ tham chiếu.

Địa chỉ cơ bản          Offset

PC hoặc DPTR

+

ACC

=

Địa chỉ cần truy xuất

Địa chỉ tham chiếu.

2/  Các nhóm lệnh của 8951:

Tập lệnh của 8951 được chia làm 5 nhóm:

§                 Số học

§                 Luận lí

§                 Chuyển dữ liệu

§                 Chuyển điều khiển

Các chỉ dẫn thiết lập lệnh:

Rn         :  Thanh ghi R0 đến R7 của bank thanh ghi được chọn.

data       :  8 bit địa chỉ vùng dữ liệu bên trong. Nó có thể là vùng RAM dữ liệu

trong (0-127) hoặc các thanh ghi chức năng đặc biệt.

@Ri      :  8 bit vùng RAM dữ liệu trong (0-255) được đánh địa chỉ gián tiếp qua

thanh ghi R0 hoặc R1.

#data     :   Hằng 8 bit chứa trong câu lệnh.

#data16 :  Hằng 16 bit chứa trong câu lệnh.

addr16  :  16 bit địa chỉ đích được dùng trong lệnh LCALL và LJMP.

addr11  :  11 bit địa chỉ đích được dùng trong lệnh ACALL và AJMP.

rel         : Byte offset 8 bit có dấu được dùng trong lệnh SJUMP và những lệnh

nhảy có điều kiện.

bit          :  Bit được định địa chỉ trực tiếp trong RAM dữ liệu nội hoặc các thanh

ghi chức năng đặc biệt.

A/  Nhóm lệnh xử lí số học:

ADD A, Rn         (1 byte, 1 chu kì máy) : Cộng nội dung thanh ghi Rn vào thanh

ghi A.

ADD A, data       (2, 1)  : Cộng trực tiếp 1 byte vào thanh ghi A.

AAD A, @Ri       (1, 1)  : Cộng gián tiếp nội dung RAM chứa tại địa chỉ được

khai báo trong Ri vào thanh ghi A.

ADD A, #data     (2, 1)  : Cộng dữ liệu tức thời vào A.

ADDC A, Rn      (1, 1)  : Cộng thanh ghi và cờ nhớ vào A.

ADDC A, data    (2, 1)  : Cộng trực tiếp byte dữ liệu và cờ nhớ vào A.

ADDC A, @Ri    (1, 1)  : Cộng gián tiếp nội dung RAM và cờ nhớ vào A.

ADDC A, #data  (2, 1) : Cộng dữ liệu tức thời và cờ nhớ vào A.

SUBB A, Rn        (1, 1)  : Trừ nội dung thanh ghi A cho nội dung thanh ghi Rn và cờ nhớ.

SUBB A, data     (2, 1)  : Trừ trực tiếp A cho một số và cờ nhớ.

SUBB A, @Ri     (1, 1)  : Trừ gián tiếp A cho một số và cờ nhớ.

SUBB A, #data   (2, 1)  : Trừ nội dung A cho một số tức thời và cờ nhớ.

INC A                  (1, 1)  : Tăng nội dung thanh ghi A lên 1.

INC Rn               (1, 1)  : Tăng nội dung thanh ghi Rn lên 1.

INC data             (2, 1)  : Tăng dữ liệu trực tiếp lên 1.

INC @Ri             (1, 1)  : Tăng gián tiếp nội dung vùng RAM lên 1.

DEC A                 (1, 1)  : Giảm nội dung thanh ghi A xuống 1.

DEC Rn              (1, 1)  : Giảm nội dung thanh ghi Rn xuống 1.

DEC data            (2, 1)  : Giảm dữ liệu trực tiếp xuống 1.

DEC @Ri            (1, 1)  : Giảm gián tiếp nội dung vùng RAM xuống 1.

INC DPTR          (1, 2)  : Tăng nội dung con trỏ dữ liệu lên 1.

MUL AB             (1, 4)  : Nhân nội dung thanh ghi A với nội dung thanh ghi B.

DIV AB               (1, 4)  : Chia nội dung thanh ghi A cho nội dung thanh ghi B.

DA A                   (1,1)   : Hiệu chỉnh thập phân thanh ghi A.

b/  Nhóm lệnh luận lí :

ANL A, Rn          (1, 1)  : AND nội dung thanh ghi A với nội dung thanh ghi Rn.

ANL A, data       (2, 1)  : AND nội dung thanh ghi A với dữ liệu trực tiếp.

ANL A, @Ri       (1, 1) : AND nội dung thanh ghi A với dữ liệu gián tiếp trong

RAM.

ANL A, #data     (2, 1)  : AND nội dung thanh ghi với dữ liệu tức thời.

ANL data, A       (2, 1)  : AND một dữ liệu trực tiếp với A.

ANL data, #data(3, 2)   : AND một dữ liệu trực tiếp với dữ liệu tức thời.

ANL C, bit          (2, 2)  : AND cờ nhớ với một bit trực tiếp.

ANL C, /bit         (2, 2)  : AND cờ nhớ với bù của một bit trực tiếp.

ORL A, Rn         (1, 1)  : OR thanh ghi A với thanh ghi Rn.

ORL A, data       (2, 1)  : OR thanh ghi A với một dữ liệu trực tiếp.

ORL A, @Ri       (1, 1)  : OR thanh ghi A với một dữ liệu gián tiếp.

ORL A, #data     (2, 1)  : OR thanh ghi A với một dữ liệu tức thời.

ORL data, A       (2, 1)  : OR một dữ liệu trực tiếp với thanh ghi A.

ORL data, #data(3, 2)   : OR một dữ liệu trực tiếp với một dữ liệu tức thời.

ORL C, bit          (2, 2)  : OR cờ nhớ với một bit trực tiếp.

ORL C, /bit         (2, 2)  : OR cờ nhớ với bù của một bit trực tiếp.

XRL A, Rn          (1, 1)  : XOR thanh ghi A với thanh ghi Rn.

XRL A, data       (2, 1)  : XOR thanh ghi A với một dữ liệu trực tiếp.

XRL A, @Ri       (1, 1)  : XOR thanh ghi A với một dữ liệu gián tiếp.

XRL A, #data     (2, 1)  : XOR thanh ghi A với một dữ liệu tức thời.

XRL data, A       (2, 1) : XOR một dữ liệu trực tiếp với thanh ghi A.

XRL data, #data(3, 2)   : XOR một dữ liệu trực tiếp với một dữ liệu tức thời.

SETB C               (1, 1)  : Đặt cờ nhớ.

SETB bit              (2, 1)  : Đặt một bit trực tiếp.

CLR A                 (1, 1)  : Xóa thanh ghi A.

CLR C                 (1, 1)  : Xóa cờ nhớ.

CPL A                 (1, 1)  : Bù nội dung thanh ghi A.

CPL C                 (1, 1)  : Bù cờ nhớ.

CPL bit                (2, 1)  : Bù một bit trực tiếp.

RL A                   (1, 1)  : Quay trái nội dung thanh ghi A.

RLC A                 (1, 1)  : Quay trái nội dung thanh ghi A qua cờ nhớ.

RR A                   (1, 1)  : Quay phải nội dung thanh ghi A.

RRC A                (1, 1)  : Quay phải nội dung thanh ghi A qua cờ nhớ.

SWAP A              (1, 1)  : Quay trái nội dung thanh ghi A 1 nibble (1/2 byte).

c/  Nhóm lệnh chuyển dữ liệu:

MOV A, Rn              (1, 1)    : Chuyển nội dung thanh ghi Rn vào thanh ghi A.

MOV A, data            (2, 1)    : Chuyển dữ liệu trực tiếp vào thanh ghi A.

MOV A, @Ri           (1, 1)    : Chuyển dữ liệu gián tiếp vào thanh ghi A.

MOV A, #data          (2, 1)    : Chuyển dữ liệu tức thời vào thanh ghi A.

MOV Rn, A              (1, 1)    : Chuyển nội dung thanh ghi A vào thanh ghi Rn.

MOV Rn, data          (2, 2)    : Chuyển dữ liệu trực tiếp vào thanh ghi Rn.

MOV Rn, #data        (2, 1)    : Chuyển dữ liệu tức thời vào thanh ghi Rn.

MOV data, A            (2, 1)    : Chuyển nội dung thanh ghi A vào một dữ liệu

trực tiếp.

MOV data, Rn          (2, 2)    : Chuyển nội dung thanh ghi Rn vào một dữ liệu

trực tiếp.

MOV data, data       (3, 2)    : Chuyển một dữ liệu trực tiếp vào một dữ liệu

trực tiếp.

MOV data, @Ri       (2, 2)    : Chuyển một dữ liệu gián tiếp vào một dữ liệu

trực tiếp.

MOV data, #data     (3, 2)    : Chuyển một dữ liệu tức thời vào một dữ liệu

trực tiếp.

MOV @Ri, A         (1, 1)    : Chuyển nội dung thanh ghi A vào một dữ liệu

gián tiếp.

MOV @Ri, data       (2, 2)    : Chuyển một dữ liệu trực tiếp vào một dữ liệu

gián tiếp.

MOV @Ri, #data     (2, 1)    : Chuyển một dữ liệu tức thời vào một dữ liệu

gián tiếp.

MOV DPTR, #data16 (3, 2): Chuyển một hằng 16 bit vào thanh ghi con trỏ

dữ liệu.

MOV C, bit               (2, 1)    : Chuyển một bit trực tiếp vào cờ nhớ.

MOV bit, C               (2, 2)    : Chuyển cờ nhớ vào một bit trực tiếp.

MOVC A, @A+DPTR     (1, 2)     : Chuyển byte bộ nhớ chương trình có địa chỉ là

@A + DPTR vào thanh ghi A.

MOVC A, @A + PC(1, 2)   : Chuyển byte bộ nhớ chương trình có địa    chỉ là

@A + PC vào thanh ghi A.

MOVX A, @Ri         (1, 2)    : Chuyển dữ liệu ngoài (8 bit địa chỉ) vào thanh ghi A.

MOVX A, @DPTR  (1, 2)    : Chuyển dữ liệu ngoài (16 bit địa chỉ) vào thanh ghi A.

MOVX @Ri, A         (1, 2)    : Chuyển nội dung A ra dữ liệu ngoài (8 bit địa chỉ).

MOVX @DPTR, A  (1, 2)    : Chuyển nội dung A ra dữ liệu ngoài (16 bit địa chỉ).

PUSH data                (2, 2)    : Chuyển dữ liệu trực tiếp vào ngăn xếp và tăng SP.

POP data                   (2, 2)    : Lấy dữ liệu trực tiếp ra khỏi ngăn xếp và giảm SP.

XCH A, Rn               (1, 1)    : Trao đổi dữ liệu giữa thanh ghi Rn và thanh ghi A.

XCH A, data             (2, 1)    : Trao đổi giữa thanh ghi A và một dữ liệu trực tiếp.

XCH A, @Ri             (1, 1)    : Trao đổi giữa thanh ghi A và một dữ liệu gián tiếp.

XCHD A, @Ri          (1, 1)    : Trao đổi giữa nibble thấp (LSN) của

của thanh ghi A và LSN của dữ liệu gián tiếp.

d/  Nhóm lệnh chuyển quyền điều khiển :

ACALL addr11               (2, 2)  : Gọi chương trình con dùng địa chỉ tuyệt đối.

LCALL addr16               (3, 2)  : Gọi chương trình con dùng địa chỉ dài.

RET                                 (1, 2)  : Trở về từ lệnh gọi chương trình con.

RETI                               (1, 2)  : Trở về từ lệnh gọi ngắt.

AJMP addr11                 (2, 2) : Nhảy tuyệt đối.

LJMP addr16                 (3, 2)  : Nhảy dài.

SJMP rel                         (2, 2)  : Nhảy ngắn.

JMP @A + DPTR          (1, 2)  : Nhảy gián tiếp từ con trỏ dữ liệu.

JZ rel                               (2, 2)  : Nhảy đến A bằng 0.

JNZ rel                            (2, 2)  : Nhảy đến A không bằng 0.

JC rel                              (2, 2)  : Nhảy đến cờ nhớ được đặt.

JNC rel                           (2, 2)  : Nhảy nếu cờ nhớ không được đặt.

JB bit, rel                        (3, 2)  : Nhảy tương đối nếu bit trực tiếp được đặt.

JNB bit, rel                     (3, 2)  : Nhảy tương đối nếu bit trực tiếp không được đặt.

JBC bit, rel                     (3, 2)  : Nhảy tương đối nếu bit trực tiếp được đặt,

rồi xóa bit.

CJNE A, data, rel           (3, 2)  : So sánh dữ liệu trực tiếp với A và nhảy nếu

không bằng.

CJNE A, #data, rel         (3, 2)  : So sánh dữ liệu tức thời với A và nhảy nếu

không bằng.

CJNE Rn, #data, rel       (3, 2)  : So sánh dữ liệu tức thời với nội dung thanh

ghi Rn và nhảy nếu không bằng.

CJNE @Ri, #data, rel    (3, 2)  : So sánh dữ liệu tức thời với dữ liệu gián tiếp

và nhảy nếu không bằng.

DJNZ Rn, rel                  (2, 2)  : Giảm thanh ghi Rn và nhảy nếu không bằng.

DJNZ data, rel                (3, 2)  : Giảm dữ liệu trực tiếp và nhảy nếu không bằng.

B.  SƠ LƯỢC VỀ BỘ NHỚ BÁN DẪN

1/  Vai Trò Bộ Nhớ Bán Dẫn:

Tuy không giữ vai trò quyết định trong một hệ thống vi xử lí nhưng bộ nhớ lại không thể vắng mặt bởi một lí do:

Bộ xử lí trung tâm chỉ có chức năng xử lí dữ liệu theo một chương trình đã định trước mà chương trình này không thể lưu trữ ở đâu khác ngoài bộ nhớ dù cho bộ nhớ có nằm bên ngoài chip hay nằm trong chính nó.

Ngoài ra, trong quá trình thực thi chương trình sẽ phát sinh các dữ liệu tạm thời, dữ liệu này cũng cần được lưu lại để sau đó được xử lí tiếp.

2/  Các Thuật Ngữ Của Bộ Nhớ:

Memory cell: Là một ô nhớ hay một tế bào nhớ, có nhiệm vụ lưu trữ một bit dữ liệu 0, hoặc 1. Ô nhớ có thể được hình thành từ một Flip-Flop, hoặc điện tích của tụ điện…

Memory word : Là một từ nhớ, bao gồm một nhóm các ô nhớ. Độ rộng của một từ dữ liệu có thể là : 4 bits, 8 bits, 16 bits …

Byte : Là một thuật ngữ đặc biệt dùng để chỉ một từ nhớ có độ          rộng = 8 bits.

Capacity : Là dung lượng của một bộ nhớ được tính bằng đơn vị bit. Đó chính là tổng số bit có thể lưu trữ trong bộ nhớ.

Dựa vào số đường địa chỉ và độ rộng của data bus của chip nhớ mà ta có thể suy ra được dung lượng bộ nhớ đó.

Address : Một bộ nhớ thì chứa đựng trong nó rất nhiều ô nhớ, để phân biệt các ô nhớ với nhau thì mỗi ô nhớ sẽ được gán cho một địa chỉ tương ứng duy nhất. Trong khi sử dụng bộ nhớ cần lưu ý một điều là : các ô nhớ khác nhau có thể lưu trữ dữ liệu giống nhau nhưng một dữ liệu khi cần lưu vào bộ nhớ thì chỉ được phép ghi lên một ô nhớ tại một địa chỉ xác định mà thôi, nếu không sẽ dẫn đến việc lãng phí bộ nhớ một cách vô ích.

Read Operation : Là hoạt động đọc hay cách thức sao chép dữ liệu từ một ô nhớ xác định trong bộ nhớ ra bên ngoài.

Write Operation : Là hoạt động ghi dữ liệu từ ngoài vào trong bộ nhớ tại địa chỉ ô nhớ được xác định trước. Dữ liệu trước đó của ô nhớ sẽ bị mất và thay vào đó là dữ liệu vừa mới ghi vào.

Access Time: Là thời gian truy xuất một ô nhớ tính từ lúc địa chỉ ô nhớ được đặt vào cho đến lúc có dữ liệu xuất hiện tại các ngõ ra.

Kí hiệu thời gian truy xuất là : tACC

Random-Access Memory (RAM): Là bộ nhớ truy xuất ngẫu nhiên theo nghĩa bất cứ ô nhớ nằm tại địa chỉ nào cũng có thời gian truy xuất như nhau. Dữ liệu chỉ tồn tại trong RAM khi nó còn nguồn nuôi. Khi mất nguồn, dữ liệu sẽ thay đổi một cách ngẫu nhiên và do đó không còn giữ được các giá trị giữ liệu đã lưu vào trước nguồn bị mất.

Read-Only Memory (ROM): Là bộ nhớ chỉ đọc tức là dữ liệu đã được nạp vào ROM ngay trong lúc sản xuất ra nó, dữ liệu này không bị thay đổi trong suốt quá trình sử dụng.

Nếu như dữ liệu trong ROM cần thay đổi thì buộc phải mua một ROM mới khác thay thế tất nhiên phải chứa chương trình cần thiết. ROM thuộc loại bộ nhớ chỉ lập trình được một lần duy nhất, ROM được dùng trong các thiết kế cần tỉ lệ đọc dữ liệu rất cao.

Một điểm cần lưu ý là thông tin đã lưu trữ trong ROM không bị mất ngay cả khi không cấp nguồn nuôi cho nó.

Static Memory: Là bộ nhớ tĩnh theo nghĩa dữ liệu khi đã ghi vào thì không cần phải nạp lại, nhưng dữ liệu sẽ bị mất đi khi không còn cấp điện cho nó.

Dynamic Memory: Là bộ nhớ động theo nghĩa dữ liệu khi đã nạp vào còn cần thiết phải thường xuyên nạp lại, nếu không chúng sẽ không giữ được giá trị như cũ. Tức là dữ liệu có thể bị mất ngay cả khi còn cấp điện cho nó. Công việc nạp lại dữ liệu được gọi là quá trình làm tươi bộ nhớ (Refresh).

Data bus : Là một nhóm các đường truyền dùng để tải dữ liệu từ bộ nhớ ra ngoài và ngược lại. Do vậy, data bus có thể truyền theo hai chiều.

Address bus : Là nhóm đường truyền dùng để tải các bit địa chỉ từ bộ xử lí trung tâm đến bộ nhớ nhằm xác định ô nhớ nào được truy xuất. Address chỉ có một chiều duy nhất.

3/  Hoạt Động Tổng Quát Của Bộ Nhớ:

Mỗi hệ thống nhớ đòi hỏi một số các đường tín hiệu vào ra nhằm thực thi các chức năng sau:

•        Xác định địa chỉ của ô nhớ cần truy xuất trong hoạt động đọc/ghi.

•        Nhận tín hiệu điều khiển để thực thi hoạt động đọc hoặc ghi.

•        Khi thực hiện hoạt động đọc, nó sẽ nhận dữ liệu để lưu trữ vào ô nhớ.

•        Khi thực hiện hoạt động ghi, nó sẽ gởi dữ liệu ra bộ nhớ.

•        Cho phép (hoặc ngăn cấm) việc truy xuất bộ nhớ.

Tham khảo một bộ nhớ có 32 từ nhớ 4 bits (dung lượng = 32 X 4 bits).

Do độ rộng của từ dữ liệu = 4 bits, nên có 4 đường dữ liệu vào là : I_0, I_1, I_2, I_3 và 4 đường dữ liệu ra : O_0, O_1, O_2, O_3.

Khi thực hiện ghi dữ liệu thì từ dữ liệu 4 bits cần ghi sẽ được áp vào các ngõ vào I_0, I_1, I_2, I3.

Khi muốn đọc dữ liệu ra từ bộ nhớ, từ dữ liệu sẽ xuất hiện tại các ngõ ra O_0, O_1, O_2, O_3.

Do bộ nhớ chứa 32 từ nhớ nên phải có 32 vị trí lưu trữ khác nhau được phân biệt thông qua 32 địa chỉ nhị phân. Muốn vậy, phải cần 5 bits địa chỉ để có 32 trạng thái khác nhau tương ứng với 32 địa chỉ ô nhớ.

Ngõ vào R/W\: Dùng để xác định chế độ hoạt động của bộ nhớ là chế độ đọc hay ghi dữ liệu.

Một số bộ nhớ sử dụng hai ngõ vào riêng biệt, một cho hoạt động đọc và một cho hoạt động ghi. Nếu tích hợp chung lại thành một đường R/W\ thì quá trình đọc dữ liệu xảy ra khi R/W\ = 1, và quá trình ghi dữ liệu xảy ra khi R/W\ = 0.

Ngõ vào cho phép (Memory Enable) : khi một hệ thống có sử dụng nhiều bộ nhớ thì cần thiết phải phân biệt bộ nhớ nào sẽ được truy xuất tại từng thời điểm, việc này có thể thực hiện được bằng cách sử dụng ngõ vào cho phép (CS\) để cho phép bộ nhớ nào được truy xuất tại thời điểm hiện tại đồng thời ngăn cấm tất cả các bộ nhớ còn lại.

4/  Sự Kết Nối Giữa Vi Xử Lí (mP) Với Bộ Nhớ:

Một vi xử lí đơn độc thì không thể thực hiện được chức năng điều khiển mà nhất thiết phải cần đến các thiết bị ngoại vi hỗ trợ cho nó. Vi xử lí thực hiện việc kết nối với bộ nhớ như thế nào để có thể truy xuất bộ nhớ để lấy mã lệnh và ghi dữ liệu.

Vi xử lí kết nối với bộ nhớ thông qua 3 bus sau:

•        Bus địa chỉ (Address bus)

•        Bus dữ liệu (Data bus)

•        Bus điều khiển (Control bus).

Thông qua 3 bus này vi xử lí có thể thực hiện việc truy xuất đến bất cứ ô nhớ cần thiết nào trong toàn hệ thống nhớ.

Sơ đồ kết nối:

Hoạt động ghi dữ liệu:

•        mP đặt địa chỉ của ô nhớ cần lưu dữ liệu lên address bus.

•        mP đặt dữ liệu cần lưu trữ lên data bus.

•        mP kích thích tín hiệu điều khiển thích hợp trong bus điều khiển để ghi    dữ liệu.

•        Dữ liệu trên bus sẽ truyền vào ô nhớ đã được lựa chọn.

Hoạt động ghi dữ liệu:

•        mP đặt địa chỉ của ô nhớ cần đọc dữ liệu lên address bus.

•        mP kích thích tín hiệu điều khiển thích hợp trong bus điều khiển để yêu cầu bộ nhớ xuất dữ liệu ra data bus.

•        IC nhớ sẽ giải mã địa chỉ này để xác định xem ô nhớ nào được lựa chọn cho hoạt động đọc dữ liệu.

•        IC nhớ đặt dữ liệu của ô nhớ đã chọn lên data bus để truyền về mP.

Read-Only Memory (ROM) : Bộ nhớ chỉ đọc

Loại bộ nhớ này được thiết kế chủ yếu để lưu trữ các dữ liệu cố định. Khi hoạt động bình thường dữ liệu mới không thể ghi vào ROM được nhưng dữ liệu có thể đọc ra từ ROM.

Đối với một số ROM, dữ liệu được ghi vào nó ngay trong quá trình sản xuất. Việc nạp dữ liệu vào cho ROM được gọi là lập trình cho ROM. Một số ROM không cho phép việc thay đổi dữ liệu sau khi đã được lập trình (chỉ lập trình một lần duy nhất).

Ø     Các ROM sau này được cải tiến để cho phép việc xóa dữ liệu và lập trình lại.

Chức năng của ROM:

ROM chủ yếu được dùng để lưu trữ các thông tin trong suốt quá trình hoạt động của hệ thống. Phần lớn ROM được dùng để lưu trữ chương trình trong máy tính.

Vì ROM không làm mất dữ liệu ngay cả khi bị mất điện cho nên chương trình đã nạp vào ROM được bảo toàn. Khi máy tính được cấp điện, nó sẽ lập tức thi hành chương trình trong ROM.

Sơ đồ ROM có dung lượng 16 X 8 bits.

Ngõ ra dữ liệu của hầu hết các ROM là các ngõ ra 3 trạng thái nhằm cho phép sự kết nối nhiều ROM đến cùng một bus dữ liệu trong trường hợp có sự mở rộng bộ nhớ.

Ngõ vào điều khiển CS\ (Chip Select) đôi khi được gọi là: OE\ (Output Enable) hoặc CE\ (Chip Enable) để cho phép hoặc ngăn cấm các ngõ ra.

Khi cần đọc dữ liệu từ ROM, chúng ta cần làm hai điều : đặt một địa chỉ thích hợp tại các ngõ vào trên bus địa chỉ, sau đó tác động đến ngõ vào cho phép CS\ để cho phép dữ liệu trong ROM xuât ra ngoài.

a/  Cấu trúc của ROM 16 X 8 bits:

Cấu trúc bên trong của ROM thì rất phức tạp, và ta cũng không cần thiết phải biết sự chi tiết bên trong.

Nhìn chung ROM có cấu trúc gồm 4 phần chính sau:

Ø     Giải mã hàng (Row-decode).

Ø     Giải mã cột (Column-decode).

Ø     Mảng thanh ghi (Register- array).

Ø     Đệm ngõ ra (Output-buffers).

Register-array: Mảng thanh ghi còn gọi là ma trận thanh ghi để lưu trữ dữ liệu đã lập trình trong ROM. Mỗi thanh ghi chứa một số các ô nhớ tương đương với độ dài từ dữ liệu.

Trong sơ đồ trên, mỗi thanh ghi chứa 8 bits dữ liệu. Chúng được sắp xếp trong một ma trận vuông, đây cũng là dạng chung cho nhiều chip nhớ bán dẫn khác.

Ngõ ra của từ dữ liệu 8 bits được kết nối với bus dữ liệu bên trong.

Mỗi thanh ghi có 2 ngõ vào cho phép (E), khi cả hai ngõ vào này cùng lên mức 1 thì sẽ cho phép dữ liệu trong thanh ghi được gởi ra bus dữ liệu.

Address-decoders: Mã địa chỉ A_3, A_2, A_1, A_0  xác định thanh ghi nào trong ma trận được phép đặt từ dữ liệu 8 bits lên bus dữ liệu.

Hai bit A_1,A_0 được đưa đến bộ giải mã 2 đường sang 4 đường để chọn 1 trong 4 hàng. Tương tự, hai bit A_3, A_2 dùng để chọn 1 trong 4 cột. Do đó, sẽ chỉ có một thanh ghi duy nhất tại một hàng và một cột được xác định bởi địa chỉ ngõ vào có quyền gởi dữ liệu lên bus.

Output-buffers : Dữ liệu trong thanh ghi khi gửi ra sẽ được đưa vào bộ đệm dữ liệu, và chờ đến khi tín hiệu cho phép CS = 1 thì bộ đệm sẽ gởi dữ liệu ra các đường dữ liệu bên ngoài.

Nếu CS ở mức 0 thì bộ đệm sẽ ở trạng thái tổng trở cao và các đường dữ liệu được thả nổi.

b/  Thời hằng truy xuất ROM :

Có một khoảng thời gian trễ từ lúc áp địa chỉ đến các ngõ vào địa chỉ của ROM đến lúc dữ liệu xuất hiện tại các ngõ ra, thời gian này còn gọi là thời gian truy xuất (tACC).

Một thông số quan trọng khác là thời gian cho phép ngõ ra xuất dữ liệu (tOE), là thời gian trễ từ khi CS\ tác động cho đến khi dữ liệu có ở các ngõ ra.

Thời gian truy xuất đối với ROM loại Bipolar khoảng từ 30 đến 90 ns, đối với  NMOS là 35 đến 500 ns.

Thời gian cho phép xuất dữ liệu từ 10 đến 20 ns đối với ROM loạị Bipolar và từ 25 đến 100 ns  đối với MOS.

Giản đồ thời gian của hoạt động đọc ROM.

c/  Một số loại bộ nhớ ROM:

Ø     Mask-Programmed ROM: Là ROM được lập trình ngay trong lúc sản xuất. Đối với loại ROM này ta không thể lập trình lại được.

Ø     PROM (Programmable ROM): Là ROM có thể được lập trình một lần duy nhất bởi người sử dụng.

Cấu tạo:

Các tế bào nhớ là diode, transistor lưỡng cực hoặc transistor MOS tùy vào công nghệ chế tạo.

Phần tử bán dẫn được nối với cầu chì tích hợp. Khi cầu chì bị đứt thì không thể nối lại được, do vậy mà ta chỉ có thể lập trình cho ROM được một lần.

Khi cần đổi bit 1 sang bit 0, người ta dùng một xung điện có biên độ và độ rộng xung thích hợp để làm đứt cầu chì.

Ø     EPROM (Erasable Programmable ROM):

EPROM có thể được lập trình bởi người sử dụng và có thể được xóa và lập trình lại như mong muốn.

Khi đã được lập trình, dữ liệu trong EPROM không bị mất đi. Việc lập  trình cho EPROM đòi hỏi một điện áp (từ 10 đến 25V) được áp đến ngõ vào thích hợp trên chip trong một khoảng thời gian (thường là 50 ms cho mỗi địa chỉ).

Người ta sử dụng một mạch nạp đặc biệt dùng để nạp trình cho EPROM. Công việc nạp trình có thể tốn hết một vài phút.

Mỗi ô nhớ lưu trữ trong EPROM là một transistor loại MOSFET với cực cổng là chất silicon không có sự kết nối về điện (cực cổng thả   nổi).

Ở trạng thái bình thường, mỗi transistor bị tắt và mỗi ô nhớ lưu trữ   bit 1. Transistor có thể được bật lên bằng việc áp một xung lập trình điện áp cao, khi đó có một dòng electron được phun vào vùng cực cổng thả nổi. Các electron vẫn tồn tại trong vùng này ngay cả khi đã chấm dứt xung vì  không có đường xả điện tích. Điều này khiến cho transistor trữ bit 0 và không bị thay đổi ngay cả khi nguồn đã bị lấy ra khỏi mạch.

Trong suốt quá trình nạp trình ta cần sử dụng bus dữ liệu và bus địa chỉ để xác định ô nhớ cần lập trình.

Sau khi đã lập trình khi cần xóa nội dung ô nhớ ta sử dụng một nguồn sáng cực tím chiếu vào cửa sổ của EPROM.

Thời gian cần thiết cho việc xóa hoàn toàn một chip là khoảng từ 15 đến 30 phút.

Nhưng có một điều khó khăn là không thể xóa từng ô nhớ riêng biệt được vì khi chiếu chùm sáng cực tím vào cửa sổ sẽ làm thay đổi tất cả các ô nhớ.

Điều này có nghĩa là ta phải lập trình lại từ đầu cho toàn bộ cả EPROM ngay cả khi chỉ có một ô nhớ cần thay đổi.

Mode lập trình được sử dụng để nạp dữ liệu mới vào một ô nhớ. Giả sử rằng ta đang có một EPROM đã được xóa hoàn toàn bằng nguồn sáng cực tím.

Mode

CE\

Vpp/OE\

Outputs

READ/VERIFY

VIL

VIL

DATAOUT

OUTPUTS DISABLE

VIL

VIH

High Z

STANDBY

VIH

X

High Z

PROGRAM

VIL

VPP

DATAIN

Các bước cần tiến hành khi lập trình cho một EPROM:

1/  Địa chỉ ô nhớ cần lập trình được áp vào các ngõ địa chỉ của EPROM.

2/  Tại cùng một thời điểm, OE\ /Vpp được cấp một xung (21V).

3/  Cũng vào thời điểm đó, dữ liệu cần ghi vào sẽ được áp đến các chân từ D_0 đến D_7 . Trong chế độ lập trình, chức năng của các chân dữ liệu là các ngõ vào bởi vì điện áp cao trên chân OE\ / Vpp đã cấm bộ đệm dữ liệu ngõ ra của chip nhớ.

4/  Khi các chân ngõ vào địa chỉ và dữ liệu đã ổn định, ta cấp một xung Low vào CE\ trong thời gian khoảng 50 ms. Lúc này các ô nhớ tại địa chỉ đã xác định được set lên 1 hoặc xóa về 0 tương ứng với dữ liệu đã áp vào lúc đầu tại bus dữ liệu.

5/  Khi quá trình lập trình kết thúc, ngõ vào CE\ quay trở lại mức cao.

Giới thiệu EPROM 2764 :

Sơ đồ chân                                    Sơ đồ logic

EEPROM (Electrically Erasable PROM) :

Trong quá trình sử dụng EPROM nhận thấy có 2 điểm bất lợi chủ yếu:

Thứ nhất : Khi cần lập trình lại, chúng phải được tháo ra khỏi socket để xóa rồi sau đó mới tiến hành lập trình được.

Thứ hai   : Sự tẩy xóa bộ nhớ không làm mất dữ liệu một cách hoàn toàn,

điều này đòi hỏi phải lập trình lại hoàn toàn ngay cả khi chỉ có một từ nhớ cần được thay đổi.

EEPROM được lập trình lại bằng điện là sự cải tiến của EPROM, được phát triển khoảng gần năm 1980.

EEPROM được thừa hưởng cấu trúc cực cổng thả nổi của EPROM. Ngoài ra, EEPROM có thêm đặc điểm là khả năng xóa bằng điện nhờ trong cấu trúc của nó có thêm một vùng oxide mỏng nằm trên cực máng của ô nhớ MOSFET.

Khi áp một điện áp cao (21V) giữa cực cổng và cực máng MOSFET, điện tích có thể được di chuyển  đến trên cực cổng thả nổi, nơi mà nó vẫn tồn tại ngay cả khi mất nguồn.

Sự đảo ngược cực tính của cùng một điện áp như vậy gây ra sự di chuyển các điện tích đã bị bẫy từ cực cổng thả nổi và làm cho ô nhớ bị xóa đi.

Do cơ chế vận chuyển điện tích đòi hỏi dòng điện bé, nên việc lập trình và xóa EEPROM có thể được thực hiện ngay trong mạch (không cần một nguồn sáng cực tím và bộ lập trình EPROM).

Tóm lại thuận lợi của EEPROM vượt trội hẳn EPROM là khả năng xóa và lập trình lại bằng điện từng từ nhớ độc lập trong mảng nhớ.

Một thuận lợi khác là một EEPROM trọn vẹn có thể được xóa trong khoảng 10 ms (trong mạch) khác với 30 phút cho một EPROM được đặt trong nguồn sáng cực tím.

EEPROM còn có thể được lập trình lại một cách nhanh chóng hơn vì nó chỉ cần 10 ms của xung lập trình cho mỗi từ dữ liệu khi so sánh với 50 ms đối với EPROM.

Điện áp lập trình cho EEPROM được tạo ra bởi một thiết bị bên ngoài. Điện áp lập trình 21 volt thường được tạo ra từ nguồn cung cấp +5 V nhờ bộ chuyển đổi DC  -  DC và một mạch điện để điều khiển khoảng thời gian 10 ms cho từng từ nhớ và được thay đổi luân phiên cho hoạt động xóa và lập trình.

Năm 1981, Intel giới thiệu EEPROM  2816 có dung lượng 2K X 8, thời gian truy xuất là 250 ns và mang những đặc điểm như đã miêu tả ở trên.

Cũng từ đó, việc sử dụng EEPROM trong các thiết kế đã mang lại nhiều thuận lợi.

Sau đó, In tel tiếp tục cho ra 2864 là EEPROM 8K X 8 chứa sẵn trên chip một mạch tạo ra điện áp cao dùng cho hoạt động xóa và lập trình, do vậy EEPROM chỉ cần chân cấp nguồn +Vcc. Điều này khiến cho EEPROM giống như một RAM tĩnh. Tất nhiên, nó vẫn lưu trữ được dữ liện ngay cả khi bị mất điện. Nhưng cũng cần  chú ý rằng cấu trúc RAM thì đơn giản hơn và thời gian truy xuất cũng nhanh hơn nhiều.

Tùy thuộc vào Mode đang được chọn và các chân dữ liệu là ngõ vào hay ngõ ra.

Ba chân điều khiển là: OE\ , WE\ , CE\ xác định mode hoạt động nào được sử dụng.

Ø     CE\: được sử dùng để cho phép hay cấm chip hoạt động.

Khi bị ngăn cấm thì chip trong tình trạng chờ và tiêu thụ công suất thấp.

Ø     OE\ : dùng để cho phép hoặc cấm bộ đệm dữ liệu ngõ ra.

Trong suốt hoạt động ghi OE = 1 ngăn cấm bộ đệm dữ liệu ngõ ra giúp

cho dữ liệu ngõ vào có thể được đặt vào các chân I/O.

Ø     WE\ chọn lựa chế độ đọc hoặc ghi dữ liệu. Trong chế độ ghi, WE được cấp xung L dữ liệu sẽ được ghi vào bên trong bộ nhớ.

Mạch điện bên trong tự động xóa các ô nhớ tại vùng đã đặt địa chỉ trước khi ghi vào dữ liệu mới.

Giới thiệu EEPROM 2864:

Sơ đồ chân                                                        Sơ đồ logic

Mode

CE\

OE\

WE\

Outputs

READ

VIL

VIL

VIH

DATAOUT

WRITE

VIL

VIH

VIL

DATAIN

STANDBY

VIH

X

X

High-Z

d\  Bộ nhớ truy xuất ngẫu nhiên RAM:

RAM được gọi là bộ nhớ truy xuất ngẫu nhiên theo nghĩa tất cả các ô nhớ trong bộ nhớ đều truy xuất dễ dàng như nhau.

RAM được dùng trong máy tính để lưu trữ tạm thời chương trình và dữ liệu. Khi máy tính thực thi chương trình sẽ làm cho nội dung của RAM thay đổi liên tục.

Điều này đòi hỏi chu kì đọc, ghi của RAM phải nhanh để không làm chậm tốc độ của máy tính.

Khuyết điểm của RAM là dữ liệu lưu trữ trong RAM sẽ bị mất đi khi nguồn bị mất, điều này có thể được khắc phục bằng cách sử dụng một nguồn pin để backup RAM.

Bộ nhớ RAM được chia thành 2 loại SRAM và RAM:

a/  Cấu trúc của SRAM:

Tương tự bộ nhớ ROM, bộ nhớ RAM cũng có một số các thanh ghi, mỗi thanh ghi lưu trữ một từ dữ liệu duy nhất và có một địa chỉ duy nhất.

Bằng cách kết hợp nhiều chip nhớ chúng ta có thể mở rộng được bộ nhớ và độ dài từ dữ liệu.

b/  Hoạt động đọc dữ liệu từ RAM:

Mã địa chỉ của ô nhớ cần đọc dữ liệu được đưa đến các ngõ vào địa chỉ của RAM đồng thời ngõ tín hiệu điều khiển R/W\ phải ở mức logic 1 và ngõ vào CS phải ở mức logic cho phép. Khi đó dữ liệu mới xuất hiện ở ngõ ra.

Khi R/W\ = 1 sẽ không cho phép bộ đệm dữ liệu ngõ vào do đó dữ liệu ở ngõ vào không ảnh hưởng gì đến ô nhớ đang truy xuất.

c/  Hoạt động ghi dữ liệu lên RAM:

Để ghi dữ liệu vào thanh ghi đã được chọn bởi các ngõ vào địa chỉ của bộ nhớ RAM đòi hỏi các ngõ vào: R/W\ = 0 và CS ở mức logic cho phép.

Tổ hợp 2 mức logic này cho phép đệm ngõ vào và dữ liệu được nạp vào các thanh ghi đã chọn.

Tín hiệu R/W\  ở mức logic 0 sẽ không cho phép bộ đệm dữ liệu ngõ ra và làm cho nó ở trạng thái tổng trở cao high-Z trong lúc ghi  dữ liệu. Khi dữ liệu được ghi vào ô nhớ thì nó sẽ làm dữ liệu trước đó mất đi.

Chip select (CS) :

Hầu hết các bộ nhớ đều có 1 hoặc nhiều ngõ vào CS được dùng để cho phép hoặc không cho phép bộ nhớ trong trường hợp kết nối nhiều bộ nhớ. Khi không được cho phép, tất cả các ngõ vào địa chỉ và ngỏ ra dữ liệu đều ở trạng thái tổng trở cao.

Data Input và Data Output:

Để giảm bớt số chân cho 1 IC nhớ, các nhà sản xuất đã đa hợp các chân dữ liệu ngõ vào và ngõ ra lại với nhau thành một chân có hai chức năng: I/O, chúng có chức năng như hai chân tách rời. Ngõ vào R/W\ sẽ điều khiển các chân I/O.

Khi đọc dữ liệu ra, các chân I/O đóng vai trò là các chân xuất dữ  liệu.

Khi ghi dữ liệu vào, các chân các chân I/O đóng vai trò là các chân nhận dữ liệu.

Giới thiệu SRAM 6264:

Sơ đồ chân                                          Sơ đồ logic

Mode

WR\

CS\

CS

OE\

Outputs

Not select

X

H

X

X

High-Z

Not select

X

X

L

X

High-Z

Output disable

H

L

H

H

High-Z

Read

H

L

H

L

DOUT

Write

L

L

H

H

DIN

DRAM:

Dram được chế tạo dùng kĩ thuật MOS, có dung lượng bộ nhớ lớn, công suất tiêu tán bé và tốc độ hoạt động trung bình.

Đối với Sram, dữ liệu lưu trữ vào các Flip Flop còn Dram dữ liệu lưu trữ mức 1 và 0 tương đương với quá trình nạp và xả của một tụ điện khoảng vài pF.

Do điện áp trên tụ sẽ giảm dần theo thời gian, vì vậy cần thiết phải tiến hành nạp lại cho nó nếu không muốn bị mất dữ liệu, quá trình này gọi là làm tươi bộ nhớ (Refresh).

Công việc này chiếm khoảng 2 đến 10 ms cho mỗi ô nhớ, và đây cũng chính là khuyết điểm của Dram so với Sram.

C.  TRUYỀN DỮ LIỆU

Giới thiệu:

Không giống với việc truyền thông tin bằng cách phát và thu tín hiệu tương tự như âm thanh và hình ảnh, việc truyền dữ liệu được thực hiện bằng cách phát tuần tự (liên tiếp) các mã nhị phân lên đường truyền.

Các mã này được tạo ra, lưu trữ và xử lí bởi các máy tính và các    ngoại vi.

Đường truyền dùng để truyền dữ liệu là các đường truyền số (digital) nghĩa là tín hiệu chỉ có thể ở một trong hai trạng thái khác biệt được biểu thị bằng mức logic 0 hoặc 1. Trong khi đó tín hiệu tương tự có thể chiếm một trạng thái bất kì trên một dải liên tục.

1/  Cấu trúc một hệ thống thông tin:

Đường truyền

Nguồn                         Phát                                       Nhận                       Cơ cấu

tín hiệu                          tin                                           tin                           chấp

hành

Sơ lược các khối trong hệ thống:

Ø     Nguồn tín hiệu:

Là tín hiệu cần truyền đi, có thể là tín hiệu không điện hoặc tín hiệu điện. Do vậy, cần phải có một bộ chuyển đổi các tín hiệu không điện thành tín hiệu điện trước khi đưa lên đường truyền.

Thông thường dùng các cảm biến để dò lấy tín hiệu này và thực hiện quá trình chuyển đổi thành tín hiệu điện.

Ø     Khối phát tin:

Nhận tín hiệu điện từ nguồn tín hiệu đưa đến sau đó thực hiện sự biến đổi cho phù hợp với đường truyền trước khi phát lên đó.

Khối này thường gồm: mạch điều chế tín hiệu, một bộ dồn kênh, bộ phát tín hiệu.

Ø     Đường truyền:

Có nhiều dạng như đường truyền hữu tuyến, vô tuyến, tương tự, số…

Bản chất của đường truyền có ảnh hưởng rất nhiều khối khác trong sơ   đồ.

Ø     Khối nhận tin:

Nhận lấy tín hiệu từ đường truyền gửi xuống và thực hiện việc chuyển đổi nhằm lấy lại thông tin ban đầu.

Khối nhận tin thường gồm: một bộ giải điều chế tín hiệu (tách sóng mang), một bộ phân kênh tín hiệu.

Ø     Cơ cấu chấp hành:

Nhận tín hiệu từ khối nhận tin đưa đến sau đó biến đổi đại lượng điện đầu vào thành đại lượng đồng dạng với đại lượng vào của nguồn tín hiệu.

Cơ cấu chấp hành có thể là một màn hình hiển thị hoặc loa, rờle đóng ngắt…

2/  Phương pháp dồn kênh tín hiệu:

Dồn kênh là quá trình phân chia một đường truyền cho nhiều tín hiệu, điều này giúp tiết kiệm chi phí lắp đặt đường truyền, nhưng phải đảm bảo tại đầu thu vẫn có thể tách được tín hiệu một cách hoàn toàn như trước khi thực hiện việc dồn kênh.

Có hai cách để dồn kênh tín hiệu:

A/  Dồn kênh theo phương pháp phân chia tần số: FDM

Điều chế                                                                                           Lọc dải

Điều chế                      Phát                          Thu                         Lọc dải

Điều chế                                                                                           Lọc dải

FDM (Frequency Division Multiplexing):

Theo phương pháp này, mỗi tín hiệu chiếm lấy một tần số duy nhất trong toàn bộ băng thông của kênh truyền.

Tần số sóng mang của mỗi bộ điều chế được chọn sao cho mỗi tín hiệu sau khi điều chế sẽ chiếm lấy một dải tần riêng trong phổ tần số có thể sử dụng và giữa các kênh phải có cách li tần số nhằm không cho các tín hiệu này đan xem vào nhau.

Tại thiết bị thu, người ta có thể dùng một mạch cộng hưởng có hệ số phẩm chất Q cao để lọc từng tín hiệu ra khỏi băng thông của kênh truyền.

Như vậy, ta có thể truyền nhiều tín hiệu trên một kênh truyền nhưng cũng cần chú ý về khả năng băng thông của kênh truyền phải đủ rộng để chứa toàn bộ băng thông của từng tín hiệu bao gồm cả hai dải băng và khoảng cách li tần số giữa chúng.

Hiện nay, hệ thống phát hình và phát thanh thương mại đang dùng phương pháp này ngoài ra mạng điện thoại cũng đã ứng dụng vì tốc độ nhanh đáp ứng cho việc truyền kênh thoại.

Ví dụ, 24 kênh thoại 3Khz có thể được dồn vào một cặp dây xoắn.    Một cáp đồng trục sẽ chứa 25 nhóm (mỗi nhóm có 24 kênh) như thế.  Vì vậy hàng ngàn kênh thoại được mang trên một tuyến viba hoặc một tuyến vệ tinh.

Để tránh sự trùng lặp thì các tần số tín hiệu không được là bội số của nhau  fi ¹ K.fj  (K = +Z).

B\  Dồn kênh theo phương pháp phân chia thời gian: TDM

TDM (Time Division Multiplexing):

Phương pháp này cho phép tín hiệu chiếm lấy một khe nhỏ thời gian trong mỗi chu kì quét của bộ đa hợp kênh.

Mô hình dùng cổ góp trong máy điện:

Con trượt phần phát và phần thu được kéo bởi một động cơ do vậy, chúng có cùng một tốc độ, giả sử góc pha ban đầu của chúng bằng nhau.

Điều này nhằm giúp hệ thống hoạt động một cách đồng bộ để có thể tách đúng tín hiệu.

Ta nhận thấy tại mỗi thời điểm chỉ có duy nhất một phiến góp bên thu được kết nối với bên phát và tín hiệu truyền qua được dễ dàng.

Tất nhiên, phương pháp cơ khí này sẽ gây mất mát tín hiệu trong lúc con trượt phải chạy qua khe hở giữa các lam đồng.

Thea định lí lấy mẫu, tần số lấy mẫu ít nhất phải lớn hơn 2 lần tần số tín hiệu cực đại (fs ³ 2 fmax) để tín hiệu có thể phục hồi được chính xác, muốn vậy tốc độ quay của con trượt cần được tăng lên, điều này sẽ giúp cho khoảng hở giữa các lần chuyển tín hiệu ngắn hơn và có thể được lấp đầy tại bộ thu.

Giả sử, tín hiệu cần truyền có tần số cực đại fmax = 5Khz.

Vậy fs ³ 2fmax =10Khz.

Trong một giây động cơ phải kéo chuyển mạch quay 10.000 vòng.

Tốc độ n = 10.000 x 60 = 6.10^5 v/p.

Điều này là không khả thi trong thực tế, do vậy phương pháp cơ khí này chỉ dùng với các tín hiệu có tần số thấp.

Khi sử dụng phương pháp TDM thay thế cho FDM đã làm giảm được sự cần thiết của các mạch cộng hưởng mà thay vào đó là các khóa điện tử.

Ví dụ mô hình sử dụng chuyển mạch điện tử 4066 được trình bày như sau:

Sơ đồ mô hình sử dụng chuyển mach điện tử

3/  Phân loại các hệ thống thông tin:

a/  Phân loại theo đường truyền:

¨     Đường truyền hữu tuyến.

¨     Đường truyền vô tuyến.

b/  Phân loại dựa theo tín hiệu trên đường truyền:

¨     Tín hiệu tương tự.

¨     Tín hiệu số.

c/  Phân loại số bit trên một đường dây:

¨     Mỗi bit chiếm lấy một đường truyền (song song):

Dữ liệu gồm nhiều bit sẽ xuất đồng thời trên đường truyền.

¨     Nhiều bit trên một đường truyền (nối tiếp):

Các bit sẽ nối tiếp nhau xuất hiện trên một đường truyền duy nhất.

d/  Dựa vào xung nhịp đồng hồ Ck của bộ phát và bộ thu:

¨     Truyền đồng bộ: khi xung nhịp nơi phát và nơi thu như nhau và cùng góc pha.

Ưu điểm của cách truyền này là tốc độ truyền rất cao nhưng độ an toàn về thông tin khá thấp (sai vài bit). Việc chi phí cho thiết kế đường truyền khá cao.

¨     Truyền bất đồng bộ: khi xung nhịp nơi phát và thu không cần giống nhau.

Theo phương pháp này, dữ liệu được truyền đi với tốc độ chậm hơn nhưng độ an toàn cao, đặc biệt  chi phí cho việc thiết kế đường truyền tương đối thấp, thích hợp cho truyền xa.

e/  Chiều tín hiệu trên đường truyền:

¨     Loại đơn công: tín hiệu chỉ truyền theo một chiều duy nhất mà không có chiều ngược lại.

¨     Loại song công: tín hiệu có thể truyền theo cả hai chiều một cách đồng thời.

¨     Loại bán song công: tín hiệu có thể truyền theo hai chiều nhưng không cùng lúc, tức là phải thay đổi luân phiên.

4/  Giao tiếp song song bất đồng bộ:

A/  Sơ đồ khối:

PHÁT                                   THU

Khi truyền dữ liệu với tốc độ từ thấp đến trung bình trên khoảng cách ngắn người ta có thể dùng đường truyền song song bất đồng bộ.

Ví dụ, như việc kết nối một máy tính với một ngoại vi như máy in.

Hệ giao tiếp song song bất đồng bộ này có đặc điểm là: mỗi bit chiếm lấy một đường truyền và xung đồng bộ nơi phát không nhất thiết phải bằng xung đồng bộ của nơi thu. Do đó, ngoài các đường dây cho các bit còn cần thêm các đường tín hiệu để thực hiện việc bắt tay giữa phần phát và phần thu.

Giả sử thực hiện việc truyền song song 8 bit thì ít nhất có 9 đường dây  (một đường mass giữa phần phát và phần thu).

Để nơi phát và thu có thể truyền và thu được chính xác dữ liệu thì nhất thiết phải cần đến các tín hiệu bắt tay: Strobe, Ack và Busy\ .

DO ¸  D_7 : là các đường dữ liệu (data bus).

Strobe, Ack, Busy\: là các đường tín hiệu bắt tay nhằm phối hợp giữa phần phát và phần thu.

Strobe  : do máy phát gửi ra nhằm báo cho máy thu biết rằng đã có dữ liệu gửi ra trên đường truyền DO ¸  D_7 .

ACK : do phần phát đưa ra nhằm báo cho phần phát biết rằng phần thu đã thu xong một kí tự.

Busy : là tín hiệu do phần thu đưa ra nhằm báo cho phần phát biết rằng phần thu đang bận với một tác vụ nào đó nên chưa thể thu được kí tự tiếp theo.

Ví dụ một quá trình truyền dữ liệu giữa máy tính và máy in:

¨     CPU chờ cho tới khi đường tín hiệu Busy\ lên mức cao tức là máy in đã sẵn sàng nhận dữ liệu.

¨     CPU xuất mã của kí tự kế tiếp ra port song song.

¨     Sau đó, CPU đưa xung Strobe lên 1. Tín hiệu này báo cho máy in biết rằng đã có dữ liệu mới trên đường truyền.

¨     Máy in tiến hành nhận dữ liệu và khi đã hoàn tất công việc liên quan đến kí tự cuối cùng nó sẽ trả Busy\ về mức cao. Máy in đưa xung ACK lên cao để báo cho CPU biết nó đang sẵn sàng nhận kí tự tiếp theo.

B/  Hoạt động của hệ thống:

Phần phát:

¨     Đọc giá trị của đường Busy\ cho đến khi Busy\ =1 tức là phần thu không bận.

¨     Sau đó phần phát gửi data ra bus dữ liệu.

¨     Cho chân Strobe =1 để báo cho phần thu biết kí tự đã sẵn sàng.

¨     Đọc chân ACK cho đến khi chân này lên 1 tức là phần thu đã thu xong kí tự.

¨     Cho chân Strobe = 0 để tránh trường hợp phần thu thu thêm một lần nữa.

¨     Chuẩn bị dữ liệu kế tiếp theo để xuất đi nếu như chưa truyền hết.

Phần thu:

¨     Khi cần thu một dữ liệu nó phải đưa chân Busy\ lên 1 để báo cho phần phát biết rằng nó không bị bận và sẵn sàng nhận kí tự.

¨     Sau đó phần thu đọc giá trị của tín hiệu Strobe cho đến khi chân này lên 1 tức là phần phát đã gửi dữ liệu ra đường truyền.

¨     Cho chân Busy\ = 0 để phần phát tạm thời ngưng lại và cho chân ACK = 0 để khoan thay đổi data.

¨     Xử lí data (cất vào vùng nhớ đệm).

¨     Cho chân Busy\ =1.

5/  Giao tiếp nối tiếp bất đồng bộ:

Ø     Cấu trúc :

Giao tiếp nối tiếp bất đồng bộ là giao tiếp mà xung đồng hồ của bộ phát và bộ thu được tạo ra một cách riêng rẽ và không cần phải bằng nhau.

Các bit lần lượt chiếm lấy đường truyền, việc giao tiếp cần phải thêm

các bit khung (thông tin khung) bao gồm:

•        Bit khởi động (start).

•        Bit dừng (stop).

•        Bit chẵn lẻ (parity).

Ø     Thành phần chính của hệ thống là các thanh ghi dịch.

Ø     Tại phần phát, thanh ghi dịch là thanh ghi vào song song ra nối tiếp.

Ø     Tại phần thu, thanh ghi dịch là thanh ghi vào nối tiếp ra song song.

Dữ liệu vào song song                  Dữ liệu ra song song

Tín hiệu

điều khiển

PHÁT                                            THU

Thanh ghi                                          Thanh ghi

Ck phát                                                    Ck thu               Điều khiền

a/  Phát dữ liệu nối tiếp:

Khi cần phát dữ liệu, CPU phần phát sẽ gửi data tới thanh ghi phần phát bằng cách đưa dữ liệu đến các ngõ vào song song của thanh ghi dịch sau đó tác động mức 1 lên chân LD để cho thanh ghi nạp lấy giá trị này.

Khi LD không còn tác động nữa thì thanh ghi dịch sẽ lưu trữ lại giá trị này. Sau đó, dưới tác động của xung đồng hồ nơi phát, các bit của dữ liệu cần phát sẽ lần lượt dịch đến ngõ ra nối tiếp để đưa lên đường truyền.

b/ Thu dữ liệu nối tiếp:

Khi phần thu nhận dạng được bit khởi động, CPU phần thu sẽ phát tín hiệu điều khiển xung Ck thu.

Lúc này dưới tác động của xung Ck thu, từng bit dữ liệu trên đường truyền sẽ lần lượt được dịch vào thanh ghi phần thu cho đến khi xuất hiện bit dừng thì  CPU phần thu sẽ phát tín hiệu để đọc dữ liệu tại các ngõ ra song song của thanh ghi dịch.

Bit khởi động (Start) nhằm báo cho phần thu biết thời điểm nhận một dữ liệu mới, bit này có trạng thái ngược với trạng thái thường xuyên của đường truyền (có trạng thái = 1).

Khi dùng bit Parity, trạng thái logic của bit này phụ thuộc vào kí tự dữ liệu đặc trưng và việc lập phần cứng là kiểm tra parity chẵn hay lẻ.

Bit parity là bit 0 hoặc bit 1 tùy theo việc kiểm tra chẵn hay lẻ và dữ liệu đó như thế nào.

Chú ý rằng bit parity có dự phần vào việc tính tổng số bit 1 là chẵn hay lẻ trong toàn dữ liệu.

Sau đó bằng cách tính tổng số bit trong mỗi kí tự, máy thu có thể phát hiện được lỗi khi truyền. Phương pháp này tuy không đạt được độ tin cậy 100% (vì nếu số bit lỗi là số chẵn thì máy thu không thể phát hiện được lỗi) nhưng lại tương đối đơn giản và có hiệu quả.

Các bit Stop là khoảng cách bảo vệ tối thiểu giữa các khung kí tự.

CHƯƠNG  2:

THIẾT KẾ

A/  MÔ HÌNH ĐIỆN NĂNG KẾ ĐIỆN TỬ GIAO TIẾP MÁY TÍNH

Điện vào 220V/50Hz .

Điện ra cấp cho tải.

Nhằm tạo ra cái nhìn tổng quát trước khi tìm hiểu chi tiết về các khối bên trong mà mô hình điện năng kế điện tử giao tiếp máy tính được trình bày đầu tiên.

Mô tả chức năng hoạt động và cấu tạo:

v   Chức năng hoạt động:

Điện năng kế điện tử là một thiết bị dùng cho điện lưới sinh hoạt 220V/50Hz có chức năng chính là đo và hiển thị ra điện năng đã tiêu thụ trong tháng của hộ sử dụng điện.

Đặc biệt, điện năng kế điện tử có thể thực hiện quá trình truyền số liệu trên hai dây pha và trung tính của lưới điện khi có yêu cầu truy xuất dữ liệu từ trung tâm điều khiển.

Ngoài ra, nhằm tăng tính hữu hiệu của thiết bị mà một số chức năng khác cũng được thiết kế bên trong điện năng kế:

Ø   Hiển thị thời gian như một đồng hồ số.

Ø   Tự động ngắt nguồn khi có sự cố ngắn mạch, quá tải, điện giật nhằm bảo đảm an toàn cho thiết bị tải và người sử dụng.

v   Cấu tạo :

Mặt ngoài điện năng kế điện tử có:

6 LED :

Để hiển thị điện năng tiêu thụ và một số thông tin cần thiết khác trong suốt quá trình sử dụng như hiển thị ra thời gian, hiển thị điện áp ,dòng điện đang sử dụng…

Hai nút điều khiển:

Nút ON/OFF nguồn : Người sử dụng có thể tác động vào nút này để đóng ngắt nguồn tương tự như một CB nhưng nó còn bị điều khiển bởi phần mềm xử lí đóng ngắt bên trong.

Nút Select Mode : Cho phép chọn các thông tin cần hiển thị ra các LED.

Thông tin hiển thị gồm có:

1.      Giờ cao điểm trong ngày.

2.      Số Kwh đã tiêu thụ trong giờ cao điểm của tháng hiện tại

3.      Số Kwh đã tiêu thụ trong giờ thấp điểm của tháng hiện tại

4.      Tổng số Kwh đã tiêu thụ trong tháng.

5.      Điện áp đang sử dụng.

6.      Dòng điện đang sử dụng.

7.      Giờ đồng hồ số.

Trạng thái mặc nhiên của các led khi điện năng kế hoạt động bình thường làhiển thị giờ thời gian.

PORT Giao Tiếp song song:

Bên trong vỏ hộp kim loại chứa các thiết bị sau:

1.    Board mạch xử lí.

2.    Các đầu dò điện áp, dòng điện tải, dòng điện rò.

3.    Relay đóng ngắt nguồn.

4.    Bộ chỉnh lưu, lọc nguồn, triệt nhiễu và bảo vệ quá áp ngõ vào.

5.    Accu dự phòng khi bị mất nguồn.

6.    Loa cảnh báo.

Sau khi thực hiện lắp đặt điện năng kế, nhân viên điện lực cần cài đặt các thông số ban đầu cho điện kế trước khi đem vào sử dụng:

Thao tác điều chỉnh thông qua 3 nút nhấn nằm phía trong đồng hồ:

Nút 1 : Select

§    Có chức năng chọn lựa đối tượng cần điều chỉnh là thời gian hiện tại hay các giờ cao điểm trong ngày.

Nút 2 : Adjust

§         Tác động vào nút này, để điều chỉnh giá trị cho đối tượng được chọn.

Nút 3 : Enter

§      Để xác nhận giá trị cho từng thành phần trong mỗi đối tượng đang được điều chỉnh và chuyển sang thành phần khác.

Trong suốt quá trình tác động, các led sẽ hiển thị ra thông tin tương ứng giúp cho nhân viên điện lực có thể quan sát và điều chỉnh chính xác các thông số.

Các thông số sau khi đã thiết lập cho điện kế, nhân viên điện lực sẽ bấm chì niêm phong điện kế và dán tem bảo đảm.

Kết thúc các thao tác trên thì điện năng kế điện tử đã có thể sử dụng được.

B/  SƠ ĐỒ KHỐI ĐIỆN NĂNG KẾ ĐIỆN TỬ GIAO TIẾP MÁY TÍNH:

Ngõ vào điện áp

GIAO TIẾP

NGƯỜI SỬ DỤNG

220V/50Hz

NGUỒN

DỰ PHÒNG

ỔN ÁP

NGÕ RA

ĐIỆN NĂNG

CẦN ĐO

CHỈNH LƯU

LỌC NGUỒN

TRUNG TÂM XỬ LÍ

CHUYỂN ĐỔI ADC

CẢM BIẾN DÒNG ĐIỆN, ĐIỆNÁP

Mô tả chức năng các khối trong sơ đồ:

Như đã trình bày trong các phần trước, điện năng kế điện tử là thiết bị có chức năng đo các đại lượng điện thành phần sau đó tính toán cho ra điện năng tiêu thụ và hiển thị ra các led. Muốn thực hiện được chức năng đó điện năng kế cần phải được thiết kế từ nhiều bộ phận nhỏ, mỗi bộ phận có nhiệm vụ riêng và thống nhất với nhau sao cho đạt được yêu cầu chung của toàn thiết bị.

Nhằm dễ dàng hơn trong việc trình bày, sơ đồ khối được đưa ra để giúp cho người đọc có được cái nhìn bao quát về toàn thiết bị trước khi tìm hiểu về các bộ phận bên trong.

Sau đây là sự trình bày một cách tóm lược về chức năng hoạt động của từng khối trong sơ đồ:

1.     Khối cảm biến các đại lượng điện thành phần:

Có nhiệm vụ đo đạc giá trị điện áp, dòng điện tải, dòng điện rò sau đó chuyển  thành tín hiệu thích hợp và đưa về trung tâm xử lí. Khối này gồm có các khối nhỏ bên trong như:

Ø      Khối lọc, triệt nhiễu ngõ vào nhằm loại trừ các tín hiệu nhiễu trên đường truyền tới thiết bị.

Ø      Khối cảm biến điện áp nhằm chuyển điện áp trên tải từ mức cao xuống thấp để phù hợp với thiết bị điện tử phía sau.

Ø      Khối cảm biến dòng điện tải có nhiệm vụ biến đổi dòng điện tải đang tiêu thụ thành một mức điện thế thích hợp cho bộ phận phía sau.

Ø      Khối cảm biến dòng điện rò cũng có chức năng tương tự như khối cảm biến dòng điện tải nhưng để cảm biến dòng điện rò.

Ø      Khối chuyển đổi tương tự sang số (ADC) thực hiện nhiệm vụ như đúng tên gọi của nó. Do các thiết bị phía sau đều hoạt động với tín hiệu số vì vậy phải chuyển đổi các tín hiệu đầu vào từ tương tự sang số thì các thiết bị này mới có thể xử lí được.

Ø      Trong khối này ta còn thấy sự xuất hiện của bộ phận bảo vệ quá áp, bộ phận này rất cần thiết trong việc bảo vệ các thiết bị phía sau tránh khỏi việc hư hỏng do xung điện áp cao trên lưới điện truyền có nguyên nhân từ sự cố sét đánh trên lưới điện hoặc do bị chập với đường dây cao thế.

2.     Khối trung tâm xử lí:

Có chức năng quan trọng nhất trong toàn thiết bị, vì nó đảm đương nhiệm vụ tính toán các số liệu đã thu nhận được từ các đầu dò bên ngoài. Ngoài ra, các thiết bị phụ cận bên ngoài đều hoạt động dưới sự điều khiển của khối trung tâm xử lí.

3.     Khối lưu trữ dữ liệu:

Là nơi mà chương trình điều khiển thiết bị được nạp vào. Trong quá trình tính toán, khối trung tâm xử lí sẽ lưu dữ liệu vào đây.

4.     Khối hiển thị cảnh báo:

Khối này có chức năng hiển thị ra các thông tin cần thiết cho người sử dụng, hoạt động dưới sự điều khiển của khối trung tâm xử lí. Ngoài ra, trong suốt quá trình sử dụng nếu có sự cố điện xảy ra thì khối xử lí sẽ báo hiệu cho người sử dụng biết thông qua khối hiển thị cảnh báo.

5.     Khối giao tiếp dữ liệu song song, nối tiếp:

Nhằm tạo thuận lợi cho việc thu nhận dữ liệu từ các điện năng kế điện tử mà khối giao tiếp dữ liệu được thiết kế để phát dữ liệu nối tiếp lên đường truyền về trung tâm điều hành.

Trung tâm này có nhiệm vụ thu nhận dữ liệu từ tất cả các điện kế điện tử, sau đó sẽ xử lí tiếp để cho ra số tiền mà mỗi hộ sử dụng điện phải trả cho Công ty điện lực. Khi có sự trục trặc trên đường truyền nối tiếp thì nhân viên điện lực có thể dùng một thiết bị khác để thực hiện truy xuất dữ liệu từ điện năng kế theo phương pháp giao tiếp song song.

6.     Khối đóng ngắt nguồn 220V/50Hz:

Nhằm tăng tính hữu hiệu của điện năng kế mà chức năng đóng ngắt nguồn cũng được thiết kế, khối đóng ngắt này nhận lệnh từ khối xử lí để đóng ngắt nguồn theo đúng như chương trình điều khiển đã cài đặt.

7.     Khối giao tiếp người sử dụng:

Khối này tạo sự giao tiếp phần cứng với người sử dụng, nhờ vây có thể quan sát được các thông tin cần thiết trên các LED hiển thị và có thể tác động đóng ngắt nguồn, tất nhiên còn phụ thuộc vào trạng thái hiện tại của khối xử lí có cho phép đóng ngắt nguồn hay không.

8.     Khối nguồn cung cấp:

Khối này chỉ có nhiệm vụ duy nhất là cung cấp năng lượng ổn định để thiết bị hoạt động bình thường ngay cả khi bị mất điện lưới vì bên trong đã thiết kế một bộ nguồn dự phòng.

C/  TRÌNH BÀY CHI TIẾT CÁC KHỐI:

1)      Khối cảm biến các đại lượng điện thành phần:

Sơ đồ mạch :

Theo công thức tính công suất điện năng tiêu thụ:

P  =  U. I. cos j

Ta phải có ba đại lượng thành phần : U, I, và cosj. Như vậy, cần thiết kế cảm biến dòng và áp còn riêng đại lượng cos j sẽ được suy ra bằng phần mềm.

Thiết kế cảm biến dòng tải:

Trong sơ đồ trên, CBDT là cảm biến dòng tải có nhiệm vụ cảm nhận độ lớn của dòng điện tiêu thụ của tải, dựa trên nguyên lí của máy biến áp:

•        Khi có sự biến thiên về dòng điện trên cuộn sơ cấp sẽ sinh ra trên cuộn thứ cấp một điện áp cảm ứng và nếu thứ cấp kín mạch thì sẽ có dòng điện cảm ứng chạy qua.

•        Độ lớn của điện áp thứ cấp phụ thuộc vào dòng điện chạy trên cuộn sơ cấp và tỉ lệ số vòng dây quấn.

Cảm biến trên chính là một biến dòng vì nó cảm nhận được sự biến thiên về dòng điện trên phần sơ cấp để tạo ra một điện áp trên phần thứ cấp.

Phải có sự cân bằng của lực từ động phần sơ cấp và phần thứ cấp của biến dòng :

n1.i1   =   n2.i2

Trong đó :   n1 là số vòng dây quấn trên cuộn sơ cấp.

n2 là số vòng dây quấn trên cuộn thứ cấp.

i1 là dòng điện chạy trong cuộn sơ cấp.

i2 là dòng điện chạy trong cuộn thứ cấp.

Do vậy cần lưu ý khi sử dụng biến dòng là không được để hở phần thứ cấp khi phần sơ cấp đã có điện.

Khi thiết kế nhất thiết phải chọn một số giá trị ban đầu. Giá trị thích hợp được chọn căn cứ vào độ phân giải của bộ chuyển đổi ADC.

Do điều kiện thực tế, đề tài đã chọn ADC8089 làm bộ chuyển đổi tương tự sang số.

Các tính toán được trình bày như sau:

Trong sơ đồ trên, cuộn sơ cấp được thiết kế để chịu được dòng tải cực đại là: 30 A

và được quấn 3 vòng trên lõi sắt từ phần sơ cấp:

Như vậy theo công thức trên ta có:

3 vòng x 30A  =  n2.i2

Do ta cần chuyển đổi dòng điện phần thứ cấp thành điện áp cho nên có một điện trở R1 được mắc vào mạch thứ cấp. Giá trị điện trở này được chọn nhỏ khoảng 50W.

Ta chọn dòng chạy qua mạch thứ cấp là 100mA ứng với lúc dòng điện bên sơ cấp đạt giá trị max, số vòng dây thứ cấp phải là:

n2  =  30 x 3   /  100 x 10-3   =  900 vòng.

Công suất mà R1 phải chịu khi có dòng hiệu dụng cực đại chạy qua là :

PR_1 =  50 x I^2max / 2  =  50 x 10-2 / 2   =  0.25 W

Để có thể hoạt động lâu dài, ta chọn công suất của điện trở R1 = 1W

Điện áp xoay chiều trên điện trở R1 cần qua một bộ nắn điện là một cầu chỉnh lưu gồm 4 diode 1N4007.

Sau khi qua cầu chỉnh lưu dạng sóng điện áp đã thành một chiều thích hợp cho bộ biến đổi ADC, nhưng trước khi đưa vào ngõ analog của ADC thì điện áp này cần qua một bộ phân áp gồm 3 điện trở mắc nối tiếp nhau nhằm điều chỉnh điện áp cho thích hợp.

Vì 3 điện trở này chỉ có tác dụng phân áp cho nên ta có thể chọn giá trị tương đối dễ dàng và chỉ quan tâm đến tỉ lệ giữa chúng.

Cụ thể như sau:

R2 = 1K , R3 = 3K , VR1 = 0.5K

Tỉ lệ này có ảnh hưởng đến sai số của điện kế, nên chọn sao cho giá trị max của điện áp ngõ vào càng gần giới hạn của ADC thì càng chính xác.

Thiết kế cảm biến dòng điện rò:

Cấu tạo:

Người ta dùng một vòng xuyến mạch từ loại sắt Ferrit có độ từ thẩm cao. Trên đó có quấn hai cuộn dây có số vòng bằng nhau sao cho khi có dòng điện đi qua thì từ thông tổng của hai từ thông sinh ra bởi hai dòng điện đi và về qua hai cuộn dây này có trị số f = 0. Một cuộn dây cảm biến quấn nhiều vòng có tiết diện bé để tiếp nhận dòng cảm ứng nếu như có xuất hiện.

Khi xảy ra sự cố rò điện (chạm mass) trên đường dây của hộ tiêu thụ thì do dòng điện đi và về trên dây pha và dây trung tính không bằng nhau dẫn đến dòng tổng bằng  của hai dòng điện trên dây pha và dây trung tính ¹ 0.

Dòng điện này tạo ra từ  thông ft  trong vòng xuyến sắt từ Ferrit làm phát sinh sức điện động cảm ứng trên cuộn dây cảm ứng.

Ø      Phương pháp quấn hai dây pha và dây trung tính: Quấn đồng thời hai dây quanh lõi sắt từ, trong đề tài này ta thực hiện quấn khoảng 5 vòng.

Ø      Cuộn dây cảm ứng cũng được quấn trên cùng một lõi Ferrit nhưng được quấn riêng thành một cuộn và số vòng thực tế cần quấn khoảng 300 vòng. Khi đó ta có thể phát hiện ra dòng rò khoảng 20 mA.

Trong thiết kế thực tế nếu như dòng điện cảm ứng quá bé thì có thể tăng số vòng dây của cuộn dây cảm ứng hoặc lắp một bộ khuyếch đại bằng Op-amp tại đầu ra của cuộn dây cảm ứng.

Tín hiệu tại ngõ ra này được đưa vào một bộ phân áp có cách mắc và trị số như bộ phân áp của cảm biến dòng.

Thiết kế cảm biến điện áp:

Trong 3 cảm biến cần phải thiết kế để đo các đại lượng điện thì cảm biến điện áp là đơn giản nhất vì thực chất nó chỉ là một biến áp.

Do vậy, ta không cần phải thiết kế riêng một biến áp dùng cho việc cảm biến điện áp mà sẽ tận dụng ngay biến áp nguồn.

Để ngăn ảnh hưởng của tụ lọc nguồn lên dạng sóng điện áp đưa đến khối ADC, ta cần gắn một diode có cực tính như  trên hình vẽ.

Ngõ ra của biến áp được đưa đến một cầu phân áp để lấy ra mức điện áp thích hợp trước khi đưa tới ADC. Do mức điện áp này khá lớn cho nên giá trị của các điện trở phân áp và tỉ lệ giữa chúng được chọn khác với cầu phân áp của hai cảm biến trên.

Cụ thể là:

R4 = R5 = 10K , VR2 = 22K .

ü      Điện năng kế do có sự kết nối trực tiếp với lưới điện cho nên sẽ dễ bị ảnh hưởng của các tín hiệu nhiễu phát sinh trên đường truyền cho nên nhất thiết phải có một bộ phận lọc các nhiễu này, đồng thời khi có hiện tượng quá áp đột ngột thì cũng phải có một bộ phận tác động kịp thời để bảo vệ cho các thiết bị phía sau.

ü      Điều này được thực hiện nhờ vào cuộn dây lọc nguồn LF ( Line Filter ), tụ C_1 có giá trị 0.47uF và cầu chì tác động nhanh Fuse.

ü      Khi có quá áp đột ngột thì tụ C_1 sẽ nối tắt hai dây nguồn và dòng điện lớn đủ để làm cho cầu chì đứt.

ü      Khi có tín hiệu nhiễu trên đường truyền thì hoặc sẽ bị tụ nối tắt hoặc sẽ tự triệt tiêu khi đi qua hai cuộn dây được quấn ngược chiều nhau của cuộn lọc LF.

Mạch điện này thường được sử dụng trong thiết kế nguồn của các TV màu.

Như ta đã biết, tín hiệu tại các đầu dò là tín hiệu tương tự cho nên trước khi được đưa vào xử lí bằng các linh kiện số thì phải được chuyển đổi thành tín hiệu số, điều này được thực hiện bằng ADC0809, IC này là có độ phân giải không cao nhưng bù lại nó rất thông dụng vì có nhiều đặc tính hay như có tới 8 ngõ vào tương tự được chọn bằng các chân chọn lựa.

Sau đây sẽ trình bày về các đặc tính quan trọng của ADC trước khi tìm hiểu về cách kết nối trong mạch điện.

ADC0809 là một IC có chức năng chuyển đổi tương tự sang số, có một số đặc tính sau:

¨      Độ phân giải : 8 bit.

¨      Thời gian chuyển đổi : 100 ms.

¨      Nguồn cung cấp : +5V.

¨      Giới hạn điện áp ngõ vào 0V ¸ 5V (khi nguồn cung cấp là nguồn đơn +5V).

¨      Ngõ ra tương thích với mức logic của các IC TTL.

¨      8 đường tín hiệu analog ngõ vào được chọn lựa bằng một bộ chọn kênh và một tín hiệu dùng để chốt địa chỉ của kênh đó.

¨      Mức tiêu tán công suất thấp : 15mW.

¨      Ngõ ra 3 trạng thái có chốt.

¨      Giới hạn nhiệt độ – 40oC  ¸  +85oC.

¨      Dòng tiêu thụ : 0.3mA khi hoạt động bình thường.

¨      Tần số hoạt động f £ 640 KHz.

¨      Giới hạn áp vào analog :    - 0.1V  ¸  VCC+0.1V (DC).

ADC0809 tạo sự giao tiếp dễ dàng với các thiết bị số nói chung thông qua 28 chân có chức năng như sau:

•        8 ngõ vào analog (IN_0  ¸  IN_7 ).

•        8 ngõ ra dữ liệu ( D_0   ¸  D_7 ).

•        3 đường địa chỉ phân kênh cho 8 ngõ vào analog (A, B, C).

•        1 tín hiệu chốt địa chỉ vào bộ giải mã bên trong (ALE).

•        1 tín hiệu cho phép bắt đầu quá trình chuyển đổi bên trong IC (START).

•        1 tín hiệu báo kết thúc chuyển đổi (EOC).

•        1 tín hiệu cho phép ngõ ra xuất dữ liệu đã chuyển đổi xong (OE).

•        2 chân tạo điện áp tham chiếu (VREF+ và VREF-).

•        2 chân cấp nguồn và mass cho IC hoạt động (VCC và GRN).

Bảng chức năng của ADC0809:

INPUTS

SELECTED

ANALOG

CHANNEL

ADDRESS

ALE

C

B

A

L

L

L

0

L

L

H

1

L

H

L

2

L

H

H

3

H

L

L

4

H

L

H

5

H

H

L

6

H

H

H

7

Trong sơ đồ trên ADC0809 có 3 ngõ vào analog được kết nối với 3 tín hiệu ra từ các cảm biến.

•        Ba chân chọn A, B, C được nối với PC0, PC1, PC2 của Port C (8255-2).

•        Chân ALE và chân STR được nối chung với nhau và nối với PC3 của Port C (8255-2).

•        8 đường dữ liệu ngõ ra từ D0  D7 được nối với PB0  PB7 của Port B (8255-2).

•        Chân OE được nối sẵn lên mức cao để luôn cho phép dữ liệu được xuất ra ngoài.

•        Chân VREF+ được nối lên nguồn +5V.

•        Chân VREF- được nối xuống mass.

•        Chân EOC được nối với P11 của 8951.

•        Xung cấp cho ADC 0809 được lấy từ ngõ ra của cổng 74HC14.

Tính toán tần số xung Ck cấp cho ADC0809 :

ADC0809 có thể hoạt động ở tần số 640 KHz, nhưng để đảm bảo ta sẽ thiết kế một bộ cấp xung khoảng 500 KHz.

Sơ đồ trên, sử dụng 74HC14 nên f = 1.2 / RC.

f = 500 KHz

Chọn C = 100pF

Vậy R = 1.2/ 500 x 10^3 x 100 x 10-12 = 24 KW.

Chọn R = 22 KW.

Hoạt động của khối cảm biến các đại lượng điện thành phần được trình bày như sau :

Các cảm biến có nhiệm vụ thu nhận các tín hiệu điện với một biên độ thích hợp cho khối chuyển đổi ADC.

Các tín hiệu này đang ở trạng thái analog được đưa đến các ngõ vào analog của ADC0809.

Vi điều khiển 8951 sẽ lần lượt xuất các địa chỉ tương ứng với ngõ vào tín hiệu analog nào mà nó cần đọc thông qua 3 đường PC0, PC1, PC2 của 8255 thứ 2.

Khi địa chỉ đã được đưa đến các chân A, B, C của ADC 0809 thì 8951 xuất tiếp xung chốt địa chỉ này vào thanh ghi bên trong của ADC 0809.

Do chân ALE được nối chung với chân STR cho nên đồng thời với việc chốt địa chỉ ADC0809 sẽ bắt đầu thực hiện quá trình chuyển đổi tương tự sang số đối với kênh tương tự đã được chọn.

Khi thực hiện chuyển đổi xong, ADC0809 sẽ báo cho 8951 biết bằng cách đưa chân EOC lên mức 1.

Khi 8951 nhận thấy EOC  = 1 thì lập tức thu nhận dữ liệu đó và tiếp tục quá trình tương tự đối với kênh truyền tiếp theo.

Trên sơ đồ, chân OE là chân cho phép xuất dữ liệu ngõ ra đã được nối sẵn lên mức cao điều này hoàn toàn không ảnh hưởng gì đến dữ liệu mà 8951 thu được vì 8951 chỉ đọc dữ liệu khi nhận thấy chân EOC của ADC 0809 lên mức 1 tức là đã chuyển đổi xong.

2)      Khối trung tâm xử lí:

Khối xử lí trung tâm chính là vi điều khiển 8951. Nó có nhiệm vụ quản lí tất cả các hoạt động của thiết bị.

Chương trình cài đặt sẽ được thực thi bởi 8951 trong suốt quá trình hoạt động của điện năng kế điện tử.

8951  thu thập các dữ liệu dưới dạng các bit nhị phân do ADC0809 cung cấp sau đó nó sẽ tính toán để cho ra điện năng tiêu thụ trong giờ cao điểm và thấp điểm của hộ sử dụng điện. Dữ liệu sau khi đã xử lí sẽ được xuất ra các LED nếu như có yêu cầu của người sử dụng.

Trong quá trình sử dụng, có thể xảy ra các sự cố điện như ngắn mạch, quá tải…lúc đó 8951 cũng căn cứ trên số liệu của các đầu dò đưa về và so sánh với một giá trị giới hạn đã được nạp vào bởi người lập trình để quyết định cách thức điều khiển khối đóng ngắt và khối hiển thị - cảnh báo hoạt động.

Khi Trung tâm điều hành tại Công ty điện lực cần các số liệu từ điện năng kế thì 8951 sẽ nhanh chóng đáp ứng để gửi dữ liệu lên đường truyền theo một trong hai cách nối tiếp hoặc song song.

Trong hệ thống, 8951 đóng vai trò  của chủ đạo vì tất cả các hoạt động của các bộ phận bên trong đều đặt dưới quyền kiểm soát của nó.

Tuy nhiên, nếu để 8951 giải quyết tất cả các đòi hỏi đáp ứng của thiết bị ngoài thì việc viết phần mềm điều khiển sẽ trở nên phức tạp và làm chậm tốc độ chung của toàn thiết bị.

Do vậy trong những trường hợp cần thiết ta phải thiết kế phần cứng để hỗ trợ cho 8951, điều này được thể hiện rõ trong việc thiết kế khối hiển thị cảnh báo.

Sơ đồ nguyên lí đã trình bày rõ cách thức nối các chân vào, ra của 8951 với các thiết bị ngoài như  thế nào để có thể thực hiện được chức năng đo đạc và hiển thị điện năng tiêu thụ của hộ sử dụng và điều này sẽ được trình bày rõ hơn trong phần giới thiệu phần mềm điều khiển 8951.

3)

Khối lưu trữ dữ liệu:

Khối lưu trữ là một EEPROM 2864 có dung lượng 8 KBytes để chứa chương trình và dữ liệu.

Việc sử dụng bộ nhớ bên ngoài để thiết kế cho khối lưu trữ dữ liệu nhằm tạo sự thuận lợi trong việc nạp chương trình điều khiển bằng các bộ nạp và nhất là khi cần thay đổi chương trình cũng dễ dàng hơn.

EEPROM 2864 là một ROM điện có thể đọc/ghi thuận tiện giống như RAM tĩnh, nhưng nó đặc điểm không bị mất dữ liệu khi bị mất nguồn do vậy chương trình, cũng như các dữ liệu đã lưu vào không bị thay đổi. Điều này rất quan trọng đối với điện năng kế.

Chương trình điều khiển sau khi đã nạp vào 2864 sẽ được dùng để điều khiển 8951 thực hiện đúng tất cả các yêu cầu đã đặt ra. Trong khi hoạt động, 8951 sẽ dùng một phần bộ nhớ để lưu các dữ liệu đã xử lí.

Tóm lại việc sử dụng EEPROM 2864 vừa dễ dàng cho việc nạp trình vừa đảm bảo cho việc an toàn cho dữ liệu đã lưu trữ.

4)      Khối hiển thị – cảnh báo:

Thay vì dùng một chương trình để điều khiển 8951 quét các LED 7 đoạn để hiển thị ra dữ liệu mong muốn, ta có thể thiết kế một khối riêng chuyên về hiển thị các dữ liệu được gửi ra từ 8951.

Điều này nhằm một mục đích duy nhất là làm giảm công việc cho 8951 để nó thực hiện chương trình chính một cách liên tục hơn mà không bị ngắt quãng bởi yêu cầu hiển thị thông tin ra các LED. Nhờ đó sẽ giảm nhỏ sai số trong việc thu nhận và xử lí dữ liệu, ngoài ra việc viết một  chương trình để bắt 8951 thực hiện xen kẽ nhiều công việc như vậy sẽ trở nên phức tạp hơn nhiều.

Khối hiển thị gồm có 6 đèn LED 7 đoạn thuộc loại anode chung. Chân anode của 6 đèn được nối đến cực C của 6 transistor loại PNP, cực E của 6 transistor này được nối lên nguồn +5V. Cực B của chúng nối đến 6 ngõ ra tác động mức thấp của IC giải mã 74LS138 từ Y_0 đến Y_7.

Dữ liệu cần hiển thị phải được chuyển thành mã của LED 7 đoạn và dấu chấm thập phân.

Ta cần đến một IC có khả năng lưu tạm dữ liệu từ 8951 gửi ra và nó phải ở tình trạng chờ nhận dữ liệu tiếp theo từ 8951, đồng thời trong quá trình chờ dữ liệu mới này  nó sẽ xuất dữ liệu trước đó ra các chân a, b, c, …p của các led 7 đoạn.

Nghĩa là khi có yêu cầu hiển thị ra dữ liệu, 8951 chỉ cần ghi dữ liệu đó ra IC này rồi quay trở lại để thực hiện chương trình chính, còn việc hiển thị ra dữ liệu đó là hoàn toàn để cho khối hiển thị đảm nhận.

Xét thấy IC nhớ là thích hợp hơn cả để đảm nhận nhiệm vụ lưu tạm dữ liệu từ 8951 đưa đến, IC nhớ này chỉ cần dung lượng 6 byte là đủ để lưu 6 byte dữ liệu tương ứng với 6 LED trong mỗi lần ghi dữ liệu của 8951.

Nhưng việc tìm một bộ nhớ có dung lượng 6 byte là một điều không thực tế và cũng không bắt buộc phải làm, cho nên ta sẽ dùng một bộ nhớ rất phổ biến đó là RAM 6116 để thực hiện chức năng trên, tuy rằng bị hao phí về dung lượng nhưng rất thuận tiện trong việc sử dụng.

Khi cần hiển thị một dữ liệu, 8951 sẽ gửi một lúc 6 byte vào 6 ô nhớ của 6116,      6 byte này tương ứng với 6 đèn LED 7 đoạn. Do vậy, 6116 được kết nối như một vùng nhớ 6 byte của 8951.

8951 sẽ truy xuất đến  địa chỉ của 6116 và ghi 6 byte dưới dạng mã LED 7 đoạn vào 6 ô nhớ. Sau khi 8951 không truy xuất nữa thì dữ liệu này được đưa đến các đèn LED tương ứng và nhờ phương pháp quét sẽ đưa dữ liệu đến đúng LED thích hợp.

Trong mạch điện có sử dụng IC 74LS157 để chọn một trong hai bus dữ liệu 4 bit ngõ vào được nối đến các đường ra của IC.

Khi 8951 muốn ghi dữ liệu vào 6116 nó sẽ làm cho chân CS3\ xuống mức 0 và do vậy sẽ làm cho bus dữ liệu vào thứ nhất của IC 74LS157 được kết nối với các ngõ ra và dữ liệu được ghi vào 6116 một cách dễ dàng.

Thời gian ghi dữ liệu này rất ngắn do vậy không thể phát hiện bằng mắt. Dữ liệu khi đã ghi vào 6116, chân CS3\ lên mức 1 và do đó sẽ kết nối bus dữ liệu thứ hai của IC 74LS157 đến các đường ra để cho phép bộ nhớ xuất các byte nhớ vừa được ghi đến các LED tương ứng.

IC 74LS92 được thiết kế để đếm 6, các ngõ ra được nối đến các chân chọn của 74LS138. Một trong số các ngõ ra của IC 74LS138 sẽ chọn lựa một trong 6 LED 7 đoạn nhận lấy dữ liệu xuất ra từ bộ nhớ, tần số quét được tính toán sao cho các LED không bị nhấp nháy.

IC 74LS244 dùng để ngăn cách dữ liệu trên bus hệ thống với bus dữ liệu của riêng khối hiển thị. Điều này giúp cho khối hiển thị có thể hoạt động song song với khối xử lí trung tâm mà không sợ bị lẫn lộn dữ liệu.

Tính toán tần số của bộ tạo xung Ck cho IC 74LS92:

Gọi thời gian cho một LED sáng là t, một chu kì quét qua tất cả các LED là T = 6t.

Trong một chu kì quét mỗi LED sẽ chỉ sáng một khoảng thời gian = 1t và tắt trong 5t.

Tần số quét phải  ³ 25 Hz để mắt người không phát hiện ra sự nhấp nháy của các

LED.

f quét  =  1/T = 1/6t  vậy t  £ 1 / 6x25.

Gọi f là tần số của xung Ck : f = 1/t = 6x25 = 150

Để các LED  ít nhấp nháy hơn, ta chọn f = 500Hz.

Tính toán các giá trị R, C của mạch tạo xung Ck:

f = 500 = 1.2 / RC

Chọn C = 0.1  mF    vậy  R = 1.2 / 500x0.1x10-6 = 24K W   .

Ta chọn R =  22 KW.

Bộ phận cảnh báo là một loa nhỏ 8 W, 0.25W được gắn đến ngõ ra của một IC nhạc có transistor khuyếch đại.

Mạch điện được trình bày như trong sơ đồ nguyên lí, tín hiệu ra trên chân PC2 được dùng làm chân điều khiển khối cảnh báo phát ra tín hiệu.

Tín hiệu điều khiển từ 8951 xuất ra làm Q8 dẫn cấp nguồn cho IC nhạc, tín hiệu âm tần được Q14 khuyếch đại và đưa ra loa.

Diode zenner dùng ổn định điện áp cho IC nhạc khoảng 3V, tín hiệu nhạc có thể thay đổi tùy theo IC.

5)      Khối giao tiếp dữ liệu song song, nối tiếp:

Việc giao tiếp dữ liệu nối tiếp được thực hiện bởi các ngõ ra TXD và RXD của 8951 dưới sự điều khiển của phần mềm.

Việc truyền dữ liệu song song được thực hiện qua Port B của IC 8255 thứ nhất, dưới sự điều khiển của phần mềm.

Ta biết rằng 8255A có thể thực hiện 1 trong 3 chế độ giao tiếp với bên ngoài, trong đó chế độ 2 và 3 có sử dụng các tín hiệu bắt tay.

Khi xét điều kiện thực tế của việc truyền dữ liệu song song của điện năng kế điện tử tương đối phức tạp cho nên ta phải dùng phần mềm để điều khiển việc truyền dữ liệu song song chứ không thể sử dụng chế độ hoạt động nào của 8255.

Để phần mềm dễ thao tác, ta sẽ kết nối cho 8255 hoạt động ở chế độ 1 là chế độ vào ra cơ bản. Chương trình điều khiển sẽ được trình bày trong phần sau, việc kết nối phần cứng như đã trình bày trong bản vẽ nguyên lí.

Việc truyền dữ liệu nối tiếp lên đường truyền cần phải qua một khối điều chế tín hiệu vì bản thân các bit dữ liệu 0 và 1 không  thể truyền đi xa.

Điều chế tín hiệu là quá trình lồng tín hiệu thông tin cần truyền đi vào một sóng mang có tần số cao hơn nhiều lần.

Um = Am. Cos (Wmt + jom )

Trong đề tài này ta chọn phương pháp điều chế tín hiệu bằng cách thay đổi biên độ sóng mang.

Tín hiệu thông tin cần truyền đi là các xung gián đoạn tồn tại ở hai mức 0 và1 cho nên nó có dạng m(t) = p(t).

Điều chế biên độ lúc này gọi là điều chế ASK (Amplitude Shift Keying). Sóng mang sau khi đã thực hiện quá trình điều chế có dạng như sau:

Khi tín hiệu xung vào tồn tại ở mức 1 thì ngõ ra chính là tín hiệu sóng mang, khi xung ở mức 0 thì tín hiệu ngõ ra cũng là sóng mang nhưng có biên độ giảm đi một nửa.

Như vậy, để thiết kế một mạch điều chế sóng mang ta tiến hành như sau:

Thiết kế một mạch tạo dao động sin có tần số khoảng 1 Khz, tín hiệu ra của mạch dao động này chính là tín hiệu sóng mang được đưa đến một chuyển mạch điện tử để thực hiện công việc điều chế, có thể sử dụng 4066 làm nhiệm vụ này như trong sơ đồ nguyên lí đã trình bày.

Mạch tạo sóng sin được trình bày như sau:

Ta sử dụng mạch dao động cầu Wien.

Để đơn giản ta chọn :

R1 = R2 = R

C1 = C2 = C

Vậy Z1 = R + Xc

Z2 = R // Xc     .Với Xc = 1/2 PfC

Nhận xét, ở vùng tần số thấp do Z1 có trở kháng lớn nên điện áp ra Vo thấp, ở vùng tần số cao do Z2 có trở kháng nhỏ nên điện áp ra Vo cũng không cao.

Người ta chứng minh được rằng :

Tại tần số fo = 1/2 PRC mạch chọn tần cho ra biên độ lớn nhất.

Lúc đó  hmax = Vo/Vi = 1/3.

Trong mạch trên Q1, Q2 là hai tầng khuyếch đại đảo pha, tín hiệu ra cùng pha với tín hiệu vào ở ngõ vào là mạch chọn tần, khi góc lệch pha là 0o thì fo = 1/2 PRC cho tín hiệu ra với biên độ cực đại nên mạch đã dao động ở tần số này:

fo = 1 Khz

Độ suy giảm là 1/3 nên yêu cầu độ khuyếch đại của hai tầng = 3 lần là đủ.

Rf là điện trở lấy hồi tiếp nghịch dùng để ổn định dao động và giảm méo.

6)      Khối đóng ngắt nguồn:

Được thiết kế đơn giản bằng một relay đóng ngắt 4 tiếp điểm, thực hiện việc đóng ngắt trên cả hai dây pha và trung tính.

Relay thực hiện việc đóng ngắt dưới sự điều khiền của khối xử lí.

7)      Khối giao tiếp người sử dụng:

Thông qua 5 phím nhấn người sử dụng có thể tác động vào điện năng kế điện tử. Trong đó chỉ có 2 phím nằm ở bên ngoài là phím đóng ngắt nguồn (ON\OFF) và phím chọn lựa (SELECT) thông tin hiển thị.

Ba phím còn lại dành cho nhân viên điện lực điều chỉnh các thông số ban đầu khi lắp đặt điện kế.

Ngoài ra còn 1 phím Reset nằm bên trong điện kế được dùng cho người thiết kế.

Vì số lượng phím nhấn ít cho nên ta không cần dùng phần mềm để quét phím mà kết nối trực tiếp mỗi phím với một ngõ vào của Port A của IC 8255 thứ nhất.

Khi có một phím nào đó được nhấn thì sẽ tạo ra một ngắt cứng tác động đến 8951 và lúc đó 8951 sẽ thực hiện một chương trình quét dò phím đã nhấn.

8)      Khối nguồn cung cấp:

Khối nguồn được thiết kế để tạo ra năng lượng ổn định cung cấp cho toàn thiết bị.

IC 7805 loại trung chỉ có thể cung cấp một dòng điện tối đa1A.

Trong thực tế, tải có lúc đòi hỏi một dòng điện cao hơn nhiều, ngoài ra ta không thể thiết kế cho 7805 chạy ở dòng Imax này vì lúc đó 7805 hoạt động không ổn định và có thể bị hư hỏng.

Để khắc phục nhược điểm trên ta dùng một sò công suất để gánh dòng phụ cho 7805 đáp ứng cho tải yêu cầu một dòng điện lớn.

Muốn vậy, ta thiết kế cho 7805 dẫn phần lớn dòng cho tải khi hoạt động bình thường. Khi tải yêu cầu dòng lớn hơn giá trị đã thiết kế trước thì 7805 sẽ phát tín hiệu cho  sò công suất gánh dòng phụ.

Dĩ nhiên dòng điện cung cấp cho tải được tăng thêm nhưng không làm cho điện áp ngõ ra thay đổi.

Việc thiết kế cụ thể được trình bày như sau:

Giả sử tải yêu cầu  ILmax  =  3A  do đó để hoạt động đảm bảo ta phải chọn một

transistor  có thông số   ICmax = (3 ¸ 5) IL

Chọn Q loại PNP là 2955 có b  =   80

Vậy IBmax  =  ICmax / b    =   IL /80   =    3/80   =   37.5 (mA)

Để 7805 làm việc lâu dài ta chọn dòng qua 7805  =  1/5 Imax  =  0.2 (A)

IRs  =  I – I B  =  200 mA – 37.5 mA  =  162.5  mA

Như vậy, khi dòng qua 7805 đạt khoảng từ 200 mA trở lên thì Q phải dẫn dòng phụ, muốn vậy vào thời điểm này Q cần được phân cực thuận mối nối BE, VBE = 0.7 V

Rs  =  VBE / IRs   =  0.6/162.5   =   3.7  W

Tính công suất của Q :

PQ =  ( VIN max  -  VO ) .  ILmax  =  9 x 3 = 27  W

PRs  =  I^2 Rs  =  V^2/Rs  =  0.7^2/3.7  =  0.13 W

Chọn loại 0.5W

Một điều cần thiết khác là phải thiết kết một bộ nguồn dự phòng nhằm đảm bảo cho toàn thiết bị hoạt động ổn định ngay khi nguồn bị mất.

Để có thể hoạt động bình thường trong một thời gian tương đối dài chúng ta sử dụng một acqui có độ trữ  điện tương đối lớn và một mạch nạp tự động khi acqui hết điện và tự động ngắt nguồn khi đã nạp đầy điện nhằm tránh làm hư hỏng bình acqui.

Trong mạch điện trên, dòng điện nạp vào acqui được khống chế bởi sự dẫn mạnh hay yếu của hai transistor Q10 và Q11. Hai transistor này lại được điều khiển bởi dòng chạy vào cực B của Q11. Khi dòng nạp qua acqui lớn, nó sẽ tạo sụt áp trên điện trở 3.3 ohm và điện áp này đủ để làm Q3 dẫn khiến cho Q4 ngưng nên điện áp trên cực B Q11 xuất hiện và kích cho hai transistor này dẫn mạnh. Khi acqui đã nạp gần đầy làm cho dòng chạy qua R3.3 ohm nhỏ nên sụt áp trên điện trở này cũng giảm theo, kết quả là Q3 bị tắt và Q4 dẫn sẽ kéo cực B của Q11 xuống thấp làm cho Q11 tắt, dòng không nạp vào bình acqui nữa.

PHẦN MỀM ĐIỀU KHIỂN 8951:

Việc viết chương trình để điều khiển 8951 phải dựa trên cấu trúc phần cứng của thiết bị và biết đặt ra các yêu cầu thích hợp, sau đó dựa vào tập lệnh của 8951 để viết ra chương trình đáp ứng tất cả các yêu cầu ban đầu.

Bản thân người làm đề tài rất mong muốn viết ra một chương trình để thực hiện điều khiển 8951 đáp ứng các yêu cầu đã đề ra nhưng lại gặp trở ngại lớn về thời gian làm đề tài không nhiều nên đã không thể thực hiện được, đây cũng là một điều đáng tiếc cho bản thân.

Nhưng trong suốt quá trình thực hiện đề tài, người làm cũng đã suy nghĩ nhiều về các yêu cầu  có thể đặt ra cho điện kế khi được đưa vào sử dụng và phương cách để đáp ứng các yêu cầu đó. Các phương cách đó sẽ được trình bày trong phần sau mong rằng có thể là những ý kiến để những người có thích thú về đề tài này có thể tham khảo.

A.     Xử lí sự cố quá tải:

Giả sử tải đang hoạt động bình thường nhưng đột nhiên bị quá tải hoặc bị ngắn mạch thì do qui định dòng điện tối đa cho phép I max = 30A nên khi dòng tải vượt qua giá trị này, lập tức khối xử lí sẽ phát hiện ra và điều khiển cho bộ đóng ngắt phải hở mạch để ngắt nguồn ngay lập tức.

Vì sự cố điện nhiều khi do chính con người gây ra và thường là sẽ được khắc phục ngay sau đó, cho nên nếu ta viết chương trình để ngắt mạch luôn thì sẽ gây phiền phức cho người sử dụng. Để có thể khéo léo hơn ta sẽ viết chương trình chờ 4s sau khi đã ngắt mạch điện thì tự động đóng lại.

Nếu sự cố đã khắc phục thì mạch tiếp tục hoạt động bình thường và các LED vẫn hiển thị ra giờ của đồng hồ số.

Nếu sự cố chưa khắc phục thì lập tức ngắt điện ngay đồng thời sẽ điều khiển cho loa phát ra tiếng bip bip (trong khoảng thời gian 3s) và trên mặt hiển thị các đèn LED sẽ hiển thị ra chữ  short.

Người sử dụng khi đọc được thông tin này sẽ tra một bảng sự cố điện được phát cho người sử dụng khi lắp đặt điện kế và biết mạng điện đang bị quá tải

Sau khi xem xét lại mạch điện, và nhấn vào nút ON/OFF để đóng điện lại. Nếu sự cố thực sự đã thực sự được khắc phục thì mạch hoạt động lại bình thường, tiếng bip bip bị làm tắt (nếu như chưa tới 3 phút) và mặt hiển thị sẽ lại xuất thời gian, điện kế hoạt động lại bình thường

Trường hợp nặng hơn tức là sự cố vẫn chưa được khắc phục xong thì lại phát ra tiếng bip bip trong 3 phút, trên mặt hiển thị lúc này hiện ra chữ CALL trên các LED.

Người sử dụng khi nhìn thấy thông tin này và tra bảng sự cố sẽ biết được cần phải gọi nhân viên điện lực đến. Khi mạch điện đã được sửa chữa xong, tiếp tục nhấn vào nút ON\OFF  mạch điện lại hoạt động bình thường nếu như mạch đã thực sự được khắc phục xong, nếu không điện kế lại phát ra tiếng bip bip. Và mạch chỉ trở lại hoạt động bình thường khi sự cố đã khắc phục hoàn toàn.

Khối xử lí sẽ lưu trữ thông tin sự cố để sau này truyền về trung tâm giúp cho điện lực có thể phát hiện và sửa chữa điện cho các hộ thường xuyên xảy ra sự cố.

B.    Xử lí sự cố điện giựt hoặc rò rỉ điện:

Trong quá trình sử dụng điện, thiết bị điện có thể bị rò rỉ hoặc người sử dụng bị điện giựt. Trong cả hai trường hợp này đều dẫn đến dòng điện đi và về trên dây pha và trung tính không bằng nhau.

Quá trình xử lí sự cố khá giống như xử lí ngắn mạch ngoài ra do hiện tượng rò điện có thể vẫn được duy trì nếu như dòng điện rò không quá lớn và tạm thời chấp nhận trong một thời gian tương đối ngắn nên việc xử lí có khác chút ít.

Khi phát hiện ra có dòng rò vượt trị số đã thiết kế (20mA), điện kế lập tức ngắt điện sau 4s sẽ tự động đóng trở lại, khi sự cố đã tự khắc phục (dòng rò nhỏ hơn giá trị cho phép) thì điện kế hoạt động bình thường, ngược lại điện kế tiếp tục ngắt điện và phát ra tiếng bip bip trong khoảng 3 phút để gây sự chú ý và trên mặt hiển thị lúc này hiện ra chữ  leak.

Muốn có điện lại thì cần nhấn vào nút ON/OFF, nếu dòng rò đã nhỏ hơn giá trị giới hạn thì mạch trở lại hoạt động bình thường nhưng nếu vẫn còn vượt giá trị giới hạn thì lại ngắt điện.

Nói chung các thao tác hoạt động cũng như trong trường hợp quá tải, chỉ khác là mạch có thể vẫn cho phép cấp điện tạm thời khi dòng rò không quá lớn nhưng chỉ là tạm thời sau đó khối xử lí sẽ dò lại dòng điện này và nếu như vẫn lớn hơn giá trị cho  phép thì lại ngắt điện để yêu cầu được khắc phục. Thời gian dò lại tùy thuộc vào phần mềm.

QUÁ TRÌNH TRUYỀN DỮ LIỆU:

Khi trung tâm có yêu cầu thu thập dữ liệu từ các điện năng kế nó sẽ phát ra mã số series của điện kế đó và trong từng thời điểm chỉ duy nhất có một điện năng kế được kết nối với đường truyền.

Dữ liệu từ điện kế trước khi được phát lên đường truyền tới trung tâm cần phải qua một bộ điều chế tín hiệu với tần số thích hợp.

Trung tâm được quyền truy xuất điện kế vào bất kì thời điểm nào và chỉ được phép thu nhận dữ liệu mà không được quyền thay đổi thông tin của điện kế, điền này nhằm bảo vệ quyền lợi của người tiêu dùng.

LƯU ĐỒ CHƯƠNG TRÌNH CHÍNH:

Đ

Đ

S

S

Đ

TRƯỜNG ĐHSPKT

SƠ ĐỒ NGUYÊN LÍ

KHOA ĐIỆN

ĐỀ TÀI  :   ĐIỆN NĂNG KẾ ĐIỆN TỬ GIAO TIẾP MÁY TÍNH

95KĐĐ

Sinh viên thực hiện :   Trần Đại Nghĩa