You are on page 1of 84

B GIO DC V O TO TRNG I HC VN HIN KHOA IN T - VIN THNG

Bi Tp Ln: Mn Truyn S Liu

GIAO TIP MY TNH - VK S DNG C# V VB


GVHD SVTH : : Nguyn Vn Khi Nguyn Phc

TP.HCM, ngy 08 thng 07 nm 2011

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

Mc lc
CHNG 1: M PHNG GIAO TIP MY TNH S DNG PROTEUS V KEIL C.... 3 1.1 1.2 1.3 Chng trnh h tr to cng Com o ........................................................................ 3 Mch m phng vi iu khin giao tip my tnh ...................................................... 3 Lp trnh cho VK s dng Keil C............................................................................ 6 Cc bc xy dng d n Keil C........................................................................ 6 Cu trc c bn mt chng trnh C cho VK trong Keil C ........................... 18

1.3.1 1.3.2 2.1 2.2

CHNG 2: S DNG VISUAL BASIC 6.0 GIAO TIP VI IU KHIN .................... 34 Thit k giao din ..................................................................................................... 34 Vit chng trnh thc thi......................................................................................... 44

CHNG 3: S DNG VISUAL C# GIAO TIP VK ..................................................... 48 CHNG 4: CC V D GIAO TIP MY TNH V VK ............................................ 69 4.1 Giao tip my tnh iu khin ng c bc bng C# ............................................. 69 M phng Proteus............................................................................................. 69 Vit chng trnh Keil C cho VK .................................................................. 69 Giao din iu khin t my tnh...................................................................... 71 M phng Proteus............................................................................................. 72 Vit chng trnh Keil C cho VK .................................................................. 72 Giao din C# iu khin trn my tnh ............................................................. 75 M phng Proteus............................................................................................. 76 Chng trnh Keil C cho VK......................................................................... 76 Giao din VB iu khin trn my tnh ............................................................ 79 M phng Proteus............................................................................................. 79 Vit chng trnh Keil C cho VK .................................................................. 79 Giao din VB iu khin trn my tnh ............................................................ 80 M phng Proteus............................................................................................. 81 Vit chng trnh Keil C cho VK .................................................................. 81 Giao din C# iu khin trn my tnh ............................................................. 84 Trang 2 4.1.1 4.1.2 4.1.3 4.2 4.2.1 4.2.2 4.2.3 4.3 4.3.1 4.3.2 4.3.3 4.4 4.4.1 4.4.2 4.4.3 4.5 4.5.1 4.5.2 4.5.3

Giao tip my tnh iu khin ng c DC bng C#................................................ 72

Giao tip my tnh iu khin LCD 4 dng bng VB .............................................. 76

Giao tip my tnh iu khin 8 LED n bng VB................................................. 79

Giao tip my tnh iu khin LED ma trn DC bng C#........................................ 81

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

CHNG 1: M PHNG GIAO TIP MY TNH S DNG PROTEUS V KEIL C


1.1 Chng trnh h tr to cng Com o
Virtual Serial Port Driver l chng trnh gip bn to ra nhng cp cng com o, vo ni chng vi nhau to mt kt ni o thc hin truyn d liu. Sau khi ci t chng trnh, bn khi ng chng trnh vo to mt hoc nhiu cng com o cho vic m phng giao tip my tnh v vi iu khin.

Chn 2 cng com m bn mun kt ni v Click nt Add pair. Bn s c nhng cp cng com c ni vi nhau, nh COM1 COM2, COM4 COM5

1.2 Mch m phng vi iu khin giao tip my tnh


Khi ng chng trnh m phng mch Proteus, ly cc linh kin cn thit v v mch nh hnh di y.

Trang 3

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

y l mch m phng giao tip my tnh v vi iu khin c bn nht, tng tc iu khin led n, t y bn c th thay led thnh cc role iu khin ng c DC, ng c bc (o chiu), thc hin gi v nhn d liu gia my tnh v vi iu khin, bn cn thit lp tn s thch anh cho vi iu khin, ty chn tn cng com cho cng com o. Cc bc thc hin nh sau. Click p vo vi iu khin bn s thy hp thoi Edit Component, dng thng s Clock Frequency, bn nhp vo 11.0592MHz nh hnh di y, v click OK

Trang 4

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

Tip theo, ta click p vo cng com (COMPIM) i tn cng com

Trang 5

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

Ti dng Physical port, ta chn tn cng com ph hp. Vic chn tn cng com ty thuc vo chng trnh to cng com o. y ta chn COM2, v trc ta c kt ni c thit lp gia COM1 v COM2 bng Virtual Serial Port Driver. Tng ng gi nhn d liu gia vi iu khin v My tnh, trong giao chng trnh Giao tip bng C# hay VB ta phi chn cng com cn li ca cp ny l COM1

1.3 Lp trnh cho VK s dng Keil C 1.3.1 Cc bc xy dng d n Keil C


Sau khi khi ng Keil C, giao din chng trnh s nh hnh sau

to d n mi, ta vo menu Project > New Project

Trang 6

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

Hp thoi Create New Project hin ra, bn chn th mc lu d n ca mnh v t tn cho d n mi. Sau click vo nt Save

Trang 7

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

Sau hp thoi Select Device for Target hin ra yu cu bn phi chn phn cng loi IC m bn vit chng trnh cho n. y mnh chn IC AT89C51 ca hng Atmel, h MSC-51 (8051). V click OK.

Trang 8

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

Cc bc khi to d n mi xong, by gi bn bt u thm file vo d n ca mnh c th vit chng trnh v bin dch file hex np cho VK. Vo menu File > New, mt file mi c to. Tip theo bn vo menu File > Save lu file mi ny.

Trang 9

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

File mi c tn mc nh l Text1 c to ra nh ta thy trong ca s lm vic trn.

Trang 10

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

Bn lu phi lu tn file v phn m rng phi l .c v d nh hnh bn di

Trang 11

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

Tip theo sau khi lu file mi, bn click phi chut vo cy th mc ca d n, chn Add Files to Group Source Group 1 thm file mi vo d n.

Chn file v click vo nt Add v ng ca hp thoi Add file li

Trang 12

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

Sau khi hon tt thao tc trn bn s c nh hnh di ny

Bc tip theo, ta s ty chn cho d n khi bin dch s to file hex np cho vi iu khin.

Trang 13

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

Hp thoi Option for Target 1 hin ra bn thit lp nh hnh bn di.

Trang 14

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

By gi ta s tin hnh bin dch d n ca mnh, sau khi thc hin tt c bc trn v lu l bn vit chng trnh vo file d n ca mnh.

Kt qu bin dch c Keil C bo co nh hnh bn di. File hex tng ng c to ra trong th mc ca d n.

xem mc logic ca cc chn vi iu ta c th thc hin nh hnh di y

Trang 15

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

Vo menu Peripherals > I/O-Ports v nh du vo cc port ca vi iu khin m bn mun xem mc logic khi thc thi chng trnh ca bn.

Trang 16

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

Click vo on chng trnh bt k, Bm phm F11 chy tng dng lnh m ta vit, xem kt qu xut ra Port ca vi iu khin.

Trang 17

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

1.3.2 Cu trc c bn mt chng trnh C cho VK trong Keil C


a. Phn u tin l lit k cc header file m cc bn dng bng t kha Code: #include"tn header file" hoc Code: #include< tn header file>

Khi bn vit theo cch th nht th trnh bin dch s tm kim file .h hoc .c ny trong th mc hin ti cha d n ca bn, nu khng c th s tm kim trong th mc Inc trong th mc ci t KeilC. Vit theo cch th hai th trnh bin dch s tm lun trong th mc /INC lun. c th s dng ng cc file .h cho cc vi iu khin ca mnh th bn nn m th mc /inc trong th mc ny c cc th mc con nh tn ca hng sn xut. V d nh ca Atmel th bn tm trong th mc /Atmel th s thy c file reg51.h ,.. Bn m tng file nn m khm ph s c nhiu iu hay y. b. nh ngha cc macro cho chng trnh sng sa. Vic nh ngha ny c dng bng t kha #define V d: bn nh ngha led1 l P1_0 tc l led1 c ni vi chn 0 ca Port 1. Code: #define led1 P1_0

c. Cc hm ngt nh ngt timer0, timer1, ngt ni tip, ngt ngoi. V d bn dng ngt ni tip l ngt 4 trong bng vector ngt th hm s c dng nh sau:

Trang 18

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

Code: void inter_4(void) interrupt 4 using 2{ // lm g th lm y }

C php cc ngt khc cng tng t ch thay s 4 bng s th t ca ngt trong bng vector ngt. d. Cc hm con nh Delay, khi to,.. nh: Code: void delay( unsigned char time){ //code vit y }

e. Chng trnh chnh: Code: void main(void){ // vit m y }

i tng ca chng trnh l vi iu khin nn hm main khng c gi tr tr v v khng c tham s a vo. V thc cht cng chng cn bin ton cc v ta ch cn vit 1 file thi, nn khng a bin ton cc vo y. Kt lun, chng trnh ca chng ta s c dng nh sau: Code:

Trang 19

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

// lit k header file #inlucde"tn header file" .................... // cc marco #define led1 P1_0 ........... // cc hm ngt void inter_1 interrupt 1 using 3{ } .......... // cc hm bnh thng void delay( unsigned char time){ /// } .............. // chng trnh chnh void main(void){

Hm tr delay() C l vic lp trnh cho vi iu khin mt hm khng th thiu l tr: nh tr khi nhy led chng hn (v d n gin nht), ...
Trang 20

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

Vic gy tr trong Keil C c th c nhiu cch khc nhau: Hm delay c tham s l thi gian cn gy tr tnh theo ms 1. Dng vng lp while, for Dng kiu no th cng n gin ch l vng lp m thi. Trong vng lp ny ta s chng lm g c nn vi iu khin s b mt thi gian trong cc vng lp ny. Vi tn s thch anh 11.0582 MHz th mi vng lp khi cc bn debug s thy l chng ta mt thi gian thc khong 8.28 us. Do c th gy tr 1ms th cc bn cn dng xp x 121 vng lp kiu ny. Do hm s nh sau: Code: void delay(usigned char time){ while(time--){ unsigned char temp = 121; while(temp--); // chng lm g c }; }

Vic chuyn i gia vng for vi while trong trng hp ny rt n gin. Nhng khi bn li phi khai bo thm mt bin m nh th s tn b nh. Chng trnh trn l ti u nht ri. 2. Dng timer0, timer1,.. Tip tc vi hm delay() theo cch dng b nh thi. Cc bn c bi trn cng thy c l ta lp trnh vi cc thanh ghi tng t nh trong ASM. TMOD l thanh ghi 8 bt dng thit lp b nh thi , cc bn xem li thanh ghi ny. Dng b nh thi c 3 ch : ch 0, ch 1, ch 2. Chng ta s s dng ch khi ng b nh thi bng phn mm tc TMOD.3 v TMOD.7 = 0 Vic xc nh ch no ph thuc vo gi tr ca 2 bit TM1 v TM0 ca tng timer (xem nh ngha tng bt trong thanh ghi TMOD)
Trang 21

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

TM1=0 , TM0 =0 ch 0 TM1=0, TM0 =1 ch 1 TM1=1, TM0 =1 ch 2 Ch 1 l ch 16 bt khng t np li, cch s dng bng cch np gi tr cho cc thanh ghi TH1, TL1 (vi Timer1), hoc TL0, TH0 (vi Timer0). Khi khi ng timer bng cch setb TR1 hoc TR0 th n s m tTHTL ny bit khi no chuyn qua 0x0000. Ch 0 l ch 13 bt tng t nh ch 1 nhng gi tr ch tng n 0x1FFF. Ch 2, ch 8 bt t np li. Tip theo l ta tnh thi gian ca mi ln tng b nh thi. Tn s ca b nh thi bng 1/12 tn s ca thch anh, do vi tn s 11,0592MHz th chu k my bng 1.085us. Do vy vi ch 1 ti a chng ta s gy tr c l 65536*1.085 = 71106.56 us = 71.10656 ms. Ch 2 max = 256 *1.085 =277.76 us Ch cn gy tr 1ms = 1000 us>277.76 nn dng timer0( 16 bit) ch 0 th ta tnh ton gi tr np cho timer0 nh sau: thi gian tr = (65536 gi tr np vo TH,TL+ 1) * 1.085. Sau i gi tr ra s hex. Dng Calculator ca windows i. TH0 = FC, TL0 = 67 Vy chng trnh s nh sau: Code:
void delay(unsigned char time){ while(time--){ TMOD = 0x01; // dng timer0 TH0 = 0xFC;// n p gi tr TL0 = 0x67; TR0 = 1; // kh i ng b nh th i ch 1( 16 bit) cho timer

0xFFFF khi t 0xFFFF

0x0000 th c TF1 hoc TF0 s bt ln sau chng b xa thnh 0. Chng ta dng c

Trang 22

BT Ln Mn Truyn S Liu
while( TF0); // ch TF0 = 0 ; // xa c TR0 = 0; // d ng b }; } khi no c trn nh th i

Giao tip my tnh - VK s dng C# v VB


TF1 =1

C l ngi dng Keil C ln u tin gp tr ngi khi dng #include l khng bit lit k cc header file no cn thit cho ng dng ca mnh. c th bit c header file no dng cho vi iu khin ca mnh th cc bn m th mc ci Keil C ra, tm n th mc C51/INC bn s thy mt lot cc th mc ca cc hng nh Atmel,Dalas,.. Ti xin ly v d mt file regx51.h trong th mc /Atmel. Bn m file ln s thy u ca n nh sau: Code:
*-------------------------------------------------------------------AT89X51.H Header file for the low voltage Flash Atmel AT89C51 and AT89LV51. Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc. All rights reserved. -------------------------------------------------------------------*/

Chng t file ny dng cho con AT89C51 v AT89LV51 ri. Khi bn s thm header file ny vo chng trnh ca mnh. Cn lm th no mnh lm vic vi cc thnh ghi, cc port nh trong ASM by gi. Cu tr li trong file ny: Code:
#ifndef __AT89X51_H__ #define __AT89X51_H__ /*-----------------------------------------------Byte Registers ; nh ngha cc thnh ghi cc a ch trong RAM

Trang 23

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

------------------------------------------------*/ sfr P0 sfr SP sfr DPL sfr DPH sfr PCON sfr TCON sfr TMOD sfr TL0 sfr TL1 sfr TH0 sfr TH1 sfr P1 sfr SCON sfr SBUF sfr P2 sfr IE sfr P3 sfr IP sfr PSW sfr ACC sfr B = 0x80; = 0x81; = 0x82; = 0x83; = 0x87; = 0x88; = 0x89; = 0x8A; = 0x8B; = 0x8C; = 0x8D; = 0x90; = 0x98; = 0x99; = 0xA0; = 0xA8; = 0xB0; = 0xB8; = 0xD0; = 0xE0; = 0xF0;

/*-----------------------------------------------P0 Bit Registers ; nh ngha cc c ng c a Port 0 v port ny l tr c ti p thanh ghi 8 bt nh c a ch sbit P0_0 = 0x80; sbit P0_1 = 0x81; sbit P0_2 = 0x82; sbit P0_3 = 0x83; sbit P0_4 = 0x84; sbit P0_5 = 0x85; sbit P0_6 = 0x86; sbit P0_7 = 0x87;

------------------------------------------------*/

Trang 24

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

/*-----------------------------------------------PCON Bit Values ------------------------------------------------*/ #define IDL_ #define STOP_ #define PD_ #define GF0_ #define GF1_ #define SMOD_ 0x01 0x02 0x02 0x04 0x08 0x80 /* Alternate definition */

/*-----------------------------------------------TCON Bit Registers ------------------------------------------------*/ sbit IT0 sbit IE0 sbit IT1 sbit IE1 sbit TR0 sbit TF0 sbit TR1 sbit TF1 = 0x88; = 0x89; = 0x8A; = 0x8B; = 0x8C; = 0x8D; = 0x8E; = 0x8F;

/*-----------------------------------------------TMOD Bit Values ------------------------------------------------*/ #define T0_M0_ #define T0_M1_ #define T0_CT_ #define T1_M0_ #define T1_M1_ 0x01 0x02 0x04 0x10 0x20

#define T0_GATE_ 0x08

Trang 25

BT Ln Mn Truyn S Liu
#define T1_CT_ 0x40

Giao tip my tnh - VK s dng C# v VB

#define T1_GATE_ 0x80 #define T1_MASK_ 0xF0 #define T0_MASK_ 0x0F /*-----------------------------------------------P1 Bit Registers ------------------------------------------------*/ sbit P1_0 = 0x90; sbit P1_1 = 0x91; sbit P1_2 = 0x92; sbit P1_3 = 0x93; sbit P1_4 = 0x94; sbit P1_5 = 0x95; sbit P1_6 = 0x96; sbit P1_7 = 0x97; /*-----------------------------------------------SCON Bit Registers ------------------------------------------------*/ sbit RI sbit TI sbit RB8 sbit TB8 sbit REN sbit SM2 sbit SM1 sbit SM0 = 0x98; = 0x99; = 0x9A; = 0x9B; = 0x9C; = 0x9D; = 0x9E; = 0x9F;

/*-----------------------------------------------P2 Bit Registers ------------------------------------------------*/ sbit P2_0 = 0xA0; sbit P2_1 = 0xA1;

Trang 26

BT Ln Mn Truyn S Liu
sbit P2_2 = 0xA2; sbit P2_3 = 0xA3; sbit P2_4 = 0xA4; sbit P2_5 = 0xA5; sbit P2_6 = 0xA6; sbit P2_7 = 0xA7;

Giao tip my tnh - VK s dng C# v VB

/*-----------------------------------------------IE Bit Registers ------------------------------------------------*/ sbit EX0 sbit ET0 sbit EX1 sbit ET1 sbit ES sbit ET2 sbit EA = 0xA8; = 0xA9; = 0xAA; = 0xAB; = 0xAC; = 0xAD; = 0xAF; /* 1=Enable External interrupt 0 */ /* 1=Enable Timer 0 interrupt */ /* 1=Enable External interrupt 1 */ /* 1=Enable Timer 1 interrupt */ /* 1=Enable Serial port interrupt */ /* 1=Enable Timer 2 interrupt */ /* 0=Disable all interrupts */

/*-----------------------------------------------P3 Bit Registers (Mnemonics & Ports) ------------------------------------------------*/ sbit P3_0 = 0xB0; sbit P3_1 = 0xB1; sbit P3_2 = 0xB2; sbit P3_3 = 0xB3; sbit P3_4 = 0xB4; sbit P3_5 = 0xB5; sbit P3_6 = 0xB6; sbit P3_7 = 0xB7; sbit RXD sbit TXD = 0xB0; = 0xB1; /* Serial data input */ /* Serial data output */ /* External interrupt 0 */ /* External interrupt 1 */

sbit INT0 = 0xB2; sbit INT1 = 0xB3;

Trang 27

BT Ln Mn Truyn S Liu
sbit T0 sbit T1 sbit WR sbit RD = 0xB4; = 0xB5; = 0xB6; = 0xB7;

Giao tip my tnh - VK s dng C# v VB


/* Timer 0 external input */ /* Timer 1 external input */ /* External data memory write strobe */ /* External data memory read strobe */

/*-----------------------------------------------IP Bit Registers ------------------------------------------------*/ sbit PX0 sbit PT0 sbit PX1 sbit PT1 sbit PS sbit PT2 = 0xB8; = 0xB9; = 0xBA; = 0xBB; = 0xBC; = 0xBD;

/*-----------------------------------------------PSW Bit Registers ------------------------------------------------*/ sbit P sbit FL sbit OV sbit RS0 sbit RS1 sbit F0 sbit AC sbit CY = 0xD0; = 0xD1; = 0xD2; = 0xD3; = 0xD4; = 0xD5; = 0xD6; = 0xD7;

/*-----------------------------------------------Interrupt Vectors: Interrupt Address = (Number * 8) + 3 ------------------------------------------------*/ #define IE0_VECTOR #define TF0_VECTOR #define IE1_VECTOR #define TF1_VECTOR 0 1 2 3 /* 0x03 External Interrupt 0 */ /* 0x0B Timer 0 */ /* 0x13 External Interrupt 1 */ /* 0x1B Timer 1 */

Trang 28

BT Ln Mn Truyn S Liu
#define SIO_VECTOR #endif 4

Giao tip my tnh - VK s dng C# v VB


/* 0x23 Serial port */

Cc bn nhn trn thy l cc thanh ghi, cc port qu l ging nh vi ASM phi khng. Do vy vic lp trnh cc bn s lm vic trc tip vi cc cc a ch ca Ram m c nh ngha trn Gii thiu cc hm ngt. Trong 8051 c 5 nguyn nhn sinh ra ngt: ngt ngoi 0, timer0, ngt ngoi 1, timer1, ngt ni tip. Cc bn li m file regx51.h ra phn cui ca file nh sau: Code:
/*-----------------------------------------------Interrupt Vectors: Interrupt Address = (Number * 8) + 3 ------------------------------------------------*/ #define IE0_VECTOR #define TF0_VECTOR #define IE1_VECTOR #define TF1_VECTOR #define SIO_VECTOR 0 1 2 3 4 /* 0x03 External Interrupt 0 */ /* 0x0B Timer 0 */ /* 0x13 External Interrupt 1 */ /* 0x1B Timer 1 */ /* 0x23 Serial port */

a ch ca ngt trong bng vector ngt = 8 * s th t ngt + 3, s th t ngt = 0,1,2,3,4 nh k hiu trong file . Nh vy a ch trong RAM t 0x03 n 0x30 l dnh cho bng vector ngt. C php ca hm thc hin ngt nh sau, hm ny khng c tham s, khng c kiu tr v nn l dng Code:
Void tn hm(void) C php chnh nh sau:

Trang 29

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

Code:
void inter0(void) interrupt 0 using 1{ } // ng t ngoi 0, dng bank 1

Tng t vi cc ngt khc, ta thay s 0 bng s th t cc ngt tng ng cc ngt tng ng. Code:
void inter1(void) interrupt 1 using 1{ } void inter2(void) interrupt 2 using 1{ }

Tip tc vi 2 ngt cn li Cc bn lu l vdk nhy n bng vector ngt th bn phi enable ngt . V d: bn mun ngt ni tip th phi cho nh sau: Cc bn xem l thanh ghi IE trong file regx51.h, thanh ghi ny nh c a ch bit Code:
EA = 1;// cho php dng ng t ES = 1;// dng ng t n i ti p

Hm ngt trong Keil C Cch dng hm ngt v mt s on code mu.

Trang 30

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

Hm ngt l mt hm khng c tham s, khng c kiu tr v. V thc cht cc bin m hm ny thao tc chnh l cc bin ton cc (cc thanh ghi, cc port). Cu trc mt hm ngt nh sau: Code:
void tenham(void) interrupt a using b{ // code }

Trong : nhng ch in nghing l bt buc phi c v using b c th c hoc khng c. tn hm: ty cc bn chn. a : l th t ca ngt trong bng vector ngt a = 0 : ngt ngoi 0 a = 1 : ngt timer0 a = 2 : ngt ngoi 1 a = 3 : ngt timer1 a = 4 : ngt ni tip b: l bank c chn dng thc hin hm ngt. Do 8051 c 4 bank l bank 0, 1, 2, 3. Do : b c th l mt trong cc gi tr 0, 1, 2, 3. Lu : nu khng vit thm using b th mc nh l hm ngt thc hin ti bank0. Do , mt th d v hm ngt ni tip s c dng nh sau:
void inter4(void) interrupt 4 using 2{ // m th c hi n hm

Trang 31

BT Ln Mn Truyn S Liu
}

Giao tip my tnh - VK s dng C# v VB

Sau y l mt on chng trnh to mt xung chn P1.0 v khi nhn c d liu ni tip th chuyn sang port P2. Tn s thch anh l 11.0592 MHz. Dng AT89C51 Code:
# include "regx51.h" // ham gay tre void delay(int time){ while(time--){ unsigned char j = 122; while(j--); }; } // ham thiet lap ban dau void init(){ EA = 1; // cho phep dung ngat ES = 1; // dung ngat noi tiep // Thiet lap tan so bus TMOD = 0x02; // dung timer1, che do 8 bit tu nap lai TH1 = 253; } // Ham ngat void inter4(void) interrupt 4 using 2{ if (RI){ // kiem tra co tran nhan RI. // lay du lieu tu SBUF P2 = SBUF; }; } // ham main void main(){ // tao xung tren chan P1.0 init(); while(1){ // chon tan so bus = 9600 TR1 = 1 ; // khoi dong timer1

RI = 0; // xoa co ngat

Trang 32

BT Ln Mn Truyn S Liu
P1_0 = 1; delay(500); P1_0 = 0; delay(500); } }

Giao tip my tnh - VK s dng C# v VB

Trang 33

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

CHNG 2: S DNG VISUAL BASIC 6.0 GIAO TIP VI IU KHIN


2.1 Thit k giao din
Khi ng VISUAL BASIC 6.0 t mn hnh Desktop hoc t trnh n Start Menu. Mn hnh lm vic ca VB nh hnh di y. Bao gm thanh menu, thanh cng c, ca s th mc d n, ca s Properties, ca s Form layout v Toolbox.

to mt d n VB mi, ta vo menu File > New Project (hoc bm t hp phm Ctrl + N) Hp thoi New Project hin ra, ta chn loi chng trnh, thng l Standard EXE (file thc thi chun). Click OK

Trang 34

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

D n mi ca chng ta c to ra ban u nh hnh di. Ta s d dng Toolbox thm cc i tng vo form.

thay i thanh tiu cho form, ta click vo form, quay li ca s Properties, tm n dng Caption nhp d liu.

Trang 35

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

Lu bn nn save li d n trc khi thc hin cc bc tip theo bng cc bm Ctrl + S hay Click biu tng Save trn thanh cng c.

t tn cho Form v Click nt Save.

Trang 36

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

Tip tc t tn cho d n, v lu li. Bc tip theo l thm cc i tng tng tc trn form. thm mt i tng vo form, bn click vo i tng trn Toolbox, sau a chut vo form thit k r chut t im u n kt thc tng ng vi kch thc ca i tng.

Hnh trn chng ta to mt Label cho form. By gi ta s thay i cc thuc tnh ca label ny cho ph hp yu cu.
Trang 37

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

Cick vo label, ti ca s Properties, tm dng Caption thay i vn bn hin th ca label ny.

Kt qu nh hnh sau:

thay i Font ch, mu ch, kch thc Font ta tm n dng Font v ForeColor trong ca s Properties ca i tng label ny.

Trang 38

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

Tip theo, chng ta thm vo lm vic vi cc i tng button, shape, textbox Cng nh thao tc thm label trn ta tin hnh click vo i tng v Click vo form ti v tr mun a i tng vo.

Hnh trn l kt qu sau khi chng ta thm 8 Shape tng trung cho 8 led n m ta iu khin.

Trang 39

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

i shape vung thnh trn bn tm n dng Shape trong ca s Properties ca mi Shape v chn dng 3 Circle

Thc hin tng t cho 7 shape cn li. Sau chng ta i tn cho 8 shape ny. Tm n dng (Name) trong ca s Properties ca Shape. Ta s i tn 8 shape ny u l shapLed. Tip theo ta thm 8 label tng ng 8 led n, khi ta click vo label ny cc shape s i mu. Kt qu thc hin s nh hnh bn di.

Trang 40

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

Ta tin hnh i tn cho 8 label ny thnh labelLed, lu ta c th i tn ty nhng cc label ny phi trng tn nhau, cho vic vit code d hn, ta ch cn s dng index ca i tng gi i tng ra thc thi. Sau chng ta thm vo nt nhn, nt Gi d liu, nt Start/Stop v nt Thot.

my tnh c th gi v nhn d liu qua cng com, chng ta phi thm i tng cng ni tip vo form. Cc bc tin hnh nh sau.
Trang 41

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

Vo menu Project > Components (hoc bm t hp phm Ctrl + T)

Hp thoi Components hin ra, chng ta tm n dng Microsoft Comm Control 6.0 v nh du vo dng , chon OK.

Trang 42

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

Khi trn Toolbox s c thm i tng nh hnh

, click vo i tng ny v

click vo form thm cng com cho form. Kt qu nh hnh bn di.

Click vo i tng ny thay i cc thuc tnh nh hnh bn di.


Trang 43

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

2.2 Vit chng trnh thc thi


Bc tip theo chng ta se vit lnh cho cc i tng. vit code, ta click phi chut vo form, chn View Code.

Trang 44

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

Ca s Project1 Form (code) hin ra trong vng lm vic. Trong trnh s xung (General) s cha tt c i tng m ta thm bn ngoi giao din. Click v chn mt i tng bt k, y chng ta s chn i tng labelLED, s xut hin 2 dng code nh sau:
Private Sub LabelLED_Click(Index As Integer) // l nh c n th c thi End Sub

Hm ny s thc thi nhng lnh m ta vit gia hai dng ny khi click vo mi labelLed. Ta s thm dng lnh di y vo gia hm thc thi. Kt qu s nh sau:
Private Sub LabelLED_Click(Index As Integer) ShapeLED(Index).FillStyle = 1 - ShapeLED(Index).FillStyle End Sub

By gi chng ta s nhn phm F5 chy chng trnh, kim tra lnh mnh va vit trn.

Trang 45

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

K n chng ta vit lnh cho cc button. Lnh thc thi cho nt Thoat
Private Sub cmdExit_Click() Beep End End Sub

Lnh thc thi cho nt Gui du lieu


Private Sub cmdSend_Click() Dim t As Integer Dim i As Integer t = 0 For i = 0 To 7 t = t + (2 ^ i) * (1 - ShapeLED(i).FillStyle) Next i MSComm1.Output = Chr(t) End Sub

Lnh thc thi cho nt Stop


Private Sub cmdStop_Click() If MSComm1.PortOpen = True Then MSComm1.PortOpen = False cmdStop.Caption = "Start" Else cmdStop.Caption = "Stop" MSComm1.PortOpen = True

Trang 46

BT Ln Mn Truyn S Liu
End If End Sub

Giao tip my tnh - VK s dng C# v VB

Chng ta phi thm mt hm bn di lc form khi ng, s t ng m cng COM1 v cu hnh cho cng com truyn d liu.
Private Sub Form_Load() MSComm1.CommPort = 1 MSComm1.Settings = "9600,n,8,1" MSComm1.PortOpen = True End Sub

Trang 47

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

CHNG 3: S DNG VISUAL C# GIAO TIP VK


Khi ng C#.

To d n mi: Vo menu File -> New Project (Hoc bm Ctrl + Shift + N) Hp thoi New Project xut hin, chn vo biu tng Window Application. Sa tn ng dng WindowsApplication1 thnh tn chng trnh ca bn, v d nh Dkdongco, Donhietdo, .. lu khng nn vit c k t trng v ting vit trong tn ny!

Xong bn Click OK Giao din ban u C# t ng to cho bn nh bn di


Trang 48

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

Cc bn c th click chut vo cc gc ca ca s From1 v ko cho n thay i kch thc va .

Gi chng ta s lm vic vi Form1 ny. Bn Click vo v tr bt k trn form, sau qua ca s thuc tnh, 2 thuc tnh bn cn quan tm chnh sa l Name v Text Lu : thay i thuc tnh ca bt c i tng no, vic bt buc u tin bn phi click chut vo i tng .

Trang 49

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

Cc bn c th i sa thuc tnh Name thnh frmMain hay bt k tn g, c th gi nguyn l Form1 i vi thuc tnh Text, chnh l dng ch hin th trn thanh tiu ca ca s chng trnh, bn nn i thnh ni dung ti ca bn (VD: Chng trnh theo di nhit phng my, ), chng trnh cho php bn nhp liu ting vit. Tip theo bn i tn cc file trong ca s qun l Project ca chng trnh nh hnh bn di

Bc th hai l lc bn thm cc i tng ln ca s form chnh.

Trang 50

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

i tng Label, hin th cc thng tin nh l trng, lp, tn ti, nhm, thnh vin nhm, Trong Ca s Toolbox, bn tm i tng Label

Click chut vo i tng label sau a chut qua ca s form, Click vo form ti v tr m bn mun t label ny

By gi ta tin hnh thay i cc thuc tnh ca label ny. Click chut vo label trn form, chng ta chuyn qua ca s Thuc tnh. Lc ny ca s thuc tnh s cha cc thuc tnh ca label ny.

Trang 51

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

Tng t nh form chnh lc ny 2 thuc tnh bn cn thay i u tin l Name v Text

Thuc tnh Name bn thay i khi vit chng trnh bn d nh khi gi i tng ny ra x l, y label ny hin th tn trng nn mnh t tn cho n l labelTruong. Lu : + hn ch khng b nhm ln gia cc i tng bn nn thm tin t label trc tn ca n, bit i tng ny l loi label, label ny hin th Trng. d nh thi, ch chng trnh s khng cho 2 i tng trng tn nhau. + Tn i tng bn khng c nhp khong trng v khng nn nhp ting vit Kt qu nh hnh di.

Trang 52

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

Gi bn thay i Font ch, mu ch, kch thc ch. Vn Click chut vo i tng label ny. Chuyn qua Ca s Thuc tnh

Click vo nt dng Font, ca s Font hin ra, bn chn cc thuc tnh font cho va

Trang 53

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

Mnh chn Font Tahoma, In m, Size 18

Chn mu ch Blue. Kt qu thay i nh sau

Trang 54

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

Tng t bn thm cc label hin th lp, nhm, tn ti, Bn c th Click chut ko r cc label ng v tr nh mun. Bc tip theo, chng ta to mt Nt nhn khi bn click vo n, form iu khin s hin ra ng thi form chnh s n i i tng Button: s thc hin mt cng vic g khi ta Click vo (theo code ta vit) Trong ca s Toolbox, tm dng c i tng Button, Click vo dng ny. Sau a chut qua form, click vo v tr mun t button tren form.

Trang 55

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

Ta c mt nt nhn trn giao din chnh. Bay gi bn tin hnh thay i cc thuc tnh cho n. 2 thuc tnh cn thay i l Name v Text

Tng t nh i thuc tnh Name v Text ca label bn s c kt qu nh hnh di

Trang 56

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

Ngoi ra nt nhn ca mnh thm phn sinh ng, bn c th thay i font, mu ch, hoc thm biu tng cho n, bn t tm hiu thm nh, tt c u nm trong ca s thuc tnh ca button ny.

By gi chng ta to mt nt nhn, khi click vo, chng trnh s kt thc. Thc hin tng t nh cc bc to button trn, bn thay i thuc tnh Name cho nt nhn ny l buttonExit, mu ch (ty ), Text l Exit hay Thot, ty bn.

Trang 57

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

Bc k tip, to s kin ng chng trnh cho buttonExit ny. Bn click p vo nt Thot, ca s vit code hin ra, bn g lnh nh sau:
private void buttonExit_Click(object sender, EventArgs e) { Application.Exit(); } // Thot ng d ng

thc hin bc tip theo, chng ta cn to ra mt form mi c tn l frmDieuKhien. V nt nhn ny khi click vo th form iu khin c hin th. Trong ca s Solution Explorer, bn click phi vo tn chng trnh v click vo Windows From

Trang 58

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

Hp thoi Add New Item hin ra, bn t tn form mi ny theo yu cu ca mnh (VD l frmDieuKhien)

Click Ok to form mi. Giao din form mi hin ra trn ca s lm vic. Bc u tin bn cng tin hnh i tn form, tiu form nh thc hin vi form chnh lc u. Kt qu sau khi thc hin mnh c form iu khin nh hnh di Mo nh: kch thc 2 form ny ging nhau hon ton, trong ca s thuc tnh ca form chnh (frmMain) bn tm n dng Size v copy 2 con s (rng, cao). Sau

Trang 59

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

cng tm n dng Size ca form iu khin (frmDieuKhien) dn 2 con s ny vo. Enter By gi chng s vit lnh to s kin nt nhn Bng K s thc hin khi nhn vo n. Chuyn qua form chnh (frmMain), Click p vo Button Bng K. Ca s vit code ca chng trnh hin ra, bn vit nhng lnh nh di vo hm s kin ca buttonNext, bn khng cn phi quan tm n cc on code khc.
private void buttonNext_Click(object sender, EventArgs e) { fromDieuKhien frmDK = new fromDieuKhien(); " i di n" form i u khi n frmDK.Show(); this.Hide(); } // // Hi n th form i u khi n n form chnh // Kh i t o bi n

By gi bn c th Bm phm F5 chy kim tra nhng g mnh va lm.

Nh vy chng ta tng tc xong vi form chnh (frmMain) ri gi chng ta s chuyn sang form iu khin (frmDieuKhien) to cc i tng, vit code cho n. Bc u tin bn to mt button Thot nh form chnh khi click vo chng trnh s thot.

Trang 60

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

Click p vo nt Thot vit code to s kin cho n. private void buttonExit_Click(object sender, EventArgs e) { Application.Exit(); // Thot chng trnh }

Xong, gi ta s thm cc i tng nh cng ni tip, cc nt nhn, listbox cha tn cng com, SerialPort: i tng truyn nhn d liu qua cng ni tip vi VK thm mt serial port, tng t nh thc hin vi cc i tng trn.

Ta tin hnh i thuc tnh Name cho serialport ny nh hnh bn di.

Trang 61

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

Lu : Mnh i tn cng ni tip ny thnh port. Cc thuc tn cn li bn hy nh mc nh. Listbox: i tng ny s cha danh sch cng com chng ta s kt ni

Trang 62

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

- By gi chng ta s thay i thuc tnh Name v Item cho ListBox ny.

+ Bn i Name listBox1 thnh listBoxComport. + dng Item, Bn click vo nt thm danh sch cng Com cho listBox ny hin th

Trang 63

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

- Click OK, kt qu bn s thy trn form iu khin, mt danh sch cng com ta va thm. Lu l tn cng com khng c khong trng, khng nhp ting vit. Trn mi dng ch nhp tn 1 cng com

- Tip theo bn to mt button thc hin Ngt kt ni cng com khi khng dng na. Button ny c thuc tnh Name l buttonDisConnect v thuc tnh Text l Ngt kt ni, font, mu ch ty .

Trang 64

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

To mt label hin th tnh trng kt ni cng com (nh l bo li, bo kt

ni thnh cng). Label ny c thuc tnh Name l labelTinhTrang, thuc tnh Text bn mt khong trng v ban u cha chy chng trnh th cha c thng bo g.

Gi ta tin hnh thm s kin cho nt buttonDisConnect v listBoxComPort


if (port.IsOpen) // N u c ng com ang m th th c hi n l nh ti p

Click p vo nt Ngt kt ni v vit code ngt cng com nh sau:


theo { port.Close(); // ng c ng com ang m labelTinhTrang.Text = " ng c ng COM!"; // Thng bo ng t c ng com

Trang 65

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB


labelTinhTrang

labelTinhTrang.ForeColor = Color.Red; // i mu ch thnh }

Tip theo kt ni cng com khi click chn cng com trong danh sch cng com ca listBoxComPort Click p vo danh sch cng com (listBoxComPort) v vit code kt ni cng com nh sau:
private void listBoxComPort_SelectedIndexChanged(object sender, EventArgs e) { if (port.IsOpen) port.Close(); port.PortName = listBoxComPort.SelectedItem.ToString(); try { port.Open(); labelTinhTrang.ForeColor = Color.Green; labelTinhTrang.Text = " m } catch { labelTinhTrang.ForeColor = Color.Red; labelTinhTrang.Text = "Khng th } } m c ng " + listBoxComPort.SelectedItem.ToString() + " !"; c ng " + listBoxComPort.SelectedItem.ToString() + " thnh cng !";

Bm F5 kim tra cng vic, th click vo dach sch cng com xem kt qu To cc nt nhn gi d liu xung VK iu khin Role

thng bo v Ngt kt ni. Cc bc thc hin nh to nt trn

Trang 66

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

Tip theo ta vit mt hm gi k t qua cng ni tip:


private void writeChar(string Char) if (port.IsOpen) // N u c ng com c k t n i m i g i k t { port.Write(Char); // G i m t k t } else // N u c ng com cha k t n i th hi n th { MessageBox.Show("Vui lng K t n i v i c ng COM!", "L i g i d li u", h p tho i thng bo qua c ng Com

MessageBoxButtons.OK, MessageBoxIcon.Warning); } }

Sau khi vit hm gi k t bn c th Click p vo cc nt ROLE 1 n ROLE


private void buttonRole1_Click(object sender, EventArgs e) { writeChar("1"); // G i i k t s 1

8 to s kin gi d liu.

} private void buttonRole8_Click(object sender, EventArgs e) { writeChar("8"); // G i i k t } s 8

Trang 67

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

Khi VK nhn c nhng k t ny s kim tra v x l, ty theo chng trnh Bm F5 v chy m phng Proteus v kim tra. Trn giao din bn bn COM5,

ca bn. trong m phng Proteus bn chn COM4, v 2 cng ny l com o c to ra v kt ni o vi nhau nh chng trnh Virtual Serial Port Driver.

chng trnh ca bn lun hin th trn cc ca s cn li, bn chuyn qua

ca s thuc tnh ca frmMain, tm n dng TopMost i thnh True, lm tng t i vi frmDieuKhien

Trang 68

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

CHNG 4: CC V D GIAO TIP MY TNH V VK


4.1 Giao tip my tnh iu khin ng c bc bng C# 4.1.1 M phng Proteus

4.1.2 Vit chng trnh Keil C cho VK


#include <REGX51.H> sbit DC1 = P2^0; sbit DC2 = P2^1; sbit DC1STOP = P2^2; sbit DC2STOP = P2^3; char x; sbit sw1 sbit sw2 sbit sw3 sbit sw4 sbit sw5 sbit sw6 = = = = = = P1^0; P1^1; P1^2; P1^3; P1^4; P1^5;

void uart_init(){ SCON = 0x52; TMOD = 0x22; TH1 = TL1 = -3; // Timer 1 va Timer0 Mode 2 // Toc do Baud la 9600

Trang 69

BT Ln Mn Truyn S Liu
} void sendData(char c){ TR1 = 1; while(!TI); TI = 0; SBUF = c + 0x30; } void main(){ uart_init(); DC1STOP = 0; DC2STOP = 0; while(1){ if(sw1 == 0) { DC1 = 0; DC1STOP = 1; sendData(1); while(!sw1); } else if(sw2 == 0){ DC1 = 1; DC1STOP = 1; sendData(2); while(!sw2); } if(sw3 == 0) { DC2 = 0; DC2STOP = 1; sendData(3); while(!sw3); } else if(sw4 == 0){ DC2 = 1; DC2STOP = 1; sendData(4); while(!sw4); } if(sw5 == 0){ DC1STOP = 0;

Giao tip my tnh - VK s dng C# v VB

Trang 70

BT Ln Mn Truyn S Liu
sendData(5); while(!sw5); } if(sw6 == 0){ DC2STOP = 0; sendData(6); while(!sw6); } TR1 = 1; RI = 0; x = SBUF; switch(x){

Giao tip my tnh - VK s dng C# v VB

case '1': DC1 = 0; DC1STOP = 1; break; case '2': DC1 = 1; DC1STOP = 1; break; case '3': DC2 = 0; DC2STOP = 1; break; case '4': DC2 = 1; DC2STOP = 1;break; case '5': DC1STOP = 0; break; case '6': DC2STOP = 0; break; } } }

4.1.3 Giao din iu khin t my tnh

Trang 71

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

4.2 Giao tip my tnh iu khin ng c DC bng C# 4.2.1 M phng Proteus

4.2.2 Vit chng trnh Keil C cho VK


#include <REGX51.H> sbit role1 sbit role2 sbit role3 sbit role4 sbit role5 sbit role6 sbit role7 sbit role8 sbit sw1 sbit sw2 sbit sw3 sbit sw4 sbit sw5 sbit sw6 sbit sw7 sbit sw8 = P2^0; = P2^1; = P2^2; = P2^3; = P2^4; = P2^5; = P2^6; = P2^7; = P1^0; = P1^1; = P1^2; = P1^3; = P1^4; = P1^5; = P1^6; = P1^7; // Dinh nghia cac chan phim nhan // Dinh nghia cac chan dieu khien

Trang 72

BT Ln Mn Truyn S Liu
char x; void delay(int t); void uart_init();

Giao tip my tnh - VK s dng C# v VB

// Khai bao ham delay // Khai bao ham uart_init // Khai bao ham senData

void sendData(char c); void main(){ uart_init(); while(1){ trinh mai mai

// Goi ham khai bao truyen thong noi tiep // Vong lap chinh de thuc thi chuong

if(sw1 == 0) { // kiem tra neu phim sw1 - tuc la chan P1.0 duoc nhan role1 = 0; role2 = 1; // Dua chan P2.0 xuong 0V va chan P2.1 len 5V sendData(1); so 1 qua cong noi tiep while(!sw1); } if(sw2 == 0) { role1 = 1; role2 = 0; sendData(2); while(!sw2); } if(sw3 == 0) { role3 = 0; role4 = 1; sendData(3); while(!sw3); } if(sw4 == 0) { role3 = 1; role4 = 0; sendData(4); while(!sw4); } if(sw5 == 0) { role5 = 0; role6 = 1; sendData(5); while(!sw5); // kiem tra nha phim sw1 chua // Gui len may tinh ki tu

Trang 73

BT Ln Mn Truyn S Liu
} if(sw6 == 0) {

Giao tip my tnh - VK s dng C# v VB

role5 = 1; role6 = 0; sendData(6); while(!sw6); } if(sw7 == 0) { role7 = 0; role8 = 1; sendData(7); while(!sw7); } if(sw8 == 0) { role7 = 1; role8 = 0; sendData(8); while(!sw8); } TR1 = 1; RI = 0; x = SBUF; // Cho Timer1 chay // Dua co bao nhan noi tiep xuong 0V de // Copy du lieu tu bo dem noi tiep vao bien x

nhan du lieu tu cong noi tiep switch(x){ // Cau truc chon du lieu trong bien x case '1': role1 = 0; role2 = 1; break; // Neu bien x = 1 (may tinh gui xuong ki tu 1) thi Set role1 = 0V va role2 = 1V; case '2': role1 = 1; role2 = 0; break; case '3': role3 = 0; role4 = 1; break; case '4': role3 = 1; role4 = 0; break; case '5': role5 = 0; role6 = 1; break; case '6': role5 = 1; role6 = 0; break; case '7': role7 = 0; role8 = 1; break; case '8': role7 = 1; role8 = 0; break; case 'a': role1 = 0; role2 = 0; break; case 'b': role3 = 0; role4 = 0; break; case 'c': role5 = 0; role6 = 0; break; case 'd': role7 = 0; role8 = 0; break; } }

Trang 74

BT Ln Mn Truyn S Liu
} void uart_init(){ SCON = 0x52; TMOD = 0x22; TH1 = TL1 = -3; } void sendData(char c){ TR1 = 1; while(!TI); TI = 0; // Cho timer chay

Giao tip my tnh - VK s dng C# v VB

// Ham khoi tao gui nhan qua cong noi tiep //UART 8 bit; SM2/1/0=010, REN=1: cho php thu; // Timer 1 va Timer0 Mode 2 // Toc do Baud la 9600

// Cho den khi co truyen len muc 1 // Dua co truyen xuong 0V

SBUF = c + 0x30; // Cong 0x30 vao bien x va Copy du lieu tu bien x vao bo dem noi tiep (SBUF) }

4.2.3 Giao din C# iu khin trn my tnh

Trang 75

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

4.3 Giao tip my tnh iu khin LCD 4 dng bng VB 4.3.1 M phng Proteus

4.3.2 Chng trnh Keil C cho VK


#include <REGX51.H> #define LCD_PORT #define #define #define LCD_RS LCD_RW LCD_EN P0 //Dinh nghia Port da lieu cho LCD P1_0 P1_1 P1_2 lcd_write(0, 0x80) lcd_write(0, 0xc0) lcd_write(0, 0x94) lcd_write(0, 0xd4) // Dong 1 LCD // Dong 2 LCD // Dong 3 LCD // Dong 4 LCD

#define lcdLine1() #define lcdLine2() #define lcdLine3() #define lcdLine4() void uart_init(); void lcd_init();

void delay(unsigned int i){ while(i--); } void lcd_write(unsigned char mode, unsigned char d){

Trang 76

BT Ln Mn Truyn S Liu
LCD_PORT = d; LCD_RW = 0; if(mode == 1) LCD_RS = 1; else LCD_RS = 0; LCD_EN = 1; delay(4); LCD_EN = 0; delay(40); } void lcd_PutStr(char const *str){ char const *sPtr; sPtr = str; while(*sPtr != '\0'){ lcd_write(1, *sPtr); sPtr++; } } void main(void){

Giao tip my tnh - VK s dng C# v VB

unsigned char kt, pos, line, str[16]; uart_init(); lcd_init(); while(1){ TR1 = 1; RI = 0; kt = 0; line = 0; while(!RI); str[kt++] = SBUF; pos++; if(str[0] == '~') line = 1; if(str[0] == '!') line = 2; if(str[0] == '`') line = 3; if(str[0] == '^') line = 4; if(line == 1) { pos = 0; lcdLine1();

Trang 77

BT Ln Mn Truyn S Liu
} if(line == 2) { pos = 0; lcdLine2(); } if(line == 3) { pos = 0; lcdLine3(); } if(line == 4) { pos = 0; lcdLine4(); }

Giao tip my tnh - VK s dng C# v VB

if(pos > 0) lcd_PutStr(str); } } void uart_init(){ SCON = 0x52; TMOD = 0x22; TH1 = TL1 = -3; } void lcd_init(){ lcd_write(0, 0x38); // Khoi tao LCD 4 dong, ma tran 5x7 lcd_write(0, 0x0C); lcd_write(0, 0x01); delay(500); } // Bat LCD, Bat con tro // Xoa LCD

Trang 78

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

4.3.3 Giao din VB iu khin trn my tnh

4.4 Giao tip my tnh iu khin 8 LED n bng VB 4.4.1 M phng Proteus

4.4.2 Vit chng trnh Keil C cho VK


#include <REGX51.H> void uart_init();
Trang 79

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

void main(){ P2 = 0; uart_init(); while(1){ TR1 = 1; while(!RI); RI = 0; P2 = SBUF; } } void uart_init(){ SCON = 0x52; TMOD = 0x22; TH1 = TL1 = -3; }

4.4.3 Giao din VB iu khin trn my tnh

Trang 80

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB

4.5 Giao tip my tnh iu khin LED ma trn DC bng C# 4.5.1 M phng Proteus

4.5.2 Vit chng trnh Keil C cho VK


#include <REGX51.h> #include <stdio.h> unsigned char Mem[80]; unsigned char k,tg,sokt; char j; char n=0; unsigned int x,d; unsigned char code MaLed[] = { /// Quet cot //Dau cach //A //B //C //D //E //F //G //H //I 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0x07,0x03,0xB9,0x03,0x07,0xFF,0xFF, 0xFF,0x01,0x01,0x6D,0x01,0x93,0xFF,0xFF, 0xFF,0x83,0x01,0x7D,0x19,0x9B,0xFF,0xFF, 0xFF,0x01,0x01,0x7D,0x01,0x83,0xFF,0xFF, 0xFF,0x01,0x01,0x6D,0x6D,0xFF,0xFF,0xFF, 0xFF,0x01,0x01,0xed,0xED,0xFF,0xFF,0xFF, 0xFF,0x83,0x01,0x7D,0xAD,0x09,0x0B,0xFF, 0xFF,0x01,0x01,0xEF,0x01,0x01,0xFF,0xFF, 0xFF,0xFF,0x7D,0x01,0x01,0x7D,0xFF,0xFF,

Trang 81

BT Ln Mn Truyn S Liu

Giao tip my tnh - VK s dng C# v VB


//J //K //L //M //N //O //P //Q //R //S //T //U //V //W //X //Y //Z

0xFF,0xBF,0x3F,0x7D,0x01,0x81,0xFD,0xFF, 0xFF,0x01,0x01,0x83,0x19,0x7D,0xFF,0xFF, 0xFF,0xFF,0x01,0x01,0x3F,0x3F,0xFF,0xFF, 0x01,0x01,0xC7,0x0F,0xC7,0x01,0x01,0xFF, 0xFF,0x01,0x01,0xE3,0x8F,0x01,0x01,0xFF, 0xFF,0x83,0x01,0x7D,0x01,0x83,0xFF,0xFF, 0xFF,0x01,0x01,0xDD,0xC1,0xE3,0xFF,0xFF, 0xFF,0x83,0x01,0x7D,0x5D,0x01,0x83,0x7F, 0xFF,0x01,0x01,0xCD,0x01,0x23,0xFF,0xFF, 0xFF,0xB3,0x21,0x6D,0x09,0x9B,0xFF,0xFF, 0xFF,0xF9,0xF9,0x01,0x01,0xF9,0xF9,0xFF, 0xFF,0x81,0x01,0x7F,0x01,0x81,0xFF,0xFF, 0xFF,0xE1,0x81,0x3F,0x81,0xE1,0xFF,0xFF, 0xE1,0x81,0x3F,0x87,0x87,0x3F,0x81,0xE1, 0xFF,0x39,0x11,0xC7,0xC7,0x11,0x39,0xFF, 0xFF,0xF9,0xE1,0x07,0x07,0xE1,0xF9,0xFF, 0xFF,0x3D,0x1D,0x4D,0x65,0x71,0x79,0xFF };

void convert(unsigned char kytu) { // Ham chuyen ky tu sang ma Matrix LED // Va dua vao mot mang unsigned int temp,i; if (kytu > 64) temp = (kytu-64)*8; else temp = 0; for(i=temp; i<temp+8; i++) Mem[k++] = MaLed[i]; } void convert_str(unsigned char *str){ k=0; //for(i=0;i<sokt*8;i++) sokt=0; while(*str){ convert(*str); str++; sokt++; }

Trang 82

BT Ln Mn Truyn S Liu
} void dichtrai(void){ unsigned char temp,i; temp = Mem[0];

Giao tip my tnh - VK s dng C# v VB

for(i=0;i<(sokt*8-1);i++) Mem[i] = Mem[i+1]; Mem[sokt*8-1] = temp; } void main(void){ unsigned char kt=0,temp,ch,chuoi[8]; SCON = 0x52; TMOD = 0x22; // Timer 1 va Timer0 Mode 2 TH1 = TL1 = -3; IE = 0x82; TH0 = TL0 = -100; convert_str("08E1"); TR0 = 1; TR1 = 1; while(1){ //temp = _getkey(); //P1 = ~temp; do { temp = _getkey(); } while(temp != '@'); kt=0; TR0 = 0; do { temp = _getkey(); ch = temp; if (ch!='@') chuoi[kt++]=ch; } while(ch != '@'); convert_str(chuoi); TR0 = 1; } } void NgatTimer0(void) interrupt 1 { TR0 = TF0 = 0; // Dung Timer 0 va Xoa co tran // Toc do Baud la 9600

Trang 83

BT Ln Mn Truyn S Liu
d++; if(tg++>10) { if(x==0x0000) x=0x0001; P1 = 0xFF; P0 = x%256; P2 = x/256; P1 = Mem[n]; x<<=1; if(n++>=15) n=0; tg=0; } if(d==2500) { dichtrai(); d = 0; } TR0 = 1; }

Giao tip my tnh - VK s dng C# v VB

// xoa du lieu tren cot

4.5.3 Giao din C# iu khin trn my tnh

Trang 84

You might also like