![]() |
การใช้งานจอแอลซีดีของโทรศัพท์มือถือโนเกีย 3310 |
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
เนื่องจากไม่สามารถบัดกรีขั้วต่อ 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 |
![]() |
ฟังก์ชั่น 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
| |
เป็นโปรแกรมช่วยในการแปลงภาพขาวดำให้กลายเป็นจุดภาพของจอ 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)
{
}
}