Sure you can.
Sure you can.
Steve
It's not a bug, it's a random feature.
There's no problem, only learning opportunities.
But now it's working,baragraph isn't showing on the LCD display,just Value: 1,2 etc.
I use 2*16 LCD display.Should I change the code in LCDbar_INC.bas
Must be intranet interference, my crystal ball refuse to give me your code, could you post your code here and PIC model, so we could see what's wrong with?![]()
Steve
It's not a bug, it's a random feature.
There's no problem, only learning opportunities.
define OSC 20
CLEAR
INCLUDE "LCDbar_INC.bas" ' Include the BARgraph routines
' Define LCD connections
DEFINE LCD_DREG PORTB ' LCD Data Port
DEFINE LCD_DBIT 0 ' Starting Data Bit
DEFINE LCD_RSREG PORTB ' Register Select Port
DEFINE LCD_RSBIT 4 ' Register Select Bit
DEFINE LCD_EREG PORTB ' Enable Port
DEFINE LCD_EBIT 5 ' Enable Bit
DEFINE LCD_BITS 4 ' Data Bus Size
DEFINE LCD_LINES 2 ' Number of Lines on LCD
DEFINE ADC_BITS 8 ' Number of bits in ADCIN result
ADCON1.7 = 1 ' Right Justify AD result
Value VAR WORD ' Must be a WORD even though AD is 8bit
LCDOUT $FE, 1 ' Clear Screen
PAUSE 200
Loop1:
ADCIN 0, Value
LCDOUT $FE,2,"Value = ",DEC Value," "
; syntax- BARgraph Value, Row, Col, Width, Range, Style
@ BARgraph _Value, 2, 0, 16, 255, lines
Goto Loop1
END
I use PIC16F877 @ 20MHz(I use 8 MHz,too) I delete the frist line because there is an error in compiling
Hopefully someone smarter than me can figure this out. Darrel, this program is awesome by the way!
I'm using an OLED screen and Darrel's anypin LCD program. The OLED screen works perfectly with the data displayed but not with bargraph program. Anyhow, have a for-next loop counting to 512. It runs perfectly up until 32 or so and then displays strange stuff until it hits 99 then it's good again until about 155 then bad again until about 222 then good again until 272 then bad until about 342 then good until about 388 then bad until about 462 and then it goes to 512 and loops back around. The program looks like this:
Code:DEFINE OSC 48 include "LCDBAR_INC.PBP" '=============================================================================== ' OLED CHANGE '=============================================================================== '===============================ENABLE FOR CAR PROGRAM==========================' LCD_DB4 VAR PORTE.0 LCD_DB5 VAR PORTE.1 LCD_DB6 VAR PORTE.2 LCD_DB7 VAR PORTA.4 LCD_RS VAR PORTB.6 LCD_E VAR PORTB.7 '================================================================================ LCD_Lines CON 2 ' # of Lines on LCD, 1 or 2 (Note: use 2 for 4 lines) LCD_DATAUS CON 50 ' Data delay time in us LCD_COMMANDUS CON 2000 ' Command delay time in us INCLUDE "LCD_AnyPin.PBP" ; *** Include MUST be AFTER LCD Pin assignments **** ' ============================================================================== ' CONFIGS '=============================================================================== @ __CONFIG _CONFIG1L, _PLLDIV_5_1L & _CPUDIV_OSC1_PLL2_1L & _USBDIV_2_1L @ __CONFIG _CONFIG1H, _FOSC_HSPLL_HS_1H & _FCMEN_OFF_1H & _IESO_OFF_1H @ __CONFIG _CONFIG2L, _PWRT_OFF_2L & _BOR_OFF_2L & _BORV_3_2L & _VREGEN_ON_2L @ __CONFIG _CONFIG2H, _WDT_OFF_2H & _WDTPS_32768_2H @ __CONFIG _CONFIG3H, _CCP2MX_ON_3H & _PBADEN_OFF_3H & _LPT1OSC_OFF_3H & _MCLRE_ON_3H @ __CONFIG _CONFIG4L, _STVREN_ON_4L & _LVP_OFF_4L & _ICPRT_ON_4L & _XINST_OFF_4L '============================================================================== ' SETTINGS ' ============================================================================== '76543210 '76543210 TRISA = %00100110: PORTA = %00000000 TRISB = %00010001: PORTB = %00010000 TRISC = %00000000: PORTC = %00000001 TRISD = %11011100: PORTD = %00000000 TRISE = %00010000: PORTE = %00010000 ADCON0 = %00000001 CMCON = 7 SSPSTAT = %01100100 SSPCON1 = %00100001 BAUDCON = %00001111 ADCON1=15 CCP2CON = %00011100 'changed on 11/16/12 CCP1CON = %00011100 'changed on 11/16/12 X VAR WORD MainLoop: FOR X=1 TO 512 PAUSE 100 LCDOUT $FE,148,DEC X," " '@ BARgraph Value, Row, Col, Width, Range, Style @ BARgraph _X, 1, 0, 20, 512, lines NEXT X GOTO MAINLOOP
I've tried a bunch of stuff (changing the parameters on the @ bargraph line but nothing seemed to help. This is the OLED screen I'm using:
http://www.newhavendisplay.com/specs...420DZW-AY5.pdf
Everytime I hear Newhaven, I cringe.
Here's your program running on a 4550 at 48Mhz in the simulator.
So I don't think it's a programming issue.
It could be an R-M-W problem.
Is the LCD connected via a ribbon cable? If so how long?
Have you tried running the CPU at 20Mhz without the PLL?
Or it could be just another Newhaven issue.
Have you tried a normal LCD?
DT
I did a lot of testing last night and it does appear to be the OLED screen that has issues. I have two OLED screens mounted on two different pieces of equipment and with the code above they do the same thing. I then put a standard LCD screen (2X16) through the same tests and it worked perfectly. I now have more questions than answers.
Why? They work perfectly with displaying letters and numbers and the OLED screen is so much better than an LCD screen. I'm guessing you've had problems with them in the past?Everytime I hear Newhaven, I cringe.
That thing is pretty cool. Where can I get it?Here's your program running on a 4550 at 48Mhz in the simulator.
After some testing, here is some information that may be useful.........or may not be. With the following line of code:The software will work perfectly from 0 to 33. If I use a For/Next routine for 0-33, it will run with no problems for hours on end (I know it will, trust me!) When I put 0-34, it flakes out when it gets to 34 and only 34. When it rolls back around, the same thing happens. 0-33 works good and then 34 won't, up until 98 or so. I don't get that.Code:@ BARgraph _X, 0, 0, 20, 512, lines
By changing to the following code:Now 0-110 works perfectly. The only thing I did was move the column from 0 to 1! Riddle me that one!Code:@ BARgraph _X, 0, 1, 20, 512, lines
Also, if I just change to this codeNow it will count much higher without a problem.@ BARgraph _X, 0, 1, 20, 10000, lines
Last edited by Christopher4187; - 21st November 2012 at 11:24.
In this code what does "Rep" do? I'm using it with the Proton IDE Basic Compiler.
It works OK, but I am curious as I can't find any reference to "Rep" in the documentation.
Is it a repeat function?
Thanks, Mark
Print $FE, CGRAM, Rep $0\8,$0, Rep $10\6,$0,$0, Rep $14\6,$0,$0, Rep $15\6,$0,$0
Warnings = OFF
Byte_Math = On
BARS = (TOP_BAR Min MAXBAR) / 3 ; One full bar for each 3 graph units
BALANCE = (TOP_BAR Min MAXBAR) //3 ; Balance is the remainder after a division by 3
BALF = BALANCE Min 1
Print At 1,1, Dec3 POWERMAX, "W "
Print At 1,6, Rep FULLBAR\BARS,Rep (BALANCE + BASEBAR)\BALF,Rep " "\B_WDTH - (BARS + BALF)
BARS = (LOW_BAR Min MAXBAR) / 3 ; One full bar for each 3 graph units
BALANCE = (LOW_BAR Min MAXBAR) //3 ; Balance is the remainder after a division by 3
BALF = BALANCE Min 1
You are on the wrong forum. Here is MELABS PicBasic Forum.
But anyway, REP is just repeating the next character \times
Ioannis
Bookmarks