Presentation is loading. Please wait.

Presentation is loading. Please wait.

Alphanumeric LCD Configuration

Similar presentations


Presentation on theme: "Alphanumeric LCD Configuration"— Presentation transcript:

1 Alphanumeric LCD Configuration
Lecturer: Reza Arjmandi Autumn 2015 Lecture 8 , 9: Introduction Alphanumeric LCD and initialization

2 LCD Alphanumeric LCD Graphical LCD(GLCD)

3 LCD Advantage LCD 7Segment -قیمت کم -توان مصرفی پایین
-قابلیت استفاده در سیستم های Portable -نوردهی مناسب -توان مصرفی بالا -قابلیت استفاده در سیستم های Portable را ندارند

4 Alphanumeric LCD-Feature
Size: نوع تعداد ستون تعداد سطر نوع کاراکتر مدل 16*1 16 1 5*7 dots LM161XXX 16*2 2 LM162XXX 16*4 4 LM164XXX 20*2 20 LM202XXX 20*4 LM204XXX 40*2 40 LM402XXX 40*4 LM404XXX

5 Alphanumeric LCD-Feature
Font Size: 5*10 5*7

6 Alphanumeric LCD-Feature
Interface: ABCDEFGH ABCDEFGH Parrallel 8 bit interface 4 bit interface Serial

7 Alphanumeric LCD-Feature
Controller: KS0073 controller HD44780 controller Hitachi co.

8 Alphanumeric LCD-Pins
شماره پایه نام پایه عملکرد پایه 1 VSS یا GND اتصال به زمین 2 Vcc یا VDD اتصال به +5v 3 VEE تنظیم درخشندگی(contrast) 4 RS انتخابگر رجیستر داده/رجیستر دستور 5 R/W انتخابگر خواندن/نوشتن 6 E فعال ساز 7~14 D0~D7 خطوط دیتا 15 LED+ ولتاژ + نور پس زمینه 16 LED- ولتاژ – نوز پس زمینه A K 15 16 خطوط تغذیه خطوط کنترل خطوط دیتا تغذیه نور پس زمینه

9 Alphanumeric LCD-Pins
خطوط تغذیه

10 Alphanumeric LCD-Pins
K 15 16 RS(Register Select): پایه انتخاب رجیستر داده/ رجیستر دستور العمل. RS=0 -> IR(Instruction Register) Register Select RS=1-> DR(Data Register) Register Select IR Register DR Register R/W(Read/Write): پایه انتخاب خواندن / نوشتن میباشد. R/W=0 -> Write Select R/W=1 -> Read Select خطوط کنترل E(Enable): پایه فعال ساز میباشد. LCD به کمک این پایه اطلاعات روی پایه های داده را لچ(Latch) میکند. با اعمال یک پالس با حداقل پهنای 450ns میتوان این پایه را فعال کرد Example: void enable(void) { E=1; __delay_cycles(1000); //delay 1ms for frequency E=0; __delay_cycles(1000); } 450ns

11 Alphanumeric LCD-Pins
K 15 16 خطوط دیتا داده یا دستورالعمل

12 Alphanumeric LCD-Pins
K 15 16 تغذیه نور پس زمینه

13 Alphanumeric LCD-Memory
DDRAM(Data Display RAM) CGROM(Character Generator ROM) CGRAM(Character Generator RAM) منطقه قابل رویت A K 15 16 39 38 37 36 ... 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 آدرس سطر اول 79 78 77 76 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 آدرس سطر دوم

14 Alphanumeric LCD-4Bit Configuration
#define lcd PORTC #define RS PORTC_Bit0 #define RW PORTC_Bit1 #define E PORTC_Bit2 void main(void) { }

15 Alphanumeric LCD-Write Data
DR Register Example: #define lcd PORTC #define RS PORTC_Bit0 #define RW PORTC_Bit1 #define E PORTC_Bit2 void enable(void); void LCDsendChar(char ch) { RS=1; RW=0; lcd=(ch & 0xF0)|(lcd&0x0F); enable(); lcd=((ch<<4) & 0xF0))|(lcd&0x0F); } Write 1 Data 450ns E

16 Alphanumeric LCD-Write Command
IR Register Example: #define lcd PORTC #define RS PORTC_Bit0 #define RW PORTC_Bit1 #define E PORTC_Bit2 void enable(void); void LCDsendCommand(unsigned char command) { RS=0; RW=0; lcd=(command&0xF0)|(lcd&0x0F); enable(); lcd=((command<<4)&0xF0)|(lcd&0x0F); } Write Command 450ns E

17 Alphanumeric LCD-Command
دستوالعمل Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 Hex پاک کردن نمایشگر 1 0x01 بازگشت به ابتدای سطر X 0x02 کنترل وضعیت ورودی I/D S 0x04~0x07 کنترل روشن و خاموش بودن مکان نما و نمایشگر D C B 0x08~0x0F جابجایی مکان نما و نمایشگر S/C R/L 0x10~0x1C تنظیم عملکرد DL N F 0x20~0x3C تنظیم آدرس CGRAM آدرس تنظیم آدرس DDRAM

18 Alphanumeric LCD-Command-Clear Display
0x01 Write دستوالعمل Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 Hex پاک کردن نمایشگر 1 0x01 Example: #define lcd PORTC #define RS PORTC_Bit0 #define RW PORTC_Bit1 #define E PORTC_Bit2 void enable(void); void LCDsendCommand(unsigned char command); void LCDsendChar(char ch); void LCDclr(void) { LCDsendCommand(0x01); }

19 Alphanumeric LCD-Command-Return Home
دستوالعمل Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 Hex بازگشت به ابتدای سطر 1 X 0x02 Command= 0x01 Write Example: #define lcd PORTC #define RS PORTC_Bit0 #define RW PORTC_Bit1 #define E PORTC_Bit2 void enable(void); void LCDsendCommand(unsigned char command); void LCDsendChar(char ch); void LCDreturnHome(void) { LCDsendCommand(0x02); }

20 Alphanumeric LCD-Command-Entry Mode Set
دستوالعمل Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 Hex کنترل وضعیت ورودی 1 I/D S 0x04~0x07 کنترل وضعیت ورودی: تعیین میکند که جهت جا به جایی و نمایشگر به چه صورت باشد: 1-اگر I/D یک باشد، مکان نما در وضعیت افزایش بوده و از چپ به راست جابه جا میشود، در صورتی که این بیت صفر باشد، جهت جابه جایی راست به چپ است. 2-بیت S فعال ساز جابه جایی نمایشگر است. بدین ترتیب که در صورت یک بودن آن، به نظر می آید که بجای جا به شدن مکان نما، نمایشگر جا به جا میشود.در صورت یک بودن I/D، نمایشگر به سمت چپ جا به جا شده و در صورت صفر بودن به سمت راست جا به جا خواهد شد. Bit S 39 38 37 36 ... 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 آدرس سطر اول 79 78 77 76 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 آدرس سطر دوم

21 کنترل روشن و خاموش بودن مکان نما و نمایشگر
Alphanumeric LCD-Command-Display ON/OFF دستوالعمل Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 Hex کنترل روشن و خاموش بودن مکان نما و نمایشگر 1 D C B 0x08~0x0F کنترل روشن و خاموش بودن مکان نما و نمایشگر در صورت یک بودن بیت D، نمایشگر روشن بوده و در غیر اینصورت خاموش است، زمانی که نمایشگر خاموش میشود. اطلاعات DDRAM تغییر نمیکند با یک شدن بیت C، مکان نما روشن شده و با صفر شدن آن خاموش میشود. مکان نما در سطر هشتم از یک کاراکتر 7×5 نشان داده میشود در صورتی که بیت B یک منطقی باشد، در موقعیت فعلی، مکان نما چشمک زده و روشن-خاموش میشود و در غیر اینصورت ثابت میماند

22 کنترل روشن و خاموش بودن مکان نما و نمایشگر
Alphanumeric LCD-Command-Display ON/OFF دستوالعمل Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 Hex کنترل روشن و خاموش بودن مکان نما و نمایشگر 1 D C B 0x08~0x0F کنترل روشن و خاموش بودن مکان نما و نمایشگر Example: void LCDcursorOn(void) { LCDsendCommand(0x0E); } void LCDcursorOFF(void) LCDsendCommand(0x0C); void LCDcursorOnBlink(void) LCDsendCommand(0x0F); void LCDblank(void) { LCDsendCommand(0x08); } void LCDvisible(void) LCDsendCommand(0x0C);

23 جابجایی مکان نما و نمایشگر
Alphanumeric LCD-Command-Cursor OR Display Shift دستوالعمل Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 Hex جابجایی مکان نما و نمایشگر 1 S/C R/L X 0x10~0x1C جابه جایی مکان نما یا نمایشگر در صورتی که مقدار S/C صفر باشد بر حسب اینکه R/L صفر یا یک باشد به ترتیب مکان نما یک واحد به چپ یا راست جابه جا میشود در صورتی که مقدار S/C یک باشد بر حسب اینکه R/L صفر یا یک باشد به ترتیب مکان نما و نمایشگر یک واحد به چپ یا راست جابه‌جا میشود Example: void LCDshiftRight(unsigned char n) { for(unsigned char i=0;i<n;i++) LCDsendCommand(0x18); } void LCDshiftLeft(unsigned char n) LCDsendCommand(0x1E); void LCDcursorLeft(unsigned char n) { for(unsigned char i=0;i<n;i++) LCDsendCommand(0x10); } void LCDcursorRight(unsigned char n) LCDsendCommand(0x14);

24 Alphanumeric LCD-Command-Function Set
دستوالعمل Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 Hex تنظیم عملکرد 1 DL N F X 0x20~0x3C تنظیم عملکرد در صورتی که بیت DL یک باشد، واسط به صورت 4 بیتی بوده و در غیر اینصورت 8 بیتی است. اگر بیت N صفر باشد، کنترلر با زمان وظیفه‌ی(duty cycle) 1/8 یا 1/11 پیکره بندی اولیه شده و در صورتی که این بیت یک باشد زمان وظیفه‌ی 1/16 انتخاب میشود. نمایشگرهای چندخطی معمولا با زمان وظیفه 1/16 راه اندازی میشود. در صورتی که بیت F یک شود، فونت سایز 10×5 بوده و در غیر اینصورت 7×5 است. این دستورالعمل بسیار مهم است و برای پیکربندی اولیه LCD باید اجرا شود. قبل از اجرای این دستورالعمل هیچ دستور دیگری عمل نمیکند.

25 Alphanumeric LCD-Command-Initialization
قبل از اینکه از LCD استفاده کنیم، باید آن را مقدار دهی اولیه کنیم، در غیر اینصورت LCD کار نمیکند. به این کار در اصطلاح Initialization گفته میشود، Initialize کردن یک LCD در روش چهارسیمه بصورت زیر میباشد: 1-روشن کردن LCD 2-ایجاد حداقل 150ms تاخیر 3-ارسال دستور 0x33 4-ایجاد حداقل 100ms تاخیر 5-ارسال دستور 0x32 6-ایجاد 100ms تاخیر 7-تنظیمات صفحه نمایش ... Example: void LCDinit(void) { __delay_cycles(150000); LCDsendCommand(0x33); //Function Set 4bit __delay_cycles(100000); LCDsendCommand(0x32); //Function Set 4bit LCDvisible(); LCDclr(); LCDsendCommand(0x06); //Entry Mode Set LCDcursorOnBlink(); }

26 Alphanumeric LCD-Read IR Register
K 15 16 IR Register Read 1 450ns E BF BF(Busy Flag)

27 lcd.c C Language-Make Library
C:\Program Files (x86)\IAR Systems\Embedded Workbench 5.3\avr\inc lcd.c

28 C Language-Make Library
Header File Library.h Code File Library.c C:\Program Files (x86)\IAR Systems\Embedded Workbench 5.3\avr\inc LCDCHR_lib

29 Alphanumeric LCD-Example1
مثال: برنامه‌ای که عبارت AVR را به صورت شناور، در هر ثانیه یک بیت به سمت راست شیفت دهد #include<lcd.c> unsigned char i; void main() { DDRC=0XFF; initializ_lcd(); LCDcursorOFF(); while(1) for(i=0;i<16;i++) LCDcursorRight(i); write_data('A'); write_data('V'); write_data('R'); __delay_cycles(100000); LCDclr(); }

30 Alphanumeric LCD-Example2
F را روی LCD نمایش دهد

31 Alphanumeric LCD-Example2
#include<lcd.c> unsigned char scan(void); unsigned char __flash code[16]={0XEE,0XDE,0XBE,0X7E,0XED, 0XDD,0XBD,0X7D,0XEB,0XDB,0XBB,0X7B,0XE7,0XD7,0XB7,0X77}; char __flash number[]=" ABCDEF"; main() { unsigned char data,i; DDRC=0XFF; initializ_lcd(); while(1) data=scan(); for(i=0;i<16;i++) if(data==code[i]) LCDclr(); write_data(number[i]); } unsigned char scan(void) { unsigned char key; DDRD=0X0F; PORTD=0XF0; __delay_cycles(10); key=(PIND&0XF0); DDRD=0XF0; PORTD=0X0F; key|=(PIND&0X0F); return key; }

32 Alphanumeric LCD-Example3

33 Alphanumeric LCD-Example3
#include <LCDCHR_lib.c> #include <stdio.h> #include <stdlib.h> char __flash number[11]=" "; unsigned char SECOND,MINUTE,HOUR; main() { DDRC=0XFF; LCDinit(); DDRD_Bit7=0; PORTD_Bit7=1; DDRD_Bit3=0; PORTD_Bit3=1; while(1) LCDsendCommand(LCD_CLR); LCDsendCommand(LCD_HOME); LCDstring("T= "); LCDsendChar(number[HOUR/10]); LCDsendChar(number[HOUR%10]); LCDstring(" : "); LCDsendChar(number[MINUTE/10]); LCDsendChar(number[MINUTE%10]); LCDsendChar(number[SECOND/10]); LCDsendChar(number[SECOND%10]); if(PIND_Bit3==0) { __delay_cycles(100000); MINUTE++; if(MINUTE>60) MINUTE=0; } if(PIND_Bit7==0) HOUR++; if(HOUR>24) HOUR=0; __delay_cycles( ); SECOND++; if(SECOND>60) { SECOND=0; MINUTE++; if(MINUTE>60) MINUTE=0; HOUR++; if(HOUR>24) HOUR=0; }

34 Alphanumeric LCD-Write CGRAM
معادل HEX معادل Binary 0x17 1 0x14 0x12 0x11 0x1F 0x00

35 Alphanumeric LCD-Write CGRAM
معادل HEX معادل Binary 0x02 1 0x07 0x00 0x17 0x14 0x1C معادل HEX معادل Binary 0x00 0x06 1 0x05 0x07 0x01 0x02 0x0C

36 Alphanumeric LCD-Write CGRAM-Example4
#include <LCDCHR_lib.c> __flash unsigned char userChars[64]={ 0x17,0x14,0x12,0x11,0x1F,0x00,0x00,0x00, 0x00,0x06,0x05,0x07,0x01,0x02,0x0C,0x00, 0x02,0x07,0x00,0x17,0x14,0x14,0x1C,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, }; void setCGRAM(unsigned char __flash str[]) { unsigned char k; LCDsendCommand(0x40); //setCGRAM for(k=0;k<64;k++) LCDsendChar(str[k]); LCDsendCommand(0x80); //setDDRAM } void main(void) { LCDinit(); setCGRAM(userChars); LCDsendChar(2); LCDsendChar(1); LCDsendChar(0); while(1); }

37 Contact us


Download ppt "Alphanumeric LCD Configuration"

Similar presentations


Ads by Google