Thermo 7 segments - little problem


Closed Thread
Results 1 to 40 of 50

Hybrid View

  1. #1
    Join Date
    May 2010
    Posts
    4


    Did you find this post helpful? Yes | No

    Default doesnt compile

    To mehmetOzdemir

    Hi I have downloaded and ran isis.zip files and it worked fine for me but when I compile the pic basic file in the isis.zip file and re simulate it in isis it only displays as per the attatched image.
    Any ideas? is the pic basic file ok?
    I am only learning this system so I am confused as to why it works perfect with original files but yet I cant compile it from my picbasic system.
    This is what I get when I compile the files in the zip myself.
    Attached Images Attached Images  
    Last edited by zorbzz; - 10th May 2010 at 02:35.

  2. #2
    Join Date
    Jul 2008
    Location
    TURKIYE-KONYA
    Posts
    51


    Did you find this post helpful? Yes | No

    Default

    I used MPASM when i compiled it. Try to use MPASM or add your config settings to the top of your code.

  3. #3
    Join Date
    Dec 2008
    Location
    Ploiesti, ROMANIA
    Posts
    582


    Did you find this post helpful? Yes | No

    Default

    Try to add this :
    Code:
    @ DEVICE pic16F628A, intOSC_osc_noclkout, WDT_OFF, PWRT_ON, MCLR_OFF, LVP_OFF, CPD_OFF, PROTECT_OFF    
    
    DEFINE  NO_CLRWDT 1
    DEFINE  OSC 4
    TRISA ..... (0 = OUTPUT ; 1 = INPUT)
    TRISB ..... ( ID.)
    and don't forget to tell ISIS that your PIC work at 4 Mhz.

  4. #4
    Join Date
    May 2010
    Posts
    4


    Did you find this post helpful? Yes | No

    Default

    Ok thanks alot i'll try that.





    Quote Originally Posted by fratello View Post
    Try to add this :
    Code:
    @ DEVICE pic16F628A, intOSC_osc_noclkout, WDT_OFF, PWRT_ON, MCLR_OFF, LVP_OFF, CPD_OFF, PROTECT_OFF    
    
    DEFINE  NO_CLRWDT 1
    DEFINE  OSC 4
    TRISA ..... (0 = OUTPUT ; 1 = INPUT)
    TRISB ..... ( ID.)
    and don't forget to tell ISIS that your PIC work at 4 Mhz.

  5. #5
    Join Date
    May 2010
    Posts
    4


    Did you find this post helpful? Yes | No

    Default

    Thanks again it works perfect now.




    Quote Originally Posted by zorbzz View Post
    Ok thanks alot i'll try that.

  6. #6
    Join Date
    Dec 2008
    Location
    Ploiesti, ROMANIA
    Posts
    582


    Did you find this post helpful? Yes | No

    Default Hi ! Me again :) ...

    I made this schematic; I use this code. Works fine, but.... I don't know how to display "minus sign" for negative temperatures. I try differents variants, but without results...Any advice it's wellcome ! Thanks in advance !
    Code:
    ' *************************************************************
    ' * For use with EXPERIMENTING WITH THE PICBASIC PRO COMPILER *
    ' *			                                            *
    ' *  This source code may be freely used within your own      *
    ' *  programs. However, if it is used for profitable reasons, *
    ' *        please give credit where credit is due.	        *
    ' *  And make a reference to myself or Rosetta Technologies   *
    ' *							                    *
    ' *			              Les. Johnson		        *
    ' *************************************************************
    '
    ' Common Anode seven segment display multiplexer
    ' Displays the contents of the variable D_NUMBER on five common Anode displays
    ' using a TMR0 interrupt 
    ' ***********************************************************************
    @ DEVICE pic16F648A, XT_OSC, WDT_OFF, PWRT_OFF, BOD_OFF, MCLR_OFF, LVP_OFF, CPD_OFF       
    
      CMCON = 7                
      VRCON = 0
      INTCON = 0
    Include "Modedefs.bas"
    
    ' ** Setup the Crystal Frequency, in mHz **
    
    	Define 	OSC		4 		   	' Set Xtal Frequency
    
    ' ** Declare the Variables **
    	LEDS		  	Var	Byte		      ' The amount of LEDs in the display
    	O_C		    	Var	Byte		      ' Used by the interrupt for time sharing
    	Counter		Var	Word		      ' General purpose counter
    	Del		    	Var	Word		      ' General purpose delay loop variable
    	D_Number		Var	Word		      ' The number to display on the LEDS
    	DP		    	Var	Byte		      ' Position of the decimal point
    	Disp_Patt		Var	Byte		      ' Pattern to output to PortC
    	Num		    	Var	Byte[5]	      ' Array to hold each digits value
    	Digit0		Var	PortA.0		' Controls the first DIGIT on the LED
    	Digit1		Var	PortA.1		' Controls the second DIGIT on the LED
    	Digit2		Var	PortA.2		' Controls the third DIGIT on the LED
    	Digit3		Var	PortA.3		' Controls the fourth DIGIT on the LED
          
    	temperature       var   word
    	TempC             Var   word
    	Temp	            Var   byte
          Float             Var   word
    	V		      Var   word		  
    	Twist             Var   bit
    	Dummy             Var   byte
          Sign              var   byte
    	busy              var   bit
    	DS18B20_12bit 	CON %01111111           ' 750ms,   0.0625°C  
    	DQ			var PortA.4
    
    
    ' ** Declare the bits and flags of the various registers **
    
    	T0IE		Var	INTCON.5	      	' Timer0 Overflow Interrupt Enable
    	T0IF		Var	INTCON.2	      	' Timer0 Overflow Interrupt Flag
    	GIE		Var	INTCON.7	        	' Global Interrupt Enable
    	PS0		Var	OPTION_REG.0	    	' Prescaler division bit-0
    	PS1		Var	OPTION_REG.1	    	' Prescaler division bit-1
    	PS2		Var	OPTION_REG.2	    	' Prescaler division bit-2
    	PSA		Var	OPTION_REG.3	   	' Prescaler Assignment (1= assigned to WDT)
                                  			'    (0= assigned to oscillator)
    	T0CS		Var	OPTION_REG.5	  	' Timer0 Clock Source Select (0=Internal clock) 
                                 				'    (1=External PORTA.4)
                                  
                                  
    ' Set TMR0 to interrupt
    	GIE=0				      		' Turn off global interrupts
    	While GIE=1:GIE=0:Wend				' Make sure they are off
    	PSA=0							' Assign the prescaler to external oscillator
    	PS0=0							' Set the prescaler
    	PS1=1							' to increment TMR0
    	PS2=0							' every 64th instruction cycle
    	T0CS=0						' Assign TMR0 clock to internal source
    	TMR0=0						' Clear TMR0 initially
    	T0IE=1						' Enable TMR0 overflow interrupt
    	GIE=1							' Enable global interrupts
    
    On Interrupt Goto Mult_Int				' Point to the interrupt handler
    
    	TrisB=0						' Make PortB outputs
    	TrisA.0=0:TrisA.1=0:TrisA.2=0			' Make only the specific bits of PortA outputs					
    	TrisA.3=0:TrisA.4=1
    	PortA=0:PortB=0			      	' Clear PortB and PortA
    	O_C=0							' Clear the time share variable 
    
    
    
    
    OWOut DQ, 1, [$CC, $4E, 0, 0, DS18B20_12bit]
     Output DQ              		' Make Pin Output
     DQ=0						' OneWire line Low
     PauseUs 480                    	' Keep down for 480 µS  
     Input DQ                       	' Make Pin Input
     PauseUs 70                     	' Wait 70 µS
    
    
    W1: 
        OWIN DQ,4,[busy]            	' Check for still busy converting
        IF busy = 0 THEN W1         	' Still busy?  then loop
    
    ' ** THE MAIN PROGRAM STARTS HERE **
    	
    Main:	
    OWOut DQ, 1, [$CC, $44] 
    OWOut DQ, 1, [$CC, $BE]
    OWIn DQ, 2, [temperature.byte0, temperature.byte1]         
    If Temperature.15 then       
      Temperature= ~Temperature +1
      Twist = 1
      Sign  = 1
    Endif
     
    Dummy = 625 * Temperature
    TempC = DIV32 10 
    TempC = (Temperature & $7FF) >> 4
    Float = ((Temperature.Lowbyte & $0F ) * 25 )>>2
    Temperature = TempC*100 + Float
    
    If Twist then
      V= 10000 - Temperature            		' 25 C=12500  0 C=10000  -10 C=9000 
      Twist = 0
    else
      V= 10000 + Temperature
    EndIf
    
    If V >= 10000 then                     		' Above 0 C.      
      Temperature=V-10000
      sign = " "                   
    else                                   
      Temperature=10000-V                   		' Below 0 C. 
      sign= "-"
    EndIf
    	D_Number=Temperature/10			      ' Place the value to display into D_NUMBER
    	DP=0					            ' Disable the decimal point
    	Gosub Display				      ' Display the value
    	 For Del=0 to 100			      	' Pause 10ms
    	 Pauseus 100				      ' using smaller delays
    	 Next
    
    Inf:	
    Goto Main				              	' Do it forever
    
    ' Build up the seperate digits of variable D_NUMBER
    ' into the array NUM. Each LED is assigned to each array variable.
    ' LED-0 (right) displays the value of NUM[0]
    ' LED-1 (middle) displays the value of NUM[1]
    ' LED-2 (lef) displays the value of NUM[2]
    ' The decimal point is placed by loading the variable DP
    ' with the LED of choice to place the point (0..5). where 1 is the farthest right LED
    ' and 0 disables the decimal point.
    Display:
    	For LEDS=3 to 0 step -1 				' Loop for 4 digits (0-9999)
    	Disable							' Disable the interrupt while we calculate
    	Num[LEDS]=D_Number dig LEDS 				' Extract the seperate digits into the array
    	If D_Number<10 and LEDS=1 then Num[LEDS]=10	' Zero Suppression for the second digit
    	If D_Number<100 and LEDS=2 then Num[LEDS]=10	' Zero Suppression for the Third digit
    	If D_Number<1000 and LEDS=3 then Num[LEDS]=10	' Zero Suppression for the Forth digit
    	Enable							' Re-enable the interrupt
    	Next	
    
    
    
    ' INTERRUPT HANDLER 
    ' Multiplexes the 4-digits
    ' 
            Disable         			' Disable all interupts during the interrupt handler
    Mult_Int: 
    	Lookup Num[O_C],[192,249,164,176,153,146,131,248,128,152,255],Disp_Patt ' Decode the segments for the LED
    
    ' Process the first display (farthest right)
    	If O_C=0 then				' If it is our turn then
    	Digit3=0					' Turn OFF the fourth LED
    	PortB=Disp_Patt				' Place the digit pattern on portC
    	If DP=1 then PortB.7=0			' Check the value of DP and Turn ON the decimal point
    	Digit0=1					' Turn ON the first LED
    	Endif
    ' Process the second display
    	If O_C=1 then				' If it is our turn then
    	Digit0=0					' Turn OFF the first LED
    	PortB=Disp_Patt				' Place the digit pattern on portC
    	If DP=2 then PortB.7=0			' Check the value of DP and Turn ON the decimal point
    	Digit1=1					' Turn ON the second LED
    	Endif
    ' Process the third display
    	If O_C=2 then				' If it is our turn then
    	Digit1=0					' Turn OFF the second LED
    	PortB=Disp_Patt				' Place the digit pattern on portC
    	If DP=3 then PortB.7=0			' Check the value of DP and Turn ON the decimal point
    	Digit2=1					' Turn ON the third LED
    	Endif
    ' Process the fourth display
    	If O_C=3 then				' If it is our turn then
    	Digit2=0					' Turn OFF the third LED
    	PortB=Disp_Patt				' Place the digit pattern on portC
    	If DP=3 then PortB.7=0			' Check the value of DP and Turn ON the decimal point
    	Digit3=1					' Turn ON the fourth LED
    	Endif
    
    	O_C=O_C+1					' Increment the time share counter
    	If O_C>=4 then O_C=0			' If it reaches 4 or over then clear it
    
    	T0IF=0    					' Reset TMR0 interrupt flag
            Resume					' Exit the interrupt
    	Enable					' Allow more interrupts
    Attached Images Attached Images  

  7. #7
    Join Date
    Dec 2008
    Location
    Ploiesti, ROMANIA
    Posts
    582


    Did you find this post helpful? Yes | No

    Default

    Code:
    ' Process the fourth display
    	If O_C=3 then				' If it is our turn then
    	Digit2=0					' Turn OFF the third LED
    If sign="-" then
            PortB=%00111111
            PortB.7=0
    else
    	PortB=Disp_Patt				' Place the digit pattern on portC
    endif
    	If DP=3 then PortB.7=0			' Check the value of DP and Turn ON the decimal point
    	Digit3=1					' Turn ON the fourth LED
    	Endif

Similar Threads

  1. Windows 7 64 bit problem..can anyone help???
    By ljc4141 in forum mel PIC BASIC Pro
    Replies: 16
    Last Post: - 18th July 2011, 15:29
  2. LED Machine Tach For Tired Eyes
    By Archangel in forum mel PIC BASIC Pro
    Replies: 33
    Last Post: - 27th January 2010, 14:55
  3. adding with 7 segments
    By ruijc in forum mel PIC BASIC Pro
    Replies: 4
    Last Post: - 28th November 2007, 22:51
  4. 7 segments clock
    By the_apprentice in forum mel PIC BASIC Pro
    Replies: 5
    Last Post: - 27th April 2006, 18:45
  5. 7 segment digit problem (using Mister E's code)
    By jmgelba in forum mel PIC BASIC Pro
    Replies: 7
    Last Post: - 9th September 2005, 20:25

Members who have read this thread : 0

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts