سلام : از تاخیری که به وجود امده عذر خواهی میکنم, بریم سراغ راه اندازی نمایشگر nokia 5110 با stm32 جلسه آخر ؛ یه یاد اوری از جلسه قبل بگذاریم تا بعد؛ اخرین تابعی که جلسه قبل برای LCD نوشتیم تابع رفرش ال سی دی بود (اپدیت کردم محتوای ارایه به محتوای رم ال سی دی ) :
راه اندازی نمایشگر nokia 5110 با stm32 جلسه آخر
حالا چندتا تابع دیگه لازم داریم تا بنویسیم یکی از این توابع نمایش عکس هستش که به این صورت عمل میکنیم :
1 |
uint8_t N5110_show_pic (N5110_TypeDef* lcd,uint8_t *pic,uint8_t xpos ,uint8_t ypos,uint8_t color); |
ارگومان اول : مشخص کننده کدام LCD متصل هستش، یعنی برای متصل کردن چند ال سی دی به یک میکرو کنترلر (برای جاهایی که پیکسل برای نمایش کم میاریم ) کاربرد پیدا میکنه.
ارگومان دوم : نشان دهنده ارایه ای هست که کد های مربوط به تصویر در ان ذخیره شده.
ارگومان 4 ام : نشان دهنده موقعیت رسم تصویر در روی X
ارگومان 5 ام : نشان دهنده موقعیت رسم تصویر در روی Y
و ارگومان 6 ام : نشان دهنده رنگ رسم تصویر اس ( به صورت نات(جا به جایی رنگ های سیاه و سفید) یا به صورت معمولی طبق کدهای ارایه )
خب بریم سراغ اصل تابع؛ توی تابع چندتا متغیر در نظر میگیرم برای ذخیره سازی مقادیر :
1 2 3 |
uint8_t data [8]; uint16_t i,repeat=0,pic_x,pic_y,line; uint8_t x,y; |
متغیر اول یک ارایه هست برای ذخیره سازی بیت های هر ردیف دیتا از ال سی دی ( توضیحات جامع تر در جلسه 1 )
متغیر i یک متغیر برای تکرار حلقه for و متغیر repeat فلگ برای شمارش دفعات تکرار حلقه for و pic_x برای اندازه گیری طول تصویر و pic_y برای اندازه گیری عرض تصویر در نظر میگیرم؛ x,Y هم متغیر هایی هستند برای تکرار حلقه فور در راستای X و Y؛ ارگومان های اول و دوم در ارایه تصویر ما به ترتیب نشان دهنده طول تصویر در X و طول تصویر در Y هستند؛ پس برای دریافت طول تصویر در X مقدار 0 ام ارایه ورودی تابع را خوانده وبه متغیرpic_x میریزیم :
1 |
pic_x=pic[0]; |
برای دریافت عرض تصویر در Y مقدار 1 ام ارایه ورودی تابع را میخوانیم و به متغیر pic_y میریزیم :
1 |
pic_y=pic[1]; |
حالا باید دوتا شرط بزاریم اگر ابعاد تصویر از ابعاد LCD بزرگتر بود و قابلیت رسم را نداشت از تابع خارج شویم؛ برای این کار باید بدانیم مختصات شروع رسم تصویر را که در ورودی تابع گرفته بودیم و همچنین ابعاد ال سی دی را که در اول کتابخونه دیفاین کرده بودیم؛ پس اگر طول تصویر + موقعیت رسم تصویر در محور X کوچکتر از طول ال سی دی بود و اگر عرض تصویر + موقعیت رسم تصویر در محور Y کوچکتر از عرض ال سی دی بود تصویر قابلیت رسم دارد؛ پس مینویسیم :
1 2 |
if( (pic_x+xpos)>lcd_x_pix) return 0; if( (pic_y+ypos)>lcd_y_pix) return 0; |
حالا به یک فور نیاز داریم تا مختصات حرکت تصویر را در جهت Y بسازد برای اینکار هم از متغیر Y استفاده میکنیم.
نکته : چون تصویر باید از موقعیت ypos شروع به رسم کند پس مقدار اولیه متغیر برای رسم تصویر ypos و مقدار پایانی ان ypos+pic_y خواهد بود.
1 2 |
for(y=ypos;y<pic_y+ypos;y=y+8){ } |
به یک فور دیگر در فور جاری نیاز داریم تا مختصات X را برای ما بسازه و چون شروع رسم تصویر در راستای X باید برابر با xpos باشه و مقدار پایان فور باید xpos+pic_x باشد مینویسیم :
1 2 |
for(x=xpos;x<pic_x+xpos;x++){ } |
حالا باید دیتا ها رو متناسب با ارایه تصویر به رم ال سی دی منتقل کنیم؛ داخل حلقه اول به متغیر تکرار اضافه میکنیم :
1 |
repeat++; |
بعد چون که ما دیتا ها رو به ال سی دی به صورت بیتی منتقل میکنیم پس باید بایت هایی که در ارایه تصویر ذخیره شدن رو به بیت تبدیل کنیم و توی متغیر data ذخیره کنیم برای اینکار هم مینویسیم :
1 |
for(i=0;i<8;i++){if(pic[repeat+1] & 1 << i) data[i]=1;else data[i]=0;} |
خب حالا یک تابع دیگه لازم داریم تا 8 بیت متغیر رو از ما دریافت کنه + موقعیت x و Y و بایت ها رو به رم ال سی دی منتقل کنه؛ اینحوری توی این تابع میاد ورودی ها رنگ و دیتا و موقعیت X و Y را دریافت میکنه و اونهارو در قالب یک فور 8 تایی به رم ال سی دی منتقل کنه :
1 2 |
void N5110_write_y_byte(N5110_TypeDef* lcd,uint8_t x,uint8_t y,uint8_t data[8],uint8_t color){ } |
تابع رو اینحوری تعریف میکنم؛ یم متغیر برای تکرار حلقه در تابع معرفی میکنم :
1 |
uint8_t i; |
از دستور switch برای تشخیص رنگ ( 0 بودن یا 1 بودن ) استفاده میکنم :
1 2 3 4 5 6 |
switch(color){ case 0: break; case 1: break; } |
حالا اگر رنگ 0 بود :
1 2 3 |
for(i=0;i<8;i++){ N5110_set_pixel(lcd,x,i+y,data[i]); } |
دیتا ها با تابعN5110_set_pixel به صورت کامل به رم ال سی دی منتقل میشن ولی اگر رنگ ما 1 بود باید دیتای انتقالی رو نات کنیم پس مینویسیم :
1 2 3 |
for(i=0;i<8;i++){ N5110_set_pixel(lcd,x,i+y,!data[i]); } |
خب حالا کل تابع میشه این :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
void N5110_write_y_byte(N5110_TypeDef* lcd,uint8_t x,uint8_t y,uint8_t data[8],uint8_t color){ uint8_t i; switch(color){ case 0: for(i=0;i<8;i++){ N5110_set_pixel(lcd,x,i+y,data[i]); } break; case 1: for(i=0;i<8;i++){ N5110_set_pixel(lcd,x,i+y,!data[i]); } break; } } |
حالا برای انتقال دیتا های تصویر به رم ال سی دی در تابع N5110_show_pic از این تابع که الان نوشتیم استفاده میکنیم؛ و بایت اطلاعاتی که به صورت بیتی تبدیل کرده بودیم رو به بیت تبدیل میکنیم و به تابعی که نوشتیم میدیم :
1 |
N5110_write_y_byte(lcd,x,y,data,color); |
پس کل تابع رسم تصویر ما رو ال سی دی میشه :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
uint8_t N5110_show_pic (N5110_TypeDef* lcd,uint8_t *pic,uint8_t xpos ,uint8_t ypos,uint8_t color){ uint8_t data [8]; uint16_t i,repeat=0,pic_x,pic_y,line; uint8_t x,y; pic_x=pic[0]; pic_y=pic[1]; if( (pic_x+xpos)>lcd_x_pix) return 0; if( (pic_y+ypos)>lcd_y_pix) return 0; for(y=ypos;y<pic_y+ypos;y=y+8){ for(x=xpos;x<pic_x+xpos;x++){ repeat++; for(i=0;i<8;i++){if(pic[repeat+1] & 1 << i) data[i]=1;else data[i]=0;} N5110_write_y_byte(lcd,x,y,data,color); } } } |
خود ال سی دی یک قابلیتی داره برای نات کردن کل صفحه که باید کامند متناظر اون رو به ال سی دی منتقل کنیم برای اینکار هم تابع زیر رو مینویسیم :
1 2 3 |
void N5510_invert_screen(N5110_TypeDef* lcd){ N5110_WriteByte(lcd,0x00|0xD,N5110_COMMAND); } |
حالا باید یک تابع بنویسیم برای نمایش کاراکتر اول از همه باید یک جدول برای فونت ها داشته باشیم :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
unsigned char font6_8[][6] = { { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // space { 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00 }, // ! { 0x00, 0x00, 0x07, 0x00, 0x07, 0x00 }, // " { 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14 }, // # { 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12 }, // $ { 0x00, 0x62, 0x64, 0x08, 0x13, 0x23 }, // % { 0x00, 0x36, 0x49, 0x55, 0x22, 0x50 }, // & { 0x00, 0x00, 0x05, 0x03, 0x00, 0x00 }, // ' { 0x00, 0x00, 0x1c, 0x22, 0x41, 0x00 }, // ( { 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00 }, // ) { 0x00, 0x14, 0x08, 0x3E, 0x08, 0x14 }, // * { 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08 }, // + { 0x00, 0x00, 0x00, 0xA0, 0x60, 0x00 }, // , { 0x00, 0x08, 0x08, 0x08, 0x08, 0x08 }, // - { 0x00, 0x00, 0x60, 0x60, 0x00, 0x00 }, // . { 0x00, 0x20, 0x10, 0x08, 0x04, 0x02 }, // / { 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E }, // 0 { 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00 }, // 1 { 0x00, 0x42, 0x61, 0x51, 0x49, 0x46 }, // 2 { 0x00, 0x21, 0x41, 0x45, 0x4B, 0x31 }, // 3 { 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10 }, // 4 { 0x00, 0x27, 0x45, 0x45, 0x45, 0x39 }, // 5 { 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30 }, // 6 { 0x00, 0x01, 0x71, 0x09, 0x05, 0x03 }, // 7 { 0x00, 0x36, 0x49, 0x49, 0x49, 0x36 }, // 8 { 0x00, 0x06, 0x49, 0x49, 0x29, 0x1E }, // 9 { 0x00, 0x00, 0x36, 0x36, 0x00, 0x00 }, // : { 0x00, 0x00, 0x56, 0x36, 0x00, 0x00 }, // ; { 0x00, 0x08, 0x14, 0x22, 0x41, 0x00 }, // < { 0x00, 0x14, 0x14, 0x14, 0x14, 0x14 }, // = { 0x00, 0x00, 0x41, 0x22, 0x14, 0x08 }, // > { 0x00, 0x02, 0x01, 0x51, 0x09, 0x06 }, // ? { 0x00, 0x32, 0x49, 0x59, 0x51, 0x3E }, // @ { 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C }, // A { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36 }, // B { 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22 }, // C { 0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C }, // D { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41 }, // E { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01 }, // F { 0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A }, // G { 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F }, // H { 0x00, 0x00, 0x41, 0x7F, 0x41, 0x00 }, // I { 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01 }, // J { 0x00, 0x7F, 0x08, 0x14, 0x22, 0x41 }, // K { 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40 }, // L { 0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F }, // M { 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F }, // N { 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E }, // O { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06 }, // P { 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E }, // Q { 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46 }, // R { 0x00, 0x46, 0x49, 0x49, 0x49, 0x31 }, // S { 0x00, 0x01, 0x01, 0x7F, 0x01, 0x01 }, // T { 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F }, // U { 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F }, // V { 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F }, // W { 0x00, 0x63, 0x14, 0x08, 0x14, 0x63 }, // X { 0x00, 0x07, 0x08, 0x70, 0x08, 0x07 }, // Y { 0x00, 0x61, 0x51, 0x49, 0x45, 0x43 }, // Z { 0x00, 0x00, 0x7F, 0x41, 0x41, 0x00 }, // [ { 0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55 }, // 55 { 0x00, 0x00, 0x41, 0x41, 0x7F, 0x00 }, // ] { 0x00, 0x04, 0x02, 0x01, 0x02, 0x04 }, // ^ { 0x00, 0x40, 0x40, 0x40, 0x40, 0x40 }, // _ { 0x00, 0x00, 0x01, 0x02, 0x04, 0x00 }, // ' { 0x00, 0x20, 0x54, 0x54, 0x54, 0x78 }, // a { 0x00, 0x7F, 0x48, 0x44, 0x44, 0x38 }, // b { 0x00, 0x38, 0x44, 0x44, 0x44, 0x20 }, // c { 0x00, 0x38, 0x44, 0x44, 0x48, 0x7F }, // d { 0x00, 0x38, 0x54, 0x54, 0x54, 0x18 }, // e { 0x00, 0x08, 0x7E, 0x09, 0x01, 0x02 }, // f { 0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C }, // g { 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78 }, // h { 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00 }, // i { 0x00, 0x40, 0x80, 0x84, 0x7D, 0x00 }, // j { 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00 }, // k { 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00 }, // l { 0x00, 0x7C, 0x04, 0x18, 0x04, 0x78 }, // m { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78 }, // n { 0x00, 0x38, 0x44, 0x44, 0x44, 0x38 }, // o { 0x00, 0xFC, 0x24, 0x24, 0x24, 0x18 }, // p { 0x00, 0x18, 0x24, 0x24, 0x18, 0xFC }, // q { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08 }, // r { 0x00, 0x48, 0x54, 0x54, 0x54, 0x20 }, // s { 0x00, 0x04, 0x3F, 0x44, 0x40, 0x20 }, // t { 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C }, // u { 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C }, // v { 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C }, // w { 0x00, 0x44, 0x28, 0x10, 0x28, 0x44 }, // x { 0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C }, // y { 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44 }, // z { 0x00,0x00, 0x06, 0x09, 0x09, 0x06 } // horiz lines }; |
این فونت ها توی فایل font.h هستش که در فایل ته مطلب قرار داره و میتونید دانلودش کنید به همراه کتابخونه؛ حالا به یک تابع نیاز داریم تا کاراکتر رو از ورودی دریافت کنه و کد تصویر متناظر رو از ارایه فونت دریافت کنه و روی ال سی دی نمایش بده :
1 2 |
void N5110_WriteChar(N5110_TypeDef* lcd, uint8_t x, uint8_t y, uint8_t c) { } |
تابع رو اینحوری مینویسم ورودی ها هم که مشخص هستن دیگه توضیح نمیدم؛ داخل تابع چدنتا متغیر اینحوری تعریف میکنیم :
1 2 |
uint8_t line; uint8_t ch = 0, i; |
برای تبدیل کاراکتر ورودی به کد کاراکتر در جدول (تبدیل کد اسکی ) باید متغیر کاراکتر ورودی رو 32- کنیم :
1 |
c = c - 32; |
و همانند تابع نمایش تصویر عمل میکنیم و یک تصویر در ابعاد کوچیک تر روی ال سی دی نشون میدیم به این صورت :
1 2 3 4 5 6 7 8 9 10 |
for (line = 0; line < 6; line++) { ch = font6_8[c][line]; for (i=0; i<8; i++){ if (ch&0x01) N5110_ClearPixel(lcd, x+line, y+i); else N5110_DrawPixel(lcd, x+line, y+i); ch >>= 1; } } |
پس کل تابع میشه این :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
void N5110_WriteChar(N5110_TypeDef* lcd, uint8_t x, uint8_t y, uint8_t c) { uint8_t line; uint8_t ch = 0, i; c = c - 32; for (line = 0; line < 6; line++) { ch = font6_8[c][line]; for (i=0; i<8; i++){ if (ch&0x01) N5110_ClearPixel(lcd, x+line, y+i); else N5110_DrawPixel(lcd, x+line, y+i); ch >>= 1; } } } |
یک تابع دیگه هم داریم نات کاراکتر رو بنویسه که اون تابع هم به شکل زیر نوشته میشه :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
void N5110_notChar(N5110_TypeDef* lcd, uint8_t x, uint8_t y, uint8_t c,uint8_t color) { uint8_t line; uint8_t ch = 0, i; c = c - 32; for (line = 0; line < 6; line++) { ch = font6_8[c][line]; for (i=0; i<8; i++){ switch(color){ case 0: if (ch&0x01) N5110_DrawPixel(lcd, x+line, y+i); else N5110_ClearPixel(lcd, x+line, y+i); ch >>= 1; break; case 1: if (ch&0x01) N5110_ClearPixel(lcd, x+line, y+i); else N5110_DrawPixel(lcd, x+line, y+i); ch >>= 1; break; } } } } |
خب حالا یک تابع رو نیاز داریم تا رشته بنویسه رو ال سی دی بنویسه تابع رو اینجوری تعریف میکنم :
1 |
void N5110_write_txt (N5110_TypeDef*lcd,uint8_t x ,uint8_t y,uint8_t *s,uint8_t color) |
توی تابع برای رنگ مشکی و ایجاد کادر یک مستطیل با ابعاد بزرگتر از فونت رسم میکنیم تا بتوانیم رنگ قسمتی از ال سی دی را عوض کنیم :
1 |
N5110_Draw_FillRect(lcd,x-1,y-1,84,9,color); |
اولین کاراکتر را از رشته ورودی دریافت کرده و بر با تابع قبلی بر روی ال سی دی نشان میدهیم :
1 2 |
ch = *s; N5110_notChar(lcd, x, y, ch,color); |
کل تابع به صورت زیر میباشد :
1 2 3 4 5 6 7 8 9 10 |
void N5110_write_txt (N5110_TypeDef*lcd,uint8_t x ,uint8_t y,uint8_t *s,uint8_t color){ uint8_t ch; N5110_Draw_FillRect(lcd,x-1,y-1,84,9,color); while (*s != '\0') { ch = *s; N5110_notChar(lcd, x, y, ch,color); x+=6; s++; } } |
خب توضیحات اضافه ای راجب کتابخانه نمیدم ولیکن توابع بیشتری برای راحتی کار توی کتابخونه وجود داره که هرکسی میتونه ازشون استفاده کنه؛ از انجایی که این کتابخانه به عنوان اولین تجربه من توی کتابخونه نوشتن بوده ( جاهایی که میشد با کد های ساده تر نوشت و من ننوشتم با سلیقه خودتون اصلاح کنید )
هربنه مطلب : و از انجایی که این کتابخونه زحمات زیادی کشده شده هزینه دانلود کامل آن 10 تا صلوات برای ظهور امام زمان(عجله الله تعالی) هستش.
انتشار آن هم بدون ذکر منبع مجاز نیست
(
علت تاکید بر ذکر مرجع در هنگام نقل قول پست ها رواج فرهنگ احترام به مالکیت معنوی است که از مشخصه های کشورهای پیشرفته است. بالاخره ما زمانی باید تصمیم بگیریم از این رفتارهای جهان سومی فاصله بگیریم که یکی از لوازم آن احترام به مالکیت معنوی دیگران است
(کپی شده از کانال استاد کی نژاد)
)
تو دعاهاتون منم دعا کنید؛ اگر هم از کتابخونه استفاده کردید فیدبک کارتون رو توی نظرات بزارید تا ببینم این کار برای چند نفر مفید بوده؛ موفق باشید
Betmaster India
مهمان
از کتابخانه استفاده کردیم کار نکرد کار خودت هم نبود اینگار یه دو سه خطش رو دست زده بودی که رد پات مونده بود ایشالا تلاش میکنی بازم ازاین کپی پیست های بدون تست میزاری واقعا لایق دعا نبود شرمنده ولی نفرین و لعنت هم نفرستادم خدا بالای سر شاهده بالاخره همینشم کلی به کارم اومد ولی 4 روز وقتمو گرفت تا دو باره کل کتابخانه رو بازنویسی کنم. برای بستری که گذاشتید تشکر ولی کلی کار داشت که حالا باید از خودم تشکر کنم.
مهمان
ایول چه تشکر هم تقدیم کردند برادر خواهرند اینا یا ایدیای دیگر حضرتعالی در تشکر از خویش است
مهمان
این فایل که سر تا پا مشکله خوشم میاد یه فایل در بخور تو اینترنت نمیشه یافت ایول ایشلا شما هم یه ضرب یا یه درصد خطا برنامه اش رو اجرا میکنی …. شتر در خواب بیند پنبه دانه گهی لف لف خورد گه دانه دانه
مهمان
سلام و خسته نباشید
واقعا مطالب سایتتون رو هیچ جای دیگه نمیشه پیدا کرد، بهتون خسته نباشید میگم. یه درخواست داشتم، لطفا آموزش هایی که میزارین با استفاده از کامپایلر keil باشه چون احتمالا کسایی که با keil کار میکنن خیلی بیشترن.
و این که من میخوام lcd 1202 nokia 98*64 رو با میکرو stm32f103rct راه اندازی کنم. چیزی که من ازش فهمیدم اینه که با پروتوکل spi باید باهاش کار کنی. لطفا اگه کمکی میتونین کنین یا تو ایمیل بهم خبر بدین یا توی سایت بزارین .
ممنون
مهمان
سلام
خیلی ممنون از زحماتتون
امکانش هست یک پروژه که با این کتابخانه کار کردید رو برا نمونه برام بزارید
ممنونم
نویسنده این مطلب
سلام بله اضافه میکنم
ولیکن چون سخت افزار ندارم نمیتونم کد تست شده بزارم با احتمال ۱ درصد خطا میزارم
مدیر سایت
https://dmf313.ir/توضیحات-و-مثال-از-کتابخانه-نمایشگر-nokia-5110/
مهمان
با عرض سلام و ادب
بنده روزی با کمک گرفتن از مطالب سایت شما برای میکرو stm8 سورس راه اندازی lcd nokia 5110 نوشتم و با ذکر منبع، سورس و نرم افزار تبدیل عکس به کد که از سایتتون گرفته بودم رو برای چند نفر ارسال کردم
ممکنه اونها اون مطالب رو رو سایت یا کانالشون (با یا بدون ذکر منبع) قرار بدن، آیا حق الناسی بر گردن من هست؟
مهمان
راستی یادم رفت بگم که در ذکر مرجع اشتباها فقط گفتم نرم افزار تبدیل مال سایت شما بوده و به اینکه در کد زدن هم از مطالبتون استفاده کردم، اشاره ای نکردم؛ لطفا این موضوع هم در پاسختون لحاظ کنید.
نویسنده این مطلب
مهندس بر هر حال بهتر بود ذکر منبع باشد
اما از اینکه شما خودتون این موضوع رو گفتید من مشکلی با ذکر نکردن منبع فقط برای شما ندارم
و واقعا از حرکتی که کردید خوشم اومد
ولیکن اگر امکانش هست سورس راه اندازی رو برای من ایمیل کنید یا به تلگرام من بدید (@stm32f)
به اسم خودتون برای استفاده سایر دوستان روی سایت منتشر کنم
مهمان
سلام
خسته نباشید
آموزش arm رو میگذارید؟؟؟
یا یه مرجع کامل از آن
نویسنده این مطلب
سلام خدمت شما
https://dmf313.ir/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-stm32f103-%D8%AC%D9%84%D8%B3%D9%87-1-%D9%86%D8%B5%D8%A8-embitz-%D9%88-%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF-%D9%BE%D8%B1%D9%88%DA%98%D9%87/
مهمان
سلام
ممنون بابت سایت خوبتون
Arm آموزش نمیدید؟؟؟
یا یه مرجع کامل از اون رو میشه معرفی کنید
مهمان
سلام
دستتون درد نکنه
میشه لینک دانلود رو اصلاح کنید؟
مدیر سایت
سلام آقا رامین – از این ورا – لینک اصلاح شد.