找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2973|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

基于C8051F單片機的溫度控制系統(tǒng)設(shè)計 含原理圖+C語言源碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:705022 發(fā)表于 2020-3-9 10:58 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
   1.這次設(shè)計實驗設(shè)計任務(wù)由五個模塊組成,分別是單片機系統(tǒng)的制作,數(shù)碼管顯示模塊的設(shè)計制作,鍵盤電路的設(shè)計與制作, 模數(shù)轉(zhuǎn)換電路的制作,數(shù)模轉(zhuǎn)換電路。完成各個單獨模塊的調(diào)試之后需要進(jìn)行對整個系統(tǒng)程序的編寫以及各模塊之間的聯(lián)調(diào)工作。對于整個系統(tǒng)而言,進(jìn)行了分模塊設(shè)計與測試的流程,以便減小聯(lián)調(diào)過程中發(fā)生錯誤的可能性。
2.1單片機模塊概述
首先我們制作的是整個系統(tǒng)中最為重要的一個部分—單片機模塊。本系統(tǒng)的單片機選擇了目前應(yīng)用最為廣泛的51系列單片機。為了使單片機能夠完成更加復(fù)雜的工作,故必須對單片機的引腳功能進(jìn)行擴展。為了實現(xiàn)系統(tǒng)功能,在單片機模塊中配置了數(shù)據(jù)/地址分離電路以及地址譯碼電路。具體來說,單片機模塊中使用了74LS373對地址數(shù)據(jù)進(jìn)行鎖存,使用74LS138作為部分地址譯碼電路。然后利用JTAG適配器將電腦中編寫的程序下載至單片機中,并利用示波器對單片機的輸出信號進(jìn)行檢測。
2.2單片機模塊設(shè)計電路圖
#include "C8051F020.h"

  1. #include "absacc.h"
  2. #include "data_define.c "
  3. #include " Init_Device.c "
  4. #define    CS0  XBYTE[0x0005]
  5. #define    CS1  XBYTE[0x200A]
  6. #define    CS2  XBYTE[0x4005]
  7. #define    CS3  XBYTE[0x600A]
  8. #define    CS4  XBYTE[0x8005]
  9. #define    CS5  XBYTE[0xA00A]

  10. void main(void)
  11. {
  12.     uchar a;
  13.     Init_Device();
  14.     while(1)  
  15.     {
  16.         CS0=0x55;
  17.         a=CS1;
  18.         CS2=0xaa;
  19.         a=CS3;
  20.         CS4=0x55;
  21.         a=CS5;
  22.     }
  23. }
復(fù)制代碼


3.1 數(shù)碼管顯示電路模塊概述
我們主要進(jìn)行了顯示電路的設(shè)計與制作。對于整個顯示模塊而言,主要通過4個7段數(shù)碼管,將測量到的溫度與由鍵盤輸入的目標(biāo)溫度進(jìn)行顯示。此外,在數(shù)碼管顯示模塊中,還使用了4個74LS273對單片機的輸出數(shù)據(jù)進(jìn)行鎖存,使得單片機能夠依次對數(shù)碼管進(jìn)行數(shù)據(jù)傳輸時其余數(shù)碼管上顯示的內(nèi)容能夠得以保留。此外還利用74LS138譯碼器,對需要進(jìn)行數(shù)據(jù)傳輸?shù)臄?shù)碼管進(jìn)行選擇。
3.2 數(shù)碼管顯示電路模塊設(shè)計電路圖
#include "C8051F020.h"

  1. #include "absacc.h"
  2. #include "data_define.c"
  3. #define    LED1      XBYTE[0x0002]        //0010
  4. #define    LED2      XBYTE[0x0003]        //0011
  5. #define    LED3      XBYTE[0x0008]        //1000
  6. #define    LED4      XBYTE[0x0009]        //1001


  7. #define    TIMER    0x8000
  8. #include "Init_Device.c"
  9. unsigned char table[  ]={0xC0,0xF9,0xA4,0xB0,0x99,
  10.                  0x92,0x82,0xF8,0x80,0x90};
  11. void delay(void)
  12. {
  13.        unsigned int i;
  14.        for(i=0;i<TIMER;++i);
  15. }
  16. void main(void)
  17. {  
  18.       unsigned  char i;
  19.       Init_Device();        
  20.       LED1=LED2=0xff;
  21.       while(1)
  22.       {  
  23.         for(i=0;i<10;++i)
  24.           {
  25.             LED1=table[i];
  26.         LED2=table[i];
  27.                 LED3=table[i];
  28.                 LED4=table[i];
  29.         delay( );
  30.         delay( );
  31.                 delay( );
  32.                 delay( );
  33.                 delay( );
  34.                   
  35.                   }     

  36.       }
  37. }  
復(fù)制代碼
4.鍵盤模塊
4.1鍵盤模塊概述
由于在本次工程設(shè)計中,已經(jīng)提供了現(xiàn)成的鍵盤模塊。故只需設(shè)計并制作鍵盤模塊對應(yīng)的讀取電路即可。在本次實驗中,我們選擇了地址掃描模式。該模式的特點是通過74LS138芯片依次對鍵盤的第一到四行輸出低電平,并在次過程中讀取每列的電平,進(jìn)而判斷出是哪行哪列的按鍵被按下了。在該模塊中使用到了一塊74LS244,是一塊3態(tài)8位緩沖器芯片,作為驅(qū)動信號芯片使用。通常單片機的I/O口輸出電流很小,而74LS244就是用來放大電流的。需要注意的是74LS244是單向的,在連接過程中不要接反。
4.2鍵盤讀取模塊電設(shè)計路圖
#include "C8051F020.h"

  1. #include "absacc.h"
  2. #include "data_define.c"
  3. #define   DP1   XBYTE[0x0002]
  4. #define   DP2   XBYTE[0x0003]
  5. #define   DP3   XBYTE[0x0008]
  6. #define   DP4   XBYTE[0x0009]
  7. #define   TIMER 0x8000
  8. #include "Init_Device.c"
  9. unsigned char table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
  10. void display(unsigned char x,unsigned char y)
  11. {
  12.          DP3=table[x];
  13.          DP4=table[y];
  14.         DP1=table[x];
  15.          DP2=table[y];
  16. }     
  17.    
  18. void main(void)
  19. {
  20.         unsigned  char l_val,r_val,r_state,temp,conter,x,c;
  21.     int key;
  22.     DP1=DP2=DP3=DP4=0xff;
  23.     Init_Device();
  24.         while(1)
  25.         {  
  26.              key=0x0004;
  27.         for(x=1;x<5;x++,key++)
  28.               {  
  29.                  c=XBYTE[key];
  30.             if(r_state=~c&0x1f)
  31.             {
  32.                                 for(conter=1,temp=0x01;conter<6;++conter,temp=temp<<1)
  33.                 if((r_state&temp)!=0)  
  34.                 {
  35.                                         r_val=conter;
  36.                           l_val=x;
  37.                          display(l_val,r_val);
  38.                                 }
  39.                    }
  40.               }
  41.           }
  42. }
復(fù)制代碼
對于該程序,當(dāng)按下鍵盤中的某一個鍵時,在數(shù)碼管上會依次顯示出所按下按鍵的行和列的值,由此可以判斷出鍵盤鍵值讀取模塊是否正常工作。
5.模數(shù)轉(zhuǎn)換電路
5.1 模數(shù)轉(zhuǎn)換電路概述
對于模數(shù)轉(zhuǎn)換電路,在該實驗中選用了ADC0804逐次逼近式A/D轉(zhuǎn)換芯片,可以滿足對于將輸入的0~+5V的模擬信號轉(zhuǎn)換為8位的數(shù)字量。其轉(zhuǎn)換結(jié)果與模擬輸入電壓關(guān)系由關(guān)系式確定。
5.2模數(shù)轉(zhuǎn)換電路設(shè)計電路圖
圖5-1 模數(shù)轉(zhuǎn)換電路設(shè)計電路圖
  1. #include "C8051F020.h"
  2. #include "absacc.h"
  3. #include "data_define.c"
  4. #define   CS1      XBYTE[0x2000]
  5. #define   TIMER   0x8000
  6. #include "Init_Device.c"
  7. void delay(void);
  8. void main(void)
  9. {
  10.     unsigned char x;
  11.     Init_Device();
  12.         while(1) { CS1=x; delay(); x=CS1; delay(); }
  13. }
  14. void delay(void)
  15. {
  16.     unsigned int i;
  17.     for(i=0;i<TIMER;++i);
  18. }
復(fù)制代碼
對于該程序,在調(diào)試過程中,將變量x的值加入到觀察窗口中,不斷改變測試臺的輸出電壓模擬量的值,檢查變量x的值是否與與其結(jié)果一致。(0V時近似對應(yīng)數(shù)字量0,+5V時近似對應(yīng)數(shù)字量255)需要注意的是在進(jìn)行數(shù)模轉(zhuǎn)換前,要將變送器的可變電阻調(diào)整到合適的阻值。
5.數(shù)模轉(zhuǎn)換模塊
6.1數(shù)模轉(zhuǎn)換模塊概述
在數(shù)模轉(zhuǎn)換模塊中,使用了一塊DAC0832以及由兩個LM358級聯(lián)的運算放大器,實現(xiàn)對于輸入的0到100攝氏度數(shù)字量和-10V—+10V的模擬量進(jìn)行一個轉(zhuǎn)換,進(jìn)而對后續(xù)的半導(dǎo)體制冷片進(jìn)行控制。

結(jié)果.png (467.9 KB, 下載次數(shù): 91)

結(jié)果.png

原理圖.png (119.93 KB, 下載次數(shù): 83)

原理圖.png

評分

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

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:1027281 發(fā)表于 2022-5-17 14:12 | 只看該作者
大哥,原理圖有高清的嗎
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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