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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機溫控小風扇程序 溫度調節直流電機轉速

  [復制鏈接]
跳轉到指定樓層
樓主
這是一個用51單片機做的溫控小風扇程序


單片機源程序如下:
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. typedef unsigned char uint8;
  4. typedef unsigned int uint16;
  5. typedef unsigned long uint32;
  6. sbit rs=P2^6;
  7. sbit rw=P2^5;
  8. sbit e=P2^7;
  9. sbit dq=P3^7;
  10. sbit moto=P1^0;        //直流電機
  11. uint8 d[16]="   tempertury   ";
  12. uint8 num[10]="0123456789";
  13. uint8 a,c,temp;
  14. void delay(uint16 i)
  15. {
  16.         while(i--);
  17. }
  18. void wrc(uint8 c)
  19. {
  20.         delay(1000);
  21.         rs=0;
  22.         rw=0;
  23.         e=0;
  24.         P0=c;
  25.         e=1;
  26.         delay(10);
  27.         e=0;
  28. }
  29. void wrd(uint8 dat)
  30. {
  31.         delay(1000);
  32.         rs=1;
  33.         rw=0;
  34.         e=0;
  35.         P0=dat;
  36.         e=1;
  37.         delay(10);
  38.         e=0;
  39.         rs=0;
  40. }
  41. void lcdinit()
  42. {
  43.         delay(1000);
  44.         wrc(0x38);
  45.         wrc(0x38);
  46.         wrc(0x38);
  47.         wrc(0x06);
  48.         wrc(0x0c);
  49.         wrc(0x01);
  50. }
  51. void ds18b20init()                //18b20的初始化
  52. {
  53.         dq=1;
  54.         delay(1);
  55.         dq=0;
  56.         delay(80);
  57.         dq=1;
  58.         delay(5);
  59.         dq=0;
  60.         delay(20);
  61.         dq=1;
  62.         delay(35);
  63. }
  64. void ds18b20wr(uint8 dat)          //18b20寫數據
  65. {
  66.         uint8 i;
  67.         for(i=0;i<8;i++)
  68.         {
  69.                 dq=0;
  70.                 dq=dat&0x01;
  71.                 dat>>=1;
  72.                 delay(8);//在時序上只有這一塊對時序要求最準確,他的時間必須大于15us
  73.                 dq=1;
  74.                 delay(1);
  75.         }       
  76. }
  77. uint8 ds18b20rd()                  //18b20讀數據
  78. {
  79.         uint8 value,i;
  80.         for(i=0;i<8;i++)       
  81.         {
  82.                 dq=0;
  83.                 value>>=1;
  84.                 dq=1;
  85.                 if(dq==1)value|=0x80;
  86.                 delay(8);//在這一塊也對時間要求特別準確,整段程序必須大于60us               
  87.         }
  88.         return value;
  89. }
  90. uint8 readtemp()                          //讀取溫度內需要復位的
  91. {
  92.         uint8 b;
  93.         ds18b20init();                //初始化
  94.         ds18b20wr(0xcc);   //發送忽略ROM指令
  95.         ds18b20wr(0x44);   //發送溫度轉換指令
  96.         delay(100);
  97.         ds18b20init();           //初始化
  98.         ds18b20wr(0xcc);   //發送忽略ROM指令
  99.         ds18b20wr(0xbe);   //發讀暫存器指令
  100.         a=ds18b20rd();         //溫度的低八位
  101.         b=ds18b20rd();         //溫度的高八位
  102.         b<<=4;                         //ssss s***;s為標志位s=0表示溫度值為正數,s=1溫度值為負數
  103.         c=b&0x80;                //溫度正負標志位確認
  104.         b+=(a&0xf0)>>4;
  105.         a=a&0x0f;          //溫度的小數部分
  106.         return b;
  107. }
  108. void display()
  109. {
  110.         uint16 i,k;
  111.         float dio;
  112.         dio=a*0.0625;
  113.         k=dio*10000;//取小數點后兩位有效數字
  114.         wrc(0x80+0x00);
  115.         for(i=0;i<16;i++)
  116.         {
  117.                 wrd(d[i]);
  118.         }
  119.         wrc(0x80+0x43);
  120.         if(c==0x80)        //讀取到負溫度即為補碼,要將其轉換成源碼
  121.         {
  122.                 wrd('-');
  123.                 temp=temp-1;
  124.                 temp=(~temp)|0x80;//負數的補碼即為反碼+1;而負數的反碼為其源碼取反,除了符號位;正數的補碼等于正數的反碼等于正數的源碼
  125.         }       
  126.         else
  127.         {
  128.                 wrd('+');
  129.                 temp=(temp);
  130.         }                       
  131.         wrd(num[temp/100]);
  132.         wrd(num[temp%100/10]);
  133.         wrd(num[temp%100%10]);
  134.         wrd('.');
  135.         wrd(num[k/1000]);
  136.         wrd(num[k%1000/100]);
  137.         wrd(0xdf);
  138.         wrd('C');
  139. }
  140. void motospeed(uint16 i)
  141. {
  142.         while(i--)
  143.         {
  144.                 moto=~moto;
  145.                
  146.         }               
  147. }
  148. void delayms(int i)
  149. {
  150.         while(i--);
  151. }
  152. void time0init()  //定時器0初始化
  153. {
  154.         TMOD=0X01;
  155.         TH0=0Xfc;
  156.         TL0=0X18;  //1ms
  157.         TR0=1;
  158.         EA=1;
  159.         ET0=1;
  160. }
  161. void main()
  162. {
  163.         lcdinit();
  164.         moto=0;
  165.         while(1)
  166.         {
  167.                 //moto=1;
  168.                 temp=readtemp();
  169.                  display();
  170.                 //具體的溫度和速度范圍自己可以設置
  171.                 if(temp>0&&temp<=26) //速度2
  172.                 //        motospeed(1);
  173.                  {
  174. ……………………

  175. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
93.溫度調節直流電機轉速.zip (166.35 KB, 下載次數: 266)


評分

參與人數 1黑幣 +5 收起 理由
chengujian + 5 很給力!

查看全部評分

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

使用道具 舉報

沙發
ID:216457 發表于 2017-7-2 00:04 | 只看該作者
感謝想學學不過新人怎么獲得黑幣?
回復

使用道具 舉報

板凳
ID:207232 發表于 2017-7-2 06:33 來自手機 | 只看該作者
同款開發版
回復

使用道具 舉報

地板
ID:195950 發表于 2017-7-30 16:00 來自手機 | 只看該作者
收藏回家下載看看
回復

使用道具 舉報

5#
ID:335378 發表于 2018-5-26 21:25 | 只看該作者
風扇不轉
回復

使用道具 舉報

6#
ID:431294 發表于 2018-12-10 16:04 | 只看該作者
為什么電機不轉
回復

使用道具 舉報

7#
ID:543832 發表于 2019-5-28 15:45 | 只看該作者
厲害厲害
回復

使用道具 舉報

8#
ID:538517 發表于 2019-5-28 17:31 來自手機 | 只看該作者
厲害,我啥時候能自己寫一個
回復

使用道具 舉報

9#
ID:712041 發表于 2020-4-1 15:54 | 只看該作者
void motospeed(uint16 i)
{
        while(i--)
        {
                moto=~moto;
        }               
}
這個是什么意思啊
回復

使用道具 舉報

10#
ID:785662 發表于 2020-7-9 09:51 | 只看該作者
很實用的小程序
回復

使用道具 舉報

11#
ID:510861 發表于 2020-7-9 11:53 來自手機 | 只看該作者
風扇速度一直不變   咋回事
回復

使用道具 舉報

12#
ID:1049969 發表于 2022-11-28 10:05 | 只看該作者
void motospeed(uint16 i)
{
        while(i--)
        {
                moto=~moto;
               
        }               
}這個是控制電機速度嗎
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一区二区三区在线 | www日本在线 | 日日天天 | 亚洲欧美一区二区三区国产精品 | 黄色成人在线网站 | 精品熟人一区二区三区四区 | 91精品观看| 成人国产在线视频 | 欧美日韩精品专区 | 免费观看黄 | 国产精品揄拍一区二区 | 一区二区三区在线免费观看视频 | 国产一区二区三区久久久久久久久 | 日韩精品一区二区三区视频播放 | 午夜精品久久久久久 | 成人精品一区二区三区中文字幕 | 丁香六月伊人 | 日韩一二三区视频 | 一级午夜aaa免费看三区 | 国产免费播放视频 | 人人射人人插 | 一区欧美 | 国产精品久久久久一区二区三区 | 国产美女精品 | 中文字幕一区二区三区精彩视频 | 国产亚洲精品久久久久久豆腐 | 三级黄色片在线播放 | 最新中文字幕在线播放 | 日韩三级免费网站 | 欧美日韩精品中文字幕 | 天天看天天干 | 亚洲色图图片 | 午夜在线电影网 | 精品一区二区三区中文字幕 | 日韩精品在线免费观看 | 国产精品婷婷 | julia中文字幕久久一区二区 | 精品国产一区二区 | 久久久久久亚洲精品 | 在线视频国产一区 | 黄色毛片在线观看 |