Very nice!!!
fratello,
This will make a great project for the wiki.
Very nice!!!
fratello,
This will make a great project for the wiki.
Dave
Always wear safety glasses while programming.
Thanks!
I need one advice : the leds are not fully OFF when it's nothing to scroll... I try to add "pause" in different places of code, but without results...Please, I need help for one code 100% good ! Thanks in advance !
Last version of code :
Work fine... but, in transition, some LEDs (not all) of first column on left are a little dimmed ! I don't know what else I can doCode:; working variant ; anode to portB, catode to portA ; 11 september 2011 ; SCROLLING THERMOMETER ; By NICULESCU DAN @ DEVICE pic16F628A, intOSC_osc_noclkout, WDT_OFF, PWRT_OFF, BOD_OFF, MCLR_off define osc 4 INTCON = 0 TRISA = %00000000 TRISB = %10000000 CMCON = 7 ' Disable comparators DQ var PortB.7 '*************************************************************************************** eeprom 0, [%10100001,%01111010,%01110110,%01101110,%10100001] '0 eeprom 5, [%11111111,%01111101,%00000000,%01111111,%11111111] '1 eeprom 10,[%01111101,%00111110,%01101110,%01110110,%01111001] '2 eeprom 15,[%10111101,%01111110,%01110110,%01110110,%10101001] '3 eeprom 20,[%11100111,%11101011,%11101101,%00000000,%11101111] '4 eeprom 25,[%10111000,%01111010,%01111010,%01111010,%10100110] '5 eeprom 30,[%10100001,%01110110,%01110110,%01110110,%10101101] '6 eeprom 35,[%11111110,%00001110,%11110110,%11111010,%11111100] '7 eeprom 40,[%10001001,%01110110,%01110110,%01110110,%10001001] '8 eeprom 45,[%11111001,%01110110,%01110110,%01110110,%10001001] '9 counter var byte scan var byte scroll var byte leddata var byte[36] 'Column Data for display 36 columns temperature var Word 'reading from sensor Sign var BIT tempA var byte 'Stores First digit (High) tempB var byte 'stores Second digit (Mid) tempC var byte 'stores Third digit (low) n var byte DS18B20_12bit CON %01111111 START: CLEAR 'Clear all varibles porta = 1 portb = 0 pause 100 ' Init Sensor 1 OWOUT DQ, 1, [$CC, $4E, 0, 0, DS18B20_12bit] OWOut DQ, 1, [$CC, $48] ' Start temperature conversion OWOut DQ, 1, [$CC, $B8] OWOut DQ, 1, [$CC, $BE] Pause 50 OWIn DQ, 2, [temperature.byte0, temperature.byte1] Pause 50 for n=0 to 7 leddata [n] = %11111111 next n leddata [13] = %11111111 leddata [19] = %11111111 leddata [20] = %00111111 ' DECIMAL POINT leddata [21] = %00111111 leddata [22] = %11111111 leddata [28] = %11111111 leddata [29] = %11111100 ' degrees c leddata [30] = %11111100 leddata [31] = %11100011 leddata [32] = %10111101 leddata [33] = %10111101 leddata [34] = %10111101 leddata [35] = %11111111 OWOut DQ, 1, [$CC, $44] OWOut DQ, 1, [$CC, $BE] OWIn DQ, 2, [temperature.byte0, temperature.byte1] Sign = temperature.15 temperature= ABS(temperature) temperature=((temperature >> 4)*100) + ((temperature & $F) * 100 >> 4) if sign then temperature= -temperature temperature=2340 tempA = temperature DIG 3 tempB = temperature DIG 2 tempC = temperature DIG 1 if tempA = 0 then FOR counter = 0 TO 4 leddata [counter+8] = %11111111 next else for counter = 0 to 4 READ tempA*5+counter,leddata [counter+8] 'stores 1st digit in leddata locations 8,9,10,11,12 NEXT endif FOR counter = 0 TO 4 READ tempB*5+counter,leddata [counter+14] 'stores 2nd digit in leddata locations 14,15,16,17,18 NEXT FOR counter = 0 TO 4 READ tempC*5+counter,leddata [counter+23] 'stores 3rd digit in leddata locations 23,24,25,26,27 NEXT ;LOOPing: FOR scroll = 0 TO 35 FOR scan = 0 TO 6 PORTb = 1 FOR counter = 0 TO 7 PORTa = leddata [counter] pAUSE 1 PORTb = PORTb * 2 NEXT NEXT FOR counter = 0 TO 34 leddata [counter] = leddata [counter+1] NEXT NEXT GOTO START END...
I did it ! Full led on, full led off. Enjoy !
Code:; SCROLLING THERMOMETER ; FINAL VERSION ; By NICULESCU DAN ; SEPTEMBER, 13, 2011 ; ; .oooO ; ( ) Oooo. ; \ ( ( ) ; \_) ) / ; (_/ ; @ DEVICE pic16F628A, intOSC_osc_noclkout, WDT_OFF, PWRT_OFF, BOD_OFF, MCLR_off define osc 4 INTCON = 0 TRISA = %00000000 ' CATODES TO PORTA TRISB = %10000000 ' ANODES TO PORTB CMCON = 7 DQ var PortB.7 '*************************************************************************************** eeprom 0, [%10100001,%01111010,%01110110,%01101110,%10100001] '0 eeprom 5, [%11111111,%01111101,%00000000,%01111111,%11111111] '1 eeprom 10,[%01111101,%00111110,%01101110,%01110110,%01111001] '2 eeprom 15,[%10111101,%01111110,%01110110,%01110110,%10101001] '3 eeprom 20,[%11100111,%11101011,%11101101,%00000000,%11101111] '4 eeprom 25,[%10111000,%01111010,%01111010,%01111010,%10100110] '5 eeprom 30,[%10100001,%01110110,%01110110,%01110110,%10101101] '6 eeprom 35,[%11111110,%00001110,%11110110,%11111010,%11111100] '7 eeprom 40,[%10001001,%01110110,%01110110,%01110110,%10001001] '8 eeprom 45,[%11111001,%01110110,%01110110,%01110110,%10001001] '9 counter var byte scan var byte scroll var byte leddata var byte[36] 'Column Data for display 36 columns temperature var Word 'reading from sensor Sign var BIT tempA var byte 'Stores First digit (High) tempB var byte 'stores Second digit (Mid) tempC var byte 'stores Third digit (low) n var byte DS18B20_12bit CON %01111111 START: CLEAR ' Init Sensor OWOUT DQ, 1, [$CC, $4E, 0, 0, DS18B20_12bit] OWOut DQ, 1, [$CC, $48] OWOut DQ, 1, [$CC, $B8] OWOut DQ, 1, [$CC, $BE] Pause 50 OWIn DQ, 2, [temperature.byte0, temperature.byte1] Pause 50 OWOut DQ, 1, [$CC, $44] OWOut DQ, 1, [$CC, $BE] OWIn DQ, 2, [temperature.byte0, temperature.byte1] Sign = temperature.15 temperature= ABS(temperature) temperature=((temperature >> 4)*100) + ((temperature & $F) * 100 >> 4) if sign then temperature= -temperature ; temperature=2340 ; UNCOMMENT FOR DISPLAY TEST tempA = temperature DIG 3 tempB = temperature DIG 2 tempC = temperature DIG 1 if tempA = 0 then FOR counter = 0 TO 4 leddata [counter+8] = %11111111 next else for counter = 0 to 4 READ tempA*5+counter,leddata [counter+8] 'stores 1st digit in leddata locations 8,9,10,11,12 NEXT endif FOR counter = 0 TO 4 READ tempB*5+counter,leddata [counter+14] 'stores 2nd digit in leddata locations 14,15,16,17,18 NEXT FOR counter = 0 TO 4 READ tempC*5+counter,leddata [counter+23] 'stores 3rd digit in leddata locations 23,24,25,26,27 NEXT for n=0 to 7 leddata [n] = %11111111 next n leddata [13] = %11111111 leddata [19] = %11111111 leddata [20] = %00111111 ' DECIMAL POINT leddata [21] = %00111111 leddata [22] = %11111111 leddata [28] = %11111111 leddata [29] = %11111100 ' degrees c leddata [30] = %11111100 leddata [31] = %11100011 leddata [32] = %10111101 leddata [33] = %10111101 leddata [34] = %10111101 leddata [35] = %11111111 LOOPing: FOR scroll = 0 TO 35 FOR scan = 0 TO 10 PORTA=%11111111 PAUSE 1 PORTb = 1 FOR counter = 0 TO 7 PORTa = leddata [counter] pAUSE 1 PORTb = PORTb * 2 NEXT NEXT FOR counter = 0 TO 34 leddata [counter] = leddata [counter+1] NEXT NEXT GOTO START END
Thanks to Mr.Wellyboot : http://www.picbasic.co.uk/forum/show...ghlight=matrix .
sorry, just saw your private message....looks like you got it going!
nice one!
Some of my projects: http://www.youtube.com/user/wellyb00t
Mr.Wellyboot : Need advice on using RTC DS1307 AND DS18B20 sensor ! How reading/displaying both (temperature and time) ? Please help ! Can I use same (two) pins to driven leds and reading DS1307 ? Any help it's wellcome . Thanks in advance !
Bookmarks