1602 Àº Ç¥ÁØ 16 ÇÉ ÀÎÅÍÆäÀ̽º¸¦ äÅÃÇÕ´Ï´Ù.
ÇÉ 1: vss´Â Á¢Áö Àü¿ø °ø±Þ ÀåÄ¡ÀÔ´Ï´Ù.
ÇÉ 2: VDD 5V Æ÷ÁöƼºê Àü¿ø °ø±Þ ÀåÄ¡¿¡ ¿¬°á
3 ÇÉ: V0 Àº lcdÀÇ ´ëºñ Á¶Á¤ ´ÜÀÚ, Æ÷ÁöƼºê Àü¿ø °ø±Þ ÀåÄ¡¿¡ ¿¬°áµÉ ¶§ ´ëºñ °¡Àå ¾àÇÕ´Ï´Ù. ´ëºñ Á¢Áö Àü¿ø °ø±Þ ÀåÄ¡¿¡ ¿¬°áµÇ¾úÀ» ¶§ °¡Àå ³ô½À´Ï´Ù. ´ëÁ¶°¡ ³Ê¹« ³ôÀ¸¸é "À¯·É" ÀÌ »ý¼ºµË´Ï´Ù. »ç¿ë½Ã 10k ÀüÀ§Â÷°è·Î Á¶Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
ÇÉ 4: µî·Ï ¼±Åà RS, ³ôÀº ¼öÁØÀÇ µ¥ÀÌÅÍ µî·Ï ¹× ³·Àº ¼öÁØÀÇ »ç¿ë ·¹Áö½ºÅÍ.
ÇÉ 5: R/w´Â Àбâ/¾²±â ½ÅÈ£¼±À¸·Î, ³ôÀº ¼öÁØ¿¡¼ ÀÐ°í ³·Àº ¼öÁØÀ¸·Î ¾²´Â µ¥ »ç¿ëµË´Ï´Ù. Rs¿Í RW ¼öÁØÀÌ ³·À» ¶§ ÁöħÀ» ÀÛ¼ºÇϰųª ÁÖ¼Ò¸¦ Ç¥½Ã ÇÒ ¼ö ÀÖ½À´Ï´Ù. Rs°¡ ³·Àº ¼öÁØÀ̸é RW ¼öÁØÀÌ ³ôÀ¸¸é ¹Ù»Û ½ÅÈ£¸¦ ÀÐÀ» ¼ö ÀÖ½À´Ï´Ù. Rs°¡ ³ôÀº ¼öÁØÀ̸é RW ¼öÁØÀÌ ³·À¸¸é µ¥ÀÌÅ͸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.
6 ÇÉ: e Å͹̳ÎÀº È°¼ºÈ Å͹̳ÎÀÔ´Ï´Ù. Å͹̳ÎÀÌ ³ôÀº ¼öÁØ¿¡¼ ³·Àº ¼öÁØÀ¸·Î º¯°æµÇ¸é LCD ¸ðµâÀÌ ¸í·ÉÀ» ½ÇÇàÇÕ´Ï´Ù.
7-14 ÇÉ: d0-d7 8 ºñÆ® ¾ç¹æÇâ µ¥ÀÌÅÍ ¶óÀÎÀÔ´Ï´Ù.
ÇÉ 15: ¹é¶óÀÌÆ® Àü¿ø °ø±Þ ÀåÄ¡ÀÇ ¾ç±Ø
16 ÇÉ: ¹é¶óÀÌÆ® ÆÄ¿ö ³×°ÅƼºê
LCD ¸ðµâ¿¡´Â Ç¥ 1 °ú °°ÀÌ 160 °³ÀÇ ¼·Î ´Ù¸¥ µµÆ® ¸ÅÆ®¸¯½º ¹®ÀÚ ±×·¡ÇÈÀ» ÀúÀåÇß½À´Ï´Ù. ÀÌ ¹®ÀÚ¿¡´Â ¾Æ¶óºñ¾Æ ¼ýÀÚ, ¿µ¾î ±ÛÀÚ ÄÉÀ̽º, ÀϹÝÀûÀÎ ±âÈ£, ÀϺ»¾î Ä«³ª µîÀÌ Æ÷ÇԵ˴ϴÙ. °¢ ¹®ÀÚ¿¡´Â °íÁ¤ Äڵ尡 ÀÖ½À´Ï´Ù. ´ë¹®ÀÚ "a" ´Â 01000001b (41h) À̸ç, µµÆ® ¸ÅÆ®¸¯½º ¹®ÀÚ¸¦ 41h ÁּҷΠǥ½ÃÇÏ¸é µð½ºÇ÷¹ÀÌ ¸ðµâÀ» »ç¿ëÇϱ⠽±½À´Ï´Ù. "a" ¶ó´Â ±ÛÀÚ¸¦ º¼ ¼ö ÀÖ½À´Ï´Ù.
´ÙÀ½Àº LCD ¸ðµâÀÇ µÎ ¹ø° ¼±ÀÇ Ã¹ ¹ø° ¹®ÀÚ À§Ä¡¿¡ "a" ¹®ÀÚ Ç¥½Ã ÇÁ·Î±×·¥ÀÔ´Ï´Ù. ORG 0000H
RS ¢ªp3.7; ƯÁ¤ Çϵå¿þ¾îÀÇ ¿¬°á ¸ðµå °áÁ¤
RW ¢ªp3.6; ƯÁ¤ Çϵå¿þ¾îÀÇ ¿¬°á ¸ðµå °áÁ¤
E ¢ªp3.5; ƯÁ¤ Çϵå¿þ¾îÀÇ ¿¬°á ¸ðµå °áÁ¤
Mov P1, # 00000001b; ȸéÀ» Áö¿ì°í Ä¿¼ Àç¼³Á¤
ÀüÈ È°¼ºÈ; ÀüÈ ¾²±â ¸í·É ¼ºê ·çƾ
Mov P1, # 00111000b; µð½ºÇ÷¹ÀÌ ¸ðµå ¼³Á¤: 8 ºñÆ®, 2 Çà, 5x7 µµÆ® ¸ÅÆ®¸¯½º
ÀüÈ È°¼ºÈ; ÀüÈ ¾²±â ¸í·É ¼ºê ·çƾ
Mov P1, # 0000111b; µð½ºÇ÷¹ÀÌ Äѱâ, Ä¿¼ Äѱâ, Ä¿¼ ±ô¹ÚÀÓ Çã¿ë
ÀüÈ È°¼ºÈ; ÀüÈ ¾²±â ¸í·É ¼ºê ·çƾ
Mov P1, # 00000110b; ÅؽºÆ®°¡ ¿òÁ÷ÀÌÁö ¾ÊÀ¸¸é Ä¿¼°¡ ÀÚµ¿À¸·Î ¿À¸¥ÂÊÀ¸·Î À̵¿ÇÕ´Ï´Ù.
ÀüÈ È°¼ºÈ; ÀüÈ ¾²±â ¸í·É ¼ºê ·çƾ
Mov P1, # 0c0h, µð½ºÇ÷¹ÀÌ ½ÃÀÛ ÁÖ¼Ò ¾²±â (µÎ ¹ø° ÁÙÀÇ Ã¹ ¹ø° À§Ä¡)
ÀüÈ È°¼ºÈ; ÀüÈ ¾²±â ¸í·É ¼ºê ·çƾ
Mov P1, 01000001b; ¹®ÀÚ ÄÚµå a
SETB RS ;RS = 1
CLR RW; RW = 0; µ¥ÀÌÅÍ ±â·Ï Áغñ ¿Ï·á
CLR E; E = 0; µð½ºÇ÷¹ÀÌ ¸í·É ½ÇÇà
¸ðµç Áö¿¬; LCD ¸ðµâÀÌ »ç¿ë ÁßÀÎÁö ÆÇ´ÜÇϽʽÿÀ.
Setb E; E = 1; µð½ºÇ÷¹ÀÌ ¿Ï·á, ÇÁ·Î±×·¥ ÁßÁö
AJMP $
»ç¿ë:
CLR RS; ¾²±â Á¦¾î ¸í·ÉÀ»À§ÇÑ ¼ºê ·çƾ
CLR RW
CLR E
ACALL Áö¿¬
SETB E
RET
Áö¿¬:
Mov P1, # 0ffh; LCD »ç¿ë ¿©ºÎ¸¦ ÆÇ´ÜÇÏ´Â ¼ºê ·çƾ
CLR RS
SETB RW
CLR E
NOP
SETB E
JB P1.7, Áö¿¬; P1.7 ÀÌ ³ôÀº ¼öÁØÀÌ¸é ¹Ù»Û »çÀÌŬ ´ë±â
RET
¿£µå
ÇÁ·Î±×·¥ ½ÃÀ۽à LCD ¸ðµâ ±â´ÉÀÌ ÃʱâÈµÇ°í µð½ºÇ÷¹ÀÌ Çü½Ä¿¡ µ¿ÀÇÇÕ´Ï´Ù. Á¶¸í Ç¥½Ã´Â ¼öµ¿ °³ÀÔ ¾øÀÌ ÀÚµ¿À¸·Î ¿À¸¥ÂÊÀ¸·Î À̵¿µË´Ï´Ù. ¸í·ÉÀ» ÀÔ·Â ÇÒ ¶§¸¶´Ù ¸ÕÀú LCD ¸ðµâÀÌ »ç¿ë ÁßÀÎÁö ÆÇ´ÜÇϱâ À§ÇØ ¼ºê ·çƾ Áö¿¬À» È£ÃâÇÑ ´ÙÀ½ µð½ºÇ÷¹ÀÌ À§Ä¡ÀÇ ÁÖ¼Ò 0c0h ¸¦ ÀÔ·ÂÇÕ´Ï´Ù. ¸¶Áö¸·À¸·Î Ç¥½Ã ÇÒ ¹®ÀÚ aÀÇ 41 h¸¦ ÀÔ·ÂÇÕ´Ï´Ù.
SMC1602A (16*2) ¾Æ³¯·Î±× Æ÷Æ® ¶óÀÎ ¿¬°á ¸ðµå
¿¬°á ¶óÀÎ ´ÙÀ̾î±×·¥:
---------------------------------------------------
LCM-----51 LCM-----51 LCM------51
------------------------------------------------
DB0-----P1.0 DB4-----P1.4 RW-------P2.0
DB1-----P1.1 DB5-----P1.5 RS-------P2.1
DB2-----P1.2 DB6-----P1.6 E--------P2.2
Db3 ----- p1.3 DB7 ----- P1.7 VLCD ¿¬°á 1K ÀúÇ×±â GND
---------------------------------------------------
[Âü°í: AT89S52 ´Â 12m ¼öÁ¤ ¹ßÁø±â¸¦ »ç¿ëÇÕ´Ï´Ù]
============================================================= */
# LCM _ RW P2 _ 0/Á¤ÀÇ ÇÉ Á¤ÀÇ
# LCM _ RS P2_1 Á¤ÀÇ
# LCM Á¤ÀÇ _ E P2_2
# LCM _ µ¥ÀÌÅÍ P1 Á¤ÀÇ
# LCM »óÅ ´Ü¾î·Î ¹Ù»Û id¸¦ °¨ÁöÇÏ´Â µ¥ »ç¿ëµÇ´Â 0x80 / /
# I nclude
¹«È¿ ¾²±â µ¥ÀÌÅÍ ¾Ëcm (¼¸í ¾øÀ½ char WDLCM);
Void WriteCommandLCM(unsigned char WCLCM,BuysC), ¹«È¿ ¾²±â
Unsigned char ReadDataLCM(void);
Unsigned char ReadStatusLCM(void);
¹«È¿ LCMInit (¹«È¿);
Void DisplayOneChar (¼¸í ¾øÀ½ char X, ¼¸í ¾øÀ½ char Y, ¼¸í ¾øÀ½ char DData)
¹«È¿ µð½ºÇ÷¹À̸®½ºÆ®, (¼¸í µÇÁö ¾ÊÀº char X, ¼¸í µÇÁö ¾ÊÀº char Y, ¼¸í µÇÁö ¾ÊÀº char ÄÚµå * DData)
¹«È¿ Áö¿¬ 5ms (¹«È¿);
¹«È¿ Áö¿¬ 400ms (¹«È¿);
¼¸íµÇÁö ¾ÊÀº char ÄÚµå uctech[] = {"uctech"};
¼¸íµÇÁö ¾ÊÀº char code net[] = {"uctech.icpcn.com"};
¹«È¿ ¸ÞÀÎ (¹«È¿)
{
Delay400ms(); /½ÃÀÛ ¹× lcmÀÌ ÀÛµ¿ µÉ ¶§±îÁö ±â´Ù¸®½Ê½Ã¿À.
Lcminit(); /LCM ÃʱâÈÈ
Áö¿¬ 5ms(); / /¼ø°£ Áö¿¬ (ÇÊ¿äÇÏÁö ¾ÊÀ½)
µð½ºÇ÷¹À̸®½ºÆ® (0, 5, uctech);
µð½ºÇ÷¹À̸®½ºÆ® (0, 0, net);
Readdatalcm(); / /Å×½ºÆ® ¹®ÀåÀº Àǹ̰¡ ¾ø½À´Ï´Ù
µ¿¾È (1);
}
// ¾²±â µ¥ÀÌÅÍ
¹«È¿ ¾²±â µ¥ÀÌÅÍ ¾Ëcm (¼¸í ¾øÀ½ char WDLCM)
{
Readstatuslcm(); / /ºÐ»ê °¨Áö
LCM _ µ¥ÀÌÅÍ = WDLCM;
LCM _ RS = 1;
LCM _ RW = 0;
LCM _ E = 0; / /Å©¸®½ºÅ» ¼Óµµ°¡ ³Ê¹« ³ôÀ¸¸é ÀÌ ÈÄ ¾à°£ÀÇ Áö¿¬À» Ãß°¡ ÇÒ ¼ö ÀÖ½À´Ï´Ù.
LCM _ E = 0; / /Áö¿¬
LCM _ E = 1;
}
// ¾²±â Áö½Ã
Void writecommandlcm (unsigned char wclcm, buysc) / /buysc°¡ 0 ÀÏ ¶§ ¹Ù»Û °¨Áö ¹«½ÃÇϱâ
{
(Buysc) readstatuslcm(); / /ÇÊ¿ä¿¡ µû¶ó »ç¿ë Áß °¨Áö
LCM _ µ¥ÀÌÅÍ = WCLCM;
LCM _ RS = 0;
LCM _ RW = 0;
LCM _ E = 0;
LCM _ E = 0;
LCM _ E = 1;
}
// Àб⠵¥ÀÌÅÍ
Unsigned char ReadDataLCM(void)
{
LCM _ RS = 1;
LCM _ RW = 1;
LCM _ E = 0;
LCM _ E = 0;
LCM _ E = 1;
¹ÝÇ° (LCM _ µ¥ÀÌÅÍ);
}
// Àб⠽ºÅ×ÀÌÆ®
Unsigned char ReadStatusLCM(void)
{
LCM _ µ¥ÀÌÅÍ = 0xFF;
LCM _ RS = 0;
LCM _ RW = 1;
LCM _ E = 0;
LCM _ E = 0;
LCM _ E = 1;
While (LCM _ Data & busy); / /»ç¿ë Áß ½ÅÈ£ °¨Áö
¹ÝÇ° (LCM _ µ¥ÀÌÅÍ);
}
¹«È¿ lcminit (¹«È¿) / / LCM ÃʱâÈÈ
{
LCM _ µ¥ÀÌÅÍ = 0;
Writecommandlcm (0x38,0); / /3 ¹è µð½ºÇ÷¹ÀÌ ¸ðµå ¼³Á¤, »ç¿ë Áß ½ÅÈ£ °¨Áö ¾øÀ½
Delay5Ms()
WriteCommandLCM(0x38,0);
Delay5Ms()
WriteCommandLCM(0x38,0);
Delay5Ms()
Writecommandlcm (0x38,1); /µð½ºÇ÷¹ÀÌ ¸ðµå ¼³Á¤, ¸Å¹ø »ç¿ë Áß ½ÅÈ£ °¨Áö ÇÊ¿ä
Writecommandlcm (0x08,1); /µð½ºÇ÷¹ÀÌ ²ô±â
Writecommandlcm (0x01,1); /Åõ¸í ȸé
Writecommandlcm (0x06,1),/µð½ºÇ÷¹ÀÌ Ä¿¼ À̵¿ ¼³Á¤
Writecommandlcm (0x0c, 1),/µð½ºÇ÷¹ÀÌ ¿Â ¹× Ä¿¼ ¼³Á¤
}
// ÁöÁ¤µÈ À§Ä¡¿¡ ¹®ÀÚ Ç¥½Ã
Void DisplayOneChar (¼¸í ¾øÀ½ char X, ¼¸í ¾øÀ½ char Y, ¼¸í ¾øÀ½ char DData)
{
Y & amp;= 0x1;
X & 0xf; / /Á¦ÇÑ x¿¡¼ 15 ·Î, y¿¡¼ 1 ·Î
(Y) x = 0x40; / /µÎ ¹ø° ÁÙÀÌ Ç¥½ÃµÇ¸é ÁÖ¼Ò ÄÚµå´Â 0x40 ÀÔ´Ï´Ù.
X = 0x80; / //¼³¸í ÄÚµå °è»ê
Writecommandlcm (x, 0); / /¿©±â¿¡¼ »ç¿ë Áß ½ÅÈ£°¡ °¨ÁöµÇÁö ¾Ê°í ÁÖ¼Ò Äڵ尡 Àü¼ÛµË´Ï´Ù.
WriteDataLCM(DData);
}
// ÁöÁ¤µÈ À§Ä¡¿¡ ¹®ÀÚ ¹®ÀÚ¿À» Ç¥½ÃÇÕ´Ï´Ù.
¹«È¿ µð½ºÇ÷¹À̸®½ºÆ®, ¹®ÀÚ·Î ¼¸í ¾È µÈ ¹®ÀÚ X, ¼¸í ¾È µÈ ¹®ÀÚ Y, ¼¸í ¾È µÈ ¹®ÀÚ ÄÚµå * DData)
{
Unsigned char ListLength;
ListLength = 0;
Y & amp;= 0x1;
X & 0xf; / /Á¦ÇÑ x¿¡¼ 15 ·Î, y¿¡¼ 1 ·Î
µ¿¾È (ddata [¸ñ·Ï ±æÀÌ] > 0x20) / /¹®ÀÚ¿ ³¡¿¡ µµ´ÞÇϸé Á¾·á
{
X <= 0xf) /X ÁÂÇ¥°¡ 0xf ¹Ì¸¸À̾î¾ßÇÏ´Â °æ¿ì
{
Displayonechar (x, y, ddata [¸ñ·Ï ±æÀÌ]),//´ÜÀÏ ¹®ÀÚ Ç¥½Ã
ListLength ++;
X ++;
}
}
}
// 5ms Áö¿¬
¹«È¿ Áö¿¬ 5ms (¹«È¿)
{
¼¸í µÇÁö ¾ÊÀº int TempCyc = 5552;
While (TempCyc-);
}
// 400ms Áö¿¬
¹«È¿ Áö¿¬ 400ms (¹«È¿)
{
¼¸íµÇÁö ¾ÊÀº ½¡ TempCycA = 5;
Unsigned int TempCycB;
While (TempCycA --)
{
TempCycB = 7269;
While (TempCycB-);
};
À§ÀÇ ÀýÂ÷´Â ÂüÁ¶ ¿ëÀÔ´Ï´Ù!