پاسخ : LCD
سلام:
ممنون از راهنماییتون :bye
ولی وقتی که یه عدد رو ویزنید (اولین عدد) به جای اینکه نمایش پیدا کنه می ره به خونه بعدی و از عدد دوم نمایش پیدا می کنه
و نمی شه عددی مثل 11 یا 22 رو نمایش داد آخه دستور پایین مانع میشه
if(P1!=a)
{
lcd();
من برنامه رو پایین قرلر می دم
#include <reg51.h>
int w,z=0,a=0,s=1,b=0;
sbit e =P3^0;
sbit rs=P3^1;
///********************************************LCD*** ************************************************** ****///
///********************************************LCD*** ************************************************** ****///
///********************************************LCD*** ************************************************** ****///
void delay_lcd ()
{
for (w=0;w<850;w++);
}
void instruction()
{
delay_lcd();
P1=a;
rs=0;
e=1;
e=0;
}
void send_dat()
{
delay_lcd();
P1=a;
rs=1;
e=1;
e=0;
b=0;
}
void lcd()
{
while (s)
{
a=0x38;
instruction();
instruction();
a=0x0f;
instruction();
a=0x01;
instruction();
a=0x02;
instruction();
s=0;
}
send_dat();
}
///********************************************LCD*** ************************************************** ****///
///********************************************LCD*** ************************************************** ****///
///********************************************LCD*** ************************************************** ****///
/************************************************** ************************************************** ********/
///********************************************KEY*** ************************************************** ****///
///********************************************KEY*** ************************************************** ****///
///********************************************KEY*** ************************************************** ****///
void delay_key()
{
for (z=0;z<7000;z++);
}
void key()
{
P2=0b11111110;
if (P2!=0b11111110)
{
delay_key();
if (P2!=0b11111110)
{
switch (P2)
{
case 0b11110110:a="3";b=1;break;
case 0b11101110:a="6";b=1;break;
case 0b11011110:a="9";b=1;break;
}
}
}
P2=0b11111101;
if (P2!=0b11111101)
{
delay_key();
if (P2!=0b11111101)
{
switch (P2)
{
case 0b11110101:a="2";b=1;break;
case 0b11101101:a="5";b=1;break;
case 0b11011101:a="8";b=1;break;
}
}
}
P2=0b11111011;
if (P2!=0b11111011)
{
delay_key();
if (P2!=0b11111011)
{
switch (P2)
{
case 0b11110011:a="1";b=1;break;
case 0b11101011:a="4";b=1;break;
case 0b11011011:a="7";b=1;break;
}
}
}
}
///********************************************KEY*** ************************************************** ****///
///********************************************KEY*** ************************************************** ****///
///********************************************KEY*** ************************************************** ****///
void main()
{
while (1)
{
key();
if(P1!=a)
{
lcd();
while(P1!=a)
{
}
}
}
}
سلام:
ممنون از راهنماییتون :bye
ولی وقتی که یه عدد رو ویزنید (اولین عدد) به جای اینکه نمایش پیدا کنه می ره به خونه بعدی و از عدد دوم نمایش پیدا می کنه
و نمی شه عددی مثل 11 یا 22 رو نمایش داد آخه دستور پایین مانع میشه
if(P1!=a)
{
lcd();
من برنامه رو پایین قرلر می دم
#include <reg51.h>
int w,z=0,a=0,s=1,b=0;
sbit e =P3^0;
sbit rs=P3^1;
///********************************************LCD*** ************************************************** ****///
///********************************************LCD*** ************************************************** ****///
///********************************************LCD*** ************************************************** ****///
void delay_lcd ()
{
for (w=0;w<850;w++);
}
void instruction()
{
delay_lcd();
P1=a;
rs=0;
e=1;
e=0;
}
void send_dat()
{
delay_lcd();
P1=a;
rs=1;
e=1;
e=0;
b=0;
}
void lcd()
{
while (s)
{
a=0x38;
instruction();
instruction();
a=0x0f;
instruction();
a=0x01;
instruction();
a=0x02;
instruction();
s=0;
}
send_dat();
}
///********************************************LCD*** ************************************************** ****///
///********************************************LCD*** ************************************************** ****///
///********************************************LCD*** ************************************************** ****///
/************************************************** ************************************************** ********/
///********************************************KEY*** ************************************************** ****///
///********************************************KEY*** ************************************************** ****///
///********************************************KEY*** ************************************************** ****///
void delay_key()
{
for (z=0;z<7000;z++);
}
void key()
{
P2=0b11111110;
if (P2!=0b11111110)
{
delay_key();
if (P2!=0b11111110)
{
switch (P2)
{
case 0b11110110:a="3";b=1;break;
case 0b11101110:a="6";b=1;break;
case 0b11011110:a="9";b=1;break;
}
}
}
P2=0b11111101;
if (P2!=0b11111101)
{
delay_key();
if (P2!=0b11111101)
{
switch (P2)
{
case 0b11110101:a="2";b=1;break;
case 0b11101101:a="5";b=1;break;
case 0b11011101:a="8";b=1;break;
}
}
}
P2=0b11111011;
if (P2!=0b11111011)
{
delay_key();
if (P2!=0b11111011)
{
switch (P2)
{
case 0b11110011:a="1";b=1;break;
case 0b11101011:a="4";b=1;break;
case 0b11011011:a="7";b=1;break;
}
}
}
}
///********************************************KEY*** ************************************************** ****///
///********************************************KEY*** ************************************************** ****///
///********************************************KEY*** ************************************************** ****///
void main()
{
while (1)
{
key();
if(P1!=a)
{
lcd();
while(P1!=a)
{
}
}
}
}
دیدگاه