+تېما يوللاش
ئىللىق1 يوللانغان ۋاقتى:2017-5-5 18:33 952 قېتىم كۆرۈلدى 10 ئىنكاس يېزىلدى
مەلۇم قەۋەتكە يۆتكىلىش
STC89C51 ،بۇ ئۈزەك سەككىز نى بىر بىرلىك قىلغان كونتروللغۇچ ئۈزەك. سىرتقى كۈرۈنۈشى

كونتروللغۇچنىڭ 40تال پۇتى 4قىسىمغا بۈلۈنگەن.
ئىلىكتىر مەنبەسى .ۋاقىت ھىسابلىغۇچ،كونتروللغۇچ. يېزىش ۋە ئۇقۇش .
vcc ئۈزەكنىڭ ئىلكتىر مەنبەسى ،5ۋولتىلىق ئىلىكتىر مەنبەسىگە ئۇلىنىدۇ.يەنى ئوت سىم.
vss نۆل سىم.
xtal1 。xtal2 كىرىستال تەۋرەنگۈچنىڭ تەتۈر يۇلىنىشلىك كىرىش ۋە چىقىش ئېغىزى.
كونتروللاش سىمى، جەمئى 4تال.
بىز كونتروللغۇچنىڭ ھەر بىر پۇتىنىڭ ئىقتىدارىنى ئشلەتمەي تۇرۇپ ئالدىن چۈشەندۈرسەك بەلكىم چۈشىنشتەقالايمىقانچىلىق پەيدا بوپ قېلىشى مۇمكىن . شۇڭا بىز ئالدى بىلەن ئەمەلى مەشغۇلات جەريانى
ئارقىلىق شۇ جەرياندا كىلىپ چىققان يېڭى ئۇقۇم ۋە شەيئىلەر بىلەن تۇنۇشۇپ چىقايلى.
بىز ئالدى بىلەن ئىشىمىزنى يەنىلا بىرتال چىراغ يېقىشتىن باشلايلى،بىزنىڭ ئىشلىتىدىغىنىمىزledچىراغ.
ledچىراغ دىگىنىمىز يېرىم ئۆتكۈزگۈچلۈك نۇر تارقاتقۇچ . ئىككى پۇتلۇق بىر پۇتى ئوت سىمغا بىر پۇتى نۆل سىمغا ئۇلانغاندا خزمەت قىلىدۇ يەنى يانىدۇ ،ئۇنىڭ ئىككى پۇتى ئەگەر توغرا ئۇلانسا نورمال خزىمەت قىلىدۇ،پۇتنىڭ ئۇلىنىش يۈلىنىشى ئالمىشىپ قالسا نورمال يانمايدۇ،ئادەتتە پايدىلىشىنى تاختىسى ئۈستىدىكى لېد چىراغلار تاختىنىڭ 2.ئېغىزغا ئۇلانغان بۇلىدۇ .چۈنكى ھەربىر ئېغىزدا 8پۇت بولغانلىقتىن
8پۇتقا سەككىز چىراغ ئۇلانغان بۇلىدۇ.چىراغلارنىڭ مۇسبەت قۇتۇبى تاختىنىڭ ئىلكىتر كىلىش مەنبەسىگە
ئۇلىنىدۇ.دىمەك تاختىدىكى چىراغلار نىڭ ئوت سىمى ئۇلىنىپ بولدى.بىز پەقەت چىراغنىڭ مەنپى قۇتۇبىنى
تاختىنىڭ ئىلىكتىر چىقىش ئېغىزى GNDغا ئۇلىساقلا بولدى دىگەن گەپ.توك يۇلى ئۇلاغلىق ئەمما تاختنىڭ
2. ئېغىزى نۇرمال ھالەتتە يۇقىرى ئىلىكتىر بېسىمى ھالىتىدە تۇرىدۇ. شۇڭا بىز تاختىنىڭ2. ئېغىزنى تۈۋەن
ئىلىكتىر بېسىمى ھالەتتە تەڭشىسەك چىراغ يانىدۇ.
بىز ئەمدى پىروگىراممىسىنى كۈرۈپ باقايلى.
  1. #include "reg52.h"
مەزمۇننى كۆچۈرۈۋېلىش
  1. sbit led=P2^0;
مەزمۇننى كۆچۈرۈۋېلىش
  1. void main()
  2. {
  3.         while(1)
  4.         {
  5.                 led=0;       
  6.         }               
  7. }
مەزمۇننى كۆچۈرۈۋېلىش

================================================
  1. #include
مەزمۇننى كۆچۈرۈۋېلىش

بۇ كومپىيتىر c تىلىدكى مۇقىم بىر مەنانى ئىپادىلەيدىغان بەلگىلىمە سۆز بۇلۇپ ،مەنىسى: بۇ پىروگىرامما
مۇشۇ سۆزنىڭ كەيندىكى ھۆججەتتە بىرىلگەن ئېنىقلىملارنى ئىشىلەتسە بۇلىدۇ دىگەنلىك.
"reg52.h" بۇ ھۆججەتتە كونترولغۇچنىڭ ئىچىدىكى ساقلىغۇچلارغا ئېنىقلىما بىرىلگەن،مەسلەن
  1. sfr P0    = 0x80
مەزمۇننى كۆچۈرۈۋېلىش
;
sfr P1    = 0x90;
sfr P2    = 0xA0;
sfr P3    = 0xB0;[/code]
بۇيەردىكى sfr 51كونتروللغۇچتىكى ئالاھىدە سقلىغۇچلانىڭ ئادىرىسىنى كۆرسىتىدۇ،
مەسلەن بىر يۇقارقى يازمىدا تىلغا ئالغان سەككىز تال قۇم ساندۇقنى بىربىرگە ئۇلىغان بولساق ئەشۇ ئۆزئارا ئۇلانغان قۇم ساندۇقى بىر دانە sfr دەپ چۈشىنىشكە بۇلىدۇ.
تۇرمۇشتا بىز 4باغلام  قېرىنداش قەلەم سېتۋالغان بولساق ھەربىر باغلام ئىچىدە سەككىز تال قالەم بولسا
بىز شۇ بىر باغلام قېرىنداش قەلەمنى بىر sfr دىسەك بۇلىدۇ.2.باغلام قەلەمنى sfr 2 دەپ چۈشەنسەك بۇلىدۇ.
51كونتىتوللغۇچنىڭ 4 ئېغىزى بولغاچ بىز چۈشىنش ۋە ئىشلىتىش قۇلاي بولسۇن ئۈچۈن بىز 4تال ئېغزنى
ئايرىم ئايرىم ھالدا p0p1p2p3 دەپ ئاتاپ تۇرۇپ ئىشلىتىمىز.
0x80 بۇ  16نى بىربىرلىك قىلغان سان. 16 بىرلىكىتىكى سانلار كومپىيوتىر تىلىدا يېزىلغاندا ئالدىغا0xبەلگىسى قۇيۇپ يېزىلىدۇ،بولمىسا بىز ئادەتتە ئىشلىتىدىغان 80 بىلەن ئالمشىپ قالىدۇ.بىز ئادەتتە ئىشلىتىدىغان سان ئونلۇق سىسىتىمىدىكى سان يەنى 0123456789مۇشۇ ئون ساندىن بارىلىق
چوڭ كىچىك سانلارنى ئىپادىلەشكە بۇلىدۇ.مەسلەن 1245، 1982،2017 دىگەندەك.
16لىك سىستىمىدا بولسا 0123456789abcsefدىن ئىبارات مۇشۇ 16 سان ۋە ھەرپىتىن بارىلىق سانلارنى ئىپادىلاشكە بۇلىدۇ،
بىز كۆپچىلىكنىڭ تېخىمۇ ياخشى چۈشىنىشى ئۈچۈن ئالدى بىلەن 2لىك سىسىتىمىنى تۇنۇشتۇرۇپ ئۆتمەكچى
ئىككىلىك سىسىتىما دىگىنىمىز 0ۋە 1دىن ئىبارەت ئىككىلىلا ساندىن بارىلىق سانلارنى ئىپادىلەشكە بۇلىدىغان ھىسابلاش قائىدىسى بۇلۇپ ،كونكىرىت ھىسابلاش ئۇسۇلى مۇنداق
  1. 0+0=0,0+1=1+0=1,1+1=10
مەزمۇننى كۆچۈرۈۋېلىش
بىز يەنە مۇنداق چۈشەنسەك بۇلىدۇ. بىز تۇرمۇشت بىر كۈننى 24 سائەت دىسەك تىللىق سائاتلەردە پەقەت 1دىن 12گىچلا بولغاچقا سائەت 12دىن ئاشقاندا قايتىدىن يەنە 1ھالىتىگە قايتىپ كىلىدۇ.بىزبۇنى 12 لىك سىسىتىما دەپ چۈشىنىمىز.بىز بىر ھەپتىنى 7كۈن دىسەك ھەپتىنىڭ 7.كۈنى توشقاندىن كىيىن يەنە ھەپتىنىڭ 1.كۈنىگەقايتىپ كىلىدۇ،بىز بۇنى 7لىك سىسىتما دەپ بىلىمىز،بىز بىر يىلنى 365كۈن دىسەك 365كۈن توشقاندىن كىيىن يەنە يېڭى يىلنىڭ 1.كۈنىگە قايتىپ كىلىمىزبۇ 365 لىك سىسىتىمابۇلىدۇ،2لىك سىسىتمىنىڭ ئاساسى 2بولغانلىق ئۈچۈن ھەر بىر قېتىم 2گە توشقاندا0گەقايتىدۇ،مەسلەن بۈگۈن چۈشتىن بۇرۇننى 0دىسەك چۈشتىن كىيننى 1دىسەك ئەتە چۈشتىن بۇرۇننى 10 دەيمىز. يەنى 0چۈشتىن بۇرنغا ۋەكىللىك قىلىدۇ،1 ئىككىنجى كۈنىگە ۋەكىللىك قىلىدۇ ئەتە چۈشتىن كىيىننى 11دەيمىز،ئۆگۈنلك چۈشتىن بۇرۇننى 100،ئۆگۈنلۈك چۈشتىن كىيىننى 101دەيمىز.
2لىك سىسىتمىنى 10لۇق سىسىتمىغا ئايلاندۇرۇشتا مۇنداق قىلسىڭىزمۇ بۇلىدۇ .سول تەرەپتىن تۇنجى 1دىن باشلاپ 1 دەپ ھىسابلايمىز.كىيىن ھەربىر بىرلىك يۆتكىسەك 2گە كۈپەيتىپ ماڭىمىز،ئەگەر ھەربىر بىرلىك يۆتكگەندە 0بولغان بولسا نەتىجە ئۆزگەرمەيدۇ،1 بولغان بولسا چىققان سانغا 1نى قۇشۇپ يەنە داۋاملىق ھىسبالايمىز، مەسلەن
2لىك سىسىتىمىدىكى 1011نى 10لۇق سىسىتىمىغا ئايلاندۇرساق
  1. 1011=((1*2+0)*2+1)*2+1 )=11;
مەزمۇننى كۆچۈرۈۋېلىش
  1. 110=((1*2+1)*2+0)=6;
مەزمۇننى كۆچۈرۈۋېلىش
  1. 01101011=((((1*2+1)*2*2+1))*2*2+1)*2)+1)        =107;
مەزمۇننى كۆچۈرۈۋېلىش
  1. 1111=1>3>7>15
مەزمۇننى كۆچۈرۈۋېلىش
  1. 1010=1>2>5>10
مەزمۇننى كۆچۈرۈۋېلىش


ئەگەر چۈشىنەلمىگەن بولسىڭىز 2لىك سىستما، 8ۋە 16 لىك سىستىما توغرىسىدا تېخىمۇ كۆپ چۈشەنجگە ئىگە بۇلۇش يۇلىدا ئىزدەنسىڭىز بۇلىدۇ.
تىمىغا قايتىپ كەلسەك كونتىروللىغۇچنىڭ 0x80 .ئۇرۇندىكى ساقلىغۇچنى p0 دوپ ئاتايمىز.يەنى بىز بىلدىغان كونتروللىغۇچنىڭ  0x80نۇمۇرلۇق ئادىرىسنى p0دەپ ئىشلىتىمىز.
sfr P0 = 0x80
نىڭ مەنىسى ئەنە شۇ. خۇددى ئەمەتجاننىڭ ئۈيىنى خەرىتىگە ئالغاندا p0، مەمەتجاننىڭ ئۈيىنىp1،سەمەتجاننىڭ ئۈيىنىp2دەپ ئالغانغا ئوخشاش.كىيىن بىز خەرىتگە قاراپ p0نى كۆرسەك ھە بۇ ئەمەتجاننىڭ ئۈيى دەپ تۇنۇيمىز.مەمەتجاننىڭ ئۈينى تاپماقچى بولساق p1نى ئىزلەيمىز. كونتتروللغۇچمۇ p0 نى ئۇقۇغاندا0x80مۇشۇ ئادىرىسنىڭ توك يۇلىنى تۇتاشتۇرىدۇدىگەن گەپ.
void main
بۇ كونتىروللىغۇچقا توك ئۆتكەندە ئىجرا قىلىنىغان بىرنجى باسىقۇچنىڭ كىرىش ئېغىزى.ھەرقانداق پىروگىرامما ئىجرا قىلىنغاندا مۇشۇ جۈملىنىڭ ئاستىدىن باشلاپ ئىجرا قىلىنىدۇ.
  1. while
مەزمۇننى كۆچۈرۈۋېلىش
بۇ Cتىلىدىكى بىر بۇيرۇق بۇلۇپ ئۇيغۇن بولغان شەرىت ئىچىدكى بۈلەكلەرنى ئىجرا قىلىدۇ.شەررىن ھالقىپ كەتسە ئاسىتىدكى قالغان بۇيرۇقلارنى ئىجرا قلىلىدۇ،يەنى ئەگەرشەرت 0بولسا چىكىنىپ چىقىدۇ شەرت 1بولسا ئۆز دائىرىسىكى بۇيرۇقنى داۋاملىق ئىجرا قىلىدۇ.
  1. sbit led=P2^0;
مەزمۇننى كۆچۈرۈۋېلىش

بۇ خۇددى بايقى p0,p1دىگەنگە ئوخشاش ئېنىقلىما. بىز سەمەتجاننىڭ ئۈيىنىp2دىگەن بولساق بۇ بىر يۈرۈش ئۆيدە سەككىز ئېغىز ئۆي بولسا بىز شۇ 8ئېغىز ئۆي ئىچىدىكى 0.نۇمۇرلۇق ئۆينى led دەپ خەرىتىگە ئالدۇق دىگەن مەنىدە.
ئەمدى ئەڭ ئاخىرقى نۇختا led=0 دىگەنلىك 0.نۇمۇرلۇق ئۆينىڭ توك بېسىمى 0 دىگەنلىك.
بۇ پىروگىراممىنى ئۇمىيۈزلۈك چۈشەنسەك.
  1. #include "reg52.h"
مەزمۇننى كۆچۈرۈۋېلىش

بۇ ھۆججەتتە بىز ئىشلەتمەكچى بولغان ئادىرىسلارغا ئېنىقلىما بىرلگەن.شۇڭا بىز بۇ ھۆججتىنى پىروگىراممغا
ئەكىرىمىز.
  1. sbit led =P2^0;
مەزمۇننى كۆچۈرۈۋېلىش

P2^0
كونتىروللىغۇچنىڭ 2.ئېغىزىدىكى 0.نۇمۇرلۇق پۇتىغا ledدەپ ئات قۇيىمىز،
  1. void main()
مەزمۇننى كۆچۈرۈۋېلىش

پىروگىرمما ئىجرا قىلىنىشقا باشلىنىدۇ.
  1. while (1)
مەزمۇننى كۆچۈرۈۋېلىش

چۈنكى شەرىت 1يەنى شەرىت مەڭگۈ قانائەتلەنگەنلكىتىن ئاسىتىدىكى بۇيرۇق
  1. led =0;
مەزمۇننى كۆچۈرۈۋېلىش

يەنى بىز ledدەپ ئات قويغان كونتىروللغۇچنىڭ 2.ئېغبز0.پۇتىنىڭ ئىلىكىتىر بېسىمى 0 بۇلىدۇ.
چۈنكى 2.نۇمۇرلۇق ئېغىزنىڭ 0. نۇمۇرلۇق پۇتىغا ئۇلانغان چىراغنىڭ بىر ئۇچى يۇقىرى بېسىملىق توك يۇلى كىرىش ئېغىزى vccغا ئۇلانغانلىقتىن بۇ چىراغنىڭ ئىككى ئۇچىدكى توك يۇلىدا ئىلىكتىر بېسىمى پەيدا بۇلۇپ بۇ چىراغ يېنىشقا باشلايدۇ.
بۇ يازمىدا بىرقاتار ئېنىقلىلملارغا ئىزاھات بىرىش سەۋەبى بىلەن سەل ئۇزۇراپ كەتتى .
ئەمەلىيەتتە بىردانە led چىراغىنى يېقىش تەرتپى پەقەت شۇ 2جۇملە ئىجرا بۇيرقى خالاس،ئەگەر سىز يۇقارقىلارنى تامەن چۈشىنەلىگەن بولسىڭز ئنكاس شەكلىدە يەنە بىر پىروگىرامما ئىجرا قىلىمىز، بۇچاغدا سىز ئۇ پىروگىراممنى خۇددى بۇرۇندىنلا بلىدىغاندەك شۇنداق ئاسان ھىس قىلىسىز،ئەگەر كۆپرەك مۈجىمەل
چۈشەنجىدە بوپ قالغان بولسىڭىزمۇ ھېچقىسى يوق، سىز داۋاملىق پىروگىرامما ئىجرا قىلىش بىلەن ئۇچىرىشش جەريانىدا بارابارا ئۆزلىشىپ كىتىسىز، خۇددى بىر ناتۇنۇش ئادەم بىلەن تۇلائالاقە قىلغاندا خۇي پەيلىنى بىلىپ كەتكەندەكلا، سىزگە بۇ يازمىدا قۇيىلىدغان تەلەپ سىز پەقەت بىزنىڭ ياققان ledچىرىغىمىزنىڭ بىر ئۇچنىڭ vcc غا يەنە بىر ئۇچىنىڭ كونتروللغۇچنىڭ بىر پۇتى ئارقىلىق نۆل سىم يەنى vssكە ئۇلانغانلىقىنى ،بىز كونتىروللىغۇچنڭ ئىلكىتىر بېسىمىنى پىروگىرامما ئارقىلىق 0ھالەتكە ئەكەلگەنلىگىمىز ئۈچۈن ئىلىكىتىر پەرقى پەيدا بۇلۇپ چىراغنىڭ يانغانلىقنى چۈشەنسىڭىزلا كۇپايە.

ھەمبەھرىلەش:  QQ دوست ۋە توپQQ دوست ۋە توپ QQ ھويلىسىQQ ھويلىسى تېڭشۈن مىكروبلوگىتېڭشۈن مىكروبلوگى تېڭشۈن دوستلارتېڭشۈن دوستلار
ساقلاشساقلاش6 ھەمبەھرھەمبەھر قوللايمەنقوللايمەن8 قوللىمايمەنقوللىمايمەن

10ئادەم ئىنكاس يازدى

تۆر
سەھرا360 ۋاقتى: 2017-5-5 18:52:37
ناھايىتى چۈشنۈشلۈك بولۇپتۇ رەھمەت سىزگە
گىلەم
tuman0998 ۋاقتى: 2017-5-5 19:02:55
.rah mat ja pa qak ti giz
ئورۇندۇق
شىرىزات ۋاقتى: 2017-5-6 00:06:26
مەن بەزى يەرنى چۇشەنمىسەممۇ سىزنىڭ بىلىمىڭىزدىن سىزگە قايىل بولدۇ كومپىيوتۇرنى مۇشۇنداق چۇشەنگەندە ئاندىن ياخشى پىراگىراملارنى يازغىلى ياخشى ئۇنۇمگە ئىرىشكىلى بۇلدۇ دەپ قارايمەن  تېخىممۇ تىرشىڭ قېرىندىشىم،
5-قەۋەت
bulbulla ۋاقتى: 2017-5-6 00:35:55
بۇ يازمىنى ئاخىرىدا   bulbulla تەھرىرلىگەن. ۋاقتى  2017-5-6 00:37  

بەك چۈشۈنىشلىك   ،مىساللارمۇ ئىنتايىن ئۆزگىچە زاغرا تىلدا بوپتۇ .مەن ئىلگىرى ئاردۈينوغا cتىلىدا ئانچە -مۇنچە پىروگرامما يېزىپ باققاچقىمىكىن خېلى ئاسانلا  چۈشىنىپ  قالدىم ،تېمىڭىزنىڭ داۋامىنى داۋاملىق يوللاپ تۇرىشىڭىزنى ئۈمۈد قىلىمەن.
6-قەۋەت
ئىللىق1 ۋاقتى: 2017-5-6 00:58:38
ئەگەر يۇقىرقى پىروگىراممنى ئازراقلا ئۆزگەرتسەك باشقا چىراغلارنىمۇ يېقىشقا بۇلىدۇ
مەسلەن
  1.    #include "reg52.h"
  2.    sbit led1 =P2^1;
  3.    sbit led2 =P2^2;
  4.    sbit led5 =P2^5;
  5.    void main(){
  6.    while (1){
  7.                        led1 =0;
  8.                         led2=0;
  9.                         led5= 0;
  10.    }
  11.    }
مەزمۇننى كۆچۈرۈۋېلىش

دىمەك ،بىز led2,led3,led5قاتارلىق ئېنقلىملار ئارقىلق 51كونتروللغۇچقا ئۇچۇر يوللاپ ئالاقە قىلىش ئۈچۈن شەرىت ھازىرلىدۇق.كىيىن led1,led2,led5قاتارلىقلارنى كونتروللغۇچ ئارقىلىق بېىسمنى نۆل قىلىپ
تەڭشىدۇق.ئوخشاشلا چىراغلارنىڭ ئۇچلىرە يۇقىرى بېسىمىلق  vssغا ئۇلانغانلىقتىن 1،2،5.چىراغلارنىڭ ئىككى ئۇچىدا ئىلكىتىر بېسىم پەرقى پەيدا بۇلۇپيانىدۇ.باشقا چىراغلارنىڭ ھەرئككى قۇتۇبى يۇقىرى بېسىم ھالىتىدە بولغانلىقى ئۈچۈن يانمايدۇ.
ئەگەر بىز 2.چىراغنى ئۈچۈرمەكچى بولساق  lled2نىڭ قىممىتىنى 1 يەنى يۇقىرى بېسىم ھالىتىدە قىلىپ
كونتروللىغۇچقا ئۇچۇر يوللىساق بۇلىدۇ.يەنى         led2=1
ئەمدى بىز يازمدىدا ئېلىپ بارماقچى بولغان 2.تەجرىبىنى راسمى باشلايمىز.
پىروگىرامما تەرتىپى
  1. #include "reg52.h"                         
  2. typedef unsigned int u16;       
  3. typedef unsigned char u8;


  4. sbit led=P2^0;               

  5. void delay(u16 i)
  6. {
  7.         while(i--);       
  8. }

  9. void main()
  10. {
  11.         while(1)
  12.         {
  13.                 led=0;
  14.                 delay(500);
  15.                 led=1;
  16.                 delay(500);
  17.         }               
  18. }
مەزمۇننى كۆچۈرۈۋېلىش

چۈىشنىش
include "reg52.h"#
reg52.hدىگەن بۇ ھۆججەتتىكى ئېنىقلىمىلارنى ئىشلىتىش ئۈچۈن پىروگىراممىغا ئەكىرىمىز.
typedef unsigned int u16;
بۇ جۈملىدىكى unsigned int بولسا c تىلىدكى 0دىن باشلانغان 0دىن چوڭ بولغان پۈتۈن سانلارنىڭ
بىر بۈلىكىنى كۆرسىتىدۇ، دائىرىسى 0دىن  2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2دىن بىرى كەم
يەنى 2نىڭ 16دەرىجسى دىن 1نى ئېلىۋەتكەندە 65535كىچە بولغان دائىرىدە.
بىز بۇدائىردىكى سانلارنى ھەمىشەunsigned int دەپ ئىشلىتىپ يۈرسەكمۇ بۇلىدۇ ئەمما قۇلايسىز بۇلىدۇ.
شۇڭا c تىلى مۇشۇ قۇلايسىزلىقنى ھەل قىلىش ئۈچۈن typedef دىگەن سۆزنى ئىشلىتىشنى قارار قىلغان،
دىمەك بىز شۇ دائىردىكى سانلارنى ئشلەتمەكچى بولساق
  1. typedef unsigned int u16;
مەزمۇننى كۆچۈرۈۋېلىش

دەپ يازساق كىيىنى پەقەت  u16 دەپ مەلۇم بىر ئۆزگەرمە مىقدارغا ئېنىقلىما بەرسەك بۇ ئۆزگەرمە مىقدارنىڭ قىممەت دائىرىسى ئوخشاشلا
  1. unsigned int
مەزمۇننى كۆچۈرۈۋېلىش
نىڭ دائىرىسىدە بۇلىدۇ،
يەنى 0دىن 65535كىچە دائىرىدە.
  1. typedef unsigned char u8;
مەزمۇننى كۆچۈرۈۋېلىش

پىرىنىسىپى يۇقارقىغا ئوخشاش. ئوخشىمايدىغىنى پەقەت char. بۇ ئۆزگەرمە مىقدارنىڭ قىىمىتى
  1. -128~127
مەزمۇننى كۆچۈرۈۋېلىش
گىچە
unsignedدىگەنلىك قۇشۇمچە بەلگىسى يوق دىگەنلىك. يەنى 0دىن چوڭ دىگەنىلىك
شۇڭا unsigned char نىڭ قىممەت دائىرسى0 دىن 257گىچە بولغان پۈتۈن سان.
  1. sbit led=P2^0;
مەزمۇننى كۆچۈرۈۋېلىش

بىز يۇقىردا چۈشەنجە بەرگەن،يانا بىرقېتىم تەكرارلىساق كونتروللىغۇچنىڭ 2.ئېغىزىنىڭ 0.پۇتىغا
led دەپ ئات قۇيۇپ كونتروللىغۇچقا يوللىدۇق.كىيىن led دەپ پىروگىراممىغا ئەكىرسەك كونتروللىغۇچ
بۇنى 2.ئېغزنىڭ 0.پۇتى دەپ تۇنۇپ ۋەزىپە ئىجرا قىلىدۇ.
  1. void delay(u16 i)
  2. {
  3.         while(i--);       
  4. }
مەزمۇننى كۆچۈرۈۋېلىش

بۇ بىر فونكىسىيە.  بىر بۇيرۇقلار توپلىمى دەپ چۈشەنسەكمۇ بۇلىدۇ،كونكىرىت بۇيرۇقلار جەريانى
  1. {}
مەزمۇننى كۆچۈرۈۋېلىش
مۇشۇ ئىككى چوڭ تىرناق ئارىسىغا يېزىلغان بۇلىدۇ. بۇ فونكىسىيەنىڭ ئسمى delay
ياكى سىز خالىغانچە قويىسىڭز بۇلىدۇ، ئىشلەتكەندە چۇقۇم شۇ ئۈزىڭىز نىمە دەپ قويغان بولسىڭىز
شۇ ئىسىمىنى ئىشلىتىڭىز كىرەك. شۇندىلا كونتروللىغۇچ سىزنىڭ نىمە مەقسىتىڭىزنڭ بارلىقىغا جەزىم
قىلپ نورمال خزىمەت قىلالايدۇ. شۇنىڭ بىلەن سىز كۆزلىگەن مەقسەتكە توغرا يىتەلەيسىز.
  1. delay(u16 i)
مەزمۇننى كۆچۈرۈۋېلىش

مەنىسى delay دىگەن بۇ بۇيرۇقلار توپلىمى u16 دائىرىدە يەنى بىز يۇقىردا چۈشىنىپ چىققان c تىلىدىكى unsigned int دائىرىدىكى بىر ئۆزگەرمە مىقدارنى ۋاستە قىلىپ ۋەزىپە ئىجرا قىلىدۇ.
  1. while(i--);
مەزمۇننى كۆچۈرۈۋېلىش

مەنىسى ئۆزگەرمە مىقدار i  نىڭ قىممىتى كونتروللىغۇچنىڭ ھەربىر قېىتىملىق دەۋرىدە يەنى كونتىروولىغۇچنىڭ ۋاقىت ھىسابلىغۇچىسىنىڭ قىىمىىتى ھەربىر قېتىم ئۆزگەرگەندە بىردىن كىچىكلەپ
ماڭىدۇ. بۇ دىگەنلىك بىز ئېيتقان ھېلىقى كرىستال تەۋرەنگۈچنىڭ كونتروللغۇچقا بىر قتىم سىگىنال يوللىغان ۋاقىتى دىگەنىلىك،ھەر قېتىملىق شۇ ۋاقىتنىڭ ئۈزىدە i نىڭ قىممىتى ئۆزلىكىدىن بىردىن
تۈۋەنلەپ ماڭىدۇ، تاكى i نىڭ قىممىتى 0 بولىغچە، چۈنكى iنىڭ قىىمىتى 0بولغاندا while جۈملىسىنىڭ
  شەرتى چەكتىن چىقىپ كىتىدۇ شۇڭا يۇقىرىقى delay بۇيرىقلات توپلىمى ئىشتىن توختاپ كىيىنىكى
بۇيرىقلارنى ئىجرا قىلىدۇ.چۈنكى ھەربىر قېتىم  i نىڭ قىمىتى تۈۋەنلىگەندە، بەلگىلىك ۋاقىت كىتىدىغانلىقى ئۈچۈن delay  بۇيرۇقلار توپلىمى ئەمەلىيەتتە مەلۇم ۋاقىت ئۇزاتىش رۇلىنى ئۈتەيدۇ.
12گىرتىسىلق تەۋرەنگۈچنىڭ ھەربىر قېىتم كونتروللىغۇچقا سىگىنال بىرىش ئۈچۈن ئادەتتە 0.9 مىكرو
سىكونىت ۋاقت كىتىدۇ.
  1. void main()
مەزمۇننى كۆچۈرۈۋېلىش

پىروگىرامما مۇشۇ نۇقتىدىن باشلىنىپ تۈۋەنگە قاراپ ئىجرا قىلىنىدۇ،
  1.         while(1)
مەزمۇننى كۆچۈرۈۋېلىش

قىممەت مەڭگۈ 1 بولغانلىقتىن پىروگىرامما ئايلانما شەكىلدە ئىجر قىلىنىدۇ،
  1. led=0;
مەزمۇننى كۆچۈرۈۋېلىش

دەسلەپ بىز ئېنىقلما بەرگەن چىراغنىڭ بىر پۇتى تۈۋن بېسىم ھالىتىگە كىلىدۇ،يەنى يانىدۇ،
  1. delay(500);
مەزمۇننى كۆچۈرۈۋېلىش

ھەربىر قتىم تەخىمىنەن 0.9 مىكرو سىكونت ۋاقىت كەتكەنلىتىن 500 قىتىمدا تەخمىنەن 500*0.9=450 مىكرو سىكونىت يەنى 0.45سكونتتىن كىيىن i نىڭ قىممىتى 0بۇلۇپ ۋاقىت سۇزۇش
رۇلىنى ئۈتەيدىغان بۇيرۇقلار توپلىمى  delay خىزمەتتن توختايدۇ.
  1. led=1;
مەزمۇننى كۆچۈرۈۋېلىش

چىراغنىڭ ئۇچى يۇقىرى بېسىمىلق ھالەتكە كىلىدۇ ،دىمەك ھەرئىككى ئۇچى يۇقىرى بېسىم ھالىتىدە بولغاچ ئىلىكتر بېسىم پەرقى يۇقىلىپ چىراغ ئۈچىدۇ،
  1. delay(500);
مەزمۇننى كۆچۈرۈۋېلىش

يەنە 0.45 سكونت ۋاقىت ئۈتىدۇ،شۇنىڭ بىلەن كونتروللغۇچنىڭ ۋەزىپسى بىر قېىتم رەسمى ئاياقىلىشدۇ،
ئەمما كىرىش نۇقتىسىدا تەكرارلاغ بۇيرۇقى
  1. while(1)
مەزمۇننى كۆچۈرۈۋېلىش
نىڭ قىممىتى مەڭگۈ 1 بولغاچ
يۇقىرىقى يېنىپ 0.45سكونتتن كىيىن ئۈچۈش ھالىتى مەڭگۈ تەكرارلىنىدۇ.
شۇنىڭ بىلەن تەجرىبە نەتىجىسىدە چىراغ يانىدۇ .0.45 تەخمىنەن يېرىم سكوننتىن كىيىن ئۈچىدۇ
يەنە يرىم سىكونتتتىن كىيىن يەنە يانىدۇ.يەن ئۈچىدۇ،لاپىلداپ يېنپ ئۈچۈش ھالىتى داۋاملىشىدۇ.
ئەگەر سز يېىنپ ئۈچۈش ۋاقىت ئارلىقىنى ئۇزارتماقچى بولسىڭىز پەقەت i نىڭ قىممىتىنى يۇقىرلاتسىڭز
بۇلىدۇ مەسلەن i نىڭ قىىمىتىنى 1000 قىلىسىڭز تەخمىنەن 0.92 سىكونت ئارلىق تاشلاپ يېنىپ ئۈچىدۇ.
10000 قىلسىڭىز 9سكونىت ئارلق تاشلاپ يېنپ ئۈچىدۇ،لىكىن دىققەت قىلىش كىرەككى i نىڭ قىممەت
دائىرىسى 65535 تىن كىچىك بولغان دائىرىدە بولىشى كىرەك. چۈنكى بىز i نىڭ قىممەت دائىرىسنى
ئەنە شۇ دائىرىدە دەپ ئېنىقلىما بەرگەن،ئۇ دائىرىدىن ئېشپ كەتسە ئويلىمىغان خاتالىقلار يۇز بىرىشى
مۇمكىن،.،،
7-قەۋەت
ئىللىق1 ۋاقتى: 2017-5-6 15:57:27
يېڭى تەجرىبە . 8تال چىراغنى تەرتىپى بۇيىنچە ياندۇرۇپ ئۈچۈرۈش.

  1. #include "reg52.h"               
  2. #include       

  3. typedef unsigned int u16;          
  4. typedef unsigned char u8;

  5. #define led P2          


  6. void delay(u16 i)
  7. {
  8.         while(i--);       
  9. }


  10. void main()
  11. {
  12.         u8 i;
  13.         led=0xfe;
  14.         delay(50000);        
  15.         while(1)
  16.         {       

  17.                 for(i=0;i<7;i++)       
  18.                 {
  19.                         led=_crol_(led,1);
  20.                         delay(50000);
  21.                 }
  22.                 for(i=0;i<7;i++)       
  23.                 {
  24.                         led=_cror_(led,1);
  25.                         delay(50000);       
  26.                 }       
  27.         }               
  28. }
مەزمۇننى كۆچۈرۈۋېلىش

چۈشىنىش..
  1. #include "reg52.h"
مەزمۇننى كۆچۈرۈۋېلىش

stc89c51 ئۈزەكنىڭ ھەرقايسى قىسىمىلىرىغا بىرىلگەن ئېنىقلىملارنى ئۆز ئىچىگە ئالغان ھۆججەت
reg52.h نى ئەكىرىمىز.
  1. #include       
مەزمۇننى كۆچۈرۈۋېلىش

بۇ ھۆججەتتە بىرنەچچە ئۇچۇرغا قارىتا مەشغۇلات ئېلىپ بېرىلىدىغان بىرنەچچە c تىلىدىكى بۇيرۇق جۈملىلەرگە ئېنقلىما بىرىلگەن ، بىز بۇ پىروگىراممىدا شۇ بۇيرۇقلار ئىچىدىن بىرىنى ئىشلىتىدىغانلىقىز
ئۈچۈن بۇ ھۆججەتنىمۇ ئەكىرىپ ئىشلىتىمىز.
  1. typedef unsigned int u16;          
  2. typedef unsigned char u8;
مەزمۇننى كۆچۈرۈۋېلىش

سانلار بۈلىكىنى ئاسان بولسۇن ئۈچۈن u16 ۋە u8 دەپ ئېنىلىما بىرىپ ئىشىلىتمىز.
u8 سانلار بۈلىكى دائىرىسى 0دىن 257گىچە. u16 بولسا دائىرىسى 0دىن 65535كىچە.
  1. #define led P2
مەزمۇننى كۆچۈرۈۋېلىش

كونتىروللىغچنىڭ P2 ئېغىزىغا led دەپ ئات قۇيۇپ ئىشىلىتىمىز،
  1. void delay(u16 i)
  2. {
  3.         while(i--);       
  4. }
مەزمۇننى كۆچۈرۈۋېلىش

ۋاقىت ئۇزارتىشى رولىنى ئۈتەيدىغان فونكىسىيە يەنى بۇيۇرقلار توپلىمى
  1. void main()
مەزمۇننى كۆچۈرۈۋېلىش

پىروگىراممىنىڭ باشلىنىش نۇقتىسى.
  1. u8 i;
مەزمۇننى كۆچۈرۈۋېلىش

بىز ئېنىقلىما بەرگەن 0دىن 257گەىچەدائىرىدكى ئۆزگەرمە مىقدار i غا بىرىلگەن ئېنىقلىما.
دققەت .پەقەت ئېنىقلىما بەرگەندىلا ئاندىن ئۆزگەرمە مىقدارلارنى ئىشىلىتىكە بۇلىدۇ. بولمىسا كونتىروللغۇچ تۇنۇمايدۇ.شۇڭا خاتالىق كىلىپ چىقىدۇ. ئۈسكۈنىلەر نورمال ئشىلمەيدۇ.شۇڭا ئاۋال ئېنىقلىما بىرىمىز.
  1. led=0xfe;
مەزمۇننى كۆچۈرۈۋېلىش

بىز ئېنىقلىما بەرگەن كونتىروللغۇچنىڭ ئېككىنچى ئېىغىزى يەنى ئۆزگەرمە مىقدار شەكلىدىكى led غاقىممەت بىرمىز .قىممىتى 0xfe
بۇ 16لىك سىسىتمدىكى سانلىق قىممەت .0x بولسا ئۇنىڭ بەلگىسى fe بولسا ئۇنىڭ قىممىتى.
بىز چۈشەندۈرۈپ ئۆتكەن. 16 لىك سانلارنى ئىپادىلەشتە 0123456789abxdefدىن ئىبارەت مۇشۇ 16 سان ۋە ھەرىپ ئىشىلىتىدۇ دەپ.  f بولسا  15. ئۇرۇندا e بولسا 14.ئۇرۇندا شۇڭا بۇنى 2لىك سىسىتمىا بىلەن ئىپادىلىدسەك 15=1111، 14=1110.   0xfe= 1111  1110
  1. delay(50000);
مەزمۇننى كۆچۈرۈۋېلىش

ۋاقىت ئۇزارتىش بۇيرۇقى. 50000 بولغاندا ھەربىر قېتىملىقى 0.94 بولسا 50000*0.94=47000 مىكرو سىكونت تەخمىنەن  يېرىم سىكونت .
  1.         for(i=0;i<7;i++)       
  2.                 {
  3.                         led=_crol_(led,1);
  4.                         delay(50000);
  5.                 }
مەزمۇننى كۆچۈرۈۋېلىش

چۈنكى بىز سەككىز تال چىراغنى ئارقىمۇ ئارقا ياندۇرۇش ئۈچۈن سەككىز قېتىم ھەركەت قىلىمىز
شۇڭا i نۆل بوغاندا i يەتتىدىن كىچىك ، شەرتىكە ئۇيغۇن بولغاچ بىرنجى قېتىملىك مەشغۇلات ئېلىپ بېرىلىدۇ.
  1. led=_crol_(led,1)
مەزمۇننى كۆچۈرۈۋېلىش

بۇيەردىكى
  1. _crol_
مەزمۇننى كۆچۈرۈۋېلىش
بىز ئەكىرگەن
  1. intrins.h
مەزمۇننى كۆچۈرۈۋېلىش
ھۆججىتىدە ئېنقلىما بىرىلگەن بۇلۇپ سان سىفىرلارنى سولغا بىر بىرلىك يۆتكەش بۇيرىقى.يەنى 11111110 نى سولغا بىر بىرلىك يۆتكىسەك 11111101غە ئۆزگىىرىدۇ.يەنە بىر بىلىك يۆتكىسەك 11111011كە ئۆزگىرىدۇ.
يەنە يۆتكىسەك 11110111كە ئۆزگىرىدۇ. مەنسى شۇ . سولغا يۆتكەش بۇيرىقىنى چۈشەندۈرسەك
مەسلەن 1000نى سولغا بىر بىرلىك يۆتكىسەك000قالىدۇ. بۇ ئەسلى 4بىرلىك بولغاچقا كەينىگە 1نى تۇلۇقلايمىز. 0001بۇلىدۇ.   101011 نى سولغا بىر بىلىك يۆتكىسەك سول تەرپتىك بىر بىرلىكنى تاشلىۋىتىپ 01011قالىدۇ. كەينىگە 1نى تۇلۇقلىساق 010111 بۇلىدۇ .شۇنداق چۈشىنىسىز.يەنى سول تەرەپنى كىسىپ ئېلىۋېتىپ ئوڭ تەرەپكە بىرنى تۇلۇقلايسىز.
  1. _cror_
مەزمۇننى كۆچۈرۈۋېلىش

بۇ ئوڭغا بىر بىلىك يۆتكەش بۇيرىقى . پىرىنسىپى بولسا ئوڭ تەرەپتىن بىرنى كىسىپ ئېلىۋىتپ سولغا 0نى تۇلۇقلايسىز. مەسلەن 1101 نى ئوڭغا بىر بىرلىك يۆتكىسەك110قالىدۇ. سولغا نۆلنى تۇلۇقلىساق
0110 بۇلىدۇ . 1111011نى ئوڭغا بىر بىرلىك يۆتكىسەك ئوڭ تەرەپتىن بىر بىرلىك كىسىپ ئېلىۋەتسەك
111101قالىدۇ سولغا 0 تۇلۇقلىساق 0111101 بۇلىدۇ. قالغىنىنى كۆپرەك مەشىق قىلسىڭىز چۈشىنىپ كىتەلەيسىز.
ئەمدى ئۇمىيۈزلۈك چۈشىنىمىز.
  1. #include "reg52.h"                 كونتروللىغۇچقا بىرىلگەن ئېنىقلىا ھۆججەت
  2. #include               بەزى بۇيرۇقلارغا بىرىلگەن ئېنېىقلىما ھۆججەت  

  3. typedef unsigned int u16;        سانلار بۈلىكىگە بىرىلگەن ئېنىقلىما  
  4. typedef unsigned char u8;       سانلار بۈلىكگە بىرىلگەن ئېنىقلىما

  5. #define led P2                     كونتىروللۇچنىڭ 2.ئېىزغا بىرلگەن ئېنىقلىما


  6. void delay(u16 i)           ۋاقىت ئۇزارتىش رۇلىنى ئۈتەيدىغان بۇيۇرقلار توپلىمى
  7. {
  8.         while(i--);             
  9. }
  10.                        

  11. void main()                 پىروگىرامما باشلىنىش نۇختىسى مۇشۇ يەردىن باشلىنىۇ
  12. {
  13.         u8 i;                ئۆزگەرمە مىقدارغا ئېنقلىما بىرىمىز
  14.         led=0xfe;              كونتىروللغۇچنىڭ 2.ئېغىزىغا قىممىەت بىرىمىز قىممىتى11111110
  15.         delay(50000);         تەخمىنەنە يېرىم سىكونت ۋاقىت ئۆتكۈزىمىز
  16.         while(1)        تەكرارلىنىدۇ
  17.         {       

  18.                 for(i=0;i<7;i++)        نۆلدىن يەتتىگىچە جەمئى 8قېتىم ئايلانما مەشغۇلات ئېلىپ بارىمىز
  19.                 {
  20.                         led=_crol_(led,1);بىرىنجى قېتىمدا 11111110نى سولغا بىر بىرلىك يۆتكىسەك 11111101 بۇلىدۇ دىمەك ئككىنجى چىراغ يانىدۇ.
  21.                         delay(50000); يەنە يېرىم سكونت سۇزاپ ۋەقىت ئۆتكۈزىمىز

  22.                 }
  23. جەمئى يەتتە قېىم بولغانلىقى ئۈچۈن ئەڭ ئاخىردا 8.چىراغ يېنىپ بۇلۇپ بۇيرۇقتىن چىكىنىپ چىقىمىز
  24. ئاندىن ئاسىتىدىكى بۇيرۇق ئىجرا قىلىنىشقا باشلايدۇ.
  25.                 for(i=0;i<7;i++) يەنىلا 8قېتىم       
  26.                 {
  27.                         led=_cror_(led,1); ئەمدى ئوڭغا يۆتكەيمىز بايا 8قېتىم يۆتكەلگەنلىكتىن قىممىتى 0111111غا ئۆزگەرگەن يەنى 8چىراغنىڭ بېسىمى نۆل قالغانلىرىنىڭ بېسىمى 1بولغاچقا 8.چىراغ يانغان   ئەڭ ئاخرىدا ھەممىسى 11111111گەئۆزگرىپبولغاچقا ئوڭغا بىر بىرلىك يۆتكىسەك 01111111يەنە بىر بىرلىك يۆتكىسەك 00111111 بۇلۇپ 2چىراغ يانىدۇ ،شۇ تەرىپ بىلەن جەمئى 8تال چىراغنىڭ ھاممىسى يېنىپ بۇلۇپ چىكىنىپ چقىقىدۇ،
  28.                         delay(50000);        ھەربىر جەرياندا يېرىم سىكونت ۋاقت ئۈتىدۇ.
  29.                 }       
  30.         }               
  31. }
مەزمۇننى كۆچۈرۈۋېلىش






8-قەۋەت
bulbulla ۋاقتى: 2017-5-6 20:13:42
ۋاھ تېمىنىڭ ئاخىرى بەك بەلەن چىقىۋاتىدۇ قۇلىڭىزغا دەرت كەلمىسۇن! ! !
9-قەۋەت
ئىللىق1 ۋاقتى: 2017-5-6 22:52:25
يېڭى تەجرىبە. سىگىنال ئەۋابى.
سىگىنال ئەۋابىنى تۇلا ئۇچىرتىمىز .كومپىيوتىر قوزغىلىپ ئۆچكەندە ،ئوتىتىن مۇداپىئە كۈرۈش سىگنال ئەسۋەبى سايرىغاندا ،ئاپتۇماتىك كىرئالغۇ ،ھاۋا تەڭشىگۈچ قاتارلىق ئىلىكىتر ئەسۋابلىرىنىڭ كۇنپكىلىرى بېسىلپ سايرىغاندا، يەنە تەجرىبىمىز ئاياغلاشقاندا ئاڭلايدىغان ئاۋازلار قاتارلىقلار.
سىگەنال ئەسۋابىدىن توك ئۆتكەندە ئىچىدىكى ئىلىكتىر ماگىنىتلىق ئۇرام سىمىدىن توك ئۈتۈپ بېسىم پەيدا بۇلۇپ شۇ بېسىمنىڭ ماگىنىت مەيداننىڭ كۈچى تەسىرىدە سىگىنال ئەسۋابىنىڭ نىپىز تەۋرەنگۈچى
تەۋرىنىپ ئاۋاز چىقىرىدۇ. ئىلىكتىر بېسىمىنىڭ ئوخشاش بولماسىلقىغا ئەگىشىپ يۇقىرى تۈۋەن ئاۋازلار
توكنىڭ ئۈتۈش ۋاقتىنىڭ ئۇزۇن قىسقىلىقىغا ئەگىشىپ ئۇزۇن ۋە قىسقا ئاۋازلار چىقىدۇ .ئىلىكتىرونلۇق
رۇيالنىڭ پىرىنىسىپىمۇ شۇ.بىز سىگىنال ئەسۋابىنى بىز ئېيتىپ ئۆتكەن ئىككى ئۇچى توك ئۆتكۈزۈشچان
ئوتتىرى نىپز بىرقەۋەت توك ئۆتكۈزمەس ماتىريالدىن ياسالغان ئۈچ قۇتۇبلۇق ئەۋاب بىلەن قوزغىتىمىز ياكى  uln2003 قاتارىلىق ئۈزەكلەر بىلەن قوزغاتساقمۇ بۇلىدۇ ، بۇ ئۈزەكنىڭ ئىچىدىمۇ شۇ 3قۇتۇبلۇق ئەسۋابتىن 7سى ئورنىتىلغان. ئۈچ قۇتۇبلۇق ئەسۋاب ئىلىكتىر يۇلىنى كونتىرول قىلىش توك يۇلىدا كونترول قىلىش رۇلىنى ئۈتەش بىلەن يەنە ئىلىكتىر بېسىمىنى كۈچەيتىش رۇلىغىمۇ ئىگە. بىز ئۇنىڭ شۇ ئالاھىدىلكىدىن پايدىلىنپ سىگنال ئەسۋابىنىڭ ئىلىكتىر يۇلىنىڭ بېسىمىنى كۈچەيتىسەك بىر قەدەر ياخشى سىگىنال ئاۋازىغا ئىرشەلەيمىز.

#include "reg52.h"        كونتىروللىغۇچىنىڭ ھەرقايسى قىسمىغا ئېنىقلىما بىرىلگەن ھۆججەت ن ئەكىرىمىز               
#include                يۆتكەش بۇيرىقى مۇ شۇ ھۆججەتتە ئېنىقلىما بىرىلگەن،

typedef unsigned int u16;           سانلار بۈلىكگە ئېنىقلىما بىرىمىز
typedef unsigned char u8;  سانلار بۈلىكىگە ئېنىقلىما بىرىمىز،

sbit beep=P1^5;           كونتىروللىغۇچنىڭ 1.ئېغىز 5.پۇتىغا پىپىپ دەپ ئات قۇيۇپ ئېنىقلىما بىرىمىز.


void delay(u16 i)  ۋاقىت ئۇزارتىش بۇيرۇقىلار توپلىمى
{
        while(i--);                  3 ۋاقىت ئۇزارتىش توپلىمىنىڭ ئەمەلى بۇيرۇق جەريانى
}


void main() پىروگىرمما باشىلىنىش نۇقىتىسى.
{       
        while(1)  ئايلانما جەريان
        {       
                beep=~beep; كونتىروللىغۇچ1..ئېغىز 5. پۇتىنىڭ قىممىتى تەتۈر يۈلىشكە ئۆزگەرتىمىز.يەنى 0بولسا1غا
1بولسا 0گە.

                delay(10); ۋاقىتنى سۇزۇيمىز. تەخمىنەن 100مىكرو سىكونىت.
        }
}
.ئەگەر ۋاقىت يار بەرسە مەن بۇندىكىن كىيىنكى تەجرىبىلەردە ينەنە نۇرغۇن پىرىنسىپلارنى چۈشەندۈرۈمەن . مەسلەن مەلۇم بىر ساقلىغۇچ. يەنى قاتتىق دىسكغا قانداق قىلىپ ئۇچۇر يېزىش ۋە قاتتىق دىسكىدىكى ئۇچۇرنى ئۇقۇپ كۈچۈرۈش .يەنى باشقا ئۈزەكلەر بىلەن كونتىروللىغۇچنىڭ ئۆزئارا
ئۇچۇر ئالماشتۇرۇش جەريانى. لېد ئېكرانلارنىڭ ئىشلەش پىرىنسىپ ۋە شۇ ئېكراندا ھەرخىل سان سىفىر
رەسىملەرنى كۆرسىتىش جەريانى . ئۈزۈپ ئۇلاش كۇنۇپكىلىرىنىڭ ئىشلەش پىرىنسىپى،ئىنفىرا قىزىل نۇرلۇق تىزگىنەكنىڭ ئىشلەش پىرىنسىپى،ئىلىكىتر ماتورلارنى قوزغۇتۇش ،باشقۇرۇش ،lcd ئېكرانلاردا
سان سىفىرلارنى كۆرسىتىش ،ئۇقۇش ۋە يېزىش مەشغۇلاتى،مىڭ يىلىلىق كالندار ئۈزىكىنى باشقۇرۇش.
ھەرخىل سەزگۈچى ئۈزەكلەر بىلەن ئالاقە قىلىپ تەڭشەش ،مەسلەن يۇرۇقلۇققا سەزگۈر ،نەملىككە سەزگۈر،تىمىپراتۇرغا سەزگۈر بېسىمغا سەزگەر ئۈزەكلەرنىڭ ئىرىشكەن سانلىق مەلۇماتلىرىنى ئۇقۇش ۋە يېزىش ساقلاش.ئۆزگەرتىش ،دىگەندەكلەرنى ئەمەلى پىروگىراممىلار تەجرىبىلەر ئارقىلق چۈشەندۈرىمەن .
10-قەۋەت
bulbulla ۋاقتى: 2017-5-7 16:31:11
قالتىس! !تېمىڭىزنىڭ داۋاملىشىشىغا تېلەكداشمەن.
11-قەۋەت
0903eli ۋاقتى: 7 كۈن بۇرۇن
رەھمەت يوللىغان تېمىڭىزغا.
كىرگەندىن كېيىن ئىنكاس يازالايسىز كىرىش | ئەزا بولۇش

سەھىپە جۇغلانما قائىدىسى

ئالپ تور بېتىدە قانۇنغا خىلاپ، سىياسى، دىنىي ، مىللەتلەر ئىتتپاقلىقىغا بۇزغۇنچىلىق قىلىش خاراكتىردىكى ، سېرىق، شەھۋانىي مەزمۇندىكى يازمىلار، ئۈن-سىن، رەسىملەر چەكلىندۇ

ئالپ تور بېتىدە ۋە ئالپ ئۈندىدار سالونىدا يوللانغان مەزمۇنلار ئالپ تورىغا تەۋە، رۇخسەتسىز كۆچۈرۈپ تارقىتىشقا بولمايدۇ. كۆچۈرۈپ تارقاتقۇچىلار بايقالسا قانۇنى مەسئۇلىيتى سۈرۈشتۈرۈلدۇ

特别警告:本网站坚决不允许发表违反国家法律法规的、含有分裂煽动内容的、引起民族矛盾的、破坏民族团结的、带有宗教色彩或有色情的文章

帖子、图片、音视频、电影、歌曲等。若发现将IP地址上报相关部门处理,后果自负。注意自我保护,谨防上当受骗

快速
回复
返回
列表
返回
顶部