ADC เป็นตัวแปลงอนาล็อกเป็นดิจิตอลซึ่งแปลงข้อมูลอนาล็อกเป็นรูปแบบดิจิทัล โดยปกติจะใช้เพื่อแปลงแรงดันไฟฟ้าอนาล็อกเป็นรูปแบบดิจิตอล สัญญาณอะนาล็อกไม่มีค่าที่ไม่มีที่สิ้นสุดเช่นคลื่นไซน์หรือเสียงพูดของเรา ADC จะแปลงค่าเหล่านี้เป็นระดับหรือสถานะเฉพาะซึ่งสามารถวัดเป็นตัวเลขเป็นปริมาณทางกายภาพได้ แทนที่จะแปลงแบบต่อเนื่อง ADC จะแปลงข้อมูลเป็นระยะซึ่งโดยปกติเรียกว่าอัตราการสุ่มตัวอย่าง โมเด็มโทรศัพท์เป็นหนึ่งในตัวอย่างของ ADC ซึ่งใช้สำหรับอินเทอร์เน็ตโดยจะแปลงข้อมูลแอนะล็อกเป็นข้อมูลดิจิทัลเพื่อให้คอมพิวเตอร์เข้าใจได้เนื่องจากคอมพิวเตอร์เข้าใจได้เฉพาะข้อมูลดิจิทัลเท่านั้น ข้อได้เปรียบที่สำคัญของการใช้ ADC คือสามารถกำจัดสัญญาณรบกวนจากสัญญาณเดิมได้อย่างมีประสิทธิภาพและสัญญาณดิจิทัลสามารถเดินทางได้อย่างมีประสิทธิภาพมากกว่าสัญญาณอนาล็อก นั่นเป็นเหตุผลที่ทำให้เสียงดิจิตอลนั้นชัดเจนมากในขณะที่ฟัง
ในปัจจุบันมีไมโครคอนโทรลเลอร์จำนวนมากในตลาดที่มี ADC ในตัวพร้อมช่องสัญญาณอย่างน้อยหนึ่งช่อง และด้วยการใช้การลงทะเบียน ADC เราสามารถเชื่อมต่อได้ เมื่อเราเลือก8051 ไมโครคอนโทรลเลอร์ครอบครัวสำหรับการทำโครงการใด ๆ ในการที่เราจะต้องมาจากการแปลง ADC แล้วเราใช้ADC ภายนอก ชิป ADC ภายนอกบางตัวคือ 0803,0804,0808,0809 และยังมีอื่น ๆ อีกมากมาย วันนี้เราจะมาเชื่อมต่อ ADC 8-channel กับไมโครคอนโทรลเลอร์ AT89s52 คือ ADC0808 / 0809
ส่วนประกอบ:
- 8051 ไมโครคอนโทรลเลอร์ (AT89S52)
- ADC0808 / 0809
- 16x2 LCD
- ตัวต้านทาน (1k, 10k)
- หม้อ (10k x4)
- ตัวเก็บประจุ (10uf, 1000uf)
- ไฟ LED สีแดง
- บอร์ดขนมปังหรือ PCB
- 7805
- 11.0592 MHz คริสตัล
- อำนาจ
- การเชื่อมต่อสายไฟ
ADC0808 / 0809:
ADC0808 / 0809 เป็นอุปกรณ์ CMOS เสาหินและตรรกะการควบคุมที่เข้ากันได้กับไมโครโปรเซสเซอร์และมี 28 พินซึ่งให้ค่า 8 บิตในเอาต์พุตและพินอินพุต ADC 8 ช่อง (IN0-IN7) ความละเอียดคือ 8 ดังนั้นจึงสามารถเข้ารหัสข้อมูลอะนาล็อกเป็นหนึ่งใน256 ระดับ (2 8) อุปกรณ์นี้มีบรรทัดแอดเดรสสามช่อง ได้แก่ ADDA, ADDB และ ADDC สำหรับเลือกช่องสัญญาณ ด้านล่างนี้คือ Pin Diagram สำหรับ ADC0808:
ADC0808 / 0809 ต้องการพัลส์นาฬิกา สำหรับการแปลง เราสามารถจัดหาได้โดยใช้ออสซิลเลเตอร์หรือโดยใช้ไมโครคอนโทรลเลอร์ ในโครงการนี้เราได้ประยุกต์ใช้ความถี่โดยใช้ไมโครคอนโทรลเลอร์
เราสามารถเลือกช่องสัญญาณเข้าใดก็ได้โดยใช้บรรทัดที่อยู่เช่นเดียวกับที่เราสามารถเลือกบรรทัดอินพุต IN0 โดยทำให้บรรทัดแอดเดรสทั้งสามบรรทัด (ADDA, ADDB และ ADDC) ต่ำ หากเราต้องการเลือกช่องอินพุต IN2 เราจำเป็นต้องให้ ADDA, ADDB ต่ำและ ADDC สูง สำหรับการเลือกช่องสัญญาณเข้าอื่น ๆ ทั้งหมดให้ดูที่ตารางที่กำหนด:
ชื่อช่อง ADC |
ADDC PIN |
PIN ของ ADDB |
ADDA PIN |
IN0 |
ต่ำ |
ต่ำ |
ต่ำ |
IN1 |
ต่ำ |
ต่ำ |
สูง |
IN2 |
ต่ำ |
สูง |
ต่ำ |
IN3 |
ต่ำ |
สูง |
สูง |
IN4 |
สูง |
ต่ำ |
ต่ำ |
IN5 |
สูง |
ต่ำ |
สูง |
IN6 |
สูง |
สูง |
ต่ำ |
IN7 |
สูง |
สูง |
สูง |
คำอธิบายวงจร:
วงจรของ“ การเชื่อมต่อ ADC0808 กับ 8051”มีความซับซ้อนเล็กน้อยซึ่งมีสายเชื่อมต่อสำหรับเชื่อมต่ออุปกรณ์ซึ่งกันและกัน ในวงจรนี้เราใช้ AT89s52 เป็นหลักเป็นไมโครคอนโทรลเลอร์ 8051, ADC0808, โพเทนชิออมิเตอร์และ LCD
จอ LCD 16x2 เชื่อมต่อกับไมโครคอนโทรลเลอร์ 89s52 ในโหมด 4 บิต พินควบคุม RS, RW และ En เชื่อมต่อโดยตรงกับพิน P2.0, GND และ P2 2 และพินข้อมูล D4-D7 เชื่อมต่อกับพิน P2.4, P2.5, P2.6 และ P2 7 จาก 89s52 ขาเอาต์พุต ADC0808 เชื่อมต่อโดยตรงกับพอร์ต P1 ของ AT89s52 หมุดบรรทัดแอดเดรส ADDA, ADDB, AADC เชื่อมต่อที่ P3.0, P3.1 และ P3.2
ALE (เปิดใช้สลักที่อยู่), SC (เริ่มการแปลง), EOC (สิ้นสุดการแปลง), OE (เปิดใช้งานเอาต์พุต) และหมุดนาฬิกาเชื่อมต่อที่ P3.3, P3.4, P3.5, P3.6 และ P3.7.
และที่นี่เราได้ใช้โพเทนชิโอมิเตอร์สามตัวเชื่อมต่อที่พิน 26, 27 และ 28 ของ ADC0808
แบตเตอรี่ 9 โวลต์และตัวควบคุมแรงดันไฟฟ้า 5 โวลต์ ได้แก่ 7805 ใช้สำหรับเปิดวงจร
การทำงาน:
ในโครงการนี้เราได้เชื่อมต่อช่อง ADC0808 สามช่อง และสำหรับการสาธิตเราได้ใช้ตัวต้านทานตัวแปรสามตัว เมื่อเราจ่ายไฟให้วงจรไมโครคอนโทรลเลอร์เริ่มต้น LCD โดยใช้คำสั่งที่เหมาะสมกำหนดนาฬิกาให้กับชิป ADC เลือกช่องสัญญาณ ADC โดยใช้บรรทัดที่อยู่และส่งสัญญาณการแปลงเริ่มต้นไปยัง ADC หลังจาก ADC นี้จะอ่านอินพุตช่อง ADC ที่เลือกเป็นครั้งแรกและให้เอาต์พุตที่แปลงเป็นไมโครคอนโทรลเลอร์ จากนั้นไมโครคอนโทรลเลอร์จะแสดงค่าที่ตำแหน่ง Ch1 ใน LCD จากนั้นไมโครคอนโทรลเลอร์จะเปลี่ยนช่อง ADC โดยใช้บรรทัดที่อยู่ จากนั้น ADC จะอ่านช่องสัญญาณที่เลือกและส่งเอาต์พุตไปยังไมโครคอนโทรลเลอร์ และแสดงบน LCD ในชื่อ Ch2. และชอบที่ชาญฉลาดสำหรับช่องอื่น ๆ
การทำงานของ ADC0808นั้นคล้ายกับการทำงานของ ADC0804 มาก ในสิ่งนี้ไมโครคอนโทรลเลอร์ตัวแรกให้สัญญาณนาฬิกา 500 KHz ไปยัง ADC0808 โดยใช้การขัดจังหวะ Timer 0 เนื่องจาก ADC ต้องการสัญญาณนาฬิกาในการทำงาน ตอนนี้ไมโครคอนโทรลเลอร์ส่งสัญญาณระดับ LOW ถึง HIGH ไปยัง ALE pin (active-high pin) ของ ADC0808 เพื่อเปิดใช้งานสลักในแอดเดรส จากนั้นใช้สัญญาณ HIGH ถึง LOW กับ SC (เริ่มการแปลง) ADC จะเริ่มการแปลงอนาล็อกเป็นดิจิตอล จากนั้นรอให้หมุด EOC (สิ้นสุดการแปลง) ไปที่ LOW เมื่อ EOC ดำเนินไปในระดับต่ำหมายความว่าการแปลงอนาล็อกเป็นดิจิทัลเสร็จสมบูรณ์และข้อมูลพร้อมใช้งาน หลังจากนี้ไมโครคอนโทรลเลอร์จะเปิดใช้งานสายเอาต์พุตโดยใช้สัญญาณ HIGH ถึง LOW กับขา OE ของ ADC0808
ADC0808 ให้เอาต์พุตการแปลงอัตราส่วนเมตริกที่พินเอาต์พุต และสูตรสำหรับการแปลงเรดิโอเมตริกจะได้รับโดย:
V in / (V fs -V z) = D x / (D สูงสุด -D นาที)
ที่ไหน
V inคือแรงดันไฟฟ้าอินพุตสำหรับการแปลง
V fsเต็มสเกลแรงดันไฟฟ้า
V zเป็นศูนย์แรงดันไฟฟ้า
D xคือจุดข้อมูลที่กำลังวัด
D สูงสุดคือขีด จำกัด ข้อมูลสูงสุด
D minคือขีด จำกัด ข้อมูลขั้นต่ำ
คำอธิบายโปรแกรม:
ในโปรแกรมก่อนอื่นเรารวมไฟล์ส่วนหัว sand กำหนดตัวแปรและขาอินพุตและเอาต์พุตสำหรับ ADC และ LCD
# รวม
มีการสร้างฟังก์ชันสำหรับสร้างการหน่วงเวลา (เป็นโมฆะดีเลย์) พร้อมกับฟังก์ชัน LCD บางอย่างเช่นสำหรับการเริ่มต้น LCD การพิมพ์สตริงสำหรับคำสั่ง LCD เป็นต้นคุณสามารถค้นหาได้อย่างง่ายดายใน Code ตรวจสอบบทความนี้สำหรับการเชื่อมต่อ LCD กับ 8051 และฟังก์ชันต่างๆ
หลังจากนี้ในโปรแกรมหลักเราได้เริ่มต้น LCD และตั้งค่าพิน EOC, ALE, EO, SC ตามลำดับ
เป็นโมฆะ main () {int i = 0; eoc = 1; เบียร์ = 0; oe = 0; sc = 0; TMOD = 0x02; TH0 = 0xFD; lcd_ini (); lcdprint ("ADC 0808/0809");
จากนั้นโปรแกรมจะอ่าน ADC และเก็บเอาต์พุต ADC ในตัวแปรจากนั้นส่งไปยัง LCD หลังจากการแปลงทศนิยมเป็น ASCII โดยใช้ฟังก์ชัน void read_adc () และ void adc (int i):
เป็นโมฆะ read_adc () {number = 0; เบียร์ = 1; sc = 1; ล่าช้า (1); เบียร์ = 0; sc = 0; ในขณะที่ (eoc == 1); ในขณะที่ (eoc == 0); oe = 1; หมายเลข = input_port; ล่าช้า (1); oe = 0; } โมฆะ adc (int i) {สวิตช์ (i) {case 0: ADDC = 0; ADDB = 0; ADDA = 0; lcdcmd (0xc0); read_adc ();