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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機溫度控制風扇轉速程序,且溫度在LCD1602上顯示

  [復制鏈接]
跳轉到指定樓層
樓主
ID:721091 發表于 2020-4-26 16:37 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
原理圖如下所示:


源程序如下所示:
  1. #ifndef _DS18B20_H_
  2. #define _DS18B20_H_

  3. /*****************************************************/
  4. /************???????????************************/
  5. uchar DS_init()
  6. {
  7.         uchar state;
  8.         DQ=1;
  9.         delay_1us(8);
  10.         DQ=0;
  11.         delay_1us(80); //??????????4800US
  12.         DQ=1;
  13.         delay_1us(8);
  14.         state=DQ;
  15.         delay(100);        //???
  16.         return state;        //??????1???????????
  17. }
  18. void DS_write_byte(uchar dat)
  19. {
  20.         uchar i;
  21.         for(i=0;i<8;i++)
  22.         {
  23.                 if((dat&0x01)==0)  //д?
  24.                 {
  25.                         DQ=0;
  26.                         delay_1us(5);
  27.                           DQ=1;          //?????????γ?????
  28.                 }
  29.                 else           //д0
  30.                 {
  31.                         DQ=0;
  32.                         delay_1us(1);
  33.                         DQ=1;
  34.                         delay_1us(4);
  35.                 }
  36.                 dat>>=1;
  37.         }
  38. }
  39. uchar DS_read_byte()
  40. {
  41.         uchar i,dat=0;
  42.         for(i=0;i<8;i++)
  43.         {
  44.                 DQ=0;
  45.                 dat>>=1;
  46.                 DQ=1;
  47.                 if(DQ==1)
  48.                         dat|=0x80;
  49.                 else
  50.                         dat|=0x00;
  51.                 delay_1us(30);
  52.                 DQ=1;
  53.         }
  54.         return dat;
  55. }

  56. void DS_read_temperature()
  57. {
  58.         if(DS_init()==1)           //??????1?
  59.                 DS_OK=0;                   //DS_ok=0???????
  60.         else
  61.         {
  62.                 DS_init();
  63.                 DS_write_byte(0xcc);//???????к?
  64.                  DS_write_byte(0x44);  //?????????
  65.                 DS_init();
  66.                 DS_write_byte(0xcc);
  67.                 DS_write_byte(0xbe);//?????????
  68.                 temp_value[1]=DS_read_byte(); //??д??λ??д??λ
  69.                 temp_value[0]=DS_read_byte();
  70.                 alarm_HL[0]=DS_read_byte();        //??????д??λ??д??λ
  71.                 alarm_HL[1]=DS_read_byte();
  72.                 DS_OK=1;
  73.         }
  74. }
  75. void set_alarm_HL()
  76. {
  77.         DS_init();
  78.         DS_write_byte(0xcc);
  79.          DS_write_byte(0x4e);//д??RAM
  80.         DS_write_byte(alarm_HL[0]);         //??д??λ
  81.         DS_write_byte(alarm_HL[1]);
  82.         DS_write_byte(0x7f);
  83.         DS_init();
  84.         DS_write_byte(0xcc);
  85.         DS_write_byte(0x48);//????????ROM
  86. }

  87. void display_temperature()
  88. {
  89.         uchar flag=0;
  90.         if((temp_value[0]&0xf8)==0xf8)
  91.         {
  92.                 flag=1;
  93.                 temp_value[0]=~temp_value[0];
  94.                 temp_value[1]=~temp_value[1]+1;
  95.                 if(temp_value[1]==0x00)
  96.                         temp_value[0]++;
  97.         }
  98.         display_digit[3]=df_tab[temp_value[1]&0x0f];//?С??
  99.         //?????
  100.         current=((temp_value[0]&0x07)<<4)|((temp_value[1]&0xf0)>>4);
  101.         //?ж?????
  102.         sign_temp=flag?-current:current;
  103.         
  104.         LO_alarm=sign_temp<=alarm_HL[1]?1:0;        
  105.         HI_alarm=sign_temp>=alarm_HL[0]?1:0;

  106. /*********???????*************************************/
  107.         display_digit[0]=current/100;
  108.         display_digit[1]=current%100/10;
  109.         display_digit[2]=current%10;
  110. /****?????*********************************************/
  111.         buffer_line2[8]=display_digit[0]+'0';
  112.         buffer_line2[9]=display_digit[1]+'0';
  113.         buffer_line2[10]=display_digit[2]+'0';
  114.         buffer_line2[11]='.';
  115.         buffer_line2[12]=display_digit[3]+'0';
  116. /*********???θ?λ?????*******************************/
  117.         if(display_digit[0]==0)
  118.                 buffer_line2[8]=' ';
  119.         if(display_digit[0]==0&&display_digit[1]==0)
  120.                 buffer_line2[9]=' ';
  121.         if(flag==1)
  122.         {
  123.                 if(buffer_line2[9]==' ')
  124.                         buffer_line2[9]='-';
  125.                 else
  126.                 {
  127.                         if(buffer_line2[8]==' ')
  128.                                 buffer_line2[8]='-';
  129.                          else
  130.                                 buffer_line2[7]='-';
  131.                 }
  132.         }        
  133.         LCD_display(0x00,buffer_line1);
  134.         LCD_display(0x40,buffer_line2);
  135.         LCD_write_cmd(0x80+0x4d);
  136.         LCD_write_data(0x00);
  137.         LCD_write_cmd(0x80+0x4e);
  138.         LCD_write_data('C');         
  139. }


  140. #endif
復制代碼
具體見壓縮包,歡迎交流與批評指正
溫控風扇改進PWM Proteus仿真程序.7z (65.02 KB, 下載次數: 133)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:583422 發表于 2020-6-7 21:37 | 只看該作者
不錯哦不錯,效果ok
回復

使用道具 舉報

板凳
ID:1053638 發表于 2022-11-24 16:07 | 只看該作者
有人能講解一下程序嗎?
回復

使用道具 舉報

地板
ID:1144003 發表于 2025-2-18 22:25 | 只看該作者
運行LED沒有顯示是為啥,請教一下
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 99国产视频 | 欧美不卡 | 91国在线视频 | 99精品视频免费观看 | 久草青青草 | 久久成人免费视频 | 日本成人三级电影 | 日操操夜操操 | 久草网址 | 久久亚洲91| 国产精品久久久爽爽爽麻豆色哟哟 | 在线视频亚洲 | 国产网站在线免费观看 | 成人精品一区二区三区中文字幕 | 成人在线免费视频 | 国产成人精品免高潮在线观看 | 亚洲精品一区中文字幕乱码 | www.一区二区三区 | 欧美福利| 国产视频第一页 | 日韩免费视频一区二区 | 亚洲第一网站 | 风间由美一区二区三区在线观看 | 日韩av在线一区 | 91精品国产一区二区三区 | 午夜视频在线免费观看 | 一级片在线观看视频 | 午夜影院网站 | av三级在线观看 | 国产高清一区 | av大片在线| 97精品超碰一区二区三区 | 国产真实精品久久二三区 | 在线免费观看视频黄 | 久久99网站| 一级毛毛片 | 精品久久久久久一区二区 | 涩涩99| 免费国产一区二区 | 日韩av免费在线电影 | 一区中文|