| Total 38 (30/38) | ºÎ·ÏÀ» Æ÷ÇÔÇÏ¿© ÃÑ 38°Á·Π±¸¼ºµÇ¾î ÀÖ½À´Ï´Ù. Ã¥À» ÀеíÀÌ ¾ÕÆä¿¡ÁöºÎÅÍ »ç¿ëÇϽʽÿä |
Á¦9Àå 8051 È°¿ë- 1°
1. P1 Æ÷Æ®¸¦ ÀÌ¿ëÇÑ LED ±¸µ¿

/*********************************************************************/
/* P1 Æ÷Æ®¸¦ ÀÌ¿ëÇÑ LED Á¡¸ê (1) */
/*********************************************************************/
/* ¾Ë°í¸®Áò : P1 Æ÷Æ®¸¦ ÀÌ¿ëÇÏ¿© 8 bit LED¸¦ Á¡¸êÇÔ */
#include
#define read_CODE(address) (((char *)0x020000)[address])
#define read_XDATA(address) (((char *)0x010000)[address])
#define write_XDATA(address,value) (((char *)0x010000)[address]=value)
void main(void)
{
int I;
for(;;) /* ¹«ÇÑ ·çÇÁ while(1)°ú °°Àº Çü½Ä */
{
P1=0xff; /* ¸ðµç ºñÆ®°ª OFF ---- Full Up Resister */
P3=0; /* ¸ðµç ºñÆ®°ª ON */
for(i=0;i<20000;i++); /* ¾à 1ÃÊ°£ÀÇ ½Ã°£Áö¿¬ */
P1=0; /* ¸ðµç ºñÆ®°ª ON ---- Full Up Resister */
P3=0xff; /* ¸ðµç ºñÆ®°ª OFF */
for(i=0;i<20000;i++); /* ¾à 1ÃÊ°£ÀÇ ½Ã°£Áö¿¬ */
}
}
/********************************************************************/
/* P1 Æ÷Æ®¸¦ ÀÌ¿ëÇÑ LED SHIFTTING (2) */
/********************************************************************/
/* ¾Ë°í¸®Áò : P1 Æ÷Æ®¸¦ ÀÌ¿ëÇÏ¿© 8 bit LED¸¦ Á ½¬ÇÁÆ®ÇÔ */
#include
#define read_CODE(address) (((char *)0x020000)[address])
#define read_XDATA(address) (((char *)0x010000)[address])
#define write_XDATA(address,value) (((char *)0x010000)[address]=value)
void main(void)
{
unsigned int i,j,A=1;
while(1) /* Shiftting ¹«Á¶°Ç Roof */
{
for(i=0;i<128;i++)
{
P1=A;
for(j=0;j<20000;j++);
if(A==128)A=1; /* A °ªÀÌ 0x80 À̸é ÃʱⰪÀº 0x01 */
else
A=A<<1; /* ±×·¸Áö ¾ÊÀ¸¸é A °ªÀ» Á·Π1 bit Shift */
}
}
}
/*********************************************************************/
/* P1 Æ÷Æ®¸¦ ÀÌ¿ëÇÑ LED Á¡¸ê (3) */
/*********************************************************************/
/* ¾Ë°í¸®Áò : P1 Æ÷Æ®¸¦ ÀÌ¿ëÇÏ¿© 8 bit LED¸¦ 4 bit ¾¿ ¹ø°¥¾Æ Á¡¸êÇÔ */
#include
#define read_CODE(address) (((char *)0x020000)[address])
#define read_XDATA(address) (((char *)0x010000)[address])
#define write_XDATA(address,value) (((char *)0x010000)[address]=value)
void main(void)
{
int I;
for(;;)
{
P1=0x0f; /* ÇÏÀ§ 4 ºñÆ®°ª OFF */
P1=0xf0; /* ÇÏÀ§ 4 ºñÆ®°ª ON */
for(i=0;i<20000;i++); /* ¾à 1ÃÊ°£ÀÇ ½Ã°£Áö¿¬ */
P1=0xf0; /* ÇÏÀ§ 4 ºñÆ®°ª ON */
P1=0x0f; /* ÇÏÀ§ 4 ºñÆ®°ª OFF */
for(i=0;i<20000;i++); /* ¾à 1ÃÊ°£ÀÇ ½Ã°£Áö¿¬ */
}
}
/********************************************************************/
/* P1 Æ÷Æ®¸¦ ÀÌ¿ëÇÑ LED ÁÂ, ¿ì SHIFTTING (4) */
/********************************************************************/
/* ¾Ë°í¸®Áò : P1 Æ÷Æ®¸¦ ÀÌ¿ëÇÏ¿© 8 bit LED¸¦ ÁÂ, ¿ì·Î ½¬ÇÁÆ®ÇÔ */
#include
#define read_CODE(address) (((char *)0x020000)[address])
#define read_XDATA(address) (((char *)0x010000)[address])
#define write_XDATA(address,value) (((char *)0x010000)[address]=value)
unsigned int i;
unsigned int A[]={0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x40,
0x20, 0x10, 0x08, 0x04, 0x02, 0x01};
/* °¢ bit °ª ¹è¿ÀúÀå */
void delay(unsigned int tt) /* ½Ã°£Áö¿¬ ÇÔ¼ö (¾à0.5 ÃÊ) */
{
unsigned int i,j;
for(i=0;i
for(j=0;j<5000;j++);
}
while(1) /* Shiftting ¹«ÇÑ ·çÇÁ */
{
for(i=0;i<15;i++) /* °¢ bit °ª Á¶°ÇÈ£Ãâ */
{
P1=A[i];
delay(1);
}
}
2. PPI 8255¸¦ ÀÌ¿ëÇÑ LED ±¸µ¿

/***********************************************************************/
/* PPI 8255À» ÀÌ¿ëÇÑ 16 bit LED Á¦³Ê */
/***********************************************************************/
/* ¾Ë°í¸®Áò : PPI 8255ÀÇ PA, PCÆ÷Æ®¸¦ ÀÌ¿ëÇÏ¿© 16 bit LED¸¦ ½¬ÇÁÆ®ÇÔ */
#include
#define read_CODE(address) (((char *)0x020000)[address])
#define read_XDATA(address) (((char *)0x010000)[address])
#define write_xdata(address,value) (((char *)0x010000)[address]=value)
#define PA 0x7400 /* PPI 8255 Control Address ¼³Á¤ */
#define PB 0x7401
#define PC 0x7402
#define CR 0x7403
#define CW 0x80 /* ¸ðµç port Ãâ·Â(output)À¸·Î ¼³Á¤ */
void delay() /* ½Ã°£ Áö¿¬ÇÔ¼ö Á¤ÀÇ */
{
int i;
for(i=0;i<20000;i++);
}
void init_8255() /* PPI 8255 Declear(¼±¾ð) ¹× ÃʱâÈ(Initial) */
{
write_XDATA(CR,CW);
delay();
}
void main()
{
int i,j,k=1,m=128;
init_8255();
while(1)
{
for(i=0;i<7;i++) /* 8 °³ÀÇ LED¸¦ */
{
write_XDATA(PA,k); /* PA Æ÷Æ® 1¹ø bit ºÎÅÍ */
delay();
k=k<<1; /* 1bit¾¿ left shifting */
if(k==0x10)k=1;
}
for(j=0;j<7;j++) /* 8 °³ÀÇ LED¸¦ */
{
write_XDATA(PC,m); /* PC Æ÷Æ® 1¹ø bit ºÎÅÍ */
delay();
m=m>>1; /* 1bit¾¿ Light shifting */
if(m==0)m=128;
}
}
}

/**********************************************************************/
/* - PPI 8255 LED CONTROL BY DIP SWICTH */
/**********************************************************************/
/* ¾Ë°í¸®Áò : PPI 8255ÀÇ PA, PBÆ÷Æ®¸¦ Ãâ·ÂÀ¸·Î PCÆ÷Æ®¸¦ ÀÔ·ÂÀ¸·Î ÇÏ¿© PC Æ÷Æ®
¿¡¼ Dip Switch ÀÇ Á¶ÀÛÀ¸·Î PA, PB ÀÇ 16 bit LED¸¦ ±¸µ¿ÇÔ */
#include
#define read_CODE(address) (((char *)0x020000)[address])
#define read_XDATA(address) (((char *)0x010000)[address])
#define write_xdata(address,value) (((char *)0x010000)[address]=value)
#define PA 0x7400
#define PB 0x7401
#define PC 0x7402
#define CR 0x7403
#define CW 0x89 /* CW => PA,PB : Ãâ·Â PC : ÀÔ·ÂÀ¸·Î ¼³Á¤ */
void delay()
{
int i;
for(i=0;i<20000;i++);
}
void init_8255() /* Initial PPI 8255 */
{
write_XDATA(CR,CW);
delay();
}
void main()
{
int in;
init_8255();
while(1)
{
in=read_XDATA(PC); /* ÀÔ·ÂµÈ °ªÀ» in¿¡ ±â·ÏÇÔ - in=0xff */
write_XDATA(PB,in);/* while ·çÇÁ¸¦ µ¹¸é¼ ÇØ´ç LED ±¸µ¿ */
delay();
}
}
3. 7 Segment ±¸µ¿
7-¼¼±×¸ÓÆ®´Â LED 8°³¸¦ ¹è¿ÇÏ¿© ³õÀº °ÍÀ¸·Î ±â°èÀåÄ¡ÀÇ »óÅÂÇ¥½Ã³ª ¿¡·¯Ç¥½Ã,
°¢Á¾ µð½ºÇ÷¹ÀÌ¿ëµµ·Î »ê¾÷ü¿¡¼ ¸¹ÀÌ È°¿ëµÇ°í ÀÖ´Ù

µðÁöÅÐ Æǵ¶±â´Â LED(light emitting diode) ¶Ç´Â LCD(liguid crystal display)¿Í °°Àº µð½ºÇ÷¹ÀÌ ÀåÄ¡¸¦
»ç¿ëÇÏ´Â µðÁöÅÐ ½Ã°è³ª ÀüÀÚ°è»ê±â¿¡¼ ¹ß°ßÇÒ ¼ö ÀÖ´Ù.
BCD-7¼¼±×¸ÕÆ® µðÄÚ´õ(BCD to 7segment decoder)´Â BCD¿¡¼ ½ÊÁø¼ýÀÚ¸¦ ¹Þ¾ÆµéÀÌ°í ½ÊÁø ¼ýÀÚ¸¦ ³ªÅ¸³»´Â
¼±ºÐÀ» ¼±ÅÃÇÏ´Â Ãâ·ÂÀ» »ý¼ºÇÏ´Â Á¶ÇÕȸ·ÎÀÌ´Ù. µðÄÚ´õÀÇ 7°³ÀÇ Ãâ·Â(a, b, c, d, e, f, g)Àº À§ ±×¸²°ú °°ÀÌ
Ç¥Çö¿¡ ÇÊ¿äÇÑ ¼±ºÐÀ» ¼±ÅÃÇÑ´Ù. ½ÊÁø¼ö 3¿¡ ÇØ´çÇÏ´Â BCD°ª 0011Àº Ç¥ÇöÀ» À§ÇÏ¿© a, b, c, d, gÀÇ ¼±ºÐÀÌ ÇÊ¿äÇÏ´Ù.
º¸Åë ³í¸®-1Àº ÇØ´ç ¼±ºÐÀ¸·Î ºÒÀÌ µé¾î¿Â °ÍÀÌ°í ³í¸®-0 ½ÅÈ£´Â ÇØ´ç ¼±ºÐÀÌ ²¨Áø »óŸ¦ ³ªÅ¸³½ °ÍÀ» º¼ ¼ö ÀÖ°í,
¾î¶² ¼¼±×¸ÕÆ® µð½ºÇ÷¹ÀÌ¿¡¼´Â ¿ªÀ¸·Î »ç¿ëµÇ±âµµ ÇÑ´Ù.
BCD-7¼¼±×¸ÕÆ® µðÄÚ´õ´Â 2Áø¼ö¸¦ 10Áø¼ö·Î º¯È¯ÇØ Áֱ⠶§¹®¿¡ ÁýÀûȸ·Î ¼³°èÀÚ¿¡ ÀÇÇØ µðÄÚ´õ¶ó ¸í¸íµÇ¾úÁö¸¸,
½ÇÁ¦·Î´Â 4ºñÆ® ½ÊÁø¼ö¸¦ 7ºñÆ® ÄÚµå·Î º¯È¯ÇÏ´Â ÄÚµå º¯È¯±âÀÌ´Ù.
±×¸² 9-5 ¿¡´Â 7-segment ÀÇ LED ¹è¿À» º¸¿©ÁÖ°í ÀÖ´Ù.

7-¼¼±×¸ÕÆ®´Â °øÅë´ÜÀÚ¸¦ 5volt ¿¡ ¿¬°áÇÏ°í ÀԷ´ÜÀÚ¿¡ 0 volt¸¦ Àΰ¡ÇÏ¿´À» ¶§ ÇØ´çÇÏ´Â LED ¿¡ ºÒÀÌ µé¾î¿À´Â
¾Ö³ëµå Çü(A-COM) °ú °øÅë´ÜÀÚ¸¦ 0 volt ÀÇ Àü¿ø¿¡ ¿¬°áÇÏ°í ÀԷ´ÜÀÚ¸¦ +5 volt¸¦ Àΰ¡ÇÏ¿´À» ¶§ ÇØ´çÇÏ´Â
LED ¿¡ ºÒÀÌ µé¾î¿À´Â ij¼Òµå Çü(C-COM) À¸·Î ³ª´²Áø´Ù.

/***********************************************************************/
/* PPI 8255À» ÀÌ¿ëÇÑ 7-segment Á¦¾î */
/***********************************************************************/
/* ¾Ë°í¸®Áò : PPI 8255ÀÇ PA Æ÷Æ®¸¦ ÀÌ¿ëÇÏ¿© 7-segment¸¦ Ä«¿îÆà ÇÔ */
#include
#define read_CODE(address) (((char *)0x020000)[address])
#define read_XDATA(address) (((char *)0x010000)[address])
#define write_xdata(address,value) (((char *)0x010000)[address]=value)
#define PA 0x7400 /* PPI 8255 Control Address ¼³Á¤ */
#define PB 0x7401
#define PC 0x7402
#define CR 0x7403
#define CW 0x80 /* ¸ðµç port Ãâ·Â(output)À¸·Î ¼³Á¤ */
void delay() /* ½Ã°£ Áö¿¬ÇÔ¼ö Á¤ÀÇ */
{
int i;
for(i=0;i<20000;i++);
}
void init_8255() /* PPI 8255 Declear(¼±¾ð) ¹× ÃʱâÈ(Initial) */
{
write_XDATA(CR,CW);
delay();
}
void main()
{
int i;
int segment[]={0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x27, 0x7f, 0x6f, 0x3f};
/* 0ºÎÅÍ 9±îÁö ½ÊÁø µ¥ÀÌÅÍ ¹è¿È */
init_8255();
while(1)
{
for(i=0;i<16;i++)
{
write_XDATA(PA, segment);
delay(1);
}
}
}
/***********************************************************************/
/* ·ÎÅ͸® ½ºÀ§Ä¡¸¦ ÀÌ¿ëÇÏ¿© 8051 P3 Æ÷Æ®ÀÇ 7-segment Á¦¾î */
/***********************************************************************/
/* ¾Ë°í¸®Áò : 8051 ÀÇ P1 Æ÷Æ®¿¡ ¼³Á¤µÇ¾î ÀÖ´Â Rotary Switch¸¦ ÀÌ¿ëÇÏ¿© 8051 P1
Æ÷Æ®¿¡ ¿¬°áµÈ 7-segment¸¦ ¼öµ¿À¸·Î Ä«¿îÆà ÇÔ ( ȸ·Îµµ¸¦ »ý°¢ÇØ º¸ÀÚ ) */
#include
#define read_CODE(address) (((char *)0x020000)[address])
#define read_XDATA(address) (((char *)0x010000)[address])
#define write_xdata(address,value) (((char *)0x010000)[address]=value)
#define S_0 P3.0 /* P3 Æ÷Æ®ÀÇ °¢ ºñÆ®°ª ¼³Á¤ */
#define S_1 P3.1
#define S_2 P3.2
#define S_3 P3.3
#define S_4 P3.4
#define S_5 P3.5
#define S_6 P3.6
#define S_7 P3.7
#define IN_BYTE P3 /* P3 Æ÷Æ®¸¦ ÀÔ·ÂÆ÷Æ®·Î ¼³Á¤ */
void delay(unsigned int tt)
{
int i,j;
for(i=0;i
for(j=0;j<20000;j++);
}
void main()
{
unsigned char pre_data; /* ÀÌÀü µ¥ÀÌÅÍ ±â¾ïº¯¼ö */
unsigned char key; /* ÇöÀçÀÇ Å° ´¸² »óÅ ±â¾ï º¯¼ö */
while(1)
{
IN_BYTE=pre_data=0;
key=IN_BYTE;
if(key=S_1) {key=pre_data;P1=0x3f;} /* °¢ °¨Áö Å°°ª¿¡ ´ëÇÑ µ¥ÀÌÅÍ ¼³Á¤ */
if(key=S_2) {key=pre_data;P1=0x06;}
if(key=S_3) {key=pre_data;P1=0x5b;}
if(key=S_4) {key=pre_data;P1=0x4f;}
if(key=S_5) {key=pre_data;P1=0x66;}
if(key=S_6) {key=pre_data;P1=0x6d;}
if(key=S_7) {key=pre_data;P1=0x7d;}
if(key=S_0) {key=pre_data;P1=0x00;}
}
}
|
|
 |
|