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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4394|回復: 3
打印 上一主題 下一主題
收起左側

簡易小車簡單行駛程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:71259 發(fā)表于 2014-12-30 23:42 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. /* 程序名稱:簡易小車簡單行駛程序
  2. 功    能;用AT89S52、兩個步進電機、紅外線遙控控制小車的簡易行駛
  3. 運行環(huán)境:Keil Uvision2.0
  4. 程序說明:紅外線數據接受部分的程序未寫,變速可用變速箱
  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();//小車啟動函數
  23. void Rstart();//啟動倒退函數
  24. void timestart();//設計計時函數
  25. sbit CTR1=P3^0;//左電機1停止-左轉彎-控制信號
  26. uint T1;//每次左轉彎時間   =T1*50ms
  27. sbit CTR2=P3^1;//右電機2停止-右轉彎-控制信號
  28. uint T2;//每次右轉彎時間   =T2*50ms
  29. uint T3;//每次倒退時間    =T3*50ms
  30. void set(Recieve()); //設置轉彎時間函數
  31. sbit CTR=P3^2;//啟動信號
  32. sbit RCTR=P3^3;//倒退控制信號
  33. void delay();//延遲函數
  34. void _init_();//轉彎中斷初始函數
  35. void Recieve();//紅外線數據接受函數,包括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;}//中斷停止左轉彎
  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;}//中斷停止右轉彎
  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. }
復制代碼


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

使用道具 舉報

沙發(fā)
ID:71259 發(fā)表于 2014-12-30 23:42 | 只看該作者
改進版:
  1. /* 程序名稱:簡易小車簡單行駛程序
  2. 功    能;用AT89S52、兩個步進電機、紅外線遙控控制小車的簡易行駛
  3. 運行環(huán)境:Keil Uvision2.0
  4. 程序說明:紅外線數據接受部分的程序補上,變速可用變速箱
  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();//小車啟動函數
  26. void Rstart();//啟動倒退函數
  27. void timestart();//設計計時函數
  28. sbit CTR1=P3^0;//左電機1停止-左轉彎-控制信號
  29. //uint T1=40;//每次左轉彎時間   =T1*50ms
  30. sbit CTR2=P3^1;//右電機2停止-右轉彎-控制信號
  31. //uint T2=40;//每次右轉彎時間   =T2*50ms
  32. //uint T3=40;//每次倒退時間    =T3*50ms
  33. sbit CTR=P3^2;//啟動信號
  34. sbit RCTR=P3^3;//倒退控制信號
  35. sbit STOP=P3^4;//停止鍵控制信號
  36. void delay();//延遲函數
  37. void _init_();//轉彎中斷初始函數
  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;//紅外接口標志
  46. void Ircordpro()//紅外碼值處理函數
  47. {
  48. uchar i,j,k;
  49. uchar cord,value;
  50. k=1;
  51. for(i=0;i<4;i--)//處理4個字節(jié)
  52. {
  53.   for(j=8;j>0;j--)//處理一個字節(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;//處理完畢標志位置1
  68. }
  69. //******************************************************************
  70. void Ir_work()//紅外鍵值散轉程序
  71. {
  72. switch(IRcord[2])//判斷第三個數碼值
  73. {
  74.   case 0:CTR=1;break;//各鍵實現(xiàn)的功能:小車啟動鍵
  75.   case 1:RCTR=1;break;//小車倒退鍵
  76.   case 3:CTR2=1;break;//小車右轉彎鍵
  77.   case 4:CTR1=1;break;//小車左轉彎鍵
  78.   case 5:STOP=0;break;//小車停止鍵
  79. }
  80. irpro_ok=0;//處理完成標志
  81. }
  82. //******************************************************************
  83. void ex0 () interrupt 0 using 0//外部中斷0服務函數
  84. {
  85. static uchar i;
  86. static bit startflag;
  87. if(startflag)
  88. {
  89.   if(irtime<42&&ritime>=33)//引導碼TC9012的頭碼
  90.   {
  91.    i=0;
  92.    irdata[i]=irtime;//一次存儲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 //定時器1中斷服務函數
  107. {
  108.   irtime++;
  109. }
  110. void RAD_RESERCH();//紅外檢測函數
  111. {
  112.   IT0=1;//外部0中斷開啟
  113.   EX0=1;
  114.      EA=1;
  115.   TMOD=0x11;
  116.   ET1=1;//開啟定時器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();//碼值識別散轉
  128.      }
  129. }
  130. //***************************************************結束
  131. //******************************************************************
  132. void main()
  133. {
  134. while(1)
  135. {//***********************************************紅外控制檢測
  136.      RAD_RESERCH();
  137.       //紅外檢測結束
  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;}//中斷停止左轉彎
  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;}//中斷停止右轉彎
  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. }
復制代碼
回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久精品免费 | 黑人精品 | 免费v片 | www.婷婷| 91视频在线看| 密乳av | 精产国产伦理一二三区 | 亚洲精品一二三区 | 91影院在线观看 | 成人a网| 久久精品毛片 | 国产亚洲精品一区二区三区 | 国产午夜亚洲精品不卡 | 欧美一区免费 | 免费一级欧美在线观看视频 | 亚洲一区二区三区四区五区中文 | 国产一级视屏 | 国产一区二区在线观看视频 | 亚洲欧美成人影院 | 一区精品国产欧美在线 | 国产一级特黄真人毛片 | 四虎海外 | 免费在线看黄 | 国产黄色大片网站 | 国产精品久久国产精品 | 国产日韩一区二区三免费 | 日韩在线欧美 | 欧美日韩一区二区三区不卡视频 | 久久精品高清视频 | 亚洲精品一区二区 | 天天久久 | 亚洲欧美一区二区三区在线 | 91影院在线观看 | 免费av一区二区三区 | 国产精品视频免费观看 | 亚洲精品一区在线观看 | 亚洲最大的黄色网址 | 欧美一区二区三区视频在线 | 中文字幕免费在线 | 久久国产免费看 | 玖草资源 |