ZDP72F.TXT - โปรแกรมตัวอย่างสำหรับบอร์ด DP-72F (เมษายน 2549 โดย ปฏิคม คนเก่ง ) ตัวอย่างโปรแกรมนี้เป็นตัวอย่างการเขียนโปรแกรมด้วยภาษาซี ส่งข้อมูลแสดงผลที่บอร์ด DP-72F ต่อพ่วงกัน 4 บอร์ด ซึ่งใช้ไอซีเบอร์ TPIC6B595 เป็นตัวขับ 7-Segment ก่อนอื่นต้องขอกล่าวรายละเอียดคร่าว ๆ ของ IC เบอร์ TPIC6B595 ก่อนนะครับ ไอซีเบอร์ TPIC6B595 ประกอบด้วย 8 bit serial-in & 8 bit parallel-out shift register โดยดาต้าจะถูกส่งผ่านเข้ามาทั้ง shift register และ storage register หลังจากนั้นดาต้าที่อยู่ใน storage register ก็จะถูกส่งออก output buffer ขา SER OUT จะเป็นขาสำหรับส่งดาต้าแบบ Serial ที่ต่ออยู่กับขา SER IN ของไอซี TPIC6B595 ตัวถัดไป ซึ่งทำให้เราสามารถนำไอซีเบอร์ TPIC6B595 ต่อพ่วงกันไปได้เรื่อย ๆ ครับ การต่อบอร์ด DP-72F กับบอร์ด SLAB-51 (บอร์ด DP-72F จะมีขั้ว 3B Port ซึ่งสามารถเสียบต่อกับบอร์ด SLAB-51 ซึ่งมีขั้ว 3B Port ได้เลยทันทีครับ) การต่อพ่วงบอร์ด DP-72F นั้น จะเริ่มจากตัวแรกหรือตัวขวาสุด (หลักหน่วย) ต่อกับพอร์ตของ MCU เข้ามาทาง D-in และตัวถัดไปจะต่อ D-in เข้ามาทางขั้ว D-out ของบอร์ดแรก พ่วงกันอย่างนี้จนถึงบอร์ดสุดท้าย การต่อพ่วงบอร์ดแบบนี้ จะทำให้เราพัฒนาโปรแกรมได้อย่างยืดหยุ่นและง่ายในการจะเพิ่มหรือลดจำนวนหลักของ Display ครับ ------- ------- ------- ------- | | | | | | | | ------- <------ ------- <------ ------- <------ ------- <----- MCU | | | | | | | | ------- ------- ------- ------- DISBUF[0] DISBUF[1] DISBUF[2] DISBUF[3] ขา CLK ต่อกับ MCU P1.0 ขา STR ต่อกับ MCU P1.1 ขา DATA ต่อกับ MCU P1.4 Function ต่าง ๆ ในโปรแกรม (ดูจาก Source code ตามไปด้วยเลยนะครับ) เริ่มจากฟังก์ชั่นแรก dmsec เป็นฟังก์ชั่นสำหรับใช้หน่วงเวลา โดยมีตัวแปร count สำหรับรับค่าพารามิเตอร์เข้ามาให้ฟังก์ชั่น ถัดมาเป็นฟังก์ชั่น showdisp เป็นฟังก์ชั่นสำหรับส่งค่าออกไปแสดงผลที่บอร์ด DP-72F โดยจะส่งค่าที่เก็บอยู่ในตัวแปร DISBUF ของหลักแรกไปทีละบิตจนครบ 8 บิด ออกไปทางขา DATA และวนส่งค่าอย่างนี้เรื่อยไปจนครบทุกหลัก ซึ่งในที่นี้เราต่อพ่วงไว้ 4 บอร์ด และตัวแปร digit ก็เป็นตัวแปรที่เก็บค่าจำนวนหลักที่เราได้ประกาศไว้ก่อนแล้วในตอนต้นของโปรแกรม ต่อมาเป็น main ฟังก์ชั่น เริ่มจากอันดับแรกทำการเคลียร์ Display ก่อน โดยให้ตัวแปร DISBUF ทั้ง 4 มีค่าเป็น 0x00 (Blank) และเรียกใช้ ฟังก์ชั่น showdisp และหน่วงเวลาโดยเรียกใช้ฟังก์ชั่น dmsec หลังจากนั้นจะให้ Display ทั้ง 4 หลัก ติดทีละ Segment ตั้งแต่ a, b, c, ... pt เป็นจำนวน 3 รอบ โดยให้ตัวแปร DISBUF มีค่า เท่ากับ a ซึ่งตัวแปร a มีค่าเริ่มต้นเท่ากับ 0x01 และเลื่อนบิต a ไปทีละ 1 บิต ก็จะทำให้ Display ทั้ง 4 ติดทีละ Segment วนไป จนกระทั่งครบ 3 รอบ ต่อไปจะให้ Display ทั้ง 4 หลัก แสดงตัวเลขตั้งแต่ 0 - 9 เป็นจำนวน 3 รอบ โดยเริ่มจากให้ตัวแปร DISBUF ทั้ง 4 มีค่าเท่ากับตัวแปร SEGTAB ซึ่งเป็นตัวแปรแบบอะเรย์ เก็บค่า 0 - 9 ในฐานสิบหก เรียกใช้ฟังก์ชั่น showdisp และ dmsec เพื่อแสดงออกที่ Display วนเป็นตัวเลข 0 - 9 เป็นจำนวน 3 รอบ และสุดท้ายจะให้ Display ติดกระพริบเป็นเลข 0, 1, 2, 3 จากซ้ายไปขวา ตามลำดับ เป็นจำนวน 3 รอบ Source code โปรแกรมตัวอย่างนี้ สามารถนำไปใช้ใด้กับบอร์ด DP-74F, DP-78F และ DP-7A1F ได้เช่นกัน เนื่องจาก ใช้ไอซีเบอร์ TPIC6B595 เป็นตัวขับ Segmet และขั้วต่อ 3B Port เหมือนกันครับ...