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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4991|回復: 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:1144003 發表于 2025-2-18 22:25 | 只看該作者
運行LED沒有顯示是為啥,請教一下
回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲一区二区av | 色综合天天天天做夜夜夜夜做 | 午夜小电影 | 国产成人高清视频 | 亚洲人成人一区二区在线观看 | 一级欧美日韩 | 91在线免费视频 | 久久精品一 | 日本精品一区二区 | 黄色精品 | 久久久青草 | 成人免费一区二区三区牛牛 | 91在线看网站 | 麻豆91精品91久久久 | 蜜臀久久99精品久久久久久宅男 | 国产成人99 | 亚洲综合视频 | 午夜爱爱网 | 91精品国产色综合久久 | 久久精品97 | 夜夜草导航| 激情欧美日韩一区二区 | 最新黄色毛片 | 91视频网址| 在线看成人av | 国产精品揄拍一区二区 | 欧美日韩高清在线一区 | 天堂素人约啪 | 午夜精品久久久久久久久久久久久 | 黑人巨大精品欧美一区二区一视频 | 久久久久免费 | www国产亚洲精品 | 欧美午夜视频 | 久久久久国产一区二区三区不卡 | 欧美亚洲高清 | 91视频进入 | 欧美国产精品一区二区 | 国产97久久 | 欧美久久久久久 | 国产精品久久久久久久久久久久午夜片 | 天天艹逼网|