Phần II. Thiết kế phần cứng
I. Sơ đồ khối và chức năng các khối
2. Chức năng các khối
2.1. Khối nguồn
- Nguồn đầu vào là nguồn xoay chiều được đưa qua biến áp sau đó cho qua cầu chỉnh lưu đưa vào chân IN của IC7805 để lấy ra nguồn 5V cung cấp cho toàn mạch.
2.2. Khối điều khiển Khối
nguồn Khối điều
khiển Khối xử lý
trung tâm Khối hiển thị
Khối truyền thông
cấp nguồn để hoạt động. Khi nhấn OFF1 thì chân B1 của VĐK được nối xuống mass
=> tắt quạt.
+ Khi ON2 được nhấn, chân B2 của V ĐK được nối xuống mass => Tivi được bật. Khi nhấn OFF2 thì chân B3 của VĐK được nối xuống mass => tắt Tivi.
+ Khi nhấn ON3, chân B4 của VĐK được nối xuống mass => đèn được cấp nguồn và sáng. Khi nhấn OFF3 thì chân B5 của VĐK đợc nối xuống mass => đèn tắt.
+ Khi nhấn ON4, chân B6 của VĐK được nối xuống mass => máy bơm được cấp nguồn và hoạt động. Khi nhấn OFF4 thì chân B7 của VĐK đợc nối xuống mass =>
máy bơm ngừng hoạt động.
2.3. Khối xử lý trung tâm
2.4. Khối truyền thông
- Khối này có tác dụng là cầu nối để truyền tín hiệu giữa VĐK và máy tính qua RS232.
Max232 có tác dụng tương thích nguồn giữa VĐK với máy tính.
2.5. Khối hiển thị
Lưu đồ vi điều khiển
// MO TA PHAN CUNG: DUNG PIC 16F876A - THACH ANH 4 MHz // : Dau vao PortB su dung cac phim nhan lam nhiem vu ON, OFF
// : Dau vao RA0 ket noi voi cam bien nhan biet thiet bi da hoat dong hay chua
// : Dau ra PortC su dung 4 led mo phong 4 thiet bi
#include <16f876A.h>
#include <def_876A.h>
#device *=16 ADC=8
#FUSES NOWDT, XT, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=9) char ma;
void RDA_ISR();
#INT_RDA
VOID RDA_ISR(){
{
delay_us(500);
output_high(pin_a5); // Bat quat }
} {
if((ma==0x70)||(rb1==0)) {
delay_us(500);
output_low(pin_a5); // Tat quat }
} {
if((ma==0x74)||(rb2==0)) {
delay_us(500);
output_high(pin_a3); // Bat Tivi }
} {
if((ma==0x76)||(rb3==0)) {
delay_us(500);
output_low(pin_a3); //Tat Tivi }
} {
if((ma==0x64)||(rb4==0)) {
delay_us(500);
output_high(pin_a2); // Bat Den }
} {
if((ma==0x65)||(rb5==0)) {
delay_us(500);
output_low(pin_a2); //Tat den }
} {
if((ma==0x6d)||(rb6==0)) {
delay_us(500);
output_high(pin_a1); // Bat may bom }
if((ma==0x6e)||(rb7==0)) {
delay_us(500);
output_low(pin_a1); //Tat may bom }
} }
// Chuong trinh chinh main()
{
set_tris_a(0b000001);
set_tris_b(0b11111111);
set_tris_c(0x80);
enable_interrupts(int_RDA);
enable_interrupts(global);
while(true)
{ if(ra0==0) {putc('y');delay_ms(5);}
else {}
} }
Giao diện người dùng
Dim tv As Boolean Dim i As Long Dim j As Long Dim path
'******************* Mo cong ****************************
Private Sub cmdopenport_Click() On Error GoTo loi
If MSComm1.PortOpen Then MSComm1.PortOpen = False Me.MSComm1.CommPort = 1
MSComm1.PortOpen = True
Me.lblPortstatus.Caption = "Status: Port da duoc mo !"
Me.frmcong.Enabled = True Me.frmden.Enabled = True Me.frmmaybom.Enabled = True Me.frmquat.Enabled = True
Me.lblPortstatus.Caption = "Status: Chua co Port nao duoc mo !"
Me.frmden.Enabled = False Me.frmmaybom.Enabled = False Me.frmquat.Enabled = False Me.frmtivi.Enabled = False
End Sub
Private Sub Form_Load() path = App.path
If Right(path, 1) <> "\" Then path = path & "\"
Me.frmden.Enabled = False Me.frmmaybom.Enabled = False Me.frmquat.Enabled = False Me.frmtivi.Enabled = False End Sub
'********************* Dieu khien may bom ************************
Private Sub cmdonmaybom_Click()
If cmdonmaybom = True Then MsgBox "kiem tra du lieu truoc khi truyen"
Me.tmrmaybom.Enabled = True MSComm1.Output = Chr(&H6D) Me.tmrmaybom.Interval = 100 End Sub
Private Sub cmdoffmaybom_Click()
If cmdoffmaybom = True Then MsgBox "kiem tra du lieu truoc khi truyen"
Me.tmrmaybom.Enabled = True MSComm1.Output = Chr(&H6E) Me.tmrmaybom.Interval = 0 End Sub
'********************* Dieu khien quat ************************
Private Sub cmdonq_Click()
If cmdonq = True Then MsgBox "kiem tra du lieu truoc khi truyen"
Me.tmrquat.Enabled = True MSComm1.Output = Chr(&H71) Me.tmrquat.Interval = 10
End Sub
Private Sub cmdoffq_Click()
If cmdoffq = True Then MsgBox "kiem tra du lieu truoc khi truyen"
Me.tmrquat.Enabled = True MSComm1.Output = Chr(&H70) Me.tmrquat.Interval = 0
End Sub
tmrxuly.Enabled = False
If cmdonden = True Then MsgBox "kiem tra du lieu truoc khi truyen"
MSComm1.Output = Chr(&H64)
Me.imgDen.Picture = LoadPicture(path & 11 & ".bmp") tmrxuly.Enabled = True
End Sub
Private Sub cmoffden_Click() tmrxuly.Enabled = False
If cmoffden = True Then MsgBox "kiem tra du lieu truoc khi truyen"
MSComm1.Output = Chr(&H65)
Me.imgDen.Picture = LoadPicture(path & 10 & ".bmp") tmrxuly.Enabled = True
End Sub
'********************* Dieu khien tivi ************************
Private Sub cmdontv_Click()
If cmdontv = True Then MsgBox "kiem tra du lieu truoc khi truyen"
MSComm1.Output = Chr(&H74)
WindowsMediaPlayer1.URL = path & "Proud of You.MPE"
End Sub
Private Sub cmdofftv_Click()
If cmdofftv = True Then MsgBox "kiem tra du lieu truoc khi truyen"
MSComm1.Output = Chr(&H76) WindowsMediaPlayer1.Close End Sub
Private Sub Timer1_Timer()
Me.lblht.Caption = Mid(lblht.Caption, 2) & Mid(lblht.Caption, 1, 1) End Sub
Private Sub tmrmaybom_Timer() j = j + 1
If j = 3 Then j = 1
Me.imgmaybom.Picture = LoadPicture(path & j & ".JPG") End Sub
Private Sub tmrQuat_Timer() i = i + 1
If i = 6 Then i = 1
Me.imgQuat.Picture = LoadPicture(path & i & ".bmp") End Sub
If MSComm1.InBufferCount <> 0 Then dulieunhan = MSComm1.Input
End If
If dulieunhan = "" Then
txtnhan.Text = "thiet bi khong hoat dong"
Else
txtnhan.Text = "thiet bi da hoat dong"
End If End Sub.
của các thầy cô giáo trong khoa Điện-Điện tử và đặc biệt được sự giúp đỡ của thầy Phạm Ngọc Hưng khoa Công nghệ thông tin, chúng em đã hoàn thành đề tài của mỡnh. Qua đõy phần nào cũng giỳp bạn đọc được hiểu rừ về ứng dụng của Ghộp nối máy tính và giao diện trong thực tế, đồng thời hiểu được những kiến thức cơ bản của môn Visuabasic6.0.
Qua quá trình thiết kế, chế tạo không thể tránh khỏi những sai sót và khuyết điểm. Vì vậy chúng em rất mong được sự đóng góp ý kiến của các thầy cô và các bạn để đề tài được hoàn thiện hơn.