<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7445804107681783656</id><updated>2024-10-01T23:31:39.381-07:00</updated><category term="51"/><category term="mcs"/><category term="display"/><category term="temp"/><category term="dot"/><category term="matrix"/><category term="scan"/><category term="7"/><category term="Digital"/><category term="at89c2051"/><category term="ds1820"/><category term="ds18b20"/><category term="segment"/><category term="temp clock"/><category term="2"/><category term="5110"/><category term="Alarm"/><category term="Cost"/><category term="Count"/><category term="Down"/><category term="Low"/><category term="Timer"/><category term="With"/><category term="at89c051"/><category term="controller"/><category term="digit"/><category term="fttl655s"/><category term="mcs-51"/><category term="monitor"/><category term="nokia"/><category term="temperature"/><title type='text'>Microcon99 Open source</title><subtitle type='html'>Open source Microcontroller Project&#xa;&#xa;เจอกันได้อีกหนึ่งช่องทางที่&#xa;mcu4fun.blogspot.com</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://microcon99.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7445804107681783656/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://microcon99.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>microcon99</name><uri>http://www.blogger.com/profile/09181392996946203603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_e979fhiC3orsnmtf19Smf0kR0TYNMMRxNbmBJwydORNCxka-mPMtT8VRMjdXJ5M3OqJ356MUJTJaQ7_urCfxpo4YT_jTSQ3679deYZELpSY9QMMpHDQbwfQ91WVqaw/s220/12916815201.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>11</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7445804107681783656.post-7458952260181627374</id><published>2011-09-29T00:44:00.001-07:00</published><updated>2011-09-29T00:44:48.483-07:00</updated><title type='text'>7 Segment Serial interface (แก้ขัด MAX7219)</title><content type='html'>เมื่อไม่นานมานี้ผมทำเกี่ยวกับ 7segment เยอะก็เลยปิ๊งไอเดียที่จะเอามาทำ&lt;br /&gt;display module แบบสำเร็จรูปคือมี controller chip ในตัวเลย&lt;br /&gt;โดยการใช้งานจะต้องให้ง่ายมากที่สุด มาดูวิดีโอกันก่อน&lt;br /&gt;&lt;br /&gt;&lt;iframe width=&quot;425&quot; height=&quot;349&quot; src=&quot;http://www.youtube.com/embed/QQsVvjFV7GI&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;จะเห็นว่าสามารถควบคุมการทำงานต่างๆได้อย่างง่ายดายโดยมี command บางตัว&lt;br /&gt;ที่ใกล้เคียงกับ LCD ทั่วไป ส่วนที่เหลือยังไม่ได้กำหนดเป็นมาตรฐาน และใน version&lt;br /&gt;ต่อๆไปอาจไม่ได้อ้าง command นี้&lt;br /&gt;&lt;br /&gt;&lt;embed type=&quot;application/x-shockwave-flash&quot; src=&quot;https://picasaweb.google.com/s/c/bin/slideshow.swf&quot; width=&quot;425&quot; height=&quot;349&quot; flashvars=&quot;host=picasaweb.google.com&amp;hl=th&amp;feat=flashalbum&amp;RGB=0x000000&amp;feed=https%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2F103734209642572221176%2Falbumid%2F5632195218978181345%3Falt%3Drss%26kind%3Dphoto%26authkey%3DGv1sRgCLKjluK6sLfDKA%26hl%3Dth&quot; pluginspage=&quot;http://www.macromedia.com/go/getflashplayer&quot;&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;จริงๆอุปกรณ์ไม่ได้เยอะขนาดนี้ถ้าผมใช้ 7segment common A เพราะ mcs-51&lt;br /&gt;มันขับแบบซอร์ซไม่ได้อย่างที่เรารู้กัน วงจรก็เลยใหญ่อย่างที่เห็น แต่ก็เอาเหอะอันแรก&lt;br /&gt;เอาอะไรมากชิมิ&lt;br /&gt;&lt;br /&gt;มาดู specification กันก่อน&lt;br /&gt;Controller                      :at89c2051 @11.0592-MHz&lt;br /&gt;Baud                            :9600-bps&lt;br /&gt;Fifo Buffer                     :32-byte&lt;br /&gt;Display Data Register           :8-byte&lt;br /&gt;Character Gen. Register         :n/a&lt;br /&gt;Scan frq.                       :~500Hz&lt;br /&gt;Support Ascii                   :0-9&lt;br /&gt;&lt;br /&gt;รายละเอียดกลุ่มคำสั่งมีดังนี้&lt;br /&gt;Command pre fix                 :0xfe&lt;br /&gt;Home Address                    :0x01&lt;br /&gt;Clear Display                   :0x02&lt;br /&gt;Display Off                     :0x03&lt;br /&gt;Display On                      :0x04&lt;br /&gt;Dot Control                     :0x09&lt;br /&gt;Define Bin                      :0x0c&lt;br /&gt;Rotate Display Register Left    :0x0d&lt;br /&gt;Rotate Display Register Right   :0x0e&lt;br /&gt;CG-Ram Address                  :0x40   --&gt;&gt; n/a&lt;br /&gt;DD-Ram Address                  :0x80&lt;br /&gt;&lt;br /&gt;Home Address&lt;br /&gt;กำหนดให้ DD-Ram Address ไปอยู่ในตำแหน่ง 0 หรือ Digit1&lt;br /&gt;--ตัวอย่าง--&lt;br /&gt;[0xfe]-[0x01]&lt;br /&gt;&lt;br /&gt;Clear All Display Register&lt;br /&gt;เคลียร์ Display Register ทั้ง 8byte พร้อมกับ&lt;br /&gt;กำหนดให้ DD-Ram Address ไปอยู่ในตำแหน่ง 0 หรือ Digit1&lt;br /&gt;--ตัวอย่าง--&lt;br /&gt;[0xfe]-[0x02]&lt;br /&gt;&lt;br /&gt;Display Off&lt;br /&gt;ปิดการแสดงผล ไม่มีผลกับ Display Register&lt;br /&gt;--ตัวอย่าง--&lt;br /&gt;[0xfe]-[0x03]&lt;br /&gt;&lt;br /&gt;Display On&lt;br /&gt;เปิดการแสดงผล ไม่มีผลกับ Display Register&lt;br /&gt;--ตัวอย่าง--&lt;br /&gt;[0xfe]-[0x04]&lt;br /&gt;&lt;br /&gt;Dot Control Page1&lt;br /&gt;ใช้ส่งข้อมูลเฉพาะ Dot-segment ของ Display Register ทั้ง 8-byte&lt;br /&gt;--ตัวอย่าง--&lt;br /&gt;[0xfe]-[0x09]-[xxxxxxxx]&lt;br /&gt;Dot-On  x=1&lt;br /&gt;Dot-Off x=0&lt;br /&gt;บิต 0 เป็น Dot ของ Digit1 ไล่ขึ้นไปจนถึง Digit8&lt;br /&gt;&lt;br /&gt;Define Bin&lt;br /&gt;ใช้ส่งข้อมูลแบบ Binary เช่นต้องการตัวอักษรแปลกๆ ที่เราสร้างขึ้นเอง&lt;br /&gt;หลังกระทำคำสั่ง DD-Ram Address+1&lt;br /&gt;--ตัวอย่าง--&lt;br /&gt;[0xfe]-[0x0c]-[xxxxxxxx]&lt;br /&gt;Segment-On  x=1&lt;br /&gt;Segment-Off x=0&lt;br /&gt;Bit0 = Segment-A&lt;br /&gt;Bit1 = Segment-B&lt;br /&gt;Bit2 = Segment-C&lt;br /&gt;Bit3 = Segment-D&lt;br /&gt;Bit4 = Segment-E&lt;br /&gt;Bit5 = Segment-F&lt;br /&gt;Bit6 = Segment-G&lt;br /&gt;Bit7 = Segment-Dot&lt;br /&gt;&lt;br /&gt;Rotate Display Register Left&lt;br /&gt;ใช้หมุนข้อมูล Display Register ไปทาง ซ้ายหนึ่งครั้ง ต่อคำสั่ง ไม่มีผลกับ DD-Ram Address&lt;br /&gt;--ตัวอย่าง--&lt;br /&gt;[0xfe]-[0x0d]&lt;br /&gt;&lt;br /&gt;Rotate Display Register Right&lt;br /&gt;ใช้หมุนข้อมูล Display Register ไปทาง ขวาหนึ่งครั้ง ต่อคำสั่ง ไม่มีผลกับ DD-Ram Address&lt;br /&gt;--ตัวอย่าง--&lt;br /&gt;[0xfe]-[0x0e]&lt;br /&gt;&lt;br /&gt;DD-Ram Address&lt;br /&gt;ใช้กำหนด DD-Ram Address&lt;br /&gt;--ตัวอย่าง--&lt;br /&gt;[0xfe]-[0x80... thru 0x87]&lt;br /&gt;&lt;br /&gt;การใช้งาน&lt;br /&gt;เราสามารถส่งตัวเลข 0-9 ที่เป็นรหัส ascii ไปแสดงผลได้ทันที นอกเหนื่อจากนี้จะไม่มีผล&lt;br /&gt;หรือข้อมูลจะถูกละทิ้งไป ในทุกๆครั้งที่ส่งข้อมูลไปแสดงผล display buffer address จะ&lt;br /&gt;เพิ่มขึ้นเองอัตโนมัติ รวมทั้งคำสั่ง define bin ด้วย ที่เหลือศึกษาได้จาก code ครับ&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.4shared.com/file/EeqBxETB/Serial_LED_4Digit_v10.html&quot;&gt;Source Code v1.0&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://microcon99.blogspot.com/feeds/7458952260181627374/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7445804107681783656/7458952260181627374' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7445804107681783656/posts/default/7458952260181627374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7445804107681783656/posts/default/7458952260181627374'/><link rel='alternate' type='text/html' href='http://microcon99.blogspot.com/2011/09/7-segment-serial-interface-max7219.html' title='7 Segment Serial interface (แก้ขัด MAX7219)'/><author><name>microcon99</name><uri>http://www.blogger.com/profile/09181392996946203603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_e979fhiC3orsnmtf19Smf0kR0TYNMMRxNbmBJwydORNCxka-mPMtT8VRMjdXJ5M3OqJ356MUJTJaQ7_urCfxpo4YT_jTSQ3679deYZELpSY9QMMpHDQbwfQ91WVqaw/s220/12916815201.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/QQsVvjFV7GI/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7445804107681783656.post-8092484893289409087</id><published>2011-09-29T00:43:00.001-07:00</published><updated>2011-09-29T00:43:59.468-07:00</updated><title type='text'>Low Cost Serial LCD Backpack</title><content type='html'>จริงๆ function เยอะกว่านี้แต่ผมตัดออกเพราะไม่ได้ใช้ แต่เป็น commend อยู่ใน code&lt;br /&gt;เช่น การ เปิด ปิด backlight .... ลองไปแก้ code กันเอานะครับ ตัวนี้เป็น source&lt;br /&gt;ที่สมบูรณ์ที่สุดแล้ว..... สามารถแก้ไปใช้กับ 89LPxxxx รองรับ baud 115k ได้สบายๆ&lt;br /&gt;ส่วน auto baud กับ soft fifo ผมเพิ่งใส่ไป อาจมี bug แต่ผมลองแล้วยังไม่เจอ&lt;br /&gt;ใครใช้แล้วมีปัญหากรุณารายงานผมด้วยครับ.....&lt;br /&gt;&lt;br /&gt;&lt;iframe width=&quot;425&quot; height=&quot;349&quot; src=&quot;http://www.youtube.com/embed/bapqZL_TAqQ&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;embed type=&quot;application/x-shockwave-flash&quot; src=&quot;https://picasaweb.google.com/s/c/bin/slideshow.swf&quot; width=&quot;425&quot; height=&quot;349&quot; flashvars=&quot;host=picasaweb.google.com&amp;hl=th&amp;feat=flashalbum&amp;RGB=0x000000&amp;feed=https%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2F103734209642572221176%2Falbumid%2F5632398287433455345%3Falt%3Drss%26kind%3Dphoto%26authkey%3DGv1sRgCKOR89yrw82K2AE%26hl%3Dth&quot; pluginspage=&quot;http://www.macromedia.com/go/getflashplayer&quot;&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;คุณสมบัติ&lt;br /&gt;Support Baud 1200,2400,4800,9600,19200,57600&lt;br /&gt;Auto Baud rate function.&lt;br /&gt;Software FIFO 80 byte&lt;br /&gt;Command Prefix 254(0xFE)&lt;br /&gt;Support CLCD 16x1 16x2 20x4 and more...&lt;br /&gt;&lt;br /&gt;การ initial (Auto Baud rate function)&lt;br /&gt;กำหนด Baud rate ฝั่งส่งให้เรียบร้อย&lt;br /&gt;รอ 1 วินาที ให้ Serial LCD initial&lt;br /&gt;ส่งค่า 0x20 ไปยัง Serial LCD&lt;br /&gt;หาก ถูกต้อง LCD จะแสดงข้อความ Detect-xxxxx.bps&lt;br /&gt;รอ 2 วินาที&lt;br /&gt;ส่งข้อมูลตามต้องการ&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.4shared.com/file/TBIKdZ8O/SerialLCDv8full.html&quot;&gt;Source code v8.0&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://microcon99.blogspot.com/feeds/8092484893289409087/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7445804107681783656/8092484893289409087' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7445804107681783656/posts/default/8092484893289409087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7445804107681783656/posts/default/8092484893289409087'/><link rel='alternate' type='text/html' href='http://microcon99.blogspot.com/2011/09/low-cost-serial-lcd-backpack.html' title='Low Cost Serial LCD Backpack'/><author><name>microcon99</name><uri>http://www.blogger.com/profile/09181392996946203603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_e979fhiC3orsnmtf19Smf0kR0TYNMMRxNbmBJwydORNCxka-mPMtT8VRMjdXJ5M3OqJ356MUJTJaQ7_urCfxpo4YT_jTSQ3679deYZELpSY9QMMpHDQbwfQ91WVqaw/s220/12916815201.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/bapqZL_TAqQ/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7445804107681783656.post-4039033491778812252</id><published>2011-06-22T22:31:00.000-07:00</published><updated>2011-09-29T00:28:58.514-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Alarm"/><category scheme="http://www.blogger.com/atom/ns#" term="Cost"/><category scheme="http://www.blogger.com/atom/ns#" term="Count"/><category scheme="http://www.blogger.com/atom/ns#" term="Down"/><category scheme="http://www.blogger.com/atom/ns#" term="Low"/><category scheme="http://www.blogger.com/atom/ns#" term="Timer"/><category scheme="http://www.blogger.com/atom/ns#" term="With"/><title type='text'>Countdown Timer 3 Mode with Alarm</title><content type='html'>เนื่องมาจากที่บ้านผม&lt;br /&gt;มีเครื่องซักผ้าแบบ กึ่ง อัตโนมือ... เวลาปั่นเสร็จมันจะไม่เตื่อนใดๆทั้งสิ้น&lt;br /&gt;ส่วนระหว่างปั่น ผมก็จะมานั่งเล่น internet มันก็จะเพลินจน&lt;br /&gt;เลยเวลาตากผ้าหรือเวลาหมดแดด ก็เลยทำเครื่องเตือนเป็น CountDown&lt;br /&gt;ขึ้นมาจะได้ไม่เล่นเพลินจนลืมตากผ้าดังกล่าว...เห่อๆๆ&lt;br /&gt;&lt;br /&gt;&lt;iframe width=&quot;425&quot; height=&quot;349&quot; src=&quot;http://www.youtube.com/embed/ISDyS7gfiAI&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;ของจริง&lt;br /&gt;&lt;embed flashvars=&quot;host=picasaweb.google.com&amp;amp;hl=th&amp;amp;feat=flashalbum&amp;amp;RGB=0x000000&amp;amp;feed=https%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2F103734209642572221176%2Falbumid%2F5632195644253332929%3Falt%3Drss%26kind%3Dphoto%26authkey%3DGv1sRgCKXpx_nv4e3dhgE%26hl%3Dth&quot; height=&quot;349&quot; pluginspage=&quot;http://www.macromedia.com/go/getflashplayer&quot; src=&quot;https://picasaweb.google.com/s/c/bin/slideshow.swf&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;425&quot;&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;รายละเอียดการใช้งาน&lt;br /&gt;CountDown ตัวนี้มีด้วยกันหลักๆ 3 โหมด คือ&lt;br /&gt;1-99 วินาที,1-99 นาที,1-99 ชั่วโมง&lt;br /&gt;แต่ละโหมด จะมีย่อย อีก 4 แบบ คือ ตั้งเวลาปิด,เปิด ให้ alarm หรือไม่ alarm&lt;br /&gt;โดย dot1 หากติดคือเปิด alarm ไม่ติดคือปิด alarm&lt;br /&gt;ส่วน dot2 ถ้าติดคือ การตั้งเวลาเปิด ถ้าไม่ติดคือ การตั้งเวลาปิด&lt;br /&gt;&lt;br /&gt;A = sec&lt;br /&gt;b = min&lt;br /&gt;C = hour&lt;br /&gt;&lt;br /&gt;ปุ่ม Set ทำงานสองหน้าที่&lt;br /&gt;กดปล่อย = start,stop&lt;br /&gt;กดค้าง  = set&lt;br /&gt;&lt;br /&gt;การตั้งเวลาทำได้โดยกด set ค้างไว้ประมาน 1วินาทีจะได้ยินเสียง beep 1ครั้ง&lt;br /&gt;หน้าจอจะแสดง mode ให้กด + ตั้งค่า mode ตามต้องการ จากนั้นกด set 1ครั้ง&lt;br /&gt;จะเป็นการตั้งค่าหลัก สิบ กด + เลือก 0-9 จากนั้นกด set 1ครั้ง เป็นการตั้งหลัก&lt;br /&gt;หน่วย กด + เพื่อตั้งค่า กด set 1ครั้ง ตัวเลขจะหยุดกระพริบ กด set 1ครั้ง&lt;br /&gt;จะเห็น dot2 กระพริบแสดงว่าเวลาเริ่มเดินแล้ว ในระหว่างเวลานับถอยหลังอยู่&lt;br /&gt;สามารถหยุดได้โดยกด set 1ครั้งหรือกด set ค้างไว้ประมาน 1วินาที&lt;br /&gt;จะได้ยินเสียง beep 1ครั้ง เป็นการกลับไปตั้งค่าใหม่อีกครั้ง...&lt;br /&gt;&lt;br /&gt;เปิด alarm&lt;br /&gt;เมื่อการนับถอยหลังเสร็จสิ้น จะเกิด alarm ประมาณ 30วินาที&lt;br /&gt;จากนั้นจะหยุดไปเอง ถ้าในระหว่างเกิด alarm อยู่แล้วต้องการปิด&lt;br /&gt;ให้กด set ค้างไว้ประมาน 1วินาทีจะได้ยินเสียง beep 1ครั้ง&lt;br /&gt;alarm จะหยุด...&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.4shared.com/file/0kus ... 3Mode_With_Ala.html&quot;&gt;Source Code v1.0&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.4shared.com/file/JkcU ... 3Mode_With_Ala.html&quot;&gt;Source Code v1.2&lt;/a&gt; ใส่ alarm relay เพิ่ม...</content><link rel='replies' type='application/atom+xml' href='http://microcon99.blogspot.com/feeds/4039033491778812252/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7445804107681783656/4039033491778812252' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7445804107681783656/posts/default/4039033491778812252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7445804107681783656/posts/default/4039033491778812252'/><link rel='alternate' type='text/html' href='http://microcon99.blogspot.com/2011/06/low-cost-countdown-timer-with-alarm.html' title='Countdown Timer 3 Mode with Alarm'/><author><name>microcon99</name><uri>http://www.blogger.com/profile/09181392996946203603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_e979fhiC3orsnmtf19Smf0kR0TYNMMRxNbmBJwydORNCxka-mPMtT8VRMjdXJ5M3OqJ356MUJTJaQ7_urCfxpo4YT_jTSQ3679deYZELpSY9QMMpHDQbwfQ91WVqaw/s220/12916815201.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/ISDyS7gfiAI/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7445804107681783656.post-6631112135225923929</id><published>2011-06-07T23:24:00.000-07:00</published><updated>2011-09-29T00:35:04.719-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="51"/><category scheme="http://www.blogger.com/atom/ns#" term="controller"/><category scheme="http://www.blogger.com/atom/ns#" term="Digital"/><category scheme="http://www.blogger.com/atom/ns#" term="mcs"/><category scheme="http://www.blogger.com/atom/ns#" term="temp"/><category scheme="http://www.blogger.com/atom/ns#" term="temperature"/><title type='text'>Digital Temprature Controller</title><content type='html'>เป็น project ที่ไม่ซีเรียสมากแต่เอาไปใช้ได้จริง สามารถคุมได้ทั้งร้อนและเย็น&lt;br /&gt;ตั้งแต่ -55องศา ถึง 125องศาcompare routine สามารถคำนวนและเปรียบเทียบ&lt;br /&gt;ค่าลบได้ด้วย โดยคำนวนร่วมกับ flag tn,th,tl&lt;br /&gt;&lt;br /&gt;&lt;iframe width=&quot;425&quot; height=&quot;349&quot; src=&quot;http://www.youtube.com/embed/VDgXL8c7kcA&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;embed type=&quot;application/x-shockwave-flash&quot; src=&quot;https://picasaweb.google.com/s/c/bin/slideshow.swf&quot; width=&quot;425&quot; height=&quot;349&quot; flashvars=&quot;host=picasaweb.google.com&amp;hl=th&amp;feat=flashalbum&amp;RGB=0x000000&amp;feed=https%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2F103734209642572221176%2Falbumid%2F5632196343265461297%3Falt%3Drss%26kind%3Dphoto%26authkey%3DGv1sRgCKOQn_nUufzoYw%26hl%3Dth&quot; pluginspage=&quot;http://www.macromedia.com/go/getflashplayer&quot;&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;มาว่ากันเรื่องการคำนวน มีหลักๆก็&lt;br /&gt;TN ค่าอุณหภูมิ ปัจจุบันที่อ่านได้จาก ds18b20&lt;br /&gt;TH ค่าอุณหภูมิ สูงสุดที่เรากำหนด&lt;br /&gt;TL ค่าอุณหภูมิ ต่ำสุดที่เรากำหนด&lt;br /&gt;&lt;br /&gt;เริ่มแรกให้คำนวน TH กับ TN ก่อน TNน้อยกว่าTH ??&lt;br /&gt;ผมลองสุ่มค่าดังนี้&lt;br /&gt;tn+15 th+10 = tnมากกว่าth&lt;br /&gt;tn+15 th-10 = tnมากกว่าth&lt;br /&gt;tn+15 th-15 = tnมากกว่าth&lt;br /&gt;tn-15 th-20 = tnมากกว่าth&lt;br /&gt;tn-15 th+15 = tnน้อยกว่าth**&lt;br /&gt;การคำนวนให้คิดเครื่องหมายก่อนถ้าเป็นบวกทั้งคู่ใช้ th-tn&lt;br /&gt;ถ้าเป็นลบทั้งคู่ใช้ tn-th แต่ถ้า tn เป็นบวก th เป็นลบจะคิด&lt;br /&gt;แต่เครื่องหมายเพราะยังไง tn ก็ต้องเยอะกว่าแนนอนอยู่แล้ว&lt;br /&gt;ในทางตรงกันข้าม ถ้า tn เป็นลบ th เป็นบวก tn จะมีค่า&lt;br /&gt;น้อยกว่า ก็ข้ามไปคำนวณ tl ต่อไป&lt;br /&gt;&lt;br /&gt;TL กับ TN ก่อน TNน้อยกว่าTL ??&lt;br /&gt;ผมลองสุ่มค่าดังนี้&lt;br /&gt;tl+15 tn+10 = tnน้อยกว่าtl&lt;br /&gt;tl+15 tn-10 = tnน้อยกว่าtl&lt;br /&gt;tl+15 tn-15 = tnน้อยกว่าtl&lt;br /&gt;tl-15 tn-20 = tnน้อยกว่าtl&lt;br /&gt;tl-15 tn+15 = tnมากกว่าtl**&lt;br /&gt;การคำนวนให้คิดเครื่องหมายก่อนเช่นเดียวกับ th แต่คราวนี้&lt;br /&gt;ใช้ tn เป็นตัวตั้งลบด้วย tl หากเป็นค่าบวกทั้งคู่....&lt;br /&gt;ที่เหลื่อก้จะคำนวณคล้ายๆกันแค่สลับตัวตั้งเท่านั้น.....&lt;br /&gt;&lt;br /&gt;การทำงานใน Hot mode (คุมร้อน)&lt;br /&gt;เมื่อ TN ต่ำกว่าหรือเท่ากับ TL รีเลย์จะทำงานและจะตัด&lt;br /&gt;การทำงานจนกว่าค่าของ TN จะสูงกว่าหรือเท่ากับ TH&lt;br /&gt;&lt;br /&gt;การทำงานใน Cool mode (คุมเย็น)&lt;br /&gt;คล้าย คุมร้อน แต่สลับกัน...&lt;br /&gt;พอมองภาพออกกันมั๊ยครับ (ทั้งหมดนี่จะไม่มีความหมายหากเขียนด้วย ภาษาc)&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.4shared.com/file/gfLqfc-x/Digital_temperature_controller.html&quot;&gt;Source code v2.0f&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;FIRMWARE 4.0F&lt;br /&gt;รุ่นท้ายสุด... ผมปรับแก้ bug จนหมดแล้วครับ&lt;br /&gt;อีกอย่างคือยัดอะไรไม่ได้แล้ว เต็ม2kแล้วจริงๆ อยากใส่ delay time&lt;br /&gt;ให้ รีเลย์ แต่ยัดไม่ลงครับ ก็เลยเอาเท่าที่ได้...&lt;br /&gt;&lt;br /&gt;การตั้งค่า กด set ค้างไว้ 1 วิครับมันจะขึ้น HC_x ซึง x ก็คือ ตัวกระพริบ&lt;br /&gt;ถ้าเป็น C กระพริบก็ Cool คุมเย็น ถ้าเป็น H ก็คือ Hot คุมร้อน&lt;br /&gt;กดปุ่ม inc เพื่อตั้งค่า จากนั้นกด set อีกครั้ง หน้าจอจะแสดง Hi_t&lt;br /&gt;ประมาณ1วินาที จากนั้น จะเปลี่ยนเป็นตัวเลข4หลัก คือค่าอุณหภูมิสูง&lt;br /&gt;กดปุ่ม inc เพื่อตั้งค่าจากนั้นเลื่อนไปหลักต่อไปโดยกดปุ่ม set&lt;br /&gt;เมื่อตั้งค่าหลักสุดท้ายเสร็จ กดปุ่ม set อีกครั้ง หน้าจอจะเสดง Lo_t&lt;br /&gt;ประมาณ1วินาที จากนั้น จะเปลี่ยนเป็นตัวเลข4หลัก คือค่าอุณหภูมิต่ำ&lt;br /&gt;กดปุ่ม inc เพื่อตั้งค่าจากนั้นเลื่อนไปหลักต่อไปโดยกดปุ่ม set&lt;br /&gt;เมื่อตั้งค่าหลักสุดท้ายเสร็จ กดปุ่ม set อีกครั้ง หน้าจอจะเสดง Succ&lt;br /&gt;เป้นอันเสร็จการตั้งค่า&lt;br /&gt;&lt;br /&gt;การ ลบค่าอุณหภูมิที่ตั้งไว้ทั้งหมด ทำได้โดยกด ปุ่ม set กับ inc ค้าง&lt;br /&gt;ไว้ 1วิ หน้าจอจะแสดง CLr เท่านี้ค่าต่างๆก็จะถูกลบออกหมดแล้ว...&lt;br /&gt;&lt;br /&gt;4.0F ผมตัด function ที่เกี่ยวกับ EEPROM ทั้งหมดออกนะครับ&lt;br /&gt;อยากได้ต้องไปเพิ่มกันเองครับ เหลือไว้ให้คิดเองบ้างครับ ชีวิตจะได้&lt;br /&gt;มีรสชาติ...อิอิ คงไปต่อยอดกันเองได้ไม่ยากนะ...&lt;br /&gt;&lt;br /&gt;ปล. เกี่ยวกับ error msg.&lt;br /&gt;Er_1 = family code ไม่ตรง หรือไม่ใช่ ds18b20 ที่ต่ออยู่&lt;br /&gt;แต่ผมตัดออกเพาระไม่จำเป็น.&lt;br /&gt;Er_2 = Device not Presence ไม่มีการตอบสนอง ต่อการ&lt;br /&gt;reset บน bus 1-wire ซึ่งตัว ds18b20 อาจจะเสียหรือหลุด&lt;br /&gt;หือสายอาจจะขาดก็ว่าไป.&lt;br /&gt;Er_3 = ค่าอุณหภูมิสูง มีค่าที่น้อยกว่า ค่าอุณหภูมิต่ำ.&lt;br /&gt;Er_4 = ค่าอุณหภูมิสูง และหรือ ค่าอุณหภูมิต่ำ มีค่าเกินย่านวัด&lt;br /&gt;คือ -55 ถึง +125 องศา.&lt;br /&gt;Er_5 = อันนี้เกี่ยวกับ EEPROM ทั้งหมด 4.0F จะไม่มี&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.4shared.com/file/ozlAOxSW/Digital_temperature_controller.html&quot;&gt;Source code v4.0f&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://microcon99.blogspot.com/feeds/6631112135225923929/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7445804107681783656/6631112135225923929' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7445804107681783656/posts/default/6631112135225923929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7445804107681783656/posts/default/6631112135225923929'/><link rel='alternate' type='text/html' href='http://microcon99.blogspot.com/2011/06/thermostat-with-mcs51ds18b20-code.html' title='Digital Temprature Controller'/><author><name>microcon99</name><uri>http://www.blogger.com/profile/09181392996946203603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_e979fhiC3orsnmtf19Smf0kR0TYNMMRxNbmBJwydORNCxka-mPMtT8VRMjdXJ5M3OqJ356MUJTJaQ7_urCfxpo4YT_jTSQ3679deYZELpSY9QMMpHDQbwfQ91WVqaw/s220/12916815201.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/VDgXL8c7kcA/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7445804107681783656.post-227035190583295179</id><published>2011-05-21T03:10:00.000-07:00</published><updated>2011-09-29T00:36:28.773-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="51"/><category scheme="http://www.blogger.com/atom/ns#" term="7"/><category scheme="http://www.blogger.com/atom/ns#" term="Digital"/><category scheme="http://www.blogger.com/atom/ns#" term="display"/><category scheme="http://www.blogger.com/atom/ns#" term="ds1820"/><category scheme="http://www.blogger.com/atom/ns#" term="fttl655s"/><category scheme="http://www.blogger.com/atom/ns#" term="mcs"/><category scheme="http://www.blogger.com/atom/ns#" term="segment"/><category scheme="http://www.blogger.com/atom/ns#" term="temp"/><category scheme="http://www.blogger.com/atom/ns#" term="temp clock"/><title type='text'>Digital Clock &amp; Temp with FTTL-655 Display</title><content type='html'>FTTL-655 เป็นจอแบบ Duplex LED Display ผมไม่เคยเล่นหรือเจอจอแบบนี้มาก่อน&lt;br /&gt;มันประหลาดดี มันจะมี 2 common แถมแต่ละ sigment พ่วงกันแบบ งงๆ&lt;br /&gt;หา datasheet ก็ไม่มี แต่ไปเจออันนี้เข้า&lt;br /&gt;http://libesz.digitaltrip.hu/digital-clock/&lt;br /&gt;มีที่เดียวจริงๆ แถม Source ดันเป็นภาษา C อีก เลยต้องดำน้ำเอง&lt;br /&gt;&lt;br /&gt;&lt;iframe width=&quot;425&quot; height=&quot;349&quot; src=&quot;http://www.youtube.com/embed/p8BHQMSrdJU?hl=th&amp;fs=1&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;มาว่ากันถึงหลักการขับแบบที่ผมคิดเอง&lt;br /&gt;FTTL655S มีตัวเลข 4 หลัก ใช้ pin ในการขับ segment 14pin&lt;br /&gt;มี colon ด้วยก็ 15pin พอดี แบบไม่รวม common และ am-pm ผมไม่ได้ใช้&lt;br /&gt;&lt;br /&gt;&lt;embed type=&quot;application/x-shockwave-flash&quot; src=&quot;https://picasaweb.google.com/s/c/bin/slideshow.swf&quot; width=&quot;425&quot; height=&quot;349&quot; flashvars=&quot;host=picasaweb.google.com&amp;hl=th&amp;feat=flashalbum&amp;RGB=0x000000&amp;feed=https%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2F103734209642572221176%2Falbumid%2F5633528040671486065%3Falt%3Drss%26kind%3Dphoto%26authkey%3DGv1sRgCJWl-OGdrPD8_AE%26hl%3Dth&quot; pluginspage=&quot;http://www.macromedia.com/go/getflashplayer&quot;&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;อันดับแรกผมจะแบ่ง จอออกเป็น 4 ส่วน เพื่อง่ายต่อการมอง&lt;br /&gt;ใช้ข้อมูล 4byte คือ 2byte บน 2byte ล่าง แยกจากกัน&lt;br /&gt;ข้อมูล segment หลัก1-2 ใช้ 2byte คือ 1byte บน 1byte ล่าง&lt;br /&gt;ข้อมูล segment หลัก3-4 ใช้ 2byte คือ 1byte บน 1byte ล่าง&lt;br /&gt;&lt;br /&gt;ในข้อมูล 1byte ที่ส่งให้กับ segment จะประกอบด้วย&lt;br /&gt;เลขสองหลัก และในตัวเลขสองหลักจะมี 2common sigment พ่วงกัน&lt;br /&gt;จึงต้องแบ่งแยกข้อมูลออกเป็น 4 ชุดคือ&lt;br /&gt;&lt;br /&gt;Table A = digit1บน+digit2บน&lt;br /&gt;Table B = digit1ล่าง+digit2ล่าง&lt;br /&gt;&lt;br /&gt;เอาทั้งหมดมารวมกันเป็น 2byte บนกับล่าง (A กับ B) ส่งแล้ว scan ตามลำดับ&lt;br /&gt;&lt;br /&gt;เนื่องจากจอเป็นแบบ 2common การ scan จึงทำได้สองครั้ง&lt;br /&gt;ผมก็เอาข้อมูล หลัก1-2 บน กับ หลัก3-4 บน ส่งออกไปยัง port 1-2&lt;br /&gt;ตามลำดับ จากนั้นสั่ง common1 on ต่อไป ก็เอาข้อมูล หลัก1-2 ล่าง&lt;br /&gt;กับ หลัก3-4 ล่าง ส่งออกไปยัง port 1-2 จากนั้นสั่ง common 2 on&lt;br /&gt;&lt;br /&gt;การเปิดตาราง (อ้างจาก Code) โปรดดูรูปวงจรของ FTTL655S ประกอบ&lt;br /&gt;ถ้านับหลักซ้ายมือสุดเป็นหลักที่1จะเห็นว่ามีการต่อ segment เหมือนกัน&lt;br /&gt;ในหลักที่ 2 และ 4 สามารถใช้ตารางเดียกันได้ ส่วนหลักที่ 1 และ 3 ต่างกัน&lt;br /&gt;เราก็แยกเป็นสองตาราง รวมทั้งหมด 3 ตาราง โดย table-A ใช้กับหลักที่ 1&lt;br /&gt;table-B ใช้กับหลักที่ 3 และ table-C ใช้กับหลักที่ 2และ4&lt;br /&gt;&lt;br /&gt;ต่อไปเป็นการเปิดตารางผมจะเรียกข้อมูลชุดบนว่า A และชุดล่างว่า B&lt;br /&gt;ทุกครั้งที่เปิดตารางของแต่ละหลัก จะได้ข้อมูล 2 ชุด คือ A และ B&lt;br /&gt;ซึ่งก็คือข้อมูลของ Common ซึ่งมีอยู่สองชุดนั่นเอง&lt;br /&gt;แต่ใน 1 byte นั้นมันจะมีตัวเลขอยู่สองหลัก ดังนั้นเมื่อเปิดตารางแล้ว&lt;br /&gt;ก็จะได้ข้อมูลมา 4 ชุดหรือ 4 byte คือ&lt;br /&gt;&lt;br /&gt;A หลักที่ 1 และ B หลักที่ 1&lt;br /&gt;A หลักที่ 2 และ B หลักที่ 2&lt;br /&gt;&lt;br /&gt;นำข้อมูล A1 กับ A2 มา OR กันเป็น 1 byte&lt;br /&gt;นำข้อมูล B1 กับ B2 มา OR กันเป็น 1 byte&lt;br /&gt;&lt;br /&gt;การ scan ทำดังนี้&lt;br /&gt;1.สั่ง Common 1-2 Off&lt;br /&gt;2.เอาข้อมูลที่ได้จาก A1+A2 ส่งออกไปที่ port สั่ง Common 1 On&lt;br /&gt;ค้างไว้ 5ms จากนั้น&lt;br /&gt;3.สั่ง Common 1-2 Off&lt;br /&gt;4.เอาข้อมูลที่ได้จาก B1+B2 ส่งออกไปที่ port สั่ง Common 2 On&lt;br /&gt;ค้างไว้ 5ms กลับไปทำข้อ 1&lt;br /&gt;&lt;br /&gt;จบแล้วครับ อาจไม่สมบูรณ์เท่าไร แต่คงพอเป็นแนวทางได้นะครับ&lt;br /&gt;&lt;br /&gt;ประกอบไปด้วย Program Driver ตัวอย่าง และ Program นาฬิกา DS1307&lt;br /&gt;และ Temp DS18B20 แก้ไขจาก Digital clock - Temp with 1.8 LED Display&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.4shared.com/file/A4yQe4j4/FTTL655S.html&quot;&gt;&lt;br /&gt;Source Code&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://microcon99.blogspot.com/feeds/227035190583295179/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7445804107681783656/227035190583295179' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7445804107681783656/posts/default/227035190583295179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7445804107681783656/posts/default/227035190583295179'/><link rel='alternate' type='text/html' href='http://microcon99.blogspot.com/2011/05/digital-clock-with-fttl655s-duplex-led.html' title='Digital Clock &amp; Temp with FTTL-655 Display'/><author><name>microcon99</name><uri>http://www.blogger.com/profile/09181392996946203603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_e979fhiC3orsnmtf19Smf0kR0TYNMMRxNbmBJwydORNCxka-mPMtT8VRMjdXJ5M3OqJ356MUJTJaQ7_urCfxpo4YT_jTSQ3679deYZELpSY9QMMpHDQbwfQ91WVqaw/s220/12916815201.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/p8BHQMSrdJU/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7445804107681783656.post-5391463777025876795</id><published>2011-03-17T18:51:00.000-07:00</published><updated>2011-09-29T00:50:27.364-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="51"/><category scheme="http://www.blogger.com/atom/ns#" term="display"/><category scheme="http://www.blogger.com/atom/ns#" term="dot"/><category scheme="http://www.blogger.com/atom/ns#" term="matrix"/><category scheme="http://www.blogger.com/atom/ns#" term="mcs"/><category scheme="http://www.blogger.com/atom/ns#" term="scan"/><title type='text'>การสแกน Dot Matrix</title><content type='html'>ตัวอย่างใน วีโอ ใช้ col scan จะเห็นได้ว่าข้อมูล ในแต่ละ col&lt;br /&gt;จะถูกส่งออกที่ละอัน โดยข้อมูลเป็นของ col segment ไหน&lt;br /&gt;ก็ on col segment นั้น ถ้าเราหน่วงเวลาช้าๆ ก็จะเห้นเป็นแค่ไฟวิ่งแค่นั้น&lt;br /&gt;แต่ถ้าลองเร็วๆซัก 5ms ก็จะเห็นเป็นตัวอักษรแล้ว...&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;br /&gt;วีโอเป็น HD นะครับขยายได้ถ้ามองไม่ชัด&lt;/span&gt;&lt;br /&gt;&lt;iframe src=&quot;http://www.youtube.com/embed/AHGd3p6RRNY?fs=1&quot; allowfullscreen=&quot;&quot; width=&quot;425&quot; frameborder=&quot;0&quot; height=&quot;344&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;;//****************************&lt;br /&gt;;//* Source Code For AT89c2051&lt;br /&gt;;//****************************&lt;br /&gt;&lt;br /&gt;shift_dat bit p1.0&lt;br /&gt;shift_clk bit p1.1&lt;br /&gt;col_lat  bit p1.2&lt;br /&gt;row_lat  bit p1.3&lt;br /&gt;&lt;br /&gt;;data segment&lt;br /&gt;dseg at 020h&lt;br /&gt;col_dat: ds 1&lt;br /&gt;row_dat: ds 1&lt;br /&gt;&lt;br /&gt;dl_a:  ds 1&lt;br /&gt;dl_b:  ds 1&lt;br /&gt;dl_c:  ds 1&lt;br /&gt;&lt;br /&gt;;//***** macro operator *****//;&lt;br /&gt;set_col  macro ___col_dat&lt;br /&gt;mov a,#___col_dat&lt;br /&gt;cpl a&lt;br /&gt;acall col_shift_dat&lt;br /&gt;endm&lt;br /&gt;&lt;br /&gt;set_row  macro ___row_dat&lt;br /&gt;mov a,#___row_dat&lt;br /&gt;acall row_shift_dat&lt;br /&gt;endm&lt;br /&gt;&lt;br /&gt;clr_col  macro&lt;br /&gt;acall col_clear_dat&lt;br /&gt;endm&lt;br /&gt;&lt;br /&gt;delay_ms macro ___d_1&lt;br /&gt;mov dl_b,#___d_1&lt;br /&gt;acall delay&lt;br /&gt;endm&lt;br /&gt;&lt;br /&gt;delay_x  macro&lt;br /&gt;delay_ms (5)&lt;br /&gt;endm&lt;br /&gt;&lt;br /&gt;;code segment&lt;br /&gt;;//***** ap code start *****//;&lt;br /&gt;cseg at 0000h&lt;br /&gt;ajmp initial&lt;br /&gt;&lt;br /&gt;cseg at 0050h&lt;br /&gt;initial: mov p1,#0ffh&lt;br /&gt;mov p3,#0ffh&lt;br /&gt;mov sp,#050h&lt;br /&gt;&lt;br /&gt;;clear internal ram&lt;br /&gt;mov r0,#07fh&lt;br /&gt;clr a&lt;br /&gt;mov @r0,a&lt;br /&gt;djnz r0,$-1&lt;br /&gt;&lt;br /&gt;;shift initial logic&lt;br /&gt;clr shift_clk&lt;br /&gt;clr col_lat&lt;br /&gt;clr row_lat&lt;br /&gt;&lt;br /&gt;;//***** main program *****//;&lt;br /&gt;main:  set_row (0ffh)   ; set row data col-1&lt;br /&gt;set_col (00000001b)  ; set col-1 on&lt;br /&gt;&lt;br /&gt;delay_x    ; delay 200ms&lt;br /&gt;clr_col    ; clear col data reduct blur&lt;br /&gt;&lt;br /&gt;set_row (011h)   ; set row data col-2&lt;br /&gt;set_col (00000010b)  ; set col-2 on&lt;br /&gt;&lt;br /&gt;delay_x    ; delay 200ms&lt;br /&gt;clr_col    ; clear col data reduct blur&lt;br /&gt;&lt;br /&gt;set_row (011h)   ; set row data col-3&lt;br /&gt;set_col (00000100b)  ; set col-3 on&lt;br /&gt;&lt;br /&gt;delay_x    ; delay 200ms&lt;br /&gt;clr_col    ; clear col data reduct blur&lt;br /&gt;&lt;br /&gt;set_row (031h)   ; set row data col-4&lt;br /&gt;set_col (00001000b)  ; set col-4 on&lt;br /&gt;&lt;br /&gt;delay_x    ; delay 200ms&lt;br /&gt;clr_col    ; clear col data reduct blur&lt;br /&gt;&lt;br /&gt;set_row (051h)   ; set row data col-5&lt;br /&gt;set_col (00010000b)  ; set col-5 on&lt;br /&gt;&lt;br /&gt;delay_x    ; delay 200ms&lt;br /&gt;clr_col    ; clear col data reduct blur&lt;br /&gt;&lt;br /&gt;set_row (08eh)   ; set row data col-6&lt;br /&gt;set_col (00100000b)  ; set col-6 on&lt;br /&gt;&lt;br /&gt;delay_x    ; delay 200ms&lt;br /&gt;clr_col    ; clear col data reduct blur&lt;br /&gt;&lt;br /&gt;set_row (0h)   ; set row data col-7&lt;br /&gt;set_col (01000000b)  ; set col-7 on&lt;br /&gt;&lt;br /&gt;delay_x    ; delay 200ms&lt;br /&gt;clr_col    ; clear col data reduct blur&lt;br /&gt;&lt;br /&gt;set_row (0h)   ; set row data col-8&lt;br /&gt;set_col (10000000b)  ; set col-8 on&lt;br /&gt;&lt;br /&gt;delay_x    ; delay 200ms&lt;br /&gt;clr_col    ; clear col data reduct blur&lt;br /&gt;&lt;br /&gt;ajmp main&lt;br /&gt;&lt;br /&gt;;//***** delay ms min=1ms max=255ms *****//;&lt;br /&gt;delay:  mov dl_a,#230&lt;br /&gt;delay1:  nop&lt;br /&gt;djnz dl_a,delay1&lt;br /&gt;djnz dl_b,delay&lt;br /&gt;ret&lt;br /&gt;&lt;br /&gt;;//***** col shift data *****//;&lt;br /&gt;col_shift_dat: mov b,#8&lt;br /&gt;col_shift_dat1: rlc a&lt;br /&gt;mov shift_dat,c&lt;br /&gt;setb shift_clk&lt;br /&gt;nop&lt;br /&gt;clr shift_clk&lt;br /&gt;djnz b,col_shift_dat1&lt;br /&gt;setb col_lat&lt;br /&gt;nop&lt;br /&gt;clr col_lat&lt;br /&gt;ret&lt;br /&gt;&lt;br /&gt;;//***** row shift data *****//;&lt;br /&gt;row_shift_dat: mov b,#8&lt;br /&gt;row_shift_dat1: rlc a&lt;br /&gt;mov shift_dat,c&lt;br /&gt;setb shift_clk&lt;br /&gt;nop&lt;br /&gt;clr shift_clk&lt;br /&gt;djnz b,row_shift_dat1&lt;br /&gt;setb row_lat&lt;br /&gt;nop&lt;br /&gt;clr row_lat&lt;br /&gt;ret&lt;br /&gt;&lt;br /&gt;col_clear_dat: mov b,#8&lt;br /&gt;col_clear_dat1: setb shift_dat&lt;br /&gt;setb shift_clk&lt;br /&gt;nop&lt;br /&gt;clr shift_clk&lt;br /&gt;djnz b,col_clear_dat1&lt;br /&gt;setb col_lat&lt;br /&gt;nop&lt;br /&gt;clr col_lat&lt;br /&gt;ret&lt;br /&gt;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;ผมใช้การสแกนแบบ col ครับ มันประหยัด ram ดี&lt;br /&gt;เริ่มแรกต้องทำความเข้าใจว่า row &amp;amp; col คืออะไร รู้แล้วไม่เป็นไร&lt;br /&gt;เอาคนที่ไม่รู้ row คือ แถวในแนวนอน col คือ แถวในแนวตั้ง&lt;br /&gt;&lt;br /&gt;การสแกนแบบ row คือ&lt;br /&gt;1.ส่ง data col register ก็คือ ข้อมูลทาง row นั่นเอง&lt;br /&gt;2.สั่ง row segment on&lt;br /&gt;3.หน่วงเวลา ประมาณ 5 ms&lt;br /&gt;4.เลื่อนข้อมุล data col register กลับไปทำ ข้อ 1&lt;br /&gt;วนจนครบ 8 ครั้ง ก็เป็น 8 แถวพอดี&lt;br /&gt;&lt;br /&gt;การสแกนแบบ col คือ&lt;br /&gt;1.ส่ง data row register ก็คือ ข้อมูลทาง col นั่นเอง&lt;br /&gt;2.สั่ง col segment on&lt;br /&gt;3.หน่วงเวลา ประมาณ 5 ms&lt;br /&gt;4.เลื่อนข้อมุล data row register กลับไปทำ ข้อ 1&lt;br /&gt;วนจนครบ 8 ครั้ง ก็เป็น 8 แถวพอดี</content><link rel='replies' type='application/atom+xml' href='http://microcon99.blogspot.com/feeds/5391463777025876795/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7445804107681783656/5391463777025876795' title='4 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7445804107681783656/posts/default/5391463777025876795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7445804107681783656/posts/default/5391463777025876795'/><link rel='alternate' type='text/html' href='http://microcon99.blogspot.com/2011/03/dot-matrix-1.html' title='การสแกน Dot Matrix'/><author><name>microcon99</name><uri>http://www.blogger.com/profile/09181392996946203603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_e979fhiC3orsnmtf19Smf0kR0TYNMMRxNbmBJwydORNCxka-mPMtT8VRMjdXJ5M3OqJ356MUJTJaQ7_urCfxpo4YT_jTSQ3679deYZELpSY9QMMpHDQbwfQ91WVqaw/s220/12916815201.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/AHGd3p6RRNY/default.jpg" height="72" width="72"/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7445804107681783656.post-2729400215776193941</id><published>2011-03-09T22:20:00.000-08:00</published><updated>2011-09-29T02:14:18.092-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="51"/><category scheme="http://www.blogger.com/atom/ns#" term="display"/><category scheme="http://www.blogger.com/atom/ns#" term="dot"/><category scheme="http://www.blogger.com/atom/ns#" term="matrix"/><category scheme="http://www.blogger.com/atom/ns#" term="mcs"/><category scheme="http://www.blogger.com/atom/ns#" term="scan"/><title type='text'>LED Dot Matrix Display V2</title><content type='html'>LED Dot Matrix Display V2&lt;br /&gt;&lt;br /&gt;&lt;iframe src=&quot;http://www.youtube.com/embed/tTEgk5_Ft_Y?fs=1&quot; allowfullscreen=&quot;&quot; width=&quot;425&quot; frameborder=&quot;0&quot; height=&quot;344&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;มาแล้วครับ V2 แก้ bug นิดหน่อยอาจมีเหลือบ้าง ด้วย memory ที่จำกัด&lt;br /&gt;ผมใช้วิธี col-scan ครับ row-scan มันเปลือง mem ความสว่างสู่สีกัน&lt;br /&gt;source ตัวนี้มี macro ใหม่ 2-3 ตัว&lt;br /&gt;เช่น wr_bf เป็นคำสั่งเขียนข้อมูลไปยัง buffer แล้วแต่จะระบุเช่น&lt;br /&gt;ds_buf1-4 เป็นตำแหน่ง display buffer เขียนอะไรออกไปก็เห็นเลย.....&lt;br /&gt;cg_buf1-4 เป็นตำแหน่ง char buffer ไว้เก็บอักษรที่ต้องการแสดง.....&lt;br /&gt;&lt;br /&gt;ส่วน PUT_STR_L เป็นคำสั่งใช้ เปิดตาราง เอามาแสดงผลพร้อมกับเลื่อน&lt;br /&gt;ไปทางซ้ายเรือยๆจนกว่าจะเจอ byte ปิด 00h&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.4shared.com/file/2Pqja7vO/dot_matrix_8x22_v2.html&quot;&gt;Source Code v2.0&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://microcon99.blogspot.com/feeds/2729400215776193941/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7445804107681783656/2729400215776193941' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7445804107681783656/posts/default/2729400215776193941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7445804107681783656/posts/default/2729400215776193941'/><link rel='alternate' type='text/html' href='http://microcon99.blogspot.com/2011/03/led-dot-matrix-display-v2.html' title='LED Dot Matrix Display V2'/><author><name>microcon99</name><uri>http://www.blogger.com/profile/09181392996946203603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_e979fhiC3orsnmtf19Smf0kR0TYNMMRxNbmBJwydORNCxka-mPMtT8VRMjdXJ5M3OqJ356MUJTJaQ7_urCfxpo4YT_jTSQ3679deYZELpSY9QMMpHDQbwfQ91WVqaw/s220/12916815201.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/tTEgk5_Ft_Y/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7445804107681783656.post-1530193469025477296</id><published>2011-02-26T23:39:00.000-08:00</published><updated>2011-09-29T02:13:24.448-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="51"/><category scheme="http://www.blogger.com/atom/ns#" term="display"/><category scheme="http://www.blogger.com/atom/ns#" term="dot"/><category scheme="http://www.blogger.com/atom/ns#" term="matrix"/><category scheme="http://www.blogger.com/atom/ns#" term="mcs"/><category scheme="http://www.blogger.com/atom/ns#" term="scan"/><title type='text'>LED Dot Matrix Display V1</title><content type='html'>&lt;iframe src=&quot;http://www.youtube.com/embed/E9jQvkyEIQQ?fs=1&quot; allowfullscreen=&quot;&quot; width=&quot;425&quot; frameborder=&quot;0&quot; height=&quot;344&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;เนื่องจากทุนน้อยครับเอามันแค่นี้ก่อน&lt;br /&gt;&lt;br /&gt;การเลื่อนตัวอักษรไม่ได้ยากเท่าใดนัก ทั้งหมดสามารถทำผ่าน buffer ได้ง่ายๆ&lt;br /&gt;โดยกำหนด buffer ขึ้นมาเท่าจำนวนของ column ในรูปคือ 20 byte&lt;br /&gt;ส่วนอีก 5 byte มีไว้ใช้ buffer ข้อมูลจากการเปิดตาราง แล้วเอามา&lt;br /&gt;พักไว้ที่นี่ step การเลื่อนข้อความเบื้องต้นคือ&lt;br /&gt;&lt;br /&gt;1.กำหนดตำแหน่งแรกของ pointer ข้อความ&lt;br /&gt;2.กำหนดตำแหน่ง ที่ character buffer&lt;br /&gt;3.เปิดตารางตัวอักษรจาก pointer&lt;br /&gt;4.นำค่าจากตารางเก็บลง buffer&lt;br /&gt;5.scan display ไว้ระยะหนึ่ง&lt;br /&gt;6.เลื่อนข้อมูล display buffer ทั้งหมด ไปทางซ้าย 1 ครั้ง&lt;br /&gt;แล้วกลับไปข้อ 5. ทำจนครบ 5 ครั้ง&lt;br /&gt;7.เพิ่มค่า pointer กลับไปข้อ 2.&lt;br /&gt;&lt;br /&gt;การ scan display ใช้หลักการคล้ายๆกับ 7 segment&lt;br /&gt;คือ กำหนด pointer ที่ตำแหน่งแรก display buffer1 (30H)&lt;br /&gt;แล้วนำค่าที่ pointer ชี้ไปส่งให้ Row Shift register&lt;br /&gt;เพื่อส่งไปยัง dot matrix จากนั้นให้ column on&lt;br /&gt;เพิ่มค่า pointer ทำจนครบ 20 column&lt;br /&gt;&lt;br /&gt;tip....&lt;br /&gt;คือ data เป็นของ column ไหนก็ให้ column นั้น on&lt;br /&gt;อย่างวงจรที่ผมใช้ column เป็นลบ ผมก็สั่ง ให้ shift bit&lt;br /&gt;นั้นเป็น 0 ครับ... และก่อนจะส่งค่าใดๆทาง row ให้&lt;br /&gt;off ทุก column ก่อนเสมอ ช่วยแก้เบลอได้ 100%&lt;br /&gt;รายละเอียดหลักๆ น่าจะมีเท่านี้ ถ้าได้อะไรใหม่ๆจะมาเล่าให้ฟังอีกที.....&lt;br /&gt;&lt;br /&gt;source ตัวนี้ผมทำ buffer ไว้ 24 byte ครับ&lt;br /&gt;เวลาเรียกใช้ ให้ใส่ค่า address 1-4 ลง acc&lt;br /&gt;โดยเรียกโปรแกรมย่อย setaddress จากนั้น ตามด้วย putchar&lt;br /&gt;&lt;br /&gt;ตัวอย่าง....&lt;br /&gt;mov    a,#1&lt;br /&gt;acall    setaddress     ;buffer ตำแหน่งที่1&lt;br /&gt;mov    a,#&quot;A&quot;&lt;br /&gt;acall    putchar     ;เก็บค่า &quot;A&quot; จากตาราง ลง buffer ตำแหน่งที่1&lt;br /&gt;&lt;br /&gt;ในส่วนของ scan display เอาค่าที่เก็บจาก buffer ไปใช้ได้เลย&lt;br /&gt;โดยมีคำสั่ง shift display ไว้ให้แล้ว&lt;br /&gt;ตัวเต็มผม open source เหมือนเดิม แต่คงเอาแค่ อ่านข้อความจาก&lt;br /&gt;programmemory เอามาวิ่งแสดงเฉยๆ ที่เหลือไปเขียนต่อกันเอง&lt;br /&gt;เพราะเดี๋ยวจะงงกันซะเปล่าๆ video ผมถ่ายชัดสุดได้แค่นี้...&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.4shared.com/file/rhfAv1Jn/dot_matrix_v1.html&quot;&gt;Source Code v1.0&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://microcon99.blogspot.com/feeds/1530193469025477296/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7445804107681783656/1530193469025477296' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7445804107681783656/posts/default/1530193469025477296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7445804107681783656/posts/default/1530193469025477296'/><link rel='alternate' type='text/html' href='http://microcon99.blogspot.com/2011/02/led-dot-matrix-display.html' title='LED Dot Matrix Display V1'/><author><name>microcon99</name><uri>http://www.blogger.com/profile/09181392996946203603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_e979fhiC3orsnmtf19Smf0kR0TYNMMRxNbmBJwydORNCxka-mPMtT8VRMjdXJ5M3OqJ356MUJTJaQ7_urCfxpo4YT_jTSQ3679deYZELpSY9QMMpHDQbwfQ91WVqaw/s220/12916815201.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/E9jQvkyEIQQ/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7445804107681783656.post-3485148113552550202</id><published>2011-02-20T04:00:00.000-08:00</published><updated>2011-09-29T00:39:57.857-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="2"/><category scheme="http://www.blogger.com/atom/ns#" term="51"/><category scheme="http://www.blogger.com/atom/ns#" term="7"/><category scheme="http://www.blogger.com/atom/ns#" term="at89c2051"/><category scheme="http://www.blogger.com/atom/ns#" term="digit"/><category scheme="http://www.blogger.com/atom/ns#" term="ds18b20"/><category scheme="http://www.blogger.com/atom/ns#" term="mcs"/><category scheme="http://www.blogger.com/atom/ns#" term="monitor"/><category scheme="http://www.blogger.com/atom/ns#" term="segment"/><category scheme="http://www.blogger.com/atom/ns#" term="temp"/><title type='text'>7 Segment Thermometer 2 Digit</title><content type='html'>เป็น Temp monitor ที่ผมพยายามทำให้เล็กที่สุดครับซึ่งทำได้เล็กสุดแค่นี้&lt;br /&gt;&lt;br /&gt;&lt;iframe width=&quot;425&quot; height=&quot;349&quot; src=&quot;http://www.youtube.com/embed/VJVYGCPNTTk&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;ย่านการวัด อยู่ที่ -9 ถึง +99 องศา ตามหลักของ 7segment&lt;br /&gt;ที่เอาแค่หลักสิบไม่มีทศนิยม ถ้าเกินกว่าย่านวัดที่กำหนด จะมีตัว Er กระพริบ&lt;br /&gt;&lt;br /&gt;&lt;embed type=&quot;application/x-shockwave-flash&quot; src=&quot;https://picasaweb.google.com/s/c/bin/slideshow.swf&quot; width=&quot;425&quot; height=&quot;349&quot; flashvars=&quot;host=picasaweb.google.com&amp;hl=th&amp;feat=flashalbum&amp;RGB=0x000000&amp;feed=https%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2F103734209642572221176%2Falbumid%2F5632890851724462529%3Falt%3Drss%26kind%3Dphoto%26authkey%3DGv1sRgCIW5hdvsroXW0AE%26hl%3Dth&quot; pluginspage=&quot;http://www.macromedia.com/go/getflashplayer&quot;&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;ตัวแรกผมใช้กับ DS18S20 แต่ผมเห็นราคามันแพง เลยแก้ไปใช้กับ&lt;br /&gt;DS18B20แทน ด้านอุปกรณ์ผมออกแบบให้ใช้อุปกรณ์ให้น้อยที่สุด&lt;br /&gt;ราคาโดยรวมไม่น่าเกิน 150 บาท (เน้นประหยัด)&lt;br /&gt;&lt;br /&gt;ปล.อาจมีคนทำเล่นเยอะแล้ว แต่ของmcs-51 หายากที่เห็นๆดูจะใช้อุปกรณ์&lt;br /&gt;เยอะไปหน่อยไม่ค่อยถูกใจ&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.4shared.com/file/nKaMhbCk/Temp2digit_7segment.html&quot;&gt;Source Code v1.0&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://microcon99.blogspot.com/feeds/3485148113552550202/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7445804107681783656/3485148113552550202' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7445804107681783656/posts/default/3485148113552550202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7445804107681783656/posts/default/3485148113552550202'/><link rel='alternate' type='text/html' href='http://microcon99.blogspot.com/2011/02/thermometer-2digit-7segment.html' title='7 Segment Thermometer 2 Digit'/><author><name>microcon99</name><uri>http://www.blogger.com/profile/09181392996946203603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_e979fhiC3orsnmtf19Smf0kR0TYNMMRxNbmBJwydORNCxka-mPMtT8VRMjdXJ5M3OqJ356MUJTJaQ7_urCfxpo4YT_jTSQ3679deYZELpSY9QMMpHDQbwfQ91WVqaw/s220/12916815201.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/VJVYGCPNTTk/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7445804107681783656.post-1364784093508202308</id><published>2011-02-16T23:58:00.000-08:00</published><updated>2011-09-29T02:00:46.790-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="51"/><category scheme="http://www.blogger.com/atom/ns#" term="5110"/><category scheme="http://www.blogger.com/atom/ns#" term="at89c051"/><category scheme="http://www.blogger.com/atom/ns#" term="ds1820"/><category scheme="http://www.blogger.com/atom/ns#" term="mcs"/><category scheme="http://www.blogger.com/atom/ns#" term="nokia"/><category scheme="http://www.blogger.com/atom/ns#" term="temp"/><title type='text'>Thermometer  Nokia 5110 Lcd</title><content type='html'>&lt;embed type=&quot;application/x-shockwave-flash&quot; src=&quot;https://picasaweb.google.com/s/c/bin/slideshow.swf&quot; width=&quot;425&quot; height=&quot;349&quot; flashvars=&quot;host=picasaweb.google.com&amp;hl=th&amp;feat=flashalbum&amp;RGB=0x000000&amp;feed=https%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2F103734209642572221176%2Falbumid%2F5657701654581950065%3Falt%3Drss%26kind%3Dphoto%26authkey%3DGv1sRgCPfml8bb4IS1rQE%26hl%3Dth&quot; pluginspage=&quot;http://www.macromedia.com/go/getflashplayer&quot;&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;เห็นมีแต่ของ PIC กับ AVR เยอะ เลยทำของ mcs-51 มั่งการแสดงผล&lt;br /&gt;เหมือนกับอันนี้ทุกอย่าง&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.ivica-novakovic.from.hr/Nokia%20Lcd%20Termometar-eng.htm&quot;&gt;http://www.ivica-novakovic.from.hr&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;แกะ hex code อยู่3วัน เพราะไม่เคยเล่น glcd เลย ที่เป็นภาษา c&lt;br /&gt;ก็อ่านไม่ค่อยรู้เรื่องไม่รู้ว่าเขา write image พร้อมกับ ตัวเลขยังไง&lt;br /&gt;p.m ไปหาพี่.. คนหนึ่งใน e-today ก็เงียบ.. มารู้เอาตอนแกะ code&lt;br /&gt;นี่แหละ ตอนแรกเห็นเวบมันมีให้แต่ hex เลยทำตามดู.... มันเจือก&lt;br /&gt;ไม่แสดงอะไรเลย ตรวจแล้วตรวจอีกว่าหนู๋ผิดตรงไหน ทำไม่มันไม่ติด&lt;br /&gt;เลยแกะ code มันซะเลย... แต่ ไม่ได้ง่ายนัก มางงตรง analog-bar&lt;br /&gt;ทั้ง bit flag bit status มั่วไปหมด แถมพี่แกเล่นเอา image table&lt;br /&gt;ไปไว้ที่ eeprom ส่วนนึงด้วยเพราะว่า program memory คงไม่พอเก็บ&lt;br /&gt;แต่บทจะทำได้ เขียนได้ block เดียว... ที่เหลือเขียนเหมือนกันหมด....&lt;br /&gt;&lt;br /&gt;มาว่าถึงหลักการ คนที่รู้แล้วไม่เป็นไร เอาคนที่ยังไม่รู้ (เหมือนผม)&lt;br /&gt;การแสดง image กับ ตัวเลข พร้อมกันนั้น ตอนแรกผมเข้าใจว่า&lt;br /&gt;ต้อง update ทั้งหน้าจอหรือ refresh ทุกๆ ครั้งที่ต้องการแสดงผลทั้งจอ&lt;br /&gt;แต่จริงๆ image รวม ผมเรียกว่า main image ที่ไม่มีการเปลี่ยนแปลง&lt;br /&gt;รูปแบบการแสดงผลใดๆอีกเลย จะถูกเขียนในตอนแรกครั้งเดียวจากนั้น&lt;br /&gt;ข้อมูลที่อยู่ในตำแหน่งต่างๆ ที่มีการแปลี่ยนแปลงเช่นตัวเลข จะถูกเขียน&lt;br /&gt;โดยการกำหนด cursor ไปยังตำแหน่งที่ต้องการเขียน แล้วเขียนข้อมูล&lt;br /&gt;ทับลงไป...&lt;br /&gt;&lt;br /&gt;ใน source ผม จะมีคำสั่งของ macro อยู่สองคำสั่งคือ&lt;br /&gt;&lt;br /&gt;ไปยังตำแหน่งต่างๆของจอ&lt;br /&gt;pixxy [ค่าx],[ค่าy]&lt;br /&gt;&lt;br /&gt;เขียน image จากตาราง&lt;br /&gt;wrimg [ตำแหน่งของตาราง],[จำนวนข้อมูล หน่วยเป็นbyte]&lt;br /&gt;&lt;br /&gt;ที่ใช้บ่อยๆก็จะมี lcdputchar กับ lcdputcmd&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.4shared.com/file/zGL-4iQg/Temp_Nok_Clone_version.html&quot;&gt;Source code v1.0&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://microcon99.blogspot.com/feeds/1364784093508202308/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7445804107681783656/1364784093508202308' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7445804107681783656/posts/default/1364784093508202308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7445804107681783656/posts/default/1364784093508202308'/><link rel='alternate' type='text/html' href='http://microcon99.blogspot.com/2011/02/thermometer-nokia-5110-lcd.html' title='Thermometer  Nokia 5110 Lcd'/><author><name>microcon99</name><uri>http://www.blogger.com/profile/09181392996946203603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_e979fhiC3orsnmtf19Smf0kR0TYNMMRxNbmBJwydORNCxka-mPMtT8VRMjdXJ5M3OqJ356MUJTJaQ7_urCfxpo4YT_jTSQ3679deYZELpSY9QMMpHDQbwfQ91WVqaw/s220/12916815201.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7445804107681783656.post-4057680898602798761</id><published>2011-02-16T23:28:00.000-08:00</published><updated>2011-09-29T01:40:58.957-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="at89c2051"/><category scheme="http://www.blogger.com/atom/ns#" term="ds18b20"/><category scheme="http://www.blogger.com/atom/ns#" term="mcs-51"/><category scheme="http://www.blogger.com/atom/ns#" term="temp clock"/><title type='text'>Digital clock and Temp Monitor with 7 Segment</title><content type='html'>&lt;embed type=&quot;application/x-shockwave-flash&quot; src=&quot;https://picasaweb.google.com/s/c/bin/slideshow.swf&quot; width=&quot;425&quot; height=&quot;349&quot; flashvars=&quot;host=picasaweb.google.com&amp;hl=th&amp;feat=flashalbum&amp;RGB=0x000000&amp;feed=https%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2F103734209642572221176%2Falbumid%2F5657695724926506545%3Falt%3Drss%26kind%3Dphoto%26authkey%3DGv1sRgCOfF7vTWp-K02gE%26hl%3Dth&quot; pluginspage=&quot;http://www.macromedia.com/go/getflashplayer&quot;&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;เนื่องด้วยผมไปเห็น digital clock ที่ขายในตลาดนัดแถวบ้าน&lt;br /&gt;ตัวเลขน่าจะสูง 1.2&quot; มี temp 2 หลักแยกต่างหากผมถามราคาแล้ว ตกใจ&lt;br /&gt;แม่ง850บาท...!!! (น่าจะแพงแค่แถวบ้านผม)ที่อื่นราคาไม่น่าเกิน 300&lt;br /&gt;แต่ก็ไม่ค่อยเห็นมีขายกันเท่าไรเห็นติดใน รถbus รถตู้ บ้างก็มี.... อยากได้ครับ&lt;br /&gt;เลยกลับมาบ้านหาใน google ไม่มีเลยครับ พยายามหาอยู่หลาย keyword&lt;br /&gt;นานมากแต่ก็ไม่มีที่ต้องการ...&lt;br /&gt;&lt;br /&gt;ผมบังเอิญเจอของเก่าที่ตลาดนัดแถวบ้านหลังจาก... น่าจะ 4-5เดือนมั้ง&lt;br /&gt;ต่อราคาอยู่พักนึง เขาก็ขายให้ในราคา 70บาท... ตอนแรกเอามาผมคิดว่า&lt;br /&gt;มันบอกเวลาได้อย่างเดียว มาลองต่อไฟ ก็ติดปรกติลองตั้งเวลาก็ใช้ได้&lt;br /&gt;แต่พอมันเดินไปได้ซักพักมันจะดับพอรีเซตก็ใช้ได้อีก หาสาเหตุอยู่นาน&lt;br /&gt;พอดีด้านหลังมันมี connector 3 ขา มันหักหายไป ตอนแรกคิดว่าเป็น&lt;br /&gt;switch option หรือ sw อะไรซักอย่างเลยเอาสายไฟไปเขี่ยๆดู&lt;br /&gt;ตอนที่display มันดับ ปรากฎว่าdisplay มันติด ขึ้นมา เป็น 88.C&lt;br /&gt;เท่านั้นแหละครับ ถึงบางอ้อเลย...&lt;br /&gt;&lt;br /&gt;ตอนที่ display มันดับนั้น มันติด loop presence ของ ds1820&lt;br /&gt;เพราะมันขับแบบ scan มันก็ดับวูบเลยถ้าติด loop โดยมันจะแสดงเวลา&lt;br /&gt;20วินาที แสดง อุณหภูมิ 5วินาที สลับกันไปเรื่อยๆซึ่งผมดูแล้วมันเข้าท่าเข้าทาง&lt;br /&gt;น่าจะเป็นประโยชน์ กับคนอื่นที่อยากทำเล่นทำขาย&lt;br /&gt;(แข่งกะตลาดนัดแถวบ้านผม...) ผมเลยลอก pcb ออกมา&lt;br /&gt;รูมันอาจจะไม่ตรงแป๊ะๆ แต่ก็ใกล้เคียง... ส่วน source code&lt;br /&gt;ผมเขียนขึ้นมาใหม่หมด เพราะของเดิมน่าจะมี bug&lt;br /&gt;เพราะ display มันจะไม่นิ่ง มีอาการแว๊ปๆตลอดทุก2วิ&lt;br /&gt;&lt;br /&gt;ปล. วงจรขับมันมีข้อเสีย นิส..นึง R มันจะร้อนหน่อยแต่ก็ไม่มาก&lt;br /&gt;ผมคิดว่าคงเป็นวิธีที่ดีที่สุดแล้วเมื่อเทียบกับความประหยัดและ&lt;br /&gt;จำนวนpart ที่มีไม่มาก..... ลองพิจารณาดูครับ&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.4shared.com/file/fWNGXr0u/DigitClockTemp_1_.html&quot;&gt;Source Code v1.0&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://microcon99.blogspot.com/feeds/4057680898602798761/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7445804107681783656/4057680898602798761' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7445804107681783656/posts/default/4057680898602798761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7445804107681783656/posts/default/4057680898602798761'/><link rel='alternate' type='text/html' href='http://microcon99.blogspot.com/2011/02/digital-clock-temp-with-18-led-display.html' title='Digital clock and Temp Monitor with 7 Segment'/><author><name>microcon99</name><uri>http://www.blogger.com/profile/09181392996946203603</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_e979fhiC3orsnmtf19Smf0kR0TYNMMRxNbmBJwydORNCxka-mPMtT8VRMjdXJ5M3OqJ356MUJTJaQ7_urCfxpo4YT_jTSQ3679deYZELpSY9QMMpHDQbwfQ91WVqaw/s220/12916815201.jpg'/></author><thr:total>0</thr:total></entry></feed>