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

QQ登錄

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

搜索
查看: 9398|回復(fù): 18
收起左側(cè)

單片機(jī)溫度采集系統(tǒng)整套完整資料下載 PCB 原理圖 程序 適合新手學(xué)習(xí)

  [復(fù)制鏈接]
ID:198756 發(fā)表于 2017-5-9 18:12 | 顯示全部樓層 |閱讀模式
里面是一整套,系統(tǒng)由單片機(jī)STC89C52、液晶顯示模塊LCD1602、溫度檢測(cè)模塊、按鍵模塊、報(bào)警模塊、加熱模塊、冷卻模塊所組成。系統(tǒng)能完成以下功能,系統(tǒng)采用DS18B20對(duì)溫度進(jìn)行檢測(cè),并且能在LCD1602上實(shí)時(shí)顯示溫度。用戶可以通過(guò)按鍵設(shè)置上限和下限溫度,當(dāng)溫度超過(guò)上限溫度時(shí),系統(tǒng)通過(guò)繼電器使冷卻器件導(dǎo)通工作,當(dāng)溫度低于下限溫度時(shí),系統(tǒng)通過(guò)繼電器使加熱器件工作。當(dāng)溫度在上限和下限之間時(shí)維持原狀態(tài)。
0.png

PPT模板(非本設(shè)計(jì)僅供參考)
仿真(使用PROTEUS軟件打開(kāi)文件里面后綴為DSN的文件)
元件清單
原理圖和PCB(使用PROTEL軟件打開(kāi)文件里面后綴為SCH和PCB的文件)
外文翻譯
程序(使用KEIL軟件打開(kāi)文件里面后綴為uvproj的文件)
系統(tǒng)簡(jiǎn)介
芯片資料

0.png 0.png

仿真(使用PROTEUS軟件打開(kāi)文件里面后綴為DSN的文件)
1.雙擊圖中間的單片機(jī)會(huì)出現(xiàn)以下界面
0.png

2.點(diǎn)擊ProgramFile一欄的文件夾圖標(biāo)。找到跟仿真文件同一個(gè)文件夾里面的”仿真中需要加載的程序.hex”,并點(diǎn)擊打開(kāi)按鍵。
0.png

3點(diǎn)擊下面第一個(gè)按鈕便可運(yùn)行成功。
0.png

  
題目名稱
  
基于單片機(jī)的溫度控制系統(tǒng)






  
一、選題的目的和意義:
  
溫度控制無(wú)論是在工業(yè)生產(chǎn)過(guò)程中,還是在日常生活中都起著非常重要的作用,過(guò)低的溫度或過(guò)高的溫度都會(huì)使資源失去應(yīng)有的作用,從而造成資源的巨大浪費(fèi)。特別是在當(dāng)前全球資源極度缺乏的情況下,我們更應(yīng)該掌握好對(duì)溫度的控制,把身邊的資源好好地利用起來(lái)。
  
在計(jì)算機(jī)沒(méi)有發(fā)明之前,這些控制都是我們難以想象的。而當(dāng)今,隨著電子行業(yè)的迅猛發(fā)展,計(jì)算機(jī)技術(shù)和傳感器技術(shù)的不斷改進(jìn),而且計(jì)算機(jī)和傳感器的價(jià)格也日益降低,可靠性逐步提高,用信息技術(shù)來(lái)實(shí)現(xiàn)溫度控制并提高控制的精確度不僅是可以達(dá)到的而且是可以實(shí)現(xiàn)的,用高新技術(shù)解決生活用電問(wèn)題,實(shí)施對(duì)溫度控制已經(jīng)成為我們電子行業(yè)的任務(wù),以此來(lái)加強(qiáng)工業(yè)化建設(shè),提高人民的生活水平。
  
溫度控制在實(shí)際生活中有一定的實(shí)際意義,在工業(yè)生產(chǎn)中有著較為廣泛的應(yīng)用,用單片機(jī)實(shí)現(xiàn)自適應(yīng)控制,彌補(bǔ)了傳統(tǒng)  PID控制結(jié)構(gòu)在特定場(chǎng)合下性能下降的不足,設(shè)計(jì)了一套實(shí)用的溫度測(cè)控系統(tǒng),使它在不同時(shí)間常數(shù)下均可以達(dá)到技術(shù)指標(biāo)。此外還有效減少了輸出繼電器的開(kāi)關(guān)次數(shù),適用于環(huán)境參數(shù)經(jīng)常變化的小型溫度控制系統(tǒng)。例如:在冶金工業(yè)、化工生產(chǎn)、電力工程、造紙行業(yè)、機(jī)械制造和食品加工等諸多領(lǐng)域中,人們都需要對(duì)各類加熱爐、熱處理爐、反應(yīng)爐和鍋爐中的溫度進(jìn)行檢測(cè)和控制。雖然溫度控制系統(tǒng)的制作方案有很多,但是經(jīng)過(guò)對(duì)比各個(gè)方案的優(yōu)劣,還是采用單片機(jī)更好,因?yàn)椴捎脝纹瑱C(jī)來(lái)對(duì)溫度進(jìn)行控制,不僅具有控制方便、組態(tài)簡(jiǎn)單和靈活性大等優(yōu)點(diǎn),而且可以大幅度提高被控溫度的技術(shù)指標(biāo),從而能夠大大提高產(chǎn)品的質(zhì)量和數(shù)量
  
  
二、研究概況及發(fā)展趨勢(shì)綜述
  
國(guó)內(nèi)現(xiàn)狀:
  
我國(guó)對(duì)于溫度控制技術(shù)的研究較晚,始于20世紀(jì)80年代。我國(guó)工程技術(shù)人員在吸收發(fā)達(dá)國(guó)家溫度控制技術(shù)的基礎(chǔ)上,才掌握了溫度室內(nèi)微機(jī)控制技術(shù),該技術(shù)僅限于對(duì)溫度的單項(xiàng)環(huán)境因子的控制。溫度控制設(shè)施計(jì)算機(jī)應(yīng)用,在總體上正從消化吸收、簡(jiǎn)單應(yīng)用階段向?qū)嵱没⒕C合性應(yīng)用階段過(guò)渡和發(fā)展。在技術(shù)上,以單片機(jī)控制的單參數(shù)單回路系統(tǒng)居多,尚無(wú)真正意義上的多參數(shù)綜合控制系統(tǒng),與發(fā)達(dá)國(guó)家相比,存在較大差距。我國(guó)溫度控制控制現(xiàn)狀還遠(yuǎn)遠(yuǎn)沒(méi)有達(dá)到工廠化的程度,生產(chǎn)實(shí)際中仍然有許多問(wèn)題困擾著我們,如軟硬件資源不能共享和可靠性比較差。
  
國(guó)外現(xiàn)狀:
  
國(guó)外對(duì)溫度控制技術(shù)研究較早,始于20世紀(jì)70年代。先是采用模擬式的組合儀表,采集現(xiàn)場(chǎng)信息并進(jìn)行指示、記錄和控制。80年代末出現(xiàn)了分布式控制系統(tǒng)。目前正開(kāi)發(fā)和研制計(jì)算機(jī)數(shù)據(jù)采集控制系統(tǒng)的多因子綜合控制系統(tǒng),F(xiàn)在世界各國(guó)的溫度控制技術(shù)發(fā)展很快,一些國(guó)家在實(shí)現(xiàn)自動(dòng)化的基礎(chǔ)上正向著完全自動(dòng)化、無(wú)人化的方向發(fā)展。
  
隨著科學(xué)技術(shù)的飛速發(fā)展,帶動(dòng)社會(huì)生產(chǎn)的發(fā)展,自動(dòng)控制系統(tǒng)在各個(gè)領(lǐng)域尤其是工業(yè)領(lǐng)域中有著及其廣泛的應(yīng)用,溫度控制是控制系統(tǒng)中最為常見(jiàn)的控制類型之一。隨著單片機(jī)技術(shù)的飛速發(fā)展,通過(guò)單片機(jī)對(duì)被控對(duì)象進(jìn)行控制日益成為今后自動(dòng)控制領(lǐng)域的一個(gè)重要發(fā)展方向,電流、電壓、溫度、壓力、流量、流速和開(kāi)關(guān)量都是常用的主要被控參數(shù)
  
  
三、研究目標(biāo)、研究?jī)?nèi)容和擬解決的關(guān)鍵問(wèn)題
  
研究目標(biāo)
  
本設(shè)計(jì)主要采用MCS-51系列單片機(jī)作為主控芯片,能夠?qū)崿F(xiàn)溫度控制,數(shù)據(jù)顯示,參數(shù)設(shè)置等功能。
  
研究?jī)?nèi)容:
  
根據(jù)以上設(shè)計(jì)需要,系統(tǒng)擬采用以下技術(shù)方案,系統(tǒng)的結(jié)構(gòu)框圖如下圖所示。
0.png
圖1 系統(tǒng)結(jié)構(gòu)框圖
  
系統(tǒng)由單片機(jī)STC89C52、液晶顯示模塊LCD1602、溫度檢測(cè)模塊、按鍵模塊、報(bào)警模塊、加熱模塊、冷卻模塊所組成。系統(tǒng)能完成以下功能,系統(tǒng)采用DS18B20對(duì)溫度進(jìn)行檢測(cè),并且能在LCD1602上實(shí)時(shí)顯示溫度。用戶可以通過(guò)按鍵設(shè)置上限和下限溫度,當(dāng)溫度超過(guò)上限溫度時(shí),系統(tǒng)通過(guò)繼電器使冷卻器件導(dǎo)通工作,當(dāng)溫度低于下限溫度時(shí),系統(tǒng)通過(guò)繼電器使加熱器件工作。當(dāng)溫度在上限和下限之間時(shí)維持原狀態(tài)。
  
擬解決的關(guān)鍵問(wèn)題:
  
1、完成鍵盤的設(shè)計(jì),分配好各個(gè)按鍵輸入對(duì)應(yīng)單片機(jī)各口的控制信息;
  
2、完成LCD顯示電路的設(shè)計(jì),實(shí)現(xiàn)具體的控制、提示信息的顯示;
  
3、完成溫度檢測(cè)電路的設(shè)計(jì),使其能夠準(zhǔn)確溫度值;
  
  
四、研究的基本思路和方法、技術(shù)路線、實(shí)驗(yàn)方案及可行性分析
  
研究的基本思路和方法:
  
1、確定硬件系統(tǒng)的設(shè)計(jì)方案:
  
(1)、根據(jù)系統(tǒng)的功能要求確定選用的元器件;
  
(2)、分配單片機(jī)各個(gè)P口地址,以連接對(duì)應(yīng)的元器件,方便控制;
  
(3)、利用protel軟件構(gòu)建系統(tǒng)的硬件圖;
  
2、確定軟件部分的設(shè)計(jì)方案:
  
(1)、確定各部分模塊對(duì)應(yīng)要實(shí)現(xiàn)的功能,并根據(jù)連接圖寫出對(duì)應(yīng)程序中對(duì)應(yīng)的控制信息,便于軟件編寫;
  
(2)、用keil軟件編寫程序,對(duì)應(yīng)各模塊功能模塊化編寫,便于程序的檢查和調(diào)試;
  
3、利用keil軟件生成hex文件,用PROTEL軟件繪制電路圖
  
4、依照電路圖,在電路板上焊接各元件,完成系統(tǒng)實(shí)物設(shè)計(jì);
  
5、將焊好的電路板反復(fù)進(jìn)行硬件調(diào)試和系統(tǒng)整體調(diào)試,直到實(shí)現(xiàn)系統(tǒng)要求的預(yù)定功能。
  
技術(shù)路線、實(shí)驗(yàn)方案及可行性分析:
  
1、設(shè)計(jì)用到的設(shè)備和軟件:
  
主要設(shè)備:電腦、單片機(jī)燒寫器
  
軟件:Protel仿真軟件、keil軟件
  
2、利用學(xué)習(xí)過(guò)的模擬電子技術(shù)、數(shù)字電路技術(shù)、單片機(jī)原理與應(yīng)用等知識(shí),了解溫度控制的原理,并選用合適的元器件和系統(tǒng)設(shè)計(jì)方案。
  
   
  

單片機(jī)源程序:

  1. //-----------------------------------------------------------------------
  2. //功能說(shuō)明:使用DS18B20測(cè)量室內(nèi)溫度,并將它顯示在1602液晶上。 核心:AT89S52
  3. //連接框圖:       ___________________

  4. #include <reg52.h>

  5. //端口及函數(shù)聲明---------------------------------------------------------
  6. sbit   LCD_RS=P1^0;          //片選信號(hào)
  7. sbit   LCD_RW=P1^1;          //讀寫信號(hào)
  8. sbit   LCD_E=P1^2;           //使能信號(hào)
  9. sbit   DQ = P2^2;
  10. sbit   BEEP=P1^3;   //高電平亮燈,超過(guò)設(shè)定值
  11. sbit   RED = P2^0;
  12. sbit   GREEN = P2^1;
  13. sbit   Key_2 = P1^4;  //按一次出現(xiàn)H 30,可以進(jìn)行上限溫度設(shè)置 按兩次出現(xiàn)L 20,可以進(jìn)行下限溫度設(shè)置  按第三次恢復(fù)溫度顯示
  14. sbit   Key_3 = P1^5;  //增加鍵,可以對(duì)上限溫度或下限溫度進(jìn)行增大調(diào)整
  15. sbit   Key_4 = P1^6;  //減小鍵,可以對(duì)下限溫度或下限溫度進(jìn)行減小調(diào)整

  16. #define LCD_DB        P0        //LCD1602數(shù)據(jù)信號(hào)
  17. #define LocationX  0                //橫排的位置,即X得坐標(biāo)值 取值范圍0~15
  18. #define LocationY  1                //豎排的位置,即Y得坐標(biāo)值 取值范圍為 2,1

  19. unsigned char code dis_char[]={"Temperature is"};
  20. unsigned char code dis_char1[]={"Htemp=      C    "};
  21. unsigned char code dis_char2[]={"Ltemp=      C    "};

  22. //LCD1602函數(shù)定義
  23. void LCD_init(void);                                                   //LCD1602初始化函數(shù)   
  24. void LCD_write_command(unsigned char command);                         //LCD1602寫指令函數(shù)         
  25. void LCD_write_data(unsigned char dat);                                //LCD1602寫數(shù)據(jù)函數(shù)           
  26. void LCD_disp_char(unsigned char x,unsigned char y,unsigned char dat); //在某個(gè)屏幕位置上顯示一個(gè)字符,X(0-15),y(1-2)
  27. void delay_n40us(unsigned int n);                                      //延時(shí)函數(shù)         

  28. //DS18B20函數(shù)定義
  29. void delayms(unsigned int z);                    //延時(shí)(z)毫秒  
  30. void SetReset(void);                         //產(chǎn)生復(fù)位信號(hào)
  31. void CheckReply(void);                       //檢測(cè)器件應(yīng)答信號(hào)
  32. bit MainReadBit(void);                       //從總線讀一個(gè)bit
  33. unsigned char MainReadByte(void);            //從總線讀一個(gè)字節(jié)  
  34. void MainWriteByte(unsigned char dat);       //向總線寫一個(gè)字節(jié)  
  35. void StartConvertTemperature(void);          //啟動(dòng)一次溫度轉(zhuǎn)換  
  36. unsigned long int  ReadTemperature(void);         //讀取溫度數(shù)據(jù)

  37. unsigned char H_temp = 50,L_temp = 20;
  38. unsigned char flag_h=0,flag_l=0,count_key2 = 0;


  39. unsigned char TempBuffer[5];
  40. unsigned char temp_value;
  41. //--------------------------------------------------------------------***


  42. //子函數(shù)-----------------------------------------------------------------

  43. //----------------------------------------
  44. //LCD1602 延時(shí)函數(shù)
  45. void delay_n40us(unsigned int n)                 
  46. {
  47.         unsigned int i;
  48.         unsigned char j;            
  49.         for(i=n;i>0;i--)
  50.         for(j=0;j<2;j++);         
  51. }
  52. //----------------------------------------                                       
  53. //LCD1602液晶初始化函數(shù)
  54. void LCD_init(void)         
  55. {
  56.         LCD_write_command(0x38);//設(shè)置8位格式,2行,5x7
  57.         LCD_write_command(0x38);//設(shè)置8位格式,2行,5x7
  58.         LCD_write_command(0x38);//設(shè)置8位格式,2行,5x7         切記要寫三遍!。。
  59.         LCD_write_command(0x0c);//整體顯示,關(guān)光標(biāo),不閃爍
  60.         LCD_write_command(0x06);//設(shè)定輸入方式,增量不移位
  61.         LCD_write_command(0x01);//清除屏幕顯示         
  62.         delay_n40us(100);       //清屏延時(shí)
  63. }
  64. //----------------------------------------
  65. //LCD1602寫命令函數(shù)
  66. void LCD_write_command(unsigned char dat)  
  67. {
  68.         LCD_DB=dat;
  69.         LCD_RS=0;//指令         
  70.         LCD_RW=0;//寫入         
  71.         LCD_E=1; //使能         
  72.         LCD_E=0;
  73.         delay_n40us(1);//寫命令延時(shí)   
  74. }         
  75. //----------------------------------------
  76. //LCD1602寫數(shù)據(jù)函數(shù)
  77. void LCD_write_data(unsigned char dat)         
  78. {
  79.         LCD_DB=dat;
  80.         LCD_RS=1;//數(shù)據(jù)         
  81.         LCD_RW=0;//寫入         
  82.         LCD_E=1;//使能  
  83.         LCD_E=0;
  84.         delay_n40us(1);         //寫數(shù)據(jù)延時(shí)
  85. }
  86. //----------------------------------------
  87. //LCD1602顯示一個(gè)字符  
  88. void LCD_disp_char(unsigned char x,unsigned char y,unsigned char dat)
  89. {
  90.         unsigned char address;
  91.         if(y==1)
  92.                  address=0x80+x;         //顯示在第一排的時(shí)候的x的地址
  93.         else
  94.                  address=0xc0+x;         //顯示在第二排的時(shí)候的x的地址
  95.         LCD_write_command(address);         //輸入地址
  96.         LCD_write_data(dat);                 //輸入數(shù)據(jù)
  97. }


  98. //*****************************************

  99. //----------------------------------------
  100. //毫秒延時(shí)函數(shù)
  101. void delayms(unsigned int z)
  102. {
  103.         unsigned int x,y;
  104.         for(x = z ; x>0 ; x--)
  105.                 for(y = 110; y>0 ; y--);
  106. }


  107. /***********ds18b20子程序*************************/

  108. /***********ds18b20延遲子函數(shù)(晶振12MHz )*******/

  109. void delay_18B20(unsigned int i)
  110. {
  111.         while(i--);
  112. }

  113. /**********ds18b20初始化函數(shù)**********************/

  114. void Init_DS18B20(void)
  115. {
  116.          unsigned char x=0;
  117.          DQ = 1;          //DQ復(fù)位
  118.          delay_18B20(8);  //稍做延時(shí)
  119.          DQ = 0;          //單片機(jī)將DQ拉低
  120.          delay_18B20(80); //精確延時(shí) 大于 480us
  121.          DQ = 1;          //拉高總線
  122.          delay_18B20(14);
  123.          x=DQ;            //稍做延時(shí)后 如果x=0則初始化成功 x=1則初始化失敗
  124.          delay_18B20(20);
  125. }

  126. /***********ds18b20讀一個(gè)字節(jié)**************/  

  127. unsigned char ReadOneChar(void)
  128. {
  129.         unsigned char i=0;
  130.         unsigned char dat = 0;
  131.         for (i=8;i>0;i--)
  132.          {
  133.                   DQ = 0; // 給脈沖信號(hào)
  134.                   dat>>=1;
  135.                   DQ = 1; // 給脈沖信號(hào)
  136.                   if(DQ)
  137.                   dat|=0x80;
  138.                   delay_18B20(4);
  139.          }
  140.          return(dat);
  141. }

  142. /*************ds18b20寫一個(gè)字節(jié)****************/  

  143. void WriteOneChar(unsigned char dat)
  144. {
  145.          unsigned char i=0;
  146.          for (i=8; i>0; i--)
  147.          {
  148.                   DQ = 0;
  149.                  DQ = dat&0x01;
  150.             delay_18B20(5);
  151.                  DQ = 1;
  152.             dat>>=1;
  153. }
  154. }

  155. /**************讀取ds18b20當(dāng)前溫度************/

  156. void ReadTemp(void)
  157. {
  158.         unsigned char a=0;
  159.         unsigned char b=0;
  160.         unsigned char t=0;

  161.         Init_DS18B20();
  162.         WriteOneChar(0xCC);            // 跳過(guò)讀序號(hào)列號(hào)的操作
  163.         WriteOneChar(0x44);         // 啟動(dòng)溫度轉(zhuǎn)換

  164.         delay_18B20(100);       // this message is wery important

  165.         Init_DS18B20();
  166.         WriteOneChar(0xCC);         //跳過(guò)讀序號(hào)列號(hào)的操作
  167.         WriteOneChar(0xBE);         //讀取溫度寄存器等(共可讀9個(gè)寄存器) 前兩個(gè)就是溫度

  168.         delay_18B20(100);

  169.         a=ReadOneChar();            //讀取溫度值低位
  170.         b=ReadOneChar();                   //讀取溫度值高位
  171.         temp_value=b<<4;
  172.         temp_value+=(a&0xf0)>>4;               
  173. }
  174. void temp_to_str()   //溫度數(shù)據(jù)轉(zhuǎn)換成液晶字符顯示
  175. {
  176.   TempBuffer[0]=temp_value/10+'0';  //十位
  177.   TempBuffer[1]=temp_value%10+'0';  //個(gè)位
  178.   TempBuffer[2]=0xdf;   //溫度符號(hào)
  179.   TempBuffer[3]='C';
  180.   TempBuffer[4]='\0';
  181. }

  182. void display_1(void)
  183. {
  184.         unsigned char j =0,ge=0,shi=0,bai=0;
  185.         unsigned long int last = 0;
  186.         int temp=0;
  187.         for(j=0;j<14;j++)
  188.         {
  189.                 LCD_disp_char(j,1,dis_char[j]);
  190.         }        
  191.         ReadTemp();                    //開(kāi)啟溫度采集程序
  192.     temp_to_str();                 //溫度數(shù)據(jù)轉(zhuǎn)換成液晶字符
  193. //  LCDDispString(0,1,TempBuffer);
  194.         temp = (TempBuffer[0]-'0')*10+(TempBuffer[1]-'0');
  195.         LCD_disp_char(5,2,(temp/10+48));
  196.         LCD_disp_char(6,2,(temp%10+48));

  197.         LCD_disp_char(8,2,0xdf);
  198.         LCD_disp_char(9,2,'C');

  199.         
  200.         if(temp >H_temp)
  201.         {
  202.                 BEEP = 0;
  203.                 RED=1;
  204.                 GREEN=0;
  205.         }
  206.         else if        ( temp < L_temp)
  207.         {
  208.                 BEEP=0;
  209.                 GREEN=1;
  210.                 RED=0;
  211.         }
  212.         else
  213.         {
  214.                 BEEP = 1;RED=1;
  215.                 GREEN=1;
  216.         }
  217. }

  218. void display_2(void)
  219. {
  220.           unsigned char j =0;unsigned char ge=0,shi=0;
  221.         for(j=0;j<16;j++)
  222.         {
  223.                 LCD_disp_char(j,1,dis_char1[j]);
  224.                 LCD_disp_char(j,2,dis_char2[j]);
  225.         }
  226.         LCD_disp_char(11,1,0xdf); LCD_disp_char(11,2,0xdf);
  227.         ge = H_temp%10;
  228.         shi = H_temp/10;
  229.     LCD_disp_char(7,1,(shi+48));  LCD_disp_char(8,1,(ge+48));

  230.         ge = L_temp%10;
  231.         shi = L_temp/10;
  232.     LCD_disp_char(7,2,(shi+48));  LCD_disp_char(8,2,(ge+48));

  233. }

  234. void key_scan(void)
  235. {
  236.         unsigned char ge=0,shi=0;
  237.         P1 |= 0x80;                                   //每次掃描前,先將接鍵盤的引腳口拉高
  238.         if(Key_2 == 0)                           //同上,判斷第二個(gè)按鍵情況
  239.         {
  240.                 delayms(10);
  241.                 if(Key_2 == 0)
  242.                 {
  243.                 //        display_2();
  244.                         count_key2++;
  245.                         if(count_key2 == 1)
  246.                         {
  247.                                 display_2();
  248.                                 flag_h = 1;
  249.                                 flag_l = 0;
  250.                                 LCD_disp_char(15,1,35);
  251.                         }
  252.                         else if(count_key2 == 2)
  253.                         {
  254.                                 display_2();
  255.                                 flag_l = 1;
  256.                                 flag_h = 0;
  257.                                 LCD_disp_char(15,2,35);        
  258.                         }
  259.                         else if(count_key2 == 3)
  260.                         {
  261.                                 flag_l = 0;
  262.                                 flag_h = 0;
  263.                                 LCD_init();
  264.                                 display_1();
  265.                                 count_key2=0;
  266.                         }
  267.                         while(!Key_2);
  268.                 }
  269.         }
  270.         if(Key_3 == 0)                           //增加鍵
  271.         {
  272.                 delayms(10);
  273.                 if(Key_3 == 0)
  274.                 {
  275.                         if(flag_h ==1)
  276.                         {
  277.                             H_temp++;
  278.                                 ge = H_temp%10;
  279.                                 shi = H_temp/10;
  280.                                 LCD_disp_char(7,1,(shi+48));
  281.                                 LCD_disp_char(8,1,(ge+48));
  282.                         }        
  283.                         else if(flag_l == 1)
  284.                         {
  285.                             L_temp++;
  286.                             ge = L_temp%10;
  287.                                 shi = L_temp/10;
  288.                                 LCD_disp_char(7,2,(shi+48));
  289.                                 LCD_disp_char(8,2,(ge+48));
  290.                         }
  291.                                 
  292.                         while(!Key_3);
  293.                 }
  294.         }
  295.         if(Key_4 == 0)                           //減少鍵
  296.         {
  297.                 delayms(10);
  298.                 if(Key_4 == 0)
  299.                 {
  300.                         if(flag_h ==1)
  301.                         {
  302.                                 H_temp--;
  303.                                   ge = H_temp%10;
  304.                                 shi = H_temp/10;
  305.                                 LCD_disp_char(7,1,(shi+48));
  306.                                 LCD_disp_char(8,1,(ge+48));
  307.                         }        
  308.                         else if(flag_l == 1)
  309.                         {
  310.                             L_temp--;
  311.                                 ge = L_temp%10;
  312.                                 shi = L_temp/10;
  313.                                 LCD_disp_char(7,2,(shi+48));
  314.                                 LCD_disp_char(8,2,(ge+48));
  315.                         }
  316.                                 
  317.                         while(!Key_4);
  318.                 }
  319.         }        
  320. }
  321. //--------------------------------------------------------------------***


  322. //主函數(shù)-----------------------------------------------------------------
  323. void main(void)
  324. {
  325.         unsigned int ge=0,shi=0,bai=0;
  326.         LCD_init();



  327. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料打包下載:
11基于單片機(jī)的溫度控制系統(tǒng).rar (3.88 MB, 下載次數(shù): 257)


評(píng)分

參與人數(shù) 1黑幣 +5 收起 理由
cddcad + 5 贊一個(gè)!

查看全部評(píng)分

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

ID:1 發(fā)表于 2017-5-9 18:32 | 顯示全部樓層
好資料,51黑有你更精彩。
回復(fù)

使用道具 舉報(bào)

ID:64138 發(fā)表于 2017-5-10 15:22 | 顯示全部樓層
正在學(xué)習(xí)中。正在學(xué)習(xí)中。
回復(fù)

使用道具 舉報(bào)

ID:195280 發(fā)表于 2017-5-27 13:48 | 顯示全部樓層
看起來(lái)不錯(cuò)的樣子,學(xué)習(xí)一下
回復(fù)

使用道具 舉報(bào)

ID:193061 發(fā)表于 2017-5-27 14:38 | 顯示全部樓層
看著不錯(cuò)的樣子,可惜下不到
回復(fù)

使用道具 舉報(bào)

ID:193423 發(fā)表于 2017-5-28 15:48 | 顯示全部樓層
適合新手學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

ID:235869 發(fā)表于 2017-11-11 11:16 | 顯示全部樓層
看起來(lái)不錯(cuò)的樣子,學(xué)習(xí)一下看起來(lái)不錯(cuò)的樣子,學(xué)習(xí)一下
回復(fù)

使用道具 舉報(bào)

ID:248359 發(fā)表于 2017-11-15 12:05 | 顯示全部樓層
樓主,我打開(kāi)仿真軟件加入程序,運(yùn)行以后,直接蜂鳴器一直響
回復(fù)

使用道具 舉報(bào)

ID:358464 發(fā)表于 2018-9-21 13:44 | 顯示全部樓層
十分詳細(xì)!
回復(fù)

使用道具 舉報(bào)

ID:399426 發(fā)表于 2018-9-27 13:09 | 顯示全部樓層
資料很全面,點(diǎn)贊~
回復(fù)

使用道具 舉報(bào)

ID:322481 發(fā)表于 2018-10-29 07:41 | 顯示全部樓層
寫的好
回復(fù)

使用道具 舉報(bào)

ID:448755 發(fā)表于 2018-12-18 11:37 | 顯示全部樓層
感謝發(fā)帖
回復(fù)

使用道具 舉報(bào)

ID:486635 發(fā)表于 2019-3-8 03:10 | 顯示全部樓層
很好,可以學(xué)習(xí)下
回復(fù)

使用道具 舉報(bào)

ID:486635 發(fā)表于 2019-3-8 03:14 | 顯示全部樓層
學(xué)習(xí)下
回復(fù)

使用道具 舉報(bào)

ID:609834 發(fā)表于 2019-9-17 09:01 | 顯示全部樓層
有幫助
回復(fù)

使用道具 舉報(bào)

ID:630884 發(fā)表于 2019-10-27 14:21 | 顯示全部樓層
還可以,目前正在學(xué)習(xí)這個(gè)
回復(fù)

使用道具 舉報(bào)

ID:1110110 發(fā)表于 2024-1-25 19:14 | 顯示全部樓層
請(qǐng)教一下怎么將8路溫度一起顯示在屏幕上
回復(fù)

使用道具 舉報(bào)

ID:92810 發(fā)表于 2024-1-27 20:22 | 顯示全部樓層
資料很全面,點(diǎn)贊~
回復(fù)

使用道具 舉報(bào)

ID:907553 發(fā)表于 2024-1-30 17:25 | 顯示全部樓層
好資料,51黑有你更精彩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表