|
| 這個范圍用18B20可以啊,電路還簡單。 |
a0931727149 發表于 2018-1-19 21:52 我的意思是說,明明pt100測溫范圍蠻大,我這個電路在54度一下都可以通過調節pt100在LCD顯示出對應溫度,但是為什么調節更高溫度而LCD顯示就停在54度不變了,這是個什么原理,求告知,謝謝 |
|
理論上R4要用可變電阻.來調整滿刻度溫度........調整pt100在127.5度 調整R4使得放大器有5V(或接近5V) 如此電路就算完成......接下來是ADC0804.....R3接ADC0804(pin19)與(pin4), C1接ADC0804(pin4)與GND間 .... 是否程式有問題要這樣試..調整 PT100...測量ADC0804 Vin+接腳...電壓值是否可從0到5V間變化...如顯示與PT100的值不同則是程式需要修正...... 此程式原本設計滿刻度值127.5度 解析度0.5度 你試試看...... |
| 各位,我想問一下,到底是程序原因還是電路的原因,導致我調節pt100但是lcd顯示溫度最大卻只有54度啊, |
wuyibin2003 發表于 2018-1-17 10:57 #define lcd_bus P0才對 |
| 問一下你貼出來的這個程序可以用嗎 |
|
請參卓: #include <reg52.h> #define lcd_bus P2 #define adc_bus P1 sbit lcd_rs =P2^0; sbit lcd_rw =P2^1; sbit lcd_en =P2^2; sbit adc_rd =P3^6; sbit adc_wr =P3^7; sbit adc_intr =P3^2; sbit cool = P2^5; sbit heat = P2^6; sbit alarm = P2^7; char tab_TEMP[]={"TEMP:"};// 6 char tab_cool[]={" Cooling ..."};//12 char tab_heat[]={" Heating .."};//12 char tab_Over[]={"..Over Temp...."};//16 char tab_Temp_OK[] ={".. Temp OK ....."};// void delay_us(int del) { int i; i=del; while(i--); } void lcd_wi(char com) { lcd_bus =com; lcd_rs =0; lcd_rw =0; lcd_en =0; delay_us(1); lcd_en =1; delay_us(200); } void lcd_wd(char com) { lcd_bus =com; lcd_rs =1; lcd_rw =0; lcd_en =0; delay_us(1); lcd_en =1; delay_us(200); } void init_lcd() { delay_us(10000); lcd_wi(0x38); lcd_wi(0x38); lcd_wi(0x01); lcd_wi(0x08); lcd_wi(0x0e); lcd_wi(0x06); lcd_wi(0x01); } char RD_adc() { unsigned char dat; adc_bus=0xff; adc_wr =0; adc_wr =1; while(adc_intr); adc_rd =0; dat=adc_bus; adc_rd =1; return dat; } void lcd_show_str(char *P,char no) { char i=no; while(i) { lcd_wd(*P++); i--; } } void lcd_show_ver(unsigned int dat) { lcd_wd(dat /1000 %10 +0x30); lcd_wd(dat /100 %10 +0x30); lcd_wd(dat /10 %10 +0x30); lcd_wd('.'); lcd_wd(dat /1 %10 +0x30); lcd_wd(0xdf); lcd_wd('C'); } main() { unsigned char adc_data; init_lcd(); lcd_show_str(tab_TEMP,6); while(1) { adc_data= RD_adc(); lcd_wi(0x86); lcd_show_ver(adc_data *5 ); lcd_wi(0xc0); if(adc_data >200) { lcd_show_str(tab_Over,16); cool = 1; heat = 0; alarm = 1; } else { if(adc_data >140) { lcd_show_str(tab_cool,12); cool = 1; heat = 0; alarm = 0; } else { if(adc_data <80) { lcd_show_str(tab_heat,12); cool = 0; heat = 1; alarm = 0; } else { lcd_show_str(tab_Temp_OK,16); cool =0; heat = 0; alarm =0; } } } } } |
a0931727149 發表于 2018-1-13 09:04 你能將程序寫出來嗎 |
| 我想改一下,加個蜂鳴器報警,加個降溫和升溫電路該怎么寫程序啊 |