Tải bản đầy đủ (.docx) (33 trang)

Đồ án: Ứng dụng Pic16F877A đo và ổn định nhiệt độ bằng thuật toán PID

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (4.3 MB, 33 trang )

ĐỀ TÀI NHÓM 5
“Ứng dụng Pic16F877A đo và ổn định nhiệt độ bằng thuật toán PID”
MỤC LỤC
Chương I: Tìm hiểu thiết bị.
Chương II: Sơ đồ nguyên lý.
Chương III: Lập trình CCS, kết nối PC và mô phỏng Proteus.
Chương IV: Mô hình thực tế và chạy thử chương trình.
Chương V: Kết luận.
Thành viên trong nhóm:
1/ Nguyễn Anh Tuấn – 08D2 (nhóm tr ưởng)
2/ Nguyễn Duy Luân – 08D2
3/ Nguyễn Hữu Tâm – 08D2
4/ Nguyễn Văn Hiệu – 08D4

Nguyễn Anh Tuấn - 08D2 – Bách Khoa Đà Nẵng

Page 1


Chương I
TÌM HIỂU THIẾT BỊ
1/ PIC16F877A:

- Đây là vi điều khiển thuộc họ PIC16Fxxx với tập lệnh gồm 35 l ệnh có đ ộ
dài 14 bít.Mỗi lệnh đều được thực thi trong một chu kỳ xung clock.T ốc đ ộ
hoạt động tối đa cho phép là 20MHz với một chu kỳ l ệnh là 200ns.B ộ nh ớ
chương trình 8Kx14 bít, bộ nhớ dữ liệu 368x8 byte RAM và 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.
- Các đặc tính ngoại vi bao gồm các khối chức năng sau:
+ Timer0: bộ đếm 8 bít với bộ chia tần số 8 bít.
Nguyễn Anh Tuấn - 08D2 – Bách Khoa Đà Nẵng



Page 2


+ Timer1: bộ đếm 16 bít 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 ế
độ sleep.
+ Timer2: bộ đếm 8 bít với bộ chia tần số, bộ postcaler.
+ Hai bộ Capture/ 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 bít đị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.
- Các kênh Analog:
+ 8 kênh chuyển đổi ADC 10 bít.Hai bộ so sánh.
- Bên cạnh đó là một vài đặc tính khác của vi điều khiển nh ư:
+ 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ữ trên 40 năm.
+ Khả năng tự nạp chương trình với sự điều khiển của phần m ềm.
+ Watchdog Timer với bộ dao động trong.
+ Chức năng bảo mật mã chương trình.
+ Chế độ Sleep.
+ Có thể hoạt động với nhiều dạng Oscillator khác nhau.
2/ CẢM BIẾN NHIỆT ĐỘ LM35 DZ:

Nguyễn Anh Tuấn - 08D2 – Bách Khoa Đà Nẵng

Page 3



- LM35 là một cảm biến nhiệt độ analog, nhiệt độ được xác định bằng
cách đo hiệu điện thế ngõ ra của LM35:
+ Đơn vị nhiệt độ: °C.
+ Có mức điện áp thay đổi trực tiếp theo độ C (10mV/*C).
+ Có hiệu năng cao, công suất tiêu thụ là 60uA
+ Sản phẩm không cần phải canh chỉnh nhiệt độ khi sử dụng.
+ Độ chính xác thực tế: 1/4°C ở nhiệt độ phòng và 3/4°C ngoài khoảng
-55°C tới 150°C.
+ Chân +Vs là chân cung cấp điện áp cho LM35DZ hoạt động (4—20V).
+ Chân Vout là chân điện áp ngõ ra của LM35DZ, được đưa vào chân Analog
của các bộ ADC.
+ Chân GND là chân nối mass,lưu ý cần nối mass chân này đ ể tránh làm
hỏng
cảm biến cũng như làm giảm sai số trong quá trình đo.
3/ OPAM LM358:
- Tín hiệu từ cảm biến được đưa qua opam LM358 để khuếch đại lên
trước khi đưa vào chân analog của pic và qua đó nâng cao đ ược đ ộ chính
xác hơn.

Nguyễn Anh Tuấn - 08D2 – Bách Khoa Đà Nẵng

Page 4


4/ LED 7 ĐOẠN:
- LED 7 đoạn là một công cụ thông dụng được dùng đ ể hi ển th ị các thông
số dưới dạng các số từ 0 đến 9.Mặc dù công cụ LCD giúp ta th ể hi ện các
thông số một cách linh động hơn nhưng LED 7 đoạn vẫn đ ược sử dụng
nhiều trong công

nghiệp do các ưu thế của nó như: ít chịu ảnh hưởng của nhiệt độ, d ễ t ạo
sự chú ý và góc nhìn rộng.
- LED 7 đoạn bao gồm 7 đoạn LED được đánh dấu là các kí t ự a, b, c, d, e, f,
g và một dấu chấm thập phân kí hiệu là dp.Ta có th ể xem LED 7 đo ạn là
một tổ hợp gồm 8 LED.8 LEDnày có một đầu (Anode hoặc Cathode) đ ược
nối chung và được bố trí theo mộtqui tắc nhất định dùng đ ể hi ển th ị các
chữ số thập phân.

Nguyễn Anh Tuấn - 08D2 – Bách Khoa Đà Nẵng

Page 5


- Có hai loại LED 7 đoạn, đó là loại Anode chung (c ực Anode c ủa các LED
được nối chung với nhau) và loại Cathode chung (cực Cathode c ủa các LED
được nối chung với nhau).
- Tùy theo từng loại LED mà ta có các phương pháp đi ều khi ển các LED
trong tổ hợp đó sáng tắt một cách thích hợp.Đối với loại Anode chung, m ột
LED sẽ
được bật sang nếu mức logic đưa vào chân điều khiển đoạn LED đó là m ức
logic 0.Đối với loại Cathode chung, một LED sẽ được bật sang n ếu m ức
logic đưa vào chân điều khiển đoạn LED đo là mức logic 1.

5/ TRANZITO PNP (A1015):

Nguyễn Anh Tuấn - 08D2 – Bách Khoa Đà Nẵng

Page 6



- Bảng thông số:

- Chân nguồn của các led 7 đoạn sẽ được điều khiển bởi các chân trên vi
điều khiển thông qua cực Base của tranzito PNP.
Nguyễn Anh Tuấn - 08D2 – Bách Khoa Đà Nẵng

Page 7


6/ QUẠT LÀM MÁT:
- Tác dụng làm mát cho nguồn nhiệt lúc cần thiết.
- Thông số:
+ Nguồn DC 12V.
+ Dòng điện: 0.14A.
+ Vỏ bọc bằng nhựa.
+ Kích thước 30mm x 30mm x 10mm.

7/ MOSFET IRF 540 + OPTO PC817:

Nguyễn Anh Tuấn - 08D2 – Bách Khoa Đà Nẵng

Page 8


- Mosfet hay còn gọi là tranzitor có cực cách ly, có tác dụng nh ư m ột khóa K.
Việc kích đóng hay mở khóa K tùy thuộc điện áp đặt vào chân G c ủa
mosfet.
- Ở đây ta đưa xung PWM từ chân RC1 của Pic vào chân G c ủa mosfet đ ể
kích mở nó, qua đó điều chỉnh được điện áp cung c ấp cho đ ộng c ơ (qu ạt
làm mát), nghĩa là thay đổi được tốc độ của động cơ.


Nguyễn Anh Tuấn - 08D2 – Bách Khoa Đà Nẵng

Page 9


- Dùng Opto PC817 để cách ly quang giữa mạch động l ực và m ạch đi ều
khiển.

8/ CỔNG COM VÀ IC MAX 232:

Nguyễn Anh Tuấn - 08D2 – Bách Khoa Đà Nẵng

Page 10


a/ Cổng COM:
- Giao tiếp giữa PIC và PC thông qua cổng nối tiếp hay còn gọi là cổng COM
theo chuẩn giao tiếp RS232.
- Cổng COM có 2 dạng: đầu nối DB25 ( 25 chân ) và DB9 ( 9 chân ) đ ược mô
tả như bảng sau:

- Cổng nối tiếp được sử dụng để truyền dữ liệu hai chiều giữa máy tính và
ngoại vi, nó có các ưu điểm sau:
+ Khoảng cách truyền xa hơn so với truyền song song.
+ Số dây kết nối ít.
+ Có thể truyền không dây dùng hồng ngoại.
Nguyễn Anh Tuấn - 08D2 – Bách Khoa Đà Nẵng

Page 11



+ Có thể ghép nối với VĐK hay PLC.
+ Cho phép nối mạng.
+ Có thể tháo lắp thiết bị trong lúc máy tính đang làm việc.
+ Có thể cung cấp nguồn cho các mạch điện đơn giản.
- Các thiết bị ghép nối chia làm 2 loại:
+ DCE: là các thiết bị trung gian như MODEM.
+ DTE: là các thiết bị tiếp nhận hay truyền dữ liệu như PC, PLC, VĐK.
+ Việc trao đổi tín hiệu thông thường qua 2 chân RDX (nh ận) và RTX (g ửi).
- Tín hiệu truyền theo chuẩn RS232:
+ Chuẩn RS232 truyền tín hiệu với các tốc độ thông d ụng là: 1200 bps,
4800 bps, 9600 bps, 19200 bps.
+ Định dạng khung truyền chuẩn RS232:

• Khi không truyền dữ liệu, đường truyền sẽ ở trạng thái mark ( điện
áp -10V).
• Khi bắt đầu truyền, DTE sẽ đưa ra xung Start ( space :10V ) và sau đó
truyền lần lượt từ D0 -> D7 và Parity, cuối cùng là xung Stop ( mark:
-10V ) để khôi phục lại trạng thái đường truyền.Ví dụ truy ền ký t ự
A:

• Các đặc tính kỹ thuật của chuẩn RS232:

Nguyễn Anh Tuấn - 08D2 – Bách Khoa Đà Nẵng

Page 12


b/ IC MAX 232:


- IC MAX 232 là IC chuyên dùng trong giao tiếp nối ti ếp v ới PC.Nó có 2 b ộ
đệm và 2 bộ nhận.Đường dẫn điều khiển lối vào CTS, điều khi ển việc
xuất dữ liệu ở cổng nối tiếp khi cần thiết, được nối v ới chân 9.Chân RTS
(chân 10) được nối với đường dẫn bắt tay để điều khiển v ới quá trình
nhận.Thường thì các đường dẫn bắt tay được nối với cổng nối ti ếp qua
các cầu nối, để khi không dùng đến nữa có thể để hở mạch các cầu
này.Cách truyền dữ liệu đơn giản nhất là chỉ dùng 3 chân RTX, RDX và
GND.
Nguyễn Anh Tuấn - 08D2 – Bách Khoa Đà Nẵng

Page 13


9/ MỘT SỐ LINH KIỆN KHÁC:

Điện trở

Nút bấm

Tụ điện 33pF

Th ạch anh 12MHz

Jack ngu ồn DC

Nguyễn Anh Tuấn - 08D2 – Bách Khoa Đà Nẵng

Page 14



Cáp nối

Bóng điện 60W (làm nguồn nhiệt)

Led đ ơn

CHƯƠNG II
SƠ ĐỒ NGUYÊN LÝ

Nguyễn Anh Tuấn - 08D2 – Bách Khoa Đà Nẵng

Page 15


CHƯƠNG III
LẬP TRÌNH CCS, KẾT NỐI PC VÀ MÔ PHỎNG PROTEUS
1/ ĐO NHIỆT ĐỘ:
- Sử dụng cảm biến LM35 với độ phân giải là 10 mv/ 0C, dải nhiệt độ đo
được từ -50 đến 150 0C.
- Để đọc được giá trị ADC ta dùng hàm read_adc( );
- Từ giá trị ADC đọc được ta quy đổi ngược lại nhiệt độ:
+ chọn chế độ ADC 10 bít (nghĩa là ADC có giá tr ị t ừ 0 đ ến 1023).
+ ta có: read_adc( ) =1023 ---------------- ứng với điện áp 5 (V)
read_adc( )=x
---------------- ứng với điện áp (x*5)/1023 (V)
+ mặt khác:
cứ 10 (mv)
----------------  ứng với 1 0C
vậy (x*5*10^3)/1023 (mv) ---------------- ứng với (x*5*10^3)/(1023*10)

=0.489x 0C
+ chống nhiễu:
* lọc số:
adc_cu=0;anpha=k;
Vòng lặp
{
x=read_adc( );
adc_moi=anpha*adc_cu+ (1-anpha)*x;
adc_cu=adc_moi;
}
* lọc nhiễu vi sai:
adc_tong=0;
Vòng lặp
{
adc_tong=adc_tong+read_adc( );
}
adc_tb=adc_tong/(số vòng lặp);
2/ HIỂN THỊ RA LED 7 ĐOẠN:
- Dùng 4 led 7 đoạn để hiển thị nhiệt độ:
+led 1 và led 2 hiển thị nhiệt độ hàng chục và hàng đơn vị (từ 0 đến 99 0C).
+led 3 và led 4 hiển thị ký tự 0C.
- Dùng thuật toán quét led:
Vòng lặp
{
HC=temp/10;
HDV=temp%10;
Nguyễn Anh Tuấn - 08D2 – Bách Khoa Đà Nẵng

Page 16



Xuất dữ liệu [HC];
Bật nguồn led 1;
Delay;
Tắt nguồn led 1;
Xuất dữ liệu [HDV];
Bật nguồn led 2;
Delay;
Tắt nguồn led 2;
Xuất ký tự “độ”;
Bật nguồn led 3;
Delay;
Tắt nguồn led 3;
Xuất ký tự “C”;
Bật nguồn led 4;
Delay;
Tắt nguồn led 4;
}
3/ TÍNH ĐỘ RỘNG XUNG BẰNG THUẬT TOÁN PID:
- Trong miền thời gian, bộ điều khiển PID được mô tả bằng mô hình vào
ra:

Trong đó: e(t) là tín hiệu ngõ vào, u(t) là tín hiệu ngõ ra của bộ điều khiển.
Tuy nhiên, đối với Vi Điều khiển nói chung, việc tính toán các thành phần
P,I,D‐ nói cách khác là tính các tích phân hay đạo hàm trong công thức trên là
không thực hiện được. Lý do: CPU không thể tính toán chính xác tới mức Δ
t =0nghĩa là không liên tục. Do đó, ta chỉ có thể tính toán gần đúng bằng cá
ch ta choΔ t= ε rất nhỏ nhưng lớn hơn 0.
Để tìm hệ thức PID rời rạc ,ta xét đồ thị sau đây:


Nguyễn Anh Tuấn - 08D2 – Bách Khoa Đà Nẵng

Page 17


- Khi đó công thức trên được viết lại như sau:

- Đối tượng điều khiển là động cơ DC 12V.
- Các ngõ vào và ra của bộ điều khiển PID như sau:
Ngõ vào: e= nhiệt độ đặt (tem_dat) ‐ nhiệt độ hiện tại (tem_htai).
Ngõ ra: u = %duty cycle.
- Thuật toán PID:
Ki: hệ số tích phân.
Kp: hệ số tỉ lệ.
Kd: hệ số vi phân.
e2: sai lệch nhiệt độ hiện tại.
e1: sai lệch nhiệt độ quá khứ ngay trước đó.
e_sum: tổng các sai lệch từ lúc đầu đến thời điểm hiện tại.
e_del: độ biến thiên sai lệch nhiệt độ.
duty: độ rộng xung PWM (theo %).
Ta có:
{
e2=tem_dat – tem_htai;
e_sum= e2 + e1;
e_del= e2 – e1;
e1=e2;
duty=duty + Kp*e2 + Ki*e_sum + Kd*e_del;
}
Xuất xung PWM với duty vừa tính được ở trên.
4/ PHƯƠNG PHÁP ĐIỀU XUNG PWM:

- Phương pháp điều chế PWM có tên tiếng anh là Pulse Width Modulation
là phương pháp điều chỉnh điện áp ra tải hay nói cách khác là ph ương
pháp điều chế dựa trên sự thay đổi độ rộng của chuỗi xung vuông dẫn
đến sự thay đổi điện áp ra.
- Các PWM khi biến đổi thì có cùng 1 tần số và khác nhau v ề đ ộ r ộng c ủa
sườn dương hay hoặc là sườn âm.
- Đây là phương pháp được thực hiện theo nguyên tắc đóng ngắt nguồn c ới
tải và một cách có chu kì theo luật điều chỉnh th ời gian đóng c ắt.Ph ần t ử
thực hiện nhiện vụ đó trong mạch các van bán dẫn.

Nguyễn Anh Tuấn - 08D2 – Bách Khoa Đà Nẵng

Page 18


- Giá trị điện áp trung bình đặt lên tải:
Ud=Umax*(t0/T) V hay Ud=Umax*D
Với D=t0/T là hệ số điều chỉnh và tính theo %.
- Cách xuất xung PWM trong CCS:
// cài đặt tần số điều xung:
+ setup_timer_2 (mode,period,postscale);
// cài đặt chân RC2 hoặc RC1 làm chân xuất xung PWM.
+ setup_ccp1(ccp_pwm);
+ setup_ccp2(ccp_pwm);
// cài đặt độ rộng xung:
+ set_pwm1_duty(value);
+ set_pwm2_duty(value);
5/ CHƯƠNG TRÌNH CCS:
// De tai: do va on dinh nhiet do bang thuat toan PID===============
#include <16F877A.h>

#fuses XT,NOWDT,NOLVP,NOPROTECT,HS
#include <DEF_877A.h>
#device *=16 adc=10
#use delay(clock=12M)
#use rs232 (baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7)
// Toc do baud=9600, khong bit chan le, chan truyen RC6, chan nhan RC7==
#define TANG RD2
#define GIAM RD3
#define ENTER RD1
// Khai bao bien toan cuc===============================
Byte const maled[ ]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
int8 mode,i,j,k,p,tem_dat,tem_do,HC,HDV,tam_i,tam_p,tam_d;
float adc_tong,adc_tb,adc_cu,adc_moi,TPe2,TPe1,Out_put;
signed int8 e2,e1;
Nguyễn Anh Tuấn - 08D2 – Bách Khoa Đà Nẵng

Page 19


long int16 value;
float Kp;
float Ki;
float Kd;
//e2: sai so nhiet do hien tai;
//e1: sai so nhiet do qua khu ngay truoc do;
//tem_dat: nhiet do dat;
//tem_do: nhiet do hien tai;
//Ki: he so tich phan;
//Kp: he so ti le;
//Kd: he so vi phan;

// Khai bao ngat timer1=================================
#INT_TIMER1
void Ngat_TIMER1( )
{
if(mode==1)
{
set_timer1(24280);
k++;
if(k==2)
{
k=0;
printf("%u",tem_do);
}}}
// Khai bao ngat TIMER0===============================
#INT_TIMER0
void Ngat_TIMER0( )
{
if(mode==1)
{
set_timer0(21);// T=256*(256-21)*4/12 ~ 20ms
j++;
if(j==5)
{j=0;
Ki=(tam_i)*0.1;
Kp=(tam_p)*0.5;
Kd=(tam_d)*0.5;
e2=tem_do-tem_dat;
TPe2=Ki*(e2+e1)*0.05;
Out_put=Out_put+Kp*e2+TPe2+TPe1+Kd*(e2-e1)*10;
Nguyễn Anh Tuấn - 08D2 – Bách Khoa Đà Nẵng


Page 20


TPe1=TPe2;
e1=e2;
if(Out_put<0)
value=0;
//if((Out_put>=0)&&(Out_put<=150))
//value=Out_put;
//if(Out_put>150)
//value=150;
else
value=Out_put;
set_pwm2_duty(value);
}}
else
set_pwm2_duty(0);
}
// Khai bao ngat truyen thong RS232========================
// San sang nhan data tu RS232===========================
#INT_RDA
void ngat_RDA ( )
{
p++;
if(p==1)
tem_dat=getc( );
if(p==2)
tam_i=getc( );
if(p==3)

tam_p=getc( );
if(p==4)
tam_d=getc( );
if(p==5)
mode=getc( );
if(p==6)
{
mode=getc( );
p=0;
Out_put=0;
}}
// Khai bao chuong trinh con=============================
void CAI_DAT_NHIET_DO( )
void main( )
{
Nguyễn Anh Tuấn - 08D2 – Bách Khoa Đà Nẵng

Page 21


TrisD=0x0E;
TrisB=0x00;
PortD=0xF0;
// Cai dat ADC=====================================
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_INTERNAL);
set_adc_channel(0);
Delay_ms(10);
// Cai dat ngat TIMER1================================
enable_interrupts(INT_TIMER1);

setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
enable_interrupts(GLOBAL);
set_timer1(24280) ;
set_timer1(6);
// Cai dat TIMER0===================================
enable_interrupts(INT_TIMER0);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256);
enable_interrupts(GLOBAL);
set_timer0(21);
// Cai dat PWM===========================================
// F(x)=F(osc)/(4*mode*(period+1)))
//Duty_cycle=value/(period+1)
// Bam xung 5KHz;
Setup_timer_2(T2_DIV_BY_4,149,1);
Setup_ccp2(CCP_PWM);
set_pwm2_duty(0);
// Cai dat ngat truyen thong RS232==========================
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);
mode=0;tem_dat=0;adc_cu=0;e1=0;TPe1=0;j=0;Out_put=0;j=0;k=0;p=0;tem_d
o=0;
tam_i=0;tam_p=0;tam_d=0;
while(1)
{
// Cai dat nhiet do====================================
if(mode==0)
CAI_DAT_NHIET_DO ( );
// PID on dinh nhiet do=================================
if(mode==1)
{

// Chong nhieu vi sai khi lay mau===========================
Nguyễn Anh Tuấn - 08D2 – Bách Khoa Đà Nẵng

Page 22


adc_tong=0;
for(i=0;i<50;i++)
{
adc_tong=adc_tong+read_adc();
Delay_us(10);
}
adc_tb=adc_tong*0.02;
// Loc so=========================================
adc_moi=0.2*adc_cu+0.8*adc_tb;
adc_cu=adc_moi;
tem_do=adc_cu*0.097752;
HC=tem_do/10;
HDV=tem_do%10;
PortB=maled[HC];
RD7=0;
Delay_ms(2);
RD7=1;
PortB=maled[HDV];
RD6=0;
Delay_ms(2);
RD6=1;
PortB=0x1C;
RD5=0;
Delay_ms(2);

RD5=1;
PortB=0x46;
RD4=0;
Delay_ms(2);
RD4=1;
}}}
// Chuong trinh con===================================
// Cai dat nhiet do====================================
void CAI_DAT_NHIET_DO ( )
{
//Enter==========================================
if(ENTER==0)
{
While(ENTER==0)
{}
Delay_ms(100);
Nguyễn Anh Tuấn - 08D2 – Bách Khoa Đà Nẵng

Page 23


mode++;
}
//Phim tang=======================================
if(TANG==0)
{
while(TANG==0)
{}
Delay_ms(100);
tem_dat=tem_dat+10;

if(tem_dat==100)
tem_dat=0;
}
// Phim giam===========================================
if(GIAM==0)
{
while(GIAM==0)
{}
Delay_ms(100);
tem_dat--;
if(tem_dat==255)
tem_dat=99;
}
// Xuat ra led 7 doan===========================================
HC=tem_dat/10;
HDV=tem_dat%10;
PortB=maled[HC];
RD7=0;
Delay_ms(2);
RD7=1;
PortB=maled[HDV];
RD6=0;
Delay_ms(2);
RD6=1;
PortB=0x1C;
RD5=0;
Delay_ms(2);
RD5=1;
PortB=0x46;
RD4=0;

Delay_ms(2);
RD4=1;
}
Nguyễn Anh Tuấn - 08D2 – Bách Khoa Đà Nẵng

Page 24


6/ GIAO TIẾP VỚI MÁY TÍNH QUA GIAO DIỆN VISUAL BASIC:

- Để giao tiếp thuận tiện với máy tính ta dùng giao diện Visual basic 6.0.
+ Việc truyền thông nối tiếp trên Windows được thực hiện qua m ột
ActiveX có sẵn là Microsoft Comm Control.ActiveX này được lưu trữ trong
file MSCOMM32.OCT.Quá trình này có 2 khả năng thực hiện điều khi ển
trao đổi thông tin:
• Điều khiển sự kiện: là phương pháp tốt nhất trong quá trình điều
khiển trao đổi thông tin.Quá trình điều khiển được thực hiện qua sự
OnComm.
• Hỏi vòng: được thực hiện thông qua việc kiểm tra các giá trị của
thuộc tính CommEvent sau một chu kỳ nào đó để xác định xem có s ự
kiện nào xảy ra hay không.

Nguyễn Anh Tuấn - 08D2 – Bách Khoa Đà Nẵng

Page 25


×