1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Điều khiển thiết bị điện bằng máy tính

122 663 13

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 122
Dung lượng 3,31 MB

Nội dung

Với những kỹ thuật tiên tiến như vi xử lý, vimạch số …được ứng dụng vào lĩnh vực điều khiển, thì các hệ thống điều khiển cơ khí thô sơ, với tốc độ xử lí chậm chạp ít chính xác được thay

Trang 2

Chương Dẫn Nhập

I.ĐẶT VẤN ĐỀ

Ngày nay với sự phát triển của công nghệ vi điện tử, kỹ thuật số các hệ thốngđiều khiển dần dần được tự động hóa Với những kỹ thuật tiên tiến như vi xử lý, vimạch số …được ứng dụng vào lĩnh vực điều khiển, thì các hệ thống điều khiển cơ khí thô sơ, với tốc độ xử lí chậm chạp ít chính xác được thay thế bằng các hệ

thống điều khiển tự động với các lệnh chương trình đã được thiết lập trước với độ chính xác cao hơn rất nhiều

Trong quá trình hoạt động ở các xưởng, văn phòng, công sở hiện nay, việc giám sát nhiệt độ và điều khiển các thiết bị sao cho hợp lý, nhanh chóng là yêu cầu thiết yếu Nó giúp ta can thiệp, xử lý kịp thời tránh được những hư hỏng và sự

cố có thể xảy ra

Để đáp ứng được yêu cầu giám sát thiết bị và đưa ra các lệnh điều khiển sao cho thích hợp thì có nhiều phương pháp để thực hiện, áp dụng những kiến thức đã học được chúng em đã sử dụng vi điều khiển PIC16F877A và giao tiếp với máy tính qua cổng COM với giao diện Visual Basic 6.0

Với sự đồng ý của Cô Bùi Thị Kim Chi Chúng em đã tiến thành thực hiện

đề tài: “Điều Khiển Thiết Bị Điện Trong Nhà Qua Máy Tính”.

II. TẦM QUANG TRỌNG CỦA ĐỀ TÀI

- Đây là một đề tài nghiên cứu mang tính thực tiễn trong việc vận dụng các kiến thức đã được học tại trườngvào trong thực tế

- Về mặt khoa học, đề tài sẽ giúp cho nhóm chúng em hiểu rõ thêm về Truyền dữ liệu điều khiển và Cách điều khiển mạch điện thông qua máy tính với giao diện Visual Basic 6.0

- Về mặt thực tiễn, đề tài này có thể áp dụng vào thực tế để điều khiển,hẹn giờ tắt mở một số thiết bị trong nhà như đèn điện, quạt máy và giám sát nhiệt độ trong phòng

Trang 3

Chương Dẫn Nhập

III. GIỚI HẠN ĐỀ TÀI

Do những hạn chế về kiến thức, thời gian thực hiện cũng như kinh nghiệm

thực tế, nhóm chúng em chỉ thực hiện được những việc sau :

• Thiết kế và thi công mô hình gồm nhiều Module được kết nối lại với nhau

• Có thể điều khiển 5 thiết bị

• Kết nối với máy tính bằng cổng nối tiếp (cổng COM)

• Thiết bị trong từng phòng có thể được điều khiển bằng tay

• Có thể hẹn giờ tắt - mở cho thiết bị trên giao diện VB

• Hiển thị nhiệt độ trong phòng và cảnh báo nhiệt độ

• Chỉ có thể điều khiển các thiết bị công suất nhỏ, đơn giản…

IV. MỤC ĐÍCH NGHIÊN CỨU

Khi bắt tay vào thực hiện đề tài này, nhóm chúng em mong muốn rằng sảnphẩm của đề tài phải được ứng dụng vào thực tế Và đặc biệt, đối với chúng em đây

là điều kiện, cơ hội, cách thức để cũng cố, bổ sung và ứng dụng những gì đã được lĩnh hội được trong lý thuyết cũng như thực tập tại trường Từ đó sử dụng và ứng dụng nó nhằm đáp ứng cho nhu cầu thực tế Đây chính là những tiền đề đầu tiên

để mỗi thành viên trong nhóm có được một số kiến thức chuyên ngành nhất định, làm hành trang cho công việc sau này

V ĐỐI TƯỢNG NGHIÊN CỨU

Đối tượng nghiên cứu của đề tài này chính là:

► Cách thức giao tiếp giữa phần cứng và máy tính

► Cách thức giao tiếp giữa mạch đo và mạch điều khiển

Trang 4

Chương Dẫn Nhập

► Cách lập trình cho vi điều khiển để mạch hoạt động ổn định

► Cách cân chỉnh mạch, đảm bảo mạch hoạt đông chính xác, ổn định trong thời gian lâu dài của mạch

VI. PHƯƠNG PHÁP VÀ PHƯƠNG TIỆN NGHIÊN CỨU

1. Phương pháp nghiên cứu

Trong quá trình nghiên cứu, nhóm sinh viên thực hiện chủ yếu dựa vào hai phương pháp chính:

- Phương pháp tham khảo tài liệu: Thu thập các tài liệu liên quan đến giao tiếp máy tính, Truyền số liệu, Kỹ thuật mạch điện tử, Thiết kế mạch

điện tử và Phương pháp nghiên cứu khoa học Sau đó, nhóm chúng em

đã vận dụng các kiến thức của mình cùng với các tài liệu, sau cùng thiết

kế ra mạch điện phù hợp với các yêu cầu mà ban đầu nhóm đã đề ra

- Phương pháp quan sát và thực nghiệm: Sau khi đã có mạch theo tính toán lý thuyết, nhóm sinh viên thực hiện đã thi công mạch thực tế theođúng sơ đồnguyên lý đã vạch ra Sau đó tiến hành cân chỉnh lại mạch sao cho mạch hoạt động tốt nhất

2. Phương tiện nghiên cứu

- Các tài liệu liên quan đến đề tài

- Các linh kiện điện tử trong mạch

- Đồng hồ đo VOM

- Máy tính

- Các dụng cụ để thi công mạch

Trang 5

Chương Dẫn Nhập

Trang 6

Chương 2: Cơ Sở Lý Thuyết

CHƯƠNG 2:

CƠ SỞ LÝ THUYẾT

Trang 7

Chương 2: Cơ Sở Lý Thuyết

CÁC LINH KIỆN CHÍNH DÙNG TRONG MẠCH:

I. SƠ LƯỢC VỀ PIC 16F877A.

1. Các thông số kĩ thuật của vi điều khiển.

- PIC 16f877a là vi điều khiển thuộc họ PIC 16fxxx với tập lệnh gồm 35 lệnh có độ dài 14 bit Mỗi lệnh được thực thi trong một chu kì xung clock Tốc độ hoạt động tối đa cho phép là 20MH vớ chu kì lệnh là 200ns

- Bộ nhớ chương trình 8Kx14bit

- Bộ nhớ dử liệu là 368byte RAM

- Bộ nhớ dử liệu EEPROM với dung lượng 256x8 byte

- Số Port I/O là 5 với 33 pin I/O

- Bộ nhớ flash với khả năng ghi xóa được 100.000 lần

- Bộ nhớ EEPROM với khả năng ghi xóa được 1.000.000 lần

- Dữ liệu bộ nhớ EEPROM có thể lưu trử 40 năm

- Nạp chương trình ngay trên mạch nạp ICSP (In Circuit Serial

Programming) thông qua 2 chân

- Chức năng bảo mật chương trình

Trang 8

Chương 2: Cơ Sở Lý Thuyết

- Có thể hoạt động ở nhiều ossilokop

Các đặc tính ngoại vi bao gồm các khối chức năng sau:

- Timer 0:bộ đếm 8bit với bộ chia tần 8 bit

- Timer 1:bộ đếm 16bit với bộ chia tần số, có thể thực hiện chức năng đếm dựa vào xung clock ngoại vi ngay khi vi điều khiển hoạt động ở chế độ ngủ

- Bộ đếm 8bit với bộ chia tần số, bộ postcaler

- Hai bộ capter/so sánh/điều chế độ rộng xung

- Các chuẩn giao tiếp nối tiếp SSP, SPI và I2C

- Chuẩn giao tiếp nối tiếp USART với 9 bit địa chỉ

- Cổng giao tiếp song song PSP với các chân điều khiển RD, WR, CS ở

bên ngoài

Trang 9

Chương 2: Cơ Sở Lý Thuyết

2. Sơ đồ chân

Trang 10

Chương 2: Cơ Sở Lý Thuyết

3.Cấu trúc bên trong của vi điều khiển PIC 16f877a

a. Sơ đồ khối

Trang 11

Chương 2: Cơ Sở Lý Thuyết

b. Tổ chức bộ nhớ

Trang 12

Chương 2: Cơ Sở Lý Thuyết

Cấu trúc chương trình của pic 16f877a bao gồm bộ nhớ chương trình

(program memory) và bộ nhớ dử liệu (data memory)

Bộ nhớ chương trình:

Bộ nhớ chương trình của PIC 16f877a là bộ nhớ flash, dung lượng

bộ nhớ 8K word và được phân thành nhiều trang (trang 0 đến trang 3) Như vậy bộ nhớ chương trình có khả năng chứa được 8*1024=8192 lệnh

Để mã hóa được địa chỉ 8K word bộ nhớ chương trình, bộ đếm chương trình có dung lượng 13bit (PC<12:0)

Khi vi điều khiển được reset, bộ đếm chương trình sẽ chỉ đến địa chỉ0000h khi có ngắt xảy ra bộ đếm chương trình sẽ chỉ đến địa chỉ 0004h

Trang 13

Chương 2: Cơ Sở Lý Thuyết

Sơ đồ bộ nhớ chương trình

Bộ nhớ dữ liệu:

Bộ nhớ dử liệu là bộ nhớ EEPROM được chia làm 4 bank Mỗi bank

có dung lượng 128 byte bao gồm các thanh ghi chức năng đặc biệt SFG

(special function register) nằm ở các vùng địa chỉ thấp và các thanh ghi mục đích chung GPR (general purpose register) nằm ở các vùng địa chỉ còn lại trong bank Các thanh ghi SFG thường xuyên được sử dụng được đặt ở tất cảcác bank của bộ nhớ dử liệu

Trang 14

Chương 2: Cơ Sở Lý Thuyết

Sơ đồ bộ nhớ dữ liệu Pic 16f877a

4. Các cổng xuất nhập của PIC 16f877a

Vi điều khiển pic 16f877a có 5 cổng I/O bao gồm các port A, port B, port C, port D, port E

Trang 15

Chương 2: Cơ Sở Lý Thuyết

a. PORT A

Port A bao gồm 6 chân I/O, đây là các chân 2 chiều , port A là ngõ ra của bộ ADC, bộ so sánh, ngõ vào xung clock của timer0 và ngõvào của bộ giao tiếp MSSP (master synchronous serial port)

b. PORT B

Port B gồm 8 chân I/O Port B ngoài chức năng xuất nhập còn

để nạp chương trình cho vi điều khiển, liên quan đến ngắt ngoại vi và

bộ timer 0, có chức năng điện trở kéo lên được điều khiển bởi chương trình

c. PORT C

Port C gồm 8 chân I/O, chứa chân chức năng của bộ so sánh , timer 1, bộ PWM và các chuẩn giao tiếp nối tiếp I2C, SPI, SSP, USART

d. PORT D.

Port D gồm 8 chân I/O, ngoài là cổng xuất nhập hai chiều, còn

có chức năng là cổng xuất dử liệu của chuẩn giao tiếp PSP

Trang 16

Chương 2: Cơ Sở Lý Thuyết

sử dụng bộ chuyển đổi ADC, các thanh ghi này có thể được sử dụng như các thanh ghi thông thường khác

Khi quá trình chuyển đổi hoàn tất, kết quả sẽ được lưu vào hai thanh

ghi ADRESH:ADRESL, bit (ADCON0<2>) được xóa về 0 và cờ ngắt ADIF

- Chọn kênh chuyển đổi AD (thanh ghi ADCON0)

- Chọn xung clock cho kênh chuyển đổi AD (thanh ghi ADCON0)

- Cho phép bộ chuyển đổi AD hoạt động (thanh ghi ADCON0)

B2 Thiết lập các cờ ngắt cho bộ AD

- Clear bit ADIF.

- Set bit ADIE

- Set bit PEIE

- Set bit GIE

B3 Đợi cho tới khi quá trình lấy mẫu hoàn tất.

B4 Bắt đầu quá trình chuyển đổi (set bit ).

B5 Đợi cho tới khi quá trình chuyển đổi hoàn tất bằng cách:

- Kiểm tra bit Nếu =0, quá trình chuyển đổi đã hoàn tất

- Kiểm tra cờ ngắt

B6 Đọc kết quả chuyển đổi và xóa cờ ngắt, set bit (nếu cần tiếp tục chuyển đổi).

Trang 17

Chương 2: Cơ Sở Lý Thuyết

B7 Tiếp tục thực hiện các bước 1 và hai cho quá trình tiếp theo.

6. Giao tiếp nối tiếp

a. USART

USART (Universal Synchronous Asynchronous Receiver Transmitter) là một trong hai chuẩn giao tiếp nối tiếp.USART còn được gọi là giao diện giaotiếp nối tiếp nối tiếp SCI (Serial Communication Interface) Có thể sử dụng giao diện này cho các giao tiếp với các thiết bị ngọai vi, với các vi điều

khiển khác hay với máy tính Các dạng của giao diện USART ngọai vi bao gồm:

(RCSTA<7>) c0để cho phép giao diện USART

PIC16F877A được tích hợp sẵn bộ tạo tốc độ baud BRG (Baud Rate

Genetator) 8 bit dùng cho giao diện USART BRG thực chất là một bộ đếm

có thể được sử dụng cho cả hai dạng đồng bộ và bất đồng bộ và được điều khiển bởi thanh ghi PSBRG Ở dạng bất đồng bộ, BRG còn được điều khiển bởi bit BRGH ( TXSTA<2>) Ở dạng đồng bộ tác động của bit BRGH được

bỏ qua Tốc độ baud do BRG tạo ra được tính theo công thức sau:

Trong đó X là giá trị của thanh ghi RSBRG ( X là số nguyên và

0<X<255)

Các thanh ghi liên quan đến BRG bao gồm:

Trang 18

Chương 2: Cơ Sở Lý Thuyết

• TXSTA (địa chỉ 98h): chọn chế độ đòng bộ hay bất đồng bộ ( bit SYNC) và chọn mức tốc độ baud (bit BRGH)

• RCSTA (địa chỉ 18h): cho phép hoạt động cổng nối tiếp (bit SPEN)

• RSBRG (địa chỉ 99h): quyết định tốc độ baud

b. TRUYỀN DỮ LIỆU QUA CHUẨN GIAO TIẾP USART BẤT ĐỒNG BỘ

Thành phần quan trọng nhất của khối truyền dữ liệu là thanh ghi dịch dữ

liệu TSR (Transmit ShIft Register) Thanh ghi TSR sẽ lấy dữ liệu từ thanh

ghi đệm dùng cho quá trình truyền dữ liệu TXREG Dữ liệu cần truyền phải đựơc đưa trước vào thanh ghi TXREG Ngay sau khi bit

Stop của dữ liệu cần truyền trước đó được truyền xong, dữ liệu từ thanh ghi TXREG sẽ được đưa vào thanh ghi TSR, thanh ghi TXREG bị rỗng, ngắt

xảy ra và cờ hiệu TXIF (PIR1<4>) được set Ngắt này được điều khiển bởi bit TXIE (PIE1<4>) Cờ hiệu TXIF vẫn được set bất chấp trạng thái của bit TXIE hay tác động của chương trình (không thể xóa TXIF bằng chương

trình) mà chỉ reset về 0 khi có dữ liệu mới được đưa vào thanhh ghi TXREG

Trong khi cờ hiệu TXIF đóng vai trò chỉ thị trạng thái thanh ghi TXREG

thì cờ hiệu TRMT (TXSTA<1>) có nhiệm vụ thể hiện trạng thái thanh ghi TSR Khi thanh ghi TSR rỗng, bit TRMT sẽ được set Bit này chỉ đọc và

không có ngắt nào được gắn với trạng thái của nó Một điểm cần chú ý nữa làthanh ghi TSR không có trong bô nhớ dữ liệu và chỉ được điều khiển bởi

CPU

Khối truyền dữ liệu được cho phép hoạt động khi bit TXEN (TXSTA<5>)được set Quá trình truyền dữ liệu chỉ thực sự bắt đầu khi đã có dữ liệu trong thanh ghi TXREG và xung truyền baud được tạo ra Khi khối truyền dữ liệu được khởi động lần đầu tiên, thanh ghi TSR rỗng Tại thời điểm đó, dữ liệu

Trang 19

Chương 2: Cơ Sở Lý Thuyết

thanh ghi TXREG bị rỗng Lúc này ta có thể hình thành một chuỗi dữ liệu liên tục cho quá trình truyền dữ liệu Trong quá trình truyền dữ liệu nếu bit TXEN bị reset về 0, quá trình truyền kết thúc, khối truyền dữ liệu được reset

và pin RC6/TX/CK chuyển đến trạng thái high-impedance

Trong trường hợp dữ liệu cần truyền là 9 bit, bit TX9 (TXSTA<6>) được set và bit dữ liệu thứ 9 sẽ được lưu trong bit TX9D (TXSTA<0>) Nên ghi bit dữ liệu thứ 9 vào trước, vì khi ghi 8 bit dữ liệu vào thanh ghi TXREG

trước có thể xảy ra trường hợp nội dung thanh ghi TXREG sẽ được load vào thanh ghi TSG trước, như vậy dữ liệu truyền đi sẽ bị sai khác so với yêu cầu

Tóm lại, để truyền dữ liệu theo giao diện USART bất đồng bộ, ta cần thực hiện tuần tự các bước sau:

1 Tạo xung truyền baud bằng cách đưa các giá trị cần thiết vào thanh ghiRSBRG và bit điều khiển mức tốc độ baud BRGH

2 Cho phép cổng giao diện nối tiếp nối tiếp bất đồng bộ bằng cách clear bit SYNC và set bit PSEN

3 Set bit TXIE nếu cần sử dụng ngắt truyền

4 Set bit TX9 nếu định dạng dữ liệu cần truyền là 9 bit

5 Set bit TXEN để cho phép truyền dữ liệu (lúc này bit TXIF cũng sẽ

được set)

6 Nếu định dạng dữ liệu là 9 bit, đưa bit dữ liệu thứ 9 vào bit TX9D

7 Đưa 8 bit dữ liệu cần truyền vảo thanh ghi TXREG

8 Nếu sử dụng ngắt truyền, cần kiểm tra lại các bit GIE và PEIE (thanh ghi INTCON)

Các thanh ghi liên quan đến quá trình truyền dữ liệu bằng giao diện

USART bất đồng bộ:

Trang 20

Chương 2: Cơ Sở Lý Thuyết

- Thanh ghi INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép tất cả các ngắt

- Thanh ghi PIR1 (địa chỉ 0Ch): chứa cờ hiệu TXIF Thanh ghi PIE1

(địa chỉ 8Ch): chứa bit cho phép ngắt truyền TXIE

- Thanh ghi RCSTA (địa chỉ 18h): chứa bit cho phép cổng truyền dữ liệu (hai pin RC6/TX/CK và RC7/RX/DT)

- Thanh ghi TXREG (địa chỉ 19h): thanh ghi chứa dữ liệu cần truyền

- Thanh ghi TXSTA (địa chỉ 98h): xác lập các thông số cho giao diện

- Thanh ghi SPBRG (địa chỉ 99h): quyết định tốc độ baud

c. NHẬN DỮ LIỆU QUA CHUẨN GIAO TIẾP USART BẤT

Bit điều khiển cho phép khối nhận dữ liệu là bit RCEN (RCSTA<4>)

Thành phần quan trọng nhất của khối nhận dữ liệu là thsnh ghi nhận dữ liệu

RSR (Receive ShIft Register) Sau khi nhận diện bit Stop của dữ liệu truyền

tới, dữ liệu nhận được trong thanh ghi RSR sẽ được đưa vào thanh ghi

RCGER, sau đó cờ hiệu RCIF (PIR1<5>) sẽ được set và ngắt nhận được

Trang 21

Chương 2: Cơ Sở Lý Thuyết

Thanh ghi RCREG là thanh ghi có bộ đệm kép (double-buffered register)

và hoạt động theo cơ chế FIFO (First In First Out) cho phép nhận 2 byte và

byte thứ 3 tiếp tục được đưa vào thanh ghi RSR Nếu sau khi nhận được bit Stop của byte dữ liệu thứ 3 mà thanh ghi RCREG vẫn còn đầy, cờ hiệu báo tràn dữ liệu (Overrun Error bit) OERR(RCSTA<1>) sẽ được set, dữ liệu

trong thanh ghi RSR sẽ bị mất đi và quá trình đưa dữ liệu từ thanh ghi RSR vào thanh ghi RCREG sẽ bị gián đoạn

Trong trường hợp này cần lấy hết dữ liệu ở thanh ghi RSREG vào trước khi tiếp tục nhận byte dữ liệu tiếp theo Bit OERR phải được xóa bằng phần mềm và thực hiện bằng cách clear bit RCEN rồi set lại Bit FERR

(RCSTA<2>) sẽ được set khi phát hiện bit Stop dủa dữ liệu được nhận vào Bit dữ liệu thứ 9 sẽ được đưa vào bit RX9D (RCSTA<0>) Khi đọc dữ liệu từthanh ghi RCREG, hai bit FERR và RX9D sẽ nhận các giá trị mới Do đó

cần đọc dữ liệu từ thanh ghi RCSTA trước khi đọc dữ liệu từ thanh ghi

RCREG để tránh bị mất dữ liệu

Tóm lại, khi sử dụng giao diện nhận dữ liệu USART bất đồng bộ cần

tiến hành tuần tự các bước sau:

1 Thiết lập tốc độ baud (đưa giá trị thích hợp vào thanh ghi SPBRG và bit BRGH

2 Cho phép cổng giao tiếp USART bất đồng bộ (clear bit SYNC và set bit SPEN)

3 Nếu cần sử dụng ngắt nhận dữ liệu, set bit RCIE

4 Nếu dữ liệu truyền nhận có định dạng là 9 bit, set bit RX9

5 Cho phép nhận dữ liệu bằng cách set bit CREN

6 Sau khi dữ liệu được nhận, bit RCIF sẽ được set và ngắt được kích

hoạt (nếu bit RCIE được set)

Trang 22

Chương 2: Cơ Sở Lý Thuyết

7 Đọc giá trị thanh ghi RCSTA để đọc bit dữ liệu thứ 9 và kiểm tra xem quá trình nhận dữ liệu có bị lỗi không

8 Đọc 8 bit dữ liệu từ thanh ghi RCREG

9 Nếu quá trình truyền nhận có lỗi xảy ra, xóa lỗi bằng cách xóa bit

CREN

10 Nếu sử dụng ngắt nhận cần set bit GIE và PEIE (thanh ghi INTCON)

Các thanh ghi liên quan đến quá trình nhận dữ liệu bằng giao diện

USART bất đồng bộ:

- Thanh ghi INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): chứa các bit chophép toàn bộ các ngắt (bit GIER và PEIE)

- Thanh ghi PIR1 (địa chỉ 0Ch): chứa cờ hiệu RCIE

- Thanh ghi PIE1 (địa chỉ 8Ch): chứa bit cho phép ngắt RCIE

- Thanh ghi RCSTA (địa chỉ 18h): xác định các trang thái trong quá

trình nhận dữ liệu

- Thanh ghi RCREG (địa chỉ 1Ah): chứa dữ liệu nhận được

- Thanh ghi TXSTA (địa chỉ 98h): chứa các bit điều khiển SYNC và

ngắt vẫn phụ thuôc vào bit GIE và các bit điều khiển khác Bit điều khiển

ngắt RB0/INT và TMR0 nằm trong thanh ghi INTCON, thanh ghi này còn

Trang 23

Chương 2: Cơ Sở Lý Thuyết

chứa bit cho phép các ngắt ngoại vi PEIE Bit điều khiển các ngắt nằm trong thanh ghi PIE1 và PIE2 Cờ ngắt của các ngắt nằm trong thanh ghi PIR1 và PIR2

Trong một thời điểm chỉ có một chương trình ngắt được thực thi,

chương trình ngắt được kết thúc bằng lệnh RETFIE Khi chương trình ngắt được thực thi, bit GIE tự động được xóa, địa chỉ lệnh tiếp theo của chương trình chính được cất vào trong bộ nhớ Stack và bộ đếm chương trình sẽ chỉ đến địa chỉ 0004h Lệnh RETFIE được dùng để thoát khỏi chương trình ngắt

và quay trở về chương trình chính, đồng thời bit GIE cũng sẽ được set để chophép các ngắt hoạt động trở lại Các cờ hiệu được dùng để kiểm tra ngắt nào đang xảy ra và phải được xóa bằng chương trình trước khi cho phép ngắt tiếptục hoạt động trở lại để ta có thể phát hiện được thời điểm tiếp theo mà ngắt xảy ra

Đối với các ngắt ngoại vi như ngắt từ chân INT hay ngắt từ sự thay đổi trạng thái các pin của PORTB (PORTB Interrupt on change), việc xác định ngắt nào xảy ra cần 3 hoặc 4 chu kì lệnh tùy thuộc vào thời điểm xảy ra ngắt.Cần chú ý là trong quá trình thực thi ngắt, chỉ có giá trị của bộ đếm

chương trình được cất vào trong Stack, trong khi một số thanh ghi quan trọng

sẽ không được cất và có thể bị thay đổi giá trị trong quá trình thực thi

chương trình ngắt Điều này nên được xử lí bằng chương trình để tránh hiện tượng trên xảy ra

Trang 24

Chương 2: Cơ Sở Lý Thuyết

chế độ sleep nếu bit cho phép ngắt được set trước khi lệnh SLEEP được thực thi

b. NGẮT DO SỰ THAY ĐỔI TRẠNG THÁI CÁC PIN TRONG

PORTB

Các pin PORTB<7:4> được dùng cho ngắt này và được điều khiển bởi bit

RBIE (thanh ghi INTCON<4>) Cờ ngắt của ngắt này là bit RBIF

Int16 a,b;

Void xu_ly_ADC ( ) {

}

#INT_TIMER1 Void xu_ly_ngat_timer ( ) {

Trang 25

Chương 2: Cơ Sở Lý Thuyết

} Main ( ) { }

- Đầu tiên là các chỉ thị tiền xử lý : # có nhiệm vụ báo cho CCS cần sử dụng

những gì trong chương trình C như dùng VXL gì , có dùng giao tiếp PC qua cổng COM không , có dùng ADC không , có dùng DELAY không , có biên dịch kèm các file hay không

- Các khai báo biến

- Các hàm con do ta viết : xu_ly_ADC () ,

- Các hàm phục vụ ngắt theo sau bởi 1 chỉ thị tiền xử lý cho biết dùng ngắt nào

- Chương trình chính

b. Khai báo và sử dụng biến.

Các loại biến sau được hỗ trợ :

int1 số 1 bit = true hay false ( 0 hay 1) int8 số nguyên 1 byte ( 8 bit)

int16 số nguyên 16 bit int32 số nguyên 32 bit char ký tự 8 bit

float số thực 32 bit short mặc định như kiểu int1 byte mặc định như kiểu int8

Trang 26

Chương 2: Cơ Sở Lý Thuyết

int mặc định như kiểu int8 long mặc định như kiểu int16

Thêm signed hoặc unsigned phía trước để chỉ đó là số có dấu hay không dấu Khai báo như trên mặc định là không dấu 4 khai báo cuối không nên dùng vì dễ nhầm lẫn Thay vào đó nên dùng 4 khai báo đầu

c. Các cấu trúc lệnh

d. Truyền thông với máy tính qua cổng COM

Để sử dụng giao thức này , phải có 2 khai báo như ví dụ sau :

#use delay (clock = 40000000 ) // nếu VDK đang dùng OSC 40Mhz

#use rs232 (baud=19200 , parity=n , xmit=pin_C6 , rcv=pin_C7 )

// baud= 19200 , không chẵn lẻ , chân truyền C6 , chân nhận C7

Các hàm liên quan :

Trang 27

Chương 2: Cơ Sở Lý Thuyết

Printf ( ) Getc ( ) putc ( ) Getch ( ) putchar ( ) Getchar ( ) fputc ( ) Fgetc ( ) puts ( ) Gets ( ) fputs ( ) Fgets ( )

Kbhit ( ) Assert ( ) mới trên CCS 3.222 Perror ( ) mới trên CCS 3.222 Set_uart_speed ( )

Setup_uart ( )

Printf ( string )

Printf ( cstring , values )

Dùng xuất chuỗi theo chuẩn RS232 ra PC

string là 1 chuỗi hằng hay 1 mảng ký tự ( kết thúc bởi ký tự null) value là danh sách các biến , cách nhau bởi dấu phẩy

Bạn phải khai báo dạng format của value theo kiểu %wt Trong đó w có thể có hoặc không , có giá trị từ 1-9 chỉ rõ có bao nhiêu ký tự được xuất ra ( mặc định không có thì có bao nhiêu ra bấy nhiêu ), hoặc 01-09 sẽ chèn

thêm 0 cho đủ ký tự hoặc 1.1-1.9 cho trường hợp số thực còn t là kiểu giá trị

t có thể là :

C : 1 ký tự

Trang 28

Chương 2: Cơ Sở Lý Thuyết

S : chuỗi hoặc ký tự

U : số 8 bit không dấu

x : số 8 bit kiểu hex ( ký tự viết thường ,VD : 1ef )

X : số 8 bit kiểu hex ( ký tự viết hoa ,VD : 1EF )

D : số 8 bit có dấu

e : số thực có luỹ thừa VD : e12

II. IC MAX232

Cấu tạo, công dụng:

Vi mạch MAX 232 của hãng MAXIM là một vi mạch chuyên dùng trong giao diện nối tiếp với máy tính Chúng có nhiệm vụ chuyển đổi mức TTL ở lối vào thành mức +10V hoặc –10V ở phía truyền và các mức +3  +15V

hoặc -3  -15V thành mức TTL ở phía nhận

Vi mạch MAX 232 có hai bộ đệm và hai bộ nhận

Chân của MAX 232 nhận tín hiệu theo chuẩn RS232 ( mức 1: -3V đến -15V; mức 0 : 3V đến 15V) nên ta nối với chân 3 của cổng COM (là chân truyền dữ liệu

từ máy vi tính xuống vi xử lý)

Trang 29

Chương 2: Cơ Sở Lý Thuyết

Chân của MAX 232 xuất tín hiệu theo chuẩn TTL (mức 1: 5V; mức 0: 0V)

nên ta nối với chân RXD của Pic16f877a

Chân của MAX 232 nhận tín hiệu theo chuẩn TTL nên ta nối với chân TXD của Pic16f877a để truyền tín hiệu của vi xử lý lên máy tính

Chân của MAX 232 xuất tín hiệu theo chuẩn RS232 nên ta nối với chân 2 của cổng COM (là chân nhận dữ liệu từ vi xử lý gửi lên cho máy vi tính)

Các thông số kỹ thuật

Điện áp lớn nhất có thể cho qua là ±30V

Dòng cấp cho RS-232 trong khoảng 5÷10mA.

Hoạt động trong khoảng tầm nhiệt -650

C  +1650CCác tụ bơm điện áp nên sử dụng ≥1uf, ở đây ta chọn là 10uF

III. OPTO PC817

Trang 30

Chương 2: Cơ Sở Lý Thuyết

Sử dụng phổ biến và giá thành rẻ

Opto hay còn gọi là cách ly quang là linh kiện tích hợp có cấu tạo gồm 1 led

và 1 photo diot hay 1 photo transitor Được dùng để cách ly giữa các khối chênh

lệch nhau về điện hay công suất như khối có công suất nhỏ với khối điện áp lớn

Hoặc có thể dùng để chống nhiểu cho các mạch cầu H, ngỏ ra PLC, chống nhiểu

cho các thiết bị đo lường…

Khi có dòng điện đi qua Led trong PC817 (Chân 1 và 2) thì tùy vào dòng quaLED lớn hay nhỏ mà quang transistor cho phép dòng khuyếch đại qua nó lớn hay nhỏ (Chân 3 và 4)

IV. LM 7805

Là IC ổn áp 5V với:

- Output (3): Chân điện áp ra 5V

- Command (2): Chân nối mass

- Input (1) : Chân điện áp vào

- Chân nối mass cũng rất quan trọng, nếu chân này bị hở thì áp tại ngõ ra sẽ có thể bằng với điện áp ngõ vào gây hư hỏng các linh kiện điện tử trong mạch

- Khi ở 25 độ C, IC 7805 có đặc điểm như sau:

 Điện áp đưa vào tối đa: 25V

 Dòng tối đa cấp cho tải: 1.5A

 Nhiệt độ IC có thể chịu đựợc: -55 ÷ 150 ºC

 Điện áp ngõ vào 7 ÷ 25(V) thì điện áp ngõ ra dao động ở 4.8 ÷ 5.2(V)

Trang 31

Chương 2: Cơ Sở Lý Thuyết

V. LM35

LM35 là một họ IC cảm biến nhiệt độ sản xuất theo công nghệ bán dẫn dựa trên các chất bán dẫn dễ bị tác động bởi sự thay đổi của nhiệt độ , đầu ra của cảm biến làđiện áp(V) tỉ lệ với nhiệt độ mà nó được đặt trong môi trường cần đo.Đo nhiệt độ chính xác (ºC)

Một số thông số kỹ thuật:

Điện áp kích: 12VDC, Điện áp chịu được: 250V, Dòng chịu được: 5A

Trang 32

Chương 3: Cơ Sở Lý Thuyết Lập Trình Giao Diện VB

CHƯƠNG 3:

CƠ SỞ LÝ THUYẾT LẬP TRÌNH GIAO DIỆN VB

Trang 33

Chương 3: Cơ Sở Lý Thuyết Lập Trình Giao Diện VB

I. GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH VISUAL BASIC 6.0

VB 6.0 là phiên bản mới nhất của Visual Basic do hãng Microsoft viết đây

là ngôn ngữ lập trình mạnh sử dụng phương pháp lập trình hướng đối tượng nên nó

đã giúp ích rất nhiều cho người lập trình nhờ vào khả năng tự động của nó Ngoài

phương pháp kinh điển là xây dựng các lớp đối tượng bằng việc viết mã lệnh, với VB6.0 ta có thể thực hiện công việc này chỉ bằng các thao tác “kéo - thả” các đối tượngtrên màn hình để thiết kế các ứng dụng bất kỳ một cách nhanh chóng và chính xác Bên cạnh các công cụ được hỗ trợ sẵn, người sử dụng còn có thể tạo ra thêm các

công cụ khác để phục vụ cho những mục đích riêng của mình

Boolean Gồm 2 giá trị: TRUE & FALSE

Byte Các giá trị số nguyên từ 0 – 255

Integer Các giá trị số nguyên từ -32768 – 32767

Long Các giá trị số nguyên từ -2147483648 – 2147483647 Thường được

gọi là số nguyên dài

Single Các giá trị số thực từ -3.402823E+38 – 3.402823E+38 Thường được

gọi là độ chính xác đơn

Double Các giá trị số thực từ -1.79769313486232E+308 -

1.79769313486232E+308 Thường được gọi là độ chính xác kép

Currency Dữ liệu tiền tệ chứa các giá trị số từ -922.337.203.685.477,5808 -

922.337.203.685.477,5807

Trang 34

Chương 3: Cơ Sở Lý Thuyết Lập Trình Giao Diện VB

String

Chuỗi dữ liệu từ 0 đến 65.500 ký tự hay ký số, thậm chí là các giá trị đặc biệt như ^%@ Giá trị kiểu chuỗi được đặt giữa 2 dấu ngoặc kép (“”)

Date Dữ liệu kiểu ngày tháng, giá trị được đặt giữa cặp dấu ## Việc định

dạng hiển thị tùy thuộc vào việc thiết lập trong Control Panel

Variant Chứa mọi giá trị của các kiểu dữ liệu khác, kể cả mảng

b) Hằng số

Hằng số (Constant) là giá trị dữ liệu không thay đổi

Khai báo hằng:

[Public|Private] Const <tên hằng> [As <kiểu dữ liệu>] = <biểu thức>

Trong đó, tên hằng: là một tên được đặt giống quy tắc đặt tên điều khiển

Ta có thể dùng cửa sổ Object Browser để xem danh sách các hằng có sẵn của

VB và VBA (Visual Basic for Application)

Trường hợp trùng tên hằng trong những thư viện khác nhau, ta có thể chỉ rõ

Biến có 2 đăc điểm:

- Mỗi biến có một tên

- Mỗi biến có thể chứa duy nhất một loại dữ liệu

Khai báo:

[Public|Private|Static|Dim] <tên biến> [ As <kiểu dữ liệu> ]

Trong đó, tên biến: là một tên được đặt giống quy tắc đặt tên điều khiển Nếu

cần khai báo nhiều biến trên một dòng thì mỗi khai báo cách nhau dấu phẩy (,)

Nếu khai báo biến không xác định kiểu dữ liệu thì biến đó có kiểu Variant

Trang 35

Chương 3: Cơ Sở Lý Thuyết Lập Trình Giao Diện VB

Khai báo ngầm: Đây là hình thức không cần phải khai báo một biến trước khi sửdụng Cách dùng này có vẻ thuận tiện nhưng sẽ gây một số sai sót, chẳng hạn khi ta đánh nhầm tên biến, VB sẽ hiểu đó là một biến mới dẫn đến kết quả chương trình sai mà rất khó phát hiện

Ví dụ:

Dim Num As Long, a As SingleDim Age As Integer

Khai báo tường minh: Để tránh rắc rối như đã nêu ở trên, ta nên quy định

rằng VB sẽ báo lỗi khi gặp biến chưa được khai báo bằng dòng lệnh:

Option Explicit trong phần Declaration (khai báo) của mô-đun

Option Explicit chỉ có tác dụng trên từng mô-đun do đó ta phải đặt dòng lệnhnày trong từng mô-đun của biểu mẫu, mô-đun lớp hay mô-đun chuẩn

d) Biểu thức

Toán tử hay phép toán (Operator): là từ hay ký hiệu nhằm thực hiện phép tính và

xử lý dữ liệu

Toán hạng: là giá trị dữ liệu (biến, hằng…)

Biểu thức: là tập hợp các toán hạng và các toán tử kết hợp lại với nhau theo quy tắc nhất định để tính toán ra một giá trị nào đó

Các loại phép toán:

Các phép toán số học: Thao tác trên các giá trị có kiểu dữ liệu số

Trang 36

Chương 3: Cơ Sở Lý Thuyết Lập Trình Giao Diện VB

Phép

- Phép lấy số đối Kiểu số (Integer,

+ Phép cộng hai số Kiểu số (Integer,

- Phép trừ hai số Kiểu số (Integer,

* Phép nhân hai số Kiểu số (Integer,

/ Phép chia hai số Kiểu số (Integer,

Single…)

Single hay Double

\ Phép chia lấy phần

Mod Phép chia lấy phần dư Integer, Long Integer, Long

^ Tính lũy thừa Kiểu số (Integer,

Các phép toán quan hệ:

Đây là các phép toán mà giá trị trả về của chúng là một giá trị kiểu Boolean (TRUE hay FALSE)

Trang 37

Chương 3: Cơ Sở Lý Thuyết Lập Trình Giao Diện VB

Các phép toán Logic: là các phép toán tác động trên kiểu Boolean và cho kết quả là kiểu Boolean Các phép toán này bao gồm AND (và), OR (hoặc), NOT (phủ định) Sau đây là bảng giá trị của các phép toán:

e) Câu lệnh

Một câu lệnh (statement) xác định một công việc mà chương trình phải thực

hiện để xử lý dữ liệu đã được mô tả và khai báo Các câu lệnh được ngăn cách với nhau bởi ký tự xuống dòng Ký tự xuống dòng báo hiệu kết thúc một câu lệnh

Cú pháp:

<Tên biến> = <Biểu thức>

Lưu ý: Kiểu dữ liệu của biểu thức (vế phải của lệnh gán) phải phù hợp với biến ta

Trang 38

Chương 3: Cơ Sở Lý Thuyết Lập Trình Giao Diện VB

Ý nghĩa câu lệnh:

Các dòng lệnh hay dòng lệnh sẽ được thi hành nếu như điều kiện là đúng Còn

nếu như điều kiện là sai thì câu lệnh tiếp theo sau cấu trúc If Then được thi hành.

Dạng đầy đủ: If Then Else

If <điều kiện 1> Then

VB sẽ kiểm tra các điều kiện, nếu điều kiện nào đúng thì khối lệnh tương

ứng sẽ được thi hành Ngược lại nếu không có điều kiện nào đúng thì khối lệnh sau

từ khóa Else sẽ được thi hành.

g) Lệnh lựa chọn Select Case:

Trong trường hợp có quá nhiều các điều kiện cần phải kiểm tra, nếu ta dùng

cấu trúc rẽ nhánh If…Then thì đoạn lệnh không được trong sáng, khó kiểm tra, sửa

đổi khi có sai sót Ngược lại với cấu trúc Select…Case, biểu thức điều kiện sẽ được tính toán một lần vào đầu cấu trúc, sau đó VB sẽ so sánh kết quả với từng trường hợp (Case) Nếu bằng nó thi hành khối lệnh trong trường hợp (Case) đó

Select Case <biểu thức kiểm tra>

Case <Danh sách kết quả biểu thức 1>

[Khối lệnh 1]

Case <Danh sách kết quả biểu thức 2>

[Khối lệnh 2]

[Case Else

Trang 39

Chương 3: Cơ Sở Lý Thuyết Lập Trình Giao Diện VB

End Select

Mỗi danh sách kết quả biểu thức sẽ chứa một hoặc nhiều giá trị Trong

trường hợp có nhiều giá trị thì mỗi giá trị cách nhau bởi dấu phẩy (,) Nếu có nhiều Case cùng thỏa điều kiện thì khối lệnh của Case đầu tiên sẽ được thực hiện

h) Toán tử Is & To:

Toán tử Is: Được dùng để so sánh <Biểu thức kiểm tra> với một biểu thức

Case 18 To 30MsgBox “Ban da truong thanh, lo lap than di”

Case 31 To 60MsgBox “Ban dang o lua tuoi trung nien”

Case Else

MsgBox “Ban da lon tuoi, nghi huu duoc roi day!”

End Select Lưu ý: Trong ví dụ trên không thể viết Case Tuoi < 18.

i) Cấu trúc lặp

Các cấu trúc lặp cho phép thi hành một khối lệnh nào đó nhiều lần

Lặp không biết trước số lần lặp

Khối lệnhDo Loop: Đây là cấu trúc lặp không xác định trước số lần lặp, trong đó, số lần lặp sẽ được quyết định bởi một biểu thức điều kiện Biểu thức điều kiện phải có kết quả là True hoặc False Cấu trúc này có 4 kiểu:

Kiểu 1:

Do While <điều kiện>

Trang 40

Chương 3: Cơ Sở Lý Thuyết Lập Trình Giao Diện VB

<khối lệnh> ĐkiệnLoop

Khối lệnh sẽ được thi hành đến khi nào điều kiện không còn đúng nữa Do biểu thức điều kiện được kiểm tra trước khi thi hành khối lệnh, do đó có thể khối lệnh sẽ không được thực hiện một lần nào cả nếu điều kiện sai

Kiểu 2:

Do

<khối lệnh>

Loop While <điều kiện>

Khối lệnh sẽ được thực hiện, sau đó biểu thức điều kiện được kiểm tra, nếu điều kiện còn đúng thì, khối lệnh sẽ được thực hiện tiếp tục Do biểu thức điều kiện được kiểm tra sau, do đó khối lệnh sẽ được thực hiện ít nhất một lần

Kiểu 3:

Do Until <điều kiện>

<khối lệnh>

LoopCũng tương tự như cấu trúc Do While Loop nhưng khác biệt ở chỗ là khối lệnh sẽ được thi hành khi điều kiện còn sai

Kiểu 4:

Do

<khối lệnh>

Loop Until <điều kiện>

Khối lệnh được thi hành trong khi điều kiện còn sai và có ít nhất là một lần lặp

Lặp biết trước số lần lặp:

• For Next

Đây là cấu trúc biết trước số lần lặp, ta dùng biến đếm tăng dần hoặc giảm

Ngày đăng: 07/09/2017, 16:01

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w