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

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

QQ登錄

只需一步,快速開(kāi)始

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

關(guān)于藍(lán)牙模塊的代碼 單片機(jī)中斷能實(shí)現(xiàn)直流電機(jī)調(diào)速嗎?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:202136 發(fā)表于 2017-5-31 11:46 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
100黑幣

下面這塊是讀取溫度的 先不管他 上面的中斷能實(shí)現(xiàn)直流電機(jī)調(diào)速嗎?  我的是普中開(kāi)發(fā)板 電機(jī)應(yīng)該怎么接 是接步進(jìn)電機(jī)上么?能幫我調(diào)通?有紅包感謝

  1. #include <reg51.h>
  2. #define  uchar  unsigned char
  3. #define  uint   unsigned int


  4. sbit PWM=P1^0;
  5. sbit DSPORT=P3^7;


  6. void Ds18b20ReadTemp();
  7. void UsartConfiguration();


  8. unsigned int temp=0;
  9. unsigned char zhuanshu=20;
  10. unsigned int cnt=0;
  11. unsigned char receiveData;
  12. unsigned int dingshi=0;
  13. unsigned char min=1;

  14. void main(void)
  15. {
  16.     unsigned int i=3000;
  17.     UsartConfiguration();
  18. while(1)
  19. {
  20. if(cnt>=3000)
  21. {
  22. cnt=0;
  23. Ds18b20ReadTemp(); //3s檢測(cè)一次溫度
  24. }
  25. switch(receiveData)
  26. {
  27. case 177:ET0=1;zhuanshu=20;receiveData=0;break;          // 數(shù)字1 風(fēng)扇啟動(dòng)
  28. case 178:zhuanshu=0;while(i--);ET0=0;receiveData=0;break;        //數(shù)字2 風(fēng)扇停止 由于IO口默認(rèn)高電平  所以要讓zhuanshu=0
  29. case 179:zhuanshu=30;break;//數(shù)字3 低擋
  30. case 180:zhuanshu=50;break;//數(shù)字4 中擋
  31. case 181:zhuanshu=70;break;// 數(shù)字5高擋
  32. case 182:                  // 數(shù)字6自動(dòng)根據(jù)溫度調(diào)節(jié)轉(zhuǎn)速
  33. {
  34. if(temp<3200)
  35. {
  36.    zhuanshu=25;
  37. }
  38. if((temp>3200)&&(temp<3300))
  39. {
  40.    zhuanshu=30;
  41. }
  42. if((temp>3400)&&(temp<3600))
  43. {
  44.    zhuanshu=50;
  45. }
  46. if((temp>3200)&&(temp<3300))
  47. {
  48.   zhuanshu=60;
  49. }
  50. } break;                  
  51. case 183: //定時(shí)時(shí)間數(shù)字7
  52. {
  53.   static dingshi=0;
  54.    if(dingshi>=60000)  //1分鐘一個(gè)基準(zhǔn)
  55.   {
  56.      min--;
  57. dingshi=0;
  58. if(min==0)
  59. {
  60. ET0=0;
  61. zhuanshu=0;
  62. }
  63.   }
  64.   break;
  65. case 184: receiveData=0;min++;break; //增加時(shí)間  數(shù)字8
  66. case 185: receiveData=0;min--;break; //減少時(shí)間  數(shù)字9
  67. }
  68. }
  69.   }
  70. }
  71.   void UsartConfiguration()
  72. {
  73. SCON=0X50; //設(shè)置為工作方式1
  74. TMOD=0X21; //設(shè)置計(jì)數(shù)器工作方式2
  75. PCON=0X80; //波特率加倍
  76. TH0 = 0xFC;
  77. TL0 = 0x66;
  78. TH1=0XF9;     //計(jì)數(shù)器初始值設(shè)置,注意波特率是9600的
  79. TL1=0XF9;
  80. ET0=1;
  81. ES=1; //打開(kāi)接收中斷
  82. EA=1; //打開(kāi)總中斷
  83. TR1=1;
  84. TR0=1;     //打開(kāi)計(jì)數(shù)器
  85. }




  86.   void Usart() interrupt 4
  87. {
  88. receiveData=SBUF; //出去接收到的數(shù)據(jù)
  89. RI = 0;           //清除接收中斷標(biāo)志位
  90. }


  91. void Time1(void) interrupt 1    //3 為定時(shí)器1的中斷號(hào)  1 定時(shí)器0的中斷號(hào) 0 外部中斷1 2 外部中斷2  4 串口中斷
  92. {
  93.     static unsigned char timer1=0;
  94. TH0 = 0xF6;  //重新賦初值
  95. TL0 = 0x66;
  96. timer1++;
  97.     cnt++;
  98. dingshi++;
  99. if(dingshi>=60050)
  100. {
  101. dingshi=0;
  102. }
  103. if(timer1>100)  //PWM周期為100*0.5ms
  104. {
  105. timer1=0;
  106. }
  107. if(timer1 <zhuanshu)//改變zhunashu這個(gè)值可以改變直流電機(jī)的速度這個(gè)值越大轉(zhuǎn)的越快
  108. {
  109.    PWM=1;
  110. }
  111. else
  112. {
  113.   PWM=0;
  114. }
  115. }


  116. void Delay1ms(uint y) //延時(shí)程序
  117. {
  118. uint x;
  119. for( ; y>0; y--)
  120. {
  121. for(x=110; x>0; x--);
  122. }
  123. }


  124. uchar Ds18b20Init() //溫度的子函數(shù)
  125. {
  126. uchar i;
  127. DSPORT = 0; //將總線拉低480us~960us
  128. i = 70;
  129. while(i--);//延時(shí)642us
  130. DSPORT = 1; //然后拉高總線,如果DS18B20做出反應(yīng)會(huì)將在15us~60us后總線拉低
  131. i = 0;
  132. while(DSPORT) //等待DS18B20拉低總線
  133. {
  134. i++;
  135. if(i>5)//等待>5MS
  136. {
  137. return 0;//初始化失敗
  138. }
  139. Delay1ms(1);
  140. }
  141. return 1;//初始化成功
  142. }






  143. void Ds18b20WriteByte(uchar dat)
  144. {
  145. uint i, j;


  146. for(j=0; j<8; j++)
  147. {
  148. DSPORT = 0;       //每寫(xiě)入一位數(shù)據(jù)之前先把總線拉低1us
  149. i++;
  150. DSPORT = dat & 0x01;  //然后寫(xiě)入一個(gè)數(shù)據(jù),從最低位開(kāi)始
  151. i=6;
  152. while(i--); //延時(shí)68us,持續(xù)時(shí)間最少60us
  153. DSPORT = 1; //然后釋放總線,至少1us給總線恢復(fù)時(shí)間才能接著寫(xiě)入第二個(gè)數(shù)值
  154. dat >>= 1;
  155. }
  156. }






  157. uchar Ds18b20ReadByte()
  158. {
  159. uchar byte, bi;
  160. uint i, j;
  161. for(j=8; j>0; j--)
  162. {
  163. DSPORT = 0;//先將總線拉低1us
  164. i++;
  165. DSPORT = 1;//然后釋放總線
  166. i++;
  167. i++;//延時(shí)6us等待數(shù)據(jù)穩(wěn)定
  168. bi = DSPORT; //讀取數(shù)據(jù),從最低位開(kāi)始讀取
  169. /*將byte左移一位,然后與上右移7位后的bi,注意移動(dòng)之后移掉那位補(bǔ)0。*/
  170. byte = (byte >> 1) | (bi << 7);
  171. i = 4; //讀取完之后等待48us再接著讀取下一個(gè)數(shù)
  172. while(i--);
  173. }
  174. return byte;
  175. }


  176. void  Ds18b20ChangTemp()
  177. {
  178. Ds18b20Init();
  179. Delay1ms(1);
  180. Ds18b20WriteByte(0xcc);//跳過(guò)ROM操作命令
  181. Ds18b20WriteByte(0x44);   //溫度轉(zhuǎn)換命令
  182. // Delay1ms(100);//等待轉(zhuǎn)換成功,而如果你是一直刷著的話,就不用這個(gè)延時(shí)了
  183.    
  184. }




  185. void  Ds18b20ReadTempCom()
  186. {


  187. Ds18b20Init();
  188. Delay1ms(1);
  189. Ds18b20WriteByte(0xcc);//跳過(guò)ROM操作命令
  190. Ds18b20WriteByte(0xbe);//發(fā)送讀取溫度命令
  191. }




  192. void Ds18b20ReadTemp()
  193. {
  194.    float tp;
  195. int temp1 = 0;
  196. uchar tmh, tml;
  197. Ds18b20ChangTemp();//先寫(xiě)入轉(zhuǎn)換命令
  198. Ds18b20ReadTempCom();//然后等待轉(zhuǎn)換完后發(fā)送讀取溫度命令
  199. tml = Ds18b20ReadByte();//讀取溫度值共16位,先讀低字節(jié)
  200. tmh = Ds18b20ReadByte();//再讀高字節(jié)
  201. temp1 = tmh;
  202. temp1 <<= 8;
  203. temp1 |= tml;
  204.    if(temp1< 0)
  205.   {
  206. temp1=temp1-1;
  207. temp1=~temp1;
  208. tp=temp1;
  209. temp1=tp*0.0625*100+0.5;
  210.   }
  211. else
  212.   {
  213. tp=temp1;
  214. temp1=tp*0.0625*100+0.5;
  215. }


  216.   temp=temp1%10000;
  217.    
  218. }

復(fù)制代碼


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

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 91大神在线资源观看无广告 | 日本久久久久久久久 | 99精品视频免费观看 | 在线观看黄色大片 | 久久综合一区二区 | 中文字幕 在线观看 | 国产欧美一区二区在线观看 | 欧美一卡二卡在线 | 欧美日韩电影在线 | 男插女下体视频 | 美女艹b| 欧美精品首页 | 国产91久久精品一区二区 | 精品美女久久久久久免费 | 国产亚洲欧美日韩精品一区二区三区 | 国产精品视频免费观看 | 日日综合 | 国产色 | 亚洲精品456 | 午夜精品一区二区三区在线观看 | 免费一级大片 | 伊人久操 | 日韩中文字幕在线视频 | 国内精品成人 | 亚洲视频一区在线播放 | 欧美一级在线观看 | 国产大片黄色 | 日韩视频―中文字幕 | 99精品视频一区二区三区 | 国产东北一级毛片 | 盗摄精品av一区二区三区 | 亚洲精品字幕 | 成人欧美一区二区三区黑人孕妇 | 欧美老少妇一级特黄一片 | 欧美极品少妇xxxxⅹ免费视频 | 国际精品鲁一鲁一区二区小说 | 欧美日韩不卡合集视频 | 精品久久久999 | 亚洲视频三 | 色.com| 国产一区二区三区免费观看视频 |