سلام به همگی من یه کمک در مورد کیپد و میکرو مگاه 8 میخواستم می خواهم برنامه ای بنویسم که که یک عدد رو از کیپد بخونه و روی ال سی دی نمایش بده و بافشار دادن یه کلید دیگه از کیپد از اون عددی که روی ال سی دی هست معکوس تا صفر بشمره و فاصله هر عدد تا عدد بعدی که کم میشه تا به صفر برسه یک ثانیه باشه در ضمن این عددی که میگره هم باید یک رقمی باشه و هم دو رقمی خواهشاً منو راهنمایی کنید؟؟باتشکر از همه :redface:
اطلاعیه
Collapse
No announcement yet.
کیپد4*4 و تایمر
Collapse
X
-
پاسخ : کیپد4*4 و تایمر
سلام آقا مجتبی فکر کنم من نتونستم منظورم بیان کنم من واسه این گفتم کیپد که میخواهم چند کار دیگه هم بعداً بهش اضافه کنم حالا یه جور دیگه میگم میخوام که یه عدد دورقمی یا یک رقمی از صفحه کلید بگیره و مثلاً تاز مانی که دکمه استارت نزدیم هیچ کاری انجام نشه و فقط هموم عدد و روی ال سی دی نشون بده و به محض اینکه کلید استارت و زدیم از اون عددی که گرفته معکوس تا صفر بشمره مثلاً اگه عدد 50 رو بهش دادیم از 50 تا صفر بشمره و روی ال سی دی هم نشون بده وفاصله هر عدد تا عدد بعدی یک ثانیه باشه که 50 ثانیه طول بکشه تا به صفر برسه.به هر حال خیلی ممنون که کمک میکن
دیدگاه
-
پاسخ : کیپد4*4 و تایمر
چرا دوست عزیز من دقیقا متوجه منظورتون شدم
دلیلش هم شاید این باشه که این چیزی که من براتون گفتم دقیقا همین جوری کار میکنه یعنی مقدار رو توسط دو تا پوش باتون دریافت میکنه ( با دقت 1 ثانیهآ تا ماکزیممش که متناسب با نوع متغیری که براش تعریف میشه مثلا برای int برابر هست با 32767 ) و این مقدار رو در سط اول lcd نشون میده و با زدن دکمه start یک پایه 1شده و شروع به شمارش معکوس میکنه و پس از صفر شدن آن پایه نیز صفر میشه
اما فرقی که داره اینه که با کی پد نیست!
دیدگاه
-
پاسخ : کیپد4*4 و تایمر
دوست عزیز این هکس را نگاه کن :
http://www.4shared.com/photo/BuHCg-sy/Untitled_2.html
باید کی پد را اینطوری ببندی و اول px0 - 4 را خروجی قرار بدی و به آن ها مقدار 1 بدی و px 4 - 7 را وروردی و پورت را چک کنی و مثلا داخل a بریزی بلافاصله بعد از چک کردن باید px 0 - 4 را ورودی قرار بدی و px 4 - 7 را خروجی و مقدار ان ها را یک بکنی و px 0 - 4 را چک کنی و مثلا ان را داخل b قرار بدی .
اینم کدش :
یکم تو باز و بسته شدن اکولاد ها مشکل هست . دیگه خودتون به بزرگی خودتون ببخشید . :biggrin:
#include <mega32.h>
#include <delay.h>
#include <stdlib.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x12 ;PORTD
#endasm
#include <lcd.h>
// Declare your global variables here
unsigned char keynumber[16]={0xEE,0xED,0xEB,0xE7,0xDE,0xDD,0xDB,0xD7,0xBE,0xB D,0xBB,0xB7,0x7E,0x7D,0x7B,0x77};
unsigned char key,number,i,str;
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// LCD module initialization
lcd_init(16);
while (1)
{
// Place your code here
DDRA=0xF0;
PORTA=0x0F;
key=PINA;
DDRA=0x0F;
PORTA=0xF0;
key=key|PINA;
if(key==0xFF)
{
for(i=0;i<16;i++)
{
if(key==keynumber[i])
{
i=i+1;
number=i;
if(i==16)
{
number=0;
}
}
}
}
itoa(number,str);
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts(str);
delay_ms(300);
};
}
practice make perfect
دیدگاه
-
پاسخ : کیپد4*4 و تایمر
سلام
کاش مشخص می کردی که میخوای با سی بنویسی یا با بیسیک
در ضمن نمیگم توی همه پروتوئوس ها ولی توی خیلی از پروتوئوس ها کیپد کار نمیکنه و شما واسه اینکه ببینی برنامتون کار میکنه یا نه باید یا توی عمل ببینی یا توی سیمولوشن خود بسکام
از آنجا که برنامه تون برنامه ی زیاد خاصی نیست میتونید واسه زمان از دستورات ساده یه wait استفاده کنیدمولا علی (ع) میفرمایند : آسوده باش , آستین هارا بالا بزن , بر خدا توکل کن , آنگاه خدا را خواهی دید که زودتر از تو دست به کار شده است .
دیدگاه
-
پاسخ : کیپد4*4 و تایمر
بفرمایید این هم دقیقا همون چیزی که می خواهید :
مدار طوری طراحی کردم که میشه زمان رو تا9999 ثانیه تنظیم کرد و با دکمه reset مقدار ائن رو صفر کرد و با دکمه start دستور شمارش معکوس صادر شده و pind.0نیز یک میشه و پس از اتمام شمارش این پایه نیز دوباره
صفر می گردد.
http://www.persiangig.com/pages/down...r%26keypad.rar
pass : mojtaba_led@yahoo.com
دیدگاه
دیدگاه