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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

這個單片機程序的思路?看不懂

[復制鏈接]
跳轉到指定樓層
樓主
ID:724177 發表于 2020-4-25 21:31 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本人c學的很差,下面是哥們寫的程序,看不懂思路,沒法寫文檔啊,求大佬指點迷津。(stc89c52的恒溫控制系統)下面是主函數。

  1. #include "reg52.h"
  2. #include<stdio.h>
  3. #include "1602.h"
  4. #include "delay.h"
  5. #include "bsp_ds18b20.h"
  6. #include "bsp_key.h"

  7. #define SWITCH_ON  0
  8. #define SWITCH_OFF 1
  9. sbit SWITCH_IO1 = P2^6; //定義降溫開關IO
  10. sbit SWITCH_IO2 = P2^5; //定義升溫開關IO

  11. sbit BEEP = P2^7;//定義蜂鳴器IO
  12. unsigned char Set_temperature = 25; //定義控制溫度變量 初始值25度
  13. bit Set_flag = 0;//定義設置標志位 0是未設置狀態 1是設置狀態

  14. void main()
  15. {
  16.     unsigned char i;
  17.     char buff[20];
  18.     unsigned char key_num = 0;//定義鍵值臨時變量
  19.     float temp = 0;//定義溫度臨時變量
  20.     LCD_Init();           //初始化液晶
  21.     DelayMs(20);          //延時有助于穩定
  22.     LCD_Clear();          //清屏
  23.     Lcd_User_Chr();       //寫入自定義字符
  24.     for(i=0; i<40; i++)//上電啟動讀取40次溫度值
  25.     {
  26.         temp = ds18b20ReadTemperature();//讀取溫度
  27.         DelayMs(10); //延時10ms
  28.     }
  29.     while (1)//進入循環
  30.     {
  31.         temp = ds18b20ReadTemperature();//讀取溫度
  32.         if(temp > 0 && temp < 100)//如果讀取溫度大于0小于100
  33.         {
  34.             Ds18b20_temperature = temp; //溫度賦值      
  35.         }
  36.         /*************顯示溫度**************/
  37.         if(Ds18b20_temperature < 10)
  38.             sprintf(buff,"Temp:  %0.1f", Ds18b20_temperature); //溫度組包
  39.         else
  40.             sprintf(buff,"Temp: %0.1f", Ds18b20_temperature);
  41.         LCD_Write_String(3,0,buff);
  42.         sprintf(buff,"Set : %02d", (int)Set_temperature);
  43.         LCD_Write_String(3,1,buff);//更新顯存
  44.         key_num = keyScan();//讀取鍵值
  45.         if(key_num != 0)//如果鍵值不為0
  46.         {
  47.             switch(key_num)
  48.             {
  49.                 case 1://按鍵1按下
  50.                     Set_flag = !Set_flag;//設置標志位取反 0是未設置狀態 1是設置狀態
  51.                     if(Set_flag == 0)//根據設置標志位顯示箭頭指示
  52.                         LCD_Write_Char(0, 1, ' ');
  53.                     else
  54.                         LCD_Write_Char(0, 1, '>');
  55.                     break;
  56.                 case 2:
  57.                     if(Set_flag == 1)//如果當前狀態為設置狀態
  58.                     {
  59.                         Set_temperature++ ; //溫度+1
  60.                         if(Set_temperature > 99)//最大值限位
  61.                             Set_temperature = 99;
  62.                     }
  63.                     break;
  64.                 case 3:
  65.                     if(Set_flag == 1)//如果當前狀態為設置狀態
  66.                     {
  67.                         Set_temperature--; //溫度-1
  68.                         if(Set_temperature > 99)//最小值限位
  69.                             Set_temperature = 0;
  70.                     }
  71.                     break;                                                              
  72.             }               
  73.         }
  74.         if((int)Ds18b20_temperature == Set_temperature)//如果當前溫度等于設定溫度
  75.         {
  76.             SWITCH_IO1 = SWITCH_OFF;//散熱開關關閉
  77.             SWITCH_IO2 = SWITCH_OFF;//加熱開關關閉
  78.             BEEP = SWITCH_OFF;//蜂鳴器報警關閉
  79.         }
  80.         else if((int)Ds18b20_temperature > Set_temperature)//如果當前溫度大于設定溫度
  81.         {
  82.             SWITCH_IO1 = SWITCH_ON;//散熱開關關閉
  83.             SWITCH_IO2 = SWITCH_OFF;//加熱開關開啟
  84.             BEEP = SWITCH_ON;//蜂鳴器報警開啟
  85.         }
  86.         else if((int)Ds18b20_temperature < Set_temperature)//如果當前溫度小于設定溫度
  87.         {
  88.             SWITCH_IO1 = SWITCH_OFF;//散熱開關關閉
  89.             SWITCH_IO2 = SWITCH_ON;//加熱開關開啟
  90.             BEEP = SWITCH_ON;//蜂鳴器報警開啟
  91.         }

  92.     }
  93. }
復制代碼




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

使用道具 舉報

沙發
ID:462827 發表于 2020-4-26 01:30 | 只看該作者
注釋都寫這么詳細了你還看不懂,那真的是不適合編程。這個還只是簡單地比較然后升降溫,要是PID那你更是看天書了。
回復

使用道具 舉報

板凳
ID:731058 發表于 2020-4-26 02:11 來自觸屏版 | 只看該作者
把c語言的書多看看,多敲就對了
回復

使用道具 舉報

地板
ID:282850 發表于 2020-4-26 15:05 | 只看該作者
你哥們已經良心大大地好了,基本每句都用漢語注釋,其實有1/10的注釋就正常了。
漢語是看不懂呢,還是....?
LCD_Init();           //初始化液晶
   LCD_Clear();          //清屏
這些基本上沒人會注釋。

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲在线免费观看 | 欧美专区在线视频 | 色综合一区二区 | 亚洲综合字幕 | 日韩一级精品视频在线观看 | 欧美一区二区 | 欧美成人一区二免费视频软件 | 国产精品久久久99 | 亚洲一二三区精品 | 精品一区在线免费观看 | 亚洲人人 | 免费观看的av | 91福利电影在线观看 | 成人精品福利 | av黄色在线 | 亚洲一二三区免费 | 国产亚洲精品久久午夜玫瑰园 | 中文字幕在线视频免费视频 | 免费在线看a | 欧美中文字幕一区二区三区亚洲 | 亚洲美女网站 | 欧美视频在线免费 | 特一级黄色毛片 | 91精品国产综合久久福利软件 | 成人免费观看男女羞羞视频 | 免费中文字幕日韩欧美 | 欧美日韩高清一区二区三区 | 夜夜草导航 | 国产高清区 | 成人一区二区三区在线观看 | 日韩在线三级 | 在线播放国产一区二区三区 | 四虎影 | 亚洲国产黄色av | 9久久精品 | 特一级毛片 | 97免费视频在线观看 | 狠狠干美女 | 天堂一区 | 精品一区二区三区91 | 在线男人天堂 |