Professional Documents
Culture Documents
BT Ln Mn Truyn S Liu
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
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
BT Ln Mn Truyn S Liu
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
Trang 3
BT Ln Mn Truyn S Liu
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
Trang 5
BT Ln Mn Truyn S Liu
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
Trang 6
BT Ln Mn Truyn S Liu
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
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
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
Trang 10
BT Ln Mn Truyn S Liu
Trang 11
BT Ln Mn Truyn S Liu
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.
Trang 12
BT Ln Mn Truyn S Liu
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
Trang 14
BT Ln Mn Truyn S Liu
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.
Trang 15
BT Ln Mn Truyn S Liu
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
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
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
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 }
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
// 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
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
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
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
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
------------------------------------------------*/ 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
/*-----------------------------------------------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
Trang 25
BT Ln Mn Truyn S Liu
#define T1_CT_ 0x40
#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;
/*-----------------------------------------------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 */
Trang 27
BT Ln Mn Truyn S Liu
sbit T0 sbit T1 sbit WR sbit RD = 0xB4; = 0xB5; = 0xB6; = 0xB7;
/*-----------------------------------------------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
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
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
Trang 30
BT Ln Mn Truyn S Liu
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
}
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); } }
Trang 33
BT Ln Mn Truyn S Liu
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
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
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.
Trang 36
BT Ln Mn Truyn S Liu
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
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
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
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
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
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
, click vo i tng ny v
BT Ln Mn Truyn S Liu
Trang 44
BT Ln Mn Truyn S Liu
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
K n chng ta vit lnh cho cc button. Lnh thc thi cho nt Thoat
Private Sub cmdExit_Click() Beep End End Sub
Trang 46
BT Ln Mn Truyn S Liu
End If End Sub
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
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!
BT Ln Mn Truyn S Liu
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
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
Trang 50
BT Ln Mn Truyn S Liu
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
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
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
Trang 54
BT Ln Mn Truyn S Liu
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
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
Trang 56
BT Ln Mn Truyn S Liu
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
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
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
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
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
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.
Trang 61
BT Ln Mn Truyn S Liu
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
+ 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
- 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
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.
Trang 65
BT Ln Mn Truyn S Liu
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
Trang 66
BT Ln Mn Truyn S Liu
MessageBoxButtons.OK, MessageBoxIcon.Warning); } }
8 to s kin gi d liu.
Trang 67
BT Ln Mn Truyn S Liu
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.
Trang 68
BT Ln Mn Truyn S Liu
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;
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){
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; } } }
Trang 71
BT Ln Mn Truyn S Liu
Trang 72
BT Ln Mn Truyn S Liu
char x; void delay(int t); void uart_init();
// 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) {
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
// 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
SBUF = c + 0x30; // Cong 0x30 vao bien x va Copy du lieu tu bien x vao bo dem noi tiep (SBUF) }
Trang 75
BT Ln Mn Truyn S Liu
4.3 Giao tip my tnh iu khin LCD 4 dng bng VB 4.3.1 M phng Proteus
#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){
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(); }
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
4.4 Giao tip my tnh iu khin 8 LED n bng VB 4.4.1 M phng Proteus
BT Ln Mn Truyn S Liu
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; }
Trang 80
BT Ln Mn Truyn S Liu
4.5 Giao tip my tnh iu khin LED ma trn DC bng C# 4.5.1 M phng Proteus
Trang 81
BT Ln Mn Truyn S Liu
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];
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; }
Trang 84