ADC adalah penukar Analog ke Digital, yang menukar data analog menjadi format digital; biasanya ia digunakan untuk menukar voltan analog ke dalam format digital. Isyarat analog tidak mempunyai nilai seperti gelombang sinus atau ucapan kita, ADC mengubahnya menjadi tahap atau keadaan tertentu, yang dapat diukur dalam jumlah sebagai kuantiti fizikal. Daripada penukaran berterusan, ADC menukar data secara berkala, yang biasanya dikenali sebagai kadar persampelan. Modem telefonadalah salah satu contoh ADC, yang digunakan untuk internet, ia mengubah data analog menjadi data digital, sehingga komputer dapat memahami, kerana komputer hanya dapat memahami data Digital. Kelebihan utama, menggunakan ADC adalah, kebisingan kita dapat dihapuskan dengan berkesan dari isyarat asal dan isyarat digital dapat bergerak dengan lebih efisien daripada analog. Itulah sebabnya audio digital sangat jelas semasa mendengar.
Pada masa ini terdapat banyak mikrokontroler di pasaran yang telah membina ADC dengan satu atau lebih saluran. Dan dengan menggunakan daftar ADC mereka, kita dapat berinteraksi. Apabila kita memilih keluarga mikrokontroler 8051 untuk membuat sebarang projek, di mana kita memerlukan penukaran ADC, maka kita menggunakan ADC luaran. Beberapa cip ADC luaran adalah 0803,0804,0808,0809 dan terdapat banyak lagi. Hari ini kita akan menghubungkan antara ADC 8-saluran dengan Mikrokontroler AT89s52 iaitu ADC0808 / 0809.
Komponen:
- 8051 Pengawal Mikro (AT89S52)
- ADC0808 / 0809
- LCD 16x2
- Perintang (1k, 10k)
- POT (10k x4)
- Kapasitor (10uf, 1000uf)
- Merah dipimpin
- Papan roti atau PCB
- 7805
- 11.0592 MHz Kristal
- Kuasa
- Menyambung wayar
ADC0808 / 0809:
ADC0808 / 0809 adalah peranti CMOS monolitik dan logik kawalan serasi mikropemproses dan mempunyai 28 pin yang memberikan nilai 8-bit dalam output dan pin input ADC 8-saluran (IN0-IN7). Resolusi adalah 8 sehingga dapat mengekod data analog menjadi salah satu dari 256 tahap (2 8). Peranti ini mempunyai tiga baris alamat saluran iaitu: ADDA, ADDB dan ADDC untuk memilih saluran. Berikut adalah Rajah Pin untuk ADC0808:
ADC0808 / 0809 memerlukan denyutan jam untuk penukaran. Kami dapat menyediakannya dengan menggunakan pengayun atau menggunakan mikrokontroler. Dalam projek ini kami telah menggunakan frekuensi dengan menggunakan mikrokontroler.
Kita boleh memilih mana-mana saluran input dengan menggunakan baris Alamat, seperti kita dapat memilih jalur input IN0 dengan menjaga ketiga-tiga baris alamat (ADDA, ADDB dan ADDC) Rendah. Sekiranya kita mahu memilih saluran input IN2 maka kita perlu memastikan ADDA, ADDB rendah dan ADDC tinggi. Untuk memilih semua saluran input lain, lihat jadual yang diberikan:
Nama Saluran ADC |
PIN ADDC |
PIN ADDB |
PIN ADDA |
IN0 |
RENDAH |
RENDAH |
RENDAH |
IN1 |
RENDAH |
RENDAH |
TINGGI |
IN2 |
RENDAH |
TINGGI |
RENDAH |
IN3 |
RENDAH |
TINGGI |
TINGGI |
IN4 |
TINGGI |
RENDAH |
RENDAH |
IN5 |
TINGGI |
RENDAH |
TINGGI |
IN6 |
TINGGI |
TINGGI |
RENDAH |
IN7 |
TINGGI |
TINGGI |
TINGGI |
Penerangan Litar:
Litar "Interfacing ADC0808 dengan 8051" adalah sedikit kompleks yang mengandungi lebih banyak wayar penghubung untuk menghubungkan peranti antara satu sama lain. Dalam litar ini kami menggunakan AT89s52 sebagai 8051 mikrokontroler, ADC0808, Potentiometer dan LCD.
LCD 16x2 disambungkan dengan mikrokontroler 89s52 dalam mod 4-bit. Pin kawalan RS, RW dan En disambungkan secara langsung ke pin P2.0, GND dan P2.2. Dan pin data D4-D7 disambungkan ke pin P2.4, P2.5, P2.6 dan P2.7 dari 89s52. Pin output ADC0808 disambungkan secara langsung ke port P1 dari AT89s52. Pin garis alamat ADDA, ADDB, AADC disambungkan pada P3.0, P3.1, dan P3.2.
ALE (Latch address enabled), SC (Mula penukaran), EOC (Akhir penukaran), OE (Output enabled) dan pin jam disambungkan di P3.3, P3.4, P3.5, P3.6 dan P3.7.
Dan di sini kami telah menggunakan tiga potensiometer yang dihubungkan pada pin 26, 27, dan 28 ADC0808.
Bateri 9 volt dan pengatur voltan 5 volt iaitu 7805 digunakan untuk menghidupkan litar.
Bekerja:
Dalam projek ini, kami telah menghubungkan tiga saluran ADC0808. Dan untuk demonstrasi kami telah menggunakan tiga perintang berubah-ubah. Apabila kita menghidupkan litar maka mikrokontroler menginisialisasi LCD dengan menggunakan perintah yang sesuai, memberikan jam ke cip ADC, memilih saluran ADC dengan menggunakan garis alamat dan menghantar isyarat penukaran permulaan ke ADC. Selepas ini ADC pertama kali membaca input saluran ADC terpilih dan memberikan outputnya yang ditukar kepada mikrokontroler. Kemudian mikrokontroler menunjukkan nilainya pada kedudukan Ch1 dalam LCD. Dan kemudian mikrokontroler mengubah saluran ADC dengan menggunakan garis alamat. Dan kemudian ADC membaca saluran yang dipilih dan menghantar output ke mikrokontroler. Dan tunjukkan di LCD sebagai nama Ch2. Dan seperti bijak untuk saluran lain.
Bekerja ADC0808 hampir sama dengan kerja ADC0804. Dalam hal ini, mikrokontroler pertama memberikan isyarat jam 500 KHz ke ADC0808, menggunakan Timer 0 mengganggu, kerana ADC memerlukan isyarat jam untuk beroperasi. Kini mikrokontroler menghantar isyarat tahap RENDAH ke TINGGI ke pin ALE (pin aktif tinggi) ADC0808 untuk mengaktifkan selak di alamat. Kemudian dengan menggunakan isyarat HIGH to LOW Level ke SC (Mula Penukaran), ADC memulakan penukaran analog ke digital. Dan kemudian tunggu pin EOC (Penukaran Akhir) menjadi RENDAH. Apabila EOC berjalan RENDAH, ini bermaksud penukaran analog ke digital telah selesai dan data siap digunakan. Selepas ini, mikrokontroler membolehkan saluran output dengan menggunakan isyarat HIGH to LOW ke pin OE ADC0808.
ADC0808 memberikan nisbah output penukaran metrik pada pin outputnya. Dan formula untuk penukaran radiometrik diberikan oleh:
V in / (V fs -V z) = D x / (D max -D min)
Di mana
V in adalah voltan input untuk penukaran
V fs adalah skala penuh Voltan
V z adalah voltan sifar
D x adalah titik data menjadi ukuran
D max adalah had data maksimum
D min adalah had data minimum
Penjelasan Program:
Dalam program ini, pertama-tama kami menyertakan header file sand menentukan variabel dan input & output pin untuk ADC dan LCD.
# sertakan
Fungsi untuk membuat penundaan telah dibuat (void delay), bersama dengan beberapa fungsi LCD seperti untuk inisialisasi LCD, mencetak rentetan, untuk perintah LCD dll. Anda dapat menemukannya dengan mudah dalam Kod. Lihat artikel ini untuk antara muka LCD dengan 8051 dan fungsinya.
Selepas ini dalam program utama, kami telah menginisialisasi LCD dan menetapkan pin EOC, ALE, EO, SC dengan sewajarnya.
kekosongan utama () {int i = 0; eoc = 1; ale = 0; oe = 0; sc = 0; TMOD = 0x02; TH0 = 0xFD; lcd_ini (); lcdprint ("ADC 0808/0809");
Dan kemudian program membaca ADC dan menyimpan output ADC dalam pemboleh ubah dan kemudian menghantarnya ke LCD setelah penukaran perpuluhan ke ASCII, menggunakan fungsi read_adc () dan voc adc (int i) void:
batal read_adc () {number = 0; ale = 1; sc = 1; kelewatan (1); ale = 0; sc = 0; sementara (eoc == 1); sementara (eoc == 0); oe = 1; nombor = input_port; kelewatan (1); oe = 0; } batal adc (int i) {suis (i) {kes 0: ADDC = 0; ADDB = 0; ADDA = 0; lcdcmd (0xc0); baca_adc ();