久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4425|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

簡(jiǎn)易小車簡(jiǎn)單行駛程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:71259 發(fā)表于 2014-12-30 23:42 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  1. /* 程序名稱:簡(jiǎn)易小車簡(jiǎn)單行駛程序
  2. 功    能;用AT89S52、兩個(gè)步進(jìn)電機(jī)、紅外線遙控控制小車的簡(jiǎn)易行駛
  3. 運(yùn)行環(huán)境:Keil Uvision2.0
  4. 程序說明:紅外線數(shù)據(jù)接受部分的程序未寫,變速可用變速箱
  5. 制    作:hankjulianth
  6. */
  7. #include"reg52.h"
  8. #define uint unsigned int
  9. #define uchar unsigned char
  10. uint temp=0x88;
  11. uint temp1=0x08;
  12. uint temp2=0x80;
  13. uint temp3=0x11;
  14. sbit A1=P0^0;
  15. sbit B1=P0^1;
  16. sbit C1=P0^2;
  17. sbit D1=P0^3;
  18. sbit A2=P0^4;
  19. sbit B2=P0^5;
  20. sbit C2=P0^6;
  21. sbit D2=P0^7;
  22. void start();//小車啟動(dòng)函數(shù)
  23. void Rstart();//啟動(dòng)倒退函數(shù)
  24. void timestart();//設(shè)計(jì)計(jì)時(shí)函數(shù)
  25. sbit CTR1=P3^0;//左電機(jī)1停止-左轉(zhuǎn)彎-控制信號(hào)
  26. uint T1;//每次左轉(zhuǎn)彎時(shí)間   =T1*50ms
  27. sbit CTR2=P3^1;//右電機(jī)2停止-右轉(zhuǎn)彎-控制信號(hào)
  28. uint T2;//每次右轉(zhuǎn)彎時(shí)間   =T2*50ms
  29. uint T3;//每次倒退時(shí)間    =T3*50ms
  30. void set(Recieve()); //設(shè)置轉(zhuǎn)彎時(shí)間函數(shù)
  31. sbit CTR=P3^2;//啟動(dòng)信號(hào)
  32. sbit RCTR=P3^3;//倒退控制信號(hào)
  33. void delay();//延遲函數(shù)
  34. void _init_();//轉(zhuǎn)彎中斷初始函數(shù)
  35. void Recieve();//紅外線數(shù)據(jù)接受函數(shù),包括T1、T2、CRT、CRT1、CRT2的狀態(tài)
  36. void main()
  37. {
  38. while(1)
  39. {
  40.   while(CTR)
  41.   {
  42.    set(Recieve());
  43.    start();
  44.    while(CRT1)
  45.    {        //t以毫秒為單位
  46.     _init_();
  47.     P0=temp1;
  48.     temp1>>=1;
  49.     if(temp1==0x0)
  50.     {temp1=0x08;}
  51.     delay();
  52.     if(t==T1)
  53.     {CRT1=0;}//中斷停止左轉(zhuǎn)彎
  54.    }
  55.    while(CRT2)
  56.    {
  57.     _init_();
  58.     P0=temp2;
  59.     temp2>>=1;
  60.     if(temp2==0x0)
  61.     {temp2=0x80;}
  62.     void delay();
  63.     if(t==T2)
  64.     {CRT2=0;}//中斷停止右轉(zhuǎn)彎
  65.    }
  66.    while(RCTR)
  67.    {Rstart();
  68.     if(t==T3)
  69.     {RCTR=0;}//中斷停止倒退
  70.    }
  71.   }
  72.   delay();

  73. }
  74. }
  75. void _init_()
  76. {
  77. TMOD=0x01;
  78. TH0=(65536-50000)/256;
  79. TL0=(65536-50000)%256;
  80. TR0=1;
  81. EA=1;
  82. ET0=1;
  83. t=0;

  84. }
  85. void timer0() interrupt 1
  86. {
  87. TMOD=0x01;
  88. TH0=(65536-50000)/256;
  89. TL0=(65536-50000)%256;
  90. TR0=1;
  91. EA=1;
  92. ET0=1;
  93. t++;

  94. }
  95. void set(Recieve())
  96. {
  97. T1=x;
  98. T2=y;
  99. }
  100. void start()
  101. {
  102. P0=temp;
  103. temp>>=1;
  104. if(temp==0x0)
  105. {temp=0x88;}
  106. }
  107. void Rstart()
  108. {
  109. P0=temp3;
  110. temp3<<=1;
  111. if(temp3==0)
  112. {
  113.   temp1=0x11;
  114. }
  115. }
  116. void delay()
  117. {
  118. uint i,j;
  119. for(i=20;i>0;i--)
  120.   for(j=10;j>0;j--);
  121. }
復(fù)制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:71259 發(fā)表于 2014-12-30 23:42 | 只看該作者
改進(jìn)版:
  1. /* 程序名稱:簡(jiǎn)易小車簡(jiǎn)單行駛程序
  2. 功    能;用AT89S52、兩個(gè)步進(jìn)電機(jī)、紅外線遙控控制小車的簡(jiǎn)易行駛
  3. 運(yùn)行環(huán)境:Keil Uvision2.0
  4. 程序說明:紅外線數(shù)據(jù)接受部分的程序補(bǔ)上,變速可用變速箱
  5. 制    作:hankjulianth
  6. */
  7. #include"reg52.h"
  8. #include"stdio.h"
  9. #include"intrins.h"
  10. #define uint unsigned int
  11. #define uchar unsigned char
  12. uint temp=0x88;
  13. uint temp1=0x08;
  14. uint temp2=0x80;
  15. uint temp3=0x11;
  16. sbit A1=P0^0;
  17. sbit B1=P0^1;
  18. sbit C1=P0^2;
  19. sbit D1=P0^3;
  20. sbit A2=P0^4;
  21. sbit B2=P0^5;
  22. sbit C2=P0^6;
  23. sbit D2=P0^7;
  24. uint t=0;
  25. void start();//小車啟動(dòng)函數(shù)
  26. void Rstart();//啟動(dòng)倒退函數(shù)
  27. void timestart();//設(shè)計(jì)計(jì)時(shí)函數(shù)
  28. sbit CTR1=P3^0;//左電機(jī)1停止-左轉(zhuǎn)彎-控制信號(hào)
  29. //uint T1=40;//每次左轉(zhuǎn)彎時(shí)間   =T1*50ms
  30. sbit CTR2=P3^1;//右電機(jī)2停止-右轉(zhuǎn)彎-控制信號(hào)
  31. //uint T2=40;//每次右轉(zhuǎn)彎時(shí)間   =T2*50ms
  32. //uint T3=40;//每次倒退時(shí)間    =T3*50ms
  33. sbit CTR=P3^2;//啟動(dòng)信號(hào)
  34. sbit RCTR=P3^3;//倒退控制信號(hào)
  35. sbit STOP=P3^4;//停止鍵控制信號(hào)
  36. void delay();//延遲函數(shù)
  37. void _init_();//轉(zhuǎn)彎中斷初始函數(shù)
  38. //*****************************************************************
  39. //紅外控制程序段
  40. //*****************************************************************

  41. unsigned char  irtime;//紅外用全局變量

  42. bit irpro_ok,irok;
  43. unsigned char IRcord[4];
  44. unsigned char   irdata[33];
  45. sbit IR=P3^2;//紅外接口標(biāo)志
  46. void Ircordpro()//紅外碼值處理函數(shù)
  47. {
  48. uchar i,j,k;
  49. uchar cord,value;
  50. k=1;
  51. for(i=0;i<4;i--)//處理4個(gè)字節(jié)
  52. {
  53.   for(j=8;j>0;j--)//處理一個(gè)字節(jié)八位
  54.   {
  55.    cord=irdata[k];
  56.    if(cord>7)//大于某值為1
  57.    {value=value|0x08;}
  58.    else
  59.    {value=value;}
  60.    if(j>0)
  61.    {value=value>>1;}
  62.    k++;
  63.   }
  64. IRcord[i]=value;
  65. value=0;
  66. }
  67. irpro_ok=1;//處理完畢標(biāo)志位置1
  68. }
  69. //******************************************************************
  70. void Ir_work()//紅外鍵值散轉(zhuǎn)程序
  71. {
  72. switch(IRcord[2])//判斷第三個(gè)數(shù)碼值
  73. {
  74.   case 0:CTR=1;break;//各鍵實(shí)現(xiàn)的功能:小車啟動(dòng)鍵
  75.   case 1:RCTR=1;break;//小車倒退鍵
  76.   case 3:CTR2=1;break;//小車右轉(zhuǎn)彎鍵
  77.   case 4:CTR1=1;break;//小車左轉(zhuǎn)彎鍵
  78.   case 5:STOP=0;break;//小車停止鍵
  79. }
  80. irpro_ok=0;//處理完成標(biāo)志
  81. }
  82. //******************************************************************
  83. void ex0 () interrupt 0 using 0//外部中斷0服務(wù)函數(shù)
  84. {
  85. static uchar i;
  86. static bit startflag;
  87. if(startflag)
  88. {
  89.   if(irtime<42&&ritime>=33)//引導(dǎo)碼TC9012的頭碼
  90.   {
  91.    i=0;
  92.    irdata[i]=irtime;//一次存儲(chǔ)32位電平寬度
  93.    irtime=0;
  94.    i++;
  95.    if(i=33)
  96.    {
  97.     irok=1;
  98.     i=0;
  99.    }
  100.   }
  101.   else
  102.   {irtime=0;startflag=1;}
  103. }
  104. }
  105. //******************************************************************
  106. void tim1 (void) interrupt 3 //定時(shí)器1中斷服務(wù)函數(shù)
  107. {
  108.   irtime++;
  109. }
  110. void RAD_RESERCH();//紅外檢測(cè)函數(shù)
  111. {
  112.   IT0=1;//外部0中斷開啟
  113.   EX0=1;
  114.      EA=1;
  115.   TMOD=0x11;
  116.   ET1=1;//開啟定時(shí)器1中斷
  117.   TH1=0;
  118.      TL1=0;
  119.    

  120. if(irok)
  121.    {  
  122.     Ircordpro();//碼值處理
  123.      irok=0;
  124.    }

  125.     if(irpro_ok)//step press key
  126.    {
  127.     Ir_work();//碼值識(shí)別散轉(zhuǎn)
  128.      }
  129. }
  130. //***************************************************結(jié)束
  131. //******************************************************************
  132. void main()
  133. {
  134. while(1)
  135. {//***********************************************紅外控制檢測(cè)
  136.      RAD_RESERCH();
  137.       //紅外檢測(cè)結(jié)束
  138.   while(CTR)
  139.   {
  140.    RAD_RESERCH();
  141.    start();
  142.    while(CTR1)
  143.    {        //t以毫秒為單位
  144.     _init_();
  145.     P0=temp1;
  146.     temp1>>=1;
  147.     if(temp1==0x0)
  148.     {temp1=0x08;}
  149.     delay();
  150.     if(t==40)
  151.     {CTR1=0;t=0;}//中斷停止左轉(zhuǎn)彎
  152.    }
  153.    while(CTR2)
  154.    {
  155.     _init_();
  156.     P0=temp2;
  157.     temp2>>=1;
  158.     if(temp2==0x0)
  159.     {temp2=0x80;}
  160.     void delay();
  161.     if(t==40)
  162.     {CTR2=0;t=0;}//中斷停止右轉(zhuǎn)彎
  163.    }
  164.    while(RCTR)
  165.    {  
  166.     Rstart();
  167.     if(t==40)
  168.     {RCTR=0;t=0;}//中斷停止倒退
  169.    }
  170.   }
  171.   delay();

  172. }
  173. }
  174. void _init_()
  175. {
  176. TMOD=0x11;
  177. TH0=(65536-50000)/256;
  178. TL0=(65536-50000)%256;
  179. TR0=1;
  180. EA=1;
  181. ET0=1;
  182. t=0;

  183. }
  184. void timer0() interrupt 1
  185. {
  186. TMOD=0x01;
  187. TH0=(65536-50000)/256;
  188. TL0=(65536-50000)%256;
  189. TR0=1;
  190. EA=1;
  191. ET0=1;
  192. t++;

  193. }
  194. void start()
  195. {
  196. P0=temp;
  197. temp>>=1;
  198. if(temp==0x0)
  199. {temp=0x88;}
  200. }
  201. void Rstart()
  202. {
  203. P0=temp3;
  204. temp3<<=1;
  205. if(temp3==0)
  206. {
  207.   temp1=0x11;
  208. }
  209. }
  210. void delay()
  211. {
  212. uint i,j;
  213. for(i=20;i>0;i--)
  214.   for(j=10;j>0;j--);
  215. }
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

板凳
ID:72053 發(fā)表于 2015-1-12 13:09 | 只看該作者
研究研究
回復(fù)

使用道具 舉報(bào)

地板
ID:72425 發(fā)表于 2015-1-18 10:50 | 只看該作者
ZHENHAO
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 精品国产乱码久久久久久88av | a久久久久久| 免费精品 | 精品视频一区二区 | 国产二区精品视频 | 亚洲 欧美 综合 | 日韩精品1区2区3区 成人黄页在线观看 | 成人一区二区在线 | 日韩毛片免费视频 | 91在线免费视频 | 国产精品久久久久久吹潮日韩动画 | 视频二区在线观看 | 国产精品极品美女在线观看免费 | 亚洲国产精品一区二区第一页 | 亚洲精品久久嫩草网站秘色 | 久久久久久电影 | 麻豆一区二区三区精品视频 | 亚洲视频免费在线 | jav成人av免费播放 | 999久久久久久久久6666 | 亚洲精品中文字幕在线 | www.一区二区三区 | 在线免费中文字幕 | 鸡毛片 | 在线观看 亚洲 | 日韩久久久一区二区 | 国产91在线视频 | 97久久精品午夜一区二区 | 久久综合一区二区 | 久久黄色网 | 国产日韩精品一区 | 成人黄在线观看 | 精品国产乱码久久久久久蜜柚 | 夜夜骑首页| 国产精品久久国产精品99 | 欧美日韩亚洲二区 | 日韩有码在线观看 | 欧美在线一区二区三区 | 国产精品18久久久久久白浆动漫 | 欧美久久精品一级黑人c片 91免费在线视频 | 福利av在线|