You are on page 1of 230

1Page Technical Support 2015

2Page Technical Support 2015


‫اُؾٔذ هلل اُز‪ ٟ‬ث٘ؼٔز‪ ٚ‬رزْ اُقبُؾبد‬
‫ثلنَ هللا رؼبُ‪ٝ ٠‬ر‪ٞ‬ك‪٤‬و‪ ٚ‬أٗ‪٘٤ٜ‬ب ٗؾٖ ُغ٘‪ ٚ‬اُذػْ اُل٘‪ُ ٠‬لش‪٣‬ن ٓؼشك األص‪ٛ‬ش‬
‫ُِزطج‪٤‬وبد اُ‪ٜ٘‬ذع‪ ٚ٤‬رؾن‪٤‬ش ‪ٓٝ‬شاعؼ‪ٛ ٚ‬ز‪ ٙ‬أُــبد‪ ٙ‬اُؼِــٔ‪ٝ ٚ٤‬اُز‪ ٠‬عؼِ٘ب ‪ٛ‬ذك٘ب‬
‫األ‪ ٍٝ‬ك‪ٜ٤‬ب اكبد‪ ٙ‬اُطالة أُ‪ٜ‬زٔ‪ ٖ٤‬ث‪ٜ‬زا أُغبٍ ‪ٝ‬رو‪ ٚ٣ٞ‬اُغبٗت اُؼِٔ‪ُ ٠‬ذ‪٤ُ ْٜ٣‬قجؼ‬
‫ُذ‪ ْٜ٣‬اُوذس‪ ٙ‬ػِ‪ ٠‬أُ٘بكغ‪ ٚ‬ك‪ ٠‬ع‪ٞ‬م اُؼَٔ ‪ٝ‬أُؾبسً‪ ٚ‬ثبُٔؾبس‪٣‬غ ك‪ٓ ٠‬ؼشك‬
‫األص‪ٛ‬ش ُِزطج‪٤‬وبد اُ‪ٜ٘‬ذع‪ٝ ٚ٤‬أُؼبسك أُخزِل‪ٝ ٚ‬اٗ٘ب ٗشع‪ ٞ‬هللا رؼبُ‪ ٠‬إٔ رٌ‪ٕٞ‬‬
‫ػ‪ٗٞ‬ب ٌَُ ٖٓ أساد هِت ػِْ ػبٓ‪ٝ ٚ‬إٔ ‪٣‬غؼَ ًَ ؽشف ك‪ٜ٤‬ب ك‪٤ٓ ٠‬ضإ ؽغ٘بد‬
‫ًَ ٖٓ ثزٍ ع‪ٜ‬ذ ألخشاط ‪ٛ‬زا اُؼَٔ‪.‬‬
‫‪ٛ‬ز‪ ٙ‬أُبد‪ ٙ‬اُؼِٔ‪ ٚ٤‬ثٔغ‪ٜٞ‬د هالث‪ ٠‬ثؾذ ؽ‪٤‬ش هبّ ًَ كشد ك‪ُ ٠‬غ٘‪ ٚ‬اُذػْ اُل٘‪٠‬‬
‫ثزوذ‪ٓ ًَ ْ٣‬ب ُذ‪ ٖٓ ٚ٣‬خجشح ك‪ٜ٤‬ب ثبإلمبكخ اُ‪ٓ ٠‬قبدس أخش‪ٓ ٟ‬ضَ ثؼل أُ‪ٞ‬اهغ‬
‫‪ٝ‬أُشاعغ أُؾ‪ٜٞ‬س‪ ٙ‬ك‪ٛ ٠‬زا أُغبٍ‪.‬‬
‫‪ٗٝ‬ؾٖ ٗز‪ٞ‬ع‪ ٚ‬ثخبُـ اُؾٌش ‪ٝ‬اُزوذ‪٣‬ش ٌَُ كشد ك‪ ٠‬كش‪٣‬ن ٓؼشك األص‪ٛ‬ش‬
‫ُِزطج‪٤‬وبد اُ‪ٜ٘‬ذع‪ ٖٓ ًَٝ ٚ٤‬أػبٗ٘ب ػِ‪ ٠‬اخشاط ‪ٛ‬زا اُؼَٔ عبئِ‪ ٖ٤‬أُ‪ ٠ُٞ‬ػض ‪ٝ‬عَ‬
‫إٔ ‪ٞ٣‬كو٘ب ‪ٞ٣ٝ‬كن عٔ‪٤‬غ هالة اُؼِْ ‪ٝ‬إٔ ‪٣‬غؼِ٘ب عججب ك‪ٗ ٢‬لؼ‪.ْٜ‬‬
‫‪ٛ‬ز‪ ٙ‬أُبد‪ ٙ‬اُؼِٔ‪ٓ ٚ٤‬غبٗ‪ٗ ٌٖٔ٣ ٚ٤‬غخ‪ٜ‬ب ‪ٝ‬رذا‪ُٜٝ‬ب ثذ‪ ٕٝ‬اُشع‪ٞ‬ع اُ‪٘٤‬ب ‪ًٝ‬زاُي ًَ‬
‫ٓب‪ ٞٛ‬رؾذ أعْ ‪ٗٝ AZEX‬شع‪ ٖٓ ٞ‬هللا إٔ ‪٣‬غؼَ ‪ٛ‬زا خبُقب ُ‪ٞ‬ع‪ ٜٚ‬اٌُش‪.ْ٣‬‬

‫‪Technical Support Committee‬‬


‫‪AZEX_2015‬‬
‫‪technicalcommitteeazex2015@gmail.com‬‬

‫‪3Page‬‬ ‫‪Technical Support 2015‬‬


Table of Contents
Introduction ................................................................................................... 5
PIC18 series ................................................................................................... 6
Timers & Interrupt ........................................................................................ 9
Timers ........................................................................................................... 15
Timer 0 ...............................................................................................................................................15
Timer1 ................................................................................................................................................30
Interrupt .............................................................................................................................................40

Applications ................................................................................................. 50
Real time clock..................................................................................................................................50
Ultrasonic ..........................................................................................................................................52

USB interfacing ........................................................................................... 59


Communication protocols .......................................................................... 80
Serial Peripheral Interface ...............................................................................................................80
I²C protocol .....................................................................................................................................103

SD card ....................................................................................................... 111


Touch screen ............................................................................................. 141
LED matrix ................................................................................................. 157
GPS ............................................................................................................. 183
GSM ............................................................................................................ 195
Zigbee ......................................................................................................... 208
Bluetooth.................................................................................................... 225

4Page Technical Support 2015


‫بسٌ هللا اىزصَِ اىزص‪ٌٞ‬‬
‫ػش‪ٝ‬ش‪ ٙ‬اىقارئ ‪....‬‬
‫ع٘و‪ ّٞ‬ك‪ٛ ٠‬زا اٌُزبة ثؾشػ اٌُض‪٤‬ش ٖٓ اُزطج‪٤‬وبد أُزوذٓخ ُِٔ‪ٌ٤‬ش‪ً٘ٝ‬زش‪ُٝ‬ش ‪ٝ‬ثبألخـ‬
‫اُ٘‪ٞ‬ع ‪ . PIC16F877A & PIC18F4550‬كبُٔبدح اُؼِٔ‪٤‬خ أُوذٓخ ك‪ٛ ٠‬زا اٌُزبة‬
‫رلزشك إٔ ُي ٓؼشكخ ٓغجوخ ثبُـ ‪ٝ mikroC PIC microcontroller‬هٔذ ثبعزخذاّ ع‬
‫األهَ أؽذ أٗ‪ٞ‬اع ‪ PIC16F‬ك‪ ٠‬ػَٔ سثو ث‪ٜ٘٤‬ب ‪ٝ‬ث‪ٖ٤‬‬
‫( ‪.( Character LCD/GLCD/UART/Input& output devices‬‬
‫ارا ُْ رٌٖ ػِ‪ ٠‬ػِْ ث‪ٜ‬زح األٓ‪ٞ‬سأ‪ ٝ‬ك‪ ٠‬ؽبُخ ػذّ رزًش ؽئ ٓ٘‪ٜ‬ب كؼِ‪٤‬ي دساعخ اُغضء األ‪ٍٝ‬‬
‫ٖٓ ً‪ٞ‬سط اُـ ‪ٝ Microcontoller‬أُوذّ أ‪٣‬نب رؾذ سػب‪٣‬خ ٓؼشك األص‪ٛ‬ش ُِزطج‪٤‬وبد‬
‫اُ‪ٜ٘‬ذع‪٤‬خ صْ اُؾش‪ٝ‬ع ك‪ٛ ٠‬زا اٌُزبة‪.‬‬
‫ع‪ٞ‬ف ٗزؾذس ػٖ اُؼذ‪٣‬ذ ٖٓ اُزطج‪٤‬وبد أُزوذٓ‪ٓ ٚ‬ضَ اٍ ‪ٝ GSM‬اٍ ‪ٝ GPS‬اٍ‬
‫‪ٝ Bluetooth‬اٍ ‪ًٔ , Zigbee‬ب أٗ٘ب ع٘و‪ ّٞ‬ثؼَٔ اٌُض‪٤‬ش ٖٓ اُجشآظ اُشائؼ‪ٓ ٚ‬ضَ ػَٔ‬
‫عبػخ ر‪ٞ‬ه‪٤‬ذ ؽو‪٤‬و‪ٝ (Real time clock) ٚ٤‬ع٘زؼِْ اعزخذاّ اُؼذ‪٣‬ذ ٖٓ االؽ‪٤‬بء ٓضَ‬
‫‪. Ultrasonic sensor , touch LCD , LED matrix and SD card‬‬

‫‪ٝ‬هجَ اُجذء ك‪ ٢‬اُؾذ‪٣‬ش ػٖ ‪ٛ‬ز‪ ٙ‬االؽ‪٤‬بء ًبٕ الثذ ٖٓ اُؾذ‪٣‬ش ا‪ٝ‬ال ػٖ ٗ‪ٞ‬ع‬
‫أُ‪ٌ٤‬ش‪ً٘ٝ‬زش‪ُٝ‬ش أُغزخذّ ك‪ٓ ٢‬ؼظْ اُزطج‪٤‬وبد ‪٘ٛ ٖٓٝ‬ب ًبٗذ اُجذا‪٣‬خ ‪...‬‬

‫‪5Page‬‬ ‫‪Technical Support 2015‬‬


٠‫ب ك‬ٜٓ‫ اعزخذ‬٠ِ‫بد اُطِجخ ػ‬٤‫رْ اػز‬ٝ ‫وبد‬٤‫ذ ٖٓ اُزطج‬٣‫ اُؼذ‬٠‫ ك‬PIC16F ّ‫ٌضش اعزخذا‬٣
٠ُِ‫ ا‬limitations ‫ب ثؼل اُـ‬ٜ٤ِ‫ ػ‬series ‫زح اُـ‬ٛ ٌُٖ , ْٜ‫غ خبفخ ث‬٣‫ػَٔ ٓؾبس‬
٠ِ‫ كؼ‬.‫وبد‬٤‫ ثؼل اُزطج‬٠‫ ك‬PIC18 series ّ‫ اعزخذا‬٠ُ‫سط ا‬ٌُٞ‫زا ا‬ٛ ٠‫ أُغؤ ك‬٠٘٤ِ‫زخ‬ٛ
ْ‫نب ال رذػ‬٣‫ا‬ٝ ‫دح‬ٝ‫ ٓؾذ‬program and data memory ‫َ أُضبٍ ٗغذ إٔ عؼخ اُـ‬٤‫عج‬
..... ‫ٌزا‬ٛٝ USB, CAN bus ‫ ٓضَ اُـ‬advanced interfaces ‫اُـ‬

: PIC16F877A VS PIC18F4550
‫ش اُـ‬٤‫ ؽذ ًج‬٠ُ‫ؾجخ ا‬٣ ٞٛٝ PIC18F4550 ٞٛ ‫سط‬ٌُٞ‫زا ا‬ٛ ٠‫ع أُغزخذّ ك‬ُٞ٘‫ا‬
. ‫طخ‬٤‫عذ ثؼذ االخزالكبد اُجغ‬ٞ‫ ٌُٖ ر‬PIC16F877A ‫ اُخبفخ ثـ‬Configuration
: ‫ االخزالكبد‬ٙ‫ز‬ٛ ْٛ‫مؼ أ‬ٞ٣ ٍٝ‫زا اُغذ‬ٛ
Features PIC16F877A PIC18F4550
Operating Frequency DC – 20 MHz DC – 48 MHz
Data Memory (Bytes) 368 2048
Data EEPROM 256 256
Memory (Bytes)
Interrupt Sources 15 20
I/O Ports Ports A, B, C, D, E Ports A, B, C, D, E
Timers 3 4
Capture/Compare/PWM 2 1
Modules

6Page Technical Support 2015


Serial Communications MSSP, USART MSSP,
Enhanced USART
Universal Serial Bus 0 1
(USB)
Module
10-bit Analog-to- 8 input channels 13 Input Channels
Digital Module
Analog Comparators 2 2

: Features of PIC18F-series microcontrollers


٠ِ‫٘جـ ػ‬ٛ ١‫ػؾبٕ ٗؼشف اُخقبئـ د‬ٝ , ‫ش‬٤‫ب خقبئـ ًز‬ٜ٤‫ ك‬PIC 18F ٍ‫ ّ ػشك٘ب إ ا‬١‫ص‬
. ‫ع‬ُٞ٘‫زا ا‬ٜ‫ ث‬ٚ‫ذ اُخبف‬٤‫اُذارب ؽ‬
‫ت‬٤‫رشر‬ٝ ‫ُش ثزبػ٘ب‬ٝ‫ً٘زش‬ٝ‫ٌش‬٤ُٔ‫ب ؽٌَ ا‬٤ٛٝ ‫ب‬ٜ٤ِ‫٘جـ ػ‬ٛ ٚ‫ٍ ؽبع‬ٝ‫ ا‬٢‫٘اله‬ٛ ‫ذ‬٤‫ػ٘ذ كزؼ اُذارب ؽ‬
. ُٚٞ‫سع‬

7Page Technical Support 2015


‫‪ٝ‬ثؼذ‪٘ٛ ٖ٣‬جـ ػِ‪ ٠‬اُخقبئـ ثزبػز‪ , ٚ‬د‪ ٞٛ ٙ‬اُغضء اُخبؿ ثؾشػ اُخقبئـ اُخبفخ ث‪ٜ‬زا‬
‫اُ٘‪ٞ‬ع ك‪ ٠‬اُذارب ؽ‪٤‬ذ‪:‬‬

‫د‪ً ١‬بٗذ ٗظشح عش‪٣‬ؼ‪ ٚ‬ػِ‪ ٠‬أ‪ ْٛ‬اٍ ‪ Features‬اُِ‪ٞٓ ٢‬ع‪ٞ‬د‪ ٙ‬ك‪ ٚ٤ُٝ PIC18F ٢‬اؽزـِ٘ب‬
‫ث‪ٜ٤‬ب ٓؼ ة ‪ٝ PIC16F‬ا‪ ْٛ‬اُلش‪ٝ‬م ث‪. ْٜ٘٤‬‬

‫‪8Page‬‬ ‫‪Technical Support 2015‬‬


9Page Technical Support 2015
‫فى بداٌة الكورس هنراجع برنامج سرٌع من برامج ‪. microcontroller 1‬‬
‫فنزة اىبزّاٍذ‪:‬‬
‫كالؽش ُـ ‪ٞٓ 8 leds‬فِ‪ ٖ٤‬ػِ‪ portb ٠‬اُـ ‪ led‬ك‪ ٠‬اُجذا‪٣‬خ ثزؼَٔ ‪ rotation‬ع‪ٜ‬خ اُ‪٤‬غبس‬
‫‪ٝ‬ثؼذ ٗقق صبٗ‪٤‬خ ‪ rotation‬ع‪ٜ‬خ اُ‪.ٖ٤ٔ٤‬‬
‫م٘د اىبزّاٍذ‪:‬‬

‫اىذا‪ٝ‬زة‪:‬‬

‫اُِ‪٤‬ذ ‪٤ٛ‬ؾقِخ ‪ ًَ shift left‬ػذح ك‪٠‬‬


‫‪11Page‬‬ ‫‪Technical Support 2015‬‬
‫اٍ ‪٤ٛ for loop‬جذء ٖٓ‬
‫‪0b00000001‬‬
‫‪0b00000010‬‬
‫‪:‬‬
‫‪:‬‬
‫‪0b10000000‬‬
‫‪ٝ‬ثؼذ ٗقق صبٗ‪٤‬خ ‪٤ٛ‬ؾقِخ ‪ٓ shift right‬غ ًَ ػذح ك‪ ٠‬اٍ ‪٤ٛ for loop‬جذء ٖٓ أخشػذح‬
‫ك‪ ٠‬اٍ ‪ for‬اُِ‪ ٠‬هجِ‪ٜ‬ب‬
‫‪0b10000000‬‬
‫‪0b01000000‬‬
‫‪:‬‬
‫‪:‬‬
‫‪0b00000001‬‬
‫‪ٌٛٝ‬زا ‪...............‬‬
‫ارا أسدد ثشٗبٓظ كالؽش ٌُٖ ث‪٤‬ؼَٔ ‪ rotation‬ك‪ ٠‬ارغب‪ٝ ٙ‬اؽذ ٌٖٓٔ أكٌش أخذ اُغضء‬
‫األ‪ ٖٓ ٍٝ‬اُجشٗبٓظ اُغبثن ُ‪٤‬قجؼ اُجشٗبٓظ ث‪ٜ‬زا اُؾٌَ‪:‬‬

‫‪ٛ‬الؽع اٗ‪ ٚ‬ثؼذ أ‪ُ ٍٝ‬لخ اُـ ‪ leds‬هلذ ‪ ٝ‬اُغجت اٗ‪ ٚ‬أ‪ٓ ٍٝ‬ب ‪ٞ٣‬فَ إ‬
‫‪ ُٞportb=0b10000000‬ؽقِخ ‪ shift left‬اُـ ‪ ًِٚ ٌٕٞ٤ٛ register‬أفلبس‬
‫اُؾَ اٗ‪ ٠‬أخِ‪ ٠‬اُو‪ٔ٤‬خ األثزذائ‪٤‬خ ُـ ‪ portb‬األ ‪ portb=0b00000001; ٠ٛٝ‬ثذاخَ‬
‫)‪٣ٝ ,,while (1‬قجؼ اٌُ‪ٞ‬د ث‪ٜ‬زا اُؾٌَ‪:‬‬

‫‪11Page‬‬ ‫‪Technical Support 2015‬‬


ٖ‫ً٘ذ ارا أسدد ػَٔ ثشٗبٓظ كالؽش ػ‬
.shift right َٔ‫ؼ‬٣ ‫ أخش‬button ٝ shift left َٔ‫ؼ‬٣ button ٠ِ‫ن اُنـو ػ‬٣‫هش‬
:‫م٘د اىبزّاٍذ‬

:‫د اُغبثن‬ٌُٞ‫ ا‬٠‫ٖ ك‬٤‫ ٓؾٌِز‬٠‫ك‬


12Page Technical Support 2015
‫‪_1‬أ‪ ٍٝ‬ؽبعخ إ اُجشٗبٓظ ُ‪ ٞ‬مـطذ ػِ‪ ٠‬اُغ‪ٞ‬رؼ األ‪ٓ ٍٝ‬ؼ ث‪٤‬لنَ ‪٣‬ؼَٔ‪shift left‬‬
‫ُؾذ ٓب أمـطذ ػِ‪ ٠‬اُغ‪ٞ‬رؼ اُزبٗ‪ ٌُٚ٘ٝ ٠‬ث‪ِ٤‬ق ُلخ ‪ٝ‬اؽذح ‪٣ٝ‬غٌذ ‪ ,‬هت أٗب ػب‪ٝ‬صح‬
‫‪٣‬لنَ ‪٣‬ؼَٔ ‪ُ rotation‬ؾذ ٓب أمـطذ ػِ‪ ٠‬اُغ‪ٞ‬رؼ اُزبٗ‪.٠‬‬
‫‪ _2‬ربٗ‪ٓ ٠‬ؾٌِخ ُ‪ ٞ‬مـطذ ػِ‪ ٠‬اُغ‪ٞ‬رؼ اُزبٗ‪ ٠‬ه‪ٓ ٍٞ‬ب اُجشٗبٓظ ك‪for loop ٠‬‬
‫اُجشٗبٓظ ٓؼ ‪٤ٛ‬غزغ‪٤‬ت ؿ‪٤‬ش ُٔب ‪٣‬طِغ ٖٓ اٍ ‪ٓ for‬ؼ٘‪ً ٠‬ذ‪ ٙ‬إ اُجشٗبٓظ ٌٖٓٔ أمـو‬
‫‪ٓٝ‬ؼ ‪٣‬ؾقَ ‪ٝ shift right‬أ‪٣‬نب ٖٓ أُؼش‪ٝ‬ف إ أُ‪ٌ٤‬ش‪ٓ ٝ‬ؼ ث‪٤‬غزغ‪٤‬ت أل‪ ٟ‬أٓش ه‪ٍٞ‬‬
‫كزشح اُـ ‪delay‬ألٕ اٍ ‪ delay‬ػجبسح ػٖ ‪ loop‬ث‪٤‬لنَ اُجشٗبٓظ ‪ِ٣‬ق ك‪ٜ٤‬ب ٖٓ ؿ‪٤‬ش ٓب‬
‫‪٣‬ؼَٔ ؽبعخ ػؾبٕ ‪٣‬ؼذ‪ ٟ‬اُ‪ٞ‬هذ اُِ‪ ٠‬اٗب ٓؾذد‪.ٙ‬‬
‫أ‪ٓ ٍٝ‬ؾٌِ‪ ٚ‬ؽِ‪ٜ‬ب ًبألر‪:٠‬‬
‫أمغ األٓش أُِ‪ ٕٞ‬ثبألفلش ‪ٝ‬اُِ‪ٓ ٠‬ؼ٘ب‪ ٙ‬ه‪ٓ ٍٞ‬ب ‪ٓ portc‬ؼ ػِ‪٣ 1 ٚ٤‬ؼ٘‪ٓ ٠‬ؾذػ مـو‬
‫ع اُغ‪ٞ‬رؾبد أكنَ أًَٔ اُـ ‪. rotation‬‬
‫اُغئاٍ‪ٓ ٚ٤ُ :‬ؼ هِذ )‪ٝ !!while (portc==255‬رُي إلٗ‪ٞٓ ٠‬فَ ع‪ٞ‬رؾبد ػِ‪٠‬‬
‫‪rc0,rc1‬كوو ‪ٝ‬ثبه‪ ٠‬اُج‪ٞ‬سد ‪ٓ float‬ؼ ٓز‪ٞ‬فَ ػِ‪ ٚ٤‬ؽبعخ ػؾبٕ ًذ‪ ٙ‬ؽذدد أ‪2 ٍٝ‬‬
‫‪.pins‬‬

‫‪13Page‬‬ ‫‪Technical Support 2015‬‬


‫أُؾٌِخ األ‪ ٠ُٝ‬ؽِ‪ٜ٘٤‬ب أُؾٌِخ اُزبٗ‪٤‬خ ‪ ,,‬ا‪ ٚ٣‬اُؾَ ؟؟؟؟؟ اُؾَ ‪ٞٓ ٞٛ‬م‪ٞ‬ػ٘ب‪.‬‬

‫‪14Page‬‬ ‫‪Technical Support 2015‬‬


‫‪Timer 0‬‬
‫ٗظ‪ٞ‬فت اه ‪: timer‬‬
‫اٍ ‪ timer‬ث‪٤‬ؾِِ‪ٓ ٠‬ؾٌِخ ؽغبة اُ‪ٞ‬هذ ‪ٝ‬ك‪ٗ ٠‬لظ اُ‪ٞ‬هذ أُ‪ٌ٤‬ش‪ ٝ‬ؽـبٍ ك‪ ٠‬أداء ٓ‪ٜٚٔ‬‬
‫ٓؼ‪٘٤‬خ ‪ ,‬ثٔؼ٘‪ُٞ ٠‬أُ‪ٌ٤‬ش‪ٓ ٝ‬ضال ك‪ for loop ٠‬ث‪ٞ٘٤‬س ُ‪٤‬ذاد ث‪٤ُ ًَ ٖ٤‬ذ ‪ٝ‬األخش‪ٗ ٟ‬ـ صبٗ‪٤‬خ‬
‫‪ٝ‬ك‪ٗ ٠‬لظ اُ‪ٞ‬هذ ػب‪ٝ‬صأُ‪ٌ٤‬ش‪ ٝ‬أ‪ٓ ٍٝ‬ب ؽذ ‪٣‬نـو ع اُغ‪ٞ‬رؼ ‪٣‬ؼَٔ ‪ٝ‬ظ‪٤‬لخ أخش‪ٝ ,, ٟ‬هز‪ٜ‬ب‬
‫ٓؼ ‪٘٣‬لغ اعزخذّ ‪ delay‬الٕ اُـ ‪ٓ delay‬ؼ ‪٤ٛ‬خِ‪ ٠‬أُ‪ٌ٤‬ش‪٣ ٝ‬ؾظ ُ‪ ٞ‬مـو ع اُغ‪ٞ‬رؼ‬
‫‪ٝ‬دا ػ‪٤‬ت ك‪ ٠‬اٌُ‪ٞ‬د ‪ ,,‬كالصّ أٗب أع‪٤‬ت ؽبعخ أخِ‪ٜ٤‬ب رؼذ اُ‪ٞ‬هذ ‪ٝ‬أُ‪ٌ٤‬ش‪ ًَ ٝ‬اُِ‪ ٠‬ػِ‪ٚ٤‬‬
‫‪٣‬ؤد‪ٜٓ ٟ‬بٓ‪٣ٜٞ‬الؽع ‪ َٛ‬أؽذ مـو ع اُغ‪ٞ‬رؼ ‪ٝ‬ال ال ‪ٝ‬ثؼذ ٓش‪ٝ‬س اُ‪ٞ‬هذ اُؾبعخ د‪ٟ‬‬
‫‪ٛ‬ز٘ج‪ ٜٚ‬إ اُ‪ٞ‬هذ ػذ‪ٛٝ ٟ‬زا ٓب ‪٣‬لؼِ‪ ٚ‬اُـ ‪.timer‬‬
‫__________________________‬

‫اُـ ‪ IC7493‬د‪ ٟ‬ػجبسح ػٖ )‪ (4 BIT binary counter‬أ‪ٓ ٍٝ‬ب أد‪clk (pulse) ٚ٣‬‬
‫ث‪٤‬ؾقِ‪ increment ٚ‬ثٔوذاس‪1‬‬
‫‪0000‬‬
‫‪0001‬‬
‫‪:‬‬
‫‪1111‬‬

‫‪15Page‬‬ ‫‪Technical Support 2015‬‬


‫طِغ‬٣ ٙ‫ؾقَ ًذ‬٣ ‫ٍ ٓب‬ٝ‫ أ‬roll over َ‫ؾق‬٤‫ ث‬clk ‫ب‬ٛ‫ عذ ثؼذ‬ُٞ 1111 ‫فَ ُـ‬ٞ٣ ‫ٍ ٓب‬ٝ‫أ‬
.‫بء عؼخ اُؼذاد‬ٜ‫ رؼجش ػٖ ؽبُخ اٗز‬clock ٖ٤ٔ٤ُ‫خ ا‬٤‫ اُشعَ ٗبؽ‬٠ِ‫ػ‬
:‫خ‬٤ُ‫زْ ؽغبة عؼخ اُؼذاد ّ اُؼالهخ اُزب‬٣ٝ
Capacity=2^n
Where n is no. of bits
N=4 cap=2^4=16
pulse‫ُذ‬ٞ‫ز‬٣ٝ ‫زشكغ‬٣ carry ٍ‫ ا‬roll over َ‫ؾق‬٣ ٍ‫ٍ ٓب ا‬ٝ‫ أ‬15 ٠ُ‫ ا‬0 ٖٓ ‫ؼذ‬٤‫ ث‬٠٘‫ؼ‬٣
10 ‫ هجؼب‬10 clock‫ٌُٖ ثؼذ‬ٝ 16 clock ‫ ٓؼ ثؼذ‬carry ٍ‫شكغ ا‬٣ ٚٗ‫ هِجذ ا‬ُٞ ٌُٖ
‫خ‬٤‫ٔخ اثزذائ‬٤‫ ثو‬ِٚٔ‫ب الصّ أؽ‬ٜ‫هز‬ٝ ‫ؾَٔ ثشهْ أهَ ٖٓ اُغؼخ‬٣ ‫صح‬ٝ‫ ػب‬ِٞ‫ ك‬clock < 16 clock
(initial value)
IV=(2^N)-COUNT
.‫ اُغؼخ‬٠ٛ (2^N) ٝ ٙ‫ؼذ‬٣ ‫صح‬ٝ‫ ػب‬٠ُِ‫ اُؼذد ا‬ٞٛ COUNT ‫ش‬٤‫ؽ‬
IV=16-10=6
ٍٝ‫ أ‬1 flagٟ‫ذ‬٤‫ ث‬timer ٍ‫ ا‬٠‫ ٗلظ اُلٌشح ك‬,, 6 ‫خ‬٤‫ٔخ اثزذائ‬٤‫ ثو‬ِٚٔ‫ الصّ أؽ‬٠ٗ‫ ا‬ٙ‫ ًذ‬٠٘‫ٓؼ‬
.ٚ‫ؼذ ُؾذ أخش عؼز‬٤‫ٓب ث‬
ٙ‫ ْٕبتذ‬TMR0, TMR1 and TMR2 ‫َز‬ٝ‫ حالحت تا‬pic16f877a ‫ اىـ‬ٚ‫ ف‬ٙ‫ػْذ‬
.TMR0 ‫شزس بـ‬

Timer TMR0 Features:


8-bit timer/counter
Capacity=2^8=256
Count from
0 to 255

clk ًَ ‫ٓغ‬
increment ِٚ‫ؾق‬٤ٛ
16Page Technical Support 2015
‫‪00000000‬‬
‫‪00000001‬‬
‫‪:‬‬
‫‪11111111‬‬
‫ثؼذ ‪ٛ‬زح اُو‪ٔ٤‬خ ث‪٤‬ؾقَ ‪ٝٝ roll over‬هز‪ٜ‬ب اٍ ‪ timer‬ث‪٤‬شكغ ‪ flag‬ػؾبٕ ‪٘٣‬ج‪ ٠ٜ٘‬إ‬
‫اُزب‪ٔ٣‬ش خِـ ػذ ‪ ,‬اٍ ‪ flag‬اعٔ‪. Tmr0if ٚ‬‬
‫‪ ُٞ Tmr0if‬ه‪ٔ٤‬ز‪ٜ‬ب ة ‪٣ zero‬ؼ٘‪ ٠‬اٍ ‪ُ timer‬غ‪ ٚ‬ث‪٤‬ؼذ ‪ ُٞ,‬ه‪ٔ٤‬ز‪ٜ‬ب ة ‪٣ 1‬ؼ٘‪ ٠‬اٍ‪timer‬‬
‫ؽقِ‪ٌٛٝ . roll over ٚ‬زا ُ‪ ٞ‬ػب‪ٝ‬ص اٍ ‪٣ timer‬ؼَٔ ‪ roll over‬ثؼذ ػذد ٓؼ‪ ٖ٤‬أؽِٔ‪ ٚ‬ة‬
‫‪IV‬‬
‫‪Iv=256-count‬‬
‫ػِ‪ ٠‬عج‪ َ٤‬أُضبٍ ُ‪ ٞ‬ػب‪ٝ‬صاُزب‪ٔ٣‬ش ‪٣‬ؼذ ‪ 156‬ػذح ‪ٝ‬هز‪ٜ‬ب اُو‪ٔ٤‬خ اإلثزذائ‪٤‬خ‬
‫‪Iv=256-156=100‬‬
‫ػؾبٕ أك‪ ْٜ‬أُ‪ٌ٤‬ش‪ ٝ‬اٗ‪٣ ٚ‬ؾَٔ اُو‪ٔ٤‬خ اإلثزذائ‪٤‬خ د‪ ٟ‬اه‪ٛ ٌُٖ tmr0=160; ُٚٞ‬ؾزبط ًَ ٓب‬
‫‪٣‬ؾقَ ‪ roll over‬الصّ أؽِٔخ اٍ ‪ initial value‬إلٕ أُ‪ٌ٤‬ش‪ٓ ٝ‬ؼ رً‪٠‬‬
‫ثبُذسعخ اٌُبك‪٤‬خ اُِ‪ ٠‬رخِ‪٣ ٚ٤‬جذأ ػذ ٖٓ ‪٤ٛ ٌُٖ 100‬ؼذ ٖٓ‪.0‬‬
‫ٍالصظاث‪:‬‬
‫‪flag‬‬ ‫‪_1‬ثؼذ ٓب اٍ ‪ ٌٕٞ٣ flag‬ة ‪ 1‬أُ‪ٌ٤‬ش‪ٓٝ‬ؼ ‪٤ٛ‬قلش‪ُ ٙ‬ؾذ ٓب ‪٣‬زؤًذ اٗ‪ ٠‬ؽلذ اُـ‬
‫ثبٗ‪ ٠‬أٗب اُِ‪ ٠‬أفلش‪.ٙ‬‬
‫‪_2‬اُـ ‪ clk‬اُِ‪ ٠‬ثزض‪ٝ‬د اُؼذاد ُ‪ٜ٤‬ب ٓقذس‪:ٖ٣‬‬

‫‪17Page‬‬ ‫‪Technical Support 2015‬‬


‫* )‪ ٠ٛٝ: (internal clock‬عبػخ داخِ‪٤‬خ رشدد‪ٛ‬ب ‪ fosc/4‬ؽ‪٤‬ش ‪ ٠ٛ fosc‬اٌُش‪٣‬غزبُخ‬
‫أُغزخذٓخ ‪ ٠ٛٝ‬ثزذخِ‪ train of pulses ٠‬ثزشدد ‪ٓ ًَ fosc/4‬ب ‪ pulse‬رؼذ‪ ٟ‬اُؼذاد‬
‫‪٣‬ض‪٣‬ذ ‪ٝ‬اؽذ ك‪ ٠‬اُؾبُخ د‪ ٟ‬ثغٔ‪٤‬خ )‪٘ٛٝ (timer mode‬ؼشف الؽوب عجت رغٔ‪٤‬ز‪ ٚ‬ث‪ٜ‬زا االعْ‪.‬‬
‫* )‪ ٞٛٝ: (TOCKI‬ػجبسح ػٖ ‪ external clock‬أ‪ٓ ٍٝ‬ب ثذخَ ػِ‪ٜ٤‬ب ‪ 1‬ثزؼذ ‪٣‬ؼ٘‪ُٞ ٠‬‬
‫‪ٝ‬فِذ ػِ‪ٜ٤‬ب ‪ٓ ًَ proximity sensor‬ب ‪٣ object‬ؼذ‪ ٟ‬ر‪٤‬غ‪٣ pulse ٠‬ؼ٘‪ ٠‬أُ‪ٌ٤‬ش‪ٝ‬‬
‫‪٤ٛ‬ذخِ‪ٓ ًَ 1ٚ‬ب ‪٣ object‬ؼذ‪ , ٟ‬كِ‪ ٞ‬ه‪ٔ٤‬خ اٍ ‪ً timer‬بٗذ ‪ٓ 30‬ؼ٘‪ ٠‬رُي ػذ‪30 ٟ‬‬
‫‪ٓ .object‬ؼ٘‪ ٠‬رُي اٗ‪٣ ٚ‬و‪ ّٞ‬ثؼذ اُ٘جنبد اُخبسع‪٤‬خ ‪ٝ‬اُز‪ ٖٓ ٠‬أٌُٖٔ إٔ رٌ‪ ٕٞ‬ك‪٠‬‬
‫ف‪ٞ‬سح ‪. PRESS KEY‬‬
‫الصع إ اُـ ‪ TMROCS‬اُِ‪ ٠‬ك‪ ٠‬اُؾٌَ اُغبثن ‪ٝ‬ظ‪٤‬لز‪٣ ٚ‬خزبس اٍ ‪CLOCK source‬‬
‫عب‪ٝ fosc/4 ٖٓ َٛ ٖ٤٘ٓ ٟ‬ال ٖٓ ‪ ُٞ TOCKI‬أخزبس ‪٣ 0‬ؼ٘‪٣ 1 ُٞ fosc/4 ٠‬ؼ٘‪٠‬‬
‫‪.TOCKI‬‬
‫ُ‪ ٞ‬أخزبسد ‪ٝ fosc/4‬أٗب ٓغزخذّ ًش‪٣‬غزبُخ ‪ٝ 4MHZ‬هز‪ٜ‬ب ‪٣ 4MHZ/4‬ؼ٘‪٤ٛ ٠‬غ‪٠‬‬
‫‪ . 1μs ًَ pulse‬ثٔؼ٘‪ ٠‬إ ُ‪ ٞ‬ه‪ٔ٤‬خ اٍ ‪ register‬اُخبؿ ثبُزب‪ٔ٣‬ش ‪٣ 100‬ؼ٘‪ ٠‬ػذ‪ٟ‬‬
‫‪ٓ100μs‬ؼ٘‪ً ٠‬ذ‪ ٙ‬أٗ‪ ٚ‬ؽـبٍ ػِ‪ ٠‬اٗ‪ ٚ‬عبػخ ‪٣‬ؼ٘‪ٝ (timer mode) ٠‬عبػخ ده‪٤‬وخ ًٔبٕ‪.‬‬
‫أٓب ُ‪ ٞ‬أخزبسد ‪ٓ ًَ TOCKI‬ب ‪٣‬ذخَ ‪٤ٛ 1‬ؼذ ‪ٝ pulse‬د‪ ٙ‬ثؼذ ٓب أػَٔ ‪ select‬ثـ ‪ُِ 1‬ـ‬
‫‪ٝ MUX‬ثٔب إ أُ‪ٌ٤‬ش‪ ٝ‬ثزبػ‪٣ 8bit ٠‬ؼ٘‪٤ٛ ٠‬ؼذ ُـب‪٣‬خ ‪.256‬‬

‫ىنِ ٕذا اىؼذد صغ‪ٞ‬زرذا ألُ اىشٍِ اىي‪ ٚ‬ب‪ٞ‬قذر‪ٝ‬ؼذ‪ ,, 256μs ٕ٘ ٔٝ‬فَا اىضو ؟؟؟‬
‫اُؾَ اٗ‪ ٠‬أثطؤ اٍ ‪ٝ ٌُٖ clock‬هز‪ٜ‬ب ‪ٛ‬جطؤ أداء اُـ ‪ cpu‬كٔق٘ؼ‪ ٠‬أُ‪ٌ٤‬ش‪ٝ ٝ‬عذ‪ٝ‬ا ؽَ اخش‬
‫‪ٝ‬مؼ‪ٞ‬ا ثؼذ اٍ ‪ MUX‬ؽبعخ روَِ اُزشدد ك‪٤‬ض‪٣‬ذ اُضٖٓ ‪ ٞٛٝ prescaler ٞٛٝ‬ػجبسح ػٖ‬
‫‪.frequency divider‬‬

‫اُـ ‪٤ٛ frequency divider‬وجَ اُوغٔخ ػِ‪ٝ .1,2,8,16.......256 ٠‬ثٌذ‪ ٞٛ ُٞ ٙ‬ك‪ ٠‬اٍ‬
‫‪٤ٛ timer mode‬ؼذ أًزش ألٗ‪ٝ ٠‬هز‪ٜ‬ب ‪ٛ‬وغْ اُزشدد اُِ‪ MH1 ٞٛ ٠‬ػِ‪٠‬‬
‫‪18Page‬‬ ‫‪Technical Support 2015‬‬
:ٞٛ ٚ‫ؾغج‬٣ ٌٖٔٓ ٖٓ‫ ص‬٠‫ أهق‬٠٘‫ؼ‬٣ ,,‫ٌجش‬٤ٛ ٖٓ‫ كبُض‬256 ٠‫نشة اُضٖٓ ك‬ٛ ٌُٖ 256
256*256=65536μS=0.6sec
. counter mode ٍ‫ظ ا‬٤ُٝ time mode ٍ‫ ا‬٠‫ ك‬prescaler ٍ‫ ا‬٠‫ أٗب ثزؾٌْ ك‬: ‫الصع‬

ٍ‫ أؽذ ا‬ٙ‫د‬ٝ option_reg register ٚٔ‫ اع‬register ٍ‫ ٖٓ خال‬ٚ٤‫ ثوذس أرؾٌْ ك‬ٙ‫ًَ د‬
‫ظ ُٔغشد‬٤ُٝ ٖ٤‫وشأ ُـشك ٓؼ‬٣ٝ ‫ٌزت‬٤‫ ث‬٠٘‫ؼ‬٣ ) special function register(SFR
. ٙ‫ د‬register ٍ‫ ا‬٠ِ‫ا ٗزؼشف ػ‬ُٞ‫ هت رؼب‬,, ٖ٣‫اُزخض‬
: timer ‫ اه‬register ‫ اىخاصت بـ‬bits ‫و اه‬ٞ‫تفاص‬

19Page Technical Support 2015


‫‪ RBPU - PORTB Pull-up enable bit‬‬

‫ًَ هشف ٖٓ أهشاف ‪ ٌٖٔ٣ PORTB‬إ ‪٣‬زقَ داخِ‪٤‬ب ة ‪PULL UP RESISTOR‬‬


‫‪٣‬زْ ر‪ٞ‬ف‪ َ٤‬عٔ‪٤‬غ ٓوب‪ٓٝ‬بد اٍ ‪ port‬ػٖ هش‪٣‬ن ‪ٝ‬مغ ‪ 0‬ػِ‪ bit 7 ٠‬ك‪ٛ ٠‬زا اُـ‬
‫‪٣ . register‬زْ اثطبٍ اُـ ‪ pull up resistor‬ار‪ٓٞ‬بر‪٤ٌ٤‬ب ثٔغشد ر‪٤ٜ‬ئخ اُطشف ًخشط أ‪ٝ‬‬
‫‪ٝ‬مغ ‪ 1‬ك‪ bit 7 ٠‬ك‪ٛ ٠‬زا اُش‪٣‬غغزش‪ٛٝ .‬زح أُوب‪ٓٝ‬بد مؼ‪٤‬لخ عذا ُزُي ك‪ ٠‬اُـبُت ال‬
‫ٗغؼِ‪ٜ‬ب ‪ٝ active‬أمغ ك‪ٜ٤‬ب ‪ ُٞٝ 1‬الؽظ٘ب‬
‫‪٘ٛ‬اله‪ ٠‬اُو‪ٔ٤‬خ اٍ ‪ pin َُ default‬ك‪ ٠‬األعبط ‪ًٔ 1‬ب ‪ٌٓ ٞٛ‬ز‪ٞ‬ة ك‪ ٠‬االه‪ٞ‬اط ‪ 1‬ك‪ٞ‬م‬
‫خبٗبد اُـش‪٣‬غغزش‪.‬‬

‫‪21Page‬‬ ‫‪Technical Support 2015‬‬


‫‪٣‬زْ ر٘ل‪٤‬ز رُي ػٖ هش‪٣‬ن ًزبثخ‬
‫;‪Rbpu=0‬‬

‫‪‬‬ ‫‪INTEDG - Interrupt Edge Select bit‬‬


‫ع٘زٌِْ ػ٘‪ٜ‬ب الؽوب ك‪ ٠‬ؽشػ اٍ ‪ُ interrupt‬زا ٗنؼ‪ٜ‬ب ثبُو‪ٔ٤‬خ اُـ ‪default‬‬
‫أ‪ 1 ٟ‬اُ‪ ٠‬إٔ ‪٣‬ؤر‪ ٠‬رًش‪ٛ‬ب‪.‬‬
‫‪ T0CS - TMR0 Clock Select bit‬‬

‫‪ T0SE - TMR0 Source Edge Select bit‬‬

‫رغزخذّ إلخز‪٤‬بس اُـ ‪ falling َٛ edge‬أّ ‪ٝ rising‬اُز‪ ٠‬ع‪ٞ‬ف ‪٣‬زْ ػذ‪ٛ‬ب ثبُٔئهذ‬
‫‪ ٖٓTMR0‬خالٍ اُطشف ‪ RA4 / T0CKI‬ك‪ ٠‬ؽبُخ اٍ ‪. counter mode‬‬
‫اُو‪ٔ٤‬خ = ‪ 1‬رضا‪٣‬ذ ػ٘ذ اإلٗزوبٍ ٖٓ ٓشرلغ اُ‪٘ٓ ٠‬خلل ‪ falling‬ػِ‪ ٠‬اُطشف ‪RA4 /‬‬
‫‪.T0CKI‬‬
‫اُو‪ٔ٤‬خ = ‪ 0‬رضا‪٣‬ذ ػ٘ذ االٗزوبٍ ٖٓ ٓ٘خلل اُ‪ٓ ٠‬شرلغ ‪ rising‬ػِ‪ ٠‬اُطشف ‪.RA4 /‬‬
‫‪T0CKI‬‬
‫ٓؼ ثزلشم ك‪ٓ ٠‬ؼظْ األؽ‪٤‬بٕ ‪ ٌُٖ rising edge or falling edge‬ثزلشم ُٔب ‪ٌٕٞ٣‬‬
‫ػ٘ذ‪ ٟ‬ػذاد ُغشاط ‪ َٛ‬اٍ ‪٣ counter‬ؼذ أ‪ٓ ٍٝ‬ب اُغضء األٓبٓ‪ ٖٓ ٠‬اُؼشث‪٤‬خ ‪٣‬ذخَ ‪ٝ‬ال ُٔب‬
‫اُغضء اُخِل‪ ٠‬اُِ‪٣ ٠‬ذخَ ‪ ,‬أل هجؼب أػذ ُٔب أربًذ إ اُؼشث‪٤‬خ دخِذ ‪٣‬ؼ٘‪ ٠‬اُغضء اُخِل‪٠‬‬

‫‪21Page‬‬ ‫‪Technical Support 2015‬‬


٠ِ‫ ؽـبٍ ػ‬ُٞ ,, register ‫ ُِـ‬default ‫ دا اُـ‬ٞٛٝ falling ٍ‫ ثبعزخذّ ا‬ٙ‫دخَ ػؾبٕ ًذ‬
.‫ب‬٣‫لشم ٓؼب‬٤ٛ ‫ٓؼ‬timer mode

 PSA - Prescaler Assignment bit

: prescaler rate ٖ٤٘‫ ار‬ٚ٤ُٝ 3 bit ٖٓ ٌٕٞٓ ٞٛٝ ‫ ٓؼبَٓ اُوغٔخ‬ٞٛ prescaler ‫اُـ‬
ْ‫وغ‬٣ ‫وذس‬٣ ٚٗ‫ كب‬TMR ٠ِ‫ ػ‬ُٞ watch dog ٟ‫ أ‬WDT ٠ٗ‫اُضب‬ٝ timer/counter ٍٝ‫اال‬
ٍ‫وغْ ا‬٣ ‫وذس‬٣ WDT ‫مغ‬ٝ ٠ِ‫ارا ًبٕ ػ‬ٝ 256 ٠ُ‫ ا‬, .... ٝ‫ أ‬4ٝ‫ أ‬2 ٠ِ‫ ػ‬CLOCK ٍ‫ا‬
.1:12 ٠ُ‫ ا‬1:1 ٖٓCLOCK

ٝ‫ أ‬WDT ‫اء‬ٞ‫ ع‬, ٙ‫ؽذ‬ُٞ prescaler ُٚ timer ًَ pic 18 ‫ أٓب‬pic 16 ٠‫زا ك‬ٛ
.‫ كوو‬256μs ‫شُؾذ‬٤‫وذس أػذ ؿ‬ٛ ‫ ٓؼ‬prescaler ٍ‫ ٓغزخذٓزؼ ا‬ُٞ.TMR0

 PS2, PS1, PS0 - Prescaler Rate Select bit

22Page Technical Support 2015


٠ِ‫ٔخ ٓؼبَٓ اُوغٔخ رؼزٔذ ػ‬٤‫ ه‬.ٍٝ‫ اُغذ‬٠‫ ًٔب ك‬3 bits ٙ‫ز‬ٛ ٖٓ prescaler ٍ‫بس ا‬٤‫زْ أخز‬٣
٠ِ‫ؾزـَ ػ‬ٛ ٙ‫ أٗب ًذ‬٠‫جو‬٣ WDT ‫ ٓئهذ اُؾشاعخ‬ٝ‫ ا‬TMR0 ‫ ُِٔئهذ‬ٚ‫ق‬٤‫بس رخق‬٤‫اخز‬
ٌٕٞ‫ز‬ٛ ‫ب‬ٜ‫ؾزبع‬ٛ ٠ُِ‫وبد ا‬٤‫ أؿِت اُزطج‬٠ٗ‫ ال‬ٟ‫ْ د‬٤‫خ اُو‬٤‫ك‬ٝ option_reg register ٍ‫ا‬
timer mode ‫ اُـ‬٠‫ ك‬ٞٛٝ
option_reg=0b11010XXX
...... PRESCALER ‫ٔخ اُـ‬٤‫ ؽغت ه‬X

EXAMPLE:
Setup TIMR0 for 100μs delay, fosc=4MHZ???
Ans:
_ Timer mode (TOSC=0)
_100μs < 256 μs (no need prescaler)
_fosc=4MHZ
_Ftimer=4/4=1MHZ
_ T pulse=1/(10^6) = 1 μs
_ no. of pulses=100μs/1 μs=100 pulse
_ option_reg= 0b11010000
23Page Technical Support 2015
_ initial value =256-100=156
_ TMR0=156
.100μs ‫س‬ٝ‫ ثؼذ ٓش‬flag ٍ‫شكغ ا‬٤ٛ timer ٍ‫ ا‬ٙ‫ًذ‬
---------------------------------------------------------------------------
EXAMPLE:
Setup TIMR0 for a delay 10ms delay, fosc=4MHZ???
Ans:
_ timer mode (TOSC=0)
_10000μs > 256 μs (need prescaler)
‫ ثؼذ‬over flow َ‫ؾق‬٤‫ ث‬prescaler ٕٝ‫ ثذ‬1μs ‫اؽذح‬ُٞ‫ ا‬pulse ٍ‫ صٖٓ ا‬ٟ‫أٗب ػ٘ذ‬
٠‫ كالصّ أمشة ك‬10000μs ‫ صٖٓ هذسح‬٠ِ‫ص أؽقَ ػ‬ٝ‫ هت أٗب ػب‬256 μs ‫س‬ٝ‫ٓش‬
prescaler its value is =10000μs/256 μs=39.06
. 64‫جب‬٣‫روش‬
count =10000μs/64 μs=156.25
‫ سثغ ػذح ٓوذاس‬error ٟ‫ ػؾبٕ اٌُغشػ٘ذ‬ٟٞ‫ِخ ه‬٤ِ‫ ه‬error ‫ ٗغجخ‬٠‫ٕ ك‬ٌٞ٤ٛٝ 156 ‫جب‬٣‫روش‬
. 0.25/64 ‫اُخطؤ‬
_ option_reg=0b11010101
_ initial value =256-156=100
_ TMR0=100
. 10ms ‫ ثؼذ‬flag ٍ‫شكغ ا‬٤ٛٝ ٙ‫ ػذ‬156 ‫ؼذ‬٤ٛ timer ٍ‫ ا‬ٙ‫ًذ‬

EXAMPLE:
Setup TIMR0 for a delay 50ms delay, fosc=4MHZ???
Ans:
_ timer mode (TOSC=0)
24Page Technical Support 2015
_50000μs > 256 μs (need prescaler)
prescaler its value is =50000μs/256 μs=195.3125
. 256 ‫جب‬٣‫روش‬
_count =195
_ option_reg=0b11010111
_ initial value =256-195=61
_ TMR0=61
٠ٔ‫ ٌٖٓٔ اع‬ٝ‫ أ‬. ‫٘لغ‬٤ٛ ‫ ٓؼ‬TMR0 ‫ب‬ٜ‫هز‬ٝ count>256 ‫ اُـ‬ُٞ ‫أُؾٌِخ‬
ٞٛ ٠‫ٕ اُضٖٓ أُ٘ون‬ٌٞ٣ٝ 1 ‫ذ‬٣‫ض‬٣ variable ٍ‫ ا‬flag َ‫ؾق‬٣ ‫ًَ ٓب‬ٝ variable
.50ms * variable

: ‫غ‬ٝ‫اىَشار‬
:‫اىَشزٗع األٗه‬
‫رؾبد ثظ ثؼذ ٓب‬ٞ‫اُغ‬ٝ ‫ذاد‬٤ُِ‫ٍ ثشٗبٓظ ا‬ٝ‫ األ‬٠‫ ك‬ٚ٘‫ أرٌِٔ٘ب ػ‬٠ُِ‫ص أػَٔ اُجشٗبٓظ ا‬ٝ‫ػب‬
DELAY ٍ‫ذ ٓؾٌِخ ا‬٤ِ‫ؽ‬
. timerٍ‫ثبعزخذاّ ا‬
:‫م٘د اىبزّاٍذ‬

25Page Technical Support 2015


‫شزس اىن٘د ‪:‬‬
‫ك‪ ٠‬اُجذا‪٣‬خ أػشف اٍ ‪ ٝ timer register‬أد‪ ٚ٣‬اٍ ‪ , IV‬هجؼب أٗب مجط‪ ٚ‬أٗ‪ٌٕٞ٣ flag ًَ ٚ‬‬
‫ٓش صٖٓ هذس‪ٝ , ms50 ٙ‬ثؼذ‪ ُٞ ٖ٣‬مـو ع اُغ‪ٞ‬رؼ األ‪٣ ٍٝ‬غؼَ ٓزـ‪٤‬ش اعٔ‪ُٞ dir=1 ٚ‬‬
‫مـطذ ع اُغ‪ٞ‬رؼ اُزبٗ‪ ٠‬أعؼَ ‪ٝ , dir=2‬ثؼذ‪ ُٞ ٖ٣‬اٍ ‪ flag=1‬ص‪ٝ‬د ‪٣ tick‬ؼ٘‪ ٠‬ػذ‪ٟ‬‬
‫‪ ٞٛٝ ms 50‬د‪ ٙ‬اٍ ‪ time base‬ثزبػ‪ٝ , ٠‬ثشد‪ ٙ‬ؽَٔ اٍ ‪ ٖٓ IV‬عذ‪٣‬ذ ‪ٝ‬فلش اٍ ‪flag‬‬
‫ػؾبٕ ‪٣‬شعغ ‪٣‬ؼذ ربٗ‪ ٖٓ ٠‬أ‪ٝ ٍٝ‬عذ‪٣‬ذ ‪ُٔ ٝ‬ب ‪٣ tick=10‬ؼ٘‪ ٠‬ػذ‪ ٟ‬صٖٓ هذسح ‪ms50*10‬‬
‫‪٣‬ؼ٘‪ٗ ٠‬ـ صبٗ‪٤‬خ أثذء ؽ‪ٞ‬ف ‪ َٛ‬اٍ ‪ user‬مـطذ ع اُغ‪ٞ‬رؼ األ‪ٝ ٍٝ‬ال اُزبٗ‪ ُٞ , ٠‬مـو‬

‫‪26Page‬‬ ‫‪Technical Support 2015‬‬


‫ع األ‪٣ ٍٝ‬ؼ٘‪ dir=1 ٠‬أػَٔ ‪ ُٞ shift left‬مـو ع اُغ‪ٞ‬رؼ اُزبٗ‪٣ ٠‬ؼ٘‪ dir=2 ٠‬أػَٔ‬
‫‪ٝ shift right‬ثؼذ‪ ٖ٣‬فلش ‪ tick‬ػؾبٕ ‪٣‬ؼذ ٖٓ األ‪. ٍٝ‬‬
‫ه‪٤‬ت ك‪ ٠‬األ‪ ُٞ ٍٝ‬مـو ع اُغ‪ٞ‬رؼ األ‪٤ٛ ٍٝ‬خِ‪ ٠‬ه‪ٔ٤‬خ ‪٣ٝ dir=1‬غز٘‪ ٠‬اُ٘ـ صبٗ‪٤‬خ رؼذ‪ٟ‬‬
‫‪٣ٝ‬ؼَٔ ‪ ُٞ shift left‬مـو ػِ‪ ٠‬اُغ‪ٞ‬رؼ اُزبٗ‪ ٠‬ؽز‪ ٠‬هجَ ٓب ‪٣‬خِـ ‪one rotation‬‬
‫‪٤ٛ‬خِ‪ٝٝ dir=2 ٠‬هز‪ٜ‬ب أ‪ٓ ٍٝ‬ب ٗـ صبٗ‪٤‬خ رؼذ‪٣ ٟ‬و‪ ّٞ‬ػبَٓ ‪٣ shift right‬ؼ٘‪ً ٠‬ذ‪ ٙ‬رخِقذ‬
‫ٖٓ ٓؾٌِخ ػذّ اعزغبثخ أُ‪ٌ٤‬ش‪ُِ ٝ‬نـو ع اُغ‪ٞ‬رؼ أص٘بء كزشح اٍ ‪ for loop‬أ‪ ٝ‬أص٘بء كزشح‬
‫اٍ ‪ delay‬الٕ اُزب‪ٔ٣‬ش ث‪٤‬ؼذ ‪ٝ‬أُ‪ٌ٤‬ش‪ٝ‬ث‪٤‬ؾ‪ٞ‬ف ؽبُخ اٍ ‪ button‬أ‪ٓ ٍٝ‬ب رزـ‪٤‬ش ‪٣‬و‪٘ٓ ّٞ‬لز‬
‫‪ٓ action‬ؼ‪٘٤‬خ ‪.‬‬
‫ٌُٖ ا‪ ٚ٣‬اُؾَ ُ‪ ٞ‬ؽقَ إ اُزب‪ٔ٣‬ش خِـ ػذ ‪ٓٝ‬ش ٗـ صبٗ‪٤‬خ هجَ ٓب األٓش‬
‫)‪if (tick==10‬‬
‫‪٣‬غ‪ ٌٕٞ٤ٛ ,,, ٠‬ك‪ error ٠‬ثغ‪٤‬و ك‪ ٠‬ؽغبة اُ‪ٞ‬هذ ثظ ‪ ٌٕٞ٤ٛ‬فـ‪٤‬ش ه‪ ٟٞ‬ألٕ أُ‪ٌ٤‬ش‪ٝ‬‬
‫ث‪٘٤‬لز األ‪ٝ‬آشثغشػ‪ ٚ‬عذاً ‪.‬‬

‫ٌُٖ ‪ٛ‬زا اُجشٗبٓظ ‪ٞ٣‬عذ ثؼل األخطبء اُز‪ ٠‬ال رغؼِ‪٣ ٚ‬ؼَٔ ثٌلبءح‪ ُٞ ,‬ػذ ٓضال ‪ٝ‬أفجؾذ‬
‫‪ُٝ tick=9‬غ‪ ٌَٔ٤ٛ ٚ‬ػذ هٔذ مـطذ ع اُغ‪ٞ‬رؼ اُزبٗ‪ً ٠‬ذ‪٤ٛ ٙ‬خِ‪٣ٝ tick=0 ٠‬جذأ ‪٣‬ؼذ‬
‫ٖٓ عذ‪٣‬ذ ‪ٝ‬رقجؼ ‪٣ tick=10‬ؼ٘‪ٓ ٠‬ؼ ‪٤ٛ‬ذ‪ action ٟ‬ؿ‪٤‬ش ثؼذ ‪٣ ms50 *19‬ؼ٘‪ ٠‬أًزشٖٓ‬
‫ٗـ صبٗ‪٤‬خ ُزا ٓؼ ٗخِ‪ tick=0 ٠‬أص٘بء اُنـو ػِ‪ ٠‬اُغ‪ٞ‬رؼ ‪ ٌُٖٝ‬ػ٘ذ اخزجبس ٓش‪ٝ‬س‬
‫اُ٘ـ صبٗ‪٤‬خ كِ‪ ٞ‬ػذ‪ٗ ٟ‬ـ صبٗ‪٤‬خ ٗلز األٓش ‪ٝ‬ثؼذ‪ ٖ٣‬خِ‪. tick=0 ٠‬‬
‫ك‪ٓ ٠‬ؾٌِخ ربٗ‪٤‬خ ك‪ ٠‬اٌُ‪ٞ‬د أٗ‪ ٚ‬أ‪ٓ ٍٝ‬ب ‪ٞ٣‬فَ ‪ٝ ;portb=0b10000000‬هز‪ٜ‬ب ُ‪ ٞ‬ؽقَ‬
‫‪ shift‬اُ‪ٞ‬اؽذ ‪٤ٛ‬ن‪٤‬غ ‪٣ٝ‬جو‪ ٠‬اٍ ‪ ًِٚ register‬أفلبس ‪.‬‬

‫‪ٛ‬ض‪ٝ‬د األٓش‬

‫ُ‪ٛ dir==1 ٞ‬ؾ‪ٞ‬ف ُ‪ ٞ‬اٍ ‪ portb‬ال‬


‫‪27Page‬‬ ‫‪Technical Support 2015‬‬
‫‪٣‬غب‪ٝ 0b10000000 ٟٝ‬هز‪ٜ‬ب أهذس أػَٔ ‪ shift‬ػبد‪ ُٞ ٌُٖ ,ٟ‬ؿ‪٤‬ش ًذ‪٣ ٙ‬ؼ٘‪ ٠‬ث‪٤‬غب‪ٟٝ‬‬
‫‪0b10000000‬أعؼِ‪٣ ٚ‬جذأ ٖٓ األ‪٣ ٍٝ‬ؼ٘‪ٝ ٠‬أد‪ ٚ٣‬اُو‪ٔ٤‬خ ‪ٌٛٝ ,,0b00000001‬زا اُؾبٍ‬
‫ثبُ٘غجخ ُِـ ‪. right shift‬‬
‫الؽع‪:‬‬
‫الثذ إٔ أمغ ُـ ‪ dir‬ه‪ٔ٤‬خ اثزذائ‪٤‬خ ػؾبٕ ُ‪ٓ ٞ‬ؼ مـطذ ع اُغ‪ٞ‬رؼ ‪ ٌٕٞ٣‬ك‪. rotation ٚ٤‬‬

‫‪28Page‬‬ ‫‪Technical Support 2015‬‬


29Page Technical Support 2015
Block diagram of the PIC Timer1

ٖ٤‫ث‬ٝ ٚ٘٤‫م ث‬ٝ‫الؽع ثؼل اُلش‬ٛ 1 ‫ٔش‬٣‫ ثزبع رب‬block diagram ‫ اُـ‬٠‫٘ب ك‬٤‫٘ب ثق‬٤‫ ع‬ُٞ
: 0 ‫ٔش‬٣‫رب‬
‫غزش‬٤‫غ‬٣‫ س‬2 ٖ‫ ػجبسح ػ‬ٚٗ‫ ال‬16-bit timer/counter ٚٗ‫_ا‬1
ٖ‫ ػجبسح ػ‬ٚ‫غغزشار‬٣‫ ًَ س‬٠‫ ثزبػ‬ٝ‫ٌش‬٤ُٔ‫ الٕ ا‬Registers (TMR1H and TMR1L)
ٖ‫ إ اُغؼخ ػجبسح ػ‬ٙ‫ ًذ‬٠٘‫ ٓؼ‬,, ‫ذ‬٤‫ ث‬8
Capacity=2^16=65536
overflow َ‫ؾق‬٣ ٖ٣‫ثؼذ‬ٝ 0XFFFF to 0X0000 ٖٓ ‫ؼذ‬٣ َ‫لن‬٤ٛ ٠٘‫ؼ‬٣
. TMR1IF <<< flag ‫شكغ‬٤‫ب ث‬ٜ‫هز‬ٝٝ

31Page Technical Support 2015


ٚ٤‫أهل‬ٝ ‫ أهذس أؽـِخ‬٠٘‫ؼ‬٣ control ٚ٤‫ ك‬ٚٗ‫_ ا‬2

. َ‫ؾزـ‬٣ ‫ ٓؼ‬٠٘‫ؼ‬٣ 0 ‫ب‬ٜ٤ِ‫ ػ‬ُٞ , َ‫ؾزـ‬٣ ‫ٔش‬٣‫ اُزب‬٠٘‫ؼ‬٣ 1 ‫ب‬ٜ٤ِ‫ ػ‬ُٞ AND gate ‫اُـ‬
,, ‫ كوو‬1, 2, 4 or 8 divisions of the clock input ٖ‫ ػجبسح ػ‬prescaler ‫_ اُـ‬3
. prescaler ‫ٔش كوِِذ اُـ‬٣‫ ًجشد عؼخ اُزب‬٠ٗ‫ال‬
ٚ٤‫ ك‬0 ‫ٔش‬٣‫ رب‬ٟ‫_ ص‬4
Timer mode (0)
Counter mode (1)
‫ا‬ِٞٔ‫ؼ‬٣ ْٜٗ‫ْ ا‬ٜٓ‫ أهذس اعزخذ‬RC0/T1OSO and RC1/T1OSI pins ‫ اُـ‬ٟ‫كؼ٘ذ‬
peripheral electronics ٟ‫خ ٖٓ أ‬٣‫ عب‬٠ُِ‫ ا‬pulses ‫ ُِـ‬count
input ‫( ًـ‬pin RC1) ّ‫ أهذس أعزخذ‬٠ٗ‫ ا‬: ‫خ‬٤ٗ‫لخ رب‬٤‫ظ‬ٝ ْٜ٤ُ ٕ‫ًٔب‬ٝ
ٝ
LP quartz oscillator (low ‫ ُــ‬output ‫( ًـ‬pin RC0)
power)
. ‫ب‬ٜ‫ ؽطز‬٠ُِ‫غزبُخ ا‬٣‫ذ رجغ اُزشدد ثزبع اٌُش‬٣‫ض‬٤ٛ 1 ‫ٔش‬٣‫ب رب‬ٜ‫هز‬ٝٝ

31Page Technical Support 2015


‫‪ ٝ‬اُـ ‪ circuit‬د‪ٓ ٟ‬ؼ ثزؾزـَ ؿ‪٤‬ش ػِ‪low frequencies (up to 200 KHz) ٠‬‬
‫ه‪٤‬ت أٗب ٌٖٓٔ أعزخذّ اٌُش‪٣‬غزبُخ د‪ ٟ‬أ‪ ٝ‬اُذا‪٣‬شح د‪ ٟ‬ك‪ ٠‬ا‪ ٚ٣‬؟؟‬
‫ثغزخذٓ‪ٜ‬ب اٗ‪ ٠‬أػَٔ عبػخ ) ‪ٝ (real time clock‬اٌُش‪٣‬غزبُخ د‪ ٟ‬رشدد‪ٛ‬ب‬
‫‪٘ٛٝ 32,768 KHz‬و‪ ٚ٤ُ ٍٞ‬ث٘غزخذٓ‪ٜ‬ب ‪٤ًٝ‬ل‪٤‬خ اعزخذٓ‪ٜ‬ب ‪ٝ‬اصا‪ٗ ٟ‬ؼَٔ عبػخ الؽوب ‪.‬‬

‫)‪Timer 1 register (T1CON Register‬‬

‫‪Bit 7 & bit 6 :‬‬


‫ؿ‪٤‬ش ٓغزخذٓخ‬
‫‪Bit 5 & bit 4 :‬‬
‫‪Prescaler rate‬‬

‫‪Bit 3:‬‬
‫ُ‪ ٞ‬ػب‪ٝ‬ص ٓضال أؽـَ ًش‪٣‬غزبُخ ص‪ ٟ‬ثزبػ‪ ٚ‬اُغبػخ‬

‫‪32Page‬‬ ‫‪Technical Support 2015‬‬


‫ُ‪ً ٞ‬بٕ ػِ‪ٜ٤‬ب ‪ 1‬رجو‪ ٠‬ؽـبُخ ‪ٓ 0 ,‬ؼ ؽـبُخ ‪ٝ‬اُـ ‪ default‬اٗ‪ٜ‬ب ٓؼ ؽـبُخ ‪ٝ ,,‬أؽ٘ب‬
‫‪٘ٛ‬خِ‪ٜ٤‬ب ع اُـ ‪. default‬‬
‫‪Bit 2:‬‬

‫ٓؼ ٓ‪ٓ ٜٚٔ‬ؼب‪٣‬ب أؽو ك‪ٜ٤‬ب أ‪ ٟ‬ؽبعخ ‪ٗ ,,‬خِ‪ٜ٤‬ب ع اُـ ‪. default‬‬


‫‪Bit 1:‬‬

‫‪Bit 0:‬‬

‫‪33Page‬‬ ‫‪Technical Support 2015‬‬


Example1:
Setup timer1
for a 100ms delay Fosc=4Mhz?
Sol.:
TMR1L=?
TMR1H=?
T1CON=?
IV=?
100,000>65536

Pres=

TMR1 count = =50,000

IV=65536-50,000=15536
.H ‫ اُـ‬٠‫ٖ ك‬٤‫اُجبه‬ٝ L ‫ اُـ‬٠‫ ك‬٢ُٝ‫ األ‬8 bit ٍ‫ أمغ ا‬binary ٠ُ‫ ا‬15536 ْ‫ٍ اُشه‬ٞ‫أؽ‬
IV=0X3CB0=0B0011110010110000
TMR1L=0XB0
TMR1H=0X3C
T1CON=0B00010001;

34Page Technical Support 2015


‫ ؟؟‬timer1 ‫ ة‬ِٚٔ‫ أهذس أػ‬time delay ٍٞ‫خ أه‬٣‫ا‬
8 ٞٛ prescaler ‫ أًجش‬ٟ‫أٗب ػ٘ذ‬
Longest period = 8*(2^16)=524288µs
=0.5 s
0.5s ٠‫ ثزبػ‬time base ‫ اُــ‬ٙ‫ ًذ‬٠‫جو‬٣

Example2:
Setup timer1 for a 500ms delay Fosc=4Mhz?
Sol.:
500,000>65536

Pres=

TMR1 count = =62,500

IV=65536-62500=3036=0X0BDC
IV=0B0000101111011100
TMR1L=0XDC
TMR1H=0X0B
T1CON=0B00110001;

35Page Technical Support 2015


‫‪Real time clock‬‬
‫ً٘ب ارٌِٔ٘ب عبثوب ػٖ اٗ٘ب ٌٖٓٔ ٗؾو ًش‪٣‬غزبُخ خبس‪٣‬غ‪٤‬خ ‪ٝ‬اُزب‪ٔ٣‬ش ‪٣‬ض‪٣‬ذ ث٘بء ػِ‪ ٠‬رشدد‬
‫اٌُش‪٣‬غزبُخ ‪ٝ ,‬إ أُ‪ٞ‬م‪ٞ‬ع د‪ٓ ٙ‬ل‪٤‬ذ اٗ٘ب ٗؼَٔ عبػخ ‪ًٔٝ‬بٕ ده‪٤‬وخ ػٖ هش‪٣‬ن اعزخذاّ‬
‫ًش‪٣‬غزبُخ رشدد‪ٛ‬ب ‪32,768 KHz‬‬
‫‪ٝ‬اُز‪ٞ‬ف‪ِ٤‬خ ‪ٛ‬زٌ‪ ٕٞ‬ث‪ٜ‬زا اُؾٌَ‬

‫ه‪٤‬ت اؽٔؼ٘‪ ٠‬اُزشدد د‪ ٙ‬اُِ‪ ٠‬اعزخذٓز‪ُ ٚ‬ؼَٔ اُغبػخ ؟؟‬

‫=‪Flag‬‬

‫‪٣‬ؼ٘‪ ٠‬اٍ ‪٤ٛ flag‬زشكغ ًَ صبٗ‪٤‬ز‪ٖ٤‬‬


‫ه‪٤‬ت ُ‪ ٞ‬اُش‪٣‬غغ‪٤‬زش ٓزؾَٔ ة ‪ 16^2‬ث‪٤‬ذ ‪٤ٛ‬ؾقَ ‪ ًَ flag‬صبٗ‪٤‬ز‪ , ٖ٤‬ه‪٤‬ت ُ‪ ٞ‬ػب‪ٝ‬ص‬
‫‪ ًَ flag‬صبٗ‪٤‬خ‬

‫‪36Page‬‬ ‫‪Technical Support 2015‬‬


Count= 1 sec *3276HZ=32768
IV=2^16-32768=32768
=0X8000=0B1000 0000 0000 0000
TMR1H ٖٓ 7 ‫ذ‬٤‫ ث‬٠‫ ك‬1 ‫مغ‬ٝ ‫ن‬٣‫ ػٖ هش‬IV ‫ؾَٔ اُـ‬ٛ ٙ‫ ًذ‬,, Over flow َ‫ؽق‬
IV: set TMR1H.7=1;
T1CON=OB00001011;

Real time clock code

37Page Technical Support 2015


‫‪٘ٛ‬الؽع إ األٓش اُِ‪ ٠‬ث‪٤‬ؾ‪ byte ٖٓ ٍٞ‬اُ‪ string ٠‬ثزؼشك أُزـ‪٤‬ش ك‪ 3 ٠‬خبٗبد‬
‫‪ًٔٝ‬بٕ ٗالؽع إ اُغ‪ٞ‬رؾ‪ ٖ٤‬اُِ‪ ٠‬ثنجو ث‪ ْٜ٤‬اُذهب‪٣‬ن ‪ٝ‬اُغبػبد دخِز‪ ْٜ‬ػِ‪ portd ٠‬ػؾبٕ‬
‫ػ٘ذ‪ٓ portb ٟ‬زؼشف ػِ‪ ٚ٤‬اُؾبؽخ ‪ًٔٝ‬بٕ ٓ‪٘٤‬لؼؼ اعزخذّ ‪ RC0, RC1‬الٗ‪ ْٜ‬خبف‪ٖ٤‬‬
‫ثبٌُش‪٣‬غزبُخ ‪.‬‬

‫‪38Page‬‬ ‫‪Technical Support 2015‬‬


‫‪Circuit diagram‬‬

‫ه‪٤‬ت أٗب ًذ‪ ٙ‬اُ‪ٞ‬ع‪ِ٤‬خ اُِ‪ ٠‬ثؼشف ث‪ٜ٤‬ب اُزب‪ٔ٣‬ش خِـ ‪ٝ‬ال أل ‪ ٠ٛ‬اُـ ‪ ,, flag‬ه‪٤‬ت ٌٖٓٔ اُــ‬
‫‪ٓ ٌٕٞ٣ CPU‬ؾـ‪ٝ ٍٞ‬اُزب‪ٔ٣‬ش ‪٣‬شكغ اُـ ‪ٓٝ flag‬ؼ أخذ ثبُ‪ ٠‬ؿ‪٤‬ش ثؼذ ٓذح ٌٖٓٔ روَِ ٗغجخ‬
‫اُذهخ ‪ ,,‬ػؾبٕ ًذ‪ ُٞ ٙ‬ػب‪ٝ‬ص اُــ ‪ CPU‬رغزغ‪٤‬ت ثغشػخ ُِــ ‪ flag‬أعزخذّ اُــ ‪interrupt‬‬

‫‪39Page‬‬ ‫‪Technical Support 2015‬‬


ّ‫غزخذ‬ٛ ٙ‫ ػؾبٕ ًذ‬,, ٚ‫ ٓؼ ؽبكز‬CPU ‫اُـ‬ٝ ‫ ارشكغ‬ُٞ flag ‫ٔش‬٣‫ًبٕ ػ٘ذٗب ٓؾٌِخ إ اُزب‬
ِٚٔ‫ ثزؼ‬٠ُ‫ت ا‬٤‫رغ‬ٝ ‫ب‬ٜٗ‫ روق ٌٓب‬CPU ‫زشكغ اُــ‬٣ flag ‫ٔش‬٣‫ٍ ٓب اُزب‬ٝ‫ ػؾبٕ أ‬interrupt ‫اُـ‬
٠ٗ‫هلذ ( ًب‬ٝ ‫ب رشعغ ٌٓبٕ ٓب‬ٜ‫ثؼذ ٓب رخِق‬ٝ Interrupt function ‫ػ ر٘لز اُـ‬ٝ‫رش‬ٝ
. automatic clear ِٚٔ‫ؼ‬٤‫ ث‬flag ‫ت ُِـ‬٤‫غزغ‬٣ ‫ثؼذ ٓب‬ٝ ,, ) function ‫ ُـ‬call َٔ‫ثؼ‬

: ّٔ‫ إ‬ٚ‫ ػي‬interrupt ‫ػشاُ مذٓ بْؼزف اىـ‬


Interrupt is meant to branch to a subroutine usually known as
interrupt services routine , when an interrupt flag is raised due to a
change in coming data .

: ِٞ‫ٕٗ٘ ّ٘ػ‬
Internal interrupt
External interrupt
interrupt ‫ش‬٤‫ؼ ؿ‬٣‫ٓؼ٘ذ‬ٝ , interrupt ‫ ُِــ‬source ‫ ًزا‬ٟ‫ أٗب ػ٘ذ‬٢‫هز‬ُٞ‫ت د‬٤‫ه‬
‫ػ ُ٘لظ اُـ‬ٝ‫ش‬٤ٛ َ‫ؾق‬٤ٛ interrupt ٟ‫ إ أ‬ٙ‫ ًذ‬٠٘‫ ٓؼ‬,, ‫اؽذ‬ٝ services routine
ٖ٤‫أٗلز أٓش ٓؼ‬ٝ interrupt ‫ ٓقذس اُـ‬٠ِ‫ ػ‬check َٔ‫ الصّ أػ‬ٙ‫ ػؾبٕ ًذ‬, function
َٔ‫ اػ‬1 ‫ٔش‬٣‫ ٖٓ رب‬ٟ‫ عب‬ُٞ , ‫٘خ‬٤‫ أػَٔ ؽبعخ ٓؼ‬0 ‫ٔش‬٣‫ ٖٓ رب‬ٟ‫ عب‬flag ‫ اُـ‬ُٞ ‫ُخ‬ٞ‫و‬ٛ ٠٘‫ؼ‬٣
. ٚ٤ٗ‫ رب‬ٚ‫ؽبع‬

41Page Technical Support 2015


How to enable interrupt

global interrupt enable


(GIE)

Prefral interrupt Timer0


External interrupt
enable interrupt
(INTOIE)
(PEIE) (TOIE)

UART TX interrupt
enable UART RX interrupt enable A/D interrupt TMR1 INT
TXIE RCIE ADIE T1IE

41Page Technical Support 2015


َ‫ض اؽـ‬٣‫ ٓضال ػب‬ِٞ‫ ك‬, interrupt َُ ‫ ٓقذس‬١‫َ ا‬٤‫وخ رلؼ‬٣‫ اهذس اػشف هش‬١‫ د‬ٚٔ‫ٖٓ اُشع‬
٢ِ‫ الصّ اخ‬timer0 ٖٓ interrupt ٍ‫ا‬
GIE_bit = TMR0IE_bit=1;
ّ‫ الص‬TIMER1 interrupt َ‫ض أؽـ‬٣‫ ػب‬ُٞ َ‫ثبُٔض‬ٝ
GIE_bit =PEIE_bit=TMR1IE_bit=1;

Interrupt register (INTCON):

‫غ‬٤ٔ‫( ُغ‬enable َٔ‫ؼ‬٤‫ؾـَ )ث‬٤‫ ث‬ٚٗ‫ ا‬ٚ‫لز‬٤‫ظ‬ٝ,‫اٌُزبثخ‬ٝ ‫ هبثَ ُِوشاءح‬INTCON َ‫اُغغ‬


‫ اُخبفخ‬flags ‫ ًَ اُـ‬٠ِ‫ ػ‬ٟٞ‫ؾز‬٤‫ ث‬ٚٗ‫ثبالمبكخ ا‬,,interrupt ‫ٓقبدس اُـ‬
. ‫ثٔقبدسأُوبهؼخ‬

Global Interrupt Enable GIE : Bit 7.


‫ب‬ٜ‫ ع٘ؼشف أعجبث‬٠‫اُز‬ٝ ‫هذ‬ُٞ‫ ٗلظ ا‬٠‫ أٌُٔ٘خ ك‬interrupt ‫غ ٓقبدس اُـ‬٤ٔ‫ ع‬٠‫رزؾٌْ ك‬
. ‫الؽوب‬
GIE(7): set to 1 to enable global interrupts
42Page Technical Support 2015
interrupt ‫غ ٓقبدساُـ‬٤ٔ‫ ع‬Enables = )1( ‫ب‬ٜ‫ٔز‬٤‫ه‬
interrupt ‫غ ٓقبدساُـ‬٤ٔ‫ ع‬Disables َ٤‫) = ػذّ رؾـ‬0( ‫ب‬ٜ‫ٔز‬٤‫ه‬

PEIE : Bit 6
PEIE(6): to enable/disable other peripheral interrupts
enable peripheral interrupts = )1( ‫ب‬ٜ‫ٔز‬٤‫ه‬
disable peripheral interrupts = )0( ‫ب‬ٜ‫ٔز‬٤‫ه‬

T0IE : Bit 5
TOIE (5): to enable/disable TMR0 interrupt
enable TMR0 interrupt = )1( ‫ٔخ‬٤‫اُو‬
disable TMR0 interrupt = )0( ‫ٔخ‬٤‫اُو‬
‫ن‬٣‫ ػٖ هش‬internal clock ‫بس ٗظبّ اُـ‬٤‫زْ اخز‬٣ TMR0 interrupt ّ‫ ؽبُخ اعزخذا‬٠‫ك‬
‫ب ثقلش‬ٜ‫ٔز‬٤‫ ه‬OPTION_REG ‫ ثبُـ‬bit 5 ٠ٛٝ TOCS _ bit ٠ِ‫ أخ‬٠ٗ‫ا‬
. TOCS=0 ٟ‫أ‬
‫رقجؼ‬ٝ Interrupt Flag ‫زْ سكغ اُـ‬٣ ‫ٔش‬٣‫ ُِزب‬overflow َ‫ؾق‬٣ ‫ًَ ٓب‬ٝ
Interrupt ‫ اُـ‬Interrupt َ‫ؾق‬٣ TMR0 ‫ ُِـ‬overflow َ‫ؾق‬٣ ‫ًَ ٓب‬ٝ, T0IF=1
‫الصّ ٗبخذ ثبُ٘ب اٗ٘ب‬ٝ ,, ‫ ارشكغ‬timer0 flag ‫ إ اُـ‬٠ٜ٘ٔ‫ل‬٤ٛ ٠ُِ‫ ا‬ٞٛ ٙ‫د‬
َ‫ؾق‬٣ ‫٘لغ‬٣ ٕ‫ ػؾب‬subroutine interrupt ‫ اُـ‬٠‫ ك‬TOIF ‫ ُِخبٗخ‬clear َٔ‫ٗؼ‬
‫ذ‬٣‫ ٖٓ عذ‬interrupt
TOIF=0

43Page Technical Support 2015


Bit 4 : INTE: ِٞ‫خاّت تَن‬RB0 / INT
INTE(4): disable/enable interrupts on pin RB0
RB0/INT ‫خ ُِطشف‬٤‫ش اُؾبُخ أُ٘طو‬٤‫ اُ٘برظ ػٖ رـ‬interrupt ‫ اُـ‬٠‫ اُزؾٌْ ك‬٠‫رغزخذّ ك‬
. external interrupt ‫ اُـ‬ٟ‫أ‬
enable interrupts on pin RB0 = )1( ‫ٔخ‬٤‫اُو‬
disable interrupts on pin RB0 = )0( ‫ٔخ‬٤‫اُو‬

RBIE : Bit 3
‫ ػ٘ذ‬interrupt ‫ االهشاف إٔ رغجت‬ٙ‫ز‬ُٜ ٌٖٔ٣ َ‫ ًٔذاخ‬PORT B ‫ئخ أهشاف‬٤ٜ‫ػ٘ذ ر‬
. ) ‫ اُؼٌظ‬ٝ‫ ٓ٘خلل أ‬٠ُ‫اء ٖٓ ٓشرلغ ا‬ٞ‫خ ( ع‬٤‫ب أُ٘طو‬ٜ‫ش ؽبُز‬٤‫رـ‬
. PORT B ‫ ؽبُخ أُ٘لز‬٠‫ش ك‬٤‫س رـ‬ٝ‫ٖ أُوبهؼخ ػ٘ذ ؽذ‬٤ٌٔ‫) = ر‬1( ‫ٔخ‬٤‫اُو‬
. ‫ٖ أُوبهؼخ‬٤ٌٔ‫) = ػذّ ر‬0( ‫ٔخ‬٤‫اُو‬

T0IF : Bit 2
,, 1 ‫ب ثـ‬ٜ‫ٔز‬٤‫ رقجؼ ه‬overflow ‫ كبرا ؽذس‬,, ‫ أّ ال‬0‫ٔش‬٣‫ ُزب‬overflow ‫َ ؽذس‬ٛ ٖ٤‫رج‬
ٝ‫ أ‬set ‫) آب‬T0IE ( Bit 5 َ‫ن عؼ‬٣‫ب ػٖ هش‬ٜ٘٤ٌٔ‫ ػذّ ر‬ٝ‫ب ا‬ٜ٘٤ٌٔ‫ ر‬٠‫ٌٖٔ اُزؾٌْ ك‬٣ٝ
. clear
٠‫ ُِخبٗخ ك‬clear َٔ‫غت ػ‬٣(TMR0 ‫غزش‬٤‫غ‬٣‫ ثش‬overflow ‫س‬ٝ‫) = ؽذ‬1( ‫ٔخ‬٤‫اُو‬
) ‫اُجشٗبٓظ‬
. overflow ٠ُ‫قَ ثؼذ ا‬٣ ُْ 0 ‫ٔش‬٣‫غزش رب‬٤‫غ‬٣‫) = س‬0( ‫ٔخ‬٤‫اُو‬

44Page Technical Support 2015


‫‪INTF : Bit 1‬‬
‫اُو‪ٔ٤‬خ (‪ = )1‬ؽذ‪ٝ‬س ٓوبهؼخ خبسع‪٤‬خ ثبُطشف ‪٣ ( RB0‬غت ٓغؼ اُخبٗخ ثبُجشٗبٓظ ) ‪.‬‬
‫اُو‪ٔ٤‬خ (‪ = )0‬ػذّ ؽذ‪ٝ‬س ٓوبهؼخ خبسع‪٤‬خ ثبُطشف ‪. RB0‬‬

‫‪RBIF : Bit 0‬‬


‫أؽذ أهشاف ‪ٌٜ٘ٔ٣ PORTB‬ب أُوبهؼخ ػ٘ذ رـ‪٤‬شؽبُز‪ٜ‬ب ‪ٔٛٝ‬ب (‪. ) RB7 : RB4‬‬
‫ثؾ‪٤‬ش ‪٣‬زْ ٓوبسٗخ ( ‪ ) RB7 : RB4‬ثبُو‪ٔ٤‬خ اُوذ‪ٔ٣‬خ أُخضٗخ ًآخش هشاءح ُـ ‪. PORTB‬‬
‫كِ‪ً ٞ‬بٗذ اُو‪ ْ٤‬ؿ‪٤‬ش ٓزطبثوخ (‪٣‬ؼ٘‪ ٠‬ؽبُز‪ ٚ‬ارـ‪٤‬شد ) ‪٤ٛ‬ؾقَ ‪ ,, interrupt‬ثٔؼ٘‪ ٠‬اٗ‪ُٞ ٠‬‬
‫مجطذ اٍ ‪ُ configuration‬ـ ‪ portb‬ػِ‪ ٠‬اٗ‪ٜ‬ب رؼَٔ ‪ٝ interrupt‬هجوذ ع‪ٜ‬ذ ػِ‪ ٠‬اٍ‬
‫‪ pins rb7:rb4‬أ‪ٝ ٟ‬اؽذح ك‪ ْٜ٤‬كزؾذس ٓوبهؼخ ‪ٝ‬رظ‪ٜ‬ش ٗز‪٤‬غخ ‪ٛ‬ز‪ ٙ‬أُوبهؼخ ػِ‪ ٠‬ؽٌَ‬
‫عؼَ خبٗخ ‪ RBIF‬ثبُو‪ٔ٤‬خ ‪ 1‬أ‪. set ٟ‬‬
‫اُو‪ٔ٤‬خ (‪ = )1‬ػ٘ذ رـ‪٤‬ش ػِ‪ ٠‬االهَ ؽبُخ اؽذ اُخبٗبد ٖٓ اُخبٗخ ‪ RB4‬اُ‪ ٠‬اُخبٗخ ‪RB7‬‬
‫(‪٣‬غت ٓغؾ‪ٜ‬ب ‪ clear‬ثبُجشٗبٓظ ) ‪.‬‬
‫اُو‪ٔ٤‬خ (‪ ُْ =)0‬رزـ‪٤‬شؽبُخ ا‪ ٖٓ ٟ‬اُخبٗبد اُغبثوخ ‪.‬‬

‫ارا ًبٗذ خبٗخ رٌٔ‪ ٖ٤‬أُوبهؼخ أُ٘بظشح ؿ‪٤‬ش ٌٓٔ٘خ أ‪ )0( ٟ‬كال رؾذس ٓوبهؼخ أعبعب ‪ .‬أٓب‬
‫إ ًبٗذ ٌٓٔ٘خ أ‪ )1( ٟ‬كزؾذس أُوبهؼخ ػ٘ذ سكغ اُـ ‪. flag‬‬
‫‪45Page‬‬ ‫‪Technical Support 2015‬‬
‫)‪Example: (portb interrupt‬‬

‫اُجشٗبٓظ ث‪٤‬جذأ ٖٓ ػ٘ذ ‪ main‬رلنَ اُِ‪٤‬ذ ر٘‪ٞ‬س ‪ٝ‬رطل‪ٝ ٠‬ث‪ ٖ٤‬اٍ ‪ on & off‬صٖٓ اٗزظبس‬
‫‪ ٠ِٓ 100‬صبٗ‪٤‬خ أ‪ٓ ٍٝ‬ب اٍ ‪٣ user‬نـو ع اٍ ‪٣ switch‬وق اُجشٗبٓظ ػِ‪ ٠‬ؽبُز‪٣ ٚ‬ؼ٘‪ُٞ ٠‬‬
‫مـطذ ‪ٞ٘ٓ led1ٝ‬سح ‪ٛ‬زلنَ ٓ٘‪ٞ‬سح ُ‪ ٞ‬مـطذ ‪ٓ led1ٝ‬طل‪٤‬خ ‪ٛ‬زلنَ ٓطل‪٤‬خ ُؾذ ٓب‬
‫‪٣‬ش‪ٝ‬ػ ُذاُخ ‪٘٤ُ interrupt‬لز اُِ‪ ٠‬ك‪ٜ٤‬ب ‪٣ٝ‬شعغ ُِجشٗبٓظ االفِ‪ ٠‬ربٗ‪٤ٛ ٠‬ش‪ٝ‬ػ ُِٔوبهؼخ‬
‫‪ٞ٘٣‬س ‪٣ٝ led 2‬لنَ ‪ 3‬ص‪ٞ‬اٗ‪ ٠‬صْ ‪٣‬طل‪ٜ٤‬ب ‪٣ٝ‬ش‪ٝ‬ػ ُِجشٗبٓظ االفِ‪ٌٛٝ ٠‬زا ثظ ػ٘ذ ؽذ‪ٝ‬س‬
‫ٓوبهؼخ ‪٣‬شكغ ػِْ أُوبهؼخ اُخبؿ ة ‪ٝ portb‬رقجؼ ‪ُ bit0=1‬زا الثذ ثؼذ ٗ‪ٜ‬ب‪٣‬خ اٍ‬
‫‪ interrupt‬اٗ‪ ٠‬أفلش ‪ bit0‬ػؾبٕ أهذس أػَٔ ٓوبهؼخ ربٗ‪ٝ ٠‬رُي ػٖ هش‪٣‬ن االٓش‬
‫;‪ًٔ intcon.f0=0‬ب ‪ٓ ٞٛ‬ج‪ ٖ٤‬ثبٌُ‪ٞ‬د ‪.‬‬
‫‪46Page‬‬ ‫‪Technical Support 2015‬‬
: ‫و اىذائزة‬ٞ‫ت٘ص‬

Example (RB0 interrupt):


Switch is pressed RB0 goes from 0 to 1 causing an interrupt which
calls the interrupt() routine. The interrupt routine increment the
value of PORD by one.

47Page Technical Support 2015


48Page Technical Support 2015
49Page Technical Support 2015
‫ك‪ ٢‬اُغضء د‪٘ٛ ٙ‬طجن اُِ‪ ٢‬ارؼِٔ٘ب‪ ٙ‬ك‪ ٢‬اٍ ‪ٝ timers‬اٍ ‪ interrupt‬إ اؽ٘ب ٗؼَٔ رطج‪٤‬وبد‬
‫ػِٔ‪ٚ٤‬‬
‫‪Real time clock -1‬‬
‫‪Ultrasonic sensor -2‬‬
‫‪٘ٛ‬جذأ ثبٍ‬

‫‪Real time clock‬‬


‫عجن ‪ٝ‬ػِٔ٘ب ‪ real time clock‬ك‪ ٢‬دسط ‪ً ٌُٖٝ timer1‬بٕ ك‪ ٢‬ػ٘ذٗب ٓؾٌِ‪ ٚ‬إ ٌٖٓٔ‬
‫اٍ ‪ flag‬ثزبع اُزب‪ٔ٣‬ش ‪٣‬زشكغ ‪ٝ‬اٍ ‪ٓ ٌٕٞ٣ CPU‬ؾـ‪ ٍٞ‬ك‪ ٢‬ر٘ل‪٤‬ز آش ربٗ‪ ٢‬كغبػز‪ٜ‬ب اٍ‬
‫‪ٌ٘ٓ CPU‬ؼ ‪٤ٛ‬غزغ‪٤‬ت ُالٓش ثزبػ‪ ٢‬اال ُٔب ‪٣‬خِـ ر٘ل‪٤‬ز األٓش اُِ‪ٓ ٢‬ؼب‪ٝ ٙ‬د‪ً ٙ‬بٕ ث‪٤‬ؤصش‬
‫ك‪ ٢‬دهخ اُجشٗبٓظ‪.‬دُ‪ٞ‬هز‪ٝ ٢‬ثؼذ ٓؤخذٗب اٍ ‪ٗ interrupt‬وذس ٗزـِت ػِ‪ ٠‬أُؾٌِ‪ ٚ‬د‪١‬‬

‫ٗشنو اىبزّاٍذ ٕ‪ٞ‬نُ٘ ك االت‪: ٜ‬‬

‫‪51Page‬‬ ‫‪Technical Support 2015‬‬


‫اُجشٗبٓظ د‪٣ ٙ‬لشم ػٖ اُجشٗبٓظ اُِ‪ ٢‬ػِٔ٘ب‪ ٙ‬هجَ ًذ‪ ٙ‬ك‪ ٢‬دسط ‪ timer1‬إ اؽ٘ب ‪٘ٛ‬ب ا‪ّ ٍٝ‬‬
‫‪٣‬زشكغ اٍ ‪٤ٛ flag‬ؾقَ ػِط‪ٝ interrupt ٍٞ‬اُجشٗبٓظ ‪٤ٛ‬ش‪ٝ‬ػ ُِذاُخ ثزبػخ اٍ‬
‫‪٘٤ٛ interrupt‬لز اٍ ك‪ٜ٤‬ب‬
‫‪ٝ‬ثٌذ‪ ٙ‬اثو‪ ٠‬ارـِجذ ػِ‪ ٠‬أُؾٌِ‪ ٚ‬اُِ‪ً ٢‬بٗذ ك‪ ٢‬اُجشٗبٓظ ‪ٝ‬هذسد اػَٔ اص‪ٝ‬د دهخ اُجشٗبٓظ‬
‫ػؾبٕ رجو‪ ٠‬كؼال ‪Real time clock‬‬

‫‪51Page‬‬ ‫‪Technical Support 2015‬‬


‫‪Ultrasonic‬‬
‫ٖٓ أؽذ أُ‪ٞ‬د‪ٞ٣‬الد (اُغ٘غ‪ٞ‬ساد) اُز‪٣ ٠‬زْ ك‪ٜ٤‬ب اعزخذاّ اُزب‪ٔ٣‬ش ثؾٌَ اعبع‪ٞٓ ٞٛ ٠‬د‪ٍٞ٣‬‬
‫اُـ ‪. Ultrasonic‬‬
‫‪:Ultrasonic‬‬
‫‪ٞٓ ٞٛ‬د‪٣ ٍٞ٣‬طِن ٓ‪ٞ‬عبد ػبُ‪٤‬خ اُزشدد ك‪ٞ‬م ٓذ‪ ٟ‬عٔغ االٗغبٕ ‪ ٝ‬اُز‪ ٢‬ػ٘ذ افطذآ‪ٜ‬ب‬
‫ثغغْ ٓب رشرذ ‪ٛ‬ز‪ ٙ‬أُ‪ٞ‬عبد ػِ‪ ٠‬ؽٌَ فذ‪٣.Echo ٟ‬زٌ‪ ٞٛٝ sender ٖٓ ٕٞ‬اُز‪ٟ‬‬
‫‪٣‬شعَ أُ‪ٞ‬عخ ‪ ٞٛٝ receiver ٝ‬اُز‪٣ ٟ‬غزوجَ اُـ ‪٣.Echo‬غزخذّ ُو‪٤‬بط أُغبكخ ث‪ٖ٤‬‬
‫اُغ٘غ‪ٞ‬س ‪ٝ‬ث‪ ٖ٤‬أ‪ ٟ‬ػبئن ُزا ‪٣‬زْ اعزخذاّ اُغ٘غ‪ٞ‬س ثٌضشح ك‪ ٠‬رطج‪٤‬وبد اُش‪ٝ‬ث‪ٞ‬د اُز‪ٗ ٠‬ؾزبط‬
‫ك‪ٜ٤‬ب ُزغ٘ت اُؼ‪ٞ‬ائن أ‪ٓ ٝ‬ؼشكخ ثُؼذ ُـْ ٓؼ‪ٝ ٖ٤‬أ‪٣‬نب ‪٣‬زْ اعزخذٓ‪ٜ‬ب ك‪ ٠‬ػقب أ‪ ٝ‬هلبصاد‬
‫أٌُل‪ٞ‬ك‪٤ُ ٖ٤‬زٌٔ٘‪ٞ‬ا ٖٓ ٓؼشكخ إٔ ‪٘ٛ‬بى ػبئن ػٖ هش‪٣‬ن اٗزاس ٓضال‪ًٔ ,‬ب ‪ ٌٖٔ٣‬اعزخذآ‪ٚ‬‬
‫ًغ‪ٜ‬بص ُو‪٤‬بط اُغشػخ ػٖ ثؼذ ًبُز‪٣ ١‬غزخذٓ‪ ٚ‬سعبٍ ؽشهخ اُغ‪٤‬ش ُٔؼشكخ اُغ‪٤‬بساد اُز‪٢‬‬
‫رغ‪٤‬ش ثغشػخ أػِ‪ ٖٓ ٠‬أُوشس‪ٝ‬أ‪٣‬نب ‪ automatic door opener‬اُ‪ ٠‬ؿ‪٤‬ش‪ٛ‬ب ٖٓ‬
‫اُزطج‪٤‬وبد‪......‬‬

‫عشػخ أُ‪ٞ‬عبد ك‪ ٢‬اُلشاؽ ‪ٓ345 ٢ٛ‬زش\صبٗ‪٤‬خ ػ٘ذ ‪ ٝ 25C°‬رخزِق ٖٓ ‪ٝ‬عو ألخش‬


‫ؽغت اُ‪ٞ‬عو اُ٘بهَ ًبُغ‪ٞ‬ائَ ‪ ٝ‬اُـبصاد ‪ ٝ‬األعغبّ اُقِجخ‪.‬‬
‫ُٔؼشكخ أُغبكخ ‪ٌ٣ ,‬ل‪ ٢‬إٔ ٗؼشف عشػخ ‪ٛ‬ز‪ ٙ‬أُ‪ٞ‬عبد ‪ ٝ ,‬إٔ ٗؼشف اُلشم ث‪ ٖ٤‬صٖٓ‬
‫االسعبٍ ‪ ٝ‬صٖٓ األسرذاد ُِقذ‪ ٝ ٟ‬ث‪ٜ‬زا ‪ٌ٘٘ٔ٣‬ب ٓؼشكخ أُغبكخ ؽغت هبٗ‪ٞ٤ٗ ٕٞ‬رٖ‪:‬‬
‫أُغبك‪ = ٚ‬اُغشػ‪ × ٚ‬اُضٖٓ‬
‫صٖٓ اسعبٍ أُ‪ٞ‬عخ ‪ٝ‬اسرذاد‪ٛ‬ب ‪ ٌٖٔ٣‬ه‪٤‬بع‪ ٚ‬ػٖ هش‪٣‬ن رب‪ٔ٣‬ش ‪ٝ ,‬اُغشػ‪ٓ ٚ‬ؼِ‪ٓٞ‬خ ُذ‪٘٣‬ب‬
‫‪ٝ‬ثزُي ‪ ٌٖٔ٣‬ه‪٤‬بط أُغبكخ ثغ‪ُٜٞ‬خ‪.‬‬
‫‪52Page‬‬ ‫‪Technical Support 2015‬‬
‫)‪PING Ultrasonic Distance Sensor (#28015‬‬
‫‪٣‬وذس ‪٣‬و‪٤‬ظ ٓغبكخ رزشا‪ٝ‬ػ ٓب ث‪ , 3 meters:2 cm ٖ٤‬ػجبسح ػٖ ‪3 pins‬‬
‫اُشعَ األ‪ ٠ُٝ‬ر‪ٞ‬فَ ثبُـ ‪ٝ GND‬اُزبٗ‪٤‬خ ثـ ‪ٝ 5v‬اُشعَ اُضبُضخ ‪ ٠ٛ‬اٍ ‪signal pin‬‬
‫‪٣ٝ‬زْ ر‪ٞ‬ف‪ِٜ٤‬ب ثبُـ ‪ٌ٤ُِٔ I/O pin‬ش‪ً٘ٝ‬زش‪ُٝ‬ش ‪.‬‬

‫ّظز‪ٝ‬ت اىؼَو ‪:‬‬


‫اُـ ‪ PING sensor‬ث‪٤‬وذس ‪٣‬ؾذد ثؼذ اُؼبئن ػٖ هش‪٣‬ن اسعبٍ ٓ‪ٞ‬عبد االُزشاع‪٤ٗٞ‬ي ‪ٝ‬اُِ‪٠‬‬
‫ثوذس اسعِ‪ٜ‬ب ػٖ هش‪٣‬ن اٗ‪ ٠‬اسعَ ‪ ٖٓ trigger pulse‬أُ‪ٌ٤‬ش‪ً٘ٝ‬زش‪ُٝ‬ش ثزبػ‪ُِ ٠‬ـ‬
‫‪ٓ signal pin‬ذر‪ٜ‬ب رزشا‪ٝ‬ػ ٖٓ ‪ٝ 2µsec :5 µsec‬ثؼذ‪ ٖ٣‬اُغ٘غ‪ٞ‬س ‪٤ٛ‬ؼَٔ ‪delay‬‬
‫ُٔذح ‪ٝ µsec750‬هز‪ٜ‬ب ‪٣‬و‪ ّٞ‬األُزشاع‪٤ٗٞ‬ي ثز‪ٜ‬ئ‪٤‬خ ٗلغ‪٤ُ ٚ‬ؼَٔ ًـ ‪ , receiver‬أ‪ٓ ٍٝ‬ب ‪٣‬جذأ‬
‫االُزشاع‪٤ٗٞ‬ي ‪٣‬ؼَٔ ًـ ‪٤ٛ receiver‬خشط ‪ high output pulse‬ػِ‪ ٠‬اٍ ‪signal pin‬‬

‫‪53Page‬‬ ‫‪Technical Support 2015‬‬


‫‪٘٤ٛٝ‬زظش إٔ ‪٣‬قِ‪ ٚ‬فذ‪ُِ٘ Echo ٟ‬جنبد اُز‪ ٢‬أسعِ‪ٜ‬ب ثؼذ افطذآ‪ٜ‬ب ثؼبئن ‪ٝ‬هز‪ٜ‬ب اٍ‬
‫‪ output pulse‬اُخبسعخ ٖٓ اٍ ‪ٛ signal pin‬ز٘ز‪ٝ ٠ٜ‬ر٘زوَ ٖٓ ‪ high‬اُ‪. low ٠‬‬
‫اٍ ‪ output pulse‬د‪ٓ ١‬ذر‪ٜ‬ب ثزٌ‪ٓ ٕٞ‬ب ث‪ 115us -18.5 ms ٖ٤‬اػزٔبداً ػِ‪ ٠‬أُغبكخ‬
‫اُز‪ ٢‬هطؼز‪ٜ‬ب أٓ‪ٞ‬اط اُق‪ٞ‬د ‪.‬‬
‫األصٓ٘خ د‪ٝ ٟ‬ؽٌَ أُ‪ٞ‬عخ ػشك٘‪ٜ‬ب ٖٓ اُذارب ؽ‪٤‬ذ ثزبػذ اُغ٘غ‪ٞ‬س ‪ٝ‬اُِ‪ ٠‬ك‪ٜ٤‬ب االؽٌبٍ‬
‫االر‪٤‬خ ‪ٝ‬اُِ‪ ٠‬ثز‪ٞ‬مؼ ٓجذأ اُؼَٔ‪.‬‬

‫اُضٖٓ ٖٓ ‪ٝ‬هذ ٓب اٍ ‪ً output signal‬بٗذ ‪ُ high‬ؾذ ٓب ثوذ ‪ ٞٛ low‬اُضٖٓ اُِ‪٠‬‬


‫اعزـشهز‪ ٚ‬أُ‪ٞ‬عخ ٖٓ أ‪ٓ ٍٝ‬ب هِؼذ ّ اُغ٘غ‪ٞ‬س ُؾذ ٓب خجطذ ك‪ ٠‬اُؼبئن ‪ٝ‬سعؼذ ربٗ‪٠‬‬
‫‪٣‬ؼ٘‪ ٠‬اُضٖٓ د‪ ٙ‬مؼق اُضٖٓ ٓب ث‪ٓ ٖ٤‬ب أُ‪ٞ‬عخ هِؼذ ‪ٝ‬خجطذ ك‪ ٠‬اُؼبئن ‪ ٖٓٝ‬اُغشػخ‬
‫‪ 340m/sec‬أهذس اؽغت أُغبكخ= ‪.0.5 *speed*time‬‬

‫‪54Page‬‬ ‫‪Technical Support 2015‬‬


‫‪Practical Considerations for Use Object Positioning‬‬
‫‪ _1‬الصّ اُؼبئن ‪ ٌٕٞ٣‬ػِ‪ ٠‬ثؼذ أهَ ٖٓ ‪ٓ 3‬زش الٕ أُغبكخ ُ‪ً ٞ‬بٗذ أًجش اُغ٘غ‪ٞ‬س ٓؼ‬
‫ث‪٤‬وذس ‪٣‬ؼِٔ‪ٝ ٚ‬هز‪ٜ‬ب ‪. detect‬‬
‫‪-2‬ال ٗنغ اُغ٘غ‪ٞ‬س ثضا‪٣ٝ‬خ ال رؼٌظ اُن‪ٞ‬ء اُغبهو ػِ‪ ٠‬اُؼبئن‪.‬‬
‫‪ _3‬اُؼبئن ال ‪ ٌٕٞ٣‬فـ‪٤‬ش عذا الٕ ‪ٝ‬هز‪ٜ‬ب اُغ٘غ‪ٞ‬س ٓؼ ‪٤ٛ‬ؾظ ث‪.ٚ٤‬‬

‫تطب‪ٞ‬ك ّظز‪ٝ‬ت اىؼَو باستخذاً اىَ‪ٞ‬نزٗمْتزٗىز‪:‬‬


‫‪ٞٛ _1‬فَ اٍ ‪ُ signal pin‬الُزشاع‪٤ٗٞ‬ي ثبُٔ‪ٌ٤‬ش‪ً٘ٝ‬زش‪ُٝ‬ش ‪ٝ pin‬اُِ‪ ٠‬ك‪ ٠‬اُ‪ٞ‬هذ د‪ٙ‬‬
‫ثزٌ‪ٝ o/p pin ٕٞ‬اهِغ ػِ‪ٜ٤‬ب ‪ ّ trigger pulse‬أُ‪ٌ٤‬ش‪ُٔ ٝ‬ذح ‪. t_out=5µsec‬‬
‫‪ _2‬أخشط ٖٓ أُ‪ٌ٤‬ش‪ٝ zero ٝ‬أخِ‪ ٠‬اٍ ‪ micro pin‬رؾزـَ ‪ input‬ػؾبٕ روذس رغزوجَ‬
‫‪ٝ signal‬اػَٔ ‪ delay‬ثٔوذاس ‪. t_hold_off=750 µsec‬‬
‫‪ _3‬اػَٔ ‪ُِ enable‬زب‪ٔ٣‬ش‪.‬‬
‫‪ _4‬أػَٔ ‪ُ for loop‬ؾذ ٓب اٍ ‪ signal‬رقجؼ ‪٣ fall down‬ؼ٘‪ ٠‬اُغ٘غ‪ٞ‬س اعزوجَ اٍ‬
‫‪.echo‬‬
‫‪ _5‬أؽغت اُضٖٓ ‪ٝ‬أُغبكخ ّ اُؼالهخ اُزبُ‪٤‬خ‬
‫;)‪time_elapsed= TMR0 + ( count*250‬‬

‫‪55Page‬‬ ‫‪Technical Support 2015‬‬


x = (0.034 * time_elapsed )/2 ;
.٠ٗ‫ رب‬output ‫ب‬ٜ‫ أسعؼ‬micro pin ٍ‫ ا‬ٝ ‫ٔش‬٣‫_ أهلَ اُزب‬6

:‫م٘د اىبزّاٍذ‬

56Page Technical Support 2015


57Page Technical Support 2015
58Page Technical Support 2015
‫ٍا ٕ٘ اىـ ‪ USB‬؟؟‬
‫‪ ٞٛ‬اخزقبس ‪ ٖٓ ٠ٛٝ Universal Serial Bus‬أؽ‪ٜ‬ش أُ٘بكز أُغزخذٓخ ُشثو ‪2‬‬
‫‪ٓ devices‬غ ثؼل ص‪ ٟ‬أٌُج‪ٞ٤‬رش ‪ٝ‬أُب‪ٝ‬ط أ‪ ٝ‬اٌُ‪٤‬ج‪ٞ‬سد ‪ٝ‬اُـ ‪ً٘ .mp3 player‬ب صٓبٕ‬
‫ث٘غزخذّ اُـ ‪ُٜ UART‬زا اُـشك ٌُٖ ؽبُ‪٤‬ب أفجؼ األؽ‪ٜ‬ش اُـ ‪ٝ usb‬ك‪ ٠‬ثؼل اُـ‬
‫‪ٓ laptops‬ل‪ٜ٤‬بػ ‪ً٘ٝ serial port‬ب ٓنطش‪ٗ ٖ٣‬غزخذّ ‪serial to USB converter‬‬
‫‪ٝ‬ك‪ ٠‬ثذا‪٣‬خ ً‪ٞ‬سط أُ‪ٌ٤‬ش‪ً٘ ٝ‬ب ث٘غزخذّ اُشثو ػٖ هش‪٣‬ن اُـ ‪ UART‬الٕ ثشٓغز‪ ٚ‬أع‪َٜ‬‬
‫ٌُٖ ك‪ٛ ٠‬زا أُغز‪ ٟٞ‬أُزوذّ ‪٘ٛ‬ؾشػ هش‪٣‬وخ اُشثو ػٖ هش‪٣‬ن اُـ ‪ USB‬الٕ عشػخ ٗوِخ‬
‫ُِج‪٤‬بٗبد رل‪ٞ‬م ثٔشاؽَ عشػخ اُغش‪٣‬بٍ ‪ٓ ..‬ؼ ًَ اٌُ٘زش‪ُٝ‬شص ثز‪ٞ‬كش اُشثو ػٖ هش‪٣‬ن اُـ‬
‫‪ ٌُٖ USB‬اٌُ٘زش‪ُٝ‬ش ‪ٞ٣ PIC18f4550 ٝPIC18F2550‬عذ ك‪ ٠‬اُـ ‪construction‬‬
‫اُخبؿ ث‪ٜ٤‬ب ‪ٞٓ USB‬د‪.ٍٞ٣‬‬

‫‪USB Speed‬‬
‫اُـ ‪ ,, three versions ٚ٤ُ USB bus specification‬األهذّ ‪٣ٝ USB1.0 ٠ٛٝ‬خزِق‬
‫ٓؼذٍ ٗوَ اُج‪٤‬بٗبد ث‪ ٚ‬ؽغت اُغشػ‪ ٚ‬أُغزخذٓخ‬
‫‪Low speed—1.5Mb/sec‬‬
‫‪Full speed—12Mb/sec‬‬

‫‪ٗٝ‬ضٍ االفذاس ‪ُٜ USB 2.0‬ب ٓؼذٍ ٗوَ ث‪٤‬بٗبد ‪High speed—480Mb/sec‬‬
‫‪ٝ‬االفذاس األعذد ‪ٓ ُٚ USB 3.0‬ؼذٍ ٗوَ ث‪٤‬بٗبد ‪.Super speed—5Gb/sec‬‬

‫‪59Page‬‬ ‫‪Technical Support 2015‬‬


‫أُ‪ٌ٤‬ش‪ًٗٞٝ‬زش‪ُٝ‬ش ‪٣ PIC18F2550/4550‬ذػْ اُغشػخ أُ٘خلنخ (‪( Mb/s 1.5‬‬
‫‪ٝ‬اُغشػخ اٌُبِٓخ )‪ُ (12 Mb/s‬زا كبٕ أ‪ ٍٝ‬ؽ‪٠‬ء ػِ‪٤‬ي إٔ رؼشك‪٤ً ٞٛ ٚ‬ل‪٤‬خ مجو اُغبػخ‬
‫‪clock‬أُطِ‪ٞ‬ثخ ُالرقبٍ ػجش ‪.USB‬‬

‫‪Oscillator Configurations‬‬
‫ػ٘ذٓب ٗغزخذّ أُ‪ٌ٤‬ش‪ًٗٞٝ‬زش‪ُٝ‬ش ُالرقبٍ ٖٓ خالٍ ‪٣ USB‬غت اعزخذاّ عبػخ ثزشدد ‪6‬‬
‫‪ُِMHz‬غشػخ أُ٘خلنخ أ‪ُِ MHz 48ٝ‬غشػ‪ ٚ‬اٌُبِٓخ الٕ ه‪ ْ٤‬اٌُش‪٣‬غزبالد ثزٌ‪ٕٞ‬‬
‫‪ٝ standard‬دا‪٣‬شح اُـ ‪ ٖٓ clock‬ع‪ٞ‬ا‪ ٙ‬ك‪ٜ٤‬ب ‪ prescaler‬ث‪٤‬خِ‪ ٠٘٤‬أهذس أهغْ اُزشدد ػِ‪٠‬‬
‫‪ 1‬أ‪ 2 ٝ‬أ‪ 4 ٝ‬أ‪ ٌُٖ . 8 ٝ‬أُؾٌِخ اٗ٘ب ُِغشػ‪ ٚ‬اٌُبِٓخ ‪٘ٛ‬غزخذّ ًش‪٣‬غزبٍ ثزشدد ‪MHz 48‬‬
‫‪ٝ‬د‪ ٙ‬رشدد ػبُ‪ ٠‬عذا ‪٣‬ؼ٘‪ ٌٕٞ٤ٛ ٠‬ك‪ noise ٠‬ػبُ‪٤‬خ ؿ‪٤‬ش اٗ‪ٜ‬ب ؿ‪٤‬ش ٓزبؽخ ث‪ٞ‬كشح ‪ٌِٓٝ‬لخ ‪,,‬‬
‫‪ُٝ‬ؾَ أُؾٌِخ د‪ ٟ‬هذٓذ ؽشًخ ٓ‪ٌ٤‬ش‪ٝ‬ؽ‪٤‬ت ػَٔ سائغ ‪ ٠ٛٝ‬دا‪٣‬شح ٓنبػق رشدد ( ػٖ‬
‫هش‪٣‬ن دائشح )‪ٝ (Phase Lock Loop (PLL‬اُز‪٣ ٟ‬ؼط‪ ٠٘٤‬اُزشدد أُطِ‪ٞ‬ة ‪ٝ‬أُغزخذّ‬
‫ُِغشػ‪ ٚ‬اٌُبِٓخ ػٖ هش‪٣‬ن ًش‪٣‬غزبُخ رزشا‪ٝ‬ػ ه‪ٔ٤‬ز‪ٜ‬ب ٖٓ ‪ MHz 4‬اُ‪ًٔ, 48 ٠‬ب رزْ‬
‫أُؼبُغخ إلُـبء اُن‪ٞ‬مبء داخِ‪ٜ‬ب ‪ُ .‬زُي ع‪ٞ‬ف ٗغزخذّ ‪ٛ‬ز‪ ٙ‬أُ‪٤‬ضح إلٗزبط اُغشػخ اٌُبِٓخ‬
‫ُالرقبٍ ػجش ‪. USB‬‬
‫ك‪ ٠‬اُؾٌَ اُز‪ ٟ‬ثؤعلَ ع٘الؽع اٗ٘ب ‪ٌ٘٘ٔ٣‬ب اعزخذاّ اُـ ‪ PLL option‬أ‪٘ٓ ٝ‬غزخذٓ‪ٞ‬ػ‬
‫‪ٗٝ‬غزخذّ ًش‪٣‬غزبُخ ٓجبؽشح ثبُزشدد أُطِ‪ٞ‬ة ‪ٝ‬االػذداد د‪٣ ٟ‬زْ مجط‪ٜ‬ب ٖٓ خالٍ‬
‫أُ‪ٌ٤‬ش‪ٝ‬ع‪٘ٛٝ ٠‬زٌِْ ػ٘‪ٜ‬ب ك‪ ٠‬اُـ ‪ section‬اُوبدّ‪.‬‬
‫ك‪ ٠‬ؽبُخ اعزخذاّ اُـ ‪ٗ PLL option‬الؽع إ رشدد اٌُش‪٣‬غزبُخ ث‪٤‬ذخَ ػِ‪prescaler ٠‬‬
‫(‪ )1,2,3,4,5,6,10,12‬كؼِ‪ ٠‬كشك اٗ٘ب اعزخذٓ٘ب ًش‪٣‬غزبُخ ‪٘ٛ 4MHZ‬خزبس‬
‫‪ prescaler‬ه‪ٔ٤‬ز‪ ٚ‬ث‪ٞ‬اؽذ ‪٣‬ؼ٘‪٤ٛ (PLLDIV = 000) ٠‬خشط ٖٓ اُـ ‪ٝ MUX‬هز‪ٜ‬ب رشدد‬
‫ه‪ٔ٤‬ز‪٣ 4MHZ ٚ‬ذخَ ػِ‪ٓ ٠‬نبػق اُزشدد ك‪٘٤‬زظ ثبُلؼَ ‪ٝ MHz 96‬ثؼذ اُوغٔخ ػِ‪2 ٠‬‬
‫رٌ‪ٝ ,,, MHz48 ٕٞ‬ارا اعزخذٓ٘ب ًش‪٣‬غزبٍ ‪MHz 20‬ػ٘ذئز ‪٣‬غت إٔ ‪ ٌٕٞ٣‬أُؼبَٓ‬
‫‪prescaler‬ثخٔغخ ‪ٌٛٝ‬زا ‪ .‬أؽ٘ب ًذ‪ ٙ‬ارٌِٔ٘ب ػٖ اُـ ‪ , USB clock‬ثبُ٘غجخ ُِـ ‪CPU‬‬

‫‪61Page‬‬ ‫‪Technical Support 2015‬‬


‫‪ ٌٖٔ٣ clock‬اعزخذاّ آب خشط ‪ PLL‬أ‪ٓ ٌٖٔ٣ ٝ‬جبؽشح اعزخذاّ خشط اٌُش‪٣‬غزبٍ ًٔب ك‪٠‬‬
‫اُشعٔخ‪ .‬ك‪ ٠‬ؽبُخ اعزخذاّ ًش‪٣‬غزبُخ ‪٤ٓ 20‬غب ‪ٛ‬شرض ‪٘ٛ‬غزخذّ ‪ٝ‬هز‪ٜ‬ب ‪PLL prescaler‬‬
‫ثبُو‪ٔ٤‬خ ‪ . 5‬أُ‪ٌ٤‬ش‪ًٗٞٝ‬زش‪ُٝ‬ش ُ‪ٛ ٞ‬ؾـِخ ػِ‪ MHz 20 ٠‬أُؼبَٓ ‪ٌٕٞ٤ٛ postscaler‬‬
‫ث‪ٞ‬اؽذ ]‪. [CPUDIV = 00‬‬

‫ٍيض٘ظت ‪:‬‬
‫اُؾ‪٤‬ئبٕ األًضش أ‪٤ٔٛ‬خ ‪ٝ‬اُِزإ ‪٣‬غت إٔ ‪ٌٗٞ٣‬ب فؾ‪٤‬ؾبٕ رٔبٓب ‪ٔٛ‬ب ‪ :‬اػذاداد‬
‫أُ‪ٌ٤‬ش‪ً٘ٝ‬زش‪ُٝ‬ش ‪ٝ configuration‬اُـ ‪ USB device descriptor‬ؽز‪ً ُٞ ٠‬بٕ ‪٘ٛ‬بى‬
‫ؽ‪٠‬ء فـ‪٤‬ش عذا ؿ‪٤‬ش فؾ‪٤‬ؼ ؽ‪ُٜٔٞ‬ب كبٕ االرقبٍ ُٖ ‪٣‬زؾون ‪.‬‬

‫‪Microcontroller Configuration‬‬
‫‪61Page‬‬ ‫‪Technical Support 2015‬‬
‫هجَ ثشٓغخ أُ‪ٌ٤‬ش‪ًٗٞٝ‬زش‪ُٝ‬ش رؤًذ إٔ اػذادار‪ ٚ‬فؾ‪٤‬ؾخ ‪ .‬هْ ثبٗؾبء ثشٗبٓظ‬
‫ُِٔ‪ٌ٤‬ش‪ًٗٞٝ‬زش‪ُٝ‬ش ‪ P18F4550 .‬ار‪ٛ‬ت اُ‪ ٠‬اُوبئٔخ‪Project→Edit Project ,:‬‬

‫ع‪ٞ‬ف رظ‪ٜ‬ش ُي رِي اُ٘بكزح‪:‬‬

‫‪62Page‬‬ ‫‪Technical Support 2015‬‬


َٓ‫ كبٕ أُؼب‬MHz 20 ٍ‫غزب‬٣‫ إلٗ٘ب ٗغزخذّ ًش‬PLL Prescaler Selection ‫٘خزبس‬ٛ
.5 ٌٕٞ٣ ٕ‫غت أ‬٣

. ‫اؽذ ًٔب رًشٗب‬ُٞ‫ ٗخزبس ا‬: System Clock Postscaler Selection

PLL ‫ ٗخزبس‬: USB Clock Selection

63Page Technical Support 2015


‫‪ٗ : Oscillator Selection‬خزبس )‪HS (High Speed‬‬

‫ٓ٘ظْ اُغ‪ٜ‬ذ ‪USB voltage regulator‬‬


‫‪ٞ٣‬عذ مٖٔ ث٘بء أُ‪ٌ٤‬ش‪ًٗٞٝ‬زش‪ُٝ‬ش ٓ٘ظْ ع‪ٜ‬ذ ‪٣ٝ‬غت رٌٔ‪:ٚ٘٤‬‬

‫أُ‪ٞ‬م‪ٞ‬ع إٔ ٓغز‪ ٟٞ‬اُغ‪ٜ‬ذ ُخو ث‪٤‬بٗبد )‪ٗٝ volt 3.3 ٞٛ USB (D+ and D-‬ظشا‬
‫ألٕ أُ‪ٌ٤‬ش‪ًٗٞٝ‬زش‪ُٝ‬ش ‪٣‬ؼَٔ ػ٘ذ ‪ُ volt 5‬زُي ‪ٞ٣‬عذ ٓ٘ظْ اُغ‪ٜ‬ذ ‪ v 3.3‬اُخبؿ ثؼَٔ‬
‫‪٣ USB‬غت ػِ‪٤‬ي رٌٔ‪.) enable ( ٚ٘٤‬‬
‫‪ٞ٣‬عذ هشف ك‪ ٠‬اُـ ‪ VUSB (pin14) ٞٛٝ pic18f4550‬ارا ً٘ذ ال رش‪٣‬ذ اعزخذاّ‬
‫ٓ٘ظْ اُغ‪ٜ‬ذ ‪ v 3.3‬اُذاخِ‪ٌ٘ٔ٣ , ٠‬ي اُزـز‪٣‬خ ثٔقذس ‪ v 3.3‬ػِ‪ٛ ٠‬زا اُطشف ‪ٝ .‬ارا‬
‫اعزخذٓذ أُ٘ظْ اُذاخِ‪ ٠‬ػ٘ذئز ‪٣‬زْ امبكخ ٌٓضق ‪nF 220‬ػِ‪ٛ ٠‬زا اُطشف ثبُ٘غجخ‬
‫ُألسم‪ُ ٠‬ؼَٔ اعزوشاس ُِٔقذس اُذاخِ‪. ٠‬‬

‫‪64Page‬‬ ‫‪Technical Support 2015‬‬


‫‪USB Descriptor‬‬
‫ػ٘ذٓب ‪٣‬زْ اُؾبم ‪ usb device‬عذ‪٣‬ذ ُِـ ‪ ,, USB bus‬اُـ ‪ USB HOST‬ث‪٤‬ؾزبط ‪٣‬ؼشف‬
‫ثؼل أُؼِ‪ٓٞ‬بد ػٖ اُـ ‪ device‬أُِؾن ‪.‬ك‪٤‬غزخذّ أص٘بء ػِٔ‪٤‬خ رؼش‪٣‬ق اُـ ‪peripheral‬‬
‫‪ device‬ػِ‪ ٠‬اُـ ‪ٓ host‬ضَ ػِٔ‪٤‬خ رؼش‪٣‬ق أُ‪ٌ٤‬ش‪ً٘ٝ‬زش‪ُٝ‬ش ػِ‪ ٠‬اُـ ‪ ُٞ PC‬اُغ‪ٜ‬بص‬
‫ٓزؼشكؼ ػِ‪ ٠‬اُـ ‪ PC‬ػِٔ‪٤‬خ اُشثو ٓؼ ‪ٛ‬زْ ‪٤ٛٝ‬زجؼذ سعبُخ خطؤ‪ .‬اُغجت إ األع‪ٜ‬ضح اُِ‪٠‬‬
‫ث‪٤‬زْ سثط‪ٜ‬ب ػٖ هش‪٣‬ن اُـ ‪ USB‬روغ رؾذ ثش‪ٝ‬ر‪٣ ًٍٞٞ‬غٔ‪HID (Human ٠‬‬
‫)‪ٝ Interface Device‬ك‪ٗ ٠‬ظبّ ‪٘٣ٝ‬ذ‪ٝ‬ص ‪٣‬زْ رغط‪٤‬ت ‪ driver‬خبؿ ثبألع‪ٜ‬ضح اُـ ‪HID‬‬
‫كبرا ًبٕ ع‪ٜ‬بصى ‪٣‬زقَ ٓغ ٗظبّ اُزؾـ‪ً َ٤‬غ‪ٜ‬بص ‪ HID‬ػ٘ذئز ُٖ رؾزبط رغط‪٤‬ت أ‪ٟ‬‬
‫دسا‪٣‬لش ُغ‪ٜ‬بصى ٓضَ األع‪ٜ‬ضح اُِ‪ ٠‬ثززؾـَ ػٖ هش‪٣‬ن االٗغبٕ ص‪ ٟ‬اُـ ‪Keyboards‬‬
‫‪ .joysticks , ,mouse‬ارا ًبٕ ع‪ٜ‬بصى ال ‪٣‬ؼَٔ مٖٔ كئخ ‪ HID‬الصّ ٗؼَٔ ‪include‬‬
‫ِٓق ٓقذس ُِ‪ٞ‬فق ‪ٝ‬اُز‪٣ ٟ‬ؾز‪ ٟٞ‬ػِ‪ ٠‬سهْ اُ‪٣ٜٞ‬خ ‪ٝ ID‬اعْ اُجبئغ ‪ (VID),‬سهْ اُ‪٣ٜٞ‬خ‬
‫‪ٝ‬اعْ أُ٘زظ ‪ٝ (PID),‬ه‪ ٍٞ‬اُزوش‪٣‬ش( ‪ٝ ) Report Length‬أُؼِ‪ٓٞ‬بد األخش‪ ٟ‬راد‬
‫اُقِخ ‪ ,,‬أُ‪ٌ٤‬ش‪ٝ‬ع‪ ٠‬ث‪٤‬و‪ ّٞ‬ثبٗؾبء اُـ ‪ ,, descriptor‬ؿ‪٤‬ش أٗ‪ٝ ٚ‬كش ٌٓزجخ عب‪ٛ‬ضح ثزغ‪َٜ‬‬
‫ػِٔ‪٤‬خ سثو أ‪ٓ host device ٟ‬غ ‪ slave device‬ػِ‪ ٠‬اُـ ‪.USB bus‬‬

‫‪65Page‬‬ ‫‪Technical Support 2015‬‬


mikroC Pro Descriptor Tool
USB HID Terminal ‫ ٗخزبس‬Tools ‫ ٖٓ هبئٔخ‬Descriptor ‫الٗؾبء اُـ‬

:‫زح اُ٘بكزح‬ٛ ‫ش‬ٜ‫رظ‬

66Page Technical Support 2015


‫ًٔب ٗش‪ ٟ‬إ اُـ ‪٣ Descriptor‬ؾذد ثؼل خقبئـ اُـ ‪ٓ device‬ضَ ‪:‬‬
‫‪ Report length‬أ‪ ٝ‬اُـ ‪٣ : buffer size‬ؼجش ػٖ ؽغْ اُشعبُخ‪.‬‬
‫اُـ ‪ ٌٕٞ٣ٝ vendor ID & product ID‬ث٘ظبّ اُـ ‪.hex‬‬
‫اُـ ‪ : product name‬اعْ ُِـ ‪ device‬ع‪٤‬ظ‪ٜ‬ش ك‪ ٠‬اُـ ‪. device manger‬‬
‫اُـ ‪ :bus powered‬خبف‪٤‬خ رؾذد ارا ًبٕ اٍ‪ device‬ع‪٤‬بخز ‪ ٖٓ power‬اُغ‪ٜ‬بص ػٖ‬
‫هش‪٣‬ن ٓ٘لز اُـ ‪ usb‬أّ ال‪ .‬ارا ًبٗذ خبف‪٤‬خ اُـ ‪ٛ bus powered=true‬زا ‪٣‬ؼ٘‪ ٠‬إ‬
‫اُذائشح ال رؾزبط اُ‪ٓ ٠‬قذس ‪ power‬خبسع‪ٝ ٠‬ك‪ٛ ٠‬زح اُؾبُخ ‪٣‬زْ رؾذ‪٣‬ذ ه‪ٔ٤‬خ ر‪٤‬بس اُزـز‪٣‬خ‪.‬‬
‫أٓب ُ‪ً ٞ‬بٗذ ‪ٛ false‬زا ‪٣‬ؼ٘‪ ٠‬إ اُذائشح رؾزبط اُ‪ٓ ٠‬قذس ‪ power‬خبسع‪.٠‬‬
‫‪ٌ٘ٔ٣‬ي رـ‪٤‬ش اُـ ‪ٝ product name‬اُـ ‪ٝ vendor name‬رشى اُجبه‪ًٔ ٠‬ب ‪ ٞٛ‬صْ ٗنـو‬
‫ػِ‪ٗٝ Save Descriptor ٠‬ؾلع اُـِٔق ك‪ ٠‬أٌُبٕ اُِ‪ ٠‬اٗؾبئ٘ب ك‪ٓ ٚ٤‬ؾش‪ٝ‬ػ٘ب ‪ ,,‬االعْ‬
‫االكزشام‪ُِِٔ ٠‬ق ‪ٌ٘ٔ٣ ٌُٖ USBdsc.c ٞٛ‬ي اػبدح رغٔ‪٤‬ز‪.ٚ‬‬

‫‪67Page‬‬ ‫‪Technical Support 2015‬‬


Project ‫ت اُـ‬٣ٞ‫ن رج‬٣‫ع ػٖ هش‬ٝ‫ ُِِٔق ٓغ أُؾش‬include َٔ‫ رْ ػ‬ٚٗ‫رؤًذ ا‬
Project ‫ت‬٣ٞ‫م اُزج‬ٞ‫ اٗوش ك‬٠‫ع‬ٝ‫ٌش‬٤ُٔ‫ٖٔ ٖٓ ؽبؽخ ا‬٣‫ اُغبٗت األ‬٠ِ‫ ػ‬,, Manager
‫ش‬ٜ‫ظ‬٣ ‫ رؤًذ ٖٓ إٔ أُِق‬,, Project Manager‫ أخزبس‬view ‫ ٖٓ هبئٔخ‬ٝ‫ أ‬Manager
‫ ٓغِذ‬٠ِ‫ط ػ‬ٝ‫ٖٔ ُِٔب‬٣‫ش اٗوش ثبُضس األ‬ٜ‫ظ‬٣ ُْ ‫ ارا‬Sources folder َ‫أعل‬
‫ اُخبؿ ثي‬Descriptor ‫ صْ اخزبس أُِق‬Add File to Project ٠ِ‫اٗوش ػ‬ٝSources
.

68Page Technical Support 2015


mikroC Language USB Bus Library Functions
٠‫ثبه‬ٝ ‫آش أُغزخذٓخ‬ٝ‫ْ األ‬ٛ‫٘ؼشك أ‬ٛ ,, USB ‫ خبفخ اُـ‬٠‫ع‬ٝ‫ٌش‬٤ُٔ‫ ا‬٠‫عذ ٌٓزجخ ك‬ٞ٣
.٠‫ع‬ٝ‫ٌش‬٤ُٔ‫ٌٖٔ ٓشاعؼخ اُـٌٔزجخ ٖٓ ا‬٣ ‫آش‬ٝ‫األ‬

Library Routines
 HID_Enable
 HID_Read
 HID_Write
 HID_Disable
 USB_Interrupt_Proc
HID_Enable
Description Enables USB HID communication.
Parameters
٠‫ رؤر‬٠‫ اُز‬USB ‫بٗبد‬٤‫ذ ؽلع ث‬٣‫ش رش‬٤‫كخ ؽ‬ٞ‫ أُقل‬:ReadBuffer

69Page Technical Support 2015


.‫رش‬ٞ٤‫ٓج‬ٌُٞ‫ٖٓ ا‬
٠ُ‫ب ا‬ِٜ‫ف رشع‬ٞ‫ ع‬٠‫بٗبد اُز‬٤‫ذ إٔ رخضٕ اُج‬٣‫ش رش‬٤‫ؽ‬:WriteBuffer
. ‫رش‬ٞ٤‫ٓج‬ٌُٞ‫ا‬

Example HID_Enable(&readbuff,&writebuff);
Notes ‫ ٖٓ أٌُزجخ‬ٟ‫اٍ األخش‬ٝ‫ اُذاُخ هجَ اعزخذاّ اُذ‬ٙ‫ز‬ٛ ‫غت اعزذػبء‬٣
.USB HID

HID_Read
Description Read Buffer ‫كخ‬ٞ‫ أُقل‬٠‫ب ك‬ٜ٘٣‫رخض‬ٝ host ‫اعزوجبٍ اُشعبُخ ٖٓ اُـ‬

Returns If the data reading has failed, the function returns 0.


Otherwise, it returns number of characters received
from the host.

Example // retry until success


while(!HID_Read());

HID_Write
Description Function sends data from Write Buffer (writebuff) to
host.
Parameters  writebuff: Write Buffer, same parameter as
used in initialization; see HID_Enable.
 len: specifies a length of the data to be
transmitted.
71Page Technical Support 2015
Returns If the data transmitting has failed, the function returns
0. Otherwise, it returns number of transmitted bytes.

Example // retry until success


while(!HID_Write(&writebuff,64));

HID_Disable
Prototype void HID_Disable(void);
Description Disables USB HID communication.
Example HID_Disable();

USB_Interrupt_Proc
Description This routine is used for servicing various USB bus
events. Should be called inside USB interrupt routine.

Example void interrupt() {


USB_Interrupt_Proc();
}

Pin-out of USB connectors

71Page Technical Support 2015


:ٌَ‫ ًٔب ثبُؾ‬D_ ‫ ثـ‬RC4 ٝ D+ ‫ ثـ‬RC5 َ٤‫ف‬ٞ‫ّ ثز‬ٞ‫ٗو‬

72Page Technical Support 2015


‫اىن٘د‪:‬‬
‫ٗجذأ ثزؼش‪٣‬ق ٓزـ‪٤‬شاد ٖٓ اُ٘‪ٞ‬ع ‪ٝ unsigned char‬اُز‪ ٠‬عزٌ‪ ٕٞ‬ثٔضبثخ ٓخبصٕ ٓئهزخ‬
‫‪ُِbuffers‬وشاءح ‪ٝ‬اٌُزبثخ ‪ٛ.‬ز‪ ٙ‬أُزـ‪٤‬شاد ‪ٝ‬كوب ُِذارب ؽ‪٤‬ذ ‪٣‬غت إٔ رٌ‪ ٕٞ‬ك‪ ٠‬اُزاًشح‬
‫‪ ,USB RAM‬ؽ‪٤‬ش إٔ أُ‪ٌ٤‬ش‪ًٗٞٝ‬زش‪ُٝ‬ش ث‪ 1 Kbyte USB RAM ٚ‬رجذأ ٖٓ ‪400h‬‬
‫اُ‪ 7FFh ٠‬ك‪ ٠‬اٌُ٘زش‪ُٝ‬ش اُِ‪٘ٛ ٠‬غزخذٓ‪.ٚ‬‬

‫ٖٓ اُؼ٘‪ٞ‬إ ‪ 400h‬اُ‪ ٠‬اُؼ٘‪ٞ‬إ ‪ ٖٓ 4FFh‬أعَ اُـ ‪ُ ٝ,, descriptor‬ذ‪٘٣‬ب كؼِ‪٤‬ب ٖٓ‬
‫اُؼ٘‪ٞ‬إ ‪ 500h‬اُ‪ ٠‬اُؼ٘‪ٞ‬إ ‪ُ 7FFh‬زخض‪ ٖ٣‬اُج‪٤‬بٗبد ‪ُ .‬زُي ع‪ٞ‬ف ‪٣‬زْ اػالٕ أُزـ‪٤‬شإ ًٔب‬
‫‪:٠ِ٣‬‬

‫‪73Page‬‬ ‫‪Technical Support 2015‬‬


‫‪٘ٛ Absolute‬ب ػجبسح ػٖ ‪٣ Directive‬ؾذد ػ٘‪ٞ‬إ اُجذا‪٣‬خ ك‪ ٠‬راًشح ‪ُِٔ RAM‬زـ‪٤‬ش أ‪ٝ‬‬
‫ػ٘‪ٞ‬إ اُجذا‪٣‬خ ك‪ ٠‬راًشح ‪ُِ ROM‬ضبثذ‪ .‬اُؼ٘‪ٞ‬إ ‪ُ 0x500‬جذا‪٣‬خ أُخضٕ أُئهذ ُِوشاءح‬
‫‪ٝread buffer‬اُؼ٘‪ٞ‬إ ‪ُ 0x540‬جذا‪٣‬خ أُخضٕ أُئهذ ٌُِزبثخ‪. write buffer‬‬
‫ٍيض٘ظت ‪:‬‬
‫اُـ ‪ RAM area‬أُغزخذٓخ ُِـ ‪ data buffer‬رخزِق ؽغت ًَ ً٘زش‪ُٝ‬ش‪:‬‬

‫اىتطب‪ٞ‬ك األٗه ‪:‬‬


‫هشاءح اُذارب اُِ‪ ٠‬عب‪٣‬خ ٖٓ اُـ ‪ HID Device‬أُ‪ٞ‬فَ ثبُـ ‪ٝ USB‬اسعؼ‪ٜ‬ب ٓشح أخش‪.ٟ‬‬

‫‪74Page‬‬ ‫‪Technical Support 2015‬‬


‫اىن٘د‪:‬‬

‫اىذائزة ‪:‬‬
‫األ‪ٞٛ ٍٝ‬فَ اُذا‪٣‬شح ػِ‪ ٠‬ثش‪ٝ‬رظ ‪ُِٝ‬زؼبَٓ ٓغ اُـ ‪ USB‬ػِ‪ ٠‬ثش‪ٝ‬رظ الثذ ٖٓ ر٘ض‪َ٣‬‬
‫ثشٗبٓظ ‪ٝ virtual USB driver‬أُ‪ٞ‬ع‪ٞ‬د مٖٔ ثشٗبٓظ ثش‪ٝ‬رظ ‪٘ٛٝ ,,‬غزخذٓخ ػؾبٕ‬
‫ٗ‪ ْٛٞ‬اُغ‪ٜ‬بص إ دا‪٣‬شح اُجش‪ٝ‬رظ ٓزقِخ ث‪ ٚ‬كؼِ‪٤‬ب ‪.‬‬

‫‪75Page‬‬ ‫‪Technical Support 2015‬‬


‫ثؼذ اٗز‪ٜ‬بء اُزغط‪٤‬ت رظ‪ٜ‬ش ػالٓخ فؼ ػِ‪ ًَ ٠‬االخز‪٤‬بساد اُِ‪ ٠‬ك‪ ٠‬اُق‪ٞ‬سح ‪ٝ‬ك‪ ٠‬عبُخ‬
‫‪ٛ‬زظ‪ٜ‬ش ‪ٛ‬زخجشٗ‪ ٠‬إ اُزغط‪٤‬ت رْ ث٘غبػ‪.‬‬

‫‪76Page‬‬ ‫‪Technical Support 2015‬‬


:‫ بزٗتس‬ٚ‫زة ػي‬ٝ‫اىذا‬

٠‫ ك‬devices ٍ‫ هبئٔخ ا‬٠‫ذ ارؼشف ك‬٣‫ عذ‬device ٠‫٘الؽع إ ك‬ٛ ‫ ُِذائشح‬run َٔ‫ػ٘ذ ػ‬
control panel ‫اُـ‬

77Page Technical Support 2015


‫ُؼِٔ‪٤‬خ اُوشاءح ‪ٝ‬اٌُزبثخ ٖٓ اُـ ‪ HID terminal‬ك‪ ٠‬أُ‪ٌ٤‬ش‪ٝ‬ع‪ٌ٘ٛ ٠‬زت اُذارب اُِ‪ٛ ٠‬ززجؼذ‬
‫‪ٗٝ‬وش‪ٛ‬ب ًٔبٕ‬

‫‪78Page‬‬ ‫‪Technical Support 2015‬‬


79Page Technical Support 2015
‫ك‪ً٘ Level 1 ٢‬ب ث٘غزخذّ ‪ UART‬ك‪ ٠‬سثو اع‪ٜ‬ض‪ ٙ‬أُ‪ٌ٤‬ش‪ً٘ٝ‬زش‪ُٝ‬ش ثجؼل‬
‫‪ٝ‬أُ‪ٌ٤‬ش‪ً٘ٝ‬زش‪ُٝ‬ش ثؤع‪ٜ‬ض‪ ٙ‬أٌُج‪ٞ٤‬رش‪ ,‬ثظ اٍ ‪ً UART‬بٗذ ٓؾٌِز‪ ٚ‬اٗ‪ ٚ‬ثطئ ٗغج‪٤‬ب ‪ًٔٝ‬بٕ‬
‫ٌٓ٘ؼ ث‪٤‬غٔؼ ُ‪٤‬ب اٗ‪ ٢‬ا‪ٝ‬فَ اًزش ٖٓ ار٘‪ٌ٤ٓ ٖ٤‬ش‪ً٘ٝ‬زش‪ُٝ‬ش ثجؼل –اال ُ‪ ٞ‬ص‪ٝ‬دد ‪ٛ‬بسد‪٣ٝ‬ش‬
‫خبسع‪ٝ ٢‬د‪ ٙ‬هجؼب ًبٕ ث‪ٌِ٤‬ل٘‪ ٢‬كِ‪ٞ‬ط ص‪٣‬بد‪. ٙ‬‬
‫‪ٝ‬ػؾبٕ أُؾبًَ د‪ ١‬هِغ ًزا ‪ protocol‬ربٗ‪٘ٛ ٢‬زٌِْ ‪٘ٛ‬ب ػِ‪ ٠‬ار٘‪ْٜ٘ٓ ٖ٤‬‬
‫‪SPI -1‬‬
‫‪I²C -2‬‬

‫‪Serial Peripheral Interface‬‬


‫)‪(SPI‬‬

‫ى‪ْٕ ٔٞ‬ستخذً اه ‪SPI‬‬


‫ا‪ٝ‬ال ‪:‬اٍ‪ SPI‬اًضش عشػ‪ ٚ‬ك‪ٗ ٠‬وَ اُج‪٤‬بٗبد ٖٓ اٍ‪UART‬‬
‫صبٗ‪٤‬ب ‪:‬اٍ‪ SPI‬هبدس ػِ‪ ٠‬سثو اًضش ٖٓ ٓ‪ٌ٤‬ش‪ً٘ٝ‬زش‪ُٝ‬ش ٓؼب‬

‫‪81Page‬‬ ‫‪Technical Support 2015‬‬


‫ط‪ٞ‬ب اه ‪ spi‬شغاه اسا‪: ٙ‬‬
‫ػِؾبٕ ٗل‪ ْٜ‬اٍ ‪ spi‬ؽـبٍ اصا‪ ٟ‬خِ‪ٗٞ‬ب ٗؾ‪ٞ‬ف اٍ ‪ UART‬ؽـبٍ اصا‪ٟ‬‬

‫‪ ٞٛ‬ػجبسح ػٖ ‪ shift register‬ث‪٤‬زؾو ك‪ ٚ٤‬اُذارب اُِ‪ ٠‬اؽ٘ب ػب‪ٝ‬ص‪ٗ ٖ٣‬جؼز‪ٜ‬ب ثؼذ ًذ‪ ٙ‬اٍ‬
‫‪ shift register‬د‪ ٙ‬ث‪٤‬ؾلذ اُذارب ث٘بء ػِ‪ ٠‬اٍ ‪ CLK‬اُِ‪ ٠‬ث٘ؾذد‪ٛ‬ب ك‪ ٠‬اٍ ‪baud rate‬‬
‫د‪ ٙ‬ك‪ ٠‬اُزشاٗغ‪ٔ٤‬زش‬
‫ك‪ٗ ٠‬لظ اُ‪ٞ‬هذ اٍ ‪ pin‬ثزبػذ اٍ ‪ٓ RX‬ز‪ٞ‬فِخ ة ‪ shift register‬اُذارب اُِ‪ ٠‬هِؼذ‬
‫ٖٓ اٍ ‪ TX‬ثزذخَ ػِ‪ ٠‬اٍ ‪ RX‬اُِ‪ ٠‬ث‪٤‬ؾلذ اُذارب اُِ‪ ٠‬دخالُ‪ٜ‬ب ث٘لظ اٍ ‪baud rate‬‬
‫‪ٝ‬ثٌذ‪ ٙ‬اُذارب ثزز٘وَ ٖٓ اٍ ‪ TX‬اُ‪ ٠‬اٍ ‪RX‬‬

‫ط‪ٞ‬ب ا‪ ٔٝ‬اىي‪ٝ ٚ‬خي‪ ٚ‬اه ‪ٍ UART‬ش سز‪ٝ‬غ ٍا ّؼي‪ ٚ‬اه ‪ baud rate‬؟!‬
‫أُؾٌِخ اٗ٘ب ث٘ؼزٔذ إ اٍ ‪٘٤ٛ receiver‬زظ ٗلظ اُزشدد اُِ‪ ٠‬ث‪٤‬ؾلذ ث‪ ٚ٤‬اٍ ‪transmitter‬‬
‫اُذارب ثظ د‪ ٙ‬ث‪ ٌٕٞ٤‬ك‪ٝ error ٚ٤‬اٍ ‪ error‬د‪ ٙ‬ث‪٤‬ض‪٣‬ذ ًَ آب ص‪ٝ‬دٗب اُزشدد ‪.‬‬

‫‪81Page‬‬ ‫‪Technical Support 2015‬‬


٠ُِ‫ ا‬ٙ‫د‬ٝ ‫ا اُذارب ث٘لظ اُزشدد‬ٞ‫ؾلز‬٤‫ ث‬RX ٍ‫ا‬ٝ TX ٍ‫٘ب ا‬٤ِ‫ خ‬ُٞ ‫ب‬ِٜ‫ ٌٖٓٔ ٗؾ‬ٟ‫أُؾٌِخ د‬
SDI(serial data ٍ‫ ا‬ٝ SDO(serial data output) ٍ‫ ا‬ٚ٤‫ اٗب ثوب ك‬spi ٍ‫ ا‬ِٚٔ‫ػ‬
CLK(clock) ٝ input )

ٍ‫ ثزبع ا‬shift register ٍ‫ ا‬٠‫ ك‬٠ُِ‫ اُذارب ا‬8 clk ‫ ثؼذ‬ٙ‫ أُضبٍ د‬٠‫ٖ ك‬٤‫ل‬٣‫ ٓب اؽ٘ب ؽب‬ٟ‫ص‬
‫ اٗ٘ب ٗوذس ٗجؼذ‬ٙ‫ ًذ‬٠٘‫اُؼٌظ ٓؼ‬ٝ RX ٍ‫ ثزبع ا‬shift register ٍ‫ ا‬٠‫دح ك‬ٞ‫ع‬ٞٓ ‫ ثوذ‬TX
. ‫هذ‬ُٞ‫ ٗلظ ا‬٠‫ٗغزوجَ ك‬ٝ

82Page Technical Support 2015


! ْٔٔٔٔٔٔٔٔٔٔٔٓ‫ا‬
‫ٖ ؟‬٤٘‫ال االر‬ٝ RX ٍ‫ال ا‬ٝ TX ٍ‫ب ا‬ٜ‫٘زغ‬٤‫ ث‬٠ُِ‫ٖ ا‬٤ٓ ٟ‫برش‬٣ ٟ‫ د‬CLK ٍ‫ت ا‬٤‫ه‬
CLK ٍ‫٘زظ ا‬٤‫ ث‬٠ُِ‫ ا‬ٞٛ ٚٗ‫ ال‬ٙ‫د‬ٝ master ٍ‫ ا‬ٙٞٔ‫غ‬٤‫ ث‬CLK ٍ‫ٍ ػٖ اٗزبط ا‬ٞ‫أُغئ‬
٠ُِ‫ ا‬ٞٛ master ٍ‫ٖ ثب‬٤ِ‫ف‬ٞ‫) ٓز‬slaves( ٚ٤ٗ‫ُشص رب‬ٝ‫ً٘زش‬ٝ‫ٌش‬٤ٓ ٖٓ ‫ اًزش‬ٚ٤‫ ك‬ُٞ ٕ‫ًٔب‬ٝ
slave select pin (ss) ٍ‫ن ا‬٣‫ْ ػٖ هش‬ٜ٤‫ٖ ك‬٤ٓ ٖٓ ‫غزوجَ دارب‬٤ٛ ٝ‫جؼذ ا‬٤ٛ ‫ؾذد‬٤‫ث‬
spi ٍ‫ ا‬٠‫دح ك‬ٞ‫ع‬ُٞٔ‫ا‬
ٕ‫ًٔب‬ٝ SDI , SDO ,CLK ‫ن‬٣‫ ػٖ هش‬master ٍ‫فِخ ثب‬ٞ‫ٕ ٓز‬ٌٞ‫ز‬ٛ devices ٍ‫ًَ ا‬
ٍ‫فَ ة ا‬ٞ‫ ثزز‬master ٍ‫خ) ٖٓ ا‬٣‫ ػبد‬pin ٟ‫ (ا‬control pin ٚ٤ُ ٌٕٞ٤ٛ device ًَ
slave select pin (ss)
ٍ‫ ا‬٠ِ‫خ‬٤‫ْ ث‬ٜ٤‫ ك‬slave ٖٓ ‫جؼذ دارب‬٣ ٝ‫غزوجَ ا‬٣ ‫ص‬ٞ‫ؼ‬٣ ‫ آب‬ٝ‫ٌش‬٤ُٔ‫ا‬ٝ slave ٍ‫ ا‬ٟ ‫دح‬ٞ‫ع‬ُٞٔ‫ا‬
83Page Technical Support 2015
‫‪ss = low‬‬
‫ًذ‪ ٙ‬أُ‪ٌ٤‬ش‪ ٝ‬ث‪ٓ ٌٕٞ٤‬زقَ ٓغ اٍ ‪ slave‬د‪٣ ٙ‬جؼذ ا‪٣ ٝ‬غزوجَ ػبد‪ ٟ‬هجؼب ٓ‪٘٤‬لؼؼ ‪ٌٕٞ٣‬‬
‫ٓزقَ ٓغ اٍ ‪ًِٜ slaves‬ب ك‪ٗ ٠‬لظ اُ‪ٞ‬هذ ‪.‬‬

‫ثالػ ًالّ ًز‪٤‬ش خِ‪ٗٞ‬ب ٗؼَٔ ا‪ ٍٝ‬ثشٗبٓظ ػِؾبٕ ٗؾ‪ٞ‬ف اٌُالّ اُِ‪ ٠‬ك‪ٞ‬م د‪ ٙ‬ؽـبٍ اصا‪ٟ‬‬
‫ثظ ك‪ ٠‬اال‪ ٍٝ‬الصّ ٗؼشف اعٔبء اٍ ‪ registers‬اُِ‪ ٠‬ثززؾٌْ ك‪ ٠‬ػَٔ اٍ ‪. spi‬‬

‫اه ‪ spi‬ى‪ ٔٞ‬اربغ ر‪ٝ‬ز‪ٞ‬ستزاث ‪:‬‬


‫‪ -1‬اٍ )‪: Serial Receive/Transmit Buffer Register (SSPBUF‬‬
‫دا اُش‪٣‬غ‪٤‬غزش اُِ‪ ٠‬ثٌزت ك‪ ٚ٤‬اُذارب اُِ‪ ٠‬ػب‪ٝ‬ص اثؼز‪ٜ‬ب ا‪ ٝ‬اهشا ٓ٘‪ ٚ‬اُذارب اُِ‪ ٠‬اعزِٔز‪ٜ‬ب‬
‫‪: MSSP Shift Register (SSPSR) -2‬‬
‫د‪ ٟ‬اٍ ‪ shift register‬اُِ‪ ٠‬ث‪٤‬ؾلذ اُذارب ثؼذ ٓب ثٌزت اُذارب ك‪ ٠‬اٍ ‪SSPBUF‬‬
‫‪ register‬اُذارب ثزش‪ٝ‬ػ ‪ SSPSR register‬ػِؾبٕ ‪٣‬جذا ‪٣‬ؾلذ اُذارب‬
‫‪ًٔٝ‬بٕ اُذارب اُِ‪ ٠‬ثؼذ ٓب ثغزوجِ‪ٜ‬ب ػٖ هش‪٣‬ن اٍ )‪Shift Register (SSPSR‬‬
‫ث‪٘٤‬وِ‪ٜ‬ب َُ ‪SSPBUF register‬‬

‫‪84Page‬‬ ‫‪Technical Support 2015‬‬


: MSSP Control Register (SSPCON) ٍ‫ ا‬-3
َٔ‫ ث٘ؼ‬ٚ٘ٓٝ SPP Module ٍ‫ اػذاداد ا‬٠‫ٍ ػٖ اُزؾٌْ ك‬ٞ‫غزش أُغئ‬٤‫غ‬٣‫دا اُش‬
‫ًٔبٕ ث٘ؾذد‬ٝ SPP Module ٍ‫ ػِؾبٕ ٗوذدس ٗغزخذّ ا‬serial port َُ enable
CLK ٍ‫ رشدد ا‬master ُٞٝ slave ‫ال‬ٝ master ٌٕٞ٤ٛ َٛ device ٍ‫ع ا‬ٞٗ
)ideal state( ٚ‫ اٗب ٓججؼزؼ ؽبع‬ُٞ CLK ٍ‫ ثزبػذ ا‬pin ٍ‫ًٔبٕ ؽبُخ ا‬ٝ ّ‫ًب‬
. low ‫ال‬ٝ high ٌٕٞ٤ٛ

85Page Technical Support 2015


: MSSP Status Register (SSPSTAT) ٍ‫ ا‬-4

86Page Technical Support 2015


: ‫ٍخاه‬
slave ٍ‫ا‬ٝ 9 ٠ُ‫ ا‬0 ٖٓ ّ‫ االسهب‬slave َُ ‫جؼذ‬٤‫غ ثجؼذ أُبعزش ث‬٣‫ن عش‬٤‫دا رطج‬
UART ٠ِ‫ ػ‬ِٚ‫ اعزوج‬٠ُِ‫جؼذ ا‬٤‫اؽذ ث‬ٝ ًَٝ A to Z ٖٓ ‫ف‬ٝ‫ اُؾش‬ِٚ‫جؼز‬٤‫ث‬

Master code
// .........................master code.........................
void main()
{
volatile char c='0',RX ;
TRISC.F5=0; //config SDO as output
TRISC.F4=1; //config SDi as input
TRISC.F3=0; //config CLK as output
SSPSTAT=0; //Input data sampled at end of data

87Page Technical Support 2015


output time && Data is transmitted on falling edge of
clock pulse
SSPCON=0B00100000; //master mode fosc/4,idel
state for clk low,enable serial port
UART1_Init(9600);
Delay_ms(100); // Wait for UART module to
stabilize
UART1_Write_Text(".............master.............");
UART1_Write(10);
UART1_Write(13);
SSPBUF=c; // send 0 to the slave
while(1)
{
while(BF_bit==0); //wait Receive complete
RX= SSPBUF; //receive data
UART1_Write(RX);
if(c<'9') c++;
else c='0'
if(RX=='Z')
{
UART1_Write(10); //new line
UART1_Write(13);
}
delay_ms(1000);
SSPBUF=c;
88Page Technical Support 2015
} //end supper loop
} // end main

Slave code
//.................. slave ............
void main()
{
volatile char c=65,RX; //assci value for char A
TRISC.F5=0; //config SDO as output
TRISC.F4=1; //config SDi as input
TRISC.F3=1; //config CLK as input
SSPSTAT=0;
SSPCON=0B00100101; //SLAVE MODE ,SS
CONTROL dis,idel state for clk low,enable serial port
UART1_Init(9600);
Delay_ms(100); // Wait for UART module to
89Page Technical Support 2015
stabilize
UART1_Write_Text(".............slave.............");
UART1_Write(10);
UART1_Write(13);
SSPBUF=c; // send A to the slave

while(1)
{
while(BF_bit==0); //wait Receive complete
RX= SSPBUF; //receive data
UART1_Write(RX);
if(c<90) c++; //assci value for char Z
else c=65;
if (RX == '9')
{
UART1_Write(10); //new line
UART1_Write(13);
}
SSPBUF=c;
} //end supper loop
} //end main

91Page Technical Support 2015


‫د‪ٗ ٟ‬ز‪٤‬غخ اُغ‪٤ُٞ٤ٔ٤‬ؾٖ ‪ًٔٝ‬بٕ اعزخذٓ٘ب االعِ‪٤‬غٌ‪ٞ‬ة ػِؾبٕ ٗؾ‪ٞ‬ف ؽٌَ اُذارب ثززجؼذ‬
‫اصا‪. ٟ‬‬

‫‪91Page‬‬ ‫‪Technical Support 2015‬‬


‫د‪ً ٟ‬بٕ رطج‪٤‬ن عش‪٣‬غ ثظ ػِؾبٕ ٗزخ‪ َ٤‬اُذٗ‪٤‬ب ؽٌِ‪ٜ‬ب اصا‪ ٟ‬ثظ ثؼذ ًذ‪٘ٛ ٙ‬غزخذّ ٌٓزجخ‬
‫ٓ‪ٌ٤‬ش‪ٝ‬ع‪ ٠‬ػِؾبٕ اٌُ‪ٞ‬د ‪٘ٓ ٌٕٞ٣‬ظْ ؽ‪٣ٞ‬خ ‪ٝ‬اع‪ َٜ‬ك‪ ٠‬اُل‪. ْٜ‬‬
‫د‪ ٟ‬اُذ‪ٝ‬اٍ االعبع‪٤‬خ اُِ‪٘ٛ ٠‬ؾزغ‪ٜ‬ب ‪:‬‬

‫‪92Page‬‬ ‫‪Technical Support 2015‬‬


‫روش‪٣‬جب ًذ‪ ًَ ٙ‬اُذ‪ٝ‬اٍ اُِ‪ ٠‬ك‪ٞ‬م ‪٘ٛ‬جو‪ ٠‬ػبسك‪ٗ ٖ٤‬ل‪ ٖٓ ْٜ‬اُ‪ٞ‬فق ثزؼ‪ٜ‬ب ٗغزخذٓ‪ٜ‬ب اصا‪ٟ‬‬
‫خِ‪ٗٞ‬ب ثظ ٗلزٌش ؽبع‪ ٚ‬اؽ٘ب ً٘ب ك‪ ٠‬اال‪ ٍٝ‬ث٘ؼَٔ ‪ٝ SPI َُ initialization‬ثؼذ ًذ‪ٙ‬‬
‫اُذارب اُِ‪ً٘ ٠‬ب ث٘ؼ‪ٞ‬ص ٗجؼز‪ٜ‬ب ً٘ب ث٘ؾط‪ٜ‬ب ك‪ ٠‬اٍ ‪ SSPBUF register‬ثٔغشد ٓب اُذارب د‪ٟ‬‬
‫‪93Page‬‬ ‫‪Technical Support 2015‬‬
‫ر‪ٞ‬فَ اٍ ‪ slave‬ثٌ‪ ٕٞ‬اعزِٔذ اُذارب اُِ‪ً ٠‬بٗذ ٓ‪ٞ‬ع‪ٞ‬دح ك‪ ٠‬اٍ ‪SSPBUF register‬‬
‫ثزبع اٍ ‪. slave‬‬
‫ٓؼ٘‪ً ٠‬ذ‪ ٙ‬اٗ‪ ٠‬ػِؾبٕ اخذ اُذارب اُِ‪ ٠‬ك‪ shift register ٠‬ثزبع اٍ ‪ slave‬الصّ أُبعزش‬
‫‪٣‬جؼذ ‪ slave َُ byte‬ه‪٤‬ت ُ‪ً ٞ‬بٕ أُبعزش ٓل‪٤‬ؼ دارب ػب‪ٝ‬ص ‪٣‬جؼز‪ٜ‬ب َُ ‪ slave‬ك‪ ٠‬اُؾبُخ‬
‫د‪ ٟ‬أُبعزش ث‪٤‬جؼذ ‪ byte‬ث‪٤‬غٔ‪ dummy byte ٙٞ‬الٕ اٍ ‪ byte‬د‪ٓ ٙ‬ج‪ٔ٤‬ضِؼ ٓؼِ‪ٓٞ‬خ َُ‬
‫‪slave‬‬
‫ه‪٤‬ت اٍ ‪ dummy byte‬ه‪ٔ٤‬ز‪ ٚ‬ا‪ ٚ٣‬؟‬
‫اُو‪ٔ٤‬خ اُِ‪ ٠‬رخزبس‪ٛ‬ب ٓؼ ‪ٛ‬زلشم ‪.‬‬
‫آْٔٔٔٔٔٔٔٔٔٔٔٔٔٔٔٔٔ!‬
‫اصا‪ ٟ‬اُِ‪ ٠‬اٗذ ثزو‪ُٞ‬خ د‪ ٙ‬هت اكشك ٓضال اٗ‪ ٠‬ثؼذ سهْ ‪٣ slave َُ 125‬ؼشف ثوب ٓ٘‪ٖ٤‬‬
‫ارا ًبٕ د‪ ٙ‬دارب ػب‪ٝ‬ص‪٣ ٙ‬غزوجِ‪ٜ‬ب ػِؾبٕ ‪٘٣‬لزا ؽبع‪ ٚ‬ث٘بء ػِ‪ٜ٤‬ب ‪ٝ‬ال ‪ dummy byte‬ك‪٠‬‬
‫اُ‪ٞ‬اهغ د‪ ٖٓ ٟ‬اؽذ اٍ ‪ disadvantage‬ثزبػذ اٍ ‪ spi‬ثظ ػٔ‪ٓٞ‬ب اٗذ اُِ‪ ٠‬ثزج٘‪ ٠‬اٍ‬
‫‪ system‬اخزبس سهْ ٓزٌ٘ؼ ٓغزخذٓ‪ ٚ‬ك‪ ٠‬اٍ ‪slave‬‬
‫‪ٝ‬د‪ ٟ‬اُذاُخ االخ‪٤‬شح‬

‫‪94Page‬‬ ‫‪Technical Support 2015‬‬


: ‫غ ٍغ بؼط ّ٘ظش اىفنزة‬ٝ‫شِ سز‬ٞ‫ن‬ٞ‫خيّ٘ا ّؼَو ابي‬
٠‫زؾٌْ ك‬٤‫ْ ث‬ٜ٤‫اؽذ ك‬ٝ ًَ ‫ أُبعزش‬٠ِ‫ٖ ػ‬٤ِ‫ف‬ٞ‫ ٓز‬2 push button ٟ‫ ػ٘ذ‬٠ٗ‫لزشك ا‬ٛ
slave ٠ِ‫دح ػ‬ٞ‫ع‬ٞٓ ‫ذ‬٤ُ
slave 2 ‫ ٗلظ اُجشٗبٓظ ثزبع‬ٚ‫ ثشم‬ٞٛٝ slave 1 ‫ اُجشٗبٓظ ثزبع‬ٙ‫د‬: ‫اُجشٗبٓظ‬
Slave.c
void main()
{
unsigned short rrx=0;
TRISD=0;
PORTD=0;
SPI1_Init_Advanced(_SPI_SLAVE_SS_ENABLE,
_SPI_DATA_SAMPLE_MIDDLE, _SPI_CLK_IDLE_LOW,
_SPI_LOW_2_HIGH);
while(1)
{
rrx=SPI1_Read(0);
if(rrx=='a')
{
portd.f0=1;

95Page Technical Support 2015


}
else if(rrx=='b')
{
portd.f0=0;
}
rrx=0;
}
}

port ٍ‫ ػشكذ ا‬ٙ‫ ثؼذ ًذ‬SPI ٍ‫ اُذارب ٖٓ ا‬ٚ٤‫ش ػِؾبٕ اعزوجَ ك‬٤‫خ ػشكذ ٓزـ‬٣‫ اُجذا‬٠‫ك‬
ٚ‫ ػشكز‬spi َُ initialization ‫ٖ ػِٔذ‬٣‫ثؼذ‬ٝ output ٚٗ‫ ا‬٠ِ‫ذ ػ‬٤ُِ‫ ا‬ٚ٤‫فَ ث‬ٞٛ ٠ُِ‫ا‬
. clk ٍ‫ؽذد ؽبُخ ا‬ٝ ss َُ enable ‫ػِٔذ‬ٝ slave ٚٗ‫ا‬

96Page Technical Support 2015


‫ ٓب‬ٟ‫ ص‬dummy byte ٍ‫ ا‬ٟ‫ د‬0 ٍ‫ ا‬SPI1_Read(0) ‫ ثذاد اعزوجَ اُذارب ثبُذاُخ‬ٙ‫ثؼذ ًذ‬
. ‫ذ‬٤ُِ‫ ا‬٠‫ اهل‬ٝ‫س ا‬ٞ٘‫ ث‬ٚ‫ اعزوجِز‬٠ُِ‫ ا‬٠ِ‫ ث٘بء ػ‬ٙ‫ثؼذ ًذ‬ٝ , ْ‫ سه‬ٟ‫ارلو٘ب ا‬
: ‫م٘د اىَاستز‬

Master.c
#define button1 PORTB.F0
#define button2 PORTB.F1
#define SS1 PORTB.F2
#define SS2 PORTB.F3
void main()
{
unsigned short f0=0,f1=0; //store button state
TRISB=3; //CONFIG RB0,RB1 AS INPUTS
SS1=1; //DISABLE SLAVE 1 & 2
SS2=1;
NOT_RBPU_bit=0; //ENABLE PULL-UP RESISTORS
SPI1_Init(); //// Initialize the SPI1 module with
default settings
delay_ms(100);

97Page Technical Support 2015


while(1)
{
if(button1==0)
{
if(f0==0)
{
f0=1;
SS1=0; //ENABLE SLAVE 1
SPI1_Write('a'); // on led
SS1=1;
}
}
else if (f0==1)
{
f0=0;
SS1=0; //ENABLE SLAVE 1
SPI1_Write('b'); // of led

98Page Technical Support 2015


SS1=1;
}
if(button2==0)
{
if(f1==0)
{
f1=1;
SS2=0; //ENABLE SLAVE 2
SPI1_Write('a'); // on led
SS2=1;
}
}
else if (f1==1)
{
f1=0;
SS2=0; //ENABLE SLAVE 2
SPI1_Write('b'); // of led
SS2=1;

99Page Technical Support 2015


}
}
}

111Page Technical Support 2015


‫ك‪ ٠‬اُجذا‪٣‬خ ػشكذ ٓزـ‪٤‬ش‪ ٖ٣‬ػِؾبٕ اخضٕ ك‪ ْٜ٤‬ؽبُخ ‪ٓ button1 ,button2‬نـ‪ٞ‬ه ػِ‪ْٜ٤‬‬
‫‪ٝ‬ال ال‪ٝ‬ػشكذ ث٘ز‪ ٖ٤‬ػِ‪ ٠‬اٗ‪ input ْٜ‬ػِؾبٕ اٍ ‪ٝ push button‬ار٘‪ output ٖ٤‬ػِؾبٕ‬
‫اٍ ‪ ss1,ss2‬ثؼذ ًذ‪ ٙ‬ػِٔذ ‪ spi َُ initialization‬ػِ‪ ٠‬اٗ‪ٓ ٚ‬بعزش ‪ٝ‬ثذاد اهشا ؽبُخ‬
‫اٍ ‪ ُٞ buttons‬اُضساس اال‪ ٍٝ‬ثوب ‪ low‬ثخِ‪ ٠‬اٍ ‪ ss1=0‬ثٌذ‪ ٙ‬اُذارب اُِ‪ٛ ٠‬جؼز‪ٜ‬ب ثبٍ ‪spi‬‬
‫‪ٛ‬زش‪ٝ‬ػ َُ ‪ slave‬اال‪ٝ ٍٝ‬ثؼذ ًذ‪ ٙ‬ثجؼذ اُذارب اُِ‪ ٠‬اٗب ػب‪ٝ‬ص‪ٓ ٙ‬ضال ‪٘ٛ‬ب ثؼذ ‪ a‬د‪ ٙ‬ػِؾبٕ‬
‫اه‪ slave َُ ٍٞ‬إ اُضساس ؽذد داط ػِ‪ٝ ٚ٤‬ؽشف ‪ b‬ػِؾبٕ اه‪ slave َُ ٍٞ‬إ ٓؾذػ‬
‫دا‪٣‬ظ ػِ‪ ٠‬اُضساس ‪ٝ‬ثجؼذ ٓبثجؼذ اُذارب ثخِ‪ ٠‬اٍ ‪ ss=1‬ربٗ‪. ٠‬‬
‫‪ٌٛٝ‬زا ثبُ٘غجخ َُ ‪ button‬اُزبر‪. ٠‬‬

‫‪111Page‬‬ ‫‪Technical Support 2015‬‬


112Page Technical Support 2015
‫تؼز‪ٝ‬ف اىبزٗت٘م٘ه ‪:‬‬
‫‪ ٞٛI²C‬اخزقبس ُؼجبسح ( ‪ ) Inter Integrated Circuit Communications‬أ‪ٓ ٝ‬ب‬
‫‪٣‬ؼشف ثبعْ ثش‪ٝ‬ر‪ ًٍٞٞ‬اإلرقبالد اُذاخِ‪٤‬خ ث‪ ٖ٤‬اُذ‪ٝ‬ائش أُزٌبِٓخ (‪ ، )IC‬رْ رط‪٣ٞ‬ش‬
‫اُجش‪ٝ‬ر‪ ًٍٞٞ‬ث‪ٞ‬اعطخ ؽشًخ ك‪٤ِ٤‬جظ ُإلٌُزش‪٤ٗٝ‬بد ‪٣,,‬غزخذّ ‪ٛ‬زا اُجش‪ٝ‬رٌ‪ُِ ٍٞ‬شثو ث‪ٖ٤‬‬
‫أُ‪ٌ٤‬ش‪ً٘ٝ‬زش‪ُٝ‬ش ‪ٝ‬اُؼ٘بفش االٌُزش‪٤ٗٝ‬خ أُخزِلخ ًٔب ‪ ٞٛ‬اُؾبٍ ك‪ ٠‬اُـ ‪ٝ UART‬اُـ ‪USB‬‬
‫ٌُٖ ‪ٛ‬زا اُجش‪ٝ‬رٌ‪٤ٔٓ ٚ٤ُ ٍٞ‬ضار‪ٝ ٚ‬اعزخذٓبر‪.ٚ‬‬

‫إَٔ‪ٞ‬ت ٕذا اىبزٗت٘م٘ه ٗاستخذاٍاتٔ ‪:‬‬


‫رزٔضَ س‪ٝ‬ػخ ‪ٛ‬ز‪ ٙ‬اُزو٘‪٤‬خ ك‪ ٢‬آٌبٗ‪٤‬خ ر‪ٞ‬ف‪ َ٤‬ػذد ًج‪٤‬ش ٖٓ أٌُ‪ٗٞ‬بد اإلٌُزش‪٤ٗٝ‬خ (ٗظش‪٣‬ب‬
‫‪٣‬زٌ‪ ٕٞ‬اٍ ‪ 7bits ٖٓ I²C‬ا‪ ٌٖٔ٣ ١‬ػ٘‪ٗٞ‬خ ‪ 128‬ع‪ٜ‬بص ‪ ٌُٖٝ‬ال ‪ٌ٘٘ٔ٣‬ب اال ر‪ٞ‬ف‪112 َ٤‬‬
‫ع‪ٜ‬بص كوو ‪ٝ‬رُي الٕ ثبه‪ ٢‬اُؼ٘‪ٞ‬ا‪ ) Reserved ٖ٣‬ثجؼن‪ٜ‬ب اُجؼل ثبعزخذاّ عٌِ‪ٖ٤‬‬
‫‪ٓٝ‬وب‪ٓٝ‬ز‪ ٖ٤‬كوو ‪ -‬كٔضال ‪ٌ٘ٔ٣‬ي ر‪ٞ‬ف‪ َ٤‬ؽغبط ؽشاسح ‪ ،‬ؽغبط م‪ٞ‬ئ‪ٝ ..... ٢‬رُي ػجش‬
‫عٌِ‪ ٖ٤‬كوو ‪ٝ .‬ثبُزبُ‪٣ ٠‬غزخذّ ك‪ ٠‬اُزطج‪٤‬وبد اُز‪ ٠‬رؾزبط اُ‪ً ٠‬ض‪٤‬ش ٖٓ أٌُ‪ٗٞ‬بد‬
‫االٌُزش‪٤ٗٝ‬خ الٗ‪ٞ٣ ٚ‬كش ػذد األهشاف اُالصٓخ ُِز‪ٞ‬ف‪ٝ َ٤‬ثزُي ‪٣‬زْ ر‪ٞ‬كشػذد ٓ٘بكز اُزؾٌْ‬
‫أُغزخذٓخ ‪ٝ‬ك‪ٗ ٢‬لظ اُ‪ٞ‬هذ ‪٣‬غٔؼ ُ٘ب ثبعزخذاّ ػؾشاد أٌُ‪ٗٞ‬بد ك‪ٗ ٢‬لظ اُ‪ٞ‬هذ‪.‬‬

‫‪113Page‬‬ ‫‪Technical Support 2015‬‬


‫ًزُي ‪ٌ٘ٔ٣‬ي ر‪ٞ‬ف‪ َ٤‬أُ‪ٌ٤‬ش‪ً٘ٝ‬زش‪ُٝ‬ش اُخبؿ ثي ثٔزؾٌٔبد أخش‪ٓ ٟ‬ضَ ُ‪ٞ‬ؽبد آسد‪ٞ٘٣ٝ‬‬
‫أ‪ ٝ‬أ‪ٓ ١‬زؾٌْ ‪٣‬ذػْ رو٘‪٤‬خ ‪٣ٝ I²C‬ؼشف رُي ثبُـ ‪.Nodes‬‬

‫ٍبذأ ػَو اىبزٗت٘م٘ه ‪:‬‬


‫ُزؾـ‪ َ٤‬اُجش‪ٝ‬ر‪ٗ ًٍٞٞ‬ؾزبط اُ‪ ٠‬ؽ‪٤‬ئ‪: ٖ٤‬‬
‫األ‪ ٞٛ ٍٝ‬اُـ ‪ ٞٛٝ :Master‬اُز‪٣ ١‬و‪ ّٞ‬ثبُزؾٌْ ثؼِٔ‪٤‬خ اُ٘وَ ثؾٌَ ػبّ ‪ ٞٛٝ‬أُغئ‪ ٍٝ‬ػٖ‬
‫ر‪٤ُٞ‬ذ اُـ ‪ CLK‬اُالصٓخ ُؼِٔ‪٤‬خ ٗوَ اُذارب ‪ٝ ،‬خالٍ اُؾشػ ع‪ ٌٕٞ٤‬أُزؾٌْ ‪ ٞٛ‬اُز‪٣ ١‬و‪ّٞ‬‬
‫ث‪ٜ‬ز‪ ٙ‬اُ‪ٞ‬ظ‪٤‬لخ ‪ٝ ،‬ع٘غزخذّ ك‪ ٢‬اُؾشػ ‪ٝ PIC16F877A‬اُز‪٣ ١‬ؾز‪ ١ٞ‬ػِ‪ٛ ٠‬بسد‪٣ٝ‬ش‬
‫داخِ‪. I2C ٢‬‬
‫اُضبٗ‪ ٞٛ ٢‬اُـ ‪ :Slave‬ع‪ ٌٕٞٓ ٌٕٞ٤‬اٌُزش‪٣ ٢ٗٝ‬ؼَٔ ًخبدّ ‪٣‬و‪ ّٞ‬ثٌَ ٓب ‪٣‬طِت ٓ٘‪ٖٓ ٚ‬‬
‫خالٍ أُبعزش‪.‬‬
‫‪٣‬شعَ اُـ ‪ 7 Master‬أعضاء ٖٓ اُج‪٤‬بٗبد ‪ً Bits‬بُزبُ‪:٢‬‬

‫‪) START _1‬أ‪٣ bit ٍٝ‬زْ اسعبُ‪ :(ٚ‬رلؼ‪ َ٤‬اُجش‪ٝ‬ر‪ٛٝ ًٍٞٞ‬زا ‪٣‬غؼَ عٔ‪٤‬غ اُـ ‪slaves‬‬
‫ر٘زج‪ ٚ‬أٗ‪٘ٛ ٚ‬بى آش ٓب ع‪٤‬قذس اُ‪ ٠‬اؽذا‪ٛ‬ب ك‪ ٢‬اُِؾظبد اُزبُ‪٤‬خ ‪.‬‬
‫‪ :(7 bits) Slave Address _2‬ػ٘‪ٞ‬إ اُخبدّ اُز‪٣ ١‬ش‪٣‬ذ أُ‪ٌ٤‬ش‪ً٘ٝ‬زش‪ُٝ‬شاُزؾذس ٓؼ‪.ٚ‬‬
‫‪( Read/Write _3‬اُجذ اُزبعغ (‪ :‬آب فلش ‪ٝ‬اُز‪ ٢‬رؼ٘‪ ٢‬إٔ أُ‪ٌ٤‬ش‪ً٘ٝ‬زش‪ُٝ‬ش ع‪٤‬طِت‬
‫ث‪٤‬بٗبد ٖٓ اُغ‪ٜ‬بص) ٓضَ إ روشأ دسعخ ؽشاسح ( ‪ٝ‬آب ‪ٝ‬اؽذ ‪ٝ‬اُز‪ ٢‬رؼ٘‪ ٢‬إ‬
‫أُ‪ٌ٤‬ش‪ً٘ٝ‬زش‪ُٝ‬ش ع‪٤‬شعَ ث‪٤‬بٗبد ٓضَ) أٓش رؾـ‪ٓ َ٤‬ؾشى أ‪ ٝ‬اهلبء ٓؾشى‪.(.‬‬
‫‪ ) ACK_4‬اُجذ اُؼبؽش)‪٣ :‬شد اُخبدّ ثبؽبسح ‪ٝ ACK‬اُز‪ ٢‬رؼ٘‪ ٢‬ثبٕ ػِٔ‪٤‬خ االعزوجبٍ هذ‬
‫رٔذ ث٘غبػ‪.‬‬
‫‪ ٠ٛٝ: Data (1)_5‬ػجبسح ػٖ ‪ byte‬رؾز‪ ٟٞ‬ػِ‪ ٠‬األٓش أُشاد ر٘ل‪٤‬ز‪ ٙ‬أ‪ ٝ‬اُو‪ٔ٤‬خ أُشاد‬
‫هشائز‪ٜ‬ب‪.‬‬
‫‪114Page‬‬ ‫‪Technical Support 2015‬‬
.‫بء األٓش‬ٜ‫ اٗز‬٢٘‫ؼ‬٣ ‫زا‬ٛٝ ACK ‫شد اُخبّ ثـ‬٣ : ACK_6
.٢ٗ‫ز أٓش صب‬٤‫ ر٘ل‬٠ِ‫ ػ‬ٟٞ‫ رؾز‬byte ٖ‫ ػجبسح ػ‬٠ٛٝ : Data (2)_7
.٢ٗ‫بء ٖٓ اسعبٍ األٓش اُضب‬ٜ‫ االٗز‬: ACK_8
ٖٓ ( STOP ) ٍ‫خ االسعب‬٣‫ب‬ٜٗ ‫خ اسعبٍ اُذارب ثبسعبٍ اؽبسح‬٤ِٔ‫ ػ‬٢ٜ‫ر٘ز‬- : STOP_9
.‫هجَ أُبعزش‬

: i2Cٌ‫ تذػ‬ٜ‫أّ٘اع اىَنّ٘اث اىت‬

 Digital-to-analogue converters (DACs)


 Analogue-to-digital converters (ADCs)
 LCD displays
 OLED Screens
 Keyboards
 Motor drivers
 LED drivers
 Memory chips and cards (EEPROM, RAM, FERAM, Flash)
 Bus expanders/extenders (chips with 8 or 16 I/O pins
controllable via I2C)
 Other microcontrollers (Arduino based, genral AVR families,
PIC).

: ‫نزٗمْتزٗىز‬َٞ‫الث اى‬ٞ‫ت٘ص‬

115Page Technical Support 2015


‫‪ٌ٘ٔ٣‬ي ر‪ٞ‬ف‪ َ٤‬أُ‪ٌ٤‬ش‪ً٘ٝ‬زش‪ُٝ‬ش اُخبؿ ثي ثٔزؾٌٔبد أخش‪ ٟ‬أ‪ ٝ‬ا‪ ١‬ع‪ٜ‬بص ‪٣‬ذػْ رو٘‪٤‬خ ‪I²C‬‬
‫‪ٝ‬رغٔ‪ٛ ٠‬ز‪ ٙ‬األعبصح ثبٍ ‪ٝ Nodes‬رزقَ ك‪ٔ٤‬ب ث‪ٜ٘٤‬ب ػجش ٓ٘لز‪ ١‬رؾٌْ األ‪٣ ٍٝ‬غٔ‪٠‬‬
‫‪ ٝ )SDA( Serial data line‬اُضبٗ‪.)SCL( Serial clock line ٢‬‬
‫‪ ٞٛٝ : SDA‬اُطشف اُز‪٣ ١‬زْ ٗوَ اُج‪٤‬بٗبد ػِ‪. ٚ٤‬‬
‫‪ ٞٛٝ : SCL‬اُطشف اُز‪٣ ١‬زْ اسعبٍ ٗجنبد اُز‪ٞ‬ه‪٤‬ذ (‪ )Clock‬ػِ‪٣ٝ , ٚ٤‬زْ اسعبٍ ‪ٛ‬ز‪ٙ‬‬
‫اُ٘جنبد ٖٓ اُغ‪ٜ‬بص أُبعزش (‪. )Master‬‬

‫‪٘ٛ‬ب ع٘غذ عئاٍ ‪ٛ‬بّ ‪ :‬ارا رْ ر‪ٞ‬ف‪ َ٤‬ػؾشاد أٌُ‪ٗٞ‬بد اإلٌُزش‪٤ٗٝ‬خ ػِ‪ٗ ٠‬لظ اُغٌِ‪ٖ٤‬‬
‫ً‪٤‬ق عزز‪ٞ‬افَ ك‪ٔ٤‬ب ث‪ٜ٘٤‬ب ‪٤ًٝ‬ق ع٘غؼَ أُ‪ٌ٤‬ش‪ً٘ٝ‬زش‪ُٝ‬ش اُخبؿ ث٘ب ‪٣‬ز‪ٞ‬افَ ٓغ ٌٓ‪ٕٞ‬‬
‫ٓؼ‪ٝ ٖٓ ٖ٤‬عو ػؾشاد أٌُ‪ٗٞ‬بد أُزقِخ ػِ‪ٗ ٠‬لظ اُخط‪ٞ‬ه؟‬
‫اُؾَ ثغ‪٤‬و ‪ٔٓ ٞٛٝ‬بصَ ُؾجٌبد اُؾبعت ا‪ ٢ُ٥‬ؽ‪٤‬ش ‪ٞ٣‬عذ ػ٘‪ٞ‬إ ٓؼ‪ٌٕٞٓ ٌَُ ٖ٤‬‬
‫اٌُزش‪٣ ٢ٗٝ‬غٔ‪ )I²C address(٠‬كٔضال اُزاًشح اُخبسع‪٤‬خ اُزغِغِ‪٤‬خ ‪ُٜ EEPROM‬ب سهْ‬
‫ٓٔ‪٤‬ض ‪٣‬خزِق ػٖ‪. DS1307‬‬

‫‪116Page‬‬ ‫‪Technical Support 2015‬‬


‫‪٣ٝ‬غت ٓشاعؼخ اُذاربؽ‪٤‬ذ ُِؼ٘قش ُٔؼشكخ ‪ٛ‬زا اُشهْ ؽز‪ٗ ٠‬زٌٖٔ ٖٓ ٗوَ اُذارب ‪ٝ‬اال كبٕ‬
‫ػِٔ‪٤‬خ اُشثو عزٌ‪ ٕٞ‬ثذ‪ ٕٝ‬عذ‪ .ٟٝ‬ع٘ؤخز ٓضبال االٕ ػِ‪ ٠‬ر‪ٞ‬ف‪ PIC16F877a َ٤‬ة‬
‫‪.External EEPROM‬‬

‫إَٔ‪ٞ‬ت اىَقاٍٗ‪ٞ‬تِ اىَتصيت‪ ِٞ‬ػي‪ ٚ‬خط‪ ٜ‬اه ‪ ٗ SDA‬اه ‪: SCL‬‬


‫ًال ٖٓ ٓ٘لز‪ ١‬االرقبٍ ‪ ٌٕٞ٣ SCL ٝ SDA‬أُخشط ُ‪ ْٜ‬ػجبس‪ ٙ‬ػٖ ‪open‬‬
‫‪ٝ drain/collector‬رُي ُِغٔبػ ثبمبكخ أ‪ ٝ‬اصاُخ اع‪ٜ‬ضح ُٔ٘بكز االرقبٍ د‪ٓ ٕٝ‬ؾبًَ‬
‫‪ ٌُٖٝ‬ك‪ ٢‬أُوبثَ ‪٣‬غت امبكخ ‪ٛ‬بر‪ ٖ٤‬أُوب‪٤ٓٝ‬زٖ ) ‪. (Pull up resistors‬‬

‫‪117Page‬‬ ‫‪Technical Support 2015‬‬


‫متابت اىبزّاٍذ ‪:‬‬
‫ك‪ٛ ٢‬زا اُجشٗبٓظ ‪٣‬و‪ ّٞ‬أُ‪ٌ٤‬ش‪ً٘ٝ‬زش‪ُٝ‬ش ثبسعبٍ ‪٤ُ 5‬زْ رخض‪ٜ٘٣‬ب ك‪ ٢‬اٍ ‪ EEPROM‬ك‪٢‬‬
‫اُؼ٘‪ٞ‬إ سهْ ‪ 0x01‬صْ ٗو‪ ّٞ‬ثؼذ رُي ثوشائخ رُي اُؼ٘‪ٞ‬إ ‪ٝ‬ػشك اُو‪ ٚٔ٤‬ػِ‪PortB ٠‬‬
‫ُِزؤًذ ٖٓ اٗ‪ ٚ‬رْ ؽلع اُو‪ ٚٔ٤‬اُقؾ‪٤‬ؾ‪ ٚ‬ك‪ ٢‬اُؼ٘‪ٞ‬إ أُشاد ‪.‬‬
‫‪ُٝ‬ز‪ٞ‬م‪٤‬ؼ ػِٔ‪٤‬خ ًزبثخ ‪ byte‬اُ‪ ٠‬اُـ ‪ eeprom‬كِ٘٘ظش اُ‪ ٠‬اُق‪ٞ‬سح اُزبُ‪٤‬خ اُز‪ ٢‬ر‪ٞ‬مؼ‬
‫رغِغَ ػِٔ‪٤‬خ اٌُزبثخ‪:‬‬

‫اىن٘د ‪:‬‬

‫اىَضناة‪:‬‬

‫‪118Page‬‬ ‫‪Technical Support 2015‬‬


‫‪ ٌٖٔ٣‬سإ‪٣‬خ اُو‪ٔ٤‬خ اُز‪ ٢‬رْ اسعبُ‪ٜ‬ب اُ‪ ٠‬اُـ ‪ ٖٓ EEPROM‬خالٍ رؾـ‪ِٓ َ٤‬ق اُجش‪ٝ‬رظ ‪،‬‬
‫‪ ٖٓٝ‬صْ ا‪٣‬وبف اُجش‪ٝ‬ر‪ٞ‬ط ٓئهزب ثبُنـو ػِ‪ ) | | ( ٠‬ػ٘ذ‪ٛ‬ب رظ‪ٜ‬ش ٗبكزح ‪I2C internal‬‬
‫‪ًٔ memory‬ب ك‪ ٢‬اُؾٌَ اُزبُ‪:٢‬‬

‫ك‪ ٢‬اُجذا‪٣‬خ ٗو‪ ّٞ‬ثؼِٔ‪٤‬خ ‪٤ُ I2C َُ ٝ PORTB ٍ initialization‬ؼَٔ ػِ‪ ٠‬عشػخ‬
‫‪ ,100KB‬صْ ثؼذ رُي ٗو‪ ّٞ‬ثبسعبٍ اُج‪٤‬بٗبد ثبُزشر‪٤‬ت ًٔب عجن ك‪ ٢‬اُؾشػ ك‪ ٢‬اُغضء‬
‫اُخبؿ ثؾشػ ٓجذأ ػَٔ اُجش‪ٝ‬ر‪.ًٍٞٞ‬‬
‫ؽ‪٤‬ش رو‪ I2C1_Start() ّٞ‬ثزلؼ‪ َ٤‬اُجش‪ٝ‬ر‪ٝ ًٍٞٞ‬اسعبٍ اٍ ‪ Start byte‬صْ ثؼذ رُي ٗو‪ّٞ‬‬
‫ثبسعبٍ اٍ ‪ٝ slave address‬اٍ ‪ R/W‬صْ ثؼذ رُي ٗو‪ ّٞ‬ثبسعبٍ )‪ DATA(1‬ؽ‪٤‬ش‬
‫ٗشعَ ك‪ٜ٤‬ب اُؼ٘‪ٞ‬إ أُشاد رخض‪ ٖ٣‬اُو‪ ٚٔ٤‬ك‪ ٚ٤‬صْ ثؼذ رُي ك‪ٗ DATA (2) ٢‬و‪ ّٞ‬ثبسعبٍ‬
‫اُج‪٤‬بٗبد ٗلغ‪ٜ‬ب أُشاد رخض‪ٜ٘٣‬ب ‪ٝ,‬ك‪ ٢‬اُ٘‪ٜ‬ب‪٣‬خ رٌ‪ I2C1_Stop() ٕٞ‬اُز‪ ٢‬رو‪ ّٞ‬ثوطغ‬
‫االرقبٍ ‪ٝ‬اسعبٍ اٍ ‪ٝ ,, Stop bit‬ثبُٔضَ ك‪ ًَ ٢‬اُخط‪ٞ‬اد رٌ‪ ٕٞ‬ػِٔ‪٤‬خ اُوشاء‪.ٙ‬‬

‫‪119Page‬‬ ‫‪Technical Support 2015‬‬


111Page Technical Support 2015
‫إَٔ‪ٞ‬تٔ ‪ :‬أُ‪ٞ‬م‪ٞ‬ع د‪ ْٜٓ ٙ‬عذا ُِ‪ ٠‬ؽبثت ‪٣‬غزخذّ ك‪ٓ ٠‬ؾش‪ٝ‬ػ‪audio, video, ٚ‬‬
‫‪ ... graphics, data logging‬الٕ ‪ٝ‬هز‪ٜ‬ب أُ‪ٌ٤‬ش‪ً٘ٝ‬زش‪ُٝ‬ش ثزبػ‪ٓ ٠‬ؼ ‪٤ٛ‬وذس ‪٣‬ذ‪٠٘٣‬‬
‫أُغبؽخ اٌُبك‪٤‬خ الٗ‪ٝ limited built-in storage ٚ‬ال ؽز‪ ٠‬اُـ ‪EEPROM storage‬‬
‫‪ٛ‬زٌل‪ٝٝ ٠‬هز‪ٜ‬ب مش‪ٝ‬س‪ ٟ‬عذا رغزخذّ ‪ ٞٛٝ removable storage option‬دا‬
‫ٓ‪ٞ‬م‪ٞ‬ػ٘ب‪.‬‬
‫اُـ ‪ٞٛ SD card‬ػجبسح ػٖ ‪ٓ flash memory storage‬قْٔ ُِزطج‪٤‬وبد اُز‪ ٠‬رؾزبط‬
‫اُ‪ٓ ٠‬غبؽخ رخض‪ ٖ٣‬ػبُ‪٤‬خ ‪ٝ‬اٌُض‪٤‬ش ٖٓ اُج‪٤‬بٗبد ‪ٝ‬أُِلبد ‪ٝ‬ث‪٤‬ذ‪ ٠٘٣‬آٌبٗ‪٤‬خ رغغ‪ِٜ٤‬ب ‪ٝ‬ؽزك‪ٜ‬ب‬
‫‪ٓٝ‬ب اُ‪ ٠‬رُي ٖٓ اُؼِٔ‪٤‬بد ‪٣ ...‬زٔ‪٤‬ض ثؤٗ‪ٝ non-volatile , High-capacity ٚ‬أٗ‪ٚ‬‬
‫‪٣ٝ . rewritable storage in a small size‬غزخذّ ؽبُ‪٤‬ب ك‪ً ٠‬ز‪٤‬ش ٖٓ األع‪ٜ‬ضح ص‪ٟ‬‬
‫اٌُبٓ‪٤‬شاد اُذ‪٣‬غ‪٤‬زبٍ ‪ٝ‬أُ‪ٞ‬ث‪٤‬الد ‪ٝ‬اُـ ‪ٝ mp3 player‬أٌُج‪ٞ٤‬رش ‪ٝ‬ؿ‪٤‬ش‪ٞ٣....... ْٛ‬عذ ٓ٘‪ٚ‬‬
‫أؽغبّ ٓخزِلخ ثغؼخ ٓزـ‪٤‬شح ك‪ 1 ٠‬ع‪٤‬غب ‪ٝ‬ك‪ٝ 2 ٠‬ك‪ٞ٣ٝ .... 4 ٠‬عذ ك‪ 3 ٠‬أؽغبّ‬
‫‪.standard, mini, and micro‬‬

‫‪ٝ‬د‪ ٙ‬عذ‪ ٍٝ‬ث‪ٞ٤‬مؼ اُـٔ‪ٞ‬افلبد اُخبفخ ثبُـ ‪ٝ micro SD‬اٍ ‪standard SD‬‬

‫‪111Page‬‬ ‫‪Technical Support 2015‬‬


‫َ ًال ٖٓ اُـ‬٣ٞ‫ٌٖٔ رؾ‬٣ٝ , ٚ‫ٖ اُؾشًبد أُق٘ؼ‬٤‫ب ث‬ٜ٤ِ‫افلبد ٓزلن ػ‬ٞٓ ٟ‫ًَ د‬
‫ امغ‬٠ٗ‫ن ا‬٣‫ ػٖ هش‬standard SD cards ٠ُ‫ ا‬MiniSD and microSD cards
َ٤‫ث‬ُٞٔ‫ ٓؾالد ا‬٠‫ ك‬ٚ٤‫ ثاله‬standard card slots ٠‫ ك‬ٝ‫ٌش‬٤ُٔ‫ ا‬ٝ‫ أ‬٠٘٤ُٔ‫اء ا‬ٞ‫اُـٌبسد ع‬
write ِٚٔ‫ أهذس أػ‬٠٘‫ؼ‬٣ ‫افلبد‬ُٞٔ‫ ث٘لظ ا‬standard SD card ‫ٍ ُـ‬ٞ‫زؾ‬٣ ٙ‫ثٌذ‬ٝ
standard ‫٘غزخذّ اُـ‬ٛ ‫ؼ٘ب‬٣‫ ٓؾبس‬٠‫ ك‬ٝ‫ أ‬ٙ‫ اُلقَ د‬٠‫ ك‬...‫ٌزا‬ٛٝ 9 pins ُٚ ٝ protect
ٖٓ card slot ِٚ٣‫رؾزش‬ٝ ‫ِي‬٤‫ث‬ٞٓ ٠‫ ك‬٠ُِ‫ ٌٖٓٔ رغزخذّ اٌُبسد ا‬ٙ‫ ػؾبٕ ًذ‬SD cards
.ٚ٤٘‫ ع‬3 ٝ‫ أ‬2 ‫َ ة‬٤‫ث‬ٞٓ َ‫ ٓؾ‬ٟ‫أ‬

Structure of the SD Memory Card


ٕ‫ ػؾب‬access ‫ب‬ِٜٔ‫ ثوذس أػ‬data ‫ؽذاد ٖٓ اُـ‬ٝ sectors ٖ‫ ًبسد ػجبسح ػ‬ٟ‫س‬ٞٔ٤ُٔ‫ا‬
sector ٍ‫ًَ ٓب ًبٕ ٓغبؽخ ا‬ٝ ....‫ٌزا‬ٛٝ format ‫ب‬ِٜٔ‫ أػ‬ٝ‫ب أ‬ٜ٤‫ أًزت ك‬ٝ‫ب أ‬ٛ‫أهشا‬
ُٞ ‫ب‬ٜ‫هز‬ٝ 10kbyte ‫اؽذ‬ُٞ‫ ا‬sector ‫ ٓضال عؼخ اُـ‬ُٞ ٕ‫شح ًَ ٓب ًبٕ أكنَ أل‬٤‫اؽذ فـ‬ُٞ‫ا‬
٠ٌِٗٞ‫ ٓغ ثؼل ثز‬sectors ‫ػخ اُـ‬ٞٔ‫ ٓغ‬.10kbyte ٠‫زخضٕ ك‬٤ٛ 1kbyte ‫خضٗذ ِٓق‬
: ‫خ‬٤‫غ‬٤‫ٗخ ٖٓ أسثغ أعضاء سئ‬ٌٞٓ ٠ُِ‫ا‬ٝ ٠‫ اُخبفخ ثبٌُبسد ثزبػ‬Data Area ‫اُـ‬
1- Boot Sector.
2- Root Directory .
3- File Allocation Table
4- User data space.
112Page Technical Support 2015
‫‪ٓٞٛٝ :Partition Boot Sector _1‬خضٕ ك‪ ٠‬أ‪ sector ٍٝ‬ك‪ ٠‬اُـ ‪System Area‬‬
‫‪ٝ‬الٗ‪ٓ ٚ‬ؼ ٓ‪ٞ‬م‪ٞ‬ػ٘ب ‪ٌ٘ٛ‬زل‪ ٠‬اٗ٘ب ٗؼشف اٗ‪ ٚ‬ث‪٤‬ؾز‪ ٟٞ‬ػِ‪ٓ ٠‬ؼِ‪ٓٞ‬بد رخـ اٌُبسد ص‪ٟ‬‬
‫ػذد اٍ ‪ sectors‬ػذد اُـ ‪ FAT‬اُِ‪٘ٛ ٠‬زٌِْ ػ٘‪ ٚ‬الؽوب ‪ٓٝ‬ب اُ‪ ٠‬رُي‪...‬‬
‫‪ٝ : File Allocation Table (FAT) _2‬د‪ٓ ٙ‬زخضٕ ك‪ ٠‬ربٗ‪ sector ٠‬ثؼذ اٍ ‪boot‬‬
‫‪ٝ sector‬ث‪ ٌٕٞ٤‬ك‪ٓ ٚ٤‬ؼِ‪ٓٞ‬بد ػٖ ٌٓبٕ رخض‪ ٖ٣‬أُِلبد ‪ٝ‬اُـ ‪ directories‬ك‪ ٠‬اُـ ‪data‬‬
‫‪ ٖٓ % 99 .space‬اُزطج‪٤‬وبد ثزؾزبط ‪ ٖٓ file system‬اُ٘‪ٞ‬ع ‪ FAT16 or 32‬الٗ‪ْٜ‬‬
‫ٓج‪٤‬خذ‪ٝ‬ػ ٓغبخخ ًج‪٤‬شح ٖٓ أُ‪ٞٔ٤‬س‪ٟ‬‬
‫‪ٓ :File directories_3‬زخضٕ ثؼذ اُـ ‪ٝ FAT‬ث‪ ٌٕٞ٤‬ك‪ٓ ٚ٤‬ؼِ‪ٓٞ‬بد ػٖ أُِق ثٔؼ٘‪٠‬‬
‫أخش اُخ‪ٞ‬اؿ ثزبػز‪ ٚ‬ص‪ ٟ‬اعٔ‪ , ٚ‬ؽغٔ‪ٓٝ ٚ‬ب اُ‪ ٠‬رُي‪....‬‬
‫‪ٝ: user data space_4‬د‪ ٟ‬أُغبؽخ اُِ‪ ٠‬ث‪٤‬غزخذٓ‪ٜ‬ب اُـ ‪ user‬ك‪ ٠‬اُزخض‪٣ٝ ٖ٣‬وذس ‪ٌ٣‬زت‬
‫ك‪ٜ٤‬ب أ‪٣ ٝ‬وشأ ٓ٘‪ٜ‬ب ‪ٌٛٝ‬زا‪...‬‬

‫‪: Standard SD card pin layout‬‬


‫هجَ ٓب ٗزٌِْ ػٖ اُـ ‪ , pin layout‬الصّ ٗؼشف األ‪ ٍٝ‬إ اُـ ‪ SD card‬ث‪ٞ‬فِ‪ٚ‬‬
‫ثبُٔ‪ٌ٤‬ش‪ٝ‬ػٖ هش‪٣‬ن ‪ٝ‬اؽذ ٖٓ ‪ 2‬ثش‪ٝ‬رٌ‪ ٍٞ‬آب اُـ ‪SDIO protocol SD card‬‬
‫)‪ )mode‬أ‪ ٝ‬اُـ ‪ SPI protocol‬اُـ ‪ SDIO mode‬أعشع ٌُ٘‪ٓ ٚ‬ؼوذ ك‪ ٠‬اعزخذآ‪ٝ ٚ‬أؽ٘ب‬
‫ك‪ٓ ٠‬ؾبس‪٣‬ؼ٘ب ‪٘ٛ‬غزخذّ اُـ ‪ ٞٛ SPI‬أثطؤ ؽ‪٣ٞ‬خ ٌُٖ ع‪ َٜ‬اعزخذآ‪ٝ ٚ‬اُزؼبَٓ ٓؼب‪ .ٙ‬ك‪ُٚ ٜٞ‬‬
‫‪ 9‬أسعَ ‪ٝ‬سعَ خبفخ ثبُـ ‪ write protect‬رزؾٌْ ك‪ ٠‬ػَٔ‬
‫‪ٌُِenable/disable‬زبثخ ع اٌُبسد رخزِق ‪ٝ‬ظ‪٤‬لز‪ٜ‬ب ؽغت اُـ ‪interface protocol‬‬
‫أُغزخذّ ‪.‬‬

‫‪113Page‬‬ ‫‪Technical Support 2015‬‬


interface protocol ‫لخ ًَ سعَ رخزِق ؽغت اُـ‬٤‫ظ‬ٝ ٍٝ‫ اُغذ‬٠‫امؼ ك‬ٝ ‫ ٓب‬ٟ‫ص‬
:ّ‫أُغزخذ‬

Operation of the SD Card in SPI Mode


‫ أسعَ كوو‬7 ٚ٘ٓ ‫ ثؾزبط‬SPI Mode ‫ اُـ‬SD Card ‫ُٔب ثؾـَ اُـ‬
_ Two power supply ground (pins 3 and 6)
_ Power supply (pin 4) 3.3v
_ Chip select (pin 1)-connect to micro pin
_ Data out (pin 7)- connect to SPI pin
_ Data in (pin 2)-connect to data out from microcontroller
_ CLK (pin 5)

114Page Technical Support 2015


o/p ‫خشط‬٤‫ ث‬ٝ‫ٌش‬٤ُٔ‫ ثب‬ِٚ‫ف‬ٞ‫ ُٔب ث‬, 3.3 v ٚ‫ٔز‬٤‫ ه‬power supply ٠ِ‫ؾزـَ ػ‬٤‫اٌُبسد ث‬
logic 1 ٌُٖ ٝ‫ٌش‬٤ُِٔ input circuit ‫ اُـ‬ٚٗ‫ ا‬٠‫ ًبك‬ٙ‫د‬ٝ ٝ‫ٌش‬٤ُِٔ 2.5 ٙ‫ ٓوذاس‬voltage
maximum voltage ‫ش ع اٌُبسد الٕ اُـ‬٤‫ ًج‬ٙ‫د‬ٝ ‫ُذ‬ٞ‫ ك‬4.3 ٌٕٞ٤‫ ث‬ٝ‫ٌش‬٤ُٔ‫اُخبسط ٖٓ ا‬
َٔ‫ ػؾبٕ رؼ‬ٟ‫ٓبد د‬ٝ‫ ٓغزخذّ أُوب‬ٙ‫ ػؾبٕ ًذ‬,, 3.6 v ‫زؼذاػ اُـ‬٤ٓ ّ‫اُذاخَ ٌُِبسد الص‬
input voltage ‫وَ اُـ‬٤ُ 2.2 k & 3.3k ‫ٓبد ثٔوذاس‬ٝ‫ ث٘غزخذّ ٓوب‬voltage divider
. 2.48 v ٠ُ‫اُذاخَ ٌُِبسد ا‬
Input voltage=

The Card logic levels are:


Maximum logic 0 output voltage, VOL = 0.4125 V
Maximum required logic 0 input voltage, VIL = 0.825 V
Minimum required logic 1 input voltage, VIH = 2.0625 V
Maximum logic 1 input voltage = 3.6 V

,, ‫اٌُزبثخ‬ٝ ‫خ اُوشاءح‬٤ِٔ‫ أص٘بء ػ‬100—200 mA ٠ُ‫ا‬ٞ‫بسؽ‬٤‫ِي ر‬ٜ‫ ثزغز‬SD cards ‫اُـ‬


٠ُ‫ا‬ٞ‫ِي ؽ‬ٜ‫رغز‬ٝ , voltage regulator ٖٓ ٚ٤ِ‫ٍ ػ‬ٞ‫ٌُٖ ٌٖٓٔ اُؾق‬ٝ ٠ُ‫ ػب‬ٙ‫بس د‬٤‫اُز‬
5 ٍ‫آش خال‬ٝ‫ أ‬ٟ‫غزِْ اٌُبسد أ‬٣ ُْ ‫ؾذس ارا‬٣ ‫زا‬ٛٝ sleep mode ‫ ؽبُخ اُـ‬٠‫ ك‬150 pA
:‫ اُخبؿ ثبُذائشح‬power supply ‫شح اُـ‬٣‫ دا‬ٟ‫ د‬.٠ٗ‫ا‬ٞ‫ص‬

115Page Technical Support 2015


‫ٍيض٘ظت‪:‬‬
‫اُـ ‪ cards‬اُؾذ‪٣‬ضخ أفجؾذ ‪ edged triggered‬ثٔؼ٘‪ ٠‬اٗ‪ٜ‬ب ٓؾزبعخ '‪very 'square‬‬
‫‪ٝ transitions‬ثبُزبُ‪ ٠‬اُـ ‪ٝ resistor dividers‬اُـؤعالى اُط‪ِ٣ٞ‬خ ‪ ْٜ٤ُ ٌٕٞ٤ٛ‬رؤص‪٤‬ش‬
‫عِج‪ ٠‬ػِ‪ ٠‬اُـ ‪ transition speed‬ػؾبٕ ًذ‪٣ ٙ‬لنَ اعزخذاّ االعالى اُوق‪٤‬شح ‪ٝ‬رغ٘ت‬
‫اعزخذاّ اُـ ‪ resistor dividers‬ػؾبٕ اُـ ‪ ,, 3.3V logic‬ص‪ٓ ٟ‬ب ك‪ ٠‬اُق‪ٞ‬سح دا رؤص‪٤‬ش‬
‫اعزخذاّ ٓوب‪ٓٝ‬خ ‪ 10k‬ػِ‪ ٠‬اُخشط‪:‬‬

‫ُزا ٖٓ أٌُٖٔ اعزجذُ‪ٜ‬ب ثـ ‪ logic shifter‬ص‪HEF4050, 74LVX245 or ٟ‬‬


‫‪ٝ . 74AHC125 chips‬ك‪ٞٓ ٠‬د‪ٞ٣‬الد عب‪ٛ‬ضح ‪ microSD breakout board‬ص‪ٟ‬‬
‫اُِ‪ ٠‬ك‪ ٠‬اُق‪ٞ‬سح عب‪ٛ‬ضح ُِز‪ٞ‬ف‪ َ٤‬ػِط‪:ٍٞ‬‬

‫ٌُٖ كؼِ‪٤‬ب ُ‪ ٞ‬اعزخذٓذ ٓوب‪ٓٝ‬بد ػبد‪ٓٝ ٟ‬ؼ ‪٤ٛ‬ؾقَ ؽبعخ‪.‬‬

‫‪116Page‬‬ ‫‪Technical Support 2015‬‬


: memory cards‫أّ٘اع اه‬
: ‫ المشهور منها‬memory cards ‫ٌوجد أنواع من الـ‬
--> Smart media (SM) card
--> Multimedia card (MMC)
--> Compact flash (CF) card
--> Memory stick (MS) card
--> Microdrive
-> xD card
--> Secure digital (SD) card
‫ٔب‬ٛٝ MMC ‫ اُـ‬٠ِ‫ؼزٔذ ػ‬٣ ‫ األعبط‬٠‫ ك‬ٞٛٝ ‫اع أُغزخذٓخ‬ٞٗ‫ ٖٓ أًزش األ‬SD cards ‫اُـ‬
‫اُـ‬ٝ ٚ٤ِ‫ ػ‬٠ُِ‫بٗبد ا‬٤‫ ٌٖٓٔ أؽلش اُج‬٠ٗ‫ ا‬option ٚ٤‫ ك‬SD ‫لخ ٓب ػذا إٔ اُـ‬٤‫ظ‬ُٞ‫ا ٗلظ ا‬ٝ‫ؤد‬٤‫ث‬
‫َ ادساط اُـ‬ٜ‫ ٌُٖ ٖٓ اُغ‬MMC slot ‫ اُـ‬٠‫ ك‬ٚ‫مؼ‬ٝ ٌٖٔ٣ ‫ال‬ٝ MMC ‫ أسكغ ٖٓ اُـ‬SD
.SD card slots ‫ اُـ‬٠‫ ك‬MMC

MikroC Language SD Card Library Functions


‫عذ‬ٞ‫ٌُٖ ر‬ٝ ‫ٓؼوذح‬ٝ ‫ ًبسد فؼجخ‬ٟ‫س‬ٞٔ٤ُٔ‫ ا‬٠‫ ك‬ٝ‫اٌُزبثخ ٖٓ أ‬ٝ ‫خ اُوشاءح‬٤ِٔ‫ٗغذ إٔ ػ‬
َٔ‫ ثزؼ‬٠ُِ‫ا‬ٝ Multi Media Card Library ‫ كبُـ‬٠‫ ع‬ٝ‫ٌش‬٤ُٔ‫ ا‬٠‫ضح ك‬ٛ‫ٌٓزجبد عب‬
SPI communication ‫ن اُـ‬٣‫ ػٖ هش‬Multi Media Card ‫ ُِـ‬accessing data
٠ُِ‫ ا‬cards ‫زح أٌُزجبد ُِـ‬ٛ .SD and SDHC‫نب اُـ‬٣‫ ثزذػْ أ‬ٟ‫أٌُزجخ د‬ٝ
‫ ٓؼ‬2GB ‫ب ُؾذ‬ٜ‫ عؼز‬٠ُِ‫د ا‬ٝ‫ اٌُش‬٠ٛٝ ‫ كوو‬formatted with FAT16 or FAT
ٖٓ ٠ِ‫ب أػ‬ٜ‫ عؼز‬٠ُِ‫د ا‬ٝ‫ ٌُِش‬formatted with FAT32 ٠ُِ‫د ا‬ٝ‫ أٓب اٌُش‬ٙ‫أًزش ٖٓ ًذ‬
.‫هغ‬ُٞٔ‫زا ا‬ٛ ٖٓ َٔ‫ رؾ‬ٚ‫أٌُزجبد اُخبفخ ث‬ٝ ‫ذ‬٣‫غب ثب‬٤‫ ع‬2
http://www.libstock.com/projects/view/108/fat32-library
117Page Technical Support 2015
: ‫ٍالصظاث ٕاٍت‬
.‫ كوو‬PIC18 family ٠ِ‫ ال رؼَٔ اال ػ‬MMC FAT 16 Library ‫_ اُـ‬1
َٔ‫غت ػ‬٣ ‫ ُزا‬SPI module for communication ‫_ أٌُزجخ رغزخذّ اُـ‬2
‫ن‬٣‫رُي ػٖ هش‬ٝ .‫ هجَ اعزخذاّ أٌُزجخ‬SPI module ‫ ُِـ‬initialize
SPIx_Init_Advanced routine with the following parameters:
 SPI Master

 Primary prescaler 64

 Data sampled in the middle of data output time

 Clock idle low

 Serial output data changes on transition from low to high

edge.
‫ؾزـَ ثبُـ‬٤ٛ ٚٗ‫ْ ا‬ٜ‫ل‬٣ ‫ب ػؾبٕ اُـٌبسد‬ٜ‫ل‬٣‫ الثذ ٖٓ رؼش‬٠‫شاد اُز‬٤‫عذ ثؼل أُزـ‬ٞ٣ _3
‫ اُـ‬٠ِ‫ٕ ػ‬ٌٞ٤‫ ث‬by default ٚٗ‫ ال‬SD card protocol ‫ ٓؼ ثبُـ‬SPI protocol
.SD card bus
The following variable must be
Description
defined in all projects using Example :
:
MMC library:
Chip select sbit Mmc_Chip_Selec
extern sfr sbit Mmc_Chip_Select;
pin. at RC0_bit;
Direction of sbit Mmc_Chip_Selec
extern sfr
the chip _Direction atTRISC0_
sbit Mmc_Chip_Select_Direction;
select pin. bit;

118Page Technical Support 2015


‫‪ٞ٣ _4‬عذ ثؼل اُـ ‪ routines‬اُخبفخ ثبُـ ‪ٓ file handling‬ضَ (هشاءح ِٓق_ؽزف‬
‫ِٓق‪ٞٓ )......‬ع‪ٞ‬دح ك‪ ٠‬أٌُزجخ ‪ .‬اُـ ‪ routines‬د‪ ٟ‬رغزخذّ كوو ٖٓ خالٍ اُـ ‪FAT16‬‬
‫‪. file system‬‬

‫‪MikroC Language SD Card Library Functions‬‬


‫‪ٞ٣‬عذ اُؼذ‪٣‬ذ ٖٓ األ‪ٝ‬آش ك‪ ٠‬أٌُزجخ ٌُ٘٘ب ع٘زطشم ُجؼل األ‪ٝ‬آش ‪ٗٝ‬زٌِْ ػٖ ‪ٝ‬ظ‪٤‬لخ ًَ‬
‫ٓ٘‪ٜ‬ب ٌُٖ ػِ‪٤‬ي ثوشاءح أٌُزجخ ُل‪ ْٜ‬األ‪ٝ‬آش ع‪٤‬ذاً‪.‬‬

‫‪119Page‬‬ ‫‪Technical Support 2015‬‬


Mmc_Init
Description ‫ن اُـ‬٣‫ ػٖ هش‬MMC ‫ ُِـ‬initialization َٔ‫خبفخ ثؼ‬
َ‫ هج‬Mmc_Init ‫ ُِـ‬call َٔ‫ أػ‬٠ٗ‫الثذ ا‬ٝ ,,SPI interface
‫ب‬ُٜ function ‫اُـ‬ٝ .‫ أٌُزجخ‬٠‫ ك‬functions ٟ‫اعزخذاّ أ‬
successfully ٝ detected ‫ اٌُبسد‬ُٞ 0 ‫ ثـ‬return ٚٔ٤‫ه‬
.‫ش رُي‬٤‫ ؽذس ؿ‬ُٞ 1 ‫ ثـ‬return ٚٔ٤‫ ه‬ٝ .initialized

Requires .Chip_Select ‫شاد اُخبفخ ثبُـ‬٤‫ق أُزـ‬٣‫_رؼش‬1


Mmc_Chip_Select: Chip Select line
Mmc_Chip_Select_Direction: Direction of
.SPI module ‫ ُِـ‬Initialize َٔ‫_ ػ‬2
SPI1_Init, SPI1_Init_Advanced routines.
Example Mmc_Init();

Mmc_Fat_Init
Returns  0 - if MMC/SD card was detected and
successfully initialized
 1 - if FAT16 boot sector was not found
 255 - if MMC/SD card was not detected
.‫ه أفال‬ٞ‫ اٌُبسد ٓؼ ٓؾط‬٠٘‫ؼ‬٣ 255
Descriptio reads ‫وشأ اُـ‬٣ٝ MMC/SD card ‫ ُِـ‬Initialize َٔ‫ؼ‬٤‫ث‬
n ‫ أٌُزجخ‬٠ُِ‫غزخشط اُذارب ا‬٣ٝ MMC/SD FAT16 boot sector
..‫ب‬ٛ‫ٓؾزغب‬

121Page Technical Support 2015


Example ٘‫ ى‬init routine ٍِ ‫ بذال‬Mmc_Fat_Init ً‫ٍَنِ أستخذ‬
.‫ اىن٘د بٖذا اىشنو‬ٚ‫ ٗتنتب ف‬formatting ‫ٍضتاد أػَو‬
if (Mmc_Fat_Init()==0) {
// if MMC/SD card was detected and initialized
SPI1_Init_Advanced(_SPI_MASTER_OSC_DIV4,
_SPI_DATA_SAMPLE_MIDDLE,
_SPI_CLK_IDLE_LOW, _SPI_LOW_2_HIGH);}

Mmc_Fat_Assign
Prototype Unsigned
short Mmc_Fat_Assign(char *filename, char file_cr
e_attr);
Description ‫ أؽزكخ‬ٝ‫ أ‬ٚ‫ أًزج‬ٝ‫ أ‬ٙ‫ ٓؾزبط أهشا‬٠ُِ‫ ُِِٔق ا‬Assign َٔ‫ب ثزؼ‬ٜ‫لز‬٤‫ظ‬ٝ
. Parameters 2 ‫ؾزبط‬٤‫ األٓش ث‬....
َ‫( ٓض‬file_name.extension) ٙ‫ اعْ أُِق ثبٓزذاد‬:filename -1
‫اء هشاءح‬ٞ‫ ع‬ٚ٘٤‫خ ٓؼ‬٤ِٔ‫ ػ‬ٚ٤ِ‫ ٓؾزبط أػَٔ ػ‬٠ُِ‫( ا‬file1.TXT)
....‫ًزبثخ‬
file creation and attributes ‫ اخزقبس‬:file_cre_attr -2
file attribute ‫مؼ اُـ‬ٞ‫ ثز‬٠ُِ‫ا‬ٝ ‫خ‬٤ُ‫ اُزب‬bits ‫ب أؽذ اُـ‬ٜ٤‫ثنغ ك‬ٝ
٠٘‫ ُِوشاءح كوو ثٔؼ‬ٝ‫ أ‬٠‫ ٓخل‬ٞٛ َٛ ٟ‫ ص‬ًِٚٞ‫ع‬ٝ ‫اؿ أُِق‬ٞ‫ خ‬٠ٛٝ
‫ب‬ٜٓ‫ ثبعزخذ‬٠ُِ‫ ا‬bits ‫ ثؼل اُـ‬ٟ‫د‬ٝ ........... َ٣‫ش هبثَ ُِزؼذ‬٤‫ ؿ‬ٚٗ‫ا‬
.MMC ‫ٓبد أًزش أهشأ أٌُزجخ اُخبفخ ثبُـ‬ِٞ‫ُٔؼ‬ٝ ‫ثٌضشح‬

121Page Technical Support 2015


Example // create file with archive attribute if it does not
already exist
Mmc_Fat_Assign("MIKRO007.TXT",0xA0);
ٝ‫أ‬
unsigned char error;
char file_name[] = "azex.txt";
error=Mmc_Fat_Assign(&file_name,0xA0);

Mmc_Fat_Rewrite
Description .ٚ‫بر‬٣ٞ‫ٔغؼ ٓؾز‬٤ٛ ٠‫ أُِق ٓؼ كبم‬ُٞ ٙ‫وشا‬٣ ٕ‫ ػؾب‬file ‫لزؼ اُـ‬٤‫ث‬

Example Mmc_Fat_Rewrite();

‫لو عاوز أفتح ملف مكتوب فٌه وأكمل كتابة فٌه ممسحش المكتوب وقتها األول هجمع‬
Mmc_Fat_Write ‫ وبعدٌن استخدم‬Mmc_Fat_Append ‫اللى كتبته عن طرٌق‬
.‫الستكمال الكتابة فى الملف‬
Mmc_Fat_Append
Description assigned file ‫لزؼ اُـ‬٣ ‫زا األٓش‬ٜ‫ق دارب ُِٔق ك‬٤‫ أم‬٠ٗ‫ أسدد ا‬ُٞ
٠‫ ك‬byte ‫وق ػ٘ذ أخش‬٤‫ ث‬file pointers ‫ز٘لز اُـ‬٣ ٙ‫ُٔب األٓش د‬ٝ
.byte ‫جذأ ٖٓ أخش‬ٛ ٚ٤‫ أًزت ك‬ٝ‫د أُِق أ‬ٝ‫ذ أص‬٤‫ ؽج‬ُٞ ٙ‫ثٌذ‬ٝ ‫أُِق‬

Example // open file for appending


Mmc_Fat_Append();

122Page Technical Support 2015


Mmc_Fat_Write
Description ِٚ‫ ػِٔز‬٠ُِ‫ػ ٌُِزبثخ ا‬ٞ‫ أُِق أُلز‬٠‫ ك‬number of bytes ‫ٌزت‬٣
: ‫ٔب‬ٛٝ 2 parameters ‫ؾزبط‬٤‫ث‬ٝ assign
.‫ب‬ٜ‫ٌزج‬ٛ ٠ُِ‫ اُذارب ا‬: fdata _1
.‫ب‬ٜ‫ٌزج‬ٛ ٠ُِ‫ ا‬bytes ‫ ػذد اُـ‬:data_len _2

Example Mmc_Fat_Write(txt,255);
Mmc_Fat_Write("Hello world",255);
: ٝ‫أ‬
char write_data[] = "azex 2015";
Mmc_Fat_Write(&write_data,11);

Mmc_Fat_Read
Description ‫ب‬٤ُ‫ػ ؽب‬ٞ‫ أُلز‬assigned file ‫ كوو ٖٓ اُـ‬byte ‫اؽذ‬ٝ ‫وشأ‬٤‫ث‬
‫ب‬٤‫ رِوبئ‬file pointers ‫ كبٕ اُـ‬٠ُٝ‫ األ‬byte ‫ثؼذ هشاءح اُـ‬ٝ .‫ُِوشاءح‬
ٖٓ ‫ ُزا الثذ‬,, ‫ أُِق‬٠‫ ك‬٠ُ‫ اُزب‬character ‫ ػ٘ذ اُـ‬set ‫ؾقِخ‬٤‫ث‬
: ‫اؽذ كوو‬ٝ Parameter ‫ؾزبط‬٤‫ث‬ٝ .ٚ‫ٓؼشكخ ؽغْ أُِق هجَ هشائز‬
ٕ‫زا األٓش كب‬ٛ ‫ز‬٤‫ ثٔغشد ر٘ل‬read byte ‫ٖ اُـ‬٣‫ ُزخض‬buffer :Bdata
‫ خالٍ اُـ‬returned ‫ب‬ٜ‫ٔز‬٤‫ه‬ٝ buffer ‫ اُـ‬٠‫ ثززخضٕ ك‬read byte ‫اُـ‬
.ٙ‫ د‬parameter

Example char character;


Mmc_Fat_Read(&character);
‫ اللى فٌه ودا بٌتم عن‬bytes ‫لكن أنا محتاج أعرف حجم الملف عشان أقدر أقرى كل‬
.‫ دى الزم تسبق أمر القراءة‬function ‫ عشان كده ال‬Mmc_Fat_Reset ‫طرٌق‬
123Page Technical Support 2015
Mmc_Fat_Reset
Description ٠ُِ‫س ع أُِق ا‬ٝ‫ؾب‬٣ ‫ػ‬ٝ‫ش‬٤‫ ث‬٠ُِ‫ ا‬file pointer ‫ ُِـ‬reset َٔ‫ؼ‬٤‫ث‬
Mmc_Fat_Assign(&file_name, ‫ األٓش‬ٟ‫ ص‬ٚ‫ أًزج‬ٝ‫ أ‬ٙ‫وشا‬ٛ
;0x20)
َ‫ؾق‬٤‫ُٔب ث‬ٝ ,, ‫س ع أُِق‬ٝ‫ؾب‬٤‫ ث‬pointer ٖ‫اُؼالٓخ & ػجبسح ػ‬
assign ِِٚ٘ٔ‫ ػ‬٠ُِ‫خ أُِق ا‬٣‫ت ُجذا‬ٛ‫ز‬٤‫ ث‬file pointer ‫ اُـ‬reset
: 1 parameter ‫ؾزبط‬٤‫ث‬ٝ ٙ‫وشا‬٣ ٕ‫ػؾب‬
‫ ثؼذ كزؼ‬ٚٗ‫ش أ‬٤‫ ؽ‬. file size ‫ اُـ‬ٚ٤‫ ثخضٕ ك‬buffer : size-1
‫ب‬ِٜ‫ؾق‬٤‫ ث‬ٝ bufferٍ‫ ا‬٠‫ ثززخضٕ ك‬ٚ‫ٔز‬٤‫أُِق كبٕ ؽغْ أُِق ه‬
.ٙ‫ د‬parameter ‫ن اُـ‬٣‫ ػٖ هش‬return

Example unsigned long size;


Mmc_Fat_Reset(&size);
.function ‫أو ممكن معرفة الحجم من خالل هذة الـ‬
Mmc_Fat_Get_File_Size
Description ‫اُـ‬ٝ . bytes ‫ ثبُـ‬assigned file ‫ ثزوشا ؽغْ اُـ‬function ‫زح اُـ‬ٛ
.bytes ‫ ػجبسح ػٖ ؽغْ أُِق ثبُـ‬return ‫ٔخ‬٤‫ب ه‬ُٜ function
‫ ؽبُخ‬٠‫غزخذّ ك‬٣ ‫لخ األٓش اُغبثن ٌُٖ األٓش اُغبثن‬٤‫ظ‬ٝ ‫ ٗلظ‬٠ٛ
‫زا‬ٛ ‫ أٓب‬assign ِٚٔ‫٘ؼ‬ٛ ٠ُِ‫س ع أُِق ا‬ٝ‫ؾب‬٣ pointer ّ‫اعزخذا‬
‫ ُِِٔق‬assign ‫ٌُٖ ػِٔ٘ب‬ٝ pointer ّ‫ ؽبُخ ػذّ اعزخذا‬٠‫األٓش ك‬
.ٚٔ‫ثبعزخذاّ اع‬
Example file_name = "MYFILEXXTXT";
Mmc_Fat_Assign(file_name);
mmc_size = Mmc_Fat_Get_File_Size;

124Page Technical Support 2015


Mmc_Fat_Delete
Returns  1 - if there are no assigned files
 2 - if an error occurred during deleting
 0 - if deleting was successful
Description Deletes currently assigned file from MMC/SD card.

Example filename[7] = 'F';


Mmc_Fat_Assign(filename, 0);
Mmc_Fat_Delete();

Mmc_Fat_Set_File_Date
Description Sets the date/time stamp. Any subsequent file write
operation will write this stamp to the currently
assigned file's time/date attributs.
Parameters:
 year: year attribute. Valid values: 1980-2107
 month: month attribute. Valid values: 1-12
 day: day attribute. Valid values: 1-31
 hours: hours attribute. Valid values: 0-23
 mins: minutes attribute. Valid values: 0-59
 seconds: seconds attribute. Valid values: 0-
59
Requires The file must be previously
assigned. Mmc_Fat_Assign.
The file must be opened for
125Page Technical Support 2015
writing. Mmc_Fat_Rewrite or Mmc_Fat_Append.
Example filename[7] = 'B';
Mmc_Fat_Assign(&filename, 0);
Mmc_Fat_Set_File_Date(2014, 9, 15, 9, 20, 0);
Mmc_Fat_Append();
Mmc_Fat_Write(" for mikroElektronika 2010n",
27);

:‫لو عاوز أعرف تارٌخ وساعة انشاء الملف ٌتم عن طرٌق‬


Mmc_Fat_Get_File_Date
Description Reads time/date attributes of the currently assigned
file.
Parameters:
 year: buffer to store year attribute to. Upon
function execution year attribute is returned
through this parameter.
 month: buffer to store month attribute to.
Upon function execution month attribute is
returned through this parameter.
 day: buffer to store day attribute to. Upon
function execution day attribute is returned
through this parameter.
 hours: buffer to store hours attribute to. Upon
function execution hours attribute is returned

126Page Technical Support 2015


through this parameter.
 mins: buffer to store minutes attribute to.
Upon function execution minutes attribute is
returned through this parameter.
Requires The file must be previously assigned.
See Mmc_Fat_Assign.
Example // get Date/time of file
unsigned yr;
char mnth, dat, hrs, mins;
...
file_Name = "MYFILEABTXT";
Mmc_Fat_Assign(file_Name);
Mmc_Fat_Get_File_Date(&yr, &mnth, &day, &hrs,
&mins);

Mmc_Read_Sector
Description MMC card ‫ ٖٓ اُـ‬one sector (512 bytes) ‫وشا‬٤‫ ث‬ٚ‫لز‬٤‫ظ‬ٝ
: Parameters 2 ‫ؾزبط‬٤‫ث‬
.ٙ‫ ٓؾزبط أهشا‬٠ُِ‫ ا‬sector ‫ سهْ اُـ‬ٚ٤‫ ثنغ ك‬:Sector
ٕ‫ ػؾب‬512 bytes ‫ب‬ُٜٞ‫ٕ ه‬ٌٞ٣ َ‫كخ ع األه‬ٞ‫ ٓقل‬ٝ‫ أ‬buffer :Dbuff
.‫ب‬ٜ٤‫ ك‬data ‫أخضٕ اُـ‬
reading ‫ اٌُبسد‬ُٞ 0 ‫ ثـ‬return ٚٔ٤‫ب ه‬ُٜ function ‫اُـ‬ٝ
.‫ ؽذس خطؤ‬ُٞ 1 ‫ ثـ‬return ٚٔ٤‫ ه‬ٝ .successfully

127Page Technical Support 2015


Example unsigned char data[512];
unsigned short Sect;
Sect = Mmc_Read_Sector(10,data);

Mmc_Write_Sector
Prototype unsigned char Mmc_Write_Sector(unsigned
long sector, char *dbuff);
Description MMC ‫ ٖٓ اُـ‬one sector ٠‫( ك‬512 bytes) ‫ٌزت‬٤‫ ث‬ٚ‫لز‬٤‫ظ‬ٝ
: Parameters 2 ‫ؾزبط‬٤‫ ث‬card
.ٚ٤‫ ٓؾزبط أًزت ك‬٠ُِ‫ ا‬sector ‫ سهْ اُـ‬ٚ٤‫ ثنغ ك‬:Sector
.512 bytes ‫ب‬ُٜٞ‫ٕ ه‬ٌٞ٣ َ‫كخ ع األه‬ٞ‫ ٓقل‬ٝ‫ أ‬buffer :Dbuff
writing ‫ اٌُبسد‬ُٞ 0 ‫ ثـ‬return ٚٔ٤‫ب ه‬ُٜ function ‫اُـ‬ٝ
‫ اسعبٍ اُـ‬٠‫ ؽذس خطؤ ك‬ُٞ 1 ‫ ثـ‬return ٚٔ٤‫ ه‬ٝ .successfully
٠‫ ؽذس خطؤ ك‬ُٞ 2 ‫ ثـ‬return ٚٔ٤‫ ه‬ٝ . write command
. ‫اٌُزبثخ‬

Example unsigned char data[512];


unsigned short Sect;
Sect = Mmc_Write_Sector(10,data);

‫ اللى هبدأ منه ممكن انشئ ملف أكتب فٌه أو أقرأ منه‬sector ‫لو مكنتش عارف رقم ال‬
:‫ دى‬function ‫ الخاص بٌه من الـ‬sector ‫وهكون عارف رقم ال‬

128Page Technical Support 2015


Mmc_Fat_Get_Swap_File
Returns ‫ ٓغبؽخ‬٠‫ ك‬ُٞ ٙ‫٘٘ؾؤ‬ٛ ٠ُِ‫ ا‬swap file ‫ ُِـ‬sector ‫_ سهْ اُـ‬
.MMC/SD card ‫ اُـ‬٠‫خ ك‬٤‫ًبك‬
.‫ش رُي‬٤‫ ارا ؽذس ؿ‬0_
Descriptio ‫ اُـ‬٠ِ‫ٖ ػ‬٤‫اعْ ٓؼ‬ٝ ‫ ؽغْ ٓؾذد‬ُٚ swap file ‫ ؽبُخ اٗؾبء‬٠‫رغزخذّ ك‬
n ٝ‫خ اُوشاءح أ‬٤ِٔ‫ عؼَ ػ‬ٞٛ ‫زا أُِق‬ٛ ‫اُـشك ٖٓ اٗؾبء‬ٝ. MMC/SD
‫ن‬٣‫ؼخ ًِٔب أٌٖٓ ػٖ هش‬٣‫اٌُزبثخ ٖٓ اٌُبسد عش‬
Mmc_Read_Sector()
and Mmc_Write_Sector() functions
Parameters:
.‫ب‬ٜ٘ٓ ٌٕٞ‫ز‬٣ ‫ ٓؾزبط أُِق‬٠ُِ‫ ا‬sectors ٍ‫ ػذد ا‬: sectors_cnt_1
َ‫( ٓض‬file_name.extension) ٙ‫ اعْ أُِق ثبٓزذاد‬:filename _2
‫اء هشاءح‬ٞ‫ ع‬ٚ٘٤‫خ ٓؼ‬٤ِٔ‫ ػ‬ٚ٤ِ‫ ٓؾزبط أػَٔ ػ‬٠ُِ‫( ا‬file1.TXT)
....‫ًزبثخ‬
file creation and attributes ‫ اخزقبس‬:file_cre_attr _3
‫اؿ أُِق‬ٞ‫ خ‬٠ٛٝ file attribute ‫مؼ اُـ‬ٞ‫ ثز‬bit ‫ب‬ٜ٤‫ثنغ ك‬ٝ
.َ٣‫ش هبثَ ُِزؼذ‬٤‫ ؿ‬ٚٗ‫ ا‬٠٘‫ ُِوشاءح كوو ثٔؼ‬ٝ‫ أ‬٠‫ ٓخل‬ٞٛ َٛ ٟ‫ ص‬ًِٚٞ‫ع‬ٝ
..........

129Page Technical Support 2015


Example char Buffer[512];
size = Mmc_Fat_Get_Swap_File(5000, "mikroE.txt",
0x20); //return value of no. Of sectors
if (size <> 0) {
for(i=0; i<5000; i++) {
Mmc_Write_Sector(size++, Buffer);

}
}

Mmc_Fat_QuickFormat
Returns  0 - if MMC/SD card was detected,
successfully formated and initialized
 1 - if FAT16 format was unsuccessful
 255 - if MMC/SD card was not detected
Description Parameter ‫ؾزبط‬٤‫ث‬ٝ initialize ‫نب‬٣‫ا‬ٝ ‫ ٌُِبسد‬format َٔ‫ؼ‬٤‫ث‬
: ٞٛٝ ‫اؽذ‬ٝ
.11 characters ُٚٞ‫ ه‬label ٖ‫ ػجبسح ػ‬:mmc_fat_label

Example // Format and initialize MMC/SD card and


MMC_FAT16 library globals
if (!Mmc_Fat_QuickFormat(&mmc_fat_label)) {
...
}

131Page Technical Support 2015


‫اىَشزٗع األٗه ‪:‬‬
‫ثشٗبٓظ ٌُزبثخ ٗـ ك‪ِٓ ٠‬ق صْ هشاءر‪ٝ ٚ‬اظ‪ٜ‬بسح ع اُؾبؽخ ‪.‬‬
‫شزس اىن٘د ‪:‬‬
‫رطج‪٤‬ن ثغ‪٤‬و العزخذاّ أ‪ٝ‬آش اُـ ‪ SD card‬ػٖ هش‪٣‬ن ػَٔ ‪ٌُِ initialization‬بسد‬
‫ك‪ ٠‬اُجذا‪٣‬خ ‪ ,‬ارا ًبٕ اٌُبسد ؿ‪٤‬ش ٓذسط عزظ‪ٜ‬ش سعبُخ "‪ٝ " Plz Insert Card‬ػ٘ذٓب ‪٣‬زْ‬
‫ادساط اٌُبسد عزظ‪ٜ‬ش سعبُخ ‪ ,, Init OK‬صْ اُجذء ك‪ ٠‬اٗؾبء ِٓق عذ‪٣‬ذ ػٖ هش‪٣‬ن األٓش‬
‫‪ٝ assign file‬ػ٘ذ اٗؾبء أُِق رظ‪ٜ‬ش سعبُخ ع اُؾبؽخ ‪ file created‬صْ ٗجذء ثٌزبثخ‬
‫ٗـ ك‪ ٠‬أُِق ‪ azex 2015 ٌٖ٤ُٝ‬صْ هشاءر‪ٝ ٚ‬اظ‪ٜ‬بسح ع اُؾبؽخ ‪ُ ...‬ل‪ ْٜ‬اٌُ‪ٞ‬د ‪٣‬شع‪٠‬‬
‫هشاءح اُـ ‪ main function‬أ‪ٝ‬ال صْ اُز‪ٛ‬بة اُ‪ functions ٠‬ؽغت رشر‪٤‬ج‪ٜ‬ب ك‪ ٠‬اٍ ‪main‬‬
‫‪ ًَٝ function‬أٓش ٗشعغ اُ‪ MMC library ٖٓ ٚ٤‬ػؾبٕ ٗؼشف األٓش د‪ ٙ‬ث‪٤‬ؼَٔ ا‪ٚ٣‬‬
‫‪ٝ‬ث‪٤‬ؾزبط ‪ parameter‬ا‪ٝ ٚ٣‬ث‪٤‬شعغ ‪ٝ value‬ال أل‪.‬‬

‫‪131Page‬‬ ‫‪Technical Support 2015‬‬


: ‫اىن٘د‬

132Page Technical Support 2015


133Page Technical Support 2015
‫اىذا‪ٝ‬زة‪:‬‬
‫ػِ‪ ٠‬ثش‪ٝ‬رظ ‪٘ٛ‬ؾ‪ َ٤‬أُوب‪ٓٝ‬بد ػؾبٕ اُغٔ‪٤ُٞ٤‬ؾٖ ‪٣‬ؾزـَ‪.‬‬
‫‪134Page‬‬ ‫‪Technical Support 2015‬‬
‫اُـ ‪ٓ simulation‬ؼ ‪٤ٛ‬ؾزـَ الصّ األ‪ ٍٝ‬اعزخذّ ثشٗبٓظ ‪ٝ winimage‬د‪ ٙ‬ثشٗبٓظ‬
‫ٓغئ‪ ٍٞ‬ػٖ ػَٔ ف‪ٞ‬سح هجن االفَ ٖٓ أُ‪ٞٔ٤‬س‪ ٟ‬ثزبػ‪ ٠‬أهذس أخضٕ ك‪ٜ٤‬ب أُِلبد اُِ‪٠‬‬
‫ػب‪ٝ‬ص أهشا‪ٛ‬ب أ‪ ٝ‬أًزج‪ٜ‬ب ‪ٛ‬لزؼ اُجشٗبٓظ ‪ file ٖٓٝ‬أخزبس ‪ٛ new‬زظ‪ٜ‬ش اُؾبؽخ اُز‪ ٠‬ثؤعلَ‬
‫أخزبس االخز‪٤‬بس اُِ‪ ٠‬ػِ‪ ٚ٤‬ػالٓخ فلشاء‬

‫أربًذ إٔ اٍ ‪ file system‬ػِ‪fat12/16 ٠‬‬

‫‪135Page‬‬ ‫‪Technical Support 2015‬‬


.‫ صْ أمـو ؽلع‬.mmc ‫رؤًذ إ آزذاد اُؾلع‬

136Page Technical Support 2015


‫‪ٝ‬ثؼذ‪ ٖٓ ٖ٣‬اُجش‪ٝ‬رظ امـو ‪ right click‬ػِ‪ ٠‬اٍ ‪ٝ SD card‬أخزبس ‪edit‬‬
‫‪ٛ properties‬زظ‪ٜ‬شُي ؽبؽخ ؽَٔ ك‪ ٠‬اُـ ‪ card image file‬أُِق اُِ‪ ٠‬اٗذ اٗؾؤر‪ٚ‬‬
‫‪ٝ‬اُِ‪ ٠‬آزذادح ‪.mmc‬‬

‫أػَٔ ‪ُِ run‬ـ ‪٤ٛ simulation‬ؾزـَ ٓؼبى ‪ ,,‬ثظ اٌُالّ د‪ ٙ‬ك‪ ٠‬اُغٔ‪٤ُٞ٤‬ؾٖ ثظ ٓؼ‬
‫‪٘ٛ‬ؼِٔ‪ ٚ‬ك‪ ٠‬اُؼِٔ‪.٠‬‬

‫اىَشزٗع اىتاّ‪: ٚ‬‬


‫ًزبثخ ٗـ ك‪ sector ٠‬صْ هشاءر‪ٝ ٚ‬ػشمخ ع اُؾبؽخ‪.‬‬

‫‪137Page‬‬ ‫‪Technical Support 2015‬‬


138Page Technical Support 2015
139Page Technical Support 2015
141Page Technical Support 2015
‫ٍا ٕ‪ ٚ‬اىـ ‪ Touch screen‬؟‬
‫‪ ٠ٛ‬ػجبسح ػٖ ‪ , touch panel + graphical LCD‬اُـ ‪ touch panel‬ػجبسح ػٖ‬
‫ُ‪ٞ‬ػ سك‪٤‬غ ؽلبف ‪ٞ٣‬مغ ػِ‪ ٠‬اُـ ‪ُ GLCD‬زقجؼ ؽغبعخ ال‪ُٔ ٟ‬ظ ‪ٞ٣ٝ‬عذ ٓ٘‪ٜ‬ب أٗ‪ٞ‬اع‬
‫ًض‪٤‬شح ع٘زٌِْ ػ٘‪ٜ‬ب‪.‬‬

‫أّ٘اع اىـ ‪:Touch panel‬‬


‫اىْ٘ع األٗه (‪:)Resistive Touch‬‬
‫ٖٓ اعٔ‪ٜ‬ب رؼَٔ ثزو٘‪٤‬خ أُوب‪ٓٝ‬خ ‪ٝ‬ربص‪٤‬ش‪ٛ‬ب ك‪ ٠‬ه‪٤‬بط اُل‪ُٞ‬ذ ‪ٝ‬ثبألخـ أُوب‪ٓٝ‬خ أُزـ‪٤‬شح ‪,‬‬
‫ك‪ ٠‬أُوب‪ٓٝ‬خ أُزـ‪٤‬شح اُؼبد‪٣‬خ ُٔب ث٘ؾت ٗو‪٤‬ظ اُل‪ُٞ‬ذ ػِ‪ٜ٤‬ب ث٘و‪٤‬غخ ٖٓ اُطشف اال‪ٝ‬عو‬
‫‪ٝ‬ػِ‪ ٠‬ؽغت ٌٓبٕ اُزساع رٌ‪ ٕٞ‬ه‪ٔ٤‬خ أُوب‪ٓٝ‬خ ‪ٝ‬ثبُزبُ‪ ٠‬ه‪ٔ٤‬خ اُل‪ُٞ‬ذ ا‪٣‬نب ‪.‬‬

‫ًزُي ُ‪ٞ‬ؽخ أُِظ رؼَٔ ث٘لظ اُطش‪٣‬وخ ًَ ٗوطخ ػِ‪ ٠‬عطؼ‬


‫اُؾبؽخ رخشط ٓوذاس ٓؼ‪ ٖٓ ٖ٤‬اُل‪ُٞ‬ذ‪.‬‬

‫‪141Page‬‬ ‫‪Technical Support 2015‬‬


‫ٓٔ‪٤‬ضاد ‪ٛ‬زا اُ٘‪ٞ‬ع سخـ صٔ٘خ ‪ ,‬اُذهخ‪ ,‬ع‪ُٜٞ‬خ اُزق٘‪٤‬غ ‪ ,‬ع‪ُٜٞ‬خ اُزؾٌْ ‪ٝ‬اُزؼبَٓ ٓؼ‪ُ ٚ‬زا‬
‫كبٗ‪ ٚ‬اُ٘‪ٞ‬ع االًضش اعزخذآب ‪.‬‬
‫ػ‪ٞ٤‬ة ‪ٛ‬زا اُ٘‪ٞ‬ع‪:‬‬
‫‪٣ _1‬زِق ٓغ اُ‪ٞ‬هذ ‪ٝ‬االعزؼٔبٍ ثؾٌَ اعشع ٖٓ ؿ‪٤‬شح‪.‬‬
‫‪ _2‬ارا رِلذ ٗوطخ ‪ٝ‬اؽذح ٓ٘خ ‪٣‬زِق ًِخ‪.‬‬
‫‪ _3‬ال ‪٣‬ؼَٔ ٓغ اًضش ٖٓ ُِٔغخ ك‪ٗ ٠‬لظ اُ‪ٞ‬هذ ثطش‪٣‬وخ ٓجبؽشح‪.‬‬
‫‪٣_4‬ؾزبط اُ‪ ٠‬اُنـو ػِ‪٤‬خ اُ‪ ٠‬ؽذ ٓب ٌُ‪٣ ٠‬زْ االؽغبط ثبُِٔظ‪.‬‬
‫‪٣_5‬غز‪ِٜ‬ي اٌُض‪٤‬ش ٖٓ اٌُ‪ٜ‬شثبء ثبُٔوبسٗخ ٓغ اٗ‪ٞ‬اع اخش‪.ٟ‬‬
‫‪_6‬ال ‪ٔ٣‬شس اُن‪ٞ‬ء ث٘غجخ ‪ 100%‬ثَ اهَ ٖٓ رُي‪.‬‬

‫اىْ٘ع اىخاّ‪: IR Touch ٚ‬‬


‫‪٣‬ؼَٔ ثزو٘‪٤‬خ االؽؼ‪ ٚ‬رؾذ ؽٔشاء‪ Infra Red‬ػٖ هش‪٣‬ن ‪ٝ‬ع‪ٞ‬د ٓشعالد ‪ٓٝ‬غزوجالد‬
‫ُالؽؼ‪ ٚ‬اُزؾذ ؽٔشاء آبّ ثؼن‪ ْٜ‬اُجؼل ‪ٛٝ‬زا ‪ٓ ٌٕٞ٣‬غبسد ٖٓ االؽؼ‪ ٚ‬اُزؾذ ؽٔشاء‬
‫‪ٝ‬ػ٘ذ اٗوطبع اؽذ ‪ٛ‬ز‪ ٙ‬أُغبساد ك‪ٜ‬زا ‪٣‬ؼ٘‪ ٠‬اٗ‪ ٚ‬رْ اُنـو ك‪ٛ ٠‬ز‪ ٙ‬أُ٘طوخ ‪ٓ ٞٛٝ‬ب ‪٣‬غجت‬
‫اٗوطبع اُؾؼبع ثغجت افجغ اُ‪٤‬ذ‪.‬‬

‫ٓٔ‪٤‬ضاد ‪ٛ‬زا اُ٘‪ٞ‬ع ‪:‬‬


‫‪ ٌٖٔ٣ _1‬اعزخذآخ ػِ‪ ٠‬اعطؼ ٓخزِلخ‬
‫‪ ٌٖٔ٣ _2‬إ ‪٣‬ؼَٔ ثوِْ ا‪ ٝ‬ثبفجغ ا‪ ٝ‬ا‪ ٟ‬ؽ‪٠‬ء اخش‬
‫‪142Page‬‬ ‫‪Technical Support 2015‬‬
‫‪ ٌٖٔ٣ _3‬إ ‪ِ٣‬زوو اًضش ٖٓ ؽشًخ ا‪ ٝ‬مـطخ ك‪ٝ ٠‬هذ ‪ٝ‬اؽذ‬
‫اىْ٘ع اىخاىج‪: Capacitive Touch‬‬
‫‪ٛ‬زا اُ٘‪ٞ‬ع ‪ ٞٛ‬االكنَ ‪ٝ‬االه‪ ٟٞ‬ث‪ ْٜ٘٤‬عٔ‪٤‬ؼب الٕ رو٘‪٤‬برخ ُ‪ٜ‬ب ٓٔ‪٤‬ضاد ػذح ‪ ٌُٚ٘ٝ‬ك‪ٗ ٠‬لظ‬
‫اُ‪ٞ‬هذ ‪ ٞٛ‬االًضش رؼو‪٤‬ذا ‪ٝ‬االػِ‪ ٠‬رٌِلخ ث‪ ْٜ٘٤‬ا‪٣‬نب ‪.‬‬
‫‪ٝ‬رؼزٔذ ػِ‪ ٠‬كشم اُغ‪ٜ‬ذ ث‪ ٖ٤‬عطؼ اُؾبؽخ ‪ٝ‬سأط افجغ اُؾخـ أُغزخذّ ‪ٝ‬اُز‪٣ ٟ‬غزخذّ‬
‫ُز‪٤ُٞ‬ذ اُز‪٤‬بس اٌُ‪ٜ‬شثبئ‪ ٢‬أُؼجش ػٖ ٌٓبٕ اإلفجغ ػِ‪ ٠‬اُؾبؽخ‪ٓ ،‬غزل‪٤‬ذحً ٖٓ اُؾؾ٘بد‬
‫اٌُ‪ٜ‬شثبئ‪٤‬خ اُز‪٣ ٢‬ؾِٔ‪ٜ‬ب عغْ اإلٗغبٕ‪.‬‬
‫ٖٓ أ‪ ْٛ‬ا‪٣‬غبث‪٤‬بر‪ٜ‬ب دػٔ‪ٜ‬ب ُِٔظ أُزؼذد ‪ٝ‬آزقبف‪ٜ‬ب ُـ ‪ %10‬كوو ٖٓ م‪ٞ‬ء اُؾبؽخ‬
‫األفِ‪٤‬خ ٓٔب ‪٣‬ض‪٣‬ذ ثؾٌَ ًج‪٤‬ش ك‪ٝ ٢‬م‪ٞ‬ؽ‪ٜ‬ب‪ٝ ٌُٖ .‬ثغجت اػزٔبد‪ٛ‬ب ػِ‪ ٠‬اُؾؾ٘بد أُؾٔ‪ُٞ‬خ‬
‫ك‪ ٢‬عغْ اإلٗغبٕ كبٗ‪ٜ‬ب ال روجَ اُزؼبَٓ ٓؼ‪ٜ‬ب ٖٓ خالٍ األهالّ‪.‬‬

‫‪٘ٛ‬غزخذّ ك‪ٓ ٠‬ؾبس‪٣‬ؼ٘ب اُـ (‪ )Resistive Touch‬الٗ‪ٜ‬ب سخ‪٤‬قخ اُضٖٔ ‪ ٌٖٔ٣,‬اعزخذاّ ا‪ٟ‬‬
‫ؽئ ُِزؼبَٓ ٓؼ‪ٜ‬ب ٓضَ االفبثغ ‪ٝ‬االهالّ اُ‪ ٠‬اخشح ‪ ,‬ده‪٤‬وخ اُ‪ ٠‬ؽذ ٓب ‪,‬ع‪ِٜ‬خ االعزخذاّ‬
‫‪ ٌٖٔ٣ٝ‬رشً‪٤‬ج‪ٜ‬ب ‪ُٝ‬قو‪ٜ‬ب ػِ‪ ٠‬أ‪ ٟ‬ؽئ ‪ًٔ ,‬ب أٗ‪ٜ‬ب ال رزؤصش ثبُٔبء‪.‬‬

‫فنزة ػَو اىـ ‪:Resistive Touch‬‬


‫‪143Page‬‬ ‫‪Technical Support 2015‬‬
‫رزٌ‪ 3 ٖٓ ٕٞ‬هجوبد هجوزبٕ رؼٔالٕ ًٔوب‪ٓٝ‬خ ٓزـ‪٤‬شح ؽلبكخ ‪٣‬زٌ‪ٞٗٞ‬ا ٖٓ اُجالعز‪٤‬ي أُـط‪٠‬‬
‫ثٔ‪ٞ‬اد ٓ‪ٞ‬فِخ ‪ٝ‬هجوخ ك‪ ٠‬اُ‪ٞ‬عو رزٌ‪ً ٖٓ ٕٞ‬شاد ‪ٓٝ‬غبؽبد كبسؿ‪ ٚ‬رؼَٔ ػِ‪ ٠‬كقَ‬
‫اُطجوز‪ ٖ٤‬ػٖ ثؼن‪ ْٜ‬اُجؼل ‪ٝ‬ػ٘ذ اُنـو ػِ‪ ٠‬ا‪ ٟ‬هجوخ ٖٓ االص٘‪ ٖ٤‬رِزقن ثبالخش‪ٟ‬‬
‫‪٣ٝ‬زْ ه‪٤‬بط اُل‪ُٞ‬ذ ‪ٝ‬ػ٘ذ ص‪ٝ‬اٍ اُنـو رؼَٔ اٌُشاد ك‪ ٠‬اُطجوخ اُ‪ٞ‬عط‪ ٠‬ػِ‪ ٠‬اػبدح‬
‫اُطجوز‪ ٖ٤‬اُ‪ٞٓ ٠‬مؼ‪ٜٔ‬ب ُ‪ٜ‬زا رؼَٔ ‪ٛ‬ز‪ ٙ‬اُزو٘‪٤‬خ ٓغ ا‪ ٟ‬ؽ‪٠‬ء ع‪ٞ‬اء ف‪ٞ‬اثؼ٘ب ا‪ ٝ‬اهالّ ا‪ ٝ‬ا‪ٟ‬‬
‫ؽ‪٠‬ء ‪ٌ٘ٔ٣‬خ اُنـو ػِ‪ ٠‬اُ‪ٞ‬ؽخ‪.‬‬

‫ًٔب ٗش‪ ٟ‬ػ٘ذ اُنـو ر٘ضٍ اؽذ‪ ٟ‬اُطجوبد ُِٔظ االخش‪٣ٝ ٟ‬زْ ه‪٤‬بط اُل‪ُٞ‬ذ ‪٣ٝ‬زْ رؾذ‪٣‬ذ‬
‫ٌٓبٕ اُنـطخ ا‪ ٝ‬أُِغخ ػِ‪ ٠‬ؽغت ه‪٤‬بط اُل‪ُٞ‬ذ‬
‫كبئذح اُطجوزبٕ ‪ ٠ٛٝ‬اٗي إ هٔذ ثو‪٤‬بط اُل‪ُٞ‬ذ ٖٓ اُِ‪ٞ‬ؽخ ٖٓ هجوخ ‪ٝ‬اؽذح ك‪ٜ‬زا ‪٣‬ؼ٘‪ ٠‬اٗي‬
‫ؽذدد ٌٓبٕ أُِغخ ك‪ ٠‬ارغبح ‪ٝ‬اؽذح ا‪ ٟ‬ك‪ ٠‬ثؼذ ‪ٝ‬اؽذ ‪ٛٝ‬زا ‪٣‬ؼ٘‪ ٠‬اٗي ؽذدد ٌٓبٕ أُِغخ‬
‫ك‪ ٠‬اُجؼذ االكو‪ ٠‬ا‪ ٝ‬اُجؼذ اُشاع‪ ٠‬ثٔؼ٘‪ ٠‬اخش ٌٓبٕ أُِغخ‬
‫ثبُط‪ ٍٞ‬ا‪ ٝ‬ثبُؼشك ‪ٛٝ‬زا ؿ‪٤‬ش ده‪٤‬ن ثبُٔشح ‪ٛٝ‬زا ُٖ ‪ٌ٣‬ل‪٠‬‬
‫الٗ٘ب ‪ٌٛ‬زا ُْ ٗؾذد ٌٓبٕ أُِغخ ًب ٗوطخ ٓؾذد ػِ‪٠‬‬
‫اُؾبؽخ كوو ٗوطخ ك‪ ٠‬ثؼذ ‪ٝ‬اؽذ ‪ٛٝ‬زا ال ‪ٌ٣‬ل‪ ٠‬ثَ ‪٣‬غت‬
‫رؾذ‪٣‬ذ‪ٛ‬ب ًب ٗوطخ روغ ث‪ٖ٤‬‬
‫‪144Page‬‬ ‫‪Technical Support 2015‬‬
‫ٓؾ‪ٞ‬س‪ ٖ٣‬ا‪ ٟ‬اؽذاص‪٤‬بر‪ٜ‬ب ك‪ ٠‬أُؾ‪ٞ‬س ‪ٝ X‬أُؾ‪ٞ‬س ‪ Y‬ا‪ٌٓ ٟ‬بٕ أُِغخ ثبُط‪ٌٓٝ ٍٞ‬بٗ‪ٜ‬ب‬
‫ثبُؼشك ُ٘ؾذد ٌٓبٕ اُ٘وطخ ثبُظجو ػِ‪ ٠‬اُؾبؽخ ا‪ ٝ‬اُِ‪ٞ‬ؽخ ُزا كبُؾَ ‪ ٞٛ‬إ ٗغزؼَٔ‬
‫هجوزبٕ ك‪ٗ ٠‬لظ اُ‪ٞ‬هذ هجوخ ٗو‪٤‬ظ ٖٓ خالُ‪ٜ‬ب ه‪ٔ٤‬خ أُِغخ ك‪ٓ ٠‬ؾ‪ٞ‬س ‪٣‬غبسا ‪٘٤ٔ٣ٝ‬ب ‪ٝ‬هجوخ‬
‫ٗو‪٤‬ظ ٖٓ خالُ‪ٜ‬ب ه‪ٔ٤‬خ أُِغخ ك‪ٓ ٠‬ؾ‪ٞ‬س ‪ Y‬اػِ‪ٝ ٠‬اعلَ‬

‫‪٘ٛ‬ب ٗذخَ اُل‪ُٞ‬ذ ػِ‪ ٠‬اُ‪ٞ‬ؽخ ‪ٗٝ‬و‪٤‬ظ ه‪ٔ٤‬خ اُل‪ُٞ‬ذ ُ٘ؾذد االؽذاص‪٤‬بد ثبُ٘غجخ ُِٔؾ‪ٞ‬س‪X‬‬
‫‪٣‬غبسا ‪٘٤ٔ٣ٝ‬ب‪.‬‬

‫‪٘ٛ‬بٗذخَ اُل‪ُٞ‬ذ ػِ‪ ٠‬اُ‪ٞ‬ؽخ ‪ٗٝ‬و‪٤‬ظ ه‪ٔ٤‬خ اُل‪ُٞ‬ذ ُ٘ؾذد‬


‫االؽذاص‪٤‬بد ثبُ٘غجخ ُِٔؾ‪ٞ‬س‪.Y‬‬

‫‪ٝ‬ػ٘ذ عٔغ اُطجوز‪ٓ ٖ٤‬ؼب ‪٘ٛ‬ب ‪ٌ٘٘ٔ٣‬ب ه‪٤‬بط االؽذاص‪٤‬بد ٌُال أُؾ‪ٞ‬س‪ٌ٘٘ٔ٣ٝ ٖ٣‬ب االٕ رؾذ‪٣‬ذ‬
‫ٌٓبٕ أُِغخ ثذهخ ػِ‪ ٠‬اُِ‪ٞ‬ؽخ ع‪ٞ‬اء اػِ‪ ٠‬ا‪ ٝ‬اعلَ ا‪٘٤ٔ٣ ٝ‬ب ا‪٣ ٝ‬غبسا كبرا ًبٕ اُو‪٤‬بط ك‪٠‬‬
‫اهق‪ ٠‬اُ‪ ٖ٤ٔ٤‬ع٘ؾزبط ُٔؼشكخ إ ًبٕ ك‪ ٠‬االػِ‪ ٠‬اّ ك‪ ٠‬االعلَ ‪٘ٛٝ‬ب ‪ٌ٘٘ٔ٣‬ب رؾذ‪٣‬ذ ٗوطخ‬
‫أُِغخ ‪.‬‬

‫‪145Page‬‬ ‫‪Technical Support 2015‬‬


‫‪ ٌٖٔ٣‬اُؾق‪ ٍٞ‬ػِ‪ٛ ٠‬زا اُ٘‪ٞ‬ع ػٖ هش‪٣‬ن ثؼل أُؾالد ‪ ٌُٖٝ‬صٔ٘‪ ٌٕٞ٣ ٚ‬ك‪ ٢‬ؽذ‪ٝ‬د ‪65‬‬
‫ع٘‪٤‬خ ٌُٖ األسخـ ار‪ٛ‬ت اُ‪ ٠‬ا‪ٓ ٟ‬ؾَ ُزقِ‪٤‬ؼ أُ‪ٞ‬ثب‪َ٣‬‬
‫‪ٝ‬أهِت ٓ٘‪ ٚ‬اُزبرؼ ثزبع ا‪ٞٓ ٟ‬ثب‪ َ٣‬ف‪ُٔٝ ٠٘٤‬ؼشكخ اٗ‪٣ Resistive ٚ‬غت إ ‪٣‬ؼَٔ ثبُوِْ‬
‫ا‪ ٝ‬ثبالفجغ ا‪ ٝ‬ا‪ ٟ‬ؽ‪٠‬ء اخش ‪٤ُٝ‬ظ االفجغ اُجؾش‪ ٟ‬كوو ا‪ ٝ‬اهالّ خبفخ ثخ ك‪ٜ‬زا ٗ‪ٞ‬ع‬
‫اخش ‪ٌٛٝ‬زا ٗؼشف االٗ‪ٞ‬اع اُز‪ ٠‬رؼَٔ ث‪ٜ‬زا اُ٘‪ٞ‬ع ٖٓ اُزبرؼ‪ .‬عزغذ عؼش اُقـ‪٤‬ش ٓ٘خ ة ‪5‬‬
‫ع٘‪٤‬خ ‪ٝ‬اًجش ؽغْ ًج‪٤‬ش عذا ة ‪ 10‬ع٘‪٤‬خ‪.‬‬
‫‪ٞ٣‬عذ أٗ‪ٞ‬اع ٓ٘‪ٜ‬ب ٌُ٘٘ب ع٘غزخذّ اُ٘‪ٞ‬ع ر‪ ٝ‬األسثؼخ أهشاف ا‪ ٍٝ‬هشف ‪ٝ‬صبُش هشف‬
‫خبف‪ ٖ٤‬ثبُطجوخ ‪ٝ Y‬اُطشف اُضبٗ‪ٝ ٠‬اُشاثغ خبف‪ ٖ٤‬ثبُطجوخ‪ًٔ X‬ب ك‪ ٠‬اُق‪ٞ‬سح‬

‫اُـ ‪ cable‬اُخبؿ ثبُـ ‪ touch panel‬ث‪ٓ flat & soft ٌٕٞ٤‬ؾزبط ‪ connector‬ػؾبٕ‬
‫أهذس أ‪ٝ‬فِخ ثبُج‪ٞ‬سدح ص‪ ٟ‬اُِ‪ٞٓ ٠‬ع‪ٞ‬د ك‪ ٠‬اُق‪ٞ‬سح‪:‬‬

‫‪146Page‬‬ ‫‪Technical Support 2015‬‬


‫‪:Connecting to microcontroller‬‬
‫ع‪ٞ‬ف ٗو‪ ّٞ‬ثبدخبٍ عبُت ‪ٞٓٝ‬عت ػِ‪ ٠‬اهشاف اُطجوخ ‪ٝ X‬ثؼذ رُي ٗو‪ ّٞ‬ثبُو‪٤‬بط ٖٓ‬
‫خالٍ اؽذ اهشاف اُطجوخ ‪ٝ Y‬ثؼذ رُي ٗو‪ ّٞ‬ثؼٌظ اُؼِٔ‪٤‬خ ا‪ٗ ٟ‬و‪ ّٞ‬ثبدخبٍ عبُت ‪ٞٓٝ‬عت‬
‫ػِ‪ ٠‬اهشاف اُطجوخ ‪ٗٝ Y‬و‪ ّٞ‬ثبُو‪٤‬بط ٖٓ خالٍ اهشاف اُطجوخ‪ٌٛٝ X‬زا ثبعزٔشاس ٗؾقَ‬
‫ػِ‪ ٠‬االؽذاص‪٤‬بد ٖٓ أُؾ‪ٞ‬س‪. ٖ٣‬‬
‫‪ُٝ‬لؼَ ‪ٛ‬ز‪ ٙ‬أُ‪ٜٔ‬خ ‪٘ٛ‬بى هش‪٣‬وز‪ ٖ٤‬اال‪ ٠ٛٝ ٠ُٝ‬االكنَ ‪ٝ‬االدم ‪ٝ‬االفؼ إ ٗو‪ ّٞ‬ثق٘غ‬
‫دائشح رزٌ‪ 5 ٖٓ ٕٞ‬رشٗغ‪٤‬ضر‪ٞ‬ساد ٓغ ثؼل أُو‪ٓٞ‬بد ‪ٛٝ‬ز‪ ٙ‬ف‪ٞ‬سح اُذائشح ‪:‬‬

‫دهخ ‪ٝ‬ر‪ٞ‬كش هشك‪ٖٓ ٖ٤‬‬ ‫‪ٛٝ‬زح اُطش‪٣‬وخ رؼط‪٠‬‬

‫‪147Page‬‬ ‫‪Technical Support 2015‬‬


‫أُ‪ٌ٤‬ش‪ ٝ‬ثؾ‪٤‬ش اٗي ة ‪ 2‬هشف رزؾٌْ ك‪ ٠‬دخ‪ٝ ٍٞ‬خش‪ٝ‬ط اٌُ‪ٜ‬شثبء ٖٓ ‪ٝ‬اُ‪٠‬‬
‫اُِ‪ٞ‬ؽخ ‪ٝ‬اُطشك‪ ٖ٤‬االخش‪ ٖ٣‬رو‪٤‬ظ ٖٓ خالُ‪ٜٔ‬ب اُل‪ُٞ‬ذ ‪ٝ‬روذس االؽذاص‪٤‬بد ‪ٝ‬ث‪ٜ‬ز‪ ٙ‬اُطش‪٣‬وخ‬
‫ع٘غز‪ِٜ‬ي ‪ 4‬اهشاف كوو ٖٓ اُجي ‪ٝ .‬ر‪ٞ‬عذ ك‪ ٠‬ثؼل أُؾالد ‪ٛ‬زح اُذائشح عب‪ٛ‬ضح ‪.‬‬

‫‪٘ٛ‬الؽع ع‪ٞ‬اء ك‪ ٠‬اُذا‪٣‬شح أ‪ ٝ‬ك‪ ٠‬أُ‪ٞ‬د‪ ٍٞ٣‬إٔ اُطشف ‪ٞٓ DRIVEA‬فَ ٓغ دا‪٣‬شح‬
‫اُزشاٗضعز‪ٞ‬ساد ثؾ‪٤‬ش ُ‪ٝ ٞ‬مؼذ ػِ‪ 1 ٚ٤‬رقجؼ ‪:‬‬
‫) ‪(LEFT drive on, RIGHT drive on, TOP drive off‬‬
‫‪ٝ‬ارا ‪ٝ‬مؼذ ػِ‪ 0 ٚ٤‬رقجؼ‪:‬‬
‫)‪(LEFT drive off , RIGHT drive off , TOP drive on‬‬
‫أٓب اُطشف ‪ٞٓ DRIVEB‬فَ ٓغ دا‪٣‬شح اُزشاٗضعز‪ٞ‬ساد ثؾ‪٤‬ش ُ‪ٝ ٞ‬مؼذ ػِ‪1 ٚ٤‬‬
‫رقجؼ )‪٣ 0 ُٞٝ (BOTTOM drive on‬قجؼ )‪.(BOTTOM drive oFF‬‬
‫أٓب اُطشف ‪ٞٓ read_x‬فَ ثبٍ ‪ ADC‬ثبُو٘بح ‪ُ RA0‬وشائخ اٍ ‪ ٞٛٝ X value‬أ‪٣‬نب‬
‫ٓ‪ٞ‬فَ ثؤؽذ أهشاف اُـ ‪ ٞٛٝ y_panel‬اُـ)‪. (BOTTOM‬‬
‫أٓب اُطشف ‪ٞٓ read_Y‬فَ ثبٍ ‪ ADC‬ثبُو٘بح ‪ُ RA1‬وشائخ اٍ ‪ ٞٛٝ Y value‬أ‪٣‬نب‬
‫ٓ‪ٞ‬فَ ثؤؽذ أهشاف اُـ ‪ ٞٛٝ X_panel‬اُـ)‪. (LEFT‬‬

‫‪148Page‬‬ ‫‪Technical Support 2015‬‬


‫ك٘غذ إٔ اُطشك‪ RC0& RC1 ٖ٤‬هشك‪ُ ٖ٤‬زـ‪٤‬ش اُغ‪ٜ‬ذ ػِ‪ ٢‬اُـ ‪RAO& ٝ panels‬‬
‫‪ُ RA1‬وشائخ اُل‪ُٞ‬ذ ٖٓ ًالً ٖٓ اُـ ‪.panels‬‬

‫اىن٘د ‪:‬‬
‫ع٘و‪ ّٞ‬ثؼَٔ داُز‪ٝ void getYٝ void getX ٖ٤‬ثٌَ ثغبهخ ػ٘ذ ه‪٤‬بط أُؾ‪ٞ‬س ‪ X‬اه‪ّٞ‬‬
‫ثبخشاط ‪ 0‬ك‪ُٞ‬ذ ػِ‪ ٠‬هشف ‪ 5ٝ‬ك‪ُٞ‬ذ ػِ‪ ٠‬هشف اخش ُِٔؾ‪ٞ‬س‪ٝ X‬اه‪ ّٞ‬ثبُو‪٤‬بط ٖٓ‬
‫اُو٘بح اال‪ٝ ٠ُٝ‬اُ‪ٓ ٠‬ز‪ٞ‬فِخ ػِ‪ ٠‬هشف ‪ٝ‬اؽذ ٖٓ أُؾ‪ٞ‬س‪ً Y‬بالر‪: ٠‬‬

‫‪149Page‬‬ ‫‪Technical Support 2015‬‬


‫‪ٝ‬ثؼذ رُي اؽلع اُ٘برظ ك‪ٓ ٠‬زـ‪٤‬ش ‪ٝ x_coord‬اه‪ ّٞ‬ثؼذ رُي ثزٌشاس اُؼِٔ‪٤‬خ ‪ٓ ٌُٖٝ‬ؼٌ‪ٞ‬عخ‬
‫اه‪ ّٞ‬ثبخشاط ‪ 0‬ك‪ُٞ‬ذ ػِ‪ ٠‬هشف ‪ 5ٝ‬ك‪ُٞ‬ذ ػِ‪ ٠‬هشف اخش ُِٔؾ‪ٞ‬س‪ٝ Y‬اه‪ ّٞ‬ثبُو‪٤‬بط ٖٓ‬
‫اُو٘بح اُضبٗ‪٤‬خ ‪ٝ‬اُ‪ٓ ٠‬ز‪ٞ‬فِخ ػِ‪ ٠‬هشف ‪ٝ‬اؽذ ٖٓ أُؾ‪ٞ‬س‪ً X‬بالر‪: ٠‬‬

‫اؽلع اُ٘برظ ك‪ٓ ٠‬زـ‪٤‬ش ‪. Y_coord‬‬


‫االؽذاص‪٤‬بد ربر‪ ٠‬ػِ‪ ٠‬ؽٌَ سهْ ‪٣‬وغ ث‪ 0 ٖ٤‬اُ‪ ٠ٛٝ 1023 ٠‬رؼجش ػٖ ‪ 0‬ك‪ُٞ‬ذ اُ‪ 5 ٠‬ك‪ُٞ‬ذ‬
‫‪ ,,‬كبرا ً٘ذ أمغ اُـ ‪ touch panel‬ػِ‪ GLCD ٠‬ك‪ٞ‬هز‪ٜ‬ب ع٘ؾزبط ُِزؼبَٓ ثبُجٌغَ‬
‫‪ُٝ‬ؼَٔ رُي ٗؾذد ػشك ‪ٝ‬ه‪ ٍٞ‬اُؾبؽخ ثبُجٌغَ ‪ٝ‬ك‪ٓ ٠‬ؾش‪ٝ‬ػ٘ب ‪٘ٛ‬غزخذّ ؽبؽخ‬
‫‪ٛ 64 * 128‬ز‪ ٙ‬اسهبّ ثٌغَ اُؾبؽخ اُط‪ * ٍٞ‬اُؼشك ‪ ٖٓٝ‬خالٍ ‪ٛ‬زح أُؼبدُخ ٗغزط‪٤‬غ‬
‫اُزؾٌْ ٖٓ خالٍ اُجٌغَ ا‪ ٟ‬ثذٍ اُو‪ ٍٞ‬ارا ًبٕ اُو‪٤‬بط ‪٣‬وغ ث‪ 0 ٖ٤‬اُ‪ 1023 ٠‬ال ع٘و‪ٍٞ‬‬
‫ٓضال ارا ًبٕ ‪٣‬وغ ث‪ 30 ٖ٤‬اُ‪ 100 ٠‬ثٌغَ ‪ٝ‬أُؼبدُخ رٌ‪ ٕٞ‬ثبعزخذّ ػالهخ أُوـ‪:‬‬
‫‪X_coord ------------------------ 1023‬‬
‫‪X_coord _pixel------------------ 128‬‬

‫‪151Page‬‬ ‫‪Technical Support 2015‬‬


‫هجَ اُجذء ك‪ ٠‬أُؾش‪ٝ‬ع ػِ‪٤‬ي ٓشاعؼخ أ‪ٝ‬آش اُـ ‪ٌٓ ٖٓ GLCD‬زجخ ٓ‪ٌ٤‬ش‪ٝ‬ع‪.٠‬‬

‫اىَشزٗع األٗه‪:‬‬
‫امبءح ‪ٝ 2 leds‬اهلبئ‪ٜ‬ب ػٖ هش‪٣‬ن ‪. touch screen‬‬

‫‪151Page‬‬ ‫‪Technical Support 2015‬‬


152Page Technical Support 2015
‫ٍالصظاث ‪:‬‬
‫‪_1‬ر‪ٞ‬عذ هش‪٣‬وخ اخش‪ُ ٟ‬ز‪ٞ‬ف‪ َ٤‬اُـ ‪ touch panel‬ثبُٔ‪ٌ٤‬ش‪ ٌُٖٝ ٝ‬رغز‪ِٜ‬ي ‪ 6‬اهشاف ‪4‬‬
‫ٌُِ‪ٜ‬شثبء اُخبفخ ثبُ‪ٞ‬ؽخ ‪ُ 2ٝ‬و‪٤‬بط اُل‪ُٞ‬ذ ُِطجوز‪٣ ,, ٖ٤‬غت ر‪ٞ‬ف‪ٓ 2 َ٤‬وب‪ٓٝ‬خ ‪ِٞ٤ً 10‬ا‬
‫ػِ‪ ٠‬االسم‪ ٠‬ػِ‪ ًَ ٠‬ه٘ب‪ ٠ٌُ ٙ‬رؼَٔ اُذائشح ثبعزوشاس‪.‬‬

‫ك‪ ٠‬اُذائشح رْ ر‪ٞ‬ف‪ َ٤‬أهشاف اٍ ‪ٔٛٝ x_panel‬ب اُطشف ‪ 3 ٝ 1‬ػِ‪RB1 &RB0 ٠‬‬
‫‪ٝ‬أهشاف اٍ ‪ٔٛٝ y_panel‬ب اُطشف ‪ 4 ٝ 2‬ػِ‪. RB3 &RB2 ٠‬‬
‫‪153Page‬‬ ‫‪Technical Support 2015‬‬
‫‪ٝ‬ر‪ٞ‬ف‪ َ٤‬هشف ٖٓ اٍ ‪ ٞٛٝ x_panel‬اُطشف اال‪ ٍٝ‬ثطشف ‪ٝ RA1‬اُز‪ٔ٣ ٟ‬ضَ اُو٘بح‬
‫اُضبٗ‪٤‬خ ُِـ ‪ٝ ADC‬ر‪ٞ‬ف‪ َ٤‬هشف ٖٓ اٍ ‪ ٞٛٝ Y_panel‬اُطشف اُضبٗ‪ ٠‬ثطشف ‪RA0‬‬
‫‪ٝ‬اُز‪ٔ٣ ٟ‬ضَ اُو٘بح األ‪ُِ ٠ُٝ‬ـ ‪.ADC‬‬
‫ك‪ ٠‬اٌُ‪ٞ‬د ُٔؼشكخ ع‪ٜ‬ذ اُ٘وطخ ‪:X‬‬

‫ُٔؼشكخ ع‪ٜ‬ذ اُ٘وطخ ‪:Y‬‬

‫‪_2‬ارا ً٘ب ال ٗش‪٣‬ذ اُزؾٌْ ٖٓ خالٍ ؽبؽخ ثَ ف‪ٞ‬سح ٓطج‪ٞ‬ػخ اعلَ ُ‪ٞ‬ؽخ أُِظ‬

‫‪ٝ‬هز‪ٜ‬ب ع٘ؾزبط اُزؾ‪ َ٣ٞ‬اُ‪ٝ ٠‬ؽذح أُِ‪ٓ ٠‬زش ثٌَ ثغبهخ اًزت ه‪٤‬بط اُط‪ ٍٞ‬اُخبؿ‬
‫ثبُق‪ٞ‬سح أُطج‪ٞ‬ػخ ثبُِِٔىٔزش ا‪ ٝ‬ا‪ٝ ٟ‬ؽذح رش‪٣‬ذ ٌٓبٕ ‪ٝ 128‬اُؼشك ا‪٣‬نب ٌٓبٕ ‪ 64‬ك‪٠‬‬
‫أُؼبدُخ اُِ‪ ٠‬ارٌِٔ٘ب ػ٘‪ٜ‬ب عبثوب‪.‬‬
‫‪154Page‬‬ ‫‪Technical Support 2015‬‬
155Page Technical Support 2015
156Page Technical Support 2015
‫رغزخذّ اُــ ‪ LED matrix‬ثؾٌَ ‪ٝ‬اعغ ك‪ٓ ٢‬غبٍ اُذػب‪٣‬خ ‪ ٝ‬اإلػال ٕ إل ظ‪ٜ‬بس ٓؼِ‪ٓٞ‬بد‬
‫‪ ٝ‬سع‪ٓٞ‬بد ‪ً ٝ‬زبثبد ‪ ٝ‬ؿ‪٤‬ش‪ٛ‬ب ع‪ٞ‬اء ًبٗذ صبثزخ أ‪ٓ ٝ‬زؾشًخ‪.‬‬
‫‪ ٠ٛٝ‬ػجبسح ػٖ ٓغٔ‪ٞ‬ػخ ٖٓ اُــ ‪ LEDS‬أُشث‪ٞ‬هخ ٓغ ثؼن‪ٜ‬ب ػِ‪ ٠‬ؽٌَ ٓقل‪ٞ‬كخ ‪.‬‬
‫طز‪ٝ‬قت ػَو شاشت اىؼزض ‪: LED dot matrix‬‬
‫رزْ ػٖ هش‪٣‬ن ر‪ٞ‬ف‪ َ٤‬اُِ‪٤‬ذاد ػِ‪ ٠‬ؽٌَ فل‪ٞ‬ف ‪ٝ rows‬أػٔذح ‪ًٔ columns‬ب ثبُؾٌَ‬
‫ثـشك روِ‪ َ٤‬ػذد األهشاف أُطِ‪ٞ‬ثخ ُزؾـ‪ِٜ٤‬ب‪ .‬كٔضال ُ‪ ٞ‬ػب‪ٝ‬ص ‪ٝ‬ؽذح ػشك ‪ٛ 8X8‬ؾزبط‬
‫اُ‪ 64 ٠‬هشف ٓذخَ ‪ٓ /‬خشط (هشف ٌَُ ٗوطخ ُ‪٤‬ذ ‪ ٌُٖ.‬ثز‪ٞ‬ف‪ َ٤‬عٔ‪٤‬غ اُــ ‪ٓ anodes‬غ‬
‫ثؼن‪ٜ‬ب ك‪ ٠‬ؽٌَ فل‪ٞ‬ف ٖٓ اُقق األ‪ R1 ٍٝ‬اُ‪ ٠‬اُقق اُضبٖٓ ‪ٝ ,, R8‬ر‪ٞ‬ف‪ َ٤‬اُــ‬
‫‪ٓ cathodes‬غ ثؼن‪ٜ‬ب ك‪ ٠‬ؽٌَ أػٔذح ٖٓ اُؼبٓ‪ٞ‬د األ‪ C1 ٍٝ‬اُ‪ ٠‬اُؼبٓ‪ٞ‬د اُضبٖٓ ‪C8‬‬
‫‪ٝ‬هز‪ٜ‬ب ‪ٛ‬ؾزبط اُ‪ 16 ٠‬هشف كوو‪.‬‬

‫ًَ ُ‪٤‬ذ ‪ ٚ٤ُ ٌٕٞ٤ٛ‬ػ٘‪ٞ‬إ ثشهْ فل‪ٝ ٚ‬ػبٓ‪ٞ‬د‪ ٞٛ , ٙ‬روش‪٣‬جب ٗلظ كٌشح اٌُ‪٤‬جبد كل‪ ٠‬اُؾٌَ ارا‬
‫عؼِ٘ب اُقق اُشاثغ ‪ R4‬ك‪ ٠‬اُؾبُخ أُشرلؼخ ( ‪ٝ )logic 1‬عؼِ٘ب اُؼبٓ‪ٞ‬د اُضبُش ‪ C3‬ك‪٠‬‬

‫‪157Page‬‬ ‫‪Technical Support 2015‬‬


‫اُؾبُخ أُ٘خلنخ (‪٘ٛ (logic 0‬الؽع إ اُِ‪٤‬ذ أُ‪ٞ‬ع‪ٞ‬د ك‪ ٠‬اُقق اُشاثغ ‪ٝ‬اُؼبٓ‪ٞ‬د اُضبُش‬
‫‪ ٠ٛ‬اُِ‪ٛ ٠‬ز٘‪ٞ‬س ‪.‬‬

‫‪٘ٛٝ‬الؽع إ اٍ ‪ led matrix‬ػجبسح ػٖ ‪ ُٞ dots‬ػشكذ ‪ٞ٘ٛ‬س أٗ‪٤ُ ٠ٜ‬ذاد ػؾبٕ اسعْ‬


‫ؽشف ٓؼ‪ ٖ٤‬ا‪ ٝ‬أػشك سهْ ٓؼ‪ ٖ٤‬ا‪ ٝ‬اؽبسح ‪ٝ ....‬هز‪ٜ‬ب ‪ٛ‬ؼشف أػشك اُ٘ـ ا‪ ٝ‬اُؾئ اُِ‪٠‬‬
‫ػب‪ٝ‬ص أػشمخ ‪.‬‬
‫م‪ٞ‬ف‪ٞ‬ت اىزبط ٍغ اىَ‪ٞ‬نزٗمْتزٗىز‪:‬‬
‫‪٘ٛ‬غزخذّ ‪ ) 5X7 ( led matrix‬ؽ‪٤‬ش ‪٣‬زْ اُزؾٌْ ك‪ ٠‬اُغجغ فل‪ٞ‬ف ‪ٝ‬اُخٔظ أػٔذح ٖٓ‬
‫خالٍ أهشاف أُ‪ٌ٤‬ش‪ًٗٞٝ‬زش‪ُٝ‬ش ‪٣ٝ‬زْ ػشك اُؾش‪ٝ‬ف ثبُٔغؼ اُغش‪٣‬غ أل‪ ٖٓ ٟ‬اُقل‪ٞ‬ف‬
‫أ‪ ٝ‬األػٔذح "‪. "Column scanning‬‬
‫كٔضال ارا أسدٗب ػشك ؽشف اُــ ‪ًٔ A‬ب‬
‫ٓ‪ٞ‬ع‪ٞ‬د ثبُؾٌَ ‪:‬‬

‫‪158Page‬‬ ‫‪Technical Support 2015‬‬


‫‪ٗ _1‬خزبس أ‪ٝ‬ال اُؼبٓ‪ٞ‬د ‪ٛ( C1‬زا ‪٣‬ؼ٘‪ ٠‬عؼِ‪ ٚ‬ك‪ ٠‬اُؾبُخ أُ٘خلنخ ‪ٝ )logic 0‬ك‪ٗ ٠‬لظ‬
‫اُ‪ٞ‬هذ ػذّ اخز‪٤‬بس ثبه‪ ٠‬األػٔذح ثٔ٘غ ر‪ٞ‬ف‪ِٜ٤‬ب ثبألسم‪ ( ٠‬ػٖ هش‪٣‬ن‬
‫عؼَ ‪ C2‬اُ‪ C5 ٠‬ك‪ ٠‬اُؾبُخ أُشرلؼخ ‪. (logic 1‬‬
‫‪ _2‬ا‪ ٕ٥‬أفجؼ اُؼبٓ‪ٞ‬د األ‪ ٍٝ‬كؼبٍ ‪ٝ‬رؾزبط اُ‪ ٠‬ر‪ٞ‬ف‪ ON َ٤‬اُِ‪٤‬ذاد ثبُقل‪ٞ‬ف‬
‫ٖٓ ‪ R2‬اُ‪ R7 ٠‬أُ‪ٞ‬ع‪ٞ‬دح ك‪ ٠‬اُؼبٓ‪ٞ‬د األ‪ٝ C1 ٍٝ‬اُز‪ ٠‬رٔضَ اُغضء األ‪ ٍٝ‬كوو ٖٓ‬
‫اُؾشف ‪٣ٝ ,‬زْ رُي ثز‪ٞ‬ف‪ َ٤‬اُغ‪ٜ‬ذ أُ‪ٞ‬عت (اُؾبُخ أُشرلؼخ) ُ‪ٜ‬ز‪ ٙ‬اُقل‪ٞ‬ف‪.‬‬
‫‪ _3‬اُخط‪ٞ‬ح اُزبُ‪٤‬خ اخز‪٤‬بس اُؼبٓ‪ٞ‬د اُضبٗ‪ٝ C2 ٠‬ػذّ اخز‪٤‬بس ثبه‪ ٠‬األػٔذح ‪ٝ ,‬ر‪ٞ‬ف‪ َ٤‬اُغ‪ٜ‬ذ‬
‫أُ‪ٞ‬عت اُ‪ ٠‬اُقل‪ٞ‬ف ‪ٌٛٝ R5 , ٝ R1‬زا ‪ٛ .‬ز‪ ٙ‬اُؼِٔ‪٤‬خ رغٔ‪" ٠‬ػِٔ‪٤‬خ ٓغؼ األػٔذح‬
‫‪ٝ‬رـز‪٣‬خ ه‪ ْ٤‬اُج‪٤‬بٗبد اُ‪ ٠‬اُقل‪ٞ‬ف (‪٣‬ؼ٘‪ ٠‬اخزبس اُؼٔ‪ٞ‬د ‪ٝ‬أؿز‪ ٟ‬اُقل‪ٞ‬ف ثبُو‪ ْ٤‬اُِ‪ ٠‬رنئ‬
‫اُِ‪٤‬ذاد اُِ‪ٓ ٠‬ؾزبع‪ٜ‬ب ) ‪.‬‬
‫‪ٗ _4‬ز‪٤‬غخ أُغؼ اُغش‪٣‬غ خالٍ األػٔذح (عشػخ أُغؼ ‪٣‬غت إٔ رٌ‪ ٕٞ‬أًجش ٖٓ ‪ٓ 100‬شح‬
‫ثٌَ صبٗ‪٤‬خ ) ‪ٝ‬ر‪ٞ‬ف‪ َ٤‬اُِ‪٤‬ذاد أُ٘بظشح ك‪ ًَ ٠‬فق ُ‪ٜ‬زا اُؼبٓ‪ٞ‬د كؤٕ ف‪ٞ‬سح اُؼشك رجذ‪ٝ‬‬
‫عبً٘خ ‪ٓٝ‬غزوش‪ُِ ٙ‬ؼ‪ ٖ٤‬الٕ اُؼ‪ٓ ٖ٤‬جزِؾوؼ رالؽع أُغؼ د‪.ٙ‬‬

‫اُغذ‪ ٍٝ‬اُزبُ‪٣ ٠‬ؼط‪ ٠‬أُغز‪٣ٞ‬بد أُ٘طو‪٤‬خ اُز‪٣ ٠‬غت رطج‪٤‬و‪ٜ‬ب ػِ‪ ٠‬اُقل‪ٞ‬ف‬
‫ٖٓ ‪ R1‬اُ‪ ٌَُ R7 ٠‬ػبٓ‪ٞ‬د ثـشك ػشك اُؾشف ‪. A‬‬

‫‪159Page‬‬ ‫‪Technical Support 2015‬‬


‫‪٘ٛ‬الؽع أٗ‪ ٚ‬ك‪ ًَ ٠‬فق هشف ‪ٝ‬اؽذ ٖٓ أهشاف أُ‪ٌ٤‬ش‪sourcing the current ٝ‬‬
‫ُِ‪٤‬ذ ‪ٝ‬اؽذ كوو ‪ ٌُٖٝ‬هشف أُ‪ٌ٤‬ش‪ ٝ‬اُخبؿ ثبُؼبٓ‪ٞ‬د ‪ٓ ٌٕٞ٣‬قت ‪sink the currents‬‬
‫أُبسح ٖٓ خالٍ أًضش ٖٓ ُ‪٤‬ذ ‪ .‬ػِ‪ ٠‬عج‪ َ٤‬أُضبٍ اُؼبٓ‪ٞ‬د األ‪٣ C1 ٍٝ‬غت إٔ ‪ ٌٕٞ٣‬هبدسا‬
‫ػِ‪ ٠‬إٔ ‪٣‬قت ك‪ ٚ٤‬ر‪٤‬بس ٖٓ ‪٤ُ 6‬ذاد ػ٘ذ ػشك اُؾشف ‪ ٌُٖٝ A‬أهشاف أُذاخَ ‪/‬‬
‫أُخبسط ُِٔ‪ٌ٤‬ش‪ًٗٞٝ‬زش‪ُٝ‬ش ال رغزط‪٤‬غ ر٘ب‪ٛ ٍٝ‬زا اُز‪٤‬بس أُشرلغ ‪ُ ,‬زُي ٗؾزبط اُ‪ٓ ٠‬قل‪ٞ‬كخ‬
‫(فق) ٖٓ اُزشاٗضعز‪ٞ‬ساد ‪.‬‬

‫‪ٌٖٔ٣‬‬
‫اُذائشح‬ ‫اعزخذاّ‬
‫‪161Page‬‬ ‫‪Technical Support 2015‬‬
‫أُزٌبِٓخ ‪ٝ ULN2003A‬اُز‪ ٠‬رؾز‪ ٟٞ‬ػِ‪ ٠‬فق ٌٓ‪7 ٖٓ ٕٞ‬‬

‫رشاٗضعز‪ٞ‬ساد داسُ٘غز‪ًٔ ٕٞ‬ب ك‪ ٠‬اُؾٌَ ‪.‬‬


‫‪٣‬غت إ ‪ ٌٕٞ٣‬اُـ ‪ُِ input‬ــ ‪ٓ ULN2003‬شرلغ )‪ ٌٕٞ٣ ٠ٌُ active high (1‬اُطشف‬
‫اُخشط أُ٘بظش ٓ‪ٞ‬فال ثبألسم‪.(active low 0) ٠‬‬
‫ت٘ص‪ٞ‬و اىذائزة‪:‬‬
‫ٗو‪ ّٞ‬ثز‪ٞ‬ف‪ٓ َ٤‬وب‪ٓٝ‬بد ‪ 330 Ω‬ػِ‪ ٠‬اُز‪ٞ‬اُ‪ٓ ٠‬غ اُقل‪ٞ‬ف ٖٓ ‪ R1‬اُ‪ُ R7 ٠‬زوِ‪ َ٤‬اُز‪٤‬بس‬
‫أُبس خالٍ اُِ‪٤‬ذاد صْ ٗو‪ ّٞ‬ثز‪ٞ‬ف‪ َ٤‬اُقل‪ٞ‬ف ثؤهشاف )‪PORTB (RB0-RB6‬‬
‫ُِٔ‪ٌ٤‬ش‪ٝ , ٝ‬األػٔذح رزقَ ثخٔغخ ٓخبسط ٖٓ ‪ ULN2003A‬أهشاف أُذاخَ اُخٔغخ‬
‫أُ٘بظشح ُِـ ‪٣ ULN2003‬زْ اُزؾٌْ ك‪ٜ٤‬ب ٖٓ خالٍ )‪ٌ٤ُِٔ PORTD (RD0- RD4‬ش‪.ٝ‬‬
‫ث‪ٜ‬ز‪ ٙ‬اُطش‪٣‬وخ ‪٣‬و‪ ّٞ‬أُ‪ٌ٤‬ش‪ًٗٞٝ‬زش‪ُٝ‬ش ثٔغؼ األػٔذح ػٖ هش‪٣‬ن اسعبٍ ‪ ٌَُ 1‬ػٔ‪ٞ‬د‬
‫‪ٝ‬رقل‪٤‬ش اُجبه‪ُ ٠‬ـ ‪ PORTD‬ػِ‪ ٠‬عج‪ َ٤‬أُضبٍ رؾذ‪٣‬ذ اُخبٗخ ‪ RD0‬ث‪ٞ‬اؽذ ‪ٓٝ‬غؼ (رقل‪٤‬ش)‬
‫اُخبٗبد ‪ RD1‬اُ‪٣ RD4 ٠‬ئد‪ ٟ‬اُ‪ ٠‬اخز‪٤‬بس اُؼبٓ‪ٞ‬د األ‪ . ٍٝ‬ع‪ٞ‬ف ‪٘٣‬زظش‬
‫أُ‪ٌ٤‬ش‪ًٗٞٝ‬زش‪ُٝ‬ش ؽ‪ٞ‬اُ‪ٝ ٠‬اؽذ ِٓ‪ ٠‬صبٗ‪٤‬خ هجَ اُزؾ‪ ٍٞ‬اُ‪ ٠‬اُؼبٓ‪ٞ‬د اُزبُ‪ . ٠‬ػ٘ذ ًَ ػبٓ‪ٞ‬د‬
‫ع‪ٞ‬ف ‪٣‬خشط أُ‪ٌ٤‬ش‪ًٗٞٝ‬زش‪ُٝ‬ش ه‪ ْ٤‬اُقل‪ٞ‬ف أُ٘بظشح ػِ‪ ٠‬أُ٘لز ‪ُ PORTB‬ز‪ٞ‬ف‪َ٤‬‬
‫اُِ‪٤‬ذاد أُ٘بظشح ك‪ ٠‬اُؼبٓ‪ٞ‬د ُؼشك اُؾشف أُؾذد ‪.‬‬

‫‪161Page‬‬ ‫‪Technical Support 2015‬‬


:‫ بزٗتس‬ٚ‫و ػي‬ٞ‫اىت٘ص‬

162Page Technical Support 2015


‫اىبزّاٍذ‪:‬‬
‫‪٣‬غت ك‪ ٠‬اُجذا‪٣‬خ اٗؾبء عذ‪ ٍٝ‬ثو‪ ْ٤‬اُقق ُؼبٓ‪ٞ‬د ٓؾذد ‪ٝ‬اُالصٓخ ُؼشك اُؾش‪ٝ‬ف ‪ًٔ ,‬ب‬
‫‪٣‬غت رؼش‪٣‬ق ‪ٝ‬رخض‪ٛ ٖ٣‬ز‪ ٙ‬اُو‪ ْ٤‬ك‪ ٠‬راًشح ‪ RAM‬أ‪ ٝ‬رخضٕ ك‪ ٠‬راًشح اُجشٗبٓظ ك‪ ٠‬ؽبُخ ٓب‬
‫ارا ًبٗذ راًشح ‪ RAM‬ؿ‪٤‬ش ًبك‪٤‬خ ‪ .‬ك‪ ٠‬اٌُ‪ٓٞ‬ج‪ِ٤‬ش ‪ mikroC‬رؾلع أُزـ‪٤‬شاد ك‪٠‬‬
‫راًشح ‪ ٝ RAM‬اُض‪ٞ‬اثذ ك‪ ٠‬راًشح اُجشٗبٓظ ‪ُ .‬زُي ارا ُْ ‪ ٌٖ٣‬أُ‪ٌ٤‬ش‪ًٗٞٝ‬زش‪ُٝ‬ش ‪ٔ٣‬زِي‬
‫راًشح ‪ً RAM‬بك‪٤‬خ ك‪ٌ٘ٔ٤‬ي رؼش‪٣‬ق ٓقل‪ٞ‬كخ صبثذ ‪ُ constant array‬ؾلع ه‪ ْ٤‬اُقق‬
‫ثؾ‪٤‬ش إٔ اُغضء ٖٓ راًشح اُجشٗبٓظ اُز‪ ٟ‬اؽزِز‪٣ ٚ‬ئد‪ ٟ‬اُ‪ ٠‬ر‪ٞ‬ك‪٤‬ش راًشح ‪ُٜٔٔ RAM‬خ‬
‫أخش‪ٝ . ٟ‬ثٔب إٔ راًشح ‪ٌ٤ُِٔ RAM‬ش‪ًٗٞٝ‬زش‪ُٝ‬ش ‪٤ُ PIC16F877A‬غذ ًبك‪٤‬خ ُؾلع ه‪ْ٤‬‬
‫اُقق ُؼشك اُؾش‪ٝ‬ف ٖٓ ‪ A‬اُ‪ُ Z ٠‬زُي ع‪ٞ‬ف ٗغزؼ‪ ٖ٤‬ثزاًشح اُجشٗبٓظ ًٔب ‪:٠ِ٣‬‬
‫أ‪ٝ‬ال ‪ :‬اُؾش‪ٝ‬ف ٖٓ ‪ A‬اُ‪: Z ٠‬‬

‫{=]‪const unsigned short Alphabets[130‬‬


‫‪0x7e, 0×09, 0×09, 0×09, 0x7e, // A‬‬
‫‪0x7f, 0×49, 0×49, 0×49, 0×36, // B‬‬
‫‪0x3e, 0×41, 0×41, 0×41, 0×22,//C‬‬
‫‪0x7f, 0×41, 0×41,0×22, 0x1c, //D‬‬
‫‪0x7f, 0×49, 0×49, 0×49, 0×63,//E‬‬
‫‪0x7f, 0×09, 0×09, 0×09, 0×01,//F‬‬
‫‪0x3e, 0×41, 0×41, 0×49, 0x7a,//J‬‬
‫‪0x7f, 0×08, 0×08, 0×08, 0x7f,‬‬
‫‪0×00, 0×41, 0x7f, 0×41, 0×00, // I‬‬
‫‪0×20, 0×40, 0×41, 0x3f, 0×01,‬‬
‫‪0x7f, 0×08, 0×14, 0×22, 0×41,‬‬
‫‪0x7f, 0×40, 0×40, 0×40, 0×60,‬‬
‫‪0x7f, 0×02, 0×04, 0×02, 0x7f,‬‬
‫‪163Page‬‬ ‫‪Technical Support 2015‬‬
0x7f, 0×04, 0×08, 0×10, 0x7f,
0x3e, 0×41, 0×41, 0×41, 0x3e,
0x7f, 0×09, 0×09, 0×09, 0×06,
0x3e, 0×41, 0×51, 0×21, 0x5e,
0x7f, 0×09, 0×19, 0×29, 0×46,
0×46, 0×49, 0×49, 0×49, 0×31, // S
0×01, 0×01, 0x7f, 0×01, 0×01,
0x3f, 0×40, 0×40, 0×40, 0x3f,
0x1f, 0×20, 0×40, 0×20, 0x1f,
0x3f, 0×40, 0×30, 0×40, 0x3f,
0×63, 0×14, 0×08, 0×14, 0×63,
0×07, 0×08, 0×70, 0×08, 0×07,
0×61, 0×51, 0×49, 0×45, 0×43 // Z
};

const unsigned short characters[30]={


0×24, 0x2A, 0x7f, 0x2A, 0×12, // $
0×08, 0×14, 0×22, 0×41, 0×00, // <
0×41, 0×22, 0×14, 0×08, 0×00, // >
0×14, 0×14, 0×14, 0×14, 0×14, // =
0×36, 0×49, 0×55, 0×22, 0×50, // &
0×44, 0x3c, 0×04, 0x7c, 0×44, // PI
};
:A ‫بزّاٍذ ىؼزض صزف اىـ‬

164Page Technical Support 2015


‫‪٘ٛ‬الؽع ُٔب ٗؾـَ اٍ ‪simulation‬ػِ‪ ٠‬ثش‪ٝ‬رظ إ اُِ‪٤‬ذاد ٓؼ ثز٘‪ٞ‬س ‪ٝ ,‬رُي ٗز‪٤‬غخ ػذّ‬
‫اعزغبثخ ‪ُِ Proteus‬ذائشح أُزٌبِٓخ ‪ٓ ULN2003‬غ اُِ‪٤‬ذ ٓبرش‪ٌ٣‬ظ (‪ ٖٓٝ‬هجَ ٓغ اُغلٖ‬
‫ع‪٤‬غٔ٘ذ ) ٌُٖ ػ٘ذ اُز٘ل‪٤‬ز اُؼِٔ‪٣ ٠‬ؼَٔ اُجشٗبٓظ ثطش‪٣‬وخ فؾ‪٤‬ؾخ‪.‬‬
‫‪ُٝ‬ؾَ أُؾٌِخ د‪٘ٛ ٟ‬ؾ‪ َ٤‬دا‪٣‬شح اُــ ‪ٗٝ ULN2003‬غزؼ‪٤‬ل ػ٘‪ٜ‬ب ثؾَ ‪٣‬و‪ ّٞ‬ثؼِٔ‪ٜ‬ب ‪ٞٛٝ‬‬
‫ػٌظ أُخبسط أُ‪ٞ‬عجخ ُألػٔذح ٖٓ أهشاف أُ٘لز ‪ُ PORTD‬زقَ اُ‪ً ٠‬بص‪ٞ‬داد‬
‫ٓقل‪ٞ‬كخ اُِ‪٤‬ذاد عبُجخ ػٖ هش‪٣‬ن امبكخ دائشح ‪ not gate‬أ‪ٗ ٝ‬ؼٌظ اُخشط اُخبسط ٖٓ‬
‫‪ portd‬ك‪ ٠‬اُجشٓغخ ػٖ هش‪٣‬ن ‪ٝ‬مغ ~ ‪ٝ‬اُز‪ ٠‬رؼَٔ ‪ُِ inverting‬خشط‪.‬‬
‫ٍيض٘ظت‪:‬‬
‫ُْ ٗغزخذّ ٓقل‪ٞ‬كخ رؾز‪ ٟٞ‬ػِ‪ ٠‬اُؾش‪ٝ‬ف اُِ‪ ٠‬ػب‪ٝ‬ص‪ٗ ٖ٣‬ؼشم‪ٜ‬ب الٗ٘ب ٓؼ ‪٘ٛ‬ؼشك ؿ‪٤‬ش‬
‫ؽشف ‪ٝ‬اؽذ ‪ ُٞ ٌُٖ ,‬ؽبث‪ٗ ٖ٤‬ؼشك ًزا ؽشف ث٘ذخِ‪ ْٜ‬ك‪ٓ ٠‬قل‪ٞ‬كخ ك‪ٜ٘‬ط‪ٞ‬س ػِ‪ ٠‬ؽٌَ‬
‫اُجشٗبٓظ ثبعزخذاّ صبثذ ٖٓ ٗ‪ٞ‬ع أُقل‪ٞ‬كخ ‪.for loop ٝ‬‬
‫‪165Page‬‬ ‫‪Technical Support 2015‬‬
ٍ‫د ثذ‬ٌُٞ‫ ا‬٠‫ش ك‬٤‫٘ـ‬ٛٝ ULN2003 ٍ‫شح ا‬٣‫َ دا‬٤‫٘ؾ‬ٛ ‫رظ‬ٝ‫ ثش‬٠ِ‫ش أخطبء ػ‬ٜ‫عزظ‬
PORTD =
‫; ٗنغ‬column
PORTD =
. ~column;

:‫اىبزّاٍذ األٗه‬
‫ف‬ٝ‫ػشك اُؾش‬
Z ٠ُ‫ ا‬A ٖٓ
led ‫ اُــ‬٠ِ‫ػ‬
.matrix

166Page Technical Support 2015


‫اُذائشح‬

167Page Technical Support 2015


‫حاّ‪ٞ‬ا‪:‬م‪ٞ‬ف‪ٞ‬ت ػزض ّص ٍتضزك ‪:Scrolling text message‬‬
‫اُلٌشح األعبع‪٤‬خ ٓؤخ‪ٞ‬رح ٖٓ كٌشح ػشك ؽش‪٣‬و اُغ‪ٔ٤٘٤‬ب ‪ ,‬ؽ‪٤‬ش رؼشك ٓؾب‪ٛ‬ذ ٓززبثؼخ‬
‫ٓؾ‪ٜ‬ذ رِ‪ ٞ‬ا‪٥‬خش ‪ٝ‬ثغشػخ ًبك‪٤‬خ ثؾ‪٤‬ش ‪٣‬زؾون اُخذاع اُجقش‪٣ٝ ٟ‬ؾؼش أُؾب‪ٛ‬ذ ثبُؾشًخ‬
‫اُذائٔخ‪.‬‬
‫بزّاٍذ ىتضز‪ٝ‬ل اىضزف "‪ ٍِ "A‬اى‪ َِٞٞ‬إى‪ ٚ‬اى‪ٞ‬سار ‪:‬‬
‫‪٣‬وغْ اُجشٗبٓظ اُ‪ٓ ٠‬ؾب‪ٛ‬ذ ‪ٗٝ‬غزؼ‪ ٖ٤‬ك‪ ٠‬ػَٔ ًَ ٓؾ‪ٜ‬ذ ث‪ٞ‬سهخ ٓشثؼبد‪.‬‬
‫أُؾ‪ٜ‬ذ األ‪ ٍٝ‬عٔ‪٤‬غ اُِ‪٤‬ذاد ٓطلئخ‬

‫عٔ‪٤‬غ اُقل‪ٞ‬ف رٌ‪ ٕٞ‬ثؤفلبس ٌَُ‬


‫ػبٓ‪ٞ‬د ‪0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,‬‬
‫أُؾ‪ٜ‬ذ اُضبٗ‪ ٠‬ثذء ظ‪ٜٞ‬س ه‪ ْ٤‬فل‪ٞ‬ف أ‪ ٍٝ‬ػبٓ‪ٞ‬د ع‪ٜ‬خ اُ‪ ٖ٤ٔ٤‬ألٕ اُزؾش‪٣‬ي ‪ُ ٌٕٞ٣‬غ‪ٜ‬خ‬
‫اُ‪٤‬غبس ػ٘ذ ػشك سعبئَ اُِـخ اإلٗغِ‪٤‬ض‪٣‬خ ػ٘ذ رؾشً‪ٜ٤‬ب‬

‫‪168Page‬‬ ‫‪Technical Support 2015‬‬


‫ث‪٤‬بٗبد ه‪ ْ٤‬اُقل‪ٞ‬ف ٌَُ ػبٓ‪ٞ‬د ثبُٔؾ‪ٜ‬ذ اُضبٗ‪٠‬‬

‫‪0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xFC,‬‬

‫أُؾ‪ٜ‬ذ اُضبُش صؽضؽخ ه‪ ْ٤‬اُؼٔ‪ٞ‬د األ‪ ٍٝ‬خط‪ٞ‬ح اُ‪ ٠‬اُ‪٤‬غبس صْ امبكخ ه‪ ْ٤‬فل‪ٞ‬ف اُؼٔ‪ٞ‬د‬
‫اُزبٗ‪ ٠‬ك‪ ٠‬اُؾشف‬

‫ث‪٤‬بٗبد ه‪ ْ٤‬اُقل‪ٞ‬ف ٌَُ ػبٓ‪ٞ‬د ثبُٔؾ‪ٜ‬ذ اُضبُش‬

‫‪0x00,0x00,0x00,0x00,0x00,0x00, 0xFC,0x12,‬‬

‫أُؾ‪ٜ‬ذ اُشاثغ اصاؽخ ثٔوذاس خبٗخ اُ‪ ٠‬اُ‪٤‬غبس ‪ٝ‬امبكخ فل‪ٞ‬ف اُؼٔ‪ٞ‬د اُضبُش‬

‫‪x00,0x00,0x00,0x00,0x00, 0xFC,0x12,0x12, //view no 4‬‬


‫أُؾ‪ٜ‬ذ اُخبٓظ‪:‬‬

‫‪169Page‬‬ ‫‪Technical Support 2015‬‬


x00,0x00,0x00,0x00, 0xFC,0x12,0x12,0xFC, //view no 5
. ‫ٌخ‬٣‫ اُشعبُخ ٗزشى كشاؽ ُِغٔبػ ثزؾش‬ٝ‫بء اُؾشف أ‬ٜ‫ذ اُغبدط ثؼذ اٗز‬ٜ‫أُؾ‬

0x00,0x00,0x00, 0xFC,0x12,0x12,0xFC,0x00, //view no 6


‫ذ اُغبثغ‬ٜ‫أُؾ‬

0x00,0x00, 0xFC,0x12,0x12,0xFC,0x00,0x00,//view no 7
ٖٓ‫ذ اُضب‬ٜ‫أُؾ‬

0x00,0xFC0x12,0x12,0xFC,0x00,0x00,0x00,//view no 8

171Page Technical Support 2015


‫ذ اُزبعغ‬ٜ‫أُؾ‬

0xFC,0x12,0x12,0xFC,0x00,0x00,0x00,0x00,//view no 9
‫ذ اُؼبؽش‬ٜ‫أُؾ‬

0x12,0x12,0xFC,0x00,0x00,0x00,0x00,0x00, //view no 10
:‫ ػؾش‬ٟ‫ذ اُؾبد‬ٜ‫أُؾ‬

0x12,0xFC,0x00,0x00,0x00,0x00,0x00,0x00, //view no 11
:‫ ػؾش‬٠ٗ‫ذ اُضب‬ٜ‫أُؾ‬

171Page Technical Support 2015


0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //view no 12
:‫ذ اُضبُش ػؾش‬ٜ‫أُؾ‬

x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; //view no 13
: ‫اىبزّاٍذ‬
. ‫خ ُإلؽغبط ثبُؾشًخ‬٤‫ثبُغشػخ اٌُبك‬ٝ ‫ذ اُغبثوخ‬ٛ‫ُؼشك أُؾب‬

172Page Technical Support 2015


173Page Technical Support 2015
‫اىذا‪ٝ‬زة‪:‬‬

‫بزّاٍذ ىؼزض صزف ‪ٍ A &B‬تضزم‪: ِٞ‬‬


‫اُزـ‪٤٤‬شاد رجذأ ٖٓ أُؾ‪ٜ‬ذ اُغبثغ‬

‫;‪0x00,0x00,0xFC,0x12,0x12,0xFC,0x00,0xFE‬‬
‫أُؾ‪ٜ‬ذ اُضبٖٓ‬

‫‪174Page‬‬ ‫‪Technical Support 2015‬‬


0x00,0xFC,0x12,0x12,0xFC,0x00,0xFE,0x90;
:‫ذ اُزبعغ‬ٜ‫أُؾ‬

0xFC,0x12,0x12,0xFC,0x00,0xFE,0x90, 0x90;
:‫ذ اُؼبؽش‬ٜ‫أُؾ‬

0x12,0x12,0xFC,0x00,0xFE,0x90, 0x90,0x60;
:‫ ػؾش‬ٟ‫ذ اُؾبد‬ٜ‫أُؾ‬

0x12,0xFC,0x00,0xFE,0x90, 0x90,0x60,0x00;

175Page Technical Support 2015


:‫ ػؾش‬٠ٗ‫ذ اُضب‬ٜ‫أُؾ‬

0xFC,0x00,0xFE,0x90, 0x90,0x60,0x00,0x00;
:‫ذ اُضبُش ػؾش‬ٜ‫أُؾ‬

0x00,0xFE,0x90, 0x90,0x60,0x00,0x00,0x00;
:‫ذ اُشاثغ ػؾش‬ٜ‫أُؾ‬

0xFE,0x90, 0x90,0x60,0x00,0x00,0x00,0x00;

:‫ذ اُخبٓظ ػؾش‬ٜ‫أُؾ‬

176Page Technical Support 2015


‫;‪0x90, 0x90,0x60,0x00,0x00,0x00,0x00,0x00‬‬
‫أُؾ‪ٜ‬ذ اُغبدط ػؾش‪:‬‬

‫;‪0x90,0x60,0x00,0x00,0x00,0x00,0x00,0x00‬‬
‫أُؾ‪ٜ‬ذ اُغبثغ ػؾش‪:‬‬

‫;‪0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00‬‬
‫أُؾ‪ٜ‬ذ اُضبٖٓ ػؾش ‪ٝ‬اُز‪ ٟ‬ثؼذ‪٣ ٙ‬جذأ اُذ‪ٝ‬سإ أ‪ ٝ‬اُِق ٖٓ عذ‪٣‬ذ‬

‫;‪0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00‬‬
‫اىبزّاٍذ‪:‬‬

‫‪177Page‬‬ ‫‪Technical Support 2015‬‬


:‫زة‬ٝ‫اىذا‬

178Page Technical Support 2015


‫هت ُ‪ ٞ‬ػب‪ٝ‬ص أػشك ٗـ ًج‪٤‬ش ؽ‪٣ٞ‬خ ‪ٛ‬ؾزبط اعزخذّ ‪ led matrix‬أًجش ؽ‪٣ٞ‬خ ‪.‬‬
‫بزّاٍذ‪:‬‬
‫اعزخذاّ ‪ُ 16×8 LED dot matrix‬ؼشك ٗـ ٓزؾشى‪.‬‬
‫أٗب ٌٖٓٔ اعزخذّ ار٘‪ٛٝ 8×8 LED dot matrix ٖ٤‬زو‪ ّٞ‬ث٘لظ اُ‪ٞ‬ظ‪٤‬لخ ص‪ ٟ‬اُــ ‪16×8‬‬
‫أٗب ػ٘ذ‪ 16 ٟ‬ػبٓ‪ٞ‬د ‪ٛ‬ؾزبط ‪ ٖٓ 16 I/O pins‬أُ‪ٌ٤‬ش‪ ٝ‬ػؾبٕ أػشف اؽـِ‪ ,, ْٜ‬ثظ د‪ٙ‬‬
‫‪٤ٛ‬خِ‪ٓ ٠٘٤‬وذسػ اعزخذّ أُ‪ٌ٤‬ش‪ ٝ‬ثزبػ‪ ٠‬ك‪ ٠‬أ‪ ٟ‬ؽبعخ ربٗ‪٤‬خ ُ‪ ٞ‬ؽج‪٤‬ذ اٗ‪ ٠‬أًجش أُؾش‪ٝ‬ع‬
‫كٌٖٔٔ اعزخذّ ‪٣ 2 shift register‬ؼَٔ اصاؽخ ُِج‪٤‬بٗبد اُِ‪ ٠‬خبسعخ ‪ٝ‬ثٌذ‪ ٙ‬أ‪ٝ‬كش ‪pins‬‬
‫ٖٓ أُ‪ٌ٤‬ش‪. ٝ‬‬
‫‪ٛ‬بعزخذّ )‪ ٞٛٝ shift register (74HC595‬ػجبسح ػٖ ‪8-stage serial-in, serial‬‬
‫‪ or parallel-out shift register‬ثذخِ‪ ٚ‬اُذارب عش‪٣‬بٍ ‪٣‬طِؼ‪ٜ‬ب ‪ٝ parallel‬ثٔب اٗ‪8 ٚ‬‬

‫‪179Page‬‬ ‫‪Technical Support 2015‬‬


٠ُِ‫ا‬ٝ‫ٌش‬٤ُٔ‫وَِ ػذد أسعَ ا‬ٛ ٙ‫ثٌذ‬ٝ )74HC595) ٖ٤٘‫بعزخذّ ار‬ٜ‫ ك‬16 ‫أٗب ٓؾزبط‬ٝ
:٠‫اله‬ٛ )74HC595) ‫ذ ُِـ‬٤‫ كزؾ٘ب اُذارب ؽ‬ُٞ , 3 ٠ُ‫ ا‬16 ٖٓ ‫ب‬ٜ‫ٓؾزبع‬

.8 parallel output ٍ‫ػجبسح ػٖ ا‬: 15 &) 7 _ 1 )pin


storage register ٙ‫ٓؼب‬ٝ shift register ٖ‫ػجبسح ػ‬74HC595 ‫اُـ‬: 12 & 11 pin
ٝ storage register ‫ ُِـ‬SH_CP (pin 11) َ‫ ٓ٘لق‬clock ٚ٤ُ ْٜ٘ٓ ‫اؽذ‬ٝ ًَ
. shift register ‫ُِـ‬ST_CP (pin 12)
storage ‫ اُـ‬٠ِ‫ٍ ػ‬ٝ‫ػ األ‬ٝ‫ش ُٔب رش‬٤‫ ؿ‬output pin ‫ اُـ‬٠ِ‫الؽع إ اُذارب ٓؼ ثزخشط ػ‬
٠ِ‫ ػ‬positive-going transition َ‫ش ُٔب أدخ‬٤‫ؾقِؼ ؿ‬٤‫ ٓج‬ٙ‫د‬ٝ register
. ST_CP input ‫اُـ‬
ًَ ‫ ٓغ‬shift ‫ب‬ِٜ‫ؾق‬٤‫ث‬ٝ ٚ٘ٓ َ‫ ثزذخ‬serial data ‫ اُــ‬٠ُِ‫ أُذخَ ا‬ٙ‫ د‬:DS pin (14)
.SH_CP input ‫ ٖٓ اُـ‬positive-going transitions
pin ‫زح اُـ‬ٛ ّ‫ ثغزخذ‬cascade ‫ ٓغ ثؼل‬74HC595 ‫فَ ًزا‬ٞ‫ ُٔب ث‬:Q7’ (pin 9)
ٍٝ‫ األ‬shift register ‫ ثبخذ اُذارب ٖٓ اُـ‬serial standard output ‫ب رؼَٔ ًـ‬ٜٗ‫ال‬
16- ‫ اُـ‬ٙ‫ثٌذ‬ٝ .٠ٗ‫ اُزب‬shift register ‫ ُِـ‬serial input (DS pin) ‫ب ٓغ اُـ‬ِٜ‫ف‬ٝ‫أ‬ٝ
181Page Technical Support 2015
shift register ‫ ُِـ‬DS pin ‫ْ ٖٓ اُـ‬ٛ‫ْ أػٔذح أُبرشًظ ثبخذ‬ٜ٤‫ ث‬ٟ‫ ثـز‬٠ُِ‫ ا‬serial bit
.ٍٝ‫األ‬
1 ‫ب‬ٜ٤ِ‫ ثنغ ػ‬ٙ‫ ػؾبٕ ًذ‬active low pin ٠ٛٝ reset ٖ‫ ػجبسح ػ‬:(MR) (pin 10)
.deactivate ‫ب‬ِٜٔ‫ػؾبٕ اػ‬
‫ ثنغ‬ٙ‫ ػؾبٕ ًذ‬active low pin ٠ٛٝ output enable ٖ‫ػجبسح ػ‬:OE (pin 13)
.activate ‫ب‬ٜ٤ِ‫ ػؾبٕ اخ‬0 ‫ب‬ٜ٤ِ‫ػ‬
‫ ػؾبٕ أؽقَ ع اُذارب ًبِٓخ‬SH_CP ‫ ٖٓ اُـ‬16 clock pulses ‫ ٓؾزبط‬٠ٗ‫اُخالفخ ا‬
‫ب ع‬ٜ‫أهذس أهِؼ‬ٝ ٕ‫ػؾبٕ اُذارب رزخض‬ST_CP ‫ ٖٓ اُـ‬clock pulse ‫ٖ أهِغ‬٣‫ثؼذ‬ٝ
.‫اُخشط‬

181Page Technical Support 2015


182Page Technical Support 2015
‫ٍا ٕ٘ اىـ ‪:GPS‬‬
‫‪ ٞٛ‬اخزقبس ‪ ٖٓ Global Positioning System‬اعٔ‪ ٞٛ ٚ‬ع‪ٜ‬بص ‪٣‬غزخذّ ُو‪٤‬بط د‪ٝ‬ائش‬
‫اُؼشك ‪ ٝ‬خط‪ٞ‬ه اُط‪ ٍٞ‬اُخبفخ ثؾئ ٓب ‪ ٌٖ٤ُٝ‬ػشث‪٤‬خ ‪ ,‬عل‪٘٤‬خ ‪ ,‬هبئشح ‪ٞٓ ,‬ث‪ٝ َ٤‬ثبُزبُ‪٠‬‬
‫‪٣‬غ‪ َٜ‬رؾذ‪٣‬ذ ٌٓبٕ ‪ٛ‬زا اُؾئ ‪.‬‬

‫تطب‪ٞ‬قاتٔ‪:‬‬
‫‪٣‬غزخذّ ثٌضشح ك‪ ٠‬أُؾبس‪٣‬غ اُز‪ ٠‬رؾزبط رؾذ‪٣‬ذ أٌُبٕ ‪٣ٝ‬غزخذّ ثٌضشح ك‪ٓ ٠‬ؾبس‪٣‬غ اُـ‬
‫‪ automotive‬الٗ‪ ٖٓ ٠‬خالُ‪ ٚ‬ثوذس أػشف ٌٓبٕ ػشث‪٤‬ز‪ ُٞ ٠‬ؽقَ ػِٔ‪٤‬خ عشهخ ‪ٝ‬أ‪٣‬نب‬
‫ك‪ ٠‬رطج‪٤‬وبد اٍ ‪ navigation‬كؤهذس أؽذد ٌٓبٕ ػشث‪٤‬ز‪ ٖٓ ٠‬خالُ‪ٝ ٚ‬ػٖ هش‪٣‬ن ‪Google‬‬
‫‪ map‬أهذس أػشف ا‪ ٚ٣‬أُغبس اُِ‪ٓ ٠‬ؾزبط أٓؾ‪٤‬خ ػؾبٕ أس‪ٝ‬ػ ٌٓبٕ ٓؼ‪ٝ ..... ٖ٤‬أ‪٣‬نب‬
‫‪٣‬غزخذّ ك‪ ٠‬اُطبئشاد اُز‪ ٠‬رؾذد ٌٓبٕ األُـبّ ‪ٝ‬اُطبئشاد اُخبفخ ثؼَٔ ‪drive test‬‬
‫‪ٝ‬ؿ‪٤‬ش‪ٛ‬ب ٖٓ اُزطج‪٤‬وبد ‪.....‬‬

‫فنزة ػَئ‪:‬‬
‫‪٣‬زْ رؾذ‪٣‬ذ ٌٓبٕ اُؾئ ػٖ هش‪٣‬ن ‪ 24‬هٔش ف٘بػ‪ ٠‬رْ اهاله‪ ْٜ‬ك‪ ٠‬اُلنبء ُزـط‪٤‬خ ًبَٓ‬
‫ً‪ًٞ‬ت األسك ثؾٌَ ٓز‪ٞ‬افَ ‪ ٝ‬هذ رْ ‪ٝ‬مؼ‪ ْٜ‬عٔ‪٤‬ؼب ً ثؾ‪٤‬ش إٔ ‪ٓ ٌٕٞ٣‬ب ال ‪٣‬وَ ػٖ ‪4‬‬
‫أهٔبس ف٘بػ‪٤‬خ ظب‪ٛ‬شح ٖٓ أ‪ٗ ١‬وطخ ػِ‪ ٠‬عطؼ اٌُشح األسم‪٤‬خ‪ٛ .‬زح األهٔبس اُق٘بػ‪٤‬خ‬
‫رشعَ ‪٣ very low power radio signals‬زْ اعزوجبُ‪ٜ‬بػٖ هش‪٣‬ن َٖٓ ُذ‪ ْٜ٣‬ع‪ٜ‬بص اُـ‬
‫‪ٝ GPS receiver‬اُز‪ٞٓ ٌٕٞ٣ ٟ‬ع‪ٞ‬د ثبُؼشثبد أ‪ ٝ‬ػِ‪ٞٓ ٠‬ث‪ِ٤‬ي كبٗ‪٣ ٚ‬و‪ ّٞ‬ثبعزوجبٍ‬
‫اؽبساد أسثؼخ أهٔبس ف٘بػ‪٤‬خ ػِ‪ ٠‬األهَ‪ٛ .‬زح االؽبساد رٌ‪ ٕٞ‬ػجبسح ػٖ اؽبساد ر٘وَ‬
‫ثغشػخ اُن‪ٞ‬ء رؾز‪ ٟٞ‬ػِ‪ٌٓ ٠‬بٕ اُؤش اُق٘بػ‪ ٠‬ث‪ٞ‬هذ ٓؾذد ‪ٝ‬اُز‪٣ ٟ‬زْ رؾذ‪٣‬ذ‪ ٖٓ ٙ‬خالٍ‬
‫عبػبد رس‪٣‬خ ر‪ٞ‬عذ ثبُؤش اُق٘بػ‪.٠‬‬
‫‪183Page‬‬ ‫‪Technical Support 2015‬‬
‫أُجذأ األعبع‪ٌُٔ ٢‬بٕ اٍ ‪ GPS‬ثذ‪ ٢ٜ٣‬عذاً‪ ,‬كبرا ػِٔ٘ب أٌُبٕ اُذه‪٤‬ن ُؤش ف٘بػ‪S1 ,٢‬‬
‫ػِ‪ ٠‬عج‪ َ٤‬أُضبٍ‪ ٝ ,‬ػِٔ٘ب إٔ صٖٓ ٗوَ اإلؽبساد ًبٕ ‪ٛ ,T1‬زا ‪٣‬غؼِ٘ب ٓ‪ٞ‬ع‪ٞ‬د‪ ٕٝ‬ك‪٢‬‬
‫ٗوطخ ٓؾذدح ٖٓ ٓغبٍ اُؤش اُق٘بػ‪.٢‬‬

‫ارا هٔ٘ب ا‪ ٕ٥‬ثبمبكخ هٔش ف٘بػ‪ ٢‬آخش ٌٓبٗ‪٣ ٝ ,S2 ٚ‬ؤخز ؽ‪ٞ‬اُ‪ ٖٓ T1 ٢‬اُ‪ٞ‬هذ إل‪٣‬قبٍ‬
‫اإلؽبساد اُ‪٘٤‬ب‪ ,‬ع٘غذ أٗ‪ ٚ‬ػ٘ذٓب ٗو‪ ّٞ‬ثبعزخذاّ اُج‪٤‬بٗبد اُز‪ ٢‬أخزٗب‪ٛ‬ب ٖٓ اُؤش‪ٖ٣‬‬
‫اُق٘بػ‪ ٖ٤٤‬ع٘غزط‪٤‬غ رؾذ‪٣‬ذ ٌٓبٗ٘ب ػِ‪ ٠‬اؽذ‪ ٟ‬اُ٘وبه اُزبُ‪ L1 :٢‬أ‪.L2 ٝ‬‬

‫‪184Page‬‬ ‫‪Technical Support 2015‬‬


‫‪ ٝ‬ا‪ ٕ٥‬أفجؼ األٓش ‪ٝ‬امؼ أًضش‪ ,‬كبرا رْ امبكخ هٔش ف٘بػ‪ ٢‬صبُش‪ ,‬ع٘غذ أٗ٘ب ٓ‪ٞ‬ع‪ٞ‬د‪ٖ٣‬‬
‫ػِ‪ ٠‬أؽذ اُ٘وبه‪ ٝ ,‬ك‪ٓ ٢‬ضبٍ سهْ ‪ ,3‬ع٘غذ أٗ٘ب ػِ‪ٗ ٠‬وطخ ‪ ٝ ,L2‬ارا أمل٘ب هٔش ف٘بػ‪٢‬‬
‫ساثغ ع٘غزط‪٤‬غ ؽغبة اإلسرلبع ػٖ هش‪٣‬ن اُؼالهخ اُزبُ‪٤‬خ أُغبكخ = عشػخ االؽبسح *‬
‫صٖٓ اُ‪ٞ‬ف‪ ٍٞ‬اُ‪ ٠‬اُـ ‪ GPS receiver‬كبُغشػخ ‪ ٠ٛ‬عشػخ اُـ ‪ٝ radio wave‬اُز‪ ٠‬رجِؾ‬
‫‪٣ٝ 186,000 miles per second‬زٌٖٔ ثزُي ٖٓ ؽغبة أُغبكخ اُز‪ ٠‬رلقِ‪ ٚ‬ػٖ‬
‫األهٔبس ٓٔب ‪٣‬غؼِخ هبدسا ػِ‪ ٠‬رؾذ‪٣‬ذ ٌٓبٗ‪ٓ ٚ‬وبسٗخ ث‪ٜ‬ب‪.‬‬

‫ّطاق ػَو اىـ ‪: GPS‬‬


‫‪٣‬ؼَٔ اُـ ‪ GPS‬ثذهخ ك‪ ٠‬األٓبًٖ أُلز‪ٞ‬ؽخ ٌُٖ ٖٓ أُغزؾ‪ َ٤‬إٔ ‪٣‬غزوجَ اُـ ‪GPS‬‬
‫‪ receiver‬االؽبسح ٖٓ اُـ ‪ transmitter‬ك‪ ٠‬األٓبًٖ أُـِوخ ٓضَ اٌُ‪ٜٞ‬ف ‪,‬‬
‫‪ٝ underground garage‬ؿ‪٤‬ش رُي ٖٓ األٓبًٖ أُـِوخ ‪ٝ‬أ‪٣‬نب ػ٘ذٓب ‪ٞ٣‬عذ ػ‪ٞ‬ائن رؼ‪٤‬ن‬
‫اعزوجبٍ االؽبسح ٓضَ اُغجبٍ ‪ٝ‬أُجبٗ‪ ٠‬اُؼبُ‪٤‬خ‪.‬‬

‫‪:GPS receiver‬‬

‫‪185Page‬‬ ‫‪Technical Support 2015‬‬


َٔ‫ؼ‬٣ٝ ,‫سد‬ٞ‫بٍ ث‬٣‫ن اُغش‬٣‫ األؿِت ػٖ هش‬٠‫ ك‬ٝ‫ٌش‬٤ُٔ‫ ثب‬GPS receiver ‫َ اُـ‬٤‫ف‬ٞ‫زْ ر‬٣
. 3.3v ٚ‫ٔز‬٤‫ ه‬power supply ٠ِ‫ ػ‬GPS receiver ‫اُـ‬
SKM53 ‫ب‬ٜٔ‫ اع‬kit ُٚ ‫عذ‬ٞ‫ر‬ٝ skylab ٍٞ٣‫د‬ُٞٔ‫ ا‬GPS receiver ‫اع اُـ‬ٞٗ‫ٖٓ أؽذ أ‬
PC ‫ٍ ٓغ‬ٞ٣‫د‬ُٞٔ‫فَ ا‬ٞ٣ ٕ‫ ػؾب‬UART ‫ ٓغ اُـ‬interface ‫ب‬ِٜٔ‫ؼ‬٣ ٚٗ‫ثزٌٖٔ أُغزخذّ ا‬
.ٍٞ‫ُذ ػِط‬ٞ‫ ك‬5 power supply ٠ِ‫ًٔبٕ ثؾـِخ ػ‬ٝ microcontroller ٝ‫أ‬

Features of SKM53 module


Ready pin for UART interface, TTL 5V.
NMEA protocols (default speed: 9600bps).
One serial port.
:٠‫ْ ًبالر‬ٜ‫لز‬٤‫ظ‬ٝ Pin 5 ُٚ GPS receiver ‫ٍ اُـ‬ٞ٣‫د‬ٞٓ ٕ‫ك٘غذ أ‬

186Page Technical Support 2015


‫م‪ٞ‬ف‪ٞ‬ت ت٘ص‪ٞ‬و اىَ٘د‪٘ٝ‬ه ٍغ اىَ‪ٞ‬نزٗمْتزٗىز‪:‬‬
‫‪٣‬زْ ر‪ٞ‬ف‪ َ٤‬اُـ ‪ٌ٤ُِٔ UART pins‬ش‪ً٘ٝ‬زش‪ُٝ‬ش ثبُـ ‪ُِٞٔ UART pins‬د‪ ,, ٍٞ٣‬ك‪٤‬زْ‬
‫ر‪ٞ‬ف‪ َ٤‬اُـ ‪ٌ٤ُِٔ RX pin‬ش‪ً٘ٝ‬زش‪ُٝ‬ش ثبُـ ‪ٝ SKGPS‘s TX pin‬اُؼٌظ ك‪٤‬زْ ر‪ٞ‬ف‪ َ٤‬اُـ‬
‫‪ٌ٤ُِٔ TX pin‬ش‪ ٝ‬ثبُـ ‪ .SKGPS's RX pin‬اُـ ‪ٌ٤ُِٔ RX pin‬ش‪ٝ RC7 ٠ٛ ٝ‬اُـ ‪TX‬‬
‫‪ٌ٤ُِٔ PIN‬ش‪ . RC6 ٠ٛ ٝ‬اُـ ‪ Reset pin‬ر‪ٞ‬ف‪ِٜ٤‬ب أخز‪٤‬بس‪ٞٗ ٌٖٔٓ ٟ‬فِ‪ٜ‬ب ‪ ٌٖٔٓٝ‬أل‬
‫ُ‪ ٞ‬ؽبثت أػَٔ صس ‪ُِ reset‬ـ ‪ SKGPS-53‬أص٘بء اُزؾـ‪ٞٛ َ٤‬فِ‪ٜ‬ب ‪ٝ‬اُز‪ٞ‬ف‪ًٔ َ٤‬ب‬
‫ثبُؾٌَ‪.‬‬

‫بزٍزت اىَ٘د‪٘ٝ‬ه‪:‬‬
‫‪187Page‬‬ ‫‪Technical Support 2015‬‬
‫اُـ‬.NMEA format ‫سح‬ٞ‫ ف‬٠‫ ك‬GPS receiver ‫غزوجَ اُذارب ٖٓ اُـ‬٣ ‫ُش‬ٝ‫ً٘زش‬ٝ‫ٌش‬٤ُٔ‫ا‬
36 ) ‫ رٌبكئ‬٠‫اُز‬ٝ $ sign ‫جذأ ثـ‬٤‫ ث‬string ًَ strings ‫جؼذ‬٤‫ ث‬NMEA protocol
‫ رٌبكئ‬٠‫اُز‬ٝ CR َ‫ذ ٓض‬٣‫ رجذأ عطش عذ‬٠‫اُز‬ٝ signsٍ‫ػخ ٖٓ ا‬ٞٔ‫ ثـ ثٔغ‬٠ٜ‫٘ز‬٣ٝ(ASCII
‫هق‬ٞ‫ز‬٣ ٚ‫ر‬ٞ‫ أُجؼ‬string ‫ اُـ‬٠٘‫ ٓؼ‬.(ASCII 10) ‫ رٌبكئ‬٠‫اُز‬ٝ LF ٝ (ASCII 13)
$GPGLL ‫ءح ثٌِٔخ‬ٝ‫ أُجذ‬string ‫َ أُضبٍ اُـ‬٤‫ عج‬٠ِ‫ كؼ‬$ sign ‫ ثؼذ اُـ‬ًِٚٔ ٍٝ‫ أ‬٠ِ‫ػ‬
ٖٓ‫اُض‬ٝ longitude ٍٞ‫ه اُط‬ٞ‫خط‬ٝ Latitude ‫ه اُؼشك‬ٞ‫ٓبد ػٖ خط‬ِٞ‫ ٓؼ‬٠٘٤‫رؼط‬
ْ‫َ اُذارب ر‬ٛ ‫ أػشف‬٠ٗ‫ ا‬٠ٌ٘ٔ‫ ثز‬٠ُِ‫ ا‬checksum ٝ data validity ٝ exact time
comma ‗ , ‘ ‫ب ثـ‬ٛ‫سا‬ٝ ٠ُِ‫ٖ ا‬٤‫ث‬ٝ ‫ب‬ٜ٘٤‫ٍ ث‬ٞ‫ًَ دارب ٓلق‬ٝ.‫ال ال‬ٝ ‫ب‬ِٜ‫اعزوج‬
:ٍ‫ أُضب‬٠‫امؼ ك‬ٝ ‫ ٓب‬ٟ‫ص‬

:‫خ‬٤ُ‫ اُزب‬NMEA-0183 messages ‫ذػْ اُـ‬٣ SKM53 module ‫اُـ‬


.GGA, GLL, GSA, GSV, RMC VTG, ZDA, DTM

NMEA output Sequence

188Page Technical Support 2015


Option Description
GGA Time, Position and fix type data.
GPS receiver operating mode, active satellites used in the
GSA
position solution, and DOP values.
The number of GPS satellites in view satellite ID numbers,
GSV
elevation, azimuth, and SNR values.
Time, data, position, course and speed data. Recommended
RMC
Minimum Navigation Information.
VTC Course and speed information relative to the ground.

GGA-Global Positioning System Fixed Data

This sentence contains the position, time and quality of the


navigation fix.
$GPGGA,033410.000,2232.1745,N,11401.1920,E,1,07,1.1,107.14,
M,0.00,M,,*64
Table 2: GGA Data Format

189Page Technical Support 2015


ٖ‫ ػ‬ٙ‫ ثؾذد‬٠ُِ‫ا‬ٝ position ‫ اُـ‬Data Format ‫ ٖٓ اُـ‬٠ٜ٘ٔ٣ ٠ُِ‫غ ا‬٣‫ أؿِت أُؾبس‬٠‫ك‬
GGA Data ‫ ثزًش اُـ‬٠‫ٌ٘زل‬ٛ ٙ‫ ػؾبٕ ًذ‬,, longitude ٝ latitude ‫ن اُـ‬٣‫هش‬
‫ًزُي اُـ‬ٝ longitude ٝ latitude ‫م ثبُـ‬ٞ‫ ك‬٠ُِ‫ٍ ا‬ٝ‫زْ ٖٓ اُغذ‬ٜ٘ٛٝ Format
‫ ارا أسدد ٓؼشكخ‬. ‫ال ؿشة‬ٝ ‫ال ؽشم‬ٝ ‫ة‬ٞ٘‫ال ع‬ٝ ٍ‫َ ؽٔب‬ٛ ‫ ػؾبٕ أؽذد‬indictor
٠‫اُز‬ٝ ‫ذ أُشكوخ‬٤‫ اُذارب ؽ‬٠ُ‫ أٗظش ا‬, ٟ‫ األخش‬Data Format ‫ٓبد أًضش ػٖ اُـ‬ِٞ‫ٓؼ‬
:‫نب‬٣‫٘ب أ‬ٛ ٖٓ ‫ب‬ِٜ٤ٔ‫ٌٖٔ رؾ‬٣
http://www.cytron.com.my/usr_attachment/SkyNav%20SKM53%2
0Datasheet.pdf

:‫اىبزّاٍذ‬
GPS ‫ اُـ‬ٚ‫د ث‬ٞ‫ع‬ُٞٔ‫ ٌُِٔبٕ ا‬longitude ٝ latitude ‫ؼشك اُـ‬٣ ‫ّ ثؼَٔ ثشٗبٓظ‬ٞ‫ع٘و‬
.‫خ‬٣‫ ؽبؽخ ػبد‬٠ِ‫ ػ‬receiver
:‫اىن٘د‬
:٠ُ‫ٕ ثبُؾٌَ اُزب‬ٌٞ‫ ر‬٠‫اُز‬ٝ ‫خ‬٣‫ عب‬٠ُِ‫ ا‬message ‫ت اُـ‬٤‫ْ رشر‬ٜ‫ ك‬٠ِ‫د ػ‬ٌُٞ‫ؼزٔذ ا‬٣
191Page Technical Support 2015
$GPGGA,XXXXXX.XXX,XXXX.XXXX,X,XXXXX.XXXX,X,X,
XX,X.X,XXX.XX,X,X.XX,X,,*XX
.٠ٗ‫ سهْ ٓب ؽغت ٌٓب‬ٝ‫ رؼجش ػٖ ؽشف ٓب أ‬ٟ‫ د‬X ‫اُـ‬

191Page Technical Support 2015


‫اُـ ‪ِٞٓ GPS‬ػ ‪ simulation‬ػِ‪ ٠‬ثش‪ٝ‬رظ ‪ ,,‬كٌٖٔٔ ٗجؼذ اُـ ‪ ٖٓ data format‬ث‪٤‬ي‬
‫أخش‪ ٟ‬ػٖ هش‪٣‬ن اُغش‪٣‬بٍ ‪ٗٝ‬ؾ‪ٞ‬ف ‪ َٛ‬اُجشٗبٓظ ثزبػ٘ب ػشك اُج‪٤‬بٗبد اُِ‪ ٠‬ثؼز٘ب‪ٛ‬ب ُ‪ٚ٤‬‬
‫‪ٝ‬ال أل‪ .‬ػؾبٕ ًذ‪٘ٛ ٙ‬غٔ‪ ٠‬اٌُ‪ٞ‬د اُغبثن ‪ ٞٛ RX‬اٌُ‪ٞ‬د اُخبؿ ثبُـ ‪ PIC‬اُخبفخ‬
‫ثبالعزوجبٍ ‪٘ٛٝ ,,‬ؼَٔ ً‪ٞ‬د فـ‪٤‬ش ‪٘ٛ‬غٔ‪٤‬خ ‪٣ TX‬جؼذ اُذارب ُِٔ‪ٌ٤‬ش‪ ٝ‬األ‪ ٌُٖ .ٍٝ‬ك‪ ٠‬اُ‪ٞ‬اهغ‬
‫أص٘بء اُؼِٔ‪ ٌٕٞ٤ٛ ٠‬ػ٘ذ‪ ٟ‬اُـ ‪ GPS‬كٔؼ ‪ٛ‬ؾزبط أ‪ٝ‬فَ ٓ‪ٌ٤‬ش‪ ٝ‬ربٗ‪ ٠‬أثؼذ ث‪ ٚ٤‬دارب ‪٤ٔٛٝ‬خ‬
‫((د‪ ٙ‬كوو ُِزؤًذ أص٘بء اُغٔ‪٤ُٞ٤‬ؾٖ))‪.‬‬
‫‪٘ٛ ٌٖ٤ُٝ‬جؼذ ‪ٛ‬زح اُذارب اُ‪٤ٔٛٞ‬خ ‪:‬‬
‫‪192Page‬‬ ‫‪Technical Support 2015‬‬
"$GPGGA,985678.000,8765.8769,N,87467.8768,E,1,9,0.78,98.6,M
,99.0,M,,*89"

:‫اىذائزة‬

193Page Technical Support 2015


194Page Technical Support 2015
‫‪:GSM modem‬‬
‫‪ٞٗ ٞٛ‬ع ٓخقـ ٖٓ اُـ ‪ٝ modem‬اُز‪٣ ٟ‬ؾجخ ك‪ ٠‬ػِٔ‪ ٚ‬اُزِ‪٤‬ل‪ ٕٞ‬أُؾٔ‪ .ٍٞ‬ك‪ٞ٤‬عذ ث‪ٚ‬‬
‫‪ SIM card‬أهذس أػَٔ ث‪ٜ٤‬ب ‪ connection‬ث‪ًٓٞ 2 ٖ٤‬ج‪ٞ٤‬رش ‪٣‬جؼز‪ٞ‬ا ‪٣ٝ‬غزوجِ‪ٞ‬ا دارب ٖٓ‬
‫ثؼل ػٖ هش‪٣‬ن ‪٣ ٌُٖ ,,Serial communication protocol‬خزِق ف ثنؼخ اؽ‪٤‬بء‬
‫ثغ‪٤‬طخ ٓضال ٓضَ إٔ أُ‪ٞ‬ثب‪٣ َ٣‬غزخذّ ف اٌُالّ ‪ٝ‬اسعبٍ اُشعبئَ ‪ٝ‬ؿ‪٤‬ش‪ ٙ‬أٓب اٍ ‪GSM‬‬
‫‪٣ MODULE‬غزخذّ ف اُزطج‪٤‬وبد ٓضَ رطج‪٤‬وبد اُـ ‪ٖٓٝ .EMBEDED SYSTEM‬‬
‫أ‪ ْٛ‬اُـ ‪ features‬اُِ‪ ٠‬ث‪ٞ٤‬كش‪ٛ‬بُ‪ ٠‬اُـ ‪ ٞٛ GSM‬اسعبٍ ‪ ٝ‬اعزوجبٍ سعبئَ ٗق‪٤‬خ ‪SMS‬‬
‫‪ ٠ٛٝ‬د‪ٓ ٟ‬ؾ‪ٞ‬س ا‪ٛ‬زٔبٓ٘ب ك‪ٛ ٠‬زا اُـٔ‪ٞ‬م‪ٞ‬ع الٗ٘ب ػٖ هش‪٣‬ن ‪ٛ‬زح اُخق‪٤‬خ ٗغزط‪٤‬غ اُزؾٌْ‬
‫ك‪ ٠‬أ‪ ٟ‬ؽئ ك‪ ٠‬أُ٘ضٍ أ‪ ٝ‬أ‪ٌٓ ٟ‬بٕ ػٖ هش‪٣‬ن أُ‪ٞ‬ث‪ َ٤‬ػٖ هش‪٣‬ن اسعبٍ سعبئَ‪ .‬ك‪ٌٖٔ٤‬‬
‫اعزخذآ‪ ٚ‬ك‪ ٠‬رطج‪٤‬وبد اُـ ‪ home automation‬ػٖ هش‪٣‬ن اُزؾٌْ ك‪ ٠‬أُش‪ٝ‬ؽخ‬
‫‪ٝ‬اُزٌ‪٤٤‬ق‪ ...‬ػٖ هش‪٣‬ن أُ‪ٞ‬ث‪ٝ . َ٤‬أ‪٣‬نب ك‪ٓ ٠‬غبٍ اُـ ‪ automotive‬ػٖ هش‪٣‬ن اسعبٍ‬
‫اُـ ‪ٝ latitude‬اُـ ‪ longitude‬ك‪ ٠‬سعبُخ ُِـ ‪ٝ user‬ثزُي ‪٣‬غزط‪٤‬غ ٓؼشكخ ٌٓبٕ ع‪٤‬بسر‪ٚ‬‬
‫‪ ......‬اُ‪ ٠‬ؿ‪٤‬ش رُي ٖٓ اُزطج‪٤‬وبد‪.‬‬

‫‪SIM900 AT Command Set‬‬

‫‪195Page‬‬ ‫‪Technical Support 2015‬‬


‫‪٣‬ذػْ اُؼذ‪٣‬ذ ٖٓ اُـ ‪ٓ functions‬ضَ ‪making phone ,sending text messages‬‬
‫‪ call‬اُ‪ ٠‬ؿ‪٤‬ش رُي ٖٓ اُزطج‪٤‬وبد‪ task ًَ.‬ث‪٤‬زْ ػٖ هش‪٣‬ن ‪ٓ command‬ؼ‪ٓ ٖ٤‬غٔ‪ٞ‬ػخ‬
‫األ‪ٝ‬آش د‪ ٟ‬رطِن ػِ‪ٜ٤‬ب ‪ AT Command Set‬الٕ ًَ اُـ ‪ commands‬ثزغجن ثٌِٔخ‬
‫‪ ٖٓٝ .AT‬أٌُٖٔ اعزجذاٍ ‪ gsm module‬ثبُٔ‪ٞ‬ثب‪ َ٣‬ثؾشه اٗ‪ ٖٓ ٌٕٞ٣ ٚ‬أُ‪ٞ‬ثب‪٣‬الد‬
‫اُوذ‪ٔ٣‬خ اُز‪ ٠‬رذػْ اُـ ‪. AT COMMANDS‬‬
‫‪ٗٝ‬الؽع أٗ٘ب ‪ ٌٖٔ٣‬إ ٗغزوجَ سعبئَ ٓجؼ‪ٞ‬ر‪ٞٓ ٖٓ ٚ‬ث‪ َ٤‬ػِ‪ ٠‬اُـ ‪ٝ GSM‬اسعبُ‪ٜ‬ب‬
‫ُِٔ‪ٌ٤‬ش‪ٝ ٝ‬ث٘بء ع اال‪ٝ‬آش ‪٣‬و‪ ّٞ‬ثـ ‪ٓ action‬ؼ‪ ,ٖ٤‬أ‪ ٝ‬اسعبٍ سعبئَ ٖٓ اُـٔ‪ٞ‬د‪ ٍٞ٣‬أل‪ٟ‬‬
‫ٓ‪ٞ‬ث‪ َ٤‬ص‪ٓ ٟ‬ضال ُ‪ ٞ‬اٌُ٘زش‪ُٝ‬ش ثزبػ‪ ٠‬ؽظ ث‪ٞ‬ع‪ٞ‬د ؽش‪٣‬ن ‪٣‬خِ‪ ٠‬اُـ ‪٣ GSM‬جؼذ سعبُخ‬
‫ُِٔ‪ٞ‬ث‪ َ٤‬اُخبؿ ثقبؽت أُ٘ضٍ ‪٣‬خجش‪ ٙ‬ك‪ٜ٤‬ب ػٖ ‪ٝ‬ع‪ٞ‬د ؽش‪٣‬ن‪.‬‬

‫‪Interfacing GSM Modem with PC‬‬


‫‪٣‬زْ ر‪ٞ‬ف‪ َ٤‬اُـ ‪ GSM‬ثبٌُ‪ٓٞ‬ج‪ٞ٤‬رش ػٖ هش‪٣‬ن اُـ ‪ٝ ,, PC serial port‬السعبٍ اُـ ‪AT‬‬
‫‪ ٖٓ commands‬اٌُ‪ٓٞ‬ج‪ٞ٤‬رش ‪٣‬زْ رُي ٖٓ خالٍ ثشٗبٓظ ‪ٛٝ hyper terminal‬زا‬
‫اُجشٗبٓظ ٗغزخذٓ‪ ٚ‬ػ٘ذٓب ٗش‪٣‬ذ اسعبٍ أ‪ ٟ‬ا‪ٝ‬آش اُ‪ ٠‬أ‪COMBUTER ٟ‬‬
‫‪.INTERFACE‬‬

‫‪Sending SMS‬‬
‫هش‪٣‬وخ اسعبٍ سعبُخ ٖٓ اٌُ‪ٓٞ‬ج‪ٞ٤‬رش اُ‪ ٠‬اُـ ‪:GSM‬‬
‫‪ _1‬مغ ‪ ٖٓ SIM card‬أ‪ ٟ‬ؽشًخ ٓؾٔ‪( ٍٞ‬ك‪ٞ‬اداك‪ٞٓ ,ٕٞ‬ث‪,َ٤٘٤‬ارقبالد ) ك‪ ٠‬اُـ ‪SIM‬‬
‫‪ ٌٕٞ٣ٝ slot‬ك‪ ٚ٤‬سف‪٤‬ذ‪.‬‬

‫‪196Page‬‬ ‫‪Technical Support 2015‬‬


‫‪ٝ _2‬فَ اُـ ‪ GSM Modem‬ثبُغجال‪ ٟ‬ػٖ هش‪٣‬ن ‪ٝ AC-DC adapter‬أ‪٣‬نب ‪ٝ‬فِخ‬
‫اُـ ‪.serial port of the PC‬‬

‫‪ _3‬رغط‪٤‬ت اُـ ‪ hyper terminal‬ؽغت اُ‪٘٣ٞ‬ذ‪ٝ‬ص اُِ‪ ٠‬ثزغزخذٓخ ‪ ,‬أؽ٘ب ٓغزخذٓ‪ ٖ٤‬ك‪٠‬‬
‫اُؾشػ ثشٗبٓظ خبؿ ث‪٘٣ٞ‬ذ‪ٝ‬ص‪ٝ .7‬رنجو اُـ‪ parameters‬ثزبػز‪ ٚ‬ص‪ٓ ٟ‬ب ٓ‪ٞ‬ع‪ٞ‬د ك‪٠‬‬
‫اُق‪ٞ‬س‪..‬‬

‫‪197Page‬‬ ‫‪Technical Support 2015‬‬


‫‪ _4‬ؽـَ اُـ ‪ٝ GSM Modem‬اٗزظش ؽز‪٣ ٠‬جذأ ك‪ ٠‬اُؼَٔ ‪ ,, initialize‬أص٘بء كزشح‬
‫االٗزظبس ث٘غزخذّ األٓش اُزبُ‪ُِ ٠‬زؤًذ ٖٓ إٔ اُـ ‪٣ GSM Modem‬وذس ‪٣‬ز‪ٞ‬افَ ٓغ أ‪ٟ‬‬
‫ع‪ٜ‬بص أخش‪.‬‬

‫صْ اُنـو ػِ‪ ,, enter ٠‬اُـ ‪ GSM modem‬الصّ ‪٣‬شد ثـ ‖‪.―OK‬ارا سد ػِ‪٤‬ب اٍ ‪GSM‬‬
‫‪MODULE‬ثـ ‪ OK‬ك‪ٜ‬زا ‪٣‬ذٍ ػِ‪ ٠‬إ أُ‪ٞ‬ثب‪ َ٣‬ا‪٣ GSM MODULE ٝ‬ؼَٔ ‪ٝ‬أ‪٣‬نب‬
‫‪٣‬زجغ ٗظبّ ‪ AT COMMANDS‬ألٕ ُ‪ ٞ‬ك‪ٓ ٠‬ؾٌِخ ‪٤ٛ‬شد ػِ‪٤‬ب ة ‪.Error‬‬
‫‪ٗ _5‬جذء ك‪ ٠‬اسعبٍ اُـ ‪ُِ AT command‬ـ ‪ GSM Modem‬اُخبؿ ثبسعبٍ اُشعبئَ‬
‫‪٘ٛٝ‬شعَ ػٖ هش‪٣‬ن اُـ ‪ Text Mode‬ك‪ mode ٠‬ربٗ‪ٗ ٌٖٔٓ ٠‬شعَ ث‪ ٚ٤‬ثظ ٓؼ د‪ٙ‬‬
‫ٓؾ‪ٞ‬س ا‪ٛ‬زٔبٓ٘ب ‪ٝ .‬ػؾبٕ ٗنجو االسعبٍ ػِ‪ ٠‬اُـ ‪٘ٛ Text Mode‬جؼذ األٓش اُزبُ‪: ٠‬‬

‫اُـ ‪ GSM modem‬الصّ ‪٣‬شد ثـ ‖‪.―OK‬‬


‫‪ٗ _6‬و‪ ّٞ‬ثبسعبٍ ‪ SMS message‬ػٖ هش‪٣‬ن األٓش اُزبُ‪ٓ , ٠‬غ ٓالؽظخ اٗ٘ب ٗنغ سهْ‬
‫اُ‪ٜ‬برق اُِ‪ ٠‬ػ‪ٞ‬ص‪ ٖ٣‬اُشعبُخ رزجؼذ ُ‪ٝ .ٚ٤‬هجؼب اُشعبُخ ‪ٛ‬ززجؼذ ٖٓ اُخو أُ‪ٞ‬ع‪ٞ‬د ك‪ ٠‬اُـ‬
‫‪.GSM‬‬
‫‪198Page‬‬ ‫‪Technical Support 2015‬‬
‫اُـ ‪٤٤ٛ modem‬ؼَٔ ‪response‬‬

‫‪ٌٗ _7‬زت ٗـ اُشعبُخ اُِ‪ ٠‬ػ‪ٞ‬ص‪ٗ ٖ٣‬جؼز‪ٜ‬ب‪ٗٝ ,‬جؼز‪ٜ‬ب ػٖ هش‪٣‬ن مـو >‪<CTRL+Z‬‬

‫اُـ ‪٤ٛ modem‬شد ثبُـ ‪ message ID‬اُخبؿ ثبُشعبُخ أُجؼ‪ٞ‬ر‪ٝ ,, ٚ‬د‪ٓ ٙ‬ؼ٘ب‪ ٙ‬إ اُشعبُخ‬
‫ارشعِذ ثذ‪ٓ ٕٝ‬ؾبًَ‪.‬‬

‫‪ًٝ‬ذ‪ ٌٕٞٗ ٙ‬اٗز‪٘٤ٜ‬ب ٖٓ ػِٔ‪٤‬خ اسعبٍ اُشعبئَ ٖٓ أٌُج‪ٞ٤‬رش اُ‪ GSM MODULE ٠‬ا‪ٝ‬‬
‫أُ‪ٞ‬ثب‪. َ٣‬‬
‫‪Interfacing GSM Modem with Micro‬‬

‫‪199Page‬‬ ‫‪Technical Support 2015‬‬


‫‪٘ٛ‬شعَ ٗلظ األ‪ٝ‬آش اُغبثوخ ػٖ هش‪٣‬ن اُـ ‪ ٌُٖ.UART‬اٗب ٓ‪٤ٜ٘ٔ٤‬ؼ اُـ ‪ response‬اُِ‪٠‬‬
‫عب‪ ّ ٟ‬أُ‪ٞ‬د‪ٛ ٍٞ٣‬لزشك إ اٍ‪onnection‬عِ‪ٔ٤‬خ ‪ٓٝ‬ل‪٤‬ؼ ‪.error‬‬
‫اىن٘د‪:‬‬

‫اىذا‪ٝ‬زة‪:‬‬
‫ثش‪ٝ‬رظ ٓل‪ٜٞ‬ػ ‪ ٌُٖ gsm‬إ ٓؾزبع‪ ٚ‬ع‪ٜ‬بص ‪٣‬ظ‪ٜ‬شُ‪ ٠‬اُذارب اُِ‪ ٠‬خبسع‪ٖٓ ٚ‬‬
‫أُ‪ٌ٤‬ش‪ً٘ٝ‬زش‪ُٝ‬ش ك‪ٜ‬غزخذّ ‪ٞٛ virtual terminal‬فَ ‪ RX‬ثزبع أُ‪ٌ٤‬ش‪ٓ ٝ‬غ ‪ TX‬ثزبع‬
‫‪ٝ virtual terminal‬اُؼٌظ‪ٛٝ .‬ؾ‪ٞ‬ف اُذارب ‪ ٠ٛٝ‬ثززجؼذ‪.‬‬

‫‪211Page‬‬ ‫‪Technical Support 2015‬‬


‫د‪ ٙ‬ك‪ ٠‬اُغٔ‪٤ُٞ٤‬ؾٖ ٌُٖ ك‪ ٠‬اُ‪ٞ‬اهغ اُـ ‪٘ٓ ُٚ GSM‬لز عش‪٣‬بٍ ك‪ ٌٕٞ٤ٜ‬اُز‪ٞ‬ف‪ًٔ َ٤‬ب ك‪٠‬‬
‫اُؾٌَ‪.‬‬

‫‪211Page‬‬ ‫‪Technical Support 2015‬‬


‫ُ‪ً ٞ‬بٕ ػجبسح ػٖ ‪ٞٛ pin header‬فَ اُـ ‪ُِٞٔ RX & TX‬د‪ ٍٞ٣‬ثبُـ ‪TX & RX‬‬
‫ُِٔ‪ٌ٤‬ش‪ٝ , ٝ‬اُـ ‪ GND‬ثؤسم‪ ٠‬اُذا‪٣‬شح ‪ٝ‬اُـ ‪ VCC‬ثبُغ‪ٜ‬ذ أُ‪ٞ‬ع‪ٞ‬د ك‪ ٠‬اُذارب ؽ‪٤‬ذ ‪ٝ‬اُِ‪٠‬‬
‫ػبدح ث‪. 3.3V ٌٕٞ٤‬‬

‫اىتطب‪ٞ‬ك اىتاّ‪:ٚ‬‬
‫ٗظبّ ؽش‪٣‬ن آب دسعخ اُؾشاسح رؼِ‪ ٠‬ػٖ ؽبع‪ٓ ٚ‬ؼ‪٘٤‬خ ‪٣‬جؼذ ٓغذط ‪٣‬و‪ ٍٞ‬ك‪ٜ٤‬ب إ ك‪ ٠‬ؽش‪٣‬ن‪.‬‬
‫اىن٘د‪:‬‬

‫‪212Page‬‬ ‫‪Technical Support 2015‬‬


‫‪Receiving SMS‬‬
‫ٗؾشػ األٕ ػِٔ‪٤‬خ اعزوجبٍ ‪ُِ GSM MODULE‬شعبئَ أُشعَ ُ‪ٝ ٚ‬هشائز‪ٜ‬ب‪.‬‬
‫‪ٌ٘ٛ_1‬شس ٗلظ اُخط‪ٞ‬اد اُغبثوخ ٖٓ ‪ 1‬اُ‪.5 ٠‬‬
‫‪213Page‬‬ ‫‪Technical Support 2015‬‬
.ْ٣‫د‬ُِٞٔ ‫َ السعبٍ سعبُخ‬٤‫ث‬ُٞٔ‫٘غزخذّ ا‬ٛ ,, ‫ض‬ٛ‫ عب‬GSM Modem ‫ٕ اُـ‬ٌٞ٣ ‫ٍ ٓب‬ٝ‫_ أ‬2
response َٔ‫ؼ‬٤ٛ ‫زجؼزِخ سعبُخ‬٤ٛ ّ‫د‬ُٞٔ‫ٍ ٓب ا‬ٝ‫_ أ‬3

‫ هشاءح‬٠‫غزخذّ ك‬٤‫ ث‬٠ُِ‫ا‬ٝ memory index number ‫ؼجش ػٖ اُـ‬٤‫ ث‬character ‫أخش‬
. 1ٚ‫ٔز‬٤‫ أُضبٍ اُغبثن ه‬٠‫ ك‬ٞٛٝ ‫ب‬ٜ‫ ؽزك‬ٝ‫اُشعبُخ أ‬
.ٙ‫ٌزت األٓش د‬ٛ ‫ب‬ِٜ‫ اعزوج‬GSM ‫ اُـ‬٠ُِ‫َ ا‬٣‫_ ػؾبٕ اعزوجَ ًَ اُشعب‬4

SIM ‫ اُـ‬٠‫دح ك‬ٞ‫ع‬ٞٓ ٠ُِ‫ ا‬SMS messages ‫ٔخ ثٌَ اُـ‬٣‫ هب‬٠ِ‫جؼز‬٤ٛ modem ‫اُـ‬ٝ
.card

: ٖٓ ٌٕٞ‫ اُغبثوخ رز‬responding messages ‫اُـ‬


+CMGL:
<index>,<status>,<from_address>,<mr>,<scts><CRLF><data>
Index – The memory index number, use this index to read or delete
this message.
Status – The status of this message. There might be "REC READ"
or "REC UNREAD" for received messages depending on whether
the messages have been read or listed before.

214Page Technical Support 2015


from_address – The subscriber number of the sender.
mr - The reference number of this message. Most modems keep this
field empty.
Scts - The time when the message is forwarded to this phone or
modem.
data – The actual message data in plain text.
CMGR-CNMA-CMGL-CNMI َ‫غ اُشعبئ‬٤ٔ‫ ع‬٠٘‫٘ب رؼ‬ٛ ALL

AT COMMANDS MEANING
CNMI NEW message indication
CMGL List message
CMGR Read message
CNMA New message aknowledgment

‫أًزت‬ٝ ALL ‫ؾزف‬ٛ َ‫اؽذ ٖٓ اُشعبئ‬ٝ ‫ع‬ٞٗ ٙ‫ض‬٣‫ ػب‬ُٞ ‫أٓب‬


AT+command=memory index
.‫م‬ٞ‫ ك‬٠ُِ‫ األسثؼخ ا‬commands ‫ األٓش أخذ اُـ‬,, enter ‫ٗنـو‬ٝ
ّ‫ٍ الص‬ٝ‫ ٌُٖ األ‬, read command ‫٘غزخذّ اُـ‬ٛ , ‫اؽذح كوو‬ٝ ‫ سعبُخ‬ٟ‫_ ػؾبٕ ٗوش‬5
٠‫ٖ ٗوشا سعبُخ ك‬٣‫ص‬ٝ‫ ػب‬ُٞ ٍ‫َ أُضب‬٤‫ عج‬٠ِ‫ كؼ‬ٝ, ‫ اُخبؿ ثبُشعبُخ‬index ‫ٗؼشف اُـ‬
.‫زا األٓش‬ٛ ّ‫٘غزخذ‬ٛ memory location 1

215Page Technical Support 2015


‫اُـ ‪٤ٛ GSM‬شد ثـ‬

‫الؽع إ ؽبُخ اُشعبُخ ‪٘ٛ‬ب "‪ "REC_READ‬الٗ٘ب هش‪٘٣‬ب اُشعبُخ‪.‬‬


‫‪_6‬ثٔغشد اٗ٘ب هش‪٘٣‬ب اُشعبُخ ٌٖٓٔ ٗ‪ٞ‬كش ٌٓبٕ ك‪ ٠‬أُ‪ٞٔ٤‬س‪ِٗٝ ٟ‬ـ‪ ٠‬اُشعبُخ ‪ ,,‬ػؾبٕ ِٗـ‪٠‬‬
‫اُشعبُخ ٖٓ ‪٘ٛ memory location 1‬غزخذّ ‪ٛ‬زا األٓش‪.‬‬

‫أُ‪ٞ‬دّ ‪ِ٤ٛ‬ـ‪ ٠‬اُشعبُخ ‪٣ٝ‬جؼذ ‖‪.―OK‬‬

‫‪216Page‬‬ ‫‪Technical Support 2015‬‬


217Page Technical Support 2015
‫تؼز‪ٝ‬ف اه ‪: Zigbee‬‬
‫‪ ٞٛ‬ػجبسح ػٖ ‪ُ standard‬جش‪ٝ‬ر‪ ًٍٞٞ‬االرقبالد اُالعٌِ‪٤‬خ راد اُوذسح أُ٘خلنخ ‪.‬‬
‫‪٣‬ؼزٔذ ثش‪ٝ‬ر‪ ًٍٞٞ‬اٍ ‪ Zigbee‬ػِ‪ ٞٛٝ IEEE 802.15.4 ٠‬ػجبسح ػٖ ٓغٔ‪ٞ‬ػخ ٖٓ اٍ‬
‫‪ standard‬اُز‪ ٢‬ر‪ٞ‬فق ػِٔ‪٤‬خ ‪power management, addressing, error‬‬
‫‪ ..... , correction‬اُالصٓخ الرٔبّ ػِٔ‪٤‬خ االرقبٍ ث‪ ٖ٤‬أع‪ٜ‬ضح االرقبٍ اُشاد‪ٝ ٚ٣ٞ٣‬ثؼن‪ٜ‬ب‬
‫اُجؼل ‪.‬‬

‫اىفزق ب‪ ِٞ‬اه ‪ٗ Zigbee‬اه ‪: Xbee‬‬


‫اٍ ‪ًٔ Zigbee‬ب عجن رؼش‪٣‬ل‪ ٞٛ ٚ‬ثش‪ٝ‬ر‪ًٍٞٞ‬‬
‫أٓب اٍ ‪ Xbee‬ك‪ ٜٞ‬ػجبسح ػٖ ‪ RF module‬ث‪٣ microcontroller ٚ‬غزخذّ ثش‪ٝ‬ر‪ًٍٞٞ‬‬
‫اٍ ‪ُ Zigbee‬زؾو‪٤‬ن االرقبٍ اُالعٌِ‪ُ ٢‬الؿشاك اُز‪ ٢‬رؾزبط اُ‪ ٠‬هذسح ٓ٘خلن‪ٝ ٚ‬سخـ‬
‫اُزٌِلخ ‪.‬‬

‫ٍقارّت ب‪ ِٞ‬أّ٘اع اىت٘ص‪ٞ‬و اىالسين‪: ٜ‬‬


‫‪٘ٛ‬بى اُؼذ‪٣‬ذ ٖٓ اٗ‪ٞ‬اع اُز‪ٞ‬ف‪ َ٤‬اُالعٌِ‪ ٢‬أُ٘زؾشح ‪ٝ‬أُؼش‪ٝ‬ك‪ٓ ٚ‬ضَ اٍ ‪ٝ Wi-Fi‬اٍ‬
‫‪ٝ Blutooth‬اٍ ‪٤ً ٌُٖٝ Zigbee‬ق أػشف ٓب ‪ٞٗ ٞٛ‬ع اُز‪ٞ‬ف‪ َ٤‬أُ٘بعت ُ‪ ٢‬ك‪ ٢‬رطج‪٤‬و‪٢‬‬
‫؟؟؟؟‬
‫ك‪ٛ ٢‬زا اُغذ‪ٗ ٍٝ‬غزؼشك أُوبسٗ‪ ٚ‬ث‪ ٖ٤‬اٗ‪ٞ‬اع اُز‪ٞ‬ف‪ َ٤‬اُالعٌِ‪ٝ ٢‬اُزطج‪٤‬وبد اُز‪٣ ٢‬غزخذّ‬
‫ك‪ٜ٤‬ب ًَ ٗ‪ٞ‬ع‬

‫‪218Page‬‬ ‫‪Technical Support 2015‬‬


: Xbee specification
Xbee-PRO ٍ‫ا‬ٝ Xbee ٍ‫م ا‬ٞ‫ اُغ‬٢‫ْ ك‬ٛ‫ش‬ٜ‫ ٖٓ أؽ‬Xbee ٍ‫اع ٖٓ ا‬ٞٗ‫٘بى أ‬ٛ
٢‫و‬٤‫ أُ٘بعت ُزطج‬Xbee ٍ‫بس ا‬٤‫خ اخز‬٤‫ل‬٤ً ‫زا اُغضء ٖٓ اُؾشػ ٗغزؼشك‬ٛ ٢‫ك‬

Specification XBee XBee-Pro


Supply Voltage 2.8 VDC – 3.4 2.8 VDC – 3.4
VDC VDC
RF Power 0 dBm, 1 mW 18 dBm, 63 mW
Outdoor 300 ft (90 m) 1 mile (1.6 km)

219Page Technical Support 2015


Distance (LOS)
Indoor Distance 100 ft (30 m) 300 ft (90 m)
Current Draw, 45 mA 50 mA
Receive
Current Draw, 50 mA 215 mA
Transmit
Current Draw, < 10 A <10 A
Sleep
RF Data 250 kbps 250 kbps
Throughput
Operating 2.4 GHz, 16 2.4 GHz, 12
Frequency, Channels Channels
Channels
Receiver -92 dBm -100 dBm
Sensitivity
ٍ‫َ أُضب‬٤‫ عج‬٠ِ‫ػ‬ٝ ‫ارا‬
Xbee-PRO ٍ‫ اعزخذّ ا‬٢٘ٗ‫ كب‬ٙ‫ش‬٤‫ ًج‬ٚ‫ ُٔغبك‬Dataٍ‫ ٗوَ ا‬٢‫و‬٤‫ رطج‬٢‫ذ ك‬٣‫ارا ً٘ذ أس‬
‫اُغؼش ثبُطجغ‬ٝ ٚٓ‫ ؽغبة اُوذسح أُغزخذ‬٠ِ‫زا ػ‬ٛ ٌٕٞ٣ ٌُٖٝ
٢‫ٕ ك‬ٌٞ‫ ر‬٢‫ اُز‬sensor network ٍ‫ ا‬٢‫ اُطبهخ (ٓضَ ك‬٠ِ‫آب ارا ً٘ذ اؽزبط اُؾلبظ ػ‬
ٚ‫ ٓقذس اُطبه‬٠ِ‫ أؽزبط ُِؾلبظ ػ‬ُٚ‫ اُؾب‬ٙ‫ز‬ٛ ٢‫ ك‬٢٘ٗ‫ كب‬....ٝ‫ ٓضَ اُـبثبد ا‬ٙ‫ذ‬٤‫االٓبًٖ اُجؼ‬

211Page Technical Support 2015


‫–اُجطبس‪٣‬خ‪ -‬اُز‪ُ ٢‬ذ‪ ١‬أله‪ ٍٞ‬كزش‪ُ ٌٖٔٓ ٙ‬قؼ‪ٞ‬ثخ ػِٔ‪٤‬خ اُق‪٤‬بٗخ) كبٗ٘‪ ٢‬ك‪ٛ ٢‬ز‪ ٙ‬اُؾبُ‪ٚ‬‬
‫اعزخذّ ر‪ ٝ‬االعز‪ٜ‬الى االهَ ك‪ ٢‬اُوذسح‬
‫‪ٌٛٝ‬زا ‪ ٌَُ ٌٕٞ٣‬رطج‪٤‬ن ٗ‪ٞ‬ع ٓ٘بعت العزخذآ‪. ٚ‬‬

‫شنو اىشبناث ‪َٝ:‬نِ ت٘ص‪ٞ‬و اىشبنٔ بأصذ‬

‫‪211Page‬‬ ‫‪Technical Support 2015‬‬


‫أّ٘اع اه ‪ Xbee‬ف‪ ٜ‬اىشبنت ‪:‬‬

‫‪Coordinator‬‬
‫‪End point‬‬ ‫‪End point‬‬
‫ٌمكن القول انه األم فً‬
‫الشبكه‪ .‬ال ٌمكن قٌام‬
‫الشبكة اال به وال ٌمكن‬
‫دخوله فً وضع ال‬
‫‪ Sleep‬ألنه هو الذي‬
‫ٌقوم بعملٌة الضبط‬
‫‪Router‬‬ ‫للشبكه ‪.‬‬
‫‪Router‬‬
‫البد من أن ٌستقبل بٌانات ضبط‬
‫الشبكة من ال ‪ coordinator‬فً‬
‫البداٌة حتى ٌدخل فً الشبكه ‪ٌ .‬تمٌز‬
‫بأنه ٌمكنه القٌام بعملة ال ‪routing‬‬
‫للمعلومات المرسله ‪ٌ,‬مكنه إدخال‬
‫افراد جدٌده للشبكه ‪ ,‬ال ٌمكنه‬
‫الدخول فً وضع ال ‪sleep‬‬
‫‪End point‬‬

‫ٌجب ان ٌستقبل بٌانات ضبط‬


‫الشبكه فً البداٌة حتى ٌدخل‬
‫فً الشبكة ‪.‬ال ٌرى من الشبكة‬ ‫‪End point‬‬
‫‪End point‬‬
‫اال الجهاز المتصل به ‪ٌ .‬مكن‬
‫وضعه فً وضع ال ‪sleep‬‬

‫‪212Page‬‬ ‫‪Technical Support 2015‬‬


‫‪: Xbee modes‬‬
‫‪ ٌٖٔ٣‬إٔ ‪٣‬ؼَٔ اٍ ‪ Xbee‬ك‪: 2 modes ٢‬‬
‫‪٣ : AT mode -1‬غٔ‪ ٢‬أ‪٣‬نب ثبٍ )‪٣ (Transparent mode‬ؾج‪ٛ ٚ‬زا اُ‪ٞ‬مغ‬
‫اُز‪ٞ‬ف‪ َ٤‬اُؼبد‪ ١‬ثبُطش‪٣‬و‪ ٚ‬اٍ ‪ٝ serial‬عٔ‪ Tranparent ٢‬ألٕ أُغزخذّ ك‪ٛ ٢‬ز‪ٙ‬‬
‫اُؾبُ‪ ٚ‬ال ‪٣‬ش‪ ٟ‬ع‪ ٟٞ‬أُؼِ‪ٓٞ‬بد اُز‪٣ ٢‬و‪ ّٞ‬ث٘وِ‪ٜ‬ب أٓب ثش‪ٝ‬ر‪ ًٍٞٞ‬اُ٘وَ ‪ٝ‬ؽٌَ‬
‫أُؼِ‪ٓٞ‬بد خالٍ ػِٔ‪٤‬خ اُ٘وَ كزٌ‪ٓ ٕٞ‬خل‪ ٚ٤‬ػٖ أُغزخذّ‬
‫‪ : API mode -2‬ك‪ٛ ٢‬ز‪ ٙ‬اُؾبُ‪٣ ٚ‬ش‪ ٟ‬أُغزخذّ أُؼِ‪ٓٞ‬بد اُز‪٣ ٢‬و‪ ّٞ‬ث٘وِ‪ٜ‬ب ثبالمبك‪ٚ‬‬
‫اٍ ثؼل أُؼِ‪ٓٞ‬بد االخش‪ٓ ١‬ضَ اٍ ‪ ٝ source address‬اٍ ‪Checksum‬‬
‫‪ٝ value‬ؿ‪٤‬ش‪ , ْٛ‬أ‪ ١‬اٗ‪٣ ٚ‬ش‪ ٟ‬اٍ ‪ً Packet‬بِٓخ‬
‫‪ٝ‬ثبُطجغ ٌَُ ‪ٝ‬مغ ٖٓ ‪ٛ‬ز‪ ٖ٣‬اُ‪ٞ‬مؼ‪ ٖ٤‬اعزخذآبر‪ٝ , ٚ‬ع٘ج‪ ٖ٤‬رُي ثٔؾ‪٤‬ئخ هللا خالٍ االٓضِ‪ٚ‬‬
‫‪.‬‬

‫‪213Page‬‬ ‫‪Technical Support 2015‬‬


: Xbee ‫ باه‬microcontroller ‫و اه‬ٞ‫ت٘ص‬

microcontroller ١‫ثؤ‬ Xbee ٍ‫َ ا‬٤‫ف‬ٞ‫ٌٖٔ ر‬٣


ٍ‫ ا‬٢‫ ك‬Tx ٍ‫َ هشف ا‬٤‫ف‬ٞ‫ ثز‬ٚ‫ ث‬Xbee ٍ‫َ ا‬٤‫ف‬ٞ‫ٕ ر‬ٌٞ٣ٝ, UART ٍ‫ذػْ ا‬٣
Xbee ٍ‫ ا‬٢‫ ك‬Din ‫ ثبُطشف‬microcontroller
Xbee ٍ‫ ا‬٢‫ ك‬Dout ‫ ثبُطشف‬microcontroller ٍ‫ ا‬٢‫ ك‬Rx ٍ‫َ هشف ا‬٤‫ف‬ٞ‫ر‬ٝ
: Xbee configration
ٖٓ ‫رُي‬ٝ Xbee َُ configration ٍ‫خ اُزؾذس الثذ ٖٓ ػَٔ ثؼل ا‬٤ِٔ‫هجَ اُجذء ثؼ‬
X-CTU ٠ٔ‫غ‬٣ ‫رش‬ٞ٤‫ أٌُج‬٠ِ‫ ػ‬software ٍ‫خال‬

214Page Technical Support 2015


‫‪: PC setting‬‬
‫ك‪ٛ ٢‬زا اُغضء ‪٣‬زْ مجو اٍ ‪ٛٝ COM port‬زا اُغضء ‪ ٞٛ‬اُز‪٣ ١‬زؾٌْ ثزذكن أُؼِ‪ٓٞ‬بد‬
‫ٖٓ ؽ‪٤‬ش اُغشػ‪ٝ ٚ‬اُؾغْ ‪...ٝ‬‬
‫‪ٝ‬رُي ٖٓ خالٍ مجو اٍ ‪..... , Baud rate , Data bits ,Parity‬‬
‫‪: Modem configration‬‬
‫ك‪ٛ ٢‬زا اُغضء ‪٣‬زْ اػذاد ع‪ٜ‬بص اٍ ‪ ٖٓ Xbee‬ؽ‪٤‬ش ٗ‪ٞ‬ػ‪ ٚ‬ك‪ ٢‬اُؾجٌ‪ٝ ٚ‬اػذاداد اٍ ‪PINs‬‬
‫‪......ٝ‬‬
‫ك‪ٔ٤‬ب ‪ ٢ِ٣‬ع٘ز٘ب‪ ٍٝ‬ثؼل ٖٓ ‪ٛ‬ز‪ ٙ‬االػذاداد ثؾئ ٖٓ اُزلق‪َ٤‬‬

‫‪215Page‬‬ ‫‪Technical Support 2015‬‬


‫ّ٘ع اىزٖاس ف‪ ٜ‬اىشبنت ‪:‬‬
‫ًٔب عجن ك‪ ٢‬اُؾشػ كبٗ‪ ٌٖٔ٣ ٚ‬إ ‪ ٌٕٞ٣‬اُغ‪ٜ‬بص ‪ Coordinator‬ا‪ Router ٝ‬ا‪End ٝ‬‬
‫‪point‬‬
‫‪ٝ‬ا‪٣‬نب رؾذ‪٣‬ذ ٓب ارا ًبٕ ‪٣‬ؼَٔ ة ‪ AT mode‬اّ ة ‪API mode‬‬
‫اعزط‪٤‬غ رؾذ‪٣‬ذ ًَ ‪ٛ‬زا ٖٓ خالٍ هبئٔخ ‪Function set‬‬

‫‪: Addressing‬‬
‫هذ ‪ُ ٌٕٞ٣‬ذ‪ ١‬اُؼذ‪٣‬ذ ٖٓ اُؾجٌبد أُزغب‪ٝ‬سح كٌ‪٤‬ق اعزط‪٤‬غ اُزؼشف ػِ‪ ٠‬االع‪ٜ‬ضح اُز‪ ٢‬ك‪٢‬‬
‫اُؾجٌ‪ ٚ‬اُخبف‪ ٚ‬ث‪ ٢‬ؽز‪ ٠‬اعزط‪٤‬غ اُزؾذس ٓؼ‪ٜ‬ب‬

‫‪216Page‬‬ ‫‪Technical Support 2015‬‬


‫‪ٝ‬ثلشك اُزؼشف ػِ‪ ٠‬االع‪ٜ‬ض‪ ٙ‬اُز‪ ٢‬ك‪ ٢‬اُؾجٌ‪ ٚ‬اُخبف‪ ٚ‬ث‪ٝ ٢‬اسدد إ اسعَ سعبُ‪ٚ‬‬
‫خبف‪ ٚ‬اُ‪ ٠‬اؽذ االع‪ٜ‬ض‪ ٙ‬د‪ ٕٝ‬اُجبه‪٢‬‬
‫كٌ‪٤‬ق اعزط‪٤‬غ كؼَ رُي ؟؟؟؟؟؟‬
‫‪ ٌٕٞ٣‬أُ‪ٞ‬م‪ٞ‬ع ثجغبه‪ًٔ ٚ‬ب ك‪ ٢‬ؽبُخ ارا اسدد اسعبٍ سعبُ‪ ٚ‬اُ‪ ٠‬اؽذ افذهبئي ‪ ,‬كبٗي‬
‫رٌزت ػِ‪ ٠‬اُغ‪ٞ‬اة اُؼ٘‪ٞ‬إ أُشاد اسعبٍ اُشعبُ‪ ٚ‬اُ‪ٚ٤‬‬
‫‪ٛ‬زا اُؼ٘‪ٞ‬إ ‪٣‬زٌ‪ ٖٓ ٕٞ‬اًضش ٖٓ عضء ٌَُ ٓ٘‪ ْٜ‬ا‪٤ٔٛ‬ز‪ٓ ٚ‬ضَ اعْ أُ٘طو‪ ٚ‬صْ اعْ اُؾبسع‬
‫‪ٝ‬اخ‪٤‬شا سهْ أُ٘ضٍ‬
‫ثبُٔضَ ‪ ٌٕٞ٣‬أُ‪ٞ‬م‪ٞ‬ع ‪ٌٛ‬زا ك‪ ٢‬اُؾجٌ‪ ٚ‬اُز‪ُ ٢‬ذ‪٘٣‬ب ‪ ٌَُ ٌٕٞ٣ :‬ع‪ٜ‬بص ‪( address‬سهْ‬
‫أُ٘ضٍ) ‪ٓ ًَٝ‬غٔ‪ٞ‬ػ‪ ٖٓ ٚ‬االع‪ٜ‬ض‪٣ ٙ‬غٔؼ‪( PAN ID ْٜ‬اعْ اُؾبسع) صْ ‪٣‬غت إ ‪ٌٞٗٞ٣‬ا‬
‫ػِ‪ٗ ٠‬لظ اٍ ‪( channel‬اعْ أُ٘طو‪ )ٚ‬ؽز‪٣ ٠‬غزط‪٤‬ؼ‪ٞ‬ا اُزؾذس‬

‫‪٣‬زْ رُي ػِ‪ ٠‬اُجشٗبٓظ ٖٓ خالٍ‬

‫‪217Page‬‬ ‫‪Technical Support 2015‬‬


‫ثؼل اُؾبالد اُخبفخ ‪:‬‬
‫ك‪ ٢‬ؽبُخ ‪ٝ‬مغ اٍ ‪ PAN ID‬ثقلش كبٕ اُغ‪ٜ‬بص ‪٣‬زؾذس اُ‪ ٢‬ا‪ ١‬ؽجٌ‪ ٌٕٞ٣ ٚ‬ك‪ٗ ٢‬طبه‪ٜ‬ب‬
‫ك‪ ٢‬ؽبُخ ‪ٝ‬مغ اٍ ‪ Destination address‬ثقلش كبٕ اُغ‪ٜ‬بص ‪٣‬ل‪ ْٜ‬اٗ‪٣ ٚ‬شعَ أُؼِ‪ٓٞ‬بد‬
‫اٍ ‪ Coordinator‬كوو ‪ٝ‬ارا رْ ‪ٝ‬مؼ‪ ٚ‬ة‬
‫‪ 0x0000000000FFFF‬كبٗ‪٣ ٚ‬و‪ ّٞ‬ثؼِٔ‪٤‬خ ‪ Broadcasting‬ا‪٣ ١‬و‪ ّٞ‬ثجش اُذارب ٌَُ‬
‫االع‪ٜ‬ض‪ ٙ‬أُ‪ٞ‬ع‪ٞ‬د‪ ٙ‬ػِ‪ ٠‬اُؾجٌخ ‪.‬‬

‫‪: PIN configration‬‬


‫‪218Page‬‬ ‫‪Technical Support 2015‬‬
ّ‫ ا‬Input ‫ٓب ارا ًبٗذ‬ٝ Xbee ٍ‫ ٖٓ ا‬ٚٓ‫ذ األهشاف أُغزخذ‬٣‫زْ رؾذ‬٣ ‫زا اُغضء‬ٛ ٢‫ك‬
Digital ّ‫ ا‬Analog ‫ٓبد‬ِٞ‫ٓب ارا ًبٗذ رغزوجَ ٓؼ‬ٝ Output

: microcontroller ‫بزٍزت اه‬


219Page Technical Support 2015
ٍ‫ ثب‬ِٚ٤‫ف‬ٞ‫زْ ر‬٣ ُٚ configration ٍ‫خ ا‬٤ِٔ‫ػَٔ ػ‬ٝ ‫رش‬ٞ٤‫ ثبٌُٔج‬Xbee ٍ‫َ ا‬٤‫ف‬ٞ‫ثؼذ ر‬
‫ اُذائشح‬٢‫ ك‬microcotroller
API mode ٝ‫ أ‬AT mode ‫ؼَٔ آب‬٣ ٕ‫ ٌٖٓٔ أٌُٖٔ ا‬Xbee ٍ‫ؼ إ ا‬٤‫م‬ٞ‫ًٔب عجن ر‬
‫ع‬ٞٗ ًَ ‫ؼ‬٤‫م‬ٞ‫ف ٗزًش االٕ ٓضبال ُز‬ٞ‫ع‬ٝ ٚ‫ ٓخزِل‬ٚ‫ ثشٓغ‬ُٚ ْٜ٘ٓ ًَٝ

: Simple chat program


AT mode ٍ‫مغ ا‬ٝ ٢‫ ك‬Xbee ٖٓ ‫ٕ ًال‬ٌٞ٣ ٍ‫زا أُضب‬ٛ ٢‫ك‬
٠ُ‫ ا‬microcontroller ٖٓ "Hello world" ‫ّ ثبسعبٍ ًِٔخ‬ٞ‫ف ٗو‬ٞ‫زا أُضبٍ ع‬ٛ ٢‫ك‬
. Xbee ٍ‫ن ا‬٣‫ أخش ػٖ هش‬microcontroller
ًَ َٔ‫ؼ‬٤ُ ‫ اُؾشػ‬٢‫ ًٔب عجن ك‬Xbee‘s ٍ‫ ٌُال ا‬configration ٍ‫ّ ثؼَٔ ا‬ٞ‫خ ٗو‬٣‫ اُجذا‬٢‫ك‬
ٌٕٞ٣ ‫االخش‬ٝ Coordinator ‫ٔب‬ٛ‫ٕ أؽذ‬ٌٞ٣ ٕ‫ثبُطجغ الثذ ا‬ٝ AT mode ٍ‫ ا‬٢‫ٔب ك‬ٜ٘ٓ
‫ اُؾشػ‬٢‫ ك‬ٚ‫ؾ‬٤‫م‬ٞ‫ٖ ًٔب عجن ر‬٣‫بص‬ٜ‫ ٌُال اُغ‬PAN ID ٍ‫مغ ٗلظ ا‬ٝ ‫غت‬٣ٝ Router
: ‫دائزة االرساه‬
Xbee ٍ‫ا‬ٝ microcotroller ٍ‫ ٖٓ ا‬ٚ‫ٕ ثجغبه‬ٌٞ‫رز‬
ٙ‫ذ‬٣‫آش عذ‬ٝ‫عذ ا‬ٞ‫ ال ر‬microcontroller ٍ‫ُجشٓغخ ا‬ٝ
ٙ‫ أُؼزبد‬UART ٍ‫آش ا‬ٝ‫كوو ا‬
UART1_Write_Text("Hello world");
ٍ‫خ ا‬٤ِٔ‫ ػ‬٢‫ب ك‬ٜ‫مؼز‬ٝ ٢‫ اُز‬ٚٔ٤‫ ث٘لظ اُو‬UART َُ init. ٍ‫خ ا‬٤ِٔ‫رُي ثبُطجغ ثؼذ ػ‬ٝ
Xbee َُ configration

221Page Technical Support 2015


‫دائزة االستقباه ‪:‬‬
‫ٗلظ دائشح االسعبٍ ٓغ ص‪٣‬بدح ر‪ٞ‬ف‪ُ LCD َ٤‬ؼشك اُشعبُ‪ ٚ‬أُغزوجِ‪ ٚ‬ػِ‪ٜ٤‬ب‬
‫‪ٝ‬ثشٓغخ اٍ ‪ microcontroller‬رٌ‪ ٕٞ‬ا‪٣‬نب ث٘لظ اُطش‪٣‬و‪ ٚ‬أُؼزبد‪ ٙ‬ك‪ ٢‬اٍ ‪ٖٓٝ UART‬‬
‫صْ رؼشك اُشعبُ‪ ٚ‬أُغزوجِ‪ ٚ‬ػِ‪ ٠‬ؽبؽخ اٍ ‪LCD‬‬
‫اىَضامآ ‪:‬‬
‫اُـ ‪ِٞٓ Zigbee‬ػ ‪ simulation‬ػِ‪ ٠‬ثش‪ٝ‬رظ ‪ ,,‬كٌٖٔٔ ٗجؼذ اُـشعبُ‪ ٚ‬ثزبػز٘ب ٖٓ ث‪٤‬ي‬
‫أخش‪ ٟ‬ػٖ هش‪٣‬ن اُغش‪٣‬بٍ ‪ٗٝ‬ؾ‪ٞ‬ف ‪ َٛ‬اُجشٗبٓظ ثزبػ٘ب ػشك اُشعبُ‪ ٚ‬اُِ‪ ٠‬ثؼز٘ب‪ٛ‬ب ُ‪ٚ٤‬‬
‫‪ٝ‬ال أل‪٘ٛٝ .‬ؼَٔ ثشٗبٓغ‪ٝ ٖ٤‬اؽذ ‪ ٞٛ RX‬اٌُ‪ٞ‬د اُخبؿ ثبُـ ‪ PIC‬اُخبفخ ثبالعزوجبٍ ‪ٝ ,,‬‬
‫ً‪ٞ‬د فـ‪٤‬ش ربٗ‪٘ٛ ٢‬غٔ‪٤‬خ ‪٣ TX‬جؼذ اُذارب ُِٔ‪ٌ٤‬ش‪ ٝ‬األ‪ ٌُٖ .ٍٝ‬ك‪ ٠‬اُ‪ٞ‬اهغ أص٘بء اُؼِٔ‪٠‬‬
‫‪ ٌٕٞ٤ٛ‬ػ٘ذ‪ ٟ‬اُـ ‪ zigbee‬كٔؼ ‪ٞٛ‬فَ ث‪ ٖ٤‬االر٘‪ PIC ٖ٤‬ثغِي ‪ ٌٕٞ٤ٛ ٌُٖٝ‬ثبٍ ‪zigbee‬‬
‫((د‪ ٙ‬كوو ُِزؤًذ أص٘بء اُغٔ‪٤ُٞ٤‬ؾٖ))‪.‬‬

‫اىَخاه اىخاّ‪ٜ‬‬
‫‪: Digital input from remote sensor‬‬

‫ٗش‪٣‬ذ ك‪ٛ ٢‬زا أُضبٍ هشاءح ؽبُخ ‪ ٖٓٝ sensor‬صْ اسعبُ‪ٜ‬ب ‪.‬‬

‫‪221Page‬‬ ‫‪Technical Support 2015‬‬


‫‪ٞ٣‬مؼ ‪ٛ‬زا أُضبٍ ‪ٝ‬مؼ‪٤‬خ اٍ ‪ , API mode‬كل‪ ٢‬اُجذا‪٣‬خ ‪٣‬زْ ػَٔ اٍ ‪Configration‬‬
‫ٌُال اُغ‪ٜ‬بص‪ ٖ٣‬ثؾ‪٤‬ش ‪ ٌٕٞ٣‬ع‪ٜ‬بص اُز‪٣ ١‬ؼَٔ ى ‪ Router‬ك‪ ٢‬اٍ ‪( AT mode‬ال ر٘غ‪٠‬‬
‫أ‪٣‬نب مجو ‪ُ D4‬زؼَٔ ى ‪ٝ ) Digital input‬اُغ‪ٜ‬بص اٍ ‪ Coordinator‬ك‪ ٢‬اٍ ‪API‬‬
‫‪. mode‬‬
‫بزٍزت اىَ‪ٞ‬نزٗمْتزٗىز ‪:‬‬
‫ًٔب ؽشؽ٘ب عبثوب اٗ‪ ٚ‬ك‪ ٢‬ؽبُخ اٍ ‪ API mode‬كبٕ اٍ ‪٣ Xbee‬وشأ ًَ اٍ ‪Packet‬‬
‫‪ ٌٕٞ٣‬ؽٌَ اٍ ‪ Packet‬أُغزِٔ‪ ٚ‬ى االر‪: ٢‬‬

‫ًٔب ٗش‪ ٟ‬كبٕ اٍ ‪ Packet‬رؾز‪ ١ٞ‬ػِ‪ ٠‬ػذح ٓؼِ‪ٓٞ‬بد ‪ٝ‬اُز‪ ٢‬أ‪ٜٔٛ‬ب ‪:‬‬
‫‪ٝ : start byte‬اُز‪٣ ١‬ل‪٤‬ذ االؽبسح اُ‪ ٠‬ثذا‪٣‬خ اٍ ‪Packet‬‬
‫‪ : Length‬ه‪ ٍٞ‬اُؾضٓخ أُغزوجِ‪ٚ‬‬

‫‪٣ : Address‬ؾز‪ ١ٞ‬ػِ‪ ٠‬عضئ‪: ٖ٤‬‬


‫‪222Page‬‬ ‫‪Technical Support 2015‬‬
‫‪ -1‬ػ٘‪ٞ‬إ اُغ‪ٜ‬بص أُشعَ‬
‫‪ -2‬ػ٘‪ٞ‬إ اُؾجٌخ‬
‫‪ٝ‬أ‪ ْٛ‬عضئ‪ٔٛٝ ٖ٤‬ب ‪ٝ Digtal Channel Mask‬اٍ ‪Analog Channel Mask‬‬
‫‪ُٔٝ‬ؼشكخ ً‪٤‬ل‪٤‬خ هشائز‪٘ٗ ْٜ‬ظش ُٔشثؼبد اُز‪ٞ‬م‪٤‬ؼ ثغبٗت اُغذ‪: ٍٝ‬‬
‫‪٣‬زْ رؾ‪ َ٣ٞ‬اُشهْ أُغزوجَ ٖٓ ‪ Hexa‬اُ‪ Binary ٠‬ثؾ‪٤‬ش ‪٣‬وبثَ ًَ ‪ Bit‬سعَ ٓؼ‪٘٤‬خ ك‪٢‬‬
‫اٍ ‪Xbee‬‬
‫ًٔب ك‪ ٢‬أُضبٍ ‪ 0X00 0X13 :‬اُ‪0000 0000 0001 0011 ٠‬‬
‫ارا ‪٣ D0 & D1 &D3‬وشإٔ ‪ٝ High‬ثبه‪ ٢‬األسعَ ‪٣‬وشأ‪. Low ٕٝ‬‬
‫ك‪ ٢‬ؽبُخ أُضبٍ اُز‪ٗ ١‬و‪ ّٞ‬ث‪ ٚ‬رٌ‪ ٕٞ‬ثشٓغخ أُ‪ٌ٤‬ش‪ً٘ٝ‬زش‪ُٝ‬ش العزوجبٍ اُج‪٤‬بٗبد ثبٍ ‪UART‬‬
‫ثبُطش‪٣‬وخ اُزوِ‪٤‬ذ‪٣‬خ‬
‫صْ ٗ٘ظش ك‪ ٢‬اُغضء اُخبؿ ثبٍ ‪ٗٝ Digital Channel Mask‬وشأ ؽبُخ اُشعَ ‪D4‬‬
‫‪ٗٝ‬و‪ ّٞ‬ثبرخبر اُوشاس ث٘بءا ػِ‪ ٠‬ؽبُز‪ٜ‬ب‬

‫‪223Page‬‬ ‫‪Technical Support 2015‬‬


224Page Technical Support 2015
ٍ‫ ُزجبد‬digital communication standard ‫ ػجبسح ػٖ ؽٌَ ٖٓ أؽٌبٍ اُـ‬ٞٛ
٠‫اُز‬ٝ short-wavelength radio waves ّ‫شح ثبعزخذا‬٤‫بٗبد ػجش ٓغبكبد هق‬٤‫اُج‬
٠‫س ك‬ٞ‫ر‬ِٞ‫ش اُج‬ٜ‫ ظ‬. 2.489 ٠ُ‫ ا‬2.402 ٖٓ ‫ػ‬ٝ‫زشا‬٣ ٟ‫اُز‬ٝ ISM band ‫ اُـ‬٠‫رؼَٔ ك‬
ْ‫ز‬٣ . RS232 serial communications ‫َ ُِـ‬٣‫ ًجذ‬Ericson ‫اعطخ‬ٞ‫ ث‬1994 ّ‫ػب‬
٠ُ‫ ٓوغٔخ ا‬ٚ‫ص‬ٞ‫ٕ اُذارب أُجؼ‬ٌٞ‫ش ر‬٤‫ ؽ‬packets ‫سح‬ٞ‫ ف‬٠‫س ك‬ٞ‫ر‬ِٞ‫االرقبٍ ػجش اُج‬
ْٛٝ .Bluetooth ‫اد اُـ‬ٞ٘‫ن ه٘بح ٖٓ ه‬٣‫ ػٖ هش‬ُٚ‫زْ اسعب‬٣ packet ًَ .packets
. ٖٓ ً‫ اثزذاءا‬1MHZ ٙ‫ ٓوذاس‬bandwidth ‫ب‬ُٜ ْٜ٘ٓ ٙ‫اؽذ‬ٝ ًَ ‫ ه٘بح‬79 ٖ‫ػجبسح ػ‬
Media Access Control (MAC) ُٚ Bluetooth device ًَ 2.402 GHz
‫ْ كبًش‬ٜ٤‫اؽذ ك‬ٝ ًَ َ‫لن‬٣ ‫س‬ٞ‫ر‬ِٞ‫ٖ ثبُج‬٣‫بص‬ٜ‫ٖ ع‬٤‫ ؽبُخ اُشثو ث‬٠‫ ك‬٠٘٤ِ‫خ‬٤‫ ث‬ٙ‫د‬ٝ address
‫س‬ٞ‫ر‬ِٞ‫ؼزجش اُج‬٣ٝ .ٟ‫ْ ٓشح أخش‬ٜ٘٤‫ اُشثو ث‬٠‫ ؽبُخ اُشؿجخ ك‬٠‫ْ ك‬ٜ٘٤‫٘ي ث‬٤ُ َٔ‫ؼ‬٣ٝ ٠ٗ‫اُزب‬
.‫ب‬ٜ‫ثؼن‬ٝ ‫ضح‬ٜ‫ٖ األع‬٤‫وخ ٗوَ أٓ٘خ ث‬٣‫هش‬

Architecture
slave _ master structure ‫سح‬ٞ‫ ف‬٠‫زْ ك‬٤‫ ث‬Bluetooth communication ‫اُـ‬
ٌٕٞ٤‫ػبدح ث‬, ‫ عجؼخ‬٠ُ‫ْ ا‬ٛ‫قَ ػذد‬٣ slave ٖٓ ‫اؽذ ثؤًزش‬ٝ master ‫ٌٖٔ سثو‬٣ ‫ش‬٤‫ؽ‬
َٔ‫ؼ‬٤ٛ slave ٠ٜٗ‫ؾذد أ‬٤‫ ث‬٠ُِ‫ ا‬ٞٛ master ‫اُـ‬ٝ ‫اؽذ‬ٝ slave ٌِْ٤‫اؽذ ث‬ٝ master
َٔ‫ؼ‬٤‫ ث‬master ‫ اُـ‬, slave ٖٓ ‫د أًزش‬ٞ‫ع‬ٝ ‫ ؽبُخ‬٠‫ ك‬. ٙ‫ ٓؼب‬communication
.‫ أخش‬٠ُ‫ ا‬slave ٖٓ switch

225Page Technical Support 2015


Bluetooth Modules

HC-05 , HC-06 ‫اع‬ٞٗ‫ش اال‬ٜ‫ٖٓ اؽ‬


ٌُٖ built in regulator ٚ٤‫ٕ ك‬ٌٞ٤‫اؽذ ث‬ٝ ٖ٤‫ػ‬ٞٗ ٢‫ٕ ك‬ٌٞ٤‫ ث‬ٝ 3.3v ٢ِ‫ؾزـَ ػ‬٤‫ ث‬
. ‫عذ‬ٞ٣ ‫ ال‬٢ٗ‫ع اُزب‬ُٞ٘‫ ا‬٢‫ك‬
:٢‫ْ ًبالر‬ٜٔ٤‫ روغ‬6 pins ٢‫ٕ ك‬ٌٞ٤‫ ث‬

VCC
GND
Tx
Rx

‫ش‬٤٤‫ ًزـ‬BT module ٍ‫ ثزبػخ ا‬configuration ٍ‫ ا‬٢‫ا ك‬ٞٓ‫غزخذ‬٤‫ٖ ث‬٤٤‫ اُجبه‬2pins ٍ‫ا‬
BT ٍ‫َ ا‬٤‫ف‬ٞ‫ن ر‬٣‫ٕ ػٖ هش‬ٌٞ٤‫ ث‬ٙ‫د‬ٝ .Baud rate ٍ‫ ا‬ٝ Password ٍ‫ ا‬ٝ ْ‫االع‬
ٝ Datasheet ٍ‫ ا‬٢‫ب ك‬ٜ‫ز‬٣‫ٌٔ٘ي سإ‬٣ ‫٘خ‬٤‫آش ٓؼ‬ٝ‫اعزخذاّ ا‬ٝ serial port ‫ ة‬Module
: ٢ُ‫آش ًبُزب‬ٝ‫اال‬

226Page Technical Support 2015


Function AT command
Communications Test Sent : AT
receive : OK
Change baud rate Sent : AT+BAUD1
receive : OK1200
Baud rate setting can be save Sent : AT+BAUD2
even power down. receive : OK2400
1---------1200
2---------2400
3---------4800
4---------9600
5---------19200
6---------38400
7---------57600
8---------115200
Change Bluetooth device name Sent : AT+NAME device name
(device name is the name you receive : OK name
want the device to be , and it will
be searched with this name)
Name setting can be save even
power down.

Change Pincode Sent : AT+PINxxxx


(xxxx is the pin code you set) receive : OKsetpin
Pin code can be save even power
down

227Page Technical Support 2015


‫‪ ٝ‬ثٔب إ ًَ ‪ Device‬ث‪٤‬خزِق ػٖ اُزبٗ‪ ٢‬كبالكنَ اٗي روشا اُذارب ؽ‪٤٤‬ذ ‪ ٝ‬رؼشف اال‪ٝ‬آش‬
‫اُخبفخ ث‪ٚ٤‬‬

‫‪Default settings:‬‬

‫‪‬‬ ‫‪Baud rate : 9600‬‬


‫‪‬‬ ‫‪Name : HC-06 or HC-05‬‬
‫‪‬‬ ‫‪Pin code : 1234‬‬

‫ثبُ٘غجخ ال‪ٝ‬آش اٍ ‪ microcontroller‬ك‪ ٢ٜ‬ا‪ٝ‬آش اٍ ‪ UART‬اُؼبد‪٣‬خ ‪.‬‬

‫‪Connect with micro‬‬


‫اىبي٘ت٘ث ف‪ ٜ‬ت٘ص‪ٞ‬ئ باىَ‪ٞ‬نزٗ س‪ ٛ‬اه ‪ GSM‬فٖ٘ ‪ٝ‬ضتاد اى‪Logic level ٚ‬‬
‫‪ converter‬الُ اىخزد اىي‪ ٜ‬ب‪ٞ‬طيغ ٍِ اىَ‪ٞ‬نزٗ ب‪ٞ‬نُ٘ ‪ 5v‬ب‪َْٞ‬ا اىبي٘ت٘ث اىذخو بتاػٔ‬
‫ب‪ٞ‬نُ٘ ‪ 3.3v‬ػشاُ مذٓ ‪ٝ‬ا بستخذً اه ‪ level converter‬دٓ ٗ‪ٝ‬بق‪ ٚ‬اىت٘ص‪ٞ‬و باىشنو‬
‫دٓ‬

‫‪228Page‬‬ ‫‪Technical Support 2015‬‬


‫ُذ‬ٞ‫ اعؼَ اُل‬٢ٗ‫ش ا‬٤‫ٖ ثؾ‬٤‫ٓز‬ٝ‫ ثبعزخذاّ ٓوب‬voltage divider َٔ‫ ٌٖٓٔ اػ‬ُٜٚٞ‫ ثغ‬ٝ‫أ‬
3.3v ١ٝ‫غب‬٤‫س ث‬ٞ‫ر‬ِٞ‫فَ ُِج‬ٞ٤‫ ث‬٢ُِ‫ا‬

229Page Technical Support 2015


Advanced PIC Microcontroller Projects in C

Interfacing PIC Microcontrollers Embedded Design by


Interactive Simulation

Advanced Microprocessors And Peripherals

Microcontroller based gsm gprs projects

AZEX’15
Technical Support Committee

Contact Us:
technicalcommitteeazex2015@gmail.com
10822868210

..‫ولو كنت وحدك‬

231Page Technical Support 2015

You might also like