Microcontroller

         Board Programer MCS-51 40 pin (AT89C5X)




        สำหรับเครื่องโปรแกรมไอซีผู้ที่ไม่อยากจะทำขึ้นเอง ก็สามารถจะหาซื้อได้ ซึ่งในปัจจุบันได้มีหลายบริษัทได้ทำ จำหน่ายในราคาที่ไม่แพงมากนัก ในส่วนการ ทดลองของหนังสือเล่มนี้จะไม่อ้างถึงเครื่องโปรแกรมของบริษัทใด สำหรับเครื่องโปรแกรมตัวไอซี และโปรแกรมการใช้งาน ผู้เขียนได้ดาว์นโหลด มาจากทาง อินเตอร์เน็ต ซึ่งผู้ออกแบบได้จัดทำเป็นวิทยาทานที่เวปไซด์ http://www.kmitl.ac.th/~kswichit ในการสร้างบอร์ดโปรแกรมนี้ ผู้สร้างจะต้องมีพื้นฐาน อิเล็กทรอนิกส์มาบ้างแล้วพอสมควร

วงจรและผังงาน


       จากรูปแสดงวงจรของเครื่องโปรแกรมไมโครคอนโทรลเลอร์ AT89C5X รายละเอียดการทำงานของเครื่องโปรแกรมไอซี เริ่มจาก IC3 เป็นไอซีเบอร์ AT89C51 ของ ATMEL ซึ่งจะเป็นตัวที่กำหนดการรับข้อมูลจากคอมพิวเตอร์และส่งสัญญาณควบคุมในการโปรแกรมไอซี โดยที่ IC3 ได้มีการโปรแกรมข้อมูลที่เป็นขั้นตอนการทำงานไว้ภายในแล้ว ถ้าหากตัวไอซีไม่มีข้อมูลที่โปรแกรมไว้จะไม่สามารถทำงานได้
        ทรานซิสเตอร์ TR1, TR2 ต่อเป็นวงจรทำหน้าที่ปรับระดับสัญญาณให้เหมาะสมกับมาตรฐานของ RS232 ให้รับและส่งข้อมูลแบบอนุกรม ใช้ในการเชื่อมต่อกับคอมพิวเตอร์ จะเชื่อมต่อที่ขา RxD และ TxD ของพอร์ต COM1 หรือ COM2
ที่พอร์ต P0 ของ IC3 AT89C51 จะเป็นพอร์ตรับส่งข้อมูล D0-D7 ให้กับไอซีที่จะนำมาโปรแกรม โดยมีพอร์ต P1 และ P2 บางส่วนกำหนดตำแหน่งแอดเดรส ส่วนพอร์ต P3 บางส่วน ใช้เป็นการกำหนดสัญญาณควบคุม โดยส่วนของขาเอาต์พุตของพอร์ต P0,P1, P2 และ P3 ที่ใช้งานจะต่อกับซ๊อกเกตไอซี ที่เป็นแบบ ZIP SOCKET ขนาด 40 ขา ซึ่งจะต้องนำไอซีที่ต้องการโปรแกรมนำมาเสียบไว้ ส่วนที่ขา X2 ของ IC3 จะต่อกับ ขา X1 ของไอซีที่จะนำมาโปรแกรมโดยใช้สัญญาณนาฬิการ่วมกัน
ที่ขา P3.4, P3.5, P3.6 และ P3.7 ของ IC3 จะสร้างสัญญาณเพื่อควบคุมกำหนดโหมดในการโปรแกรมต่างๆ ของขา P2.6, P2.7, P3.6 และ P3.7 ของไอซีที่นำมาโปรแกรม และเป็นส่วนของการควบคุมสัญญาณในการโปรแกรม การตรวจสอบสัญญาณที่เป็นลอจิกว่าได้เสร็จสิ้นในการเขียนข้อมูลเรียบร้อยแล้ว ส่วนขา P3.3 ของ IC3 จะต่อกับทรานซิสเตอร์ TR3 ซึ่งเป็นตัวกำหนดแรงดันไฟที่จ่ายให้กับขา EA/VPP (ขา 31ของไอซีที่จะโปรแกรม)
แหล่งจ่ายไฟของวงจรได้จากอแดปเตอร์ขนาด12 โวลต์ SW1 เป็นสวิตช์ เปิดและปิดไฟของวงจร โดยผ่านวงจรบริดจ์เรกติไฟเออร์ DB1 เพื่อจัดขั้วของอแดปเตอร์ที่ต่อเข้ากับ IC1 เบอร์ LM7805 เพื่อให้มีแรงดันเอาต์พุตคงที่ 5 โวลต์ป้อนเป็นไฟเลี้ยงให้กับวงจรโดยมี LED1 เป็นตัวแสดงสถานะการทำงาน และแรงไฟอีกส่วนหนึ่งป้อนให้กับ IC2 เบอร์ LM317 ซึ่งเป็นเรกูเรเตอร์ที่ปรับค่าแรงดันเอาต์พุตได้ ส่วนนี้จะควบคุมแรงดันเอาต์พุตโดย TR3 เพื่อเป็นการกำหนดแรงดันที่ขา EA/VPP ให้กับไอซีที่จะนำมาโปรแกรม



รูปแสดงวงจรของเครื่องโปรแกรมไอซีไมโครคอนโทรลเลอร์ AT89CX051

สัญญาณการโปรแกรมของไอซี AT89C5X


แสดงขาสัญญาณในการโปรแกรมไอซีของบริษัท ATMEL เบอร์ AT89C51, AT89C52, AT89C55

         ลำดับการโปรแกรมข้อมูลลงในหน่วยความจำแบบแฟลช์ (หน่วยความจำโปรแกรม) ของตัวไอซีในตระกูล MCS-51 ของบริษัท ATMEL เบอร์ AT89C51, AT89C52, AT89C55 นั้นจะมีกระบวนการกำหนดสัญญาณของขาต่างๆ ในการโปรแกรมดังรูปที่ 11 และแสดงโหมดต่าง ๆ ในการอ่านและเขียนข้อมูล ในรูปที่ 12 และมีกระบวนการในการโปรแกรมดังต่อไปนี้


แสดงโหมดต่างๆในการ อ่าน เขียนไอซีของบริษัท ATMEL เบอร์ AT89C51, AT89C52, AT89C55

             ขั้นตอนที่ 1 จะต้องทำการลบข้อมูลที่อยู่ในหน่วยความจำแบบแฟลช(หน่วยความจำโปรแกรม) ออกให้หมดก่อน ซึ่งสามารถทำได้ตามลำดับดังต่อไปนี้
        1.1 ป้อนสัญญาณเข้าที่ขาพอร์ต P2.6("H"),P2.7("L"),P3.6("L") และ P3.7("L") ซึ่งจะเป็นการกำหนดสัญญาณควบคุมให้มีสถานะลอจิกอยู่ในโหมด "Chip erase"
        1.2 หลังจากนั้นให้ทำการปรับระดับแรงดันไฟที่ขา EA/VPP ให้อยู่ในระดับแรงไฟเป็น 12 โวลต์ (H/12V)
        1.3 ทำการป้อนสัญญาณเข้าที่ขา ALE/PROG ให้มีสถานะลอจิก "0" เป็นเวลา 10 มิลลิวินาที
        1.4 ป้อนสัญญานให้กับขา ALE/PROG ให้มีสถานะลอจิก "1" ตามเดิม
        1.5 หลังจากนั้นทำการปรับระดับแรงดันไฟที่ขา EA/VPP ให้ลดลงเหลือระดับเดิมที่ 5 โวลต์
ในขณะนี้จะทำให้ข้อมูลในตำแหน่งหน่วยความจำแบบแฟลชทุกๆไบต์มีค่าข้อมูลเป็น FFH (11111111b) และพร้อมที่จะทำการโปรแกรมข้อมูลเข้าไปใหม่ได้

             ขั้นตอนที่ 2 เริ่มทำการเขียนข้อมูลให้กับหน่วยความจำแบบแฟลช์ (หน่วยความจำโปรแกรม) ของไอซี AT89C5X เราสามารถโปรแกรมข้อมูลลงไปที่ตำแหน่งใด ๆ ในหน่วยความจำแบบแฟลช ภายในไอซี ก็ได้ โดยทำตามลำดับดังต่อไปนี้
        2.1 ป้อนค่าตำแหน่งของหน่วยความจำที่ต้องการจะโปรแกรมไปที่ขาแอดเดรสกำหนดโดยพอร์ต P10 - P1.7 ซึ่งเป็นขาแอดเดรสของ A0-A7 และพอร์ต P2.0-P2.5 เป็นค่าของแอดเดรสของ A8-A13 ส่วนตำแหน่งของแอดเดรส A14 ต่อกับพอร์ต P3.0
        2.2 กำหนดค่าข้อมูลที่จะโปรแกรมไปที่ขา PGM DATA (P0)
        2.3 กำหนดสัญญาณที่ขาควบคุม พอร์ต P2.6("L"),P2.7("H"),P3.6("H") และ P3.7("H") ให้มีลอจิกอยู่ในโหมด "Write Code Data"
        2.4 ทำการปรับแรงดันไฟที่ขา EA/VPP ให้อยู่ในระดับแรงไฟเป็น 12 โวลต์
        2.5 ป้อนสัญญาณเข้าที่ขา ALE/PROG ให้มีสถานะลอจิก "0" ชั่วขณะ ซึ่งกำหนดให้ความกว้างของ พลัท์ในสถานะลอจิก "0" มีค่าอยู่ระหว่าง 1-110 ไมโครวินาที (tGLGH)
        2.6 ป้อนสัญญาณเข้าที่ขา ALE/PROG ให้กลับมามีลอจิก "1" ตามเดิม
        2.7 ตรวจสอบระดับสัญญาณที่ขา Ready/Busy (P3.4) โดยที่ขา P3.4 จะต้องมีค่าเป็นสถานะลอจิก "0" ขณะอยู่ในระหว่างช่วงการเขียนข้อมูล หลังจากที่ทำการเขียนข้อมูลเข้าไปเก็บไว้ในหน่วยความจำเรียบร้อยแล้ว ขานี้จะกลับมามีสถานะลอจิก "1" ตามเดิม
        2.8 ทำตามขั้นตอน 1 ถึง 7 ใหม่จนกว่าข้อมูลทั้งหมด จะถูกเขียนลงไปในหน่วยความจำแฟลช
        2.9 จากนั้นให้ลดระดับแรงดันไฟที่ขา EA/VPP ให้กลับเป็นค่า 5 โวลต์ตามเดิม

             ขั้นตอนที่ 3 การตรวจสอบความถูกต้องของโปรแกรมที่ทำการเขียนเข้าไปในหน่วยความจำของไอซี
        3.1 ทำการกำหนดค่าตำแหน่งแอดเดรสของหน่วยความจำที่พอร์ต P1.0-P1.7 และพอร์ต P2.0-P2.5
        3.2 กำหนดสัญญาณที่ขาควบคุม พอร์ต P2.6("L"),P2.7("H"),P3.6("H") และ P3.7("H") ให้มีลอจิกอยู่ในโหมด Write Code Data
        3.3 กำหนดสัญญาณที่ขา P2.7 ให้มีลอจิก "0" อยู่ในโหมด Read Code Data โดยกำหนดพอร์ต P2.6("L"),P2.7("L"),P3.6("H") และ P3.7("H")
        3.4 อ่านค่าข้อมูลที่ได้เข้ามาทางพอร์ต P0
        3.5 กำหนดสัญญาณที่ขา P2.7 ให้มีลอจิก "1" โดยให้กลับมาอยู่ในโหมด Write Code Data
        3.6 ทำการเปรียบเทียบค่าที่อ่านได้จากพอร์ต P0 กับค่าข้อมูลที่ตำแหน่งแอดเดรสเดิม ผลจาการเปรียบเทียบถ้ามีค่าข้อมูลเท่ากัน แสดงว่าตำแหน่งแอดเดรสนั้นมีค่าข้อมูลที่ถูกต้อง
        3.7 ทำตามขั้นตอนที่ 1 ถึง 6 ใหม่จนกว่าจะครบทุกแอดเดรสในหน่วยความจำ


Download  PROGRAM :: PCB

 


รูป ด้านการวางอุปกรณ์ของชุดโปรแกรม

          

การสร้าง


  ลายวงจรพิมพ์ ได้ออกแบบเผื่อไว้สำหรับตัวต้านทานบางตัวที่เป็นแบบ SMD ค่าของตัวต้านทานบางตัวอาจจะหาได้ยากเพราะเป็นแบบผิดพลาด 1เปอร์เซ็นต์ แต่ก็ใช้วิธีการดัดแปลงโ ์จะได้ดูสวยงาม และอีกอย่างหากตะไบรอบตัวต้านทานอาจทำให้ผงคาร์บอนหลุดจนหมดไป ซ็อกเกตไอซีถ้าใช้แบบ ZIP SOCKET ราคาจะค่อนข้างแพง อาจจะใช้ซ็อกเกตแบบขากลมแทนก็ได้ ที่สำคัญวงจรนี้ต้องการแหล่งจ่ายไฟที่มีค่าตั้งแต่ 12 VDC ขึ้นไป เพราะอัลกอรึทึมของไอซี AT89C5X นี้ขา EA/Vpp จะต้องใช้ไฟ 12 โวลท์ ที่ใช้ในการลบข้อมูลและการโปรแกรมข้อมูล (แนะนำให้ใช้แหล่งจ่ายไฟขนาด 15 VDC )

       

การตรวจสอบบอร์ดโปรแกรมเบื้องต้น


        1 ให้ต่อสายจากเครื่องโปรแกรมที่จะติดต่อกับคอมพิวเตอร์ที่ Port Com1 หรือ Com2 เข้ากับเครื่องโปรแกรม วิธีการต่อแสดงได้ดังรูป


การต่อสาย และการต่อเครื่องโปรแกรมกับคอมพิวเตอร์ตำแหน่ง Com1 หรือ Com2 ก็ได้


        2 เลือกใช้ โปรแกรม Ezdl4.exe บนวินโดว์ ทดสอบโดยการใช้งานโปรแกรม Ezdl4.exe จะมีไอคอนดังรูป 17 ให้ใช้เมาส์กดดับเบิลคลิกที่ไอคอนบนระบบปฏิบัติการวินโดว์ ให้เปิดสวิตซ์ที่เครื่องโปรแกรมตัวโปรแกรมจะสแกนเลือกพอร์ตสื่อสาร COM1 COM2 และขนาดของหน่วยความจำของไอซี แล้วแสดงผลเป็นเบอร์ไอซีตัวนั้น ถ้าคอมพิวเตอร์สามารถติดต่อกับเครื่องโปรแกรมที่สร้างได้สำเร็จ จะได้หน้าตาบนวินโดว์แสดงการแอคทีฟ ดังรูป


                     

ไอคอนและโปรแกรมบนวินโดว์แสดงการแอคทีฟ ในขณะที่ต่อกับเครื่องโปรแกรมไอซี


        หมายเหตุ
- โปรแกรม Ezdl4.exe สามารถ Download ได้ที่ http://www.kmitl.ac.th/~kswichit
- ลายวงจรพิมพ์สามารถ Download ได้ที่ http://www.adisak51.com หรือ http://www.adisak01.com

       

ปัญหาข้อเสนอแนะและวิธีแก้ไข


        1 บอร์ดโปรแกรมติดต่อกับคอมพิวเตอร์ไม่ได้ - ต่อสายผิด
          - ใส่ทรานซิสเตอร์ผิดขา
        2 โปรแกรมข้อมูลลงในตัวไอซีไม่ได้ - รีซิสเตอร์ 1% ได้ค่าความต้านทานไม่ตรง ส่งผลให้แรงดัน
ที่ป้อนให้กับขา EA/Vpp ไม่ถูกต้อง
          - ใช้แหล่งจ่ายไฟไม่ถึง 12 โวลท์
        3 โปรแกรมสั่งให้ล้างข้อมูลในตัวไอซีตลอด - ใช้แหล่งจ่ายไฟไม่ถึง 12 โวลท์
          - ขาของZip Socket บัดกรีไม่ดี

อุปกรณ์สารกึ่งตัวนำ
DB1 Diode Bridge W04 1 ตัว
IC1 - 7805 1 ตัว
IC2 - LM317 1 ตัว
IC3 - AT89C51 1 ตัว
TR1 BC557 1 ตัว
TR2 BC547 1 ตัว
TR3 2N2222A 1 ตัว
LED1 1 ตัว
ตัวต้านทาน
R1R10 R9 - 1K 3 ตัว
R5R6-10 K 2 ตัว
R3- 1150 1% 1 ตัว
R4- 2150 1% 1 ตัว
R5- 250 1% 1 ตัว
R7- 22 k 1 ตัว
R8- 2.2 k 1 ตัว
ตัวเก็บประจุ
C1 - 100 UF 1 ตัว
C2 C5 C3 - 10 UF 3 ตัว
C4 - 1 UF 1 ตัว
C6 C7- 33 pF 2 ตัว

อื่นๆ
x-tal 11.0592 MHz 1 ตัว
Switch on-off 1 ตัว
* Modular jack 1 ตัว
DC- jack 1 ตัว
ซ็อคเก็ต 40 ขา 2 ตัว
อแดปเตอร์ 15 โวลท์ 1 ตัว
Zip socket 40 ขา 1 ตัว
แผ่น PCBตามแบบ 1 แผ่น
DB 9 ตัวเมีย 1 ตัว * DB 9 D-09S7G
* Modular jack DEK623PCB4-BM
* CH-106 (* รหัสจากร้านอิเล็กทรอนิกส์ซอร์ส)

 

 

Designed by Adisak Chinawong