Данный проект состоит из датчика температуры ds18b20 и микроконтроллера. Вывод температуры осуществляется на символьный LCD дисплей размером 16x2. Значение температуры считывается с цифрового датчика ds18b20. В схеме используется микроконтроллер Atmega8515.
Цифровой датчик ds18b20 имеет температурный диапазон от -55 до +125 градусов по Цельсию, точность датчика составляет порядка 0.5 градуса. Подключение датчика осуществляется по 3м проводам, 2 из них это питание, а 3-й это линия данных.
Код программы
‘—————————————————————————————– ‘purpose : DS1820 / DS18S20 Temperature Indicator ‘—————————————————————————————– $regfile = “m8515.dat” ‘ specify the used micro $crystal = 8000000 ‘ used crystal frequency Declare Sub Read1820 Config 1wire = Portd.7 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Porta.2 , Db5 = Porta.3 , Db6 = Porta.4 , Db7 = Porta.5 , E = Porta.1 , Rs = Porta.0 ‘Temp variables Dim Bd1 As Byte Dim Bd2 As Byte Dim Bd7 As Byte Dim Bd8 As Byte Dim I As Byte , Tmp As Byte Dim T As Integer , T1 As Integer Dim Bd(9) As Byte ‘Scratchpad 0-8 72 bits incl CRC, explanations for DS1820 ‘Sc(1) ‘Temperature LSB ‘Sc(2) ‘Temperature MSB ‘Sc(3) ‘TH/user byte 1 also SRAM ‘Sc(4) ‘TL/user byte 2 also SRAM ‘Sc(5) ‘config also SRAM x R1 R0 1 1 1 1 1 – the r1 r0 are config for resolution – write FF to byte for 12 bit – others dont care ‘Sc(6) ‘res ‘Sc(7) ‘res ‘Sc(8) ‘res ‘Sc(9) ‘8 CRC ‘DALLAS DS1820 ROM and scratchpad commands”””””””””””””1wwrite…. ‘&H 33 read rom – single sensor ‘&H CC skip rom ‘&H BE read scratchpad ‘&H 44 convert T ‘ Main loop Cls Cursor Off Do 1wwrite &HCC : 1wwrite &H44 ‘ start measure Waitms 400 ‘ wait for end of conversion Read1820 Wait 1 Loop End ‘end program ‘Read the DS1820 by skipping the ROM checking, since we are using only 1 sensor Sub Read1820 ‘ reads sensor ans calculate ‘ T for 0.1 C 1wreset ‘ reset the bus 1wwrite &HCC ‘ read internal RAM 1wwrite &HBE ‘ read 9 data bytest Bd(1) = 1wread(9) Bd1 = Bd(1) Bd2 = Bd(2) Bd7 = Bd(7) Bd8 = Bd(8) ‘ read bytes in array 1wreset ‘ reset the bus Tmp = Bd1 And 1 If Tmp = 1 Then Decr Bd1 ‘ 0.1C precision T = Bd1 T = T * 50 T = T – 25 T1 = Bd8 – Bd7 T1 = T1 * 100 T1 = T1 / Bd8 T = T + T1 T1 = T / 100 ‘store tens T = T Mod 100 ‘store decimal number Cls Locate 1 , 3 Lcd “Temperature” Locate 2 , 7 Lcd T1 ; “.” ; T End Sub End