با سلام یک مدار فرستنده گیرنده طراحی کردم که می خواهم کلید ریستی در آن تعبیه کنم که بعد از از ارسال کاراکتر روی lcd آن را ریست کند و کاراکترها از روی آن پاک شود اگر کدی می باست به مدار اظافه شود لطفا راهنمایی کنید با تشکر.
مدار تشکیل شده از 2 میکرو 89c2051
یک فرستنده گیرنده hmtr
1 کی پد و 1 ال سی دی
مدار تشکیل شده از 2 میکرو 89c2051
یک فرستنده گیرنده hmtr
1 کی پد و 1 ال سی دی
کد:
#include <at89x051.h>
#include <LCD.h>
void delay_ms( unsigned int value);
void main()
{
char Input=0;
cls();
while(1)
{
Input=P3 & 0x0f;
delay_ms(5);
switch (Input)
{
//case 0x00:break;
case 0x01:lcd_show("B");delay_ms(3);break;
case 0x02:lcd_show("C");delay_ms(3);break;
case 0x03:lcd_show("D");delay_ms(3);break;
case 0x04:lcd_show("3");delay_ms(3);break;
case 0x05:lcd_show("6");delay_ms(3);break;
case 0x06:lcd_show("9");delay_ms(3);break;
case 0x07:lcd_show("#");delay_ms(3);break;
case 0x08:lcd_show("2");delay_ms(3);break;
case 0x09:lcd_show("5");delay_ms(3);break;
case 0x0a:lcd_show("8");delay_ms(3);break;
case 0x0b:lcd_show("0");delay_ms(3);break;
case 0x0c:lcd_show("1");delay_ms(3);break;
case 0x0d:lcd_show("4");delay_ms(3);break;
case 0x0e:lcd_show("7");delay_ms(3);break;
case 0x0f:lcd_show("*");delay_ms(3);break;
}
delay_ms(60);
}
}
void delay_ms( unsigned int value)
{
unsigned int i=0,j=0;
for(i=0;i<value;i++)
for(j=0;j<1000;j++);
}
کد:
#include <at89x051.h>
sbit D0 = P3^0;
sbit D1 = P3^1;
sbit D2 = P3^2;
sbit D3 = P3^3;
sbit TE = P3^4;
#define Data P1
char key=0;
void delay_ms( unsigned int value);
void main()
{
while(1)
{
TE=1;
Data=0x7f; //sotone 1 ra 0 kardeh
delay_ms(10);
key=Data;
key=key&0x0f;
switch(key){
case 0x0e:D0=0;D1=0;D2=0;D3=0;TE=0;delay_ms(7);TE=1;break;
case 0x0d:D0=1;D1=0;D2=0;D3=0;TE=0;delay_ms(7);TE=1;break;
case 0x0b:D0=0;D1=1;D2=0;D3=0;TE=0;delay_ms(7);TE=1;break;
case 0x07:D0=1;D1=1;D2=0;D3=0;TE=0;delay_ms(7);TE=1;break;
}
Data=0xbf; //sotone 2 ra 0 kardeh
delay_ms(10);
key=Data;
key=key&0x0f;
switch(key){
case 0x0e:D0=0;D1=0;D2=1;D3=0;TE=0;delay_ms(7);TE=1;break;
case 0x0d:D0=1;D1=0;D2=1;D3=0;TE=0;delay_ms(7);TE=1;break;
case 0x0b:D0=0;D1=1;D2=1;D3=0;TE=0;delay_ms(7);TE=1;break;
case 0x07:D0=1;D1=1;D2=1;D3=0;TE=0;delay_ms(7);TE=1;break;
}
Data=0xdf; //sotone 3 ra 0 kardeh
delay_ms(10);
key=Data;
key=key&0x0f;
switch(key){
case 0x0e:D0=0;D1=0;D2=0;D3=1;TE=0;delay_ms(7);TE=1;break;
case 0x0d:D0=1;D1=0;D2=0;D3=1;TE=0;delay_ms(7);TE=1;break;
case 0x0b:D0=0;D1=1;D2=0;D3=1;TE=0;delay_ms(7);TE=1;break;
case 0x07:D0=1;D1=1;D2=0;D3=1;TE=0;delay_ms(7);TE=1;break;
}
Data=0xef; //sotone 4 ra 0 kardeh
delay_ms(10);
key=Data;
key=key&0x0f;
switch(key){
case 0x0e:D0=0;D1=0;D2=1;D3=1;TE=0;delay_ms(7);TE=1;break;
case 0x0d:D0=1;D1=0;D2=1;D3=1;TE=0;delay_ms(7);TE=1;break;
case 0x0b:D0=0;D1=1;D2=1;D3=1;TE=0;delay_ms(7);TE=1;break;
case 0x07:D0=1;D1=1;D2=1;D3=1;TE=0;delay_ms(7);TE=1;break;
}
}//end of while
}
void delay_ms( unsigned int value)
{
unsigned int i=0,j=0;
for(i=0;i<value;i++)
for(j=0;j<100;j++);
}



دیدگاه