با سلام ،
دوست عزیز شما در حال استفاده از ورژنی قدیمی از اینترنت اکسپلورر هستید ، برای اینکه مشکلات ناشی از نمایش را نداشته باشید ، لطفا اقدام به دریافت مرورگری مناسب کرده و یا از ورژن قدیمی ما استفاده نمایید.


امتیاز موضوع:
  • 4 رأی - میانگین امتیازات: 3.75
  • 1
  • 2
  • 3
  • 4
  • 5
آموزش میکرو PIC با کامپایلر CSS
#1
Lightbulb 
سلام خدمت شما کاربران گرامی :
İmage
در این تاپیک میکروکنترولر PIC به زبان سی © با استفاده از کامپایلر CSS آموزش داده می شود .

شما میتوانید کامپایلر css را از لینک رو به رو دانلود کنید دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.



سوالات خود در رابطه با آموزش ها را در تاپیک روبه رو مطرح کنید دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.



لطفا از پرسیدن سوال در این تاپیک بصوت جدی خودداری کنید تا تاپیک شلوغ نشود .


با تشکر از شما دوستان گرامی

پاسخ
#2
سلام با اجازه آقا حسام یه چنتا برنامه با pic18f452 برا راه اندازی این میکرو میذارم :

تصویر بالا پایه های این میکرو رو نشون میده برای راه اندازی باید :
پایه MCRL یا همون پایه ی 1 رو با مقاومت 10 کیلو به vcc وصل کنید (plull up کنید) .
پایه های 11 و 32 به vcc و پایه های 12 و 31 به gnd وصل کنید .
پایه های 13 و 14 به کریستال وصل کنید .
توی ccs برا تعیین اسم میکرو از دستور زیر استفاده می کنیم :
کد php:
#include <18f452.h> 
برای ورودی یا خروجی کردن یه پایه از دستور زیر استفاده می کنیم :
کد php:
set_tris_x(); 
داخل پرانتز پایه هایی که میخوایم ورودی شه رو 1 و برای خروجی کردن پایه ها از 0 استفاده می کنیم x هم اسم پورته .
برای مقدار دهی به پورتی که خروجی شده از دستور زیر ستفاده می کنیم :
کد php:
Output_x(); 
توی پرانتر مقداری که میخوایم به پایه های میکرو بدیم رو قرار میدیم و x هم اسم پورته .
این هم یه برنامه چشمک زن با پورت b
دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.

اگر دوستان تمایل دارن تا با آقا حسام ادامه بدیم .


فایل‌(های) پیوست شده بندانگشتی (ها)
   
پاسخ
#3
سلام
توی این قسمت میخوایم یه مقدار از پورت ورودی بخونیم برای این کار از دستور زیر استفاده میکنیم:
کد php:
value=input_x(); 
دستور بالا مقدار x که مربوط به پورت مورد نظره رو در متغیر value یا متغیر دلخواه قرار میده یا میتونید به عنوان یه مقدار ازش استفاده کنید مثلا:
کد php:
Output_b(input_d()); 
توی قسمت بالا مقدار پورت d رو میخونه و توی پورت b قرار میده .
حالا اگه بخواید مقدار یه پایه رو بخونید از دستور زیر استفاده می کنید :
کد php:
value=input (PIN_Xn); 
که x اسم پورته و n شماره پایه مورد نظر value هم یه متغیر بیتیه .
فقط دوستان حواستون باشه که با دستور
کد php:
set_tris_x(); 
با یک کردن پایه های مورد نظر در حالت ورودی قرار بدید .
این هم یه برنامه این قسمت :


فایل‌(های) پیوست شده
.rar   2.rar (اندازه: 35.93 KB / تعداد دفعات دریافت: 26)
پاسخ
#4
توی این قسمت می خوایم lcd کارکتری رو راه اندازی کنیم .
اولین دستور تعیین کنیم lcd روی کدوم پورت باشه :
کد php:
#define lcd_use_portx_lcd true 
x پورت مورد نظر
ترتیب پایه ها به این شکله:
کد php:
LCD_ENABLE_PIN  PIN_x0                            
LCD_RS_PIN     PIN_x1                          
LCD_RW_PIN     PIN_x2                             
LCD_DATA4      PIN_x4                            
LCD_DATA5      PIN_x5                             
LCD_DATA6      PIN_x6                             
LCD_DATA7      PIN_x7 

حالا کتابخونه lcd کارکتری رو فراخوانی می کنیم :
کد php:
#include <LCD.c> 

ccs تابعی برا پاک کردن lcd نداره و باید بهش این تابع رو یا به کتابخونه lcd اضافه کنید یا توی هر برنامه اون رو اضافه کنید :
کد php:
void lcd_clear () {
lcd_send_byte(0,0x01);
lcd_send_byte(0,0x02);

یا اگه نخواستید میتونید از دستور زیر استفاده کنید :
کد php:
lcd_putc(  ); 
توی این تابع f\ رو بنویسید lcd رو پاک می کنه .
تابع زیر lcd رو فعال می کنه :
کد php:
lcd_init (); 

تابع زیر lcd رو به مکان دلخواه برا نوشتن می فرسته :
کد php:
lcd_gotoxy(x,y); 
ccs مثل کدویژن x و y از 0 شروع نمیشه از 1 شروع میشه .

این تابع باهاش میشه یه متغیر یا یه رشته رو از فلش میکرو ارسال کنید :
کد php:
lcd_putc ("x"); 
x یه رشته از حافظه فلشه توی قسمت بعد نوشتن یه متغییر رو بهتون نشون میدم .
این هم یه برنامه که یه مقدار میفرسته رو lcd :


فایل‌(های) پیوست شده
.rar   3.rar (اندازه: 53.6 KB / تعداد دفعات دریافت: 27)
پاسخ
#5
سلام
برای نشون دادن متغیر روی lcd باید از دستور printf کنید :
کد php:
printf(lcd_putc"str%A"B); 
توی قسمت str کارکترهایی که دوست دارید بنویسید و قسمت B متغیر هایی که دوست دارید اضافه کنید اگر متغیر هاتون بیشتر از یکی بود بینشون " , " بذارید و به ازای هر متغیر یه A% باید بذارید که A بسته به نوع متغیر بستگی داره مثلا برای رشته s و برای متغیر صحیح بدون علامت u و ... باید استفاده کنید
توی این مثال زیر یه برنامه ساده نوشتم که متغیر حلقه for رو lcd نشون میده :


فایل‌(های) پیوست شده
.rar   4.rar (اندازه: 69.31 KB / تعداد دفعات دریافت: 24)
پاسخ
#6
من اینو ساختم فقط یه سوکت برا میکروهای 40 پایه بهش اضافه کردم (pickit2) :


فایل‌(های) پیوست شده بندانگشتی (ها)
   

.rar   LAST PICkit2 PCB+SCH.rar (اندازه: 60.26 KB / تعداد دفعات دریافت: 32)
پاسخ
#7
سلام دوستان
توی این قسمت adc میکرو رو نشونتون میدم .
اول باید تعیین کنید دقت میکرو 8 یا 10 یا 16 بیت باشه (16 بیتش بدرد نمیخوره) که این کار رو با دستور زیر انجام میدیم :
کد php:
#DEVICE ADC=X 
x باید 8 یا 10 یا 16 باشه البته برای pic18f452
با دستور پایین کلاک adc رو تعیین میکنیم:
کد php:
setup_adc(x); 
که به جای x یکی از مقادیر زیر رو میذاریم :
کد php:
ADC_OFF                    
 ADC_CLOCK_DIV_2   
 ADC_CLOCK_DIV_4    
 ADC_CLOCK_DIV_8    
 ADC_CLOCK_DIV_16  
 ADC_CLOCK_DIV_32   
 ADC_CLOCK_DIV_64   
 ADC_CLOCK_INTERNAL 

بعد باید پایه هایی که میخواید ورودی adc بشه رو تعیین کنید که با این دستور این کار میکنیم :
کد php:
setup_adc_ports (X); 
X یکی از عبارات زیر باید بذارید :
کد php:
NO_ANALOGS                         // None
 
ALL_ANALOG                         // A0 A1 A2 A3 A5 E0 E1 E2 
 
AN0_AN1_AN2_AN4_AN5_AN6_AN7_VSS_VREF    // A0 A1 A2 A5 E0 E1 E2 VRefh=A3    
 
AN0_AN1_AN2_AN3_AN4                  // A0 A1 A2 A3 A5        
 
AN0_AN1_AN2_AN4_VSS_VREF              // A0 A1 A2 A4 VRefh=A3            
 
AN0_AN1_AN3                        // A0 A1 A3
 
AN0_AN1_VSS_VREF                    // A0 A1 VRefh=A3
 
AN0_AN1_AN4_AN5_AN6_AN7_VREF_VREF       // A0 A1 A5 E0 E1 E2 VRefh=A3 VRefl=A2    
 
AN0_AN1_AN2_AN3_AN4_AN5               // A0 A1 A2 A3 A5 E0       
 
AN0_AN1_AN2_AN4_AN5_VSS_VREF           // A0 A1 A2 A5 E0 VRefh=A3         
 
AN0_AN1_AN4_AN5_VREF_VREF             // A0 A1 A5 E0 VRefh=A3 VRefl=A2         
 
AN0_AN1_AN4_VREF_VREF                // A0 A1 A4 VRefh=A3 VRefl=A2            
 
AN0_AN1_VREF_VREF                    // A0 A1 VRefh=A3 VRefl=A2
 
AN0                               // A0
 
AN0_VREF_VREF                       // A0 VRefh=A3 VRefl=A2 

پیکر بندی adc تموم شد فقط کانالی که میخوایم مقدار adc رو بخونیم تعیین میکنیم که با دستور زیر انجام میدیم :
کد php:
set_adc_channel(X); 
x کانال مورد نظره .
فقط حواستون باشه بین دستور تعویض کانال (دستور بالا ) و دستور خوندن مقدار adc (دستور زیر) باید 10 میکرو ثانیه delay بذارید وگرنه قاطی میکنه .
و دستور زیر هم مقدار adc رو میخونه :
کد php:
value=read_adc(); 
value متغیر دلخواه و متناسب با adc انتخاب کنید .
در آخر هم یه برنامه ساده برای خواندن مقدار adc از کانال 0 adc :
(عیدتون هم مبارک :D)


فایل‌(های) پیوست شده
.rar   5.rar (اندازه: 52.11 KB / تعداد دفعات دریافت: 12)
پاسخ
#8
پروگرامر pickit2 مثل پروگرامر avr ها نیست 6 سیم بهمون میده که 5 تاش برامون کافیه . برای هر میکرو باید به دیتاشیتش نگاه کرد و این 5 تا سیم رو بهش وصل کرد :
vpp : به پایه MCLR یا معادل ریست توی avr وصل کرد (با این سیم بازی نکنید چون ولتاژش از 10 ولت بیشتره :) )
vdd : به پایه vdd میکرو باید وصل بشه و معادل vcc در avr یا همون تغذیه 5 ولت میکرو .
vss : به پایه vss میکرو وصل میشه و معادل gnd یا همون زمینه .
pgd : به پایه pgd میکرو باید وصل بشه .
pgc : به پایه pgc باید وصل بشه.
در آخر اگه پروگرامر میکروتون رو نشناخت دیود 1n4148 کنار led ها رو اتصال کوتاه کنید .

salam aya ic ke roye khode madar hast barname mekhad ya na?
age barname mekhad lotfan bezarin
[/quote]
یه میکرو pic18f2550 خود پروگرامر داره که من رفتم پیش یکی از دوستام که کارش تعمیر مادربورد کامپیوتر بود و پرو گرامر یونیورسال داشت پروگرامش کردم .


فایل‌(های) پیوست شده
.rar   PK2V023200.rar (اندازه: 22.82 KB / تعداد دفعات دریافت: 14)
پاسخ
#9
من میخوام این مدارو بسازم لطفا راهنمایی کنین
رو شماتیک و پی سی بی 3 تا سلف هستن اما رو عکس فقط یک سلف علت چیست؟
کریستال مدار چه مقداریست؟
جمپر واسه چیه؟
این چمپر رو عکس هسا اما تو پی سی بی فکر کنم نه؟
پوش باتون واسه چیه و کی استفاده میشه؟
طریقه وصل مادگی یو اس بی چطوریه؟
پین هایی که کنار زیپ هستش واسه چیه و چه زمان استفاده میشه؟
آیا عکس مدار با شماتیک و پی سی بی که گذلشتین تو فایل پیوست یکی هستش؟
ممنون

مقدار سلف چقدره؟
پاسخ
#10
ماشالا یکی یکی :
1 . این سلف سه تا سلف 200 میکرو رو با هم سری کرده تا یه سلف 600 بسازه شما میتونید یه سلف 300 تا 600 استفاده کنید البته من یه دونه 100 به جا 600 میکرو گذاشتم مشکلی هم پیدا نکردم.
2 . کریستال 20 مگ
3 . این جامپر هستش زیر مقاوت های 19 و 20 قرار داره که برای تعیین تغذیه میکروهای 5 و 3.3 ولتیه البته برای میکروهای 3.3 ولتی توصیه میکنم از تغذیه خارجی استفاده کنید .
4. در حالت عادی کاربرد نداره ولی اگه دوست داشت داشته باشید میتونید تعیین کنید وقتی فشارش دادید میکرو رو پروگرام کنه .
5. من این رو تغییر دادم خودش رو استفاده نکردم کانکتور usb b بهش اضافه کردم این هم pcb پروگرامر خودم .
6. این پین ها برا پروگرام کردن میکروهای غیر از 40 پایه است این زیپ رو خودم گذاشتم که بتونم میکروهای 40 پایه مثل pic16f877a رو راحت پروگرام کنم.
7. جای قطعات باید یکی باشه من فقط یه تغییراتی متناسب با نیازم دادم مثال همون زیپ و کانکتور usb اگه جای المان ها تغییر کرده بود مطرح کنید تا جواب تون رو بدم .

در آخر دوستان توی این قسمت میخوام کم کم pic رو آموزش بدم . لطف کنید سوالات تون رو اینجا مطرح نکنید من هر روز به سایت سر میزنم و تا جایی که بتونم جوابتون رو میدم .


فایل‌(های) پیوست شده
.rar   pickit2.rar (اندازه: 24.68 KB / تعداد دفعات دریافت: 18)
پاسخ
مشترک شدن در این موضوع


پرش به انجمن:

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

انتخاب پوسته :

دسترسی سریع
درباره ما
انجمن سرزمین الکترونیک در 20 شهریور 91 تاسیس شده ، که همیشه سعی کرده با ظاهری متفاوت و سرعتی خوب رضایت کاربران را جلب کند ، امیدواریم توانسته باشیم گامی کوچک در پیشرفت فناوری در ایران برداشته باشیم...
نیرو گرفته از MyBB 1.8.6 با فارسی سازی مای بی بی ایران - طراحی شده در : ملت دیزاین
© تمامی حقوق برای انجمن سرزمین الکترونیک محفوظ می باشد .

پوسته‌ی انجمن: