سلام به همه اساتید اگه میشه یک لایبری برای lcd 2*16 بزاریدبرای نرم افزار کیل من لایبری های قبلی رو دانلود کرد اما نمیدون پایه ها lcd باید به کدوم یک از پایه های میکرو وصل بشه.ممنون
سطحي و كار راه انداز
دقيق و حرفه اي
سلام به همه اساتید اگه میشه یک لایبری برای lcd 2*16 بزاریدبرای نرم افزار کیل من لایبری های قبلی رو دانلود کرد اما نمیدون پایه ها lcd باید به کدوم یک از پایه های میکرو وصل بشه.ممنون
سلام
مهندس شما کتابخونه رو قرار بده، دوستان میگن ترتیب اتصال پایه ها چطوریه ..؟
اگه از همین تایپیک دانلود کرده باشید داخل کتابخونه نحوه اتصال پایه ها قید شده ...
موفق باشید..
*** اللّهم عجّل لولیک الفرج ***
سلام. بله میدونم داخل کتابخونه نحوه اتصال پایه ها قید شده من هم طبق اونا پایه هارو متصل میکنم اما جواب نمیگیرم من این کتابخونه رو میزارم شما هم یه تستی بکنید اگه هم بشه یک برنامه نمونه هم برای این کتابخونه بزارید .
ممنون
rs=gpioc12
rw=gpioc11
en=gpioc10
d4=gpioc0
d5=gpioc1
d6=gpioc2
d7=gpioc3
سلام
اگر کتابخونه رو از همین جا دان کردید باید عرض کنم حتما جواب میده چون تمامی مثال های قرار داده شده توی این تایپیک تست شده هستن
مشکل شما از اتصالات هست
منم چندین بار به همین مشکل برخوردم
یکبار rw رو چون فقط قرار بود روی السیدی بنویسم به زمین وصل کرده بودم که اشتباه بود و باید به همون پایه تعریف شده وصل میشد
یکبار زمین مدار (بورد) با زمین السیدی مشترک نبود
چندین بار اتصالات چون روی بردبورد بود ایراد داشت
و....
اگر روی السیدی چیزی نمایش داده نشه ایراد یا از برنامه هست یا اتصالات پایه های کنترلی
ولی اگه کاراکتر های نا مفهوم نمایش بده ایراد از 4تا پین دیتا هست ...
اینارو هم مد نظر قرار بدید
موفق باشید
*** اللّهم عجّل لولیک الفرج ***
دوستان من تایمر 2 رو روی اینتراپت تنظیم کردم و پرچمشو بررسی کردم مشکلی نداره ولی تابع اینتراپت اصلا فراخونی نمیشه سورسشو رو میزارم لطفا راهنمایی کنین
Timer_t
سلام
مهندس یکم دقت کن باید توی همون خطوط ابتدایی مشخص کرده باشهیک کتابخونه دیگه هم از این جا دانلود کردم اما هر چه قدر زیروروش میکنم نمیتون پایه های میکرو به lcd پیدا کنم چه طوری متصل میشن این کتابخونه رو من میزارم شما یه نگاهی بهش بندازید طریقه متصل کردن پایه هارو بگید لطفا
هم پورتش باید معلوم باشه هم پین مورد نظرش
*** اللّهم عجّل لولیک الفرج ***
دروووود دوستان
مشکل من به طرز عجیبی رفع شد
من از هدر برد stm32f103ret6 استفاده میکنم تو حالت عادی وقتی اینتراپت تایمرو فعال میکردم تابعش فراخونی نمیشد ولی پرچمش فعال میشد.
ظاهرا بعد از پروگرام باید تغذیه رو قطع و وصل میکردم تا درست کار کنه که برام عجیب بود.
اساتید نظر شما چیه؟
سلام و درود
دوستان من یه سوال در مورد adcدارم ممنون میشم راهنماییم کنیناگه بخوایم از چند کانال ADC1 استفاده کنیم چه چیزایی رو در کد بالا باید تغییر بدیم ؟کد:void ADC_Configuration(void) { ADC_InitTypeDef ADC_InitStructure; /* ADC1 configuration ------------------------------------------------------*/ ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; ADC_InitStructure.ADC_ScanConvMode = DISABLE; ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; ADC_InitStructure.ADC_NbrOfChannel = 1; ADC_Init(ADC1, &ADC_InitStructure); /* ADC1 regular channel8 configuration */ ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_13Cycles5); /* Enable ADC1 */ ADC_Cmd(ADC1, ENABLE); /* Enable ADC1 reset calibaration register */ ADC_ResetCalibration(ADC1); /* Check the end of ADC1 reset calibration register */ while(ADC_GetResetCalibrationStatus(ADC1)); /* Start ADC1 calibaration */ ADC_StartCalibration(ADC1); /* Check the end of ADC1 calibration */ while(ADC_GetCalibrationStatus(ADC1)); /* Start ADC1 Software Conversion */ ADC_SoftwareStartConvCmd(ADC1, ENABLE); }
در واقع منظورم اینه اگه بخوایم چند کانال داشته باشیم تابع رو باید به چه صورت بنویسیم و به چه نکاتی باید توجه داشته باشیم ؟
سپاس
سلام
ADC_InitStructure.ADC_NbrOfChannel = 1;
این قسمت رو تغیر بدید ...!!!
*** اللّهم عجّل لولیک الفرج ***
ممنون بابت پاسختون.
به جز number of channel چیز دیگه ای نباید تغییر کنه ؟(من چهار تا کانال احتیاج دارم این عدد میشه 4 درسته ؟)
این خط رو چطور باید بنویسیم؟تعریف scan mode هم انگار باید تغییر کنه درست میگم ؟کد:/* ADC1 regular channe0 configuration */ ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_13Cycles5);
کد:ADC_InitStructure.ADC_ScanConvMode = DISABLE; /* Specifies whether the conversion is performed in Continuous or Single mode. This parameter can be set to ENABLE or DISABLE. Definition at line 60 of file stm32f10x_adc.h*/
سلام
/* ADC1 regular channe0 configuration */
ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_13Cycles5);
این قسمت رو هم بله باید برای هر کانال تنظیم کنید
اگر منوال یا یک نمونه مثال رو مطالعه کنید تمام جزئیات قید شده
منم حقیقتش به فایل هام دسترسی ندارم تا بهتر راهنمائی کنم و حافظه م جوابگو نیست
*** اللّهم عجّل لولیک الفرج ***
ممنونم [ گل ]
هر چی مثال دیدم تک کاناله بوده !تعریف scan mode رو تو پست قبلیم گذاشتم نوشته اگه multi channel بخواید باید enable اش کنید درست میگم ؟
stm32 چی هست؟
سلام
STM مخفف شده STMicroelectronics هست
32 هم نشان دهنده پردازنده 32 بیتی هست مثلا برای 8 بیتی میشه STM8
*** اللّهم عجّل لولیک الفرج ***
چقدر جای توضیحات درباره تایمر تو این تاپیک خالیه !!!!
با سلام
من سنسور lm35 رو با میکرو stm32f103rbt6 با استفاده از اطلاعات این تاپیک راه اندازی کردم برنامه ای که نوشتم رو در زیر قرار دادم
مشکلم اینجاست که دمای اتاق رو 261 درجه سانتی گراد نشون میده !!ولتاژ خروجی این سنسور روی السیدی 2654 میلی ولت نشون داده میشه (با مولتی متر هم اندازه گرفتم 2.5 ولت نشون میده)و طبق دیتاشیت این سنسور دما 0.1 ولتاژ خروجی برحسب میلی ولت هست و من این فرمول رو در برنامه اعمال کردم !!
ممنون میشم راهنماییم کنید واقعا گیج شدم ایراد کار نمیدونم کجاست !کد:#include "stm32f10x.h" #include "lcd4bit.h" #include "stdio.h" void RCC_Configuration(void); void GPIO_Configuration(void); void Delay(__IO uint32_t num) { __IO uint32_t index = 0; /* default system clock is 72MHz */ for(index = (72000 * num); index != 0; index--) { } } //*********************************MAIN************************************// int main(void) { ADC_InitTypeDef ADC_InitStructure; unsigned int d=0,i=0,dd=0,temp,T; char s[20]; uint32_t a; RCC_Configuration(); GPIO_Configuration(); ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; ADC_InitStructure.ADC_ScanConvMode = DISABLE; ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; ADC_InitStructure.ADC_NbrOfChannel = 1; ADC_Init(ADC1, &ADC_InitStructure); ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_13Cycles5); ADC_Cmd(ADC1, ENABLE); ADC_ResetCalibration(ADC1); while(ADC_GetResetCalibrationStatus(ADC1)); ADC_StartCalibration(ADC1); while(ADC_GetCalibrationStatus(ADC1)); ADC_SoftwareStartConvCmd(ADC1, ENABLE); while (1) { a = ADC_GetConversionValue(ADC1); T=(a*3300)/4095; lcd_init(); { sprintf(s,"input:%d mv",T); set_cursor(1,1); lcd_putsf(s); Delay(100); i++; d=T+d; if(i==5) { dd=d/5; i=0; d=0; } temp=dd/10; set_cursor(2,1); sprintf(s,"temp:%d 0c",temp); set_cursor(2,1); lcd_putsf(s); Delay(100); } } } //*************************************************************************// void RCC_Configuration(void) { ErrorStatus HSEStartUpStatus; RCC_DeInit(); RCC_HSEConfig(RCC_HSE_ON); HSEStartUpStatus = RCC_WaitForHSEStartUp(); if(HSEStartUpStatus == SUCCESS) { FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); FLASH_SetLatency(FLASH_Latency_2); RCC_HCLKConfig(RCC_SYSCLK_Div1); RCC_PCLK2Config(RCC_HCLK_Div1); RCC_PCLK1Config(RCC_HCLK_Div2); RCC_ADCCLKConfig(RCC_PCLK2_Div4); RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); RCC_PLLCmd(ENABLE); while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); while(RCC_GetSYSCLKSource() != 0x08); } RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOA , ENABLE); } //******************************************************************** void GPIO_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; // A0->analog input for ADC ch1-->LM35 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; GPIO_Init(GPIOA, &GPIO_InitStructure); } //********************************************************************
این کد را شما از کجا آوردی و از چه لایبرری استفاده کردی؟ تنظیمات ADC نباید داخل تابع main باشه یک سری تنظیماتش هم اصلا در رفرنس CMSIS نتونستم پیدا کنم، این رفرنس: https://raw.githubusercontent.com/we...iph_lib_um.chm خلاصه این تنظیمات ADC خیلی عجیب و غریبه تا حالا این طوریشو ندیده بودم!
کجاش عجیبه ؟چرا نباید تو main باشه ؟
از همین تاپیک یاد گرفتم اتفاقا کامنت خط به خطش رو از سایت st در آوردم !