Upload
know2pro
View
1.201
Download
0
Embed Size (px)
DESCRIPTION
เอกสาร Project แว่นตา 3 มิติknow2pro.com
Citation preview
รายงานโครงการหมายเลข COE2006-05
แวนตา 3 มต
โดย
นายเชษฐา คาเหมง รหส 463040518-9
นางสาวประดภา อรรคแสง รหส 463040532-5
รายงานนเปนรายงานโครงการของนกศกษาชนปท 4 ซงเสนอเปนสวนหนงใน
หลกสตรวศวกรรมศาสตรบณฑต
ภาควชาวศวกรรมคอมพวเตอร
คณะวศวกรรมศาสตร มหาวทยาลยขอนแกน
Project Report No. COE2006-05
3D Display Glasses
By
Mr. Chedta Khummeng I.D. 463040518-9
Miss Pradipa Akkhasaeng I.D. 463040532-5
This is the report of fourth year project assignment submitted in partial
fulfillment of the requirement for the Degree of Bachelor of Engineering
Department of Computer Engineering
Faculty of Engineering Khon Kaen University
เรอง
แวนตา 3 มต
โดย นายเชษฐา คาเหมง รหส 463040518-9
นางสาวประดภา อรรคแสง รหส 463040532-5
อาจารยทปรกษาโครงการ
.......................................
(อ.ดร.วส เชาวพานนท)
อาจารยผรวมประเมนโครงการ
1. ........................................
(อ.ดร.กตต เธยรธโนปจย)
2. ........................................
(อ.รจชย องอารณยะว)
ประเมนผล ณ วนท 12 กมภาพนธ พ.ศ. 2550
ก
บทคดยอ
โครงการนเปนการสรางแวนตา 3 มต จดทาขนเพอประโยชนในการแสดงผลภาพเปนแบบ
3 มต ซงผใชสามารถนาอปกกรณดงกลาวเพอชวยในการแสดงผลของภาพ 3 มต 2 ภาพใหเปน
ภาพ 3 มต โดยการสรางภาพและแสดงผลผานทางจอภาพทมอยทงสองตว
อปกรณมองภาพชนดนใชหลกการ Stereoscopic- vision ทาใหภาพ 2 มต 2 ภาพ
กลายเปนภาพ 3 มตได โดยอปกรณแสดงผลจะมจอแสดงผลและม ATMEL Mega32-16PI เปน
ตวควบคมการทางานของจอแสดงภาพ และเมอประกอบสวนประกอบตางๆ ใหอยในลกษณะของ
แวนตาโดยมจอแสดงภาพทเปรยบเสมอนเลนส ซงกจะไดเปนแวนตา 3 มต
ในปจจบนแวนตา 3 มตในลกษณะนมราคาทคอนขางสง โครงการนจงเปนการสราง
แวนตา 3 มตเพอใชงานในราคาทตากวา และยงเปนการศกษาการเชอมตอจอแสดงผลของ
โทรศพทมอถอชนดส เพอนาไปใชในงานลกษณะตางๆ ได
ข
Abstract
This project is creating a 3D display glasses. It is provided for useful to show the
picture in 3-dimension by transforms 2 pictures in 2-dimension to 3-dimension picture.
That creates the picture and shows it on each color LCD monitor.
By using concept of Stereoscopic vision that can see 3-dimension picture from
the equipment, which interface the LCD by using ATMEL Mega32-16PI control. Then
bring LCDs and all equipment together in glasses form to be 3D display glasses.
At present, 3D-glasses are very expensive. This project will create less cost of it.
And study how to interface color LCD display for use in any purpose.
ค
สารบญ
บทคดยอ ก
Abstract ข
สารบญ ค
สารบญรปภาพ จ
สารบญตาราง ช
บทท 1 บทนา 1
1.1 หลกการและเหตผล 1
1.2 วตถประสงค 2
1.3 ขอบเขตของโครงการ 2
1.4 แนวทางการดาเนนการ 2
1.5 แผนการดาเนนการ 2
1.6 ประโยชนทคาดวาจะไดรบ 3
บทท 2 ทฤษฏทเกยวของ 4
2.1 ระบบและการดภาพ 3 มต 4
2.1.1 ระบบภาพค (Stereo Pairs) 4
2.1.2 การดแบบขนาน ดวย Stereo Viewer 6
2.1.3 Page Flipped and Shutter Glasses 7
2.2 ทฤษฎภาพแบบ Stereoscopic vision 7
2.2.1 หลกการเกดภาพ 3 มตโดยภาพ Stereo pair 7
2.2.2 เทคนคการ Stereo pair 3 มตโดยใชกลองถายภาพ 8
2.2.3 การนาสงภาพ Stereo pair เขาสดวงตา 8
2.3 ตวอยางการเชอมตอกบจอแสดงผล LCD ชนดส 9
2.4 ลกษณะการทางานของแวนตา แบบ Shutter Glasses 9
บทท 3 อปกรณและเครองมอทใช 12
3.1 จอแสดงผลแอลซดชนดส 12
3.1.1 รายละเอยดโดยทวไป 13
3.1.2 ขาการใชงาน 14
3.1.3 หลกการทางาน 15
ง
3.2 ไมโครคอนโทรลเลอร 21
3.2.1 รายละเอยดโดยทวไป 21
3.2.2 ขาการใชงาน 22
3.2.3 หลกการทางาน 23
บทท 4 การออกแบบสวนแสดงผล 26
4.1 การออกแบบวงจรควบคมการแสดงผล 26
4.2 การออกแบบโปรแกรมควบคมการแสดงผล 27
4.2.1 การกาหนดคาเรมตนการทางานของการแสดงผล 27
4.2.2 การตงคา Power supply 28
4.2.3 การตงคาการแสดงผล 28
4.2.4 การตงคาหนวยความจา 29
บทท 5 การออกแบบสวนตดตอกบคอมพวเตอร 31
5.1 การออกแบบโปรแกรมตดตอ 31
5.1.1 รายละเอยดของโปรแกรม 31
5.1.2 การทางานของโปรแกรม 32
5.2 การตดตอกบไมโครคอนโทรลเลอร 33
5.2.1 รายละเอยดของการตดตอ 33
5.2.2 การทางานของไมโครคอนโทรลเลอร 34
บทท 6 การทดลอง 35
6.1 การพฒนาอปรณ 35
6.2 การทดสอบผลการทางาน 36
บทท 7 สรปผลการดาเนนงาน 37
7.1 ผลการดาเนนงานโครงการ 37
7.2 ปญหาในการดาเนนงานและแนวทางแกไข 37
7.3 ขอเสนอแนะและแนวทางการพฒนาตอ 37
ภาคผนวก ก 38
ภาคผนวก ข 45
บรรณานกรม 58
จ
สารบญรปภาพ
รปท 2.1 ภาพ stereo pair 4
รปท 2.2 ภาพขนาน 5
รปท 2.3 Stereo Scope 5
รปท 2.4 กลองสาหรบใชด slide 3 มต 6
รปท 2.5 ตว Screen Scope 6
รปท 2.6 การสงการของสมอง 8
รปท 2.7 การวางและการดภาพ 8
รปท 2.8 แสดงการเชอมตอของ Microcontroller 9
รปท 2.9 กลอง Shutter Glasses 10
รปท 2.10 แวนตา 3 มต ของ i-glasses 11
รปท 2.11 แวนตา 3 มต ของ i-Theater 11 รปท 3.1 จอแสดงผล LCD (EpsonS1D15G10) 12
รปท 3.2 แสดงบลอกไดอะแกรมของ EpsonS1D15G10 13
รปท 3.3 แสดงตาแหนงขาการใชงาน LCD 14
รปท 3.4 แสดงการสงขอมลแบบอนกรมเมอ SI = HIGH 16
รปท 3.5 แสดงการสงคาสงแบบอนกรมเมอ SI = LOW 17
รปท 3.6 ไมโครคอนโทรลเลอร ATmega32 21
รปท 3.7 แสดง Pinouts ทง 40 ของไมโครคอนโทรลเลอร 22
รปท 3.8 แสดงการตอครสตอล 23
รปท 3.9 แสดงโครงสรางหนวยความจา ATmega32 23
รปท 3.10 แสดงการจดการหนวยความจา SRAM 24
รปท 3.11 โครงสรางของรจสเตอรใชงานทวไป 25
รปท 3.12 รจสเตอร X, Y, และ Z 25
รปท 4.1 แสดงสวนประกอบของอปกรณในการแสดงผล 26
รปท 4.2 แสดงวงจรควบคมการแสดงผลจอ LCD ดวยไมโครคอนโทรลเลอร 27
รปท 5.1 แสดงหนาตางของโปรแกรม 31
รปท 5.2 แสดงการจดเรยงของสทอานไดจากโปรแกรม 32
รปท 5.3 แสดงการ AND เพอเกบคาสของสนาเงน 32
รปท 5.4 แสดงการ shift บต และแปลงขอมลเปน byte 32
ฉ
รปท 5.5 แสดงการจดเรยงของสททาการแปลงเรยบรอยแลว 33
รปท 6.1 แสดงการเชอมตอของอปกรณ 35
รปท 6.2 แสดงวงจรการเชอมตอของอปกรณ 35
รปท 6.3 แสดงการแสดงผลของจอแอลซด 36
รปท ผ.1 แสดงสญลกษณของโปรแกรม AVR Studio4 38
รปท ผ.2 แสดงการเลอก project ในการเรมทางานใน AVR Studio4 39
รปท ผ.3 แสดงการเลอกภาษาในการเรมเขยน project ใหมใน AVR Studio4 39
รปท ผ.4 Project option 40
รปท ผ.5 โปรแกรม PonyProg2000 41
รปท ผ.6 I/O port setup 41
รปท ผ.7 การกาหนดอปกรณใน PonyProg2000 42
รปท ผ.8 ผลการโหลด file.hex ใน PonyProg2000 43
รปท ผ.9 การโปรแกรม file.hex ทเลอกไวลงไมโครคอนโทรลเลอร 43
ช
สารบญตาราง
ตารางท 1.1 แผนการดาเนนการ 3
ตารางท 3.1 อธบายการทางานของขา LCD ไปยงไมโครคอนโทรลเลอร 14
ตารางท 3.2 แสดงการกาหนดการเชอมตอ 15
ตารางท 3.3 แสดงคาหนวยความจาเมอใช 8 gray-scale, 8-bit mode 18
ตารางท 3.4 แสดงคาสงทใชควบคมการแสดงผล 19
ตารางท 4.1 แสดงการกาหนดคาของส RGB 29
1
บทท 1 บทนา
1.1 หลกการและเหตผล ในปจจบนเทคโนโลยการแสดงผลภาพตางๆ นนกาวหนาขนเรอยๆ จากในอดต รวมไปถง
รปแบบของการแสดงผลภาพกมหลากหลายรปแบบ รปแบบการแสดงผลในลกษณะทเปน 3 มตก
เปนหนงในรปแบบการแสดงผลทเกดขนในปจจบนซงไดรบความสนใจและมการใชในอปกรณ
ตางๆ เชน ระบบจอภาพโทรทศน ระบบจอภาพยนตร ซงทาใหเกดความนาสนใจในการรบชมภาพ
ยงขน ประกอบกบในปจจบนไดมการใชจอภาพสวนบคคลในลกษณะทเปนอปกรณขนาดพกพาซง
ตดอยบรเวณศรษะโดยมจอแสดงผลอยบรเวณทครอบดวงตา ซงอปกรณลกษณะนในถกสรางขน
เพอรองรบระบบมลตมเดยเพอความบนเทงเปนสวนใหญในปจจบน แตอปกรณเหลานกยง
สามารถนามาใชงานในลกษณะอนๆ ไดเชนเดยวกบจอแสดงผลชนดอนๆ ดวยคณสมบตทมขนาด
เลกกะทดรดตอการใชงาน รปแบบการใชงานทสะดวก และมความเปนสวนบคคลในการใชงาน
เมอเรานาระบบ 3 มตประกอบเขาไปกบอปกรณนกจะเกดลกษณะการแสดงผลอกรปแบบหนงซง
มความนาสนใจในการใชงาน เราจงไดนาระบบ 3 มตมาประกอบกบอปกรณลกษณะนใหเกดเปน
แวนตา 3 มต
อกประการหนงคอ ในปจจบนระบบภาพเสมอนจรงไดเขามามบทบาทกบงานดานตางๆ
ในชวตประจาวนมากขน เปนการเพมทศนะในการมองภาพและการทางานกบเครองคอมพวเตอร
และไดถกนาไปประยกตใชกบงานตางๆ อกมากมาย ไมวาจะเปนการใชในเรยนการสอนทางดาน
การแพทย เชน การผาตด ใชในงานดานฝกหดบน และใชในการสรางบนเทง ไมวาจะเปนเกมสท
รนบนเครองชนดตางๆ และทมมานานแลวกคอ ภาพยนตร 3 มต
เนองจากสนคาทตอบสนองความตองการตามทองตลาดนนอยในรปของแวนตา 3 มต ซง
สวนมากมราคาแพง จงไมเปนทแพรหลายนก ทางคณะผจดทาจงตงใจออกแบบแวนตาทม
ความสามารถในการสรางภาพ 3 มตใหมตนทนทตาลง เพอใหบคคลทวไปทสนใจสามารถนาไปใช
งานได เราจงมแนวคดทจะสรางแวนตา 3 มตทตนทนตา ซงอาจทาใหประสทธภาพการทางาน
ลดลงแตกสามารถใชงานไดในระดบดบทแสดงภาพไดโดยใชจอ LCDทสามารถหาไดตาม
ทองตลาดมาประยกตเปนแวนตา 3 มต รวมกบทฤษฎ stereoscopic vision ทาใหการมองเหน
เปนภาพ 3 มต
อกทงโครงการนไดเลงเหนถงความสามารถในการแสดงผลของจอแสดงผลของ
โทรศพทเคลอนททวไปๆ ทมคณสมบตเปนจอ LCD ชนดส ทสามารถนามาใชแสดงผลในลกษณะ
อนไดนอกเหนอจากทใชงานเปนจอแสดงภาพใหกบโทรศพทเคลอนท ซงหากเราทราบถงวธการใน
2
การนาเอาจอแสดงผลดงกลาวเหลานนมาประยกตใชกจะเกดประโยชน สาหรบในโครงการนได
นาเอาจอแสดงผลของโทรศพทเคลอนท LCD ชนดแสดงผลเปนสจากโทรศพทเคลอนทยหอ Nokia
รน 6100 มาใชเปนจอแสดงผลใหกบแวนตา 3 มตของโครงการ
แนวคดในการทโดยใชจอแสดงผล LCD ชนดสทสามารถหาไดตามทองตลาดมาประยกต
เปนแวนตา 3 มต รวมกบทฤษฎ stereoscopic vision ทาใหเกดการมองเหนเปนภาพ 3 มต ซง
เกดเปนโครงการแวนตา 3 มตนขนมา
1.2 วตถประสงค 1. เพอสรางการเชอมตอสงขอมลภาพจากเครองคอมพวเตอรไปยงจอแสดงผลของ
โทรศพทเคลอนทรน Nokia 6100 ทเปนจอภาพชนดสได
2. เพอสรางแวนตา 3 มต ในการแสดงผลภาพในลกษณะ 3 มตทมราคาประหยดและม
ประสทธภาพ
1.3 ขอบเขตของโครงการ 1. สามารถแสดงผลภาพบนจอ LCD ชนดสได
2. สรางแวนตา 3 มตทสามารถแสดงผลภาพนงได
1.4 แนวทางการดาเนนการ ใชไมโครคอนโทรลเลอร และจอแสดงผล LCD แบบส 2 จอ ในการพฒนาอปกรณ
1.5 แผนการดาเนนการ โครงการนมระยะเวลาในการจดทา รวมทงสน 9 เดอน โดยเรมตงแตเดอนมถนายน พ.ศ.
2549 ถงเดอนกมภาพนธ พ.ศ. 2550 ซงมขนตอนดาเนนงานดงน
1. ศกษาและรวบรวมขอมลเกยวกบการสรางภาพ 3 มต และการสราง interface
2. จดหาอปกรณและสรางตวแวนตา 3 มต
3. ออกแบบสวน interface
4. เชอมตอตว interface เขากบแวนตา 3 มต
5. พฒนา interface
6. ทดสอบ ปรบปรง interface และอปกรณ
7. ทารายงานสรปผลและคมอการใชงาน
3
จากแผนการดาเนนการขางตน สามารถแสดงระยะเวลาดาเนนงานไดดงตาราง
ตารางท 1.1 แผนการดาเนนการ
1.6 ประโยชนทคาดวาจะไดรบ 1. สามารถสรางแวนตา 3 มตทสามารถแสดงผลภาพ 3 มตได
2. สามารถสราง interface ททาหนาทสงขอมลภาพจากคอมพวเตอรไปยงจอแสดงภาพ
Nokia 6100 ชนดสทใชเปนจอแสดงภาพในตวแวนตา 3 มตได
3. ไดอปกรณแสดงภาพ 3 มตทมราคาถก
ป 2549 ป 2550 ลาดบ
ท
แผนการดาเนนการ
ม.ย. ก.ค. ส.ค. ก.ย. ต.ค. พ.ค. ธ.ค. ม.ค. ก.พ.
1.
ศกษาและรวบรวมขอมล
เกยวกบการสรางภาพ 3 มต
และการสราง interface
2. จดหาอปกรณและสรางตว
แวนตา 3 มต
3. ออกแบบสวน interface
4. เชอมตอตว interface เขากบ
แวนตา 3 มต
5. พฒนา interface
6. ทดสอบ และปรบปรง
interface และอปกรณ
7. ทารายงานสรปผลและคมอ
การใชงาน
4
บทท 2
ทฤษฏทเกยวของ
2.1 ระบบและการดภาพ 3 มต ภาพ 3 มตมการสรางและดภาพหลายระบบแตละระบบกมกระบวนการทแตกตางกน
จากหลกการนาไปสวธการของการบนทก/ดภาพทแตกตางกน ทาใหคาใชจายในแตละระบบม
ความแตกตางกนอยางมาก บางระบบระบบมคาใชจายทถกอาจไมตองมการลงทนอะไรมากมาย
แคกลองถายรปทมอย เทคนคการถายภาพ 3 มตทถกตอง รวมกบเทคนคการมองภาพ 3 มตก
สามารถใชเปนระบบภาพ 3 มตไดแลว ในขณะทระบบทมความทนสมยทตองใชอปกรณทม
คณภาพสงและเทคโนโลยสมยใหมทมคาใชจายสง ระบบกจะมราคาทสงตามไปดวย ซงระบบการ
ดภาพ 3 มตมดงน
2.1.1 ระบบภาพค (Stereo Pairs) Stereo Pairs คอการถายภาพ 2 ภาพ ทมความหางทพอเหมาะหลงจากการไดมาของ
ภาพทง 2 ภาพ เราสามารถดภาพ 3 มตไดโดยการนาภาพทง 2 ภาพเขาสดวงตาของมนษยดวย
วธการทเหมาะสมไดหลายวธตวอยางเชนดงน
2.1.1.1 การดแบบสลบตาดวยตาเปลา (Cross-Eye View)
การดภาพ Stereo pair นนสามารถดไดโดยไมตองอาศยเครองมอชวย โดยการวางภาพ
ขวาไวดานซายและวางภาพซายไวดานขวา จากนนใชตาขวาดภาพดานซาย และใชตาซายดภาพ
ดานขวา เมอเรมดภาพภาพทงสองจะคอยๆ เคลอนเขาหากน จนเกดการ 'รวม (fused)' ของภาพ
และเกดเปนภาพ 3 มต เนองจากการดภาพดวยตาเปลานน อาจทาใหเกดการลาของกลามเนอตา
และอาจเกดการเวยนหรอปวดศรษะไดจงควรคอยๆ ฝกไปจนชานาญ คนบางคนมความสามารถ
ในการมองภาพ 3 มต ไดเรวกวาคนอน ลกษณะของภาพแบบ stereo pair แสดงในรปท 2.1
รปท 2.1 ภาพ stereo pair
5
เพอชวยการมองงายขน ใหมองภาพนโดยใหดงจมกอยตรงกลางระหวางวงกลม และใช
นวชชไปทกงกลางภาพ ใชตาทงสองจองมองปลายนว แลวคอยๆเลอนนวชเขามาหาดงจมกอยาง
ชาๆ โดยทตาทงสองยงจองมองปลายนวอย ภาพของวงกลมทงสองนนจะคอยๆเลอนเขาหากน
จนกระทงรวมเปนหนง เราจะสามารถมองเหนดาวสเหลองลอยขนมาอยเหนอวงกลมสนาเงน
2.1.1.2 การดแบบขนานดวยตาเปลา (Parallel View)
การดแบบขนานนเปนการดภาพในลกษณะปกต กลาวคอภาพดานซายจะอยทางซาย
และดดวยตาซาย สวนภาพดานขวาจะอยทางขวาและดดวยตาขวา
เทคนคการดภาพแบบขนาน มดงน
1. เลอนหนาเขาไปจองภาพใกลๆ
2. คอยๆ เลอนศรษะถอยออกจากภาพอยางชาๆ
3. ขณะเลอนศรษะถอยหลง ใหใชตาทงสองขาง มอง 'ทะล' ภาพไป เหมอนกบวา
มจดโฟกสอยดานหลงของภาพ
4. เมอเรมเหนภาพ 3 ภาพ ใหพยายามจองไปยงภาพทอยตรงกลาง จนกระทงตา
สามารถปรบได และมองเหนภาพ 3 มต
ตวอยางของภาพขนาน แสดงดงรปท 2.2
รปท 2.2 ภาพขนาน
ถายงมปญหาในการดภาพชนดน เราสามารถใชเครองมอชวยในการมองภาพแบบขนาน
ไดเครองมอดงกลาวเรยกวา Stereo Scope ดงรปท 2.3
รปท 2.3 Stereo Scope
6
Stereo Scope แบบนใชดภาพ 3 มตทพมพออกมาแลว และใชในการแปลภาพถายทาง
อากาศทเปนภาพ 3 มต
2.1.2 การดแบบขนาน ดวย Stereo Viewer
Viewer ในทองตลาดมหลายแบบและหลายราคา บางแบบใชดภาพขนาดเลก ในขณะท
บางแบบสามารถใชดภาพ 3 มตขนาดใหญได
หลกการของ Viewer หรออปกรณดภาพ 3 มต กคอการแยกการมองของตาแตละขางให
สามารถเหนและโฟกสรปซาย-ขวาทเหมาะสม ตวอยางเชนภาพถายทางอากาศทเปน 3 มตทได
จากการถายภาพในลกษณะตงฉากกบพนโลกในลกษณะตอเนองในแนวบน ภาพทอยลาดบ
ตดกนจะมพนททซอนทบกนได เมอนาภาพ 2 ภาพนมาวางเรยงกนในแนวซาย-ขวา และปรบ
ระยะหางใหพอเหมาะกจะสามารถใชแวน 3 มต (แบบทมขา แสดงในรปท 2.3) ดออกมาเปน 3
มตได
กลองดสไลด 3 มต (รปท 2.4) เปนกลองทมความสะดวกในการดภาพมากทสดแบบหนง
เนองจากผดไมตองกงวลกบระยะหางระหวางภาพเหมอนกบการดภาพถายทางอากาศแคใสภาพ
ซาย-ขวาใหถกตองกเพยงพอแลว
รปท 2.4 กลองสาหรบใชด slide 3 มต
ในการดภาพจากจอคอมพวเตอรนนกเปนอกวธการหนง ซงกลองสองจอคอมพวเตอร 3
มต จะยงยากกวากลองดภาพถายทางอากาศ เนองจากตองตดตงกบจอคอมพวเตอรแลวปรบให
แนวการดใหตงฉากกบพนจอ การดภาพจากจอคอมพวเตอร เปนเวลานานๆ อาจทาใหปวดตาได
โดยเฉพาะจอทม refresh rate ทตา ดงนนจงตองจาเปนตองมตว Screen Scope สาหรบไวดภาพ
3 มต บนจอ monitor ลกษณะของตว Screen Scope แสดงดงรป 2.5
รปท 2.5 ตว Screen Scope
7
2.1.3 Page Flipped and Shutter Glasses การใช Shutter Glasses ในการดภาพ 3 มตไดรบความนยมเพมขน แวนตาดงกลาวม
Electronic Shutter ทจะทาหนาท 'เปด' และ 'ปด' ในความถเดยวกนกบ ภาพทแสดงบนจอ
Monitor การ เปด/ปด นจะใชสญญาณไฟฟาในการทาให Liquid Crystalsเปลยนคณสมบตจาก
'โปรงแสง' เปน 'ทบแสง' เพออนญาตใหตาเพยงขางเดยว มองเหนภาพทถกตอง บนจอ Monitor
Shutter ดานซายของแวนจะเปดในเวลาเดยวกนกบทภาพดานซายแสดงบนจอภาพ
จากนน Shutter ดานขวาของแวนจะเปดในเวลาเดยวกนกบทภาพดานขวา แสดงบนจอภาพ โดย
ในขณะท Shutter ขวาเปดนน Shutter ดานซายจะปด เปนการเปดปดสลบกนไปตามความถของ
การสลบภาพ ความถนตองสงพอทจะหลอกประสาทตาใหมองเหนภาพทงสองในเวลาเดยวกน
และเหนเปนภาพ 3 มต ในกรณทความถตาเกนไป จะทาใหเหนเปนการกะพรบของภาพแทน
2.2 ทฤษฎภาพแบบ Stereoscopic vision Stereoscopic vision นนเปนลกษณะเกดภาพ 3 มตโดยมหลกการคอการมองวตถชน
เดยวในมมทแตกตางกนจาก 2 มมของดวงตามนษย ซงตาซายและตาขวาจะมองเหนภาพใน
ลกษณะทตางกนเลกนอย ซงจะทาใหสมองประมวลผลภาพทเหนของมามสวนของความลก
เกดขนกลายเปนภาพ 3 มตขนมา
Stereoscopic vision นนจะเปนหลกการเกดภาพ 3 มต ทวาดวยภาพ 2 ภาพ ซงการ
ไดมาของภาพนนสวนใหญกจะเปนภาพถายทถายจากกลอง 2 ตวทวางหางกนเปนระยะเทากบ
ระยะหางของลกตาซายและขวาของคนทวไปคอประมาณ 6.5 เซนตเมตร (หรอตามสตรคานวณ)
ทาใหไดภาพ 2 ภาพจาก 2 มมกลอง แลวจงนาภาพทง 2 นนนาสงเขาสตาทงสองดวยวธตางๆ
2.2.1 หลกการเกดภาพ 3 มตโดยภาพ Stereo pair หลกการอยางงายของการมองภาพใหเกดภาพเปน 3 มตนน คอ การทมนษยม 2 ตา การ
ทสามารถมองเหนภาพตางๆ เปน 3 มตไดนนเกดจากมมมองของสายตาทเหนภาพของวตถ เมอ
มองวตถดวยตาขางใดขางหนงเพยงขางเดยว จะไมสามารถมองใหเปน 3 มตไดเพราะจะขาดสวน
ลกของภาพอกดานหนงไป
ดงรปท 2.1 จะเหนวาตาแตละขางจะมมมมองตางกน ถาหากปดตาทละขาง คอ เมอปด
ตาขางขวาและมองวตถดวยตาซายจะมองเหนดานขาง (สวนลก) ดานซายของวตถ และหากปด
ตาซายใชตาขางขวามองวตถจะมองเหนดานขาง (สวนลก) ดานขวา จากนนเมอลมตา 2 ขาง
พรอมกน ตาแตละขางจะมองเหนวตถทง 2 ดานคอดานซายและขวาพรอมกน ภาพทมองเหนจาก
ตาทงสองขางนจะผานไปสกระบวนการของสมองทจะรวมและประมวลผลภาพทงสองใหเปนรป
8
เดยวกน ทาใหภาพของวตถทมองเหนมตของวตถนนๆ โดยอาศยหลกการมองเหนของตามนษยน
เองจงสามารถจาลองการมองภาพทวไปใหเปนภาพ 3 มตได
รปท 2.6 การสงการของสมอง
2.2.2 เทคนคการ Stereo pair 3 มตโดยใชกลองถายภาพ การถายภาพ 3 มตมหลกการคอ ถายภาพจานวน 2 ภาพของวตถเดยวกนในเวลาเดยวกน
ในมมทตางกนเลกนอย หลงจากนนจงใชเทคนคของการดภาพ 3 มตวธใดวธหนง เชน เทคนคการ
ดดวยตาเปลา การใชอปกรณ Stereo Scope (อปกรณชวยในการดภาพ Stereo pair) และภาพท
ตามองเหนนจะถกสงไปยงสมองเพอใหประมวลผลภาพทมองเหนเปนภาพในลกษณะทเปน 3 มต
2.2.3 การนาสงภาพ Stereo pair เขาสดวงตา เมอไดภาพ Stereo pair มาแลว การทจะสามารถมองเหนภาพใหเปนลกษณะของ 3 มต
นน ดงรปท 2.7 เปนการแสดงการนาภาพเขาสดวงตาทงสอง
รปท 2.7 การวางและการดภาพ
9
2.3 ตวอยางการเชอมตอกบจอแสดงผล LCD ชนดส การเชอมตอสามารถใช Microcontroller มาชวยในการควบคม โดยการสงขอมลไปยง
MCU แลว MCU จดการกบขอมลภาพทไดรบมานนสงไปยง chip control เพอสงภาพไปแสดงผล
บนจอ LCD ตอไป
หนาจอของโทรศพทเคลอนท Nokia 6100 LCD ทใช Epson S1D15G10 Chipset และม
ตวควบคม ATMEL AVR ATmega32 เปน Microcontroller (ผทดลองทาคอ Refik)
[http://www.e-dsp.com/controlling-a-color-graphic-lcd-epson-s1d15g10-controller-with-
an-atmel-avr-ATmega32l]
ดงรปท 2.8 แสดงการสงสญญาณจาก Microcontroller ไปยงจอ LCD ผานทาง
สายสญญาณ 4 สาย
รปท 2.8 แสดงการเชอมตอของ Microcontroller
10
2.4 ลกษณะการทางานของแวนตา แบบ Shutter Glasses
การใช Shutter Glasses ในการดภาพ 3 มตไดรบความนยมเพมขน แวนตาดงกลาวม
Electronic Shutter ทจะเปดและปดในความถเดยวกนกบภาพทแสดงบนจอ Monitor การเปดปด
นจะใชสญญาณไฟฟาในการทาให Liquid Crystals เปลยนคณสมบตจากโปรงแสงเปนทบแสง
เพออนญาตใหตาเพยงขางเดยวมองเหนภาพทถกตองบนจอภาพ
รปท 2.9 กลอง Shutter Glasses
Shutter ดานซายของแวนจะเปดในเวลาเดยวกนทภาพดานซายแสดงบนจอภาพ จากนน
Shutter ดานขวาของแวนจะเปดในเวลาเดยวกนทภาพดานขวาแสดงบนจอภาพ (Shutter
ดานซายจะปด) ความถของการสลบภาพตองสงพอทจะหลอกประสาทตาใหมองเหนภาพทงสอง
ในเวลาเดยวกนและเหนเปนภาพ 3 มต ในกรณทความถตาเกนไปจะเหนการกะพรบ (flickering)
ของภาพแทน
ซงในปจจบนแวนตาประเภทนกไดถกผลตออกมาจาหนายในทองตลาดทวไป แตจะม
ราคาทคอนขางสง(หลกหมนบาทขนไป) ซงแวนตาเหลานนกจะมฟงกชนการใชงานในรปแบบ
ตางๆ เชน บางรนทามาเพอรองรบเกม 3 มต บางรนทามาเพอรองรบระบบมลตมเดยเพอความ
บนเทง เปนตน
11
ตวอยางแวนตา 3 มตทมจาหนาย
3D HMD ของบรษท i-glasses video 3D pro เปนแวน
สาหรบใชในการด video มความละเอยด 1.44 ลาน pixel ตอ
หนาจอ
คณสมบตทวไปของ 3D HMD
• Resolution: 800 x 600
• Color Depth: 256 Levels per Color (True 24 Bit)
• Focus: 13' TBR
• Eye Relief: 25mm
• Contrast Ratio: 75 to 1
• Audio: Full Stereo
• Weight: < 8 Ounces
• Audio Cable: Red and White RCA connectors
• PAL/NTSC/SECAM: Composite or S-video Input
• Input Frequency: 50 or 60 Hz (25 or 30 Hz
Interlaced)
รปท 2.10 แวนตา 3 มต ของ i-glasses
i – Theater
คณสมบตทวไปของ i - Theater
• Display Resolution: 230,000 Pixels per LCD (320 X
240)
• Field of View: 25 Degrees Diagonal
• Weight: 3.5 oz. (without cable)
• Video Signal: NTSC / PAL / SECAM
• Virtual Image Size: 50 inches as seen from 8.5 feet
• Power Consumption: Less than 450mW
• Battery Life: 6-8 hours
รปท 2.11 แวนตา 3 มต ของ i-Theater
12
บทท 3 อปกรณและเครองมอทใช
3.1 จอแสดงผลแอลซดชนดส จอแสดงผลแอลซดชนดสนเปนของบรษท Epson มคณสมบตทวไปคอไดทาการตดตงชพ
EpsonS1D15G10 เขากบสวนของตวหนาจอ และมสวนเชอมตอ 2 ชดสาหรบตอเขากบสวน
ควบคมตดตอกบภายนอก มเอาทพตขนาด 132 แถว และ 132 คอลมน ใน 1 พกเซล ของจอ LCD
ตองการพนทในหนวยความจา 4 bits ทาใหมหนวยความจาในการแสดงผลขอมลเทากบ 396 ×
132 × 4 = 209,088 bits สามารถแสดงผลของสได 256 สจาก 4096 ส หรอแสดงผลของสทงหมด
4096 ส กาลงไฟทตองการภายในวงจรอยระหวาง 2.6V ถง 3.3V (VDD–GND=2.6V to 3.3V) ดง
รปท 3.1
รปท 3.1 จอแสดงผล LCD (EpsonS1D15G10)
เปนอปกรณของโทรศพทเคลอนท (Nokia6100) ซงหาซอไดทวไปและสามารถแสดงผลใน
ลกษณะทมความละเอยดเพยงพอในการใชงาน
13
3.1.1 รายละเอยดโดยทวไป EpsonS1D15G10 เปนชพทออกแบบมาเพอควบคมการแสดงผลขอมลบนจอ LCD
Display ขนาด 132 แถว x 132 คอลมน สามารถตอไดโดยตรงกบ 8/16-bit parallel 80 และ 68
series
บลอกไดอะแกรมแสดงการเชอมตอของสวนตางๆ ของหนวยความจา สวน Pinouts ททา
การสงสญญาณการทางาน และสวน MPU ดงแสดงในรปท 3.2
รปท 3.2 แสดงบลอกไดอะแกรมของ EpsonS1D15G10
14
3.1.2 ขาการใชงาน สวนควบคมตดตอกบภายนอกชดแรกมลกษณะเปน socket สาหรบตอเขากบบอรดของ
โทรศพทเคลอนทเพอใชงานได จดนมขาอย 10 ขา สวนอกชดหนงมลกษณะขาเปนแผนทองแดง
ในจดนมจดเชอมตออย 9 จดซงตดขาทไมไดใช (ขา 7) ออกไป ตาแหนงการใชงานของขาท
เชอมตอออกมาจากชพซงจะทาการเชอมตอกบไมโครคอนโทรลเลอรมการแสดงไวดงรปท 3.3
รปท 3.3 แสดงตาแหนงขาการใชงาน LCD
ตารางท 3.1 อธบายการทางานของขา LCD ไปยงไมโครคอนโทรลเลอร
ตาแหนงขา รายละเอยด
1 VDD 3.3V ขาขบแรงดน 2.6-3.3V
2 /Reset ขารเซต
3 SDATA ขารบขอมล
4 SCLK ขาขบสญญาณนาฬกา
5 /CS ขา Chip Select
6 VLCD 3.3V ขาขบแรงดน 2.6-3.3V
7 NC -
8 GND กราวน
9 LED- กราวน
10 LED+ (6V) ขาขบแรงดน Black Light 6V
15
3.1.3 หลกการทางาน 3.1.3.1 การเลอกการเชอมตอกบ MCU
Epson S1D15G10 สงขอมลผานทาง 8/16-bit bi-direction data bus หรอ serial data
input ซงสามารถเลอกไดโดยการกาหนดคาของ IF1, IF2 และ IF3 ดงแสดงในตารางท 3.2
ตารางท 3.2 แสดงการกาหนดการเชอมตอ
ความสมพนธระหวาง Data bus กบ Gradation Data
S1D15G10 สามารถแสดง 256 ส (8 gray-scale) จาก 4096 ส หรอจะใช 4096 ส (16
gray-scale) โดยเมอแสดง 256 ส จะใชการผสมสของ R, G และ B แตถาแสดง 4096 ส ซงมอย 2
โหมดคอ A และ B จะขนอยกบ data bus และ RGB ซงใชคาสงควบคม data control ในการ
เลอกโหมดเพอสบเปลยนระหวางแตละโหมด
3.1.3.1.1 แสดง 256 ส จาก 4096 ส
- แบบ 8-bit
D7, D6, D5, D4, D3, D2, D1, D0: RRRGGGBB (8 bits) ขอมลจะแปลงเปน
RRRRGGGGBBBB (12 bits)
- แบบ 16-bit
D15, D14, D13, D12, D11, D10, D9, D8: RRRGGGBB (8 bits)
D7, D6, D5, D4, D3, D2, D1, D0: RRRGGGBB (8 bits)
ขอมล 2 พกเซล จะแปลงเปน RRRRGGGGBBBB (12 bits)
16
3.1.3.1.2 แสดง 4096 ส Type A - แบบ 8-bit
D7, D6, D5, D4, D3, D2, D1, D0: RRRRGGGG (8 bits) 1st write
D7, D6, D5, D4, D3, D2, D1, D0: BBBBRRRR (8 bits) 2nd write
D7, D6, D5, D4, D3, D2, D1, D0: GGGGBBBB (8 bits) 3rd write
- แบบ 16-bit
D15, D14, D13, D12, D11, D10, D9, D8, D7, D6, D5, D4, D3, D2, D1, D0:
RRRRGGGGBBBBXXXX (12 bits) Type B - แบบ 8-bit
D7, D6, D5, D4, D3, D2, D1, D0: XXXXRRRR (4 bits) 1st write
D7, D6, D5, D4, D3, D2, D1, D0: GGGGBBBB (8 bits) 2nd write
- แบบ 16-bit
D15, D14, D13, D12, D11, D10, D9, D8, D7, D6, D5, D4, D3, D2, D1, D0:
XXXXRRRRGGGGBBBB (12 bits)
3.1.3.2 9-bit Serial Interface
จะมการสงขอมลทละ 9 bits โดยรปแบบของคาสงจะถกแบงเปน 2 โหมด คอ ถา D/C
เปน ‘0’ ไบตปจจบนจะถกแปลโดยมองวาเปนไบตคาสง แตถา D/C เปน ‘1’ ไบตนจะถกเกบใน
หนวยความจาสาหรบแสดงผล ตวนบตาแหนงจะมการเพมคาทกๆ ไบตทเพมขน
ระดบสญญาณจะถกอาน ณ ตาแหนงบตสดทายของไบตขอมล ซงคาสงแตละคาสง
สามารถสงดวยลาดบใดกได โดยท MSB จะถกสงไปกอน
เมอมการเขามาของขอมล (parameters) : SI = HIGH ทขอบขาขนแรกของ SCL
รปท 3.4 แสดงการสงขอมลแบบอนกรมเมอ SI = HIGH
17
เมอมการเขามาของคาสง (parameters) : SI = LOW ทขอบขาขนแรกของ SCL
รปท 3.5 แสดงการสงคาสงแบบอนกรมเมอ SI = LOW
3.1.3.3 หนวยความจาขอมล (Display Data RAM : DDRAM)
หนวยความจามความสามารถในการจดเกบขอมล (dot data) ขนาด 396x132x4 bits ซง
จะเขาถง bit ทตองการโดยการระบ page address และ column address
หนวยความจาของ S1D15G10 จะถกแบงออกเปนบลอก แตละบลอกม 4 line โดยการ
read และ write ไปยงหนวยความจาและจากหนวยความจาจะทาผานทาง I/O buffer circuit
18
ตารางท 3.3 แสดงคาหนวยความจาเมอใช 8 gray-scale, 8-bit mode
แตขอมลส RGB ทถกเกบไวใน D7 ถง D0 จะถกแปลงเปน 4 bits กอนทจะ write ลงไป
บนหนวยความจา ซงสามารถเปลยนตาแหนงของ R และ B ดวยคาสง DATCTR
19
3.1.3.8 คาสงควบคมการทางาน
ตามตารางนจะเปนคาสงในการควบคมการสงสญญาณโดยใชการเชอมตอแบบ 80
series
ตารางท 3.4 แสดงคาสงทใชควบคมการแสดงผล
20
3.1.3.4 การควบคม Page Address
เปนการควบคม Address ทศทางของ Page เมอ MPU เขาถง DDRAM หรอเมออาน
ขอมลจาก DDRAM เพอแสดงภาพบน LCD
การระบขอบเขตของ Page Address (start และ end page) จะใชคาสง PASET (page
address set) เมอทศทางของ page ทตองการทาการ scan ถกระบดวยคาสง DATCTR (data
control) โดย address จะเพมขนจาก start ไปจนถง end ของ page ซง column address จะ
เพมขนทละ 1 และ page address จะกลบมาท start page
หนวยความจาสนบสนน 132 lines จงทาให page ทงหมดเปน 132
3.1.3.5 การควบคม Column Address
เปนการควบคม Address ทศทางของ column เมอ MPU เขาถง DDRAM สามารถระบ
ขอบเขตของ Column Address (start และ end column) จะใชคาสง CASET (column address
set) เมอทศทางของ column ทตองการทาการ scan ถกระบดวยคาสง DATCTR (data control)
โดย address จะเพมขนจาก start ไปจนถง end ของ column ซง page address จะเพมขนทละ
1 และ column address จะกลบมาท start page
3.1.3.6 I/O Buffer Circuit
เปน bi-directional คอม 2 ทศทาง เมอ MPU ทาการ read และ write จาก DDRAM
3.1.3.7 Block Address Circuit
ในสวนนมความสมพนธกบ page บน DDRAM ซง process ของสญญาณสาหรบ liquid
crystal display เปน 4-page (block)
21
3.2 ไมโครคอนโทรลเลอร ไมโครคอนโทรลเลอร AVR ATmega32-16PI
รปท 3.6 ไมโครคอนโทรลเลอร ATmega32
ไมโครคอนโทรลเลอร ATmega32 เปนสวนททาหนาทรบเอาทพดทเปนรปภาพจาก
คอมพวเตอรเพอนาไปแสดงผลยงจอแสดงผล
3.2.1 รายละเอยดโดยทวไป - สถาปตยกรรมภายในถกออกแบบใหใชสถาปตยกรรมแบบ RISE (Reduce Instruction
Set Computer ) คอ ทาใหการประมวลผลมความเรว 1 คาสง / 1 Clock หรอ CPU สามารถ
ประมวลผลคาสงได 1 MIPS / MHz
- หนวยความจาแบบ FLASH สาหรบบนทก Program memory ขนาด 32 Kbytes
- หนวยความจาแบบ EEPROM สาหรบบนทก Data memory ขนาด 1024 Byte
- หนวยความจาแบบ RAM ขนาด 2 KBytes
- ตวเปรยบเทยบสญญาณอะนาลอก
- TIMER / COUNTER ขนาด 16 บต 1 CHANNEL
- TIMER / COUNTER ขนาด 8 บต 2 CHANNEL
- มระบบการตรวจจบการทางานผดพลาดของหนวยประมวลผล (Watchdog Timer with
On Chip Oscillator)
– ระบบการสอสารแบบซงโครนส (SPI) 1 ชองสญญาณ
– ระบบการสอสารแบบอะซงโครนส (USART)
- Operating Voltages : 4.5 - 5.5V
– Clock : 0 - 16 MHz
22
3.2.2 ขาการใชงาน
รปท 3.7 แสดง Pinouts ทง 40 ของไมโครคอนโทรลเลอร
VCC ขาจายกระแส
GND ขากราวน
Port A (PA7..PA0) พอรต A เปนอนพตสญญาณอะนาลอกไปยง A/D Converter
Port B (PB7..PB0) พอรต 2 ทศทางขนาด 8 บต คอ แตละบตของพอรตเปนอนพต
หรอเอาทพทกได
Port C (PC7..PC0) พอรต 2 ทศทางขนาด 8 บต คอ แตละบตของพอรตเปนอนพต
หรอเอาทพทกได
Port D (PD7..PD0) พอรท 2 ทศทางขนาด 8 บต คอ แตละบตของพอรทเปนอนพต
หรอเอาทพทกได
RESET ขารเซต
XTAL1 ขาอนพตของออสซลเลเตอรและอนพตของสญญาณคลอก
ภายในตวชพ
XTAL2 ขาเอาทพทของออสซลเลเตอร
AVCC ขาจายกระแสสาหรบพอรท A และ A/D Converter
AREF ขาอางองสญญาณอะนาลอกสาหรบ A/D Converter
23
3.2.3 หลกการทางาน 3.2.3.1 ครสตอล ออสซลเลเตอร
การกาหนดคลอกในการประมวลสญญาณของไมโครคอนโทรลเลอร สามารถกาหนดได
โดยการตอครสตอลเขากบออสซลเลเตอรทางขา XTAL1 และ XTAL2 ดงรปท 3.8 ซงจะเปนการให
ความถทเทากบตวครสตอลททาการตอเพมเตมเขาไป
รปท 3.8 แสดงการตอครสตอล
3.2.3.2 หนวยความจา flash
หนวยความจาของ ATmega32 ไดแบงพนทเปน Data Memory และ Program Memory
ในการบนทกโปรแกรมจะใชหนวยความจาแบบ flash ซงจะแบงออกอกเปน 2 สวน คอ สวน Boot
Program และ สวนApplication Program
รปท 3.9 แสดงโครงสรางหนวยความจา ATmega32
24
3.2.3.3 หนวยความจา SRAM
หนวยความจา Data Memory ถกจดไว 2144 โดยถกแบงเปนพนทของรจสเตอรใชงาน
ทวไปและรจสเตอร I/O 96 ตาแหนง สวนทเหลอ 2048 ตาแหนงเปนหนวยความจาภายใน SRAM
การเขาถงขอมลถกแบงออกเปน 5 สวน คอ Direct, Indirect with Displacement Indirect,
Indirect with Pre-decrement, และ Indirect with Post-increment
รปท 3.10 แสดงการจดการหนวยความจา SRAM
3.2.3.4 รจสเตอรใชงานทวไป
รจสเตอรทงหมดสามารถใชชดคาสงเพอเขาถงไดโดยตรงและใชเวลาในการเขาถงเพยง 1
cycle โครงสรางของรจสเตอรใชงานทวไปจะมรจสเตอรทสามารถใชงานเปนรจสเตอรคเพอทา
หนาทเปนตวชขอมลทอยในหนวยความจา ซงรจสเตอรกลมนคอ X, Y, และ Z การประมวลผลของ
ALU สามารถสอสารขอมลโดยตรงกบรจสเตอรใชงานทวไป โดย ALU ไดจดแบงระบบการจดการ
ขอมลไว 3 สวน คอ สวนของการจดการทางคณตศาสตร สวนของการกระทาทางลอจก และสวน
ของการกระทากบบต
25
รปท 3.11 โครงสรางของรจสเตอรใชงานทวไป
รจสเตอร R26 – R31 สามารถนามาตอกนเพอเปนรจสเตอรคเพอทาเปนตวชขอมลทอย
ในหนวยความจา ซงรจสเตอรกลมนใชชอวา
รปท 3.12 รจสเตอร X, Y, และ Z
3.2.3.5 หนวยความจา I/O
ตาแหนงของรจสเตอร I/O สามารเขาถงโดยคาสง IN และ OUT มการถายโอนขอมล
ระหวางรจสเตอรใชงานทวไป 32 ตวและรจสเตอร I/O ซงรจสเตอร I/O ม address อยในชวง $00
- $1F สามารถเขาถงไดโดยตรงโดยใชคาสง SBI และ CBI
26
บทท 4 การออกแบบสวนแสดงผล
4.1 การออกแบบวงจรควบคมการแสดงผล อปกรณทใชในการแสดงผลประกอบดวยอปกรณหลก 2 สวน ไดแก ไมโครคอนโทรลเลอร
และจอ LCD ชนดส 2 จอ ATmega32 LCD Nokia 6100
รปท 4.1 แสดงสวนประกอบของอปกรณในการแสดงผล
สวนของการออกแบบวงจรสาหรบแสดงผลในสวนของการตดตอระหวาง
ไมโครคอนโทรลเลอรกบจอ LCD นนแสดงไวดงรปท 4.2
27
รปท 4.2 แสดงวงจรควบคมการแสดงผลจอ LCD ดวยไมโครคอนโทรลเลอร
การรบสญญาณจากไมโครคอนโทรลเลอรเพอทาหนาทในการควบคมการแสดงผลของจอ
LCD ทงสอง โดยมสญญาณทใชอย 4 สญญาณดวยกน คอ RESET, SDATA, SCLK และ CS
สงออกจากพอรท C ซงไมโครคอนโทรลเลอรนนใช Vcc = 5V ดงนนจงใช voltage divider ในการ
ลดแรงดนของสญญาณกอนทจะสงไปยงจอ LCD
4.2 การออกแบบโปรแกรมควบคมการแสดงผล เมอจายกระแสไปยงจอแอลซดจะตองทาการรเซตหนาจอ ซงตองสงลอจก 0 ไปยงขา
RES ของจอแอลซด (RES = LOW)
4.2.1 การกาหนดคาเรมตนการทางานของการแสดงผล 4.2.1.1 คาสง Display control
การแสดงผลจะตองทาการสงคาสง DISCTL เพอเปนการกาหนด timing-relate ซงตองสง
คาพารามเตอร 3 ตว พารามเตอรแรก (P1) จะเปนการกาหนดอตราสวนของ CLK พารามเตอรตว
ทสอง (P2) จะกาหนดคา Drive duty และพารามเตอรตวสดทาย (P3) จะเปนการกาหนดจานวน
reverse rotation ของ line ซงจะตองทาการกาหนดกอนทจะเขาส SLPOUT โดยจะตองไมมการ
เปลยนแปลงคาสงในขณะททาการแสดงผล
28
4.2.1.2 คาสง Common scan
การใชคาสง COMSCAN เพอเปนการระบทศทางการ scan เอาทพต ซงตองสง
คาพารามเตอรในการระบทศทาง 1 พารามเตอร
4.2.1.3 คาสง Sleep-out
ใชคาสง SLPOUT เพอเปนการสงใหสงลอจก HIGH ไปยงขา LSP
4.2.2 การตงคา Power supply 4.2.2.1 คาสง Electronic volume control
ใชคาสง VOLCTR เพอระบคาของวงจร voltage regulator โดยตองสงคาพารามเตอร 2
ตว พารามเตอรแรกใชกาหนด volume value α พารามเตอรตวทสองใชกาหนดอตราสวนของ
ความตานทานใน voltage regulating
4.2.2.2 คาสง Power control
คาสง PWRCTR เปนคาสงทใชการกาหนดการ เปด-ปด จอแสดงผล การ booster/step-
down ของวงจร และวงจร voltage follower ตองสงคาพารามเตอร 1 ตวเพอระบสถานะการ
ทางาน
4.2.3 การตงคาการแสดงผล 4.2.3.1 คาสง Inverse of display
ใชคาสง DISINV เพอกลบพนทในการแสดงผลใหเปนตรงกนขามโดยไมตองเปลยนแปลง
คาของ DDRAM
4.2.3.2 คาสง Data control
คาสง DATCTL เปนการตงคาเมอมการทางานของการจดเกบขอมลจาก
ไมโครคอนโทรลเลอรบนหนวยความจา ตองมการสงคาพารามเตอร 3 ตว พารามเตอรแรกใช
กาหนดทศทางการ scan ของ page address พารามเตอรตวทสองใชกาหนดการจดเรยงของส
RGB และพารามเตอรตวสดทายใชตงคา Gray-scale
29
4.2.3.4 คาสง 256-color position set
คาสง RGBSET8 เปนคาสงทใชเพอเลอกคาทใชแทนส โดยแตละส สแดง สเขยว และสนา
เงนจากส 4096 ส ดงแสดงในตารางท 4.1
ตารางท 4.1 แสดงการกาหนดคาของส RGB
ขอมล (สแดงและสเขยวใชสละ 3 บต สนาเงน 2 บต) ทถก write จาก MPU ลงใน
หนวยความจา DDRAM จะถกแปลงเปน 4 บตกอนทจะเขยน เมอทาการ read ขอมลจาก
DDRAM ขอมลสแดงและสเขยวจะถกแปลงเปนสละ 3 บต สนาเงนจะถกแปลงเปน 2 บตกอนทจะ
สงออกเอาทพต
4.2.4 การตงคาหนวยความจา 4.2.4.1 คาสง Page address set
เมอ MPU สรางการเขาถง DDRAM จะใชคาสง PASET เพอระบพนทของ page
address ตาแหนง address จะเพมขนจากเรมจนจบตามทศทางของ page-direction scan โดย
ตองสงคาพารามเตอรไป 2 คาเพอกาหนดจดเรมตนและจดสดทายของ page
4.2.4.2 คาสง Column address set
เมอ MPU สรางการเขาถง DDRAM จะใชคาสง CASET เพอระบพนทของ column
address ตาแหนง address จะเพมขนจากเรมจนจบตามทศทางของ column-direction scan
โดยตองสงคาพารามเตอรไป 2 คาเพอกาหนดจดเรมตนและจดสดทายของ column
30
4.2.4.3 คาสง Memory write command
เมอ MPU ทาการ write ขอมลไปยง display memory คาสง RAMWR จะตงคา page
และ column ในตาแหนงเรมตนและสามารถ rewrite ลงไปบน DDRAM ขณะเดยวกนการทางาน
นกจะเพมคาตาแหนงของ page หรอ column โดยตองมการสงคาพารามเตอรไป 1 คา
4.2.4.4 คาสง Display on
ใชคาสง DISON เพอเรมการทางานของจอแสดงผล เมอจอเรมทางานเอาทพตจะถกสงไป
เปน display data และ display timing โดยจะไมสามารถเปดจอไดถายงอยใน Sleep mode
31
บทท 5 การออกแบบสวนตดตอกบคอมพวเตอร
5.1 การออกแบบโปรแกรมตดตอ ในสวนของการตดตอเพอสงขอมลจากคอมพวเตอรไปยงไมโครคอนโทรลเลอรนนใช
โปรแกรม Visual studio6 ในการสราง GUI เพอทาการสงขอมลสของรปภาพทตองการแสดงบน
จอแสดงผลสงผานทาง serial port ไปยงไมโครคอนโทรลเลอร
5.1.1 รายละเอยดของโปรแกรม โปรแกรมทออกแบบขนมาใชในการสงขอมล 8 บตผานทาง serial port ไปยง
ไมโครคอนโทรลเลอร มหนาตางแสดงรปภาพทตองการนามาแสดงบนจอแอลซดและรปภาพท
ไดรบการแปลงคาสเพอทจะนาไปแสดงบนจอแอลซด โดยจะม button ทใชในการคนหารปภาพ
และ button ทใชในการสงขอมล ซงเมอนาเมาสไปชยงตาแหนงใดๆ ของภาพจะมคาสแสดงอยใต
ภาพนน ดงรปท 5.1 แสดงหนาตางการทางานของโปรแกรม
รปท 5.1 แสดงหนาตางของโปรแกรม
32
5.1.2 การทางานของโปรแกรม การทางานของโปรแกรมแบงออกเปนออกเปน 4 ขนตอน คอ
5.1.2.1 การคนหาภาพ
ในขนตอนแรกของการทางานจาเปนจะตองเลอกรปภาพทตองการนามาแสดง ซงการ
ทางานในการเลอกรปภาพนนใชคอนโทรลของ Visual studio6 (Microsoft common dialog
control 6.0) เพอใชในการคนหาไฟลภาพภายในเครองคอมพวเตอร โดยรปทเลอกตองมขนาด
128 x 128 พกเซล เนองจากจอแอลซดสามารถแสดงผลภาพได 128 x 128 พกเซล
5.1.2.2 การแปลงคาส
เรมจากการอานคาส RGB โดยจะไดคาสตอนแรกจะเปน code ฐานสบเชน 255255255
ซงเกบคาในรปแบบ long จงมขนาด 32 บต ดงรปท 5.2
รปท 5.2 แสดงการจดเรยงของสทอานไดจากโปรแกรม
เนองจากคาสทจะแสดงบนจอแอลซดนนใช 8 บต จงตองทาการแปลงคาสจาก 32 บตให
เปน 8 บตโดยทาการ AND เพอใหไดสดงแสดงตวอยางการ AND เพอเกบคาสนาเงนดงรปท 5.3 AND
=
รปท 5.3 แสดงการ AND เพอเกบคาสของสนาเงน
จากนนนาคาสทไดทงสแดง สเขยว และสนาเงนมาทาการ shift บตเพอเกบคาเปน byte
ดงรปท 5.4 จะแสดงการ shift บตสนาเงนและแปลงคาใหเปน byte
>> 16
=
รปท 5.4 แสดงการ shift บต และแปลงขอมลเปน byte
33
จากหลกการดงกลาวเพอทจะแปลงขอมลสทอานมาจากรปใหเปนคาสทจอแอลซด
สามารถแสดงไดจะตองแปลงชวงของคาสจาก 0-255 ระดบ ใหเปน 0-7 ระดบ จากนนกเอาคาท
ไดมา shift บตใหกลบไปอยในตาแหนงตามทจอแอลซดกาหนด คอ RGB นนแสดงวาจะตองทา
การ shift บตของสแดงไป 5 บต และ shift บตของสเขยวไป 2 บต จากนนเอาคามา OR กนเพอให
ไดตาแหนงของคาสเปน RRRGGGBB ดงแสดงในรปท 5.5
รปท 5.5 แสดงการจดเรยงของสททาการแปลงเรยบรอยแลว
5.1.2.3 การแสดงคาส
เมอทาการแปลงคาสแลวโปรแกรมจะสงไปแสดงยง picture box ในหนาตางของ
โปรแกรมเพอแสดงรปทไดรบการแปลงคาสแลว และโปรแกรมยงสามารถแสดงคาสของรปใน
ตาแหนงของพกเซลทนาเมาสไปชเปนเลขฐาน 10 อกดวย
5.1.2.4 การสงขอมล
เมอทาการสงขอมลโปรแกรมจะสงเอาทพตของคาสออกไปยงไมโครคอนโทรลเลอรผาน
ทาง serial port เพอควบคมการแสดงแสดงผลของจอแอลซด
5.2 การตดตอกบไมโครคอนโทรลเลอร ไมโครคอนโทรลเลอรเปนสวนททาการควบคมการแสดงผลของจอแอลซด โดยจะรอรบ
ขอมลจาก RS232 ทเปน interrupt เพอนาขอมลมาใชในการแสดงผล
5.2.1 รายละเอยดของการตดตอ โปรแกรมจะสงขอมลสทอานไดจากภาพมายงไมโครคอนโทรลเลอรทละจดพกเซลโดย
เชอมตอผาน RS232 ซงเปนการสอสารแบบอนกรม (serial)
การสอสารแบบอะซงโครนส (Asynchronous) จะใชสายขอมลเพยงตวเดยว แตจะใชการ
สงขอมล หรอ Bit Pattern เปนตวกาหนดวาสวนไหนเปนสวนเรมตนขอมล สวนไหนเปนเปนตว
ขอมล สวนไหนเปนสวนตรวจสอบความถกตองขอมล และสวนไหนเปนสวนปดทายของขอมล
โดยตองกาหนดใหสญญาณนาฬกาเทากนทงภาคสงและภาครบ ซงจะมอปกรณพเศษทชอวา
UART หรอ Universal Asynchronous Receiver/Transmitter คอยควบคมการรบและสง
34
5.2.2 การทางานของไมโครคอนโทรลเลอร การทางานของไมโครคอนโทรลเลอรในการสอสารกบคอมพวเตอรนนแบงการทางานออก
ไดเปน 2 สวนคอ
5.2.2.1 การรบขอมล
ไมโครคอนโทรลเลอรทาหนาทในการควบคมการแสดงผลของจอแอลซด โดยจะรบคาของ
สทไดจากการแปลงคาจากโปรแกรมมาเกบใน buffer เพอรอการนาไปแสดงผล โดยเมอมขอมล
ของสสงมา ไมโครคอนโทรลเลอรจะรบคามาและเกบตามตาแหนงทตรงกบตาแหนงของสทอาน
มาจากภาพจนครบทง 128 x 128 พกเซล
5.2.2.2 การอนเตอรรพ
การอนเตอรรพจะเกดขนเมอมการสงขอมลมาจากคอมพวเตอร กลาวคอ ในการทางาน
หลกของไมโครคอนโทรลเลอรจะมการกาหนดคาตางๆ ใหกบพอรต และกาหนดคาเรมตนการ
ทางานใหแกจอแอลซด เมอเกดการอนเตอรรพขนจะหยดการทางานในสวนการทางานหลกและ
ขามไปทางานในสวนอนเตอรรพ
การทางานในสวนอนเตอรรพจะเปนการรบขอมลมาเกบไวใน buffer เพอเกบคาขอมลลง
ตามตาแหนงทใชในการแสดงผล และมการตรวจสอบวาขอมลทรบมาครบทกตาแหนงจงใหออก
จากอนเตอรรพเพอกลบสการทางานหลกและใหทาการแสดงผลของขอมลทไดรบมาตอไป
35
บทท 6 การทดลอง
6.1 การพฒนาอปรณ หลงจากการออกแบบอปกรณการแสดงผลในสวนของวงจร และออกแบบโปรแกรมการสง
ขอมลภาพแลวจงทาการประกอบเขาดวยกน ดงรปท 6.1
รปท 6.1 แสดงการเชอมตอของอปกรณ
และสามารถออกแบบวงจรการทางานของการสงขอมลไดดงรปท 6.2
รปท 6.2 แสดงวงจรการเชอมตอของอปกรณ
36
6.2 การทดสอบผลการทางาน สามารถแสดงผลรปบนจอแอลซดจากการควบคมการทางานของไมโครคอนโทรลเลอรให
เกดรปบนจอแอลซดทง 2 จอไดดงรปท 6.3
รปท 6.3 แสดงการแสดงผลของจอแอลซด
การแสดงผลภาพของจอแอลซดสามารถแสดงผลภาพสทงหมด 256 ส จากการผสมกน
ระหวางสแดง สเขยว และสนาเงน
37
บทท 7 สรปผลการดาเนนงาน
7.1 ผลการดาเนนงานโครงการ อปกรณทจดทาขนสามารถแสดงผลภาพส 8 บต (256 ส) บนหนาจอแอลซด โดยสามารถ
แสดงภาพทตองการไดโดยการเขยนโปรแกรมลงบนไมโครคอนโทรลเลอรและกาหนดใหสง
เอาทพตออกไปยงพอรตทตองการ ซงสามารถแสดงผลภาพได 2 ภาพพรอมๆ กน โดยทเปนภาพท
เหมอนกนและแตกตางกนตามความตองการของผใช
อปกรณดงกลาวสามารถแสดงภาพสไดตามตองการ โดยอปกรณทงหมดใชงบประมาณ
ไมเกน 2,000 บาท
7.2 ปญหาในการดาเนนงานและแนวทางแกไข 1. ไมสามารถปรบ contrast ของจอแอลซดได เมอทาการแสดงผลของภาพทตองการทา
ใหสทปรากฎผดเพยนจากความเปนจรง
2. การสงขอมลจากไมโครคอนโทรลเลอรเพอทาการแสดงภาพสามารถสงไดไมเกน 32K
ซงเปนหนวยความจา Flash ของไมโครคอนโทรลเลอร
7.3 ขอเสนอแนะและแนวทางการพฒนาตอ 1. ทาการพฒนาใหไมโครคอนโทรลเลอรสามารถตดตอกบคอมพวเตอรในการรบขอมลภาพเพอนาไปแสดงยงจอแอลซดโดยไมตองใชไมโครคอนโทรลเลอรในการเกบขอมลภาพท
จะนาไปแสดง
2. ทาการพฒนาเพอใหจอแอลซดสามารถแสดงภาพเคลอนไหวได
38
ภาคผนวก ก
โปรแกรมในการพฒนาโครงการ
ในการใชงานไมโครคอนโทรลเลอรสาหรบทาการควบคมการทางานของอปกรณตางๆ ไม
วาจะเปนการใชสาหรบดกจบสญญาณ การคานวณทางคณตศาสตร การควบคมสถานะในการ
จายสญญาณ การตงเวลาการทางานอปกรณหรอการทางานอนๆ เราจาเปนตองเขยนโปรแกรม
การทางานใหกบไมโครคอนโทรลเลอรเพอสงงานใหไมโครคอนโทรลเลอรทางานตามทเราตองการ
ได โดยขอมลททาการโปรแกรมลงบนไมโครคอนโทรลเลอรตองเปนภาษาเครองท
ไมโครคอนโทรลเลอรเขาใจ ซงมเครองมอในการแปลงภาษาชนสงใหกลายเปนภาษาเครอง
สาหรบไมโครคอนโทรลเลอรอยหลายชนดสาหรบชวยในการพฒนา เมอเรามภาษาเครองสาหรบ
ไมโครคอนโทรลเลอรแลว ตอมาเราจะตองมวธทจะนาเกบลงในหนวยความจาของ
ไมโครคอนโทรลเลอรซงกจะมเครองมอในการโปรแกรมใหคาสงทถกทาเปนภาษาเครองแลว(ใน
ทนfileทโปรแกรมจะเปน file.hex) ไปเกบไวในหนวยความจาชนด flash ของไมโครคอนโทรลเลอร
เพอควบคมการทางานของไมโครคอนโทรลเลอรตอไป
สาหรบในโรงการนใชไมโครคอนโทรลเลอร ATMELMega32 โดยอาศยบอรดทสรางขน
เพอใชในการสงขอมลระหวางคอมพวเตอรกบไมโครคอนโทรลเลอรในการโปรแกรมคาสง โดยผาน
ทาง parallel port ของคอมพวเตอร และใช AVR Studio4 เครองมอในการเขยนโปรแกรมและใช
โปรแกรม PonyProg2000 ในการโปรแกรม file.hex ลงบนไมโครคอนโทรลเลอร ซงรายละเอยด
และวธการใชงานโปรแกรมดงกลาวมดงน
1. AVR Studio4
เปนเครองมอในการเขยนโปรแกรมทใชงานบนไมโครคอนโทรลเลอรโดยจะมฟงกชนใน
การตดตอกบไมโครคอนโทรลเลอรและการกาหนดคาตางๆทจาเปนสาหรบไมโครคอนโทรลเลอร
ทาใหสะดวกในการเขยนคาสงควบคมการทางานของไมโครคอนโทรลเลอร ภาษาทใชเขยนบน
AVR Studio4 นสามารถเลอกเขยนไดเปนภาษา assembly (.asm) หรอ ภาษาซ (.c) ซงสาหรบ
AVR Studio4 นจะใชไดกบไมโครคอนโทรลเลอรของ ATMEL
รปท ผ.1 แสดงสญลกษณของโปรแกรม AVR Studio4
39
การใชงาน AVR Studio4 เบองตนมดงน
เรมจากเปดโปรแกรม AVR Studio4 ขนมา โปรแกรมจะถามใหเราสราง project หรอเปด
project ท save ไวเพอมาทางานตอ
รปท ผ.2 แสดงการเลอก project ในการเรมทางานใน AVR Studio4
ในการเรมโปรเจคใหมเราจะตองเลอกภาษาทจะในการเขยนวาเราจะเขยนเปน .asm หรอ .c ถา
เลอก Atmel AVR Assembler สาหรบการเขยนเปน .asm หรอเลอก AVR GCC สาหรบการเขยน
เปน .c และตงชอ project เราจะได file.asm หรอ file.c หลกมชอเหมอนชอของ project ทเราตง
สาหรบโครงการนใช AVR GCC (ใชภาษา C เขยน)
รปท ผ.3 แสดงการเลอกภาษาในการเรมเขยน project ใหมใน AVR Studio4
40
เราสามารถ set คาตางๆ ได โดย Project > Configuration Option จะไดดงรปทผ.4 ใน
สวนนเราจะสามารถเลอกชนดของไมโครคอนโทรลเลอรทเราจะใชงาน และคาตางๆทจาเปน
สาหรบการทางานของไมโครคอนโทรลเลอรตามทเราตองการได เราสามารถเลอกใช make file
จากภายนอกแทนการตงคาภายใน project option ไดอกทางหนงในการ กาหนดคาตางๆทจาเปน
สาหรบในโครงการน set คา Device : atmega32 , Frequency : 8000000
รปท ผ.4 Project option
41
2. การใชงาน PonyProg2000 PonyProg2000 เปนโปรแกรมทใชสาหรบการอดโปรแกรมลงบนบนไมโครคอนโทรลเลอร
เมอเปดโปรแกรม PonyProg2000 โปรแกรมกจะปรากฎขนดงรปท ผ.5
รปท ผ.5 โปรแกรม PonyProg2000
ในการทเราจะสงโปรแกรม (.hex) ไปยงไมครคอนโทลเลอรเราตองกาหนด port ทใชใน
การสงกอน โดยการกาหนด port สามารถทาไดโดยเลอกท setup >> interface setup… จะได
หนาตาง I/O port setup รปท ผ.6 ขนมาเราสามารถเลอกไดวาจะใหสงออกทาง serial port หรอ
parallel port
รปท ผ.6 I/O port setup
42
สาหรบรปทผ.6 นนเปนการ set คาทใชสงในโครงการนโดยหมายความวาจะสงโดยอาศย
parallel port โดยใช port ท1 ของ parallel port
หลงจากนนเราตองกาหนดชนดของไมโครคอนโทรลเลอรทเราจะทาการโปรแกรมโดย
เลอกท Device จะปรากฎประเภทของไมโครคอนโทรลเลอรชนดตางๆ สาหรบเลอกใหตรงกบ
ไมโครคอนโทรลเลอรทเราจะใช
รปท ผ.7 การกาหนดอปกรณใน PonyProg2000
หลงจากทเรากาหนดคาตางๆพรอมแลวโปรกรมกจะอยในสถานะพรอมทจะใชงานสง
โปรแกรมไปยงไมโครคอลโทลเลอรทเรากาหนดโดย port ทกาหนด ตอมาคอขนตอนการสง
โปรแกรม(.hex) เรมแรกใหเราเลอกเปด file.hex ทเราเตรยมไวโดย File > Open Device File…
แลวเลอก file.hex ทเราตองการ PonyProg2000 จะแสดงโปรแกรมในรปของเลขฐาน16 ดง
รปท ผ.8
43
รปท ผ.8 ผลการโหลด file.hex ใน PonyProg2000
เราจะทาการโปรแกรม file.hex แลว เราจะเรมการทาการโปรแกรมลงบน
ไมโครคอนโทรลเลอร โดย Command > Write Program(FLASH) หรอกดทปม icon
รปท ผ.9 การโปรแกรม file.hex ทเลอกไวลงไมโครคอนโทรลเลอร
44
เมอทาการโปรแกรมลงบนไมครคอนโทลเลอรเสรจเรยบรอยแลวกจะมขอความเปน
Dialog box ขนมากเปนอนเสรจสน
ในการโปรแกรมลงบนไมโครคอนโทรลเลอรตวหนงหลงจากทมการโปรแกรมลงไปแลวนน
กอนการโปรแกรมครงตอไปควรทจะทาการลบโปรแกรมเดมออกจากไมโครคอนโทรลเลอรกอน
สาหรบ PonyProg2000 นทาไดโดย Command > Erase หรอกดทปม icon เพอลบ
โปรแกรมทมอยในไมโครคอนโทรลเลอรออก
45
ภาคผนวก ข Source Code
สาหรบโครงการนมการเขยน source code อย 2 สวน คอ สวนสาหรบ
ไมโครคอนโทรลเลอร (เปนภาษา C ใช AVR Studio 4) และสวนโปรแกรมแปลงคาสของภาพ
( Visual Basic 6 ) ซง Source Code ทจะกลาวถงดงตอไปนเปนสวนหนงทนาสนใจในการนามา
พฒนาโครงการ
1. สวนสาหรบไมโครคอนโทรลเลอร 1.1 Source code สาหรบไมโครคอนโทรลเลอร
Code ในสวนนเปนการสงงานใหจอแสดงผลทง 2 แสดงแถบส 3 ส (แดง เขยว นาเงน)
//#### CONFIG #### #define F_CPU 8000000UL #define SPIPORT PORTA #define SPIDDR DDRA #define SPIPORTC PORTC #define SPIDDRC DDRC #define CS 2 #define SDA 3 #define RESET 4 #define CLK 5 //################# #include <avr/io.h> #include <util/delay.h> #define cbi(reg, bit) (reg&=~(1<<bit)) #define sbi(reg, bit) (reg|= (1<<bit)) #define CS0 cbi(SPIPORT,CS); #define CS1 sbi(SPIPORT,CS); #define CLK0 cbi(SPIPORT,CLK); #define CLK1 sbi(SPIPORT,CLK); #define SDA0 cbi(SPIPORT,SDA); #define SDA1 sbi(SPIPORT,SDA); #define RESET0 cbi(SPIPORT,RESET); #define RESET1 sbi(SPIPORT,RESET);
46
#define CSC0 cbi(SPIPORTC,CS); #define CSC1 sbi(SPIPORTC,CS); #define CLKC0 cbi(SPIPORTC,CLK); #define CLKC1 sbi(SPIPORTC,CLK); #define SDAC0 cbi(SPIPORTC,SDA); #define SDAC1 sbi(SPIPORTC,SDA); #define RESETC0 cbi(SPIPORTC,RESET); #define RESETC1 sbi(SPIPORTC,RESET); #define byte unsigned char byte n=0; byte s1,s2; byte r,g,b; void sendCMD(byte cmd); void sendData(byte cmd); void shiftBits(byte b); void sendCMDC(byte cmd); void sendDataC(byte cmd); void shiftBitsC(byte b); void LCD_put_pixel(unsigned char color, unsigned char x, unsigned char y); void LCD_put_pixelC(unsigned char color, unsigned char x, unsigned char y); void waitms(int ms) { int i; for (i=0;i<ms;i++) _delay_ms(1); } int main (void) { int i = 0; int j = 0 ; SPIDDR=(1<<SDA)|(1<<CLK)|(1<<CS)|(1<<RESET); //PortB-Direction Setup SPIDDRC=(1<<SDA)|(1<<CLK)|(1<<CS)|(1<<RESET); //PortC-Direction Setup CS0 SDA0 CLK1 CSC0 SDAC0 CLKC1 RESET1 RESET0 RESET1 RESETC1 RESETC0 RESETC1
47
CLK1 SDA1 CLK1 CLK1 SDA1 CLK1 CLKC1 SDAC1 CLKC1 CLKC1 SDAC1 CLKC1 waitms(10); //Software Reset sendCMD(0xca); //added sendData(0x03); sendData(32); sendData(12); sendCMDC(0xca); sendDataC(0x03); sendDataC(32); sendDataC(12); // sendData(0x00); sendCMD(0xbb); // comscn sendData(0x01); sendCMDC(0xbb); sendDataC(0x01); sendCMD(0xd1); // oscon sendCMDC(0xd1); sendCMD(0x94); // sleep out sendCMDC(0x94); sendCMD(0x81); // electronic volume, this is kinda contrast/brightness sendData(5);//ff); // this might be different for individual LCDs sendData(0x01);//01); // sendCMDC(0x81); sendDataC(5); sendDataC(0x01); sendCMD(0x20); // power ctrl sendData(0x0f); //everything on, no external reference resistors sendCMDC(0x20); sendDataC(0x0f); waitms(100); sendCMD(0xa7); // display mode sendCMDC(0xa7); sendCMD(0xbc); // datctl sendData(0x00); sendData(0);
48
sendData(0x01); sendData(0x00); sendCMDC(0xbc); sendDataC(0x00); sendDataC(0); sendDataC(0x01); sendDataC(0x00); sendCMD(0xce); // setup color lookup table // color table //RED sendData(0); sendData(2); sendData(4); sendData(6); sendData(8); sendData(10); sendData(12); sendData(15); // GREEN sendData(0); sendData(2); sendData(4); sendData(6); sendData(8); sendData(10); sendData(12); sendData(15); //BLUE sendData(0); sendData(4); sendData(9); sendData(15); sendCMDC(0xce); // setup color lookup table // color table //RED sendDataC(0); sendDataC(2); sendDataC(4); sendDataC(6); sendDataC(8); sendDataC(10); sendDataC(12); sendDataC(15); // GREEN sendDataC(0); sendDataC(2); sendDataC(4); sendDataC(6); sendDataC(8); sendDataC(10); sendDataC(12); sendDataC(15); //BLUE sendDataC(0); sendDataC(4); sendDataC(9); sendDataC(15);
49
sendCMD(0x25); // nop sendCMDC(0x25); sendCMD(0x75); // page start/end ram sendData(2); // for some reason starts at 2 sendData(131); sendCMDC(0x75); sendDataC(2); sendDataC(131); sendCMD(0x15); // column start/end ram sendData(0); sendData(131); sendCMDC(0x15); sendDataC(0); sendDataC(131); sendCMD(0x5c); // write some stuff (background) sendCMDC(0x5c); for (i = 0; i < 18000; i++){ sendData(28); // 28 is green sendDataC(28); } sendCMD(0xaf); // display on sendCMDC(0xaf); waitms(200); for (i = 0; i < 160; i++){ // this loop adjusts the contrast, change the number of iterations to get sendCMD(0xd6); sendCMDC(0xd6); // desired contrast. This might be different for individual LCDs waitms(2); } // draw color squre on each LCD for(i = 10;i < 50;i++){ for( j = 3;j < 120;j++){ LCD_put_pixelC(224,i,j); } } for(i = 50;i < 95;i++){ for( j = 4;j < 125;j++){ LCD_put_pixelC(100,i,j); } }
50
for(i = 95;i < 130;i++){ for( j = 5;j < 130;j++){ LCD_put_pixelC(3,i,j); } } for(i = 10;i < 50;i++){ for( j = 3;j < 120;j++){ LCD_put_pixel(224,i,j); } } for(i = 50;i < 95;i++){ for( j = 4;j < 125;j++){ LCD_put_pixel(100,i,j); } } for(i = 95;i < 130;i++){ for( j = 5;j < 130;j++){ LCD_put_pixel(3,i,j); } } while(1==1) { //add code } } //************************************************************** // Funtion portA //************************************************************** void shiftBits(byte b) { int x; CLK0 if ((b&128)!=0) SDA1 else SDA0 CLK1 x = 1; CLK0 if ((b&64)!=0) SDA1 else SDA0 CLK1 x = 1; CLK0 if ((b&32)!=0) SDA1 else SDA0 CLK1 x = 1;
51
CLK0 if ((b&16)!=0) SDA1 else SDA0 CLK1 x = 1; CLK0 if ((b&8)!=0) SDA1 else SDA0 CLK1 x = 1; CLK0 if ((b&4)!=0) SDA1 else SDA0 CLK1 x = 1; CLK0 if ((b&2)!=0) SDA1 else SDA0 CLK1 x = 1; CLK0 if ((b&1)!=0) SDA1 else SDA0 CLK1 x = 1; } void LCD_put_pixel(unsigned char color, unsigned char x, unsigned char y){ x += 2; // for some reason starts at 2 sendCMD(0x75); // page start/end ram sendData(x); sendData(132); sendCMD(0x15); // column start/end ram sendData(y); // for some reason starts at 2 sendData(131); sendCMD(0x5C); // write some shit sendData(color); } //send data void sendData(byte data) { CS0 CLK0 SDA1 //1 for param CLK1 shiftBits(data); CS1 } //send cmd void sendCMD(byte data) { CS0 CLK0 SDA0 //1 for cmd CLK1
52
shiftBits(data); CS1 } //************************************************************** // Function for portC //************************************************************** void shiftBitsC(byte b) { int x; CLKC0 if ((b&128)!=0) SDAC1 else SDAC0 CLKC1 x = 1; CLKC0 if ((b&64)!=0) SDAC1 else SDAC0 CLKC1 x = 1; CLKC0 if ((b&32)!=0) SDAC1 else SDAC0 CLKC1 x = 1; CLKC0 if ((b&16)!=0) SDAC1 else SDAC0 CLKC1 x = 1; CLKC0 if ((b&8)!=0) SDAC1 else SDAC0 CLKC1 x = 1; CLKC0 if ((b&4)!=0) SDAC1 else SDAC0 CLKC1 x = 1; CLKC0 if ((b&2)!=0) SDAC1 else SDAC0 CLKC1 x = 1; CLKC0 if ((b&1)!=0) SDAC1 else SDAC0 CLKC1 x = 1; } void LCD_put_pixelC(unsigned char color, unsigned char x, unsigned char y){ x += 2; // for some reason starts at 2 sendCMDC(0x75); // page start/end ram sendDataC(x); sendDataC(132); sendCMDC(0x15); // column start/end ram sendDataC(y); // for some reason starts at 2 sendDataC(131);
53
sendCMDC(0x5C); // write some shit sendDataC(color); } //send data void sendDataC(byte data) { CSC0 CLKC0 SDAC1 //1 for param CLKC1 shiftBitsC(data); CSC1 } //send cmd void sendCMDC(byte data) { CSC0 CLKC0 SDAC0 //1 for cmd CLKC1 shiftBitsC(data); CSC1 }
1.2 Source code ในสวนการใชงาน interrupt ในสวนนเปนสวนในการใชงานการรบคาจาก serial port ของคอมพวเตอร โดยเมอม
ขอมลถกสงเขามา ไมโครคอนโทรลเลอรจะรบรในลกษณะเหมอนวาม สญญาณ interrupt เขามา
และการทางานจะถกกระโดดไปทางานในฟงกชน SIGNAL(SIG_UART_RECV) ในลกษณะท
เหมอนกบ interrupt Routine โดยคาทสงมานนจะถกเกบไวท UDR ซงสามารถนาออกมาใชได
ใน code นจะเปนการทดสอบโดยรบคาจากโปรแกรม Hyper terminal และนาคามาแสดงทไฟ
ของ Port C บนบอรดทดลอง
#include <avr/interrupt.h> #include <avr/io.h> #include <util/delay.h> #define F_OSC 8000000 #define UART_BAUD_RATE 9600 #define UART_BAUD_CALC(UART_BAUD_RATE,F_OSC) ((F_OSC)/((UART_BAUD_RATE)*16l)-1) //#define port PORTB //#define DDR DDRB
54
void usart_putc(unsigned char c) { // wait until UDR ready while(!(UCSRA & (1 << UDRE))); UDR = c; // send character } unsigned char data; SIGNAL (SIG_UART_RECV) { // USART RX interrupt // UCSRB = (0 << RXCIE); PORTB = 0x00; _delay_ms(0); //delay for waiting delay work **by ajarn warin PORTC = (unsigned char)UDR; // UCSRB = (1 << RXEN) | (1 << TXEN) | (1 << RXCIE); } void USART_Init(){ // set baud rate UBRRH = (uint8_t)(UART_BAUD_CALC(UART_BAUD_RATE,F_OSC)>>8); UBRRL = (uint8_t)UART_BAUD_CALC(UART_BAUD_RATE,F_OSC); // Enable receiver and transmitter; enable RX interrupt UCSRB = (1 << RXEN) | (1 << TXEN) | (1 << RXCIE); //asynchronous 8N1 UCSRC = (1 << URSEL) | (3 << UCSZ0); } int main(void){ DDRB = 0xff; DDRC = 0xff; PORTC = 0xff; USART_Init(); //init Usart sei(); // enable interrupts while (1) { PORTB = 0xff; } return 0; }
55
2. สวนทใชในการเชอมตอระหวางคอมพวเตอรกบไมโครคอนโทรลเลอร 2.1 Source code การแปลงคาส
ในสวนนทาการอานคาสจากภาพทละพกเซลเปน RGB และทาการแปลงคาสจาก 32 bit
ใหเหลอเพยง 8 bit เพอทจะสงขอมลไปใหกบไมโครคอนโทรลเลอร
Private Sub Command2_Click() Dim x As Long, y As Long Dim P(127, 0 To 127) As Long Dim R(127, 0 To 127) As Byte Dim B(127, 0 To 127) As Byte Dim G(127, 0 To 127) As Byte Dim Color(127, 0 To 127) As Byte Dim sData(128 * 128) As Byte For y = 0 To 127 Step 1 For x = 0 To 127 Step 1 P(x, y) = Picture1.Point(x, y) ‘Read color RGB of each pixel B(x, y) = CByte((P(x, y) And &HFF0000) / 65536) ‘Separated B from RGB and
‘shift bit G(x, y) = CByte((P(x, y) And 65280) / 256) ‘Separated G from RGB and
‘shift bit R(x, y) = CByte(P(x, y) And 255) ‘Separated R from RGB and
‘shift bit ‘*********************************************************** ‘Set color R in range 0-8 ‘*********************************************************** If (0 <= R(x, y)) And (R(x, y) <= 31) Then R(x, y) = 0 ElseIf (32 <= R(x, y)) And (R(x, y) <= 63) Then R(x, y) = 1 ElseIf (64 <= R(x, y)) And (R(x, y) <= 95) Then R(x, y) = 2 ElseIf (96 <= R(x, y)) And (R(x, y) <= 127) Then R(x, y) = 3 ElseIf (128 <= R(x, y)) And (R(x, y) <= 159) Then R(x, y) = 4 ElseIf (160 <= R(x, y)) And (R(x, y) <= 191) Then R(x, y) = 5 ElseIf (192 <= R(x, y)) And (R(x, y) <= 223) Then R(x, y) = 6 Else R(x, y) = 7 End If
56
‘*********************************************************** ‘Set color G in range 0-8 ‘*********************************************************** If (0 <= G(x, y)) And (G(x, y) <= 31) Then G(x, y) = 0 ElseIf (32 <= G(x, y)) And (G(x, y) <= 63) Then G(x, y) = 1 ElseIf (64 <= G(x, y)) And (G(x, y) <= 95) Then G(x, y) = 2 ElseIf (96 <= G(x, y)) And (G(x, y) <= 127) Then G(x, y) = 3 ElseIf (128 <= G(x, y)) And (G(x, y) <= 159) Then G(x, y) = 4 ElseIf (160 <= G(x, y)) And (G(x, y) <= 191) Then G(x, y) = 5 ElseIf (192 <= G(x, y)) And (G(x, y) <= 223) Then G(x, y) = 6 Else G(x, y) = 7 End If ‘*********************************************************** ‘Set color B in range 0-3 ‘*********************************************************** If (0 <= B(x, y)) And (B(x, y) <= 63) Then B(x, y) = 0 ElseIf (64 <= B(x, y)) And (B(x, y) <= 127) Then B(x, y) = 1 ElseIf (128 <= B(x, y)) And (B(x, y) <= 191) Then B(x, y) = 2 Else B(x, y) = 3 End If R(x, y) = R(x, y) * 32 ‘shift bit G(x, y) = G(x, y) * 4 ‘shift bit Color(x, y) = R(x, y) Or G(x, y) Or B(x, y) ‘converted RGB into 8
‘bit(RRRGGGBB) sData(x * 128 + y) = Color(x, y) ‘converted color in array
‘1-dimention as sData Picture2.PSet (x, y), Color(x, y) ‘show picture Next x Label6.Caption = "sData = " & sData mscSender.Output = sData ‘Send data of sData Next y mscSender.EOFEnable = True End Sub
57
2.2 Source Code การสงขอมล ในสวนนเปนการสงขอมลผาน RS-232 โดยการกาหนดพอรตและตงคาตางๆ
Private Sub Form_Load() mscSender.CommPort = 1 mscSender.Settings = "9600,n,8,1" ‘Set values of baud rate,
‘Parity, Data bits, Stop bits mscSender.PortOpen = True If (mscSender.PortOpen) Then Label5.Caption = "Hello" Else: Label5.Caption = "Yeah" End If End Sub ‘*********************************************************** Private Sub Form_Unload(Cancel As Integer) mscSender.PortOpen = False End Sub
58
บรรณานกรม
1. กตต แตรผองแผว,ชาญณรงค รตนะ . (2547) . การผลตภาพถาย 3 มต เพอใชเปนสอการเรยน
การสอน.[http://www.ipst.ac.th/design/document/toy-sci/td3d-stereo.pdf]
2. Berezin Stereo Photography Products.[http://www.berezin.com/3d/3d_hmd.htm] .12
กรกฎาคม 2549
3. io-display system.(2002-2006).The i-theater.[http://www.i-glassesstore.com/i-
theater.html] .15 กรกฎาคม 2549
4. Page Flipped and Shutter Glasses.[http://www.shortcourses.com/how/stereo
/stereoimages.htm]11 กรกฎาคม 2549
5. Refik.(2006).Controlling a color graphic LCD,Epson S1D15G10 controller,with an
ATMEL AVRMega32L. [http://www.e-dsp.com/controlling-a-color-graphic-lcd-epson-
s1d15g10-controller-with-an-atmel-avr-atmega32l]. 24 สงหาคม 2549
6. Seiko Epson Corporation.(2002). S1D15G10D08B00.[http://www.alldatasheet.com].25
สงหาคม 2459
7. Sparkfun.(2005).LCDs.[http://www.Sparkfun.com/commerce/product_info.php?
products_id=569]. 24 สงหาคม 2549
8. Thomas Pfeifer.(2006).Controlling a Nokia 6100 Display with Atmel-AVR.
[http://thomaspfeifer.net/Nokia_6100_display_en.htm].24 สงหาคม 2549