ShadowWares Forum

Microcontroller => PIC => ข้อความที่เริ่มโดย: trose88 ที่ ตุลาคม 15, 2011, 03:46:51 pm



หัวข้อ: อยากขอคำแนะนำเรื่อง การทำ เคอร์เซอร์ หรือเมนูบนจอแอลซีดีแชแรคเตอร์
เริ่มหัวข้อโดย: trose88 ที่ ตุลาคม 15, 2011, 03:46:51 pm
สวัสดีครับพี่ๆ ผมต้องการสร้างเมนูครับ
อธิบายคร่าวๆนะครับ
> 1.work 1 or next menu
   2.work 2 or next menu
   3.work 3
   4.work 4

โดยเครื่องหมาย ">" เป้นเคอร์เซอร์เลื่อนขึ้นเลื่อนลงได้ครับ
ไม่ทราบว่าจะต้องเกี่ยวข้องกับตัวแปรหรือเปล่า
เพราะผมจะให้การเลื่อนขึ้นเลื่อนลงนั้น มีความสัมพันธ์กับปุ่มครับ โดยกำหนดการเลื่อนขึ้น 1 ปุ่ม และเลื่อนลง 1 ปุ่ม
เช่น
เริ่มต้นให้ค่า x=0 // (x ไว้เก็บค่าเคอร์เซอร์)
ถ้า กดปุ่มขึ้น(แล้ว x=0) ไม่ต้องทำไร
    กดปุ่มขึ้น(แล้ว x=1) -ค่า x ขึ้น 1 เคอร์เซอร์ย้ายมาอยู่หน้าเลข 1
    กดปุ่มขึ้น(แล้ว x=2) -ค่า x ขึ้น 1 เคอร์เซอร์ย้ายมาอยู่หน้าเลข 2
    กดปุ่มขึ้น(แล้ว x=3) -ค่า x ขึ้น 1 เคอร์เซอร์ย้ายมาอยู่หน้าเลข 3
ถ้า กดปุ่มลง(แล้ว x=0) +ค่า x ขึ้น 1 เคอร์เซอร์ย้ายมาอยู่หน้าเลข 2
    กดปุ่มลง(แล้ว x=2) +ค่า x ขึ้น 1 เคอร์เซอร์ย้ายมาอยู่หน้าเลข 3
    กดปุ่มลง(แล้ว x=3) +ค่า x ขึ้น 1 เคอร์เซอร์ย้ายมาอยู่หน้าเลข 4

ประมาณนี้หรือเปล่าครับ ยังไงขอคำแนะนำด้วยครับ ใช้ Micro C ครับ


หัวข้อ: Re: อยากขอคำแนะนำเรื่อง การทำ เคอร์เซอร์ หรือเมนูบนจอแอลซีดีแชแรคเตอร์
เริ่มหัวข้อโดย: ShadowMan ที่ ตุลาคม 15, 2011, 05:06:32 pm
ใช้ตัวแปรเก็บตำแหน่งของ Cursor เป็นวิธีการที่ถูกต้องแล้วครับ
เพราะในกรณีนี้เราไม่ได้ใช้ Cursor ของตัว LCD แต่จำใช้ '>' แทน
เพราะฉนั้นลืมความสามารถของ Cursor Positioning ของ LCD ไปได้เลย

การ LCD มีมากกว่า 1 บรรทัดอาจจะมีตัวแปรอีกตัวนึงมาเก็บตำแหน่งของบรรทัด
ยกตัวแย่างเช่นตัวแปร x เก็บตำแหน่งบนบรรัดใดๆ และ y เก็บหมายเลขบรรทัด

เมื่อเริ่มต้น (ตอนที่ยังไม่สั่งให้ LCD แสดงผล) กำหนด x และ y ให้เท่ากับ 0
เมื่อมีการเขียนข้อความใดๆ ลงไปจะต้อง เพิ่มค่าของ x ขึ้นไปเท่ากับจำนวน
ของตัวอักษร เช่นเขียนคำว่า "MCU" ไป ค่าของ x จะต้องเพิ่มขึ้น 3 นั่นคือ x=x+3
แล้วก็เขียน '>' ต่อท้ายไป (หากต้องการให้แสดง) ในกรณีที่ต้องการขึ้นบรรทัดใหม่
ก็ให้เปลี่ยนค่าของ y

ตอนนี้เราก็สามารถรับรู้ตำแหน่งปัจจุบันของ '>' แล้ว เมื่อมีการกดปุ่มเลื่อน '>'
โดยการกำหนดค่าผ่านตัวแปร x และ y นี้เช่นกัน อาจจะใช้คำสั่ง lcd_goto_xy(y, x)
ฟังก์ชั่นนี้จะต้องเขียนขึ้นมาเอง (ถ้าหากไม่มีให้ใช้) โดยสามารถดูรายละเอียดได้จาก
คู่มือของ HD44780 (LCD Controller) และเบอร์อื่นที่ทำหน้าที่เหมือนกัน

(http://micro-research.co.th/support/Projects/PIC331-Remote/Episodes/ep0/content_files/image007.gif)


หัวข้อ: Re: อยากขอคำแนะนำเรื่อง การทำ เคอร์เซอร์ หรือเมนูบนจอแอลซีดีแชแรคเตอร์
เริ่มหัวข้อโดย: trose88 ที่ ตุลาคม 16, 2011, 09:34:20 am
ขอบคุณครับ ได้ไอเดียขึ้นมาบ้างละครับ เอแต่ว่าหน้าตาจองเจ้า Cursor Positioning ของจอเองนี่หน้าตาเป้นยังไงครับ เป้นเครื่องหมาย _ หรือว่าเป็นช่องทึบครับ

แล้วมันสามารถทำตัวหนังสือเป็นแบบ เนกาตีฟได้มั้ยครับ(โดยใช้รูปแบบคำสั่งเดิม) กล่าวคือ เดิมๆนั้นตัวอักษร เป็นตัวสีดำ บนช่องสีพื้นจอ
แต่อยากให้เป็นเนกาตีฟ คือช่องตัวอักษร เป็นสีดำแต่ตัวหนังสือเป็นพื้นของจอครับ


หัวข้อ: Re: อยากขอคำแนะนำเรื่อง การทำ เคอร์เซอร์ หรือเมนูบนจอแอลซีดีแชแรคเตอร์
เริ่มหัวข้อโดย: ShadowMan ที่ ตุลาคม 16, 2011, 10:12:12 am
เครื่องหมาย _ เรียกว่า Cursor
สีเหลี่ยมทึบ กระพริบได้เรียกว่า Blinker

Negative display สามารทำได้ด้วยกระบวนการทางซอฟท์แวร์ โดยใช้ความสามารถของ CGRAM
หลัการคือ เขียนตัวอักษรที่ต้องการลง DDRAM (ส่วนที่อยู่นอกของการแสดงผล เช่นถ้าหนึงบรรทัดมี 16
ตัวอักษร ให้เขียนไปที่ตำแหน่งที่ 17) จากนั้นอ่านกลับเข้ามาใส่ในตัวแปรสักตัวนึง ตามด้วยทำการ
invert (1's complement) แล้วเขียนลงไปยัง CGRAM จบด้วยการดึงค่าจาก CGRAM มาแสดงผล  

วิธีนี้ไม่เหมาะสำหรับคนที่ไม่เข้าใจการทำงานที่แท้จริงของ LCD เท่าที่ทราบ ไม่มีหนังสือเล่มไหนสอนเรื่องนี้
ยิ่งเป็นหนังสือบ้านเรา (มากกว่า 90%) ไม่ได้สอนเรื่อง Read operation ของ LCD ด้วยซ้ำไป สังเกตุได้จาก
การต่อขา RD ของ LCD ลงกราวด์ เพราะฉนั้นถ้าไม่ได้คิดจะศึกษาจริงจัง ซื้อแบบที่เป็น Negative ใช้เลยก็ได้ครับ
จะได้ไม่ต้องยุ่งยาก ราคาก็แตกต่างกันเล็กน้อยเท่านั้น


หัวข้อ: Re: อยากขอคำแนะนำเรื่อง การทำ เคอร์เซอร์ หรือเมนูบนจอแอลซีดีแชแรคเตอร์
เริ่มหัวข้อโดย: trose88 ที่ ตุลาคม 16, 2011, 12:32:54 pm
ขอบคุณครับ เยี่ยมเลย เพิ่งรู้ครับ ว่ามีแบบนี้ด้วยเจ้าจอ negative ขอบคุณพี่มากครับ ผมมือใหม่ขอลุยแบบเบสิกไปก่อนดีกว่าครับ


หัวข้อ: Re: อยากขอคำแนะนำเรื่อง การทำ เคอร์เซอร์ หรือเมนูบนจอแอลซีดีแชแรคเตอร์
เริ่มหัวข้อโดย: ShadowMan ที่ ตุลาคม 16, 2011, 12:40:02 pm
ตัวนี้ราคาประมาณ 360 บาท ผมใช้มา 7 ปีกว่าแล้ว ยังไม่พบปัญหา

(http://micro-research.co.th/images/M-LCD162BL-1.png)


หัวข้อ: Re: อยากขอคำแนะนำเรื่อง การทำ เคอร์เซอร์ หรือเมนูบนจอแอลซีดีแชแรคเตอร์
เริ่มหัวข้อโดย: trose88 ที่ ตุลาคม 16, 2011, 03:57:45 pm
ขอบคุณครับ ถามอีกข้อนึงครับ ทำไม
อันนี้อยู่ในตัวอย่างโปนแกรมรหัสผ่าน  Lcd_Chr(1,i+2,r[3-i]...+48);

 อันนี้อยู่ในตัวอย่างโปนแกรมเครื่องคิดเลข Lcd_Chr(2,i+1,input...+48);



ทำไมจะต้องมี +48 ด้วยครับ ผมหาที่มาของเลขนี้ยังไม่ได้เลยไม่ทำอะไรเลยครับวันนี้
ขอบคุณครับ


หัวข้อ: Re: อยากขอคำแนะนำเรื่อง การทำ เคอร์เซอร์ หรือเมนูบนจอแอลซีดีแชแรคเตอร์
เริ่มหัวข้อโดย: ShadowMan ที่ ตุลาคม 16, 2011, 04:25:47 pm
อ้างถึง
ขอบคุณครับ ถามอีกข้อนึงครับ ทำไม
อันนี้อยู่ในตัวอย่างโปนแกรมรหัสผ่าน  Lcd_Chr(1,i+2,r[3-i]...+48);

อันนี้อยู่ในตัวอย่างโปนแกรมเครื่องคิดเลข Lcd_Chr(2,i+1,input...+48);



ทำไมจะต้องมี +48 ด้วยครับ ผมหาที่มาของเลขนี้ยังไม่ได้เลยไม่ทำอะไรเลยครับวันนี้
ขอบคุณครับ

อย่าตั้งคำถามด้วยข้อมูลน้อยมากขนาดนั้น คุณจะต้องแจกแจงรายละเอียดต่างๆ ให้มากพอ
เพื่อให้คนตอบมีข้อมูลมากพอที่จะวิเคราะห์ได้ เช่น
- Lcd_Chr คืออะไร?
- ถ้าเป็นฟังก์ชั่น มันต้องการพารามิเตอร์อะไรบ้าง?


ขอเดาไปตามความรู้สึก ด้วยข้อมูลจากคำถามก่อนหน้าว่าด้วยการแสดงผลบนจอ LCD
-พารามิเตอร์ตัวแรกคือหมายบรรทัด
-ตัวที่สองคือตำแหน่งในบรรทัดนั้นๆ
-ตัวที่ 3 คือข้อมูลการแสดงผล ต้องการชนิดตัวแปรเป็น char ในรูปแบบของ ASCII

ถ้าการเดาทั้งหมดนั้นถูก
เมื่อข้อมูลใน  r[3-i] และ input เป็นเลขฐาน 10 ใดๆ
การบวกด้วย 48 คือการเปลี่ยนจากเลขฐาน 10 เป็นรหัส ASCII
ยกตัวอย่างเช่น
ต้องการให้แสดงเลข '0' จะเป็น 0+48 = 48
ต้องการให้แสดงเลข '1' จะเป็น 1+48 = 49
...
ต้องการให้แสดงเลข '9' จะเป็น 9+48 = 57

(http://www.asciitable.com/index/asciifull.gif)


หัวข้อ: Re: อยากขอคำแนะนำเรื่อง การทำ เคอร์เซอร์ หรือเมนูบนจอแอลซีดีแชแรคเตอร์
เริ่มหัวข้อโดย: trose88 ที่ ตุลาคม 17, 2011, 10:01:11 am
กระจ่างชัด ขอบคุณครับ


หัวข้อ: Re: อยากขอคำแนะนำเรื่อง การทำ เคอร์เซอร์ หรือเมนูบนจอแอลซีดีแชแรคเตอร์
เริ่มหัวข้อโดย: Noodee99 ที่ มีนาคม 23, 2018, 04:12:47 pm
ขอมูลนำไปใช้ ปรับใช้ได้เลยคะ ขอบคุณมากๆ


หัวข้อ: Re: อยากขอคำแนะนำเรื่อง การทำ เคอร์เซอร์ หรือเมนูบนจอแอลซีดีแชแรคเตอร์
เริ่มหัวข้อโดย: poikljuyii ที่ มีนาคม 28, 2018, 04:22:19 pm
ขอบคุณข้อมูลดีๆที่เอามาลงให้ได้รู้นะครับ


หัวข้อ: Re: อยากขอคำแนะนำเรื่อง การทำ เคอร์เซอร์ หรือเมนูบนจอแอลซีดีแชแรคเตอร์
เริ่มหัวข้อโดย: cannavarojo9 ที่ ธันวาคม 22, 2018, 03:25:08 pm
ตัวนี้ราคาประมาณ 360 บาท ผมใช้มา 7 ปีกว่าแล้ว ยังไม่พบปัญหา


Gclub (https://gclub.snbbet.com/) สล็อตออนไลน์ (https://snbbet.com/slot-online.html) ทางเข้า maxbet (https://88maxbet.com/%E0%B8%97%E0%B8%B2%E0%B8%87%E0%B9%80%E0%B8%82%E0%B9%89%E0%B8%B2-maxbet.html)