Home|Tutorial | ElecProject | KuliahElektro | Download | Link | Rupa2 | Ide| Skema Elektronik

 
     
     
 

KENDALI MOTOR DC 12V

Makalah : Welly B - 198102241

Editor : Susanto Wibisono K

 

Dalam makalah ini dibahas rangkaian dan cara kerja dari 12V dc motor controller berdasarkan PWM (Pulse Width Modulation.) Motor dikontrol kecepatannya secara remote, menggunakan LCD Epson SED1200 sebagai sistem tampilan kecepatan.

Kecepatan yang ditampilkan pada LCD dinyatakan dengan satuan RPS (rotation per second). Dipakai remote control buatan Sony yang biasa dipakai untuk TV, tombol volume plus pada remote control Sony digunakan untuk menaikkan kecepatan dari motor dc sedangkan tombol volume minus untuk menurunkan kecepatan.

 BLOK DIAGRAM

 

 

Gambar 1Blok Diagram Komponen Penyusun Motor DC

 

Makalah ini dibagi menjadi 4 bagian yaitu bagian remote control, memutar kipas, menghitung kecepatan serta menampilkan ke LCD.

Remote Control

            Pada remote control terdapat dua bagian yang utama yaitu : bagian transmiter dan bagian receiver.  Bagian transmitter dalam hal ini menggunakan remote yang sudah jadi, yaitu remote untuk TV.  Sedangkan bagian penerimanya dibangun dari dioda infra merah, filter, dan penguat sinyal/amplifier.

 

Rangakaian Receiver

Untuk dapat mengambil data yang dipancarkan oleh remote maka harus dibuat rangkaian penerima yang terdiri dari op-amp, IC 74LS04 (inverter), multiturn variable resistor, IR diode (receiver) dan beberapa komponen penunjang. Rangkaian receivernya dapat dilihat pada gambar 2.  Penggunaan dari op-amp ini untuk mengatur penguatan dari sinyal yang diterima oleh IR diode. Sinyal yang diterima oleh IR diode ini akan dimasukkan rangkaian high pass filter (C dan R). Kombinasi nilai dari C dan R ini diperoleh dengan menggunkanan rumus :

 

                                                         f =   

 

                                                         f =

                                                                                                                   

                                                         f = 159,23Hz

           

Sinyal yang keluar dari rangkaian high pass filter dikuatkan dua kali. Rangkaian penguat 1 adalah non-inverting amplifier dengan menggunakan op-amp LM358. Kemudian output dari rangkaian penguat 1 dikuatkan sekali lagi dengan penguatan non inverting amplifier juga dengan op-amp LM358. Sinyal yang keluar dari rangkaian penguat 2 ini masih mengandung sinyal carrier. Untuk itu sinyal carriernya perlu dihilangkan dengan cara menambahkan rangkaian low pass filter (R dan C).

 

                                                                  f =  

                                                                 f =  

 

                                                                f = 7.24kHz

 

Penggunaan rangkaian high pass filter dan low pass filter ini untuk membatasi frekuensi yang diterima, sinyal yang berada di bawah 159.23 Hz dan di atas 7.24 kHz tidak dilewatkan. Dengan rangkaian low pass filter tersebut maka sinyal carrier dari remote TV Sony tidak akan dilewatkan Kemudian sinyal itu disempurnakan dengan menambahkan rangkaian comparator dengan mengunakan op-amp tipe LM339. Komparator ini berfungsi jika tegangan yang masuk kurang dari tegangan referensinya maka outputnya akan low sebaliknya jika tegangan yang masuk melebihi tegangan referensi maka outputnya akan high.  Output dari LM339 ini akan dimasukkan IC 74LS04 sebagai inverter.

 

 

Gambar 2 Rangkaian Receiver Remote

 

 

Remote Control TV Sony

Remote Control dibagi menjadi 3 menurut jenis pengkodeannya :

1.      Pulses coded

Jenis ini mengatur panjang pulsanya, sehingga pulsanya divariasi untuk menunjukkan data itu berlogic high atau low. Yang dijadikan variasi adalah pulsa highnya. Metode ini dipakai oleh remote Sony.

 

 

Gambar 3 Pulses Coded

 

2.      Space coded

Metode ini juga mengatur panjang pulsanya untuk menunjukkan data tersebut berlogic low atau high. Tetapi yang diatur adalah lebar pulsa lownya. Jenis ini diterapkan oleh remote Panasonic

 

 

Gambar 4Space Coded

 

3.      Shift coded

Metode ini yang paling berbeda diantara kedua metode di atas. Metode ini menggunakan prinsip perbedaan fase untuk menunjukkan data yang dikirim berlogic low atau high. Metode pengiriman data ini diterapkan oleh remote Philips.

 

 

Gambar 5 Shift Coded

 

Penggunaan infra red sangat bagus dalam komunikasi dan kontrol suatu sistem. Infra red adalah frekuensi radiasi yang bekerja di bawah tingkat sensitivitas mata manusia. Jadi manusia tidak dapat melihat sinar tersebut. Gambaran sinyal yang dikirimkan oleh transmitter dan diterima oleh IR demodulator dapat dilihat pada gambar 3 sebagai contoh yang dikirimkan adalah header:

           

 

Gambar 6 Hubungan Antara Sinyal TX dan RX

 

Jika transmitter mengirimkan sinyal on dan off maka pada receiver juga menerima sinyal on dan off. Tetapi receiver hanya mendeteksi ada carrier atau tidak. Jika ada data carrier maka pulsa yang dikirimkan adalah high sebaliknya jika tidak ada carrier maka pulsa yang dikirimkan adalah low. Sinyal carrier sebesar 40 kHz yang diterima oleh receiver akan hilang, karena pada receiver sudah dibatasi dengan menggunakan rangkaian high pass filter dan low pass filter, frekuensi yang kurang dari 159.23 Hz dan lebih dari 7.24 kHz tidak dilewatkan. Sedangkan sinyal informasi sebesar 4T=2200ms (454.54 Hz) akan diterima begitu juga pulsa lownya sebesar 1T=550ms (1.82 kHz) akan diterima untuk diolah sebagai data header. Salah satu contoh aplikasi dari penggunaan infra red adalah pada TV/VCR remote control. Infra red ini bekerja pada range frekuensi antara 30-60 kHz.

Dengan melihat karakteristik ini maka remote control menggunakan frekuensi carrier sekitar 36-40kHz. Untuk membangkitkan sinyal dengan frekuensi 40kHz tidak sulit tetapi untuk menerima sinyal dengan frekuensi 40 kHZ itu membutuhkan filters, penguatan sinyal, dan menghilangkan sinyal carrier sehingga data yang diterima benar-benar valid.

Remote yang digunakan dalam hal ini adalah remote TV Sony. Format data dari remote Sony terdiri dari 12 bits data. Data yang dikirimkan pertama kali adalah header selanjutnya baru data.

Format data:

                        Hxxxxxxyyyyyy

                                       

                                                              

            Header  LSB          MSB                  

 

xxxxxx : command                      

yyyyyy : address

Jarak antara data dengan data adalah 25ms.

 

Remote Sony ini memiliki karakteristik yaitu memiliki periode (1T)=550 ms dan carrier 40Khz. Untuk remote Sony memiliki header high  4T dan low 1T, untuk logic 1 memiliki pulsa high sepanjang 2T dan low 1T, dan untuk logic 0 memiliki pulsa high 1T dan low 1T. Ini merupakan format aslinya sedangkan jika mengamati sinyal yang dikirimkan remote melalui IR modul kebalikannya karena padda IR modul ada inverternya. Berikut contoh bentuk gambar pulsa dari header, logic 1 dan logic 0 dari remote TV Sony yang sebenarnya (belum melalui gerbang inverter).

 

 

 

Gambar 7 Pulsa Remote Control Sony

 

 

Untuk dapat mengamati bentuk sinyal yang dipancarkan oleh remote maka diperlukan osiloskop. Dengan osiloskop akan diketahui bentuk sinyal dari masing-masing tombol pada remote.

Berikut ini adalah bentuk-bentuk sinyal dari remote Sony setelah keluar dari titik B pada gambar 2 (setelah melalui gerbang inverter).

 

 

Gambar 8 Format Sinyal Remote Control Sony

 

 

Tabel 1 Tabel Fungsi Tombol dan Data Yang Diterima oleh Rangkaian Penerima

Nama tombol

Data Hexa

Fungsi Tombol

Data Hexa

Fungsi Tombol

Data Hexa

Tombol 1

#080

Volume -

#093

Sharpness -

#0A3

Tombol 2

#081

Mute

#094

TV/Video

#0A5

Tombol 3

#082

Power(toggle)

#095

Balance L

#0A6

Tombol 4

#083

Normal value

#096

Balance R

#0A7

Tombol 5

#084

Picture +

#098

Power on

#0AE

Tombol 6

#085

Picture - 

#099

Power off

#0AF

Tombol 7

#086

Colour +

#09A

Input line A

#0C0

Tombol 8

#087

Colour -

#09B

Input line B

#0C1

Tombol 9

#088

Brightness +

#09E

Input AV

#0C3

Tombol 0

#089

Brightness -

#09F

Input digital

#0C5

Ch +

#090

Hue +

#0A0

Input Vtr

#0C7

Ch -

#091

Hue -

#0A1

Sharpness -

#0A3

Volume +

#092

Sharpness +

#0A2

 

 

 

Untuk membaca berapa besarnya header, logika1 dan logika 0, maka digunakan timer untuk menghitungnya jadi yang dibaca high dan lownya.

Potongan Program 1: Program Untuk Membaca Remote

1:            .DATA

2:       TMP   DS   15

3:           

4:            .CODE

5:             CLR   EX0              ;MATIKAN INTERUPT

6:             MOV   R0,#TMP          ;Isi R0 dengan alamat TMP

7:             MOV   TH1,#0           ;TH1 DIISI 0

8:             MOV   TL1,#0           ;TL1 DIISI 0     

9:             SETB  TR1              ;JALANKAN TIMER 1

10:      LOP1:   

11:            JNB   P3.2,*           ;CEK P3.2 LOW TETAP KE LOP1

12:      LOP2:   

13:            JNB   P3.2,LOP3        ;P3.2, APAKAH SUDAH LOW ? JIKA SUDAH KE LOP3   

14:            MOV   A,TH1            ;TH1 DIISIKAN KE A

15:            CJNE  A,#$0C,LOP2      ;TUNGGU SAMPAI OVERFLOW

16:            SJMP  EXIT             ;DATA SELESAI DITERIMA SEMUA,

17:                                   ;LOMPAT KE EXIT  

18:      LOP3: CLR  TR1               ;MATIKAN TIMER 1

19:            MOV   @R0,TH1          ;TH1 DIMASUKKAN KE ALAMAT DARI R0

20:            INC   R0               ;NAIKKAN R0

21:            SJMP  IR               ;KEMBALI AMBIL DATA

22:      EXIT:

Setelah datanya diambil maka dilihat apakah datanya berupa header, logic 1, logic 0. Dengan menggunakan timer maka dapat diketahui nilai dari headernya sebesar 0A, untuk logika 1 sebesar 06, sedangkan data highnya sebesar 06 dan untuk data lownya sebesar 04. Kemudian data yang masuk dikurangi oleh 05 jika ada carry berarti data low sebaliknya jika tidak ada carry berarti data high. Kemudian carrynya dikomplemen dan selanjutnya digeser dengan perintah RRC(rotate right dengan carry). Proses ini akan dilakukan sebanyak 8 kali pergeseran.  Berikut ini program untuk mengolah data yang masuk. Proses ini akan dilakukan sebanyak 8 kali pergeseran.

Potongan Program 2 :

1:        EXIT:     

2:             CLR     TR1       ;MATIKAN TIMER

3:             MOV     R0,#TMP   ;ALAMAT TEMP DIISIKAN KE R0

4:             MOV     A,@R0     ;ISINYA R0 DIISIKAN KE A                 

5:             CLR     C         ;CLEAR CARRY

6:             SUBB    A,#9      ;CEK APAKAH HEADERNYA SONY

7:                               ;DENGAN DIKURANGI 9(HEADERNYA   SONY=0A)               

8:             JNC     SONY      ;TIDAK ADA CARRY,BERARTI SONY

9:             SETB    EX0       ;ADA CARRY AKTIFKAN EXTERNAL INTERUPT

10:            SJMP    COBA

11:      SONY:     

12:            INC     R0        ;R0 DIINCREMENT

13:      DATA:     

14:            MOV     R7,#8     ;DIAMBIL 8 BIT DATA

15:            MOV     R6,#0     ;NILAI AWAL R6 DIISI 0 

16:      LDATA:

17:            MOV     A,@R0     ;ALAMAT DARI R1 DISIKAN KE A 

18:      CEKBIT:

19:            CLR     C         ;CLEAR CARRY

20:            SUBB    A,#5      ;DIKURANGI 5(DATA HIGH SONY=06

21:                              ;DATA LOW SONY=04)

22:            CPL     C         ;CARRY DIKOMPLEMEN

23:            MOV     A,R6      ;R6 DIISIKAN KE A

24:            RRC     A         ;A DIGESER BERSAMA CARRY

25:            MOV     R6,A      ;DISIMPAN DI R6

26:            INC     R0

27:            DJNZ    R7,LDATA  ;TERUS SAMPAI 8 BIT DATA           

 

 Pengaturan Kecepatan Putar Kipas

Untuk menjalankan kipas digunakan rangkaian transistor yang disusun secara Darlington. Transistor yang dipakai adalah transistor jenis NPN tipe BC 547 yang memiliki faktor penguatan dc (hfe) sebesar 125 dan mampu mengalirkan sampai arus 100 mA DC. Rangkaian untuk menjalankan transistor dapat dilihat pada gambar 9:

 

Gambar 9 Rangkaian Untuk Menjalankan Motor

 

Untuk mengatur kecepatan kipas digunakan teknik PWM( Pulse Width Modulation), yakni mengatur besarnya dutycycle, frekuensinya tetap tetapi lebar pulsa high dan lownya dapat diatur. Untuk itu digunakan timer untuk mengatur pulsa high dan pulsa lownya. Jadi dutycyclenya akan dimulai dari 20%,30%,40%,50%,60%,70%,80%,90%. Semakin besar dutycyclenya maka semakin cepat pula putaran dari motor. Berikut ini merupakan potongan program untuk menjalankan kipas dengan prinsip PWM:

 

Potongan Program 3 :Pengaturan Kecepatan Kipas

1: PWM:

2:      MOV     A,R4                 ;NILAI AWAL R4 DIISIKAN KE A

3:      MOV     DPTR,#TABELH1        ;ALAMAT TABELH1 DIISIKAN KE DPTR

4:      MOVC    A,@A+DPTR            ;A SEBAGAI PENUNJUK TABELH1 KEMUDIAN DIISIKAN KE A

5:      MOV     TABH,A               ;TABH DIISI A

6:      MOV     A,R4                

7:      MOV     DPTR,#TABELH2        ;ALAMAT TABELH2 DIISIKAN KE DPTR

8:      MOVC    A,@A+DPTR            ;A SEBAGAI PENUNJUK TABELH2 KEMUDIAN DIISIKAN KE A

9:      MOV     TABH+1,A             ;A DIISIKAN KE TABH+1

10:     CLR     TR0                 

11:     CJNE    R3,#0,LOW            ;BANDINGKAN R3 DENGAN 0 TIDAK SAMA KE LOW

12:     SETB    P3.1                

13:     MOV     TH0,TABH             ;TABH DIISIKAN KE TH0

14:     MOV     TL0,TABH+1           ;TABH+1 DIISIKAN KE TL0

15:     MOV     R3,#1                ;R3 DIISI 1

16:     SETB    TR0                  ;JALANKAN TIMER

17:     SJMP    SELESAI

18: LOW:

19:     MOV     A,R4                

20:     MOV     DPTR,#TABELL1 

21:     MOVC    A,@A+DPTR           

22:     MOV     TABL,A

23:     MOV     A,R4

24:     MOV     DPTR,#TABELL2

25:     MOVC    A,@A+DPTR

26:     MOV     TABL+1,A

27:     CLR     P3.1

28:     MOV     TH0,TABL

29:     MOV     TL0,TABL+1

30:     SETB    TR0

31:     RET

32: TABELH1     DB $FF,$FF,$FE,$FE,$FE,$FD,$FD,$FC,$FC,$FC

33: TABELH2     DB $FF,$38,$D4,$70,$0C,$A8,$44,$E0,$7C,$19

34: TABELL1     DB $FC,$FC,$FD,$FD,$FE,$FE,$FE,$FF,$FF,$FF

35: TABELL2     DB $19,$E0,$44,$A8,$0C,$70,$D4,$38,$9C,$FF

 

Penghitungan Kecepatan Putar Kipas

Untuk menghitung kecepatan dari motor maka digunakan rangkaian photo transistor. Prinsip dari photo transistor ini adalah mirip dengan transistor lainnya. Wujud dari rangkaian photo transistor ini dapat dilihat pada gambar 10:

 

 

 

Gambar 10 Rangkaian Photo Transistor Dan 74LS14

 

Prinsip dari rangkaian ini adalah :

bullet

Jika antara transistor dan LED dihalangi maka transistor akan off sehingga output dari kolektor akan berlogic high

bullet

Sebaliknya jika antara transistor dan LED tidak dihalangi maka transistor akan on sehingga outputnya akan berlogic low.

Dengan mengetahui prinsip dari photo transistor ini maka harus dibuat penghalang antara transistor dan LED, pada penghalang itu diberi lobang sedikit. Penghalang itu harus dibuat seporos dengan kipas dc tersebut. Sehingga ketika berputar output dari transistor akan mengalami high dan low. Agar output dari rangkaian ini menjadi lebih akurat maka ditambahkan schmitt trigger (74LS14). Program untuk menghitung kecepatan dapat dilihat sebagai berikut:

 

Potongan Program 3 : Menghitung kecepatan Putar Kipas

1:     LOOP:

2:         JB      P3.4,*              

3:         JNB     P3.4,*

4:         INC     COUNT

5:         SJMP    LOOP

 

Tampilan-SED1200

Tampilan yang dipakai adalah LCD Epson SED1200. LCD ini digunakan untuk menampilkan kecepatan putaran dari kipas dalam satuan RPS (Rotation per second). LCD Epson SED1200 ini dilengkapi dengan 4 jalur data (DB0…DB3) yang dipakai untuk menampilkan kode ASCII maupun perintah untuk mengatur kerjamya SED1200. Kode ASCII maupun perintah tersebut semuanya merupakan kode 8 bit maka kode-kode itu dikirimkan dua kali, yang pertama dikirimkan adalah 4 bit yang bernilai besar (D4..D7). baru kemudian 4 bit sisanya(D0..D3). Selain dilengkapi dengan jalur data maka LCD Epson SED1200 ini dilengkapi dengan CS,WR, dan A0. A0 digunakan untuk membedakan data yang dikirimkan berupa perintah atau kode ASCII. Jika A0=0 maka data yang dikirimkan adalah perintah untuk mengatur kerja SED1200 sebaliknya jika A0=1 maka data yang dikirim adalah kode ASCII yang ingin ditampilkan.

·        Sinyal CS digunakan untuk mengaktifkan proses pengiriman data, selama proses ini berlangsung CS diaktifkan pada level tegangan ‘0’

·        Data yang dikirimkan ke SED1200 disiapkan di DB0..DB3, seperti yang telah dibicarakan dipecah menjadi 2 kali pengiriman yaitu pengiriman D4..D7 dan selanjutnya D0..D3.

·        Sinyal WR dijadikan sebagai sinyal ’komando’,  pengambilan data terjadi pada saat WR berubah dari ‘0’ menjadi ‘1’

 

 

Gambar 11 Hubungan SED1200 ke AT89C2051

 

Pada potongan program 4 ini akan ditunjukkan bagaimana mengendalikan SED1200.

·        Subrutin KirimPerintah bekerja pada saat A0=’0’ berarti data yang dikirimkan AT89C2051 ke SED1200

         berupa perintah untuk mengatur tata kerja SED1200. Subrutin KirimASCII bekerja pada saat A0=’1’ berarti

         data yang dikirimkan AT89C2051 sebagai kode ASCII yang akan ditampilkan.

·        Selama proses pengiriman data CS diaktifkan pada level tegangan ‘0’.

·        Data pada Akumulator A dikirimkan sebanyak dua kali yaitu 4 bit pertama A4..A7 dan 4 bit kedua A0..A3.

·        Karena AT89C2051 tidak mempunyai sinyal ALE maka dibuat 16 pulsa clock yang dibutuhkan oleh SED1200

 

Potongan Program 4 : Mengatur Tampilan LCD

 

1:     ;****DAFTAR PERINTAH PENGATUR SED1200*****

2:       RESETSED1200        EQU   %00010000

3:       TAMPILAN1BARIS      EQU   %00010010

4:       TAMPILAN2BARIS      EQU   %00010011

5:       DISPLAYOFF          EQU   %00001100

6:       DISPLAYON           EQU   %00001101

7:       TANPACURSOR         EQU   %00001110

8:       PAKAICURSOR         EQU   %00001111

9:       GARISBAWAH          EQU   %00001000

10:      BLOK                EQU   %00001001

11:      TIDAKKEDIP          EQU   %00001010

12:      BERKEDIP            EQU   %00001011

13:      CURSORKEKANAN       EQU   %00000100

14:      CURSORKEKIRI        EQU   %00000101

15:      KEBARISSATU         EQU   %10000000

16:      KEBARISDUA          EQU   %11000000

17:       

18:      ;****Konfigurasi PIN LCD****

19:      WRITE         BIT   P1.4

20:      A0            BIT   P1.5

21:      CS            BIT   P1.6

22:      CLK           BIT   P1.7

23:      LCD:

24:         ACALL   SIAPKANSED1200

25:         ACALL   HAPUSTAMPILAN

26:         MOV     A,#KEBARISSATU

27:         ACALL   KIRIMPERINTAH

28:         MOV     A,R1

29:         MOV     B,#100

30:         DIV     AB

31:         ADD     A,#$30

32:         ACALL   TAMPILKANHURUF

33:         MOV     A,B

34:         MOV     B,#10

35:         DIV     AB

36:         ADD     A,#$30

37:         ACALL   TAMPILKANHURUF

38:         MOV     A,B

39:         ADD     A,#$30

40:         ACALL   TAMPILKANHURUF

41:         MOV     A,#$52

42:         ACALL   TAMPILKANHURUF

43:         MOV     A,#$50

44:         ACALL   TAMPILKANHURUF

45:         MOV     A,#$53

46:         ACALL   TAMPILKANHURUF

47:         MOV     A,R4

48:         ADD     A,#$30

49:         ACALL   TAMPILKANHURUF

50:         MOV     A,#KEBARISDUA

51:         ACALL   KIRIMPERINTAH

52:         RET

53:       

54:      ;****MEMPERSIAPKAN TATA KERJA SED1200*****

55:      SIAPKANSED1200:

56:         SETB    Write                ;LEVEL TEGANGAN BAKU

57:         SETB    CLK

58:         CLR     CS

59:         MOV     A,#RESETSED1200

60:         ACALL   KIRIMPERINTAH

61:         MOV     A,#TAMPILAN2BARIS

62:         ACALL   KIRIMPERINTAH

63:         MOV     A,#KEBARISSATU

64:         ACALL   KIRIMPERINTAH

65:         MOV     A,#GARISBAWAH

66:         ACALL   KIRIMPERINTAH

67:         MOV     A,#PAKAICURSOR

68:         ACALL   KIRIMPERINTAH

69:         MOV     A,#BERKEDIP   

70:         ACALL   KIRIMPERINTAH

71:         MOV     A,#DISPLAYON

72:         ACALL   KIRIMPERINTAH

73:         MOV     A,#KEBARISDUA

74:         ACALL   KIRIMPERINTAH

75:         MOV     A,#GARISBAWAH

76:         ACALL   KIRIMPERINTAH

77:         MOV     A,#PAKAICURSOR

78:         ACALL   KIRIMPERINTAH

79:         MOV     A,#BERKEDIP   

80:         ACALL   KIRIMPERINTAH

81:         MOV     A,#DISPLAYON

82:         ACALL   KIRIMPERINTAH

83:         RET

84:       

85:      ; ***** Menghapus Tampilan SED1200 *****

86:      HapusTampilan:

87:         MOV     A,#KeBarisSatu       ;BARIS SATU DIHAPUS

88:         ACALL   HapusBaris

89:         MOV     A,#KEBARISDUA

90:         ACALL   HAPUSBARIS

91:      HapusBaris:        

92:         ACALL   KirimPerintah        ;UNTUK PINDAH BARIS

93:         MOV     R7,#10               ;10 HURUF PER BARIS

94:      HapusLagi:

95:         MOV     A,#' '               ;MENAMPILKAN SPASI

96:         ACALL   TAMPILKANHURUF       ;TAMPILKAN SPASI

97:         DJNZ    R7,HapusLagi        

98:         RET

99:       

100:  ;***** Tampilkan String yang ada di Memori Program *****

101:  TAMPILKANHURUF:

102:     ACALL   KIRIMASCII

103:     RET

104:   

105:  ;*****SUBRUTIN SED1200****

106:  KirimPerintah:

107:     CLR     A0                   ; A0=0 : COMMAND MODE

108:     SJMP    OutByte

109:  KirimASCII:

110:     SETB    A0                   ; A0=1 : CHARACTER MODE

111:  OutByte:

112:     CLR     CS

113:     PUSH    A                    ; SIMPAN DULU

114:     SWAP    A                    ; A0..A3 DAN A4..A7 TUKAR TEMPAT

115:     ACALL   OutNibble            ; OUTPUTKAN A4..A7

116:     POP     A                    ; AMBIL KEMBALI SIMPANAN

117:     ACALL   OutNibble            ; OUTPUTKAN A0..A3

118:     SETB    CS

119:   

120:  ;***** Membuat 16 pulsa CLK ****

121:     MOV     R6,#32

122:  Buat16CLK:

123:     CPL     CLK                  ; CLK DIBALIK, '0'->'1' DAN '1'->'0'

124:     DJNZ    R6,Buat16CLK         ; SEBANYAK 32 KALI

125:     RET

126:  OutNibble:

127:     ANL     A,#$0F               ; HANYA A.0..A.3 YANG DIPAKAI

128:     MOV     R6,A                 ; SIMPAN DULU

129:     MOV     A,P1                 ; AMBIL NILAI YANG SUDAH ADA DI P1

130:     ANL     A,#$F0               ; PERTAHANKAN NILAI A.4..A.7

131:     ORL     A,R6                 ; GABUNGKAN DENGAN SIMPANAN A.0..A.3

132:     MOV     P1,A                 ; SIAPKAN KE SED1200

133:     CLR     Write                ; '0'-KAN DULU KAKI WR SEED1200

134:     SETB    Write                ; DATA DIAMBIL SED1200

135:     RET

 

 

 
     

 Copyright (C) anekawarna.890m.com 2007
For problems or questions regarding this web contact [admin]
Last updated: Jumat Oktober 23, 2009 16:25:29.