PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : نیاز فوری به برنامه



kendab
18-09-2012, 01:08
سلام
من یه برنامه به زیون بسکام میخواهم که ورودی را از پورت aبگیره
بعد خود عدد را روی یک سون سگمنت که به پوراbوصله نشون بده
بعد دو واحد کم بشه ازش روی یک سون سگمنت که به پورت c وصله نشون بده
بعد تقسیم بر دو شود روی یک سون سگمنت که به پورت d وصله نشون بدهد
ممنون

KHM
18-09-2012, 02:26
با این لحن یعنی سفارش میدین؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
اینجا برا کمک کردنه نه سفارش دادن...
برنامه رو خودتون مینویسین و هر جا مشکل داشتین،میپرسین

esisafa
18-09-2012, 13:07
علاوه بر پرسیدن یک راه دیگه هم هست که به یکی از مهندسین پول بدین تا برنامه رو بنویسه. با این کار هم شما به برنامتون میرسین و هم انگیزه مهندسین و اعضای سایت بالاتر میره برای ادامه کار

kendab
18-09-2012, 13:34
علاوه بر پرسیدن یک راه دیگه هم هست که به یکی از مهندسین پول بدین تا برنامه رو بنویسه. با این کار هم شما به برنامتون میرسین و هم انگیزه مهندسین و اعضای سایت بالاتر میره برای ادامه کار
سلام
ممنون
من چون نیاز فوری دارم اینجوری نوشتیم و قصد کوچکترین جسارت را به کسی نداشتم
معذرت میخواهم
من نوشتم ولی نمیدونم کجاش مشکل داره یا شاید همش

اگه کسی کمک کنه ممنون میشم
موفق باشید


$regfile = "m32def.dat"
$crystal = 8000000
Config Adc = Single , Prescaler = Auto
Config Portb = Output
Config Portc = Output
Config Portd = Output
Dim A As Word
Dim B As Word
Dim Yekan As Word
Dim Dahgan As Word
Dim Sadgan As Word
A = A - 4
A = A * 100
A = A \ 4
Yekan = A Mod 10
B = A Mod 100
Dahgan = B \ 10
Sadgan = A \ 100
Portb = Yekan
Portc = Dahgan
Portd = Sadgan
End

Doloop
18-09-2012, 16:45
نمیدونم بلدی یا نه ؟
اگه کل برنامه اینه که اونطور که میخای جواب نمیده
اول مقدار adc رو نخوندی فقط فعال کردی...
دوم دیتا برای نمایش روی سون سگمنت رو جا انداختی !!! یا اینجا نزاشتی
اینا کافیه یا بازم بگم مهندس (بهتره بگی تجربت توی زمینه برنامه نویسی چقدره تا بهتر کمکت کنن)
آخه من الان نمیدونم شما برنامه رو خلاصه گذاشتی اینجا یا نه کامله...:0013:

kendab
21-09-2012, 13:04
نمیدونم بلدی یا نه ؟
اگه کل برنامه اینه که اونطور که میخای جواب نمیده
اول مقدار adc رو نخوندی فقط فعال کردی...
دوم دیتا برای نمایش روی سون سگمنت رو جا انداختی !!! یا اینجا نزاشتی
اینا کافیه یا بازم بگم مهندس (بهتره بگی تجربت توی زمینه برنامه نویسی چقدره تا بهتر کمکت کنن)
آخه من الان نمیدونم شما برنامه رو خلاصه گذاشتی اینجا یا نه کامله...:0013:
سلام در زمینه برنامه نویس مبتدی هسم
اینم کل برنامه بود که نوشتم
اگه کمکم کنی ممنون هستم
موفق باشید

Doloop
21-09-2012, 17:02
من یه برنامه به زیون بسکام میخواهم که ورودی را از پورت aبگیره پس پورت A میشه ورودی که توی برنامه لحاظ نکردید


بعد خود عدد را روی یک سون سگمنت که به پوراbوصله نشون بدهخود عدد منظورتون کدومه ؟!!!
همونی که از طریق ADC دریافت کردید...!!!
اون یه عدد چهار رقمی هم میتونه باشه پس روی یک سون سگمنت نمیشه نمایش داد...؟؟؟ (اون عدد حداکثر میتونه 1024 باشه)



بعد دو واحد کم بشه ازش روی یک سون سگمنت که به پورت c وصله نشون بدهاینا فقط زمانی میشه که عدد شما تک رقمی باشه (که نیست)
مگر اینکه عدد ADC رو تقسیم کنید تا به یه عدد تک رقمی برسید


بعد تقسیم بر دو شود روی یک سون سگمنت که به پورت d وصله نشون بدهداگه عددتون اعشار داشت چی مهمه یا نه فقط مقدار صحیحش نیازه؟؟؟

با دو خط اول ADC پیکره بندی و فعال میشه و با خط سوم هم میتونی مقدار ADC رو بخونی و توی یه متغیر ذخیره کنی ...


Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
A = Getadc(0)
در مورد کد های مورد نیاز سون سگمنت هم به این آدرس برو یه برنامه هست به دردت میخوره ...:0013:

لینک (You can see links before reply)

kendab
22-09-2012, 15:23
پس پورت A میشه ورودی که توی برنامه لحاظ نکردید
خود عدد منظورتون کدومه ؟!!!
همونی که از طریق ADC دریافت کردید...!!!
اون یه عدد چهار رقمی هم میتونه باشه پس روی یک سون سگمنت نمیشه نمایش داد...؟؟؟ (اون عدد حداکثر میتونه 1024 باشه)

سلام
ممنون
مگر به میکرو میشه بیشتر از 5 ولت ورودی داد
اینا فقط زمانی میشه که عدد شما تک رقمی باشه (که نیست)
مگر اینکه عدد ADC رو تقسیم کنید تا به یه عدد تک رقمی برسید
اگه عددتون اعشار داشت چی مهمه یا نه فقط مقدار صحیحش نیازه؟؟؟

با دو خط اول ADC پیکره بندی و فعال میشه و با خط سوم هم میتونی مقدار ADC رو بخونی و توی یه متغیر ذخیره کنی ...


Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
A = Getadc(0)
در مورد کد های مورد نیاز سون سگمنت هم به این آدرس برو یه برنامه هست به دردت میخوره ...:0013:

لینک (You can see links before reply)[/QUOTE]
یه سوال دیگه هم داشتم
علاوه بر برنامه بالا من میخواهم یه برنامه داشته باشم که ورودی 4 تا 20 داریم میخواهیم که وقتی 4 هس عدد0 و وقتی 20 هست عدد 320 تو خروجی داشته باشیم البته با این شرط که یکان روی یک سون سگمنت
دهگان روی یکی دیگه
صدگان هم همینطور
یه برنامه دارم که باید اول ورودی را به باینری تبدیل کرد بعد بدیم میکرو تا کار کنه با کمی مشکل داره
میزارمش اینجا ببینی چی نشون میده
#include <mega32.h>
#include <delay.h>
#define yekan PORTC
#define dahgan PORTD
#define sadgan PORTB
#define input PORTA
int function (void);
void main()
{
int x;
char str[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6 f}; // codes for 7seg cathode
DDRA=0x00;
PORTA=0x00;
DDRB=DDRD=DDRC=0xff;
while(1)
{
x=function();
yekan=dahgan=sadgan=0x00; //turn off all 7 segment
yekan=str[x%10];
dahgan=str[(x/10)%10];
sadgan=str[(x/100)%10];
delay_ms(20);
}
}
int function (void)
{
int temp;
temp=PINA;

temp = (18.75*(temp-4));

return (temp);
}

Doloop
22-09-2012, 16:57
مهندس یه دفعه از بیسیک پریدی سی؟!!!


مگر به میکرو میشه بیشتر از 5 ولت ورودی داد

نه نمیشه...
اون 1024 که من گفتم ADC مقدار آنالوگ رو میگیره و یه عدد 10 بیتی بسته به مقدار آنالوگ ورودی تحویل میده
2 به توان 10 میشه 1024 (اشتباه نشه این ولتاژ نیست)


علاوه بر برنامه بالا من میخواهم یه برنامه داشته باشم که ورودی 4 تا 20 داریم میخواهیم که وقتی 4 هس عدد0 و وقتی 20 هست عدد 320 تو خروجی داشته باشیم البته با این شرط که یکان روی یک سون سگمنت
دهگان روی یکی دیگه
صدگان هم همینطور

این 4 تا 20 ولتاژه؟؟؟!!! اگه ولتاژه که مستقیم نمیتونید بدید به میکرو
ورودی ADC یه رنجی داره که توی دیتا شیت میکرو ذکر شده الان دقیق خاطرم نیست
شما باید با مدار مثلا مقاومتی این مقدار رو کاهش بدید بعد برای میکرو بفرستید
اصلا بحث نمایش دادن روی سگمنت مشکلی نیست با سه تا سگمنت میشه راحت یه عدد سه رقمی رو نمایش داد...:wink:
فعلا شما روی مقدار ورودی کار کنید تا توی رنج مجاز قرار بگیره

منم بیسیک راحت تر میتونم کمکت کنم...:0013:

kendab
22-09-2012, 18:15
مهندس یه دفعه از بیسیک پریدی سی؟!!!


نه نمیشه...
اون 1024 که من گفتم adc مقدار آنالوگ رو میگیره و یه عدد 10 بیتی بسته به مقدار آنالوگ ورودی تحویل میده
2 به توان 10 میشه 1024 (اشتباه نشه این ولتاژ نیست)


این 4 تا 20 ولتاژه؟؟؟!!! اگه ولتاژه که مستقیم نمیتونید بدید به میکرو
ورودی adc یه رنجی داره که توی دیتا شیت میکرو ذکر شده الان دقیق خاطرم نیست
شما باید با مدار مثلا مقاومتی این مقدار رو کاهش بدید بعد برای میکرو بفرستید
اصلا بحث نمایش دادن روی سگمنت مشکلی نیست با سه تا سگمنت میشه راحت یه عدد سه رقمی رو نمایش داد...:wink:
فعلا شما روی مقدار ورودی کار کنید تا توی رنج مجاز قرار بگیره

منم بیسیک راحت تر میتونم کمکت کنم...:0013:
ممنون
بهم گفتن با یک پل مقاومتی ورودی ر ا تقسیم کن مثلا بجا 20 ورودی 4 تا 5 ولت بشه که 4 ضریب باشه
راستش درست نفهمیدم
ورودی چکار کنم به رنج مجاز برسه؟