امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
نمایش عدد چند رقمی توسط KEYPAD روی LCD
#1
سلام سلام بچه ها Heart
بازم یه مشکل
این دفعه مشکلم اینه که میخوام یه عددی مثلا 3272 رو با KEYPAD روی LCD بنویسم
ولی......جریان داره Big Grin
اول برنامه رو داشته باشین
تا توضیحاتشم بدم:
کد:
$regfile = "m16def.dat"
$crystal = 1000000

Config Kbd = Portb

Dim A As Word , B As Word , C As Word

Cursor Off
Home

Main:
Locate 2 , 1

Do

A = Getkbd()

If A > 15 Then
   Goto Main
Else


If A = 14 Then B = 2
If A = 13 Then B = 3
If A = 11 Then B = 4
If A = 10 Then B = 5
If A = 9 Then B = 6
If A = 8 Then B = 5
If A = 2 Then B = 0
If A = 7 Then B = 7
If A = 5 Then B = 9
If A = 6 Then B = 8
If A = 2 Then B = 0
If A = 1 Then B = 1
If A = 0 Then B = 1



     If B <= 9 Then
           C = C * 10
           C = C + B
             Lcd C

             Waitms 1000


Loop
  End If

End If

End

حالا مشکل کجاس......!Confused
مشکل اینه که میخوام وقتی عدد 3 رو به عنوان عدد اول زدم تا تهش نره Angry
یعنی 3 رو زدم حتی اگه دستم روی دکمه هم باشه همون 3 رو نشون بده
بعدش که دستمو از 3 برداشتم
2 رو زدم تا اینجاش 32 رو نشون بده

خلاصش:
دستمو رو دکمه نگه داشتم تا ته نره و 1 عدد نمایش بده نه N تا

همین
At
TNX
دنيايـــــ منــــــ کــــــ......امــ....پـــ...يــــ.....وتــــــ....ر
پاسخ
#2
کد php:
$regfile "m16def.dat"
$crystal 1000000

Config Porta 
Input Config Portc Output

Dim A 
As Byte As Byte

Config Lcdpin 
Pin Rs Portc.0 Portc.2 Db4 Portc.4 Db5 Portc.5 Db6 Portc.6 Db7 Portc.7
Config Lcdbus 
4
Config Lcd 
16 2
Cursor Off

Config Kbd 
Porta Debounce 30 Delay 250

Lable
:
Getkbd()
If 
15 Then Goto Lable
'If A = 12 Then C = "-"
'
If 13 Then C "="
'If A = 14 Then C = "+"
'
If 15 Then Cls
Lookup(Table)
Locate 1 B
If 10 Then Lcd "*"
Elseif 11 Then Lcd "#"
Else : Lcd A
End 
If
Incr B : If 16 Then shiftlcd right
Goto Lable

End                                                         
'end program

Table:
Data 1 , 2 , 3 , 12 , 4 , 5 , 6 , 13 , 7 , 8 , 9 , 14 , 10 , 0 , 11 
سلام فک کنم منطورت این بود:
الان وقتی تو 3 رو زدی بعدش دستتو برداری یک عدد دیگه بزنب جلوش نوشته میشه
پاسخ
 سپاس شده توسط ehsancompany ، micro-tech
#3
سلام لطفا  مشکل اینو  بهم بگین...ممنون
با یه کی پد  می خوام رو ال سی دی کاراکتر هارو نمایش بدم


#include <mega16.h>
#include <delay.h>
#include <stdio.h>
#include <alcd.h>

int row=0, column=-1, position=0;

flash char lay[16] = {'7','8','9','/','4','5','6','*','1','2','3','-','c','0','=','+'};
flash char shift[4] = {0xFE,0xF0,0xFB,0xF7};




      



void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port A initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In 
DDRA=(0<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T 
PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);

// Port B initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In 
DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) | (0<<DDB0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T 
PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);

// Port C initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In 
DDRC=(0<<DDC7) | (0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (0<<DDC0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T 
PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0); 
DDRD=(0<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (1<<DDD3) | (1<<DDD2) | (1<<DDD1) | (1<<DDD0);
// State: Bit7=P Bit6=P Bit5=P Bit4=P Bit3=0 Bit2=0 Bit1=0 Bit0=0 
PORTD=(1<<PORTD7) | (1<<PORTD6) | (1<<PORTD5) | (1<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);



lcd_init(16);

while (1)
{
      for(row=0;row<4;row++)
      { 
      column = -1;
      PORTD = shift[row];
      if(PIND.4==0){column = 0;}
      if(PIND.5==0){column = 1;}
      if(PIND.6==0){column = 2;}
      if(PIND.7==0){column = 3;}
      if(column != -1){position = (row*4)+column;}

      while(PIND.4 == 0){}
      while(PIND.5 == 0){}
      while(PIND.6 == 0){}
      while(PIND.7 == 0){}


      }
delay_ms(50);
      
if(position == 13){lcd_clear();}

else lcd_putchar(lay[position]);

}



}
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  نمایش مقدار یک متغیر بر روی ال سی دی گرافیکی(به وسیله کتابخانه موج 00098 2 678 15-12-1394، 02:24 صبح
آخرین ارسال: mohammad_amin
  مشكل در اندازه گيري دما توسط سنسور ds18b20 moham9d 1 821 27-8-1393، 01:14 صبح
آخرین ارسال: iman d
  مشکل در راه نمایش متون در GLCD ali2565 3 1,137 12-2-1393، 10:26 صبح
آخرین ارسال: askhorshid
  سنسور pir و نمایش شدت حرارت ommsend 0 542 13-7-1392، 03:59 عصر
آخرین ارسال: ommsend
  راهنمایـــی برای راه اندازی( KeyPad 4*4) از صفر ehsancompany 7 4,634 9-7-1392، 12:48 عصر
آخرین ارسال: ali_esfand
  مشکل نمایش دمای تصادفی ترموستات با LM35 و AVR [email protected] 0 760 15-1-1392، 05:57 عصر
آخرین ارسال: [email protected]
Smile انتقال اطلاعات بی سیم بین میکروکنترلر و کامپیوتر توسط ماژولهای RFM0 madaresabz 0 822 7-12-1391، 11:05 عصر
آخرین ارسال: madaresabz
  نمایش عدد بالای 32000 روی lcd ariahope 5 2,116 18-9-1391، 07:09 عصر
آخرین ارسال: ariahope
  دستورت نمایش بر روی سون سگمنت kendab 0 591 29-8-1391، 09:07 عصر
آخرین ارسال: kendab
  کنترل پایه های میکرو توسط پرت کام Mirhabibi 5 1,134 17-8-1391، 08:18 عصر
آخرین ارسال: kamran0080

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان