1.設計仿真電路及編程的方框圖
•PT100測溫得到電壓信號---•運算放大器----•AD數模轉換----•單片機控制數碼管的顯示
制作出來的實物圖如下:
pt100.png (450.15 KB, 下載次數: 80)
下載附件
2019-5-17 05:45 上傳
實物圖(缺熱電偶).jpg (88.68 KB, 下載次數: 69)
下載附件
2019-5-17 05:45 上傳
2.仿真電路方案及元器件選擇。
系統以單片機為核心,通過A/D轉化芯片對放大之后的信號進行采樣。然后傳送給單片機,單片機控制數碼管的顯示。
51系列單片機一塊、四位數碼管一個、AD0808芯片一塊,運放一塊
四、仿真電路原理設計
(1)測量橋路設計、元器件及工作電源參數;運算放大器電路、元器件參數;
(2) 單片機與AD轉換器、LED接口電路,選擇元器件參數;
(3) C51編程。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
整體圖.png (233.75 KB, 下載次數: 101)
下載附件
2019-5-17 05:45 上傳
顯示部分.png (128.67 KB, 下載次數: 77)
下載附件
2019-5-17 05:45 上傳
檢測編碼部分.png (145.39 KB, 下載次數: 80)
下載附件
2019-5-17 05:45 上傳
單片機源程序如下:
- #include <reg51.h> //頭文件
- #include<math.h>
- #define uchar unsigned char //宏定義
- #define uint unsigned int
- sbit STAR=P2^4;
- sbit EOC=P2^6;
- sbit CLOCK=P2^5;
- sbit OE=P2^7;
- sbit P20=P2^0;
- sbit P21=P2^1;
- sbit P22=P2^2;
- sbit P23=P2^3;
- uchar getdata;
- double change;
- long int temp;
- uchar code table1[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,
- 0x6F,0x40};//0-9,-,無小數點
- uchar code table2[]={0xbF,0x86,0xdB,0xcF,0xe6,0xeD,0xfD,0x87,0x7fF,
- 0xeF};//0-9,小數點
- uchar dispbuf[6];
- /****************************************************************************************/
- //延時函數:帶有入口參數m,代表ms毫秒
- //
- /****************************************************************************************/
- void delay_ms(uchar m)
- {
- unsigned int i,j;
- for(i=0;i<m;i++)
- {
- for(j=0;j<123;j++)
- {;}
- }
- }
- /****************************************************************************************/
- //
- //數碼管顯示程序
- /****************************************************************************************/
- void display()
- {
- P0=table1[dispbuf[3]];//顯示百位
- P20=0;
- P21=1;
- P22=1;
- P23=1;
- delay_ms(8);
- P0=0X00;
- P0=table1[dispbuf[2]];//顯示十位
- P20=1;
- P21=0;
- P22=1;
- P23=1;
- delay_ms(8);
- P0=0X00;
- P0=table2[dispbuf[1]];//顯示個位
- P20=1;
- P21=1;
- P22=0;
- P23=1;
- delay_ms(8);
- P0=0X00;
- P0=table1[dispbuf[0]];//顯示小數位
- P20=1;
- P21=1;
- P22=1;
- P23=0;
- delay_ms(8);
- P0=0X00;
- }
- /****************************************************************************************/
- //
- //計算溫度
- /****************************************************************************************/
- void PT100()
- {
- double deal,U;//
- U=5.0/255.0*getdata;
- deal=U*20*10;
- temp=(long int)deal;
- if(U<5.2&&U>0)
- {
- dispbuf[0]=temp%10;
- dispbuf[1]=temp/10%10;
- dispbuf[2]=temp/100%10;
- dispbuf[3]=temp/1000;
- }
- else
- {
- dispbuf[0]=0;
- dispbuf[1]=0;
- dispbuf[2]=0;
- dispbuf[3]=0;
-
- }
-
- display();
- }
- /****************************************************************************************/
- //
- //
- /****************************************************************************************/
- main()
- {
- TMOD = 0x10; //定時器0,工作在定時器方式
- TH1 = (65536-200)/256; //0x3c
- TL1 = (65536-200)%256; //0xb0
- EA = 1; //開總中斷
- ET1 = 1; //打開(允許)定時器1中斷
- TR1 =1; //開始(啟動)定時
- while(1)
- {
- STAR=0;
- OE=0;
- STAR=1;
- STAR=0;
- while(EOC==0)
- {
- OE=1;
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
0.png (9.9 KB, 下載次數: 96)
下載附件
2019-5-17 05:44 上傳
0.png (7.84 KB, 下載次數: 84)
下載附件
2019-5-17 05:44 上傳
所有資料51hei提供下載:
熱電阻測溫.zip
(2.06 MB, 下載次數: 852)
2019-5-12 20:02 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|