การใช้งานจอแอลซีดีของโทรศัพท์มือถือโนเกีย 3310

หัวข้อ

  1. คุณลักษณะ
  2. รายละเอียดทางกายภาพ
  3. สัญญาณการเชื่อมต่อ
  4. PCD8544
  5. คำสั่งควบคุม
  6. ตัวอย่างการประกอบวงจรใช้งาน
  7. ความหมายของฟังก์ชั่นต่างๆในไลบรารี่ nokia3310.h
  8. ตัวอย่างโปรแกรม
  9. โปรแกรมช่วยแปลงภาพเป็นรหัสไบนารีสำหรับจอแอลซีดี FastLCD
  10. รูปแบบตัวอักษรขนาด 5x7 ตามมาตราฐาน ASCII
  11. Download

 

คุณลักษณะ

จาก http://www.amontec.com/lcd_nokia_3310.shtml

The Nokia 3310 LCD is a nice small graphical LCD, suitable for a lot of various projects. The display is 38*35 mm, with an active display surface of 30*22 mm, and a 84*48 pixel resolution. The display is easy to interface, using standard SPI communication. A 1-10 uF electrolytic capacitor from VOUT to GND, is the only external component needed.

รายละเอียดทางกายภาพ


สัญญาณการเชื่อมต่อ

Pin Signal Description Port
1 VDD Power Input. Logic supply voltage range VDD to GND : 2.7 to 3.3 V Power
2 SCLK Serial clock. Input for the clock signal: 0.0 to 4.0 Mbits/s. Input
3 SDIN Serial data. Input for the data line. Input
4 D/C Mode Select. To select either command/address or data input. Input
5 SCE Chip enable input. The enable pin allows data to be clocked in. The signal is active LOW. Input
6 GND Ground Power
7 VOUT Ouptut voltage. Add external 1-10 uF electrolytic capacitor from VOUT to GND Power
8 RES External reset. This signal will reset the device and must be applied to properly initialize the chip. The signal is active LOW. Input

PCD8544

เป็นไอซีควบคุมการทำงานของจอภาพ รายละเอียดดูได้จาก PCD8544

คำสั่งควบคุม

ตัวอย่างการประกอบวงจรใช้งาน

เนื่องจากไม่สามารถบัดกรีขั้วต่อ LCD ได้โดยตรง ดังนั้นจึงต้องต่อสายเข้ากับแผ่นปรินทร์ที่ใช้ต่อกับแอลซีดีแทน โดยทำตามรูป

นำแผ่นพีซีบีมาเจาะรูเพื่อใช้ต่อสาย

ภาพขยายของรูที่เจาะแล้ว

สายแพรที่เตรียมใว้ต่อ

เมื่อต่อสายแล้ว

ด้านหลังเมื่อประกบแอลซีดี

เมื่อประกอบเข้ากับบอร์ดไมโครดอนโทรลเลอร์


ขา 1 สัญญาณ VDD ต่อกับ แหล่งจ่ายแรงดัน 2.7 - 3.3 โวลท์
ขา 2 สัญญาณ SCK ต่อกับ P0.0
ขา 3 สัญญาณ SDI ต่อกับ P0.1
ขา 4 สัญญาณ D/C ต่อกับ P0.2
ขา 5 สัญญาณ SCE ต่อกับ P0.3
ขา 6 สัญญาณ GND ต่อกับสัญญาณ GND
ขา 7 สัญญาณ VOUT ต่อกับ C
ขา 8 สัญญาณ RES ต่อกับ P0.4

ความหมายของฟังก์ชั่นต่างๆในไลบรารี่ nokia3310.h

ฟังก์ชั่นนี้ได้ดัดแปลงและเขียนเพิ่มเติมจาก source code ของ http://www.geocities.com/dariuskrail20/nokia3310lcd.html

ฟังก์ชั่น void initlcd(void);
ความหมาย กำหนดการทำงานให้แก่ LCD
การใช้งาน
initlcd();

ฟังก์ชั่น void writecom(unsigned char);
ความหมาย ส่งคำสั่งควบคุมให้แก่ LCD
การใช้งาน
writecom(คำสั่ง 1 ไบต์);

ฟังก์ชั่น void writedata(unsigned char);
ความหมาย เขียนข้อมูลลง DDRAM ของ LCD เพื่อแสดงผลออกทางหน้าจอ
การใช้งาน
writedata(ข้อมูล 1 ไบต์);

ฟังก์ชั่น clearram(void);
ความหมาย ลบข้อมูลใน DDRAM ของ LCD ทำให้หน้าจอว่าง
การใช้งาน
clearram() ;

ฟังก์ชั่น void cursorxy(unsigned char x,unsigned char y);
ความหมาย กำหนดตำแหน่งเคอร์เซอร์ x หมายถึงตำแหน่งคอลัมน มีค่าตั้งแต่ 0 - 83 ส่วน y หมายถึงตำแหน่งบรรทัด มีค่าตั้งแต่ 0 ถึง 6

ภาพแสดงค่าของ x และ y

การใช้งาน
cursorxy(1,10);

ฟังก์ชั่น void lcd_putchar(unsigned char character);
ความหมาย พิมพ์ตัวอักขระ 1 ตัวออกที่จอภาพ LCD ณ ตำแหน่งที่เคอร์เซอร์นั้นอยู่แล้วเลื่อนเคอร์เซอร์ไปทางขวา 1 ตำแหน่ง ถัาตำแหน่งเคอร์เซอร์เกินการพิมพ์จะผิดพลาด
การใช้งาน
lcd_putchar(ตัวอักขระ);

ฟังก์ชั่น void putstr(const unsigned char *s);
ความหมาย พิมพ์ข้อความ (string) ออกที่จอภาพ LCD ณ ตำแหน่งที่เคอร์เซอร์นั้นอยู่แล้วเลื่อนเคอร์เซอร์ไปทางขวา 1 ตำแหน่ง ถัาตำแหน่งเคอร์เซอร์เกินการพิมพ์จะผิดพลาด
การใช้งาน
putstr("Thammasat") ;

ฟังก์ชั่น void lcd_wrimg(const char image[],unsigned char x1,y1);
ความหมาย แสดงรูปที่เก็บอยู่ในอะเรย์ image ออกทาง LCD ณ ตำแหน่ง x1,y1 (y1 = หมายเลขบรรทัด)

หมายเหตุ ภาพหมายถึงค่าอะเรย์ที่เก็บค่า 0 และ 1 เป็นไบต์ๆ
การใช้งาน
lcd_wrimg(and1,15,1); // and1 คืออะเรย์ที่เก็บรูป

ฟังก์ชั่น void plotline_x(unsigned char x1,x2,y1,width);
ความหมาย พล็อตเส้นตรงทางแกน x จากตำแหน่ง x1 ถึง x2 ในระดับ y1 ด้วยความก้วาง width (ไม่เกิน 8 จุด)

ภาพแสดงค่าตำแหน่งของจุดภาพในแนวแกน x และ y

การใช้งาน
plotline_x(5,70,30,7); // หมายถึงให้วาดเส้นตรงจากตำแหน่ง x = 5 ถึง 70 โดยอยู่ในระดับ y = 30 ด้วยความหนา 7 จุด

ฟังก์ชั่น void plotline_y(unsigned char x,y1,y2);
ความหมาย พล็อตเส้นตรงทางแกน y จากตำแหน่ง y1 ถึง y2 ในตำแหน่ง x ด้วยความก้วาง 1 จุดภาพ
การใช้งาน
plotline_y(5,0,30); // หมายถึงให้วาดเส้นตรงจากตำแหน่ง y= 0 ถึง 30 โดยอยู่ในตำแหน่ง x = 5

ฟังก์ชั่น void lcd_putthai_num(unsigned char number,x,y);
ความหมาย พิมพ์เลขไทยขนาดใหญ่ 1 ตัว ณ ตำแหน่งเคอร์เซอร์ x y
การใช้งาน
lcd_putthai_num(5,0,0); //หมายถึงพิมพ์เลข 5 ไทย ณ บรรทัดที่ 0 คอลัมน์ที่ 0

ฟังก์ชั่น void lcd_printthai_num(unsigned int number, x,y);
ความหมาย พิมพ์เลขไทยขนาดใหญ่ ไม่เกิน 4 ตัว ณ ตำแหน่งเคอร์เซอร์ x y
การใช้งาน
lcd_printthai_num(i, 1,2); //พิมพ์ค่า i ณ บรรทัดที่ 1คอลัมน์ที่ 2 เป็นต้นไป


สำหรับความหมายในฟังก์ชั่น robot.h ให้ดูจาก robot

ตัวอย่างโปรแกรม

มีตัวอย่างโปรแกรม 4 โปรแกรม
main1.c แสดงเฉพาะข้อภาษาอังกฤษอย่างเดียว
main2.c แสดงภาพกราฟฟิกและภาษา อังกฤษ
main3.c แสดงภาพกราฟฟิกที่มีการเคลื่อไหวและภาษา อังกฤษ
main4.c แสดงการพิมพ์เลขไทยขนาดใหญ่และภาษา อังกฤษ

โปรแกรมช่วยแปลงภาพเป็นรหัสไบนารีสำหรับจอแอลซีดี FastLCD

เป็นโปรแกรมช่วยในการแปลงภาพขาวดำให้กลายเป็นจุดภาพของจอ LCD Nokia ดาว์นโหลดได้จาก http://www.fastavr.com/Downloads_act.htm
หรือ
fastlcd.zip

วิธีการเตรียมไฟล์ภาพ

1. สร้างภาพ ขาวดำ ในที่นี้ใช้ Paint ตัวอย่างภาพกล่องนี้เป็นภาพที่ขยาย แล้วบันทึกเป็นไฟล์ภาพ ".bmp"
2.run โปรแกรม fastlcd.exe และนำภาพที่บันทึก โหลดลงโปรแกรมด้วยการกดปุม Open เมื่อปรากฏหน้าต่าง clipboard ให้เลือก selection

3. กำหนดขนาดภาพด้วยปุ่ม New Image
4. Generate BAS table

5. ไฟล์ที่ได้ลงท้ายด้วย BAS ดังนี้

'///////////////////////////////////////////////////////////////////////////////
box = 12, 3, ' Image Table Name, Xbytes, N of Lines, 38 bytes
&hE0,&hB0,&h78,&hFC,&hFE,&hFF,&hFE,&hFC,&hF8,&hF0,&hE0,&hC0,&h3F,&h7F,&hFF,&hFE,
&hFD,&hFB,&hF7,&h07,&h03,&h01,&h80,&h7F,&h00,&h00,&h00,&h01,&h03,&h07,&h0F,&h04,
&h02,&h01,&h00,&h00

6.ให้เปลี่ยน &h เป็น 0x แล้วนำไปทำเป็นไฟล์ใหม่ดังนี้ แล้วบันทึกเป็นชื่ออะไรก็ได้แต่เวลา include ต้องระบุให้ถูก ในที่นี้ให้เป็น.h

ตัวอย่างโปรแกรมเมื่อนำรูป box ไปใช้งาน

#include <box.h>
/*-----------------------------------------
      Main Program
-----------------------------------------*/
void main( void )
{
    int_cpu();
   initlcd();
    lcd_wrimg(box,20,2);
    while(1)
    {
    }
}

 

รูปแบบตัวอักษรขนาด 5x7 ตามมาตราฐาน ASCII

เป็นรูปแบบตัวอักษรสำหรับจอ LCD ของ Nokia โดยมีขนาด 5x7 และรหัสเรียงตามมาตราฐาน ASCII
  1. LCD Nokia ASCII Font ขนาด 5x7
  2. ฟอนต์ตัวเลขไทยขนาดใหญ่ ขนาด 20 x 24
หมายเหต
ฟอนต์ภาษาอังกฤษมาจาก http://www.geocities.com/dariuskrail20/nokia3310lcd.html
ฟอนต์ภาษาอังกฤษเขียนอยู่ในไฟล์ nokia3310.h แล้ว

download