قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

TIME0
:: مهندس جيد ::
تاريخ التسجيل: Mar 2012
المشاركات: 277
نشاط [ TIME0 ]
قوة السمعة:0
قديم 21-08-2018, 10:07 PM المشاركة 1   
افتراضي سؤال في UART مايكرو سي استقبال البيانات Twitter FaceBook Google+



if (UART1_Data_Ready()) {

uart_rd= UART1_Read() ;

if(uart_rd=='E') {portb.f4=1; }
من خلال هذا الكود كنا نستقبل كاراكتر بحاله استلام حرف E يتم تنفيذ امر معين

ولكن كيف يتم استقبال ارقام ديسمل او بايناري عن طريق UART

لانني عندي شاشه صينيه ترسل البيانات سيريال الاتيه ( ديسيمل )
161 000 021 127 074 129 127 129 000

كيف ممكن الممكن اجعل الميكرو يتعامل مع هذه الارقام
ليتم تلتحكم في LED على سبيل المثال

هذه الارقام حصل عليها من شاشه صينيه وقمت توصيل USB TO SERIAL الى جهاز الكومبيوتر
ومن خلال برنامج الميكرو سي usart terminal قمت بمشاهده هذا الارقام عن الضغط عن زر التشغيل
يرسل هذا الارقام UART

هل من طريقه مع مثال ولكن جزيل الشكر

اتمنى يكون سؤالي واضح

اعلانات

الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,688
نشاط [ عبدالله حجازى ]
قوة السمعة:110
قديم 22-08-2018, 12:00 AM المشاركة 2   
افتراضي السلام عليكم ورحمه الله


السلام عليكم ورحمه الله


حاولت مساعدتك .. ولكن للأسف نظام الويندوز لدي به مشاكل هنزل نسخه ويندوز جديده وان شاء الله خير


كل عام وانتم بخير

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

walid nadim
:: مهندس متواجد ::
تاريخ التسجيل: Jan 2015
المشاركات: 92
نشاط [ walid nadim ]
قوة السمعة:0
قديم 23-08-2018, 03:36 AM المشاركة 3   
افتراضي


if(uart_rd==129) portb.f4 = 1;


ماجد عباس محمد
:: نائب المشرف العام
::
تاريخ التسجيل: Jun 2009
الدولة: القاهرة - مصر
المشاركات: 12,214
نشاط [ ماجد عباس محمد ]
قوة السمعة:408
قديم 23-08-2018, 07:21 AM المشاركة 4   
افتراضي


من خلال هذا الكود كنا نستقبل كاراكتر بحاله استلام حرف E يتم تنفيذ امر معين
ولكن كيف يتم استقبال ارقام ديسمل او بايناري عن طريق UART
لانني عندي شاشه صينيه ترسل البيانات سيريال الاتيه ( ديسيمل )
161 000 021 127 074 129 127 129 000
كيف ممكن الممكن اجعل الميكرو يتعامل مع هذه الارقام
ليتم تلتحكم في LED على سبيل المثال
هذه الارقام حصل عليها من شاشه صينيه وقمت توصيل USB TO SERIAL الى جهاز الكومبيوتر
ومن خلال برنامج الميكرو سي usart terminal قمت بمشاهده هذا الارقام عن الضغط عن زر التشغيل
يرسل هذا الارقام UART
هل من طريقه مع مثال ولكن جزيل الشكر
اتمنى يكون سؤالي واضح
لاحظ انك تربك نفسك بحرفية الكلام
لاحظ أن هذه الأرقام كلها من بايت واحدة و طريقة العرض على الشاشة فقط اختلفت وهى
كود:
161 000 021 127 074 129 127 129 000
A1   00     15   7F    4A   81    7F    81    00
لو تريد استقبال 9 بايت فالمسألة بسيطة أن تعمل Array من 9 خانات و متغير من 1 إلى 9 كمؤشر على هذه المصفوفة و كلما استقبلت بايت ضعها بحسب المؤشر ثم زده واحد
عندما يكتمل العدد اخرج و حلل ما وصلك و افعل به ما تريد


TIME0
:: مهندس جيد ::
تاريخ التسجيل: Mar 2012
المشاركات: 277
نشاط [ TIME0 ]
قوة السمعة:0
قديم 23-08-2018, 09:39 PM المشاركة 5   
ha


شكرا لك مهندس ماجد

لاحظت انك حولت الارقام لهكس ديسيميل هل لازم احولها عشان يفهمنا الميكرو

لو وضعت داخل المصفوفه هيكس او ديسمل او بايناري هل سيفهما الميكرو


واتمنى مثال لاني بجد مش عارف ومحتاجها ضروري المصفوفه اعرفها ولكن كيف استقبل البيانات من السيريال عن الطريق المصفوفه

علما زر التشغيل يرسل بيانات وزر الاطفاء يرسل بيانات مختلفه

START
161 000 021 127 074 129 127 129 000

STOP
124 005 129 127 131 003 120 124 005 129

وكل عام وانتم بخييييير


ماجد عباس محمد
:: نائب المشرف العام
::
تاريخ التسجيل: Jun 2009
الدولة: القاهرة - مصر
المشاركات: 12,214
نشاط [ ماجد عباس محمد ]
قوة السمعة:408
قديم 24-08-2018, 05:34 AM المشاركة 6   
افتراضي


يبدو انك لم تدرس شيئا عن نظم الأرقام و أساسيات البرمجة - ربما هذا الرابط يعرفك
http://www.qariya.info/vb/showthread.php?t=85647
ستلاحظ أنه لا فرق بين هذا و ذاك فى النهاية كلها آحاد و أصفار المهم كم خانة
المصفوفة أو Array تجدها فى ملف المساعدة لأنها تختلف من مترجم لآخر و بعضها يبدأ من الصفر فتضطر لتستخدم من صفر إلى 8 و البعض يتيح لك أن تبدأ من 1 فتستخدم من 1 :9


TIME0
:: مهندس جيد ::
تاريخ التسجيل: Mar 2012
المشاركات: 277
نشاط [ TIME0 ]
قوة السمعة:0
قديم 24-08-2018, 11:27 AM المشاركة 7   
افتراضي


اخي الكريم من المعلوم انها بالنهايه كلها اصفار ووحايد

ولكن فتحت الموضوع لانني اريد مثال للكود

وكلنا نتعلم وهذا هدف المنتدى

ولكم مني كل الحب والتقدييييييييييييييييير


ماجد عباس محمد
:: نائب المشرف العام
::
تاريخ التسجيل: Jun 2009
الدولة: القاهرة - مصر
المشاركات: 12,214
نشاط [ ماجد عباس محمد ]
قوة السمعة:408
قديم 25-08-2018, 06:48 AM المشاركة 8   
افتراضي


شكرا لك مهندس ماجد

لاحظت انك حولت الارقام لهكس ديسيميل هل لازم احولها عشان يفهمنا الميكرو
لو وضعت داخل المصفوفه هيكس او ديسمل او بايناري هل سيفهما الميكرو
أخى لهذا ذكرت لك ما ذكرته
انت تكتب و ذات الرقم تعبر عنه بأكثر من طريقة و التى تجدها فى النهاية أسهل لك لتفهمها أنت لا الميكرو فالميكرو لا يفهم - فقط ينفذ ما صنع ليعمل مقابل كل تعليمة
و فى النهاية مهما عبرت عن الرقم الذى تريد كتابته سيوضع فى الذاكرة سواء مصفوفة أو متغير أو خلافة بصورة واحدة وحيدة لا تغيير لها وهى احاد و اصفار ولن يفهمها الميكرو بل سيتعامل معها كما صمم ليعمل
واتمنى مثال لاني بجد مش عارف ومحتاجها ضروري المصفوفه اعرفها ولكن كيف استقبل البيانات من السيريال عن الطريق المصفوفه

علما زر التشغيل يرسل بيانات وزر الاطفاء يرسل بيانات مختلفه

START
161 000 021 127 074 129 127 129 000

STOP
124 005 129 127 131 003 120 124 005 129

وكل عام وانتم بخييييير
هناك طريقتين للتعامل مع البيانات القادمة عبر التسلسلى
الأولى عندما يكون العدد محدد و معروف فكما سبق أن ذكرت لك توضع فى مصفوفة و عندما يكتمل العد تبدأ فى التحليل
الثانية عندما يكون الطول غير محدد وهنا يجب أن تستخدم بايت أو أكثر لتحديد نهاية الارسال
ولكن فى طريقتك هذه لا يوجد أى من الاسلوبين مستخدم فواحدة 9 بايت و الثانية 10 بايت كما أن نهاية كل منهما مختلفة لذا فالطريقة الأخيرة الغير مستحبة أن تحلل أول بايت فإن كانت 161 تذهب لتستكمل باقى الفحص و إن كانت 124 تذهب لكود آخر لتستكمل باقى الفحص و هكذا مع باقى ازرار الشاشة


التعديل الأخير تم بواسطة : ماجد عباس محمد بتاريخ 25-08-2018 الساعة 12:50 PM
إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 10:08 AM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025