Donate

วันพฤหัสบดีที่ 8 เมษายน พ.ศ. 2553

อินพุต เอาท์พุต สัญญาณควบคุม และการออกแบบโปรแกรม


4.1 การออกแบบส่วนอินพุต

ใน ส่วนของอินพุตของ Microcontroller ได้ออกแบบให้ P3.0 – P3.3 เป็น input bit รับค่าเลขฐาน 2 ขนาด 4 บิตจาก MT 8870 กำหนดให้ P1.6 และ P3.7 เป็น input bit ของการปรับตั้งค่าเวลาในการบอกเวลาปัจจุบัน และ P3.5 เป็น input ที่รับค่าจากวงจรตรวจจับการ ยกหูโทรศัพท์ มีรายละเอียดของส่วน input ดังนี้
4.1.1 ส่วนถอดรหัสสัญญาณ DTMF
หมาย เลขจากคีย์บอร์ดแต่ละตัวจะผลิตสัญญาณ DTMF ออกมา จึงออกแบบให้ใช้ IC เบอร์ MT 8870 สำหรับแปลงสัญญาณ DTMF ไปเป็น เลขฐาน 2 จำนวน 4 บิต แล้วนำ input ส่งให้ P3 (P3.0 – P3.3) ส่วน P1.7 จะรับสัญญาณจากขา STD (Delay Steering Output) ของ MT8870 ซึ่งเป็นสัญญาณที่บอกว่าความถี่ที่รับมานั้น มีความถูกต้องและสามารถถอดรหัสออกมาเป็นเลข ฐาน 2 ขนาด 4 บิตได้ ( active high ) เราจะใช้สัญญาณ STD นี้เป็น สัญญาณเพื่อบอกให้ไมโครคอนโทรลเลอร์รับอินพุตทุกครั้งเมื่อมีการกดหมายเลข โทรศัพท์ สำหรับรายละเอียดของ MT 8870 ได้รวบรวมไว้ที่ภาคผนวกimage002

รูปที่ 4.1



4.1.2 ส่วนตรวจจับการยกหูโทรศัพท์
โดยปกติคู่สาย โทรศัพท์จะมีแรงดันประมาณ 46 Vdc ในขณะวางหูโทรศัพท์ และ 10 Vdc ในขณะยกหูโทรศัพท์ จึงใช้วงจร comparator ในการเปรียบเทียบแรงดันของคู่สายโทรศัพท์กับแรงดันอ้างอิง ดังรูป 4.2 ขณะวางหูโทรศัพท์จะมีแรงดัน ประมาณ 5 V และ ยกหูโทรศัพท์จะมีแรงดัน 0.2 V ซึ่งจะเป็น input ให้กับ P3.5 เพื่อให้ไมโครคอนโทรลเลอร์ทราบและเปลี่ยน MODE การทำงานจากการแสดงค่าเวลาในปัจจุบันไปเป็น MODEแสดงหมายเลขโทรศัพท์ที่ถูกกดพร้อมกับจับเวลาการใช้โทรศัพท์
image004
รูปที่ 4.2 ส่วนการตรวจจับการยกหูโทรศัพท์
4.1.3 ส่วนการตั้งค่าเวลาปัจจุบัน
ทำการต่อสวิตช์ชนิด กดติดปล่อยดับดังรูป 4.5 จำนวน 2 สวิตช์ ซึ่งเมื่อกดสวิตช์แล้วจะส่งลอจิก 0 ไปเป็น input ให้กับ P1.6 และ P3.7 สำหรับ P 1.6 จะเป็นปุ่มกด เพื่อให้ตัวไมโครคอนโทรลเลอร์ทราบว่าขณะนี้ผู้ใช้ต้องการตั้งเวลาและต้องการ จะตั้ง ชั่วโมง นาที หรือ วินาที ส่วน P3.7 จะเป็นปุ่มกดเพื่อเพิ่มค่า ชั่วโมง นาที หรือวินาที
4.2 การออกแบบส่วนเอาท์พุต
ใน ที่นี้จะกล่าวถึงส่วนเอาท์พุต ซึ่งรวมถึงสัญญาณควบคุมต่าง ๆ และจะแยกเอาท์พุต ออกเป็น 2 ส่วน คือส่วนที่เป็นการแสดงผลออกทางจอ LCD และส่วนที่เป็นสัญญาณควบคุม
4.2.1 เอาท์พุตส่วนที่เป็นการแสดงผล
ได้ ออกแบบให้ใช้ P1.0 – P1.3 เป็น เอาท์พุตที่ส่ง command หรือ data ให้ กับไมโครคอนโทรลเลอร์ของ LCD (ดังที่ได้อธิบายในบท ที่ 3) ซึ่ง command หรือ data จะ เป็นข้อมูลขนาด 8 บิต จะทำการส่งบิตที่ 4 – 7 ก่อนแล้วจึงส่งบิตที่ 0 – 3 ตาม ทำอย่างนี้เพื่อที่จะได้ประหยัดพอร์ท (Microcontroller เบอร์ AT89c2051 มี I/Q port จำนวน 15 บิต เท่านั้น) ดังที่แสดงไว้ในรูปที่ 4.5
4.2.2 เอาท์พุตส่วนที่เป็นการควบคุม
มี เพียงส่วนเดียวคือส่วนควบคุมการทำงานของจอ LCD ออกแบบให้มีขาควบคุม 3 ขาโดยใช้ P1.4, P1.5 และ P3.4 ดังรูปที่ 4.5 โดยแต่ละพอร์ททำงานดังนี้
- P3.4 เป็นส่วนที่ทำการควบคุมการจ่ายไฟเลี้ยงให้กับจอ LCD เมื่อเป็น “0” จะเป็นการ forward bias ให้กับ transister แบบ PNP ทำให้จ่ายไฟเลี้ยงจอ LCD
- P1.4 ต่อตรงเข้ากับขา RS (ขา 4 ) ของ LCD เมื่อ set เป็น “0” แสดง ว่าข้อมูลที่ส่ง ให้กับ LCD เป็น command ถ้า เป็น “1” แสดงว่าเป็น data
- P1.5 ต่อกับขา E ของ LCD เมื่อจะทำการส่ง command หรือ data จะต้องทำ การ set ค่า ให้เป็น “1”

4.3 การออกแบบโปรแกรม
โปรแกรมหลัก และโปรแกรมในส่วนแสดงหมายเลขโทรศัพท์และจับเวลาสามารถอธิบายด้วย flow chart ดังรูปที่ 4.3 และรูปที่ 4.4
image006
รูป ที่ 4.3 flow chart ของโปรแกรมหลัก
image008

...