View previous topic :: View next topic |
Author |
Message |
moronilehi
Joined: 16 Jul 2009 Posts: 8 Location: chile
|
I'm in big trouble |
Posted: Thu Jul 16, 2009 11:27 pm |
|
|
Hi I am new to this whole world of microcontrollers and is the first time as I write English, and will not use a translator. My next concern is to buy an LCD VT162B / B alleged that his mind was consistent with S6A0069. Well I had problems with compatibility with many LCD and tried lcd driver of this page and other pages to be run my lcd where I worked and still does not work for me. After almost losing hope that I had asked to help the store where purchased and they sent me a file and datasheets of this model (do not accept returns jijjii). Well they sent me a library that supposedly works with the LCD VT162B / B, which supposedly supports the CCS compiler. Well it compiles the file with the CCS program and I get a compiler error message with the following statement.
Code: |
# byte PORTD = DataBus / / DEFINE DATA BUS
# byte Tris_DataBus = TRISD / / TRIS DEFINE DATA BUS
# byte PORTE = ControlBus / / DEFINE CONTROL BUS
# byte = Tris_ControlBus TRIS / / TRIS DEFINE THE BUS CONTROL |
I am using the CCS compiler 4.08 and pic16f874A do not know if the seller sent me a code for any street internet please help me thank you for your understanding. I am a newbie and I need to work for a school project.
PS Here's the code that sent me to the store if your use the LCD file without leaving the error would be grateful if you send me some examples:
Code: |
////////////////////////////////////////////////////////////////////////////////
// LCD.H //
// VERSION 2.1 //
// JULIO 2009 //
// //
//////////////////////////////////////////////////////////////////////////////////
#nolist
// DEFINICION DE CONSTANTES PARA USO EN FUNCIONES
#define HOME 0x02 // PARA PONER CURSOR EN LA POSICION 0 DEL DISPLAY. USAR CON WRITE_LCD_COM
#define INCREASE 0x02 // INCREMENTA CURSOR. USAR CON LCD.ID
#define DECREASE 0x00 // DECREMENTA CURSOS. USAR CON LCD.ID
#define SHIFT_ON 0x01 // SHIFT DISPLAY. USAR CON LCD.SHIFT
#define SHIFT_OFF 0x00 // NO SHIFT DISPLAY. USAR CON LCD.SHIFT
#define LCD_ON 0x04 // ACTIVA LCD. USAR CON LCD.MODE
#define LCD_OFF 0x00 // DESACTIVA LCD. USAR CON LCD.MODE
#define CURSOR_ON 0x02 // ACTIVA CURSOR. USAR CON LCD.CURSOR
#define CURSOR_OFF 0x00 // DESACTIVA CURSOR. USAR CON LCD.CURSOR
#define BLINK_ON 0x01 // ACTIVA PARPADEO DEL CURSOR. USAR CON LCD.BLINK
#define BLINK_OFF 0x00 // DESACTIVA PARPADEO DEL CURSOR. USAR CON LCD.BLINK
#define BUS_8 0x10 // DEFINE BUS DE 8 BITS. USAR CON LCD.INTERFASE
#define BUS_4 0x00 // DEFINE BUS DE 4 BITS. USAR CON LCD.INTERFASE
#define CLEAR 0x01 // LIMPIA DISPLAY. USAR CON FUNCION WRITE_LCD_DATA()
#define NOCLEAR 0x00 // NO LIMPIA DISPLAY. USAR CON FUNCION WRITE_LCD_DATA()
#define LINE1 0x00 // PRIMERA DIRECCION DE LINEA 1.
#define LINE2 0x40 // PRIMERA DIRECCION DE LINEA 2.
#define LINE3 0x14 // PRIMERA DIRECCION DE LINEA 3.
#define LINE4 0x54 // PRIMERA DIRECCION DE LINEA 4.
#define LARGO 16 // Editar esta línea para indicar la cantidad de caracteres por línea del display
#define LINEAS 2 // Editar este línea para indicar la cantidad de líneas que dispone el display
#define NULL 0x00
#list
struct
{
char TEXT[LARGO+1]; // define texto para escribir en lcd
int ID; // define si el cursor de incrementará o decrementará
int SHIFT; // define el shift del cursor
int MODE; // define si el display está ON ú OFF
int CURSOR; // define si el cursor estará visible
int BLINK; // define si el cursor parpadeará
int INTERFASE; // define interfase de 4/8 bits
} lcd;
// CONFIGURAR AQUI LOS PUERTO QUE SE USARAN PARA BUS DE DATOS Y DE CONTROL
/*
#byte DataBus = PORTD // DEFINE BUS DE DATOS
#byte Tris_DataBus = TRISD // DEFINE TRIS DE BUS DE DATOS
#byte ControlBus = PORTE // DEFINE BUS DE CONTROL
#byte Tris_ControlBus = TRISE // DEFINE TRIS DEL BUS DE CONTROL
*/
#byte DataBus = PORTD // DEFINE BUS DE DATOS
#byte Tris_DataBus = TRISD // DEFINE TRIS DE BUS DE DATOS
#byte ControlBus = PORTE // DEFINE BUS DE CONTROL
#byte Tris_ControlBus = TRISE // DEFINE TRIS DEL BUS DE CONTROL
// GENERA PULSOS DE ESCRITURA PARA COMANDOS DEL DISPLAY Y SACA DATO
void WriteLcdComData(int x)
{
Tris_ControlBus = 0xF8 & Tris_ControlBus;
Tris_DatalBus = 0x00;
DataBus = ControlBus = 0x00;
ControlBus = 3;
ControlBus = 0;
ControlBus = 4;
DataBus = x;
ControlBus = 0;
ControlBus = 3;
delay_us(50);
}
// LIMPIA DISPLAY
void ClearLcd(void)
{
WriteLcdComData(CLEAR); // display clear
delay_ms(2);
}
// INICIALIZA EL EL DISPLAY
void IniLcd(void)
{
delay_ms(20);
WriteLcdComData(0x30);
delay_ms(5);
WriteLcdComData(0x30);
delay_us(150);
WriteLcdComData(0x30);
}
// CONFIGURA EL DISPLAY. LOS DATOS PARA LA CONFIGURACION DEBEN SER PUERTOS ANTES DE LLAMAR
// A ESTA FUNCION. LOS DATOS SON PARTE DE LA ESTRUCTURA LCD.
void SetupLcd(void)
{
WriteLcdComData(0x04 | lcd.ID | lcd.SHIFT); //ENTRY MODE SET
WriteLcdComData(0x08 | lcd.MODE | lcd.CURSOR | lcd.BLINK); // DISPLAY ON OFF
WriteLcdComData(0x28 | lcd.INTERFASE); // SET FUNCTION
}
// ESCRIBE DATOS EN EL DISPLAY. X REPRSENTA DESDE QUE DIRECCIÓN DEL DISPLAY SE DESEAN ESCRIBIR LOS DATOS
// E Y INDICA SE SE LIMPIARÁ EL DISPLAY ANTES DE ESCRIBIR
// SI C = CLEAN, EL DISPLAY ES LIMPIADO
// SI C = NOCLEAN, SOLO SE ESCRIBEN LOS DATOS DESDE LA POCISION ESPECIFICADA POR POS
// LOS DATOS A ESCRIBIR DEBE SER COPIADOS PREVIAMENTE EN EL ELEMENTO LCD.TEXT DE LA ESCTRUCTIRA LCD
void WriteLcd(int pos, int c)
{
int *p;
Tris_ControlBus = 0xF8 & Tris_ControlBus;
Tris_DatalBus = 0x00;
DataBus = ControlBus =0x00;
if (c)
{
clear_lcd();
delay_ms(2);
}
pos|= 0x80;
WriteLcdComData(pos);
p = lcd.TEXT;
for (; *p!=NULL; p++)
{
DataBus = 0xff;
ControlBus = 2;
ControlBus = 1;
ControlBus = 5;
DataBus = *p;
ControlBus = 1;
ControlBus = 2;
delay_us(50);
}
}
void PutcLcd(int ini, char data)
{
if (ini != CURRENT)
{
ini|= 0x80;
WriteLcdComData(ini);
}
Tris_ControlBus = 0xF8 & Tris_ControlBus;
Tris_DatalBus = ControlBus = 0x00;
DataBus = 0xff;
ControlBus = 2;
ControlBus = 1;
ControlBus = 5;
DataBus = data;
ControlBus = 1;
ControlBus = 2;
delay_us(50);
}
void ClearLcdLine(int x)
{
int y;
for (y=0; y<=LARGO; y++)
{
lcd.TEXT[y] = ' ';
}
lcd.TEXT[++y] = NULL;
switch (x)
{
case 1 : WriteLcd(LINE1,NOCLEAR);
break;
case 2 : WriteLcd(LINE2,NOCLEAR);
break;
case 3 : WriteLcd(LINE3,NOCLEAR);
break;
case 4 : WriteLcd(LINE4,NOCLEAR);
break;
default : break;
}
}
|
Code: | // and the other part of the code is:
#include <16F877.h>
#device adc=8
#FUSES NOWDT //No Watch Dog Timer
#FUSES HS //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
//#FUSES WRT_50% //Lower half of Program Memory is Write Protected
#FUSES NOBROWNOUT //No brownout reset
#use delay(clock=20000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
#include <lcdvt162b.h>
void main()
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
IniLcd();
}
while(true)
{
WriteLcdComData("hola mundo");
}
} |
[email protected] |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Fri Jul 17, 2009 12:35 am |
|
|
1. Post a list of the connections between the PIC pins and the LCD pins.
2. Also post a description of the contrast circuit that you have connected
to pin 3 of the LCD. Measure the voltage on pin 3 with a voltmeter.
What is it ?
3. Post if you have connected Ground to pin 1 of the LCD, and +5v to
pin 2 of the LCD.
4. Have ever made this PIC board do anything, such as blink an LED ?
Do you know that the PIC is working ? |
|
|
moronilehi
Joined: 16 Jul 2009 Posts: 8 Location: chile
|
|
Posted: Fri Jul 17, 2009 9:44 am |
|
|
Hello
I should mention that the program gave me a person of the company or manufacturer vtronic representative of this model LCD VT162B. This unique code is not found on the internet, so I told the man. yours can serve those who use this model of LCD and have compatibility problems.
1) that connect the pins as follows.
LCD PIC
D0-7 PORD / / Busdata
RS, RW and E PORTE / / I m not specific to the individual company. In any case it is the buscontrol.
2) I had problem to run it. I have not had positive results.
This is the page where the information leaves the LCD datasheet:
http://rapidshare.com/files/256862751/vt162C_v1.0.pdf.html
I used to prove the Proteus and so I have an armed protoboard without result.
That is the connection to a potentiometer voltage V0.
Vdd ---- / \ / \ / \ / \ ---- V0--- / \ / \ / \ ---- Vss / /
3) use the connection scheme of the page:
http://www.vtronic.com.cn/products/images/VT162B-B.pdf
4) no signs of life through programs such as simulation proteus.
I do not work as described by the error comes at the beginning of the forum.
Problems with TRIS and PORT .
Sincerely thanks. |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Fri Jul 17, 2009 10:26 am |
|
|
You did not answer the questions with enough information.
1. Post the exact pin to pin connections between the PIC and the LCD.
Give the pin numbers for each connection.
2. Measure the voltage on the V0 pin on the LCD. What is it ? |
|
|
moronilehi
Joined: 16 Jul 2009 Posts: 8 Location: chile
|
|
Posted: Fri Jul 17, 2009 11:32 am |
|
|
1) VO LCD pin 3 which governs the contrast.
VDD voltage at pin 2 positive lcd. vss negative voltage pin 1 on the lcd.
In summary
LCD PINS-------------------------------------------------micro controller pins
1 VSS Power ground --------------------------------------------- -
2 VDD Power supply ----------------------------------------- -
3 V0 Negative voltage for LCD driving ------------------------------------------------ -
4 RS Register selection input -------------------------------------------- RE2
5 R/W Read/write selection input ------------------------------------ RE1
6 E Enable signal input -------------------------------------------- RE0
7-14 DB0~DB7 Data bus -------------------------------------------- RB0-RB7 // según configuración de 4 o 8 bit
15 LED+A Led backlight anode
2) I give away with a variable resistance between 0 - 5 v V0 is the contrast of the LCD screen, as measured with the MultiTest delivery and the voltage in the range of 0 to 5v. |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Fri Jul 17, 2009 11:45 am |
|
|
Try using the Flex LCD driver:
http://www.ccsinfo.com/forum/viewtopic.php?t=24661
Change the #define statements for the pins at the start of the Flex
driver code, to the pins shown below. This fits your hardware connections:
Code: |
#define LCD_DB4 PIN_B4
#define LCD_DB5 PIN_B5
#define LCD_DB6 PIN_B6
#define LCD_DB7 PIN_B7
#define LCD_E PIN_E0
#define LCD_RS PIN_E2
#define LCD_RW PIN_E1
|
Set the contrast voltage on pin V0 to be 0.5 volts.
Also, note that pins B6 and B7 are used by the ICD Debugger or
Programmer. After you have programmed the PIC, you need to
unplug the ICD connector from the PIC. The LCD and the ICD
can't share B6 and B7 at the same time.
It's easier if you use different pins than B6 and B7 for the LCD.
The Flex driver allows you to change the pins easily, after you
have changed the connections on your board. |
|
|
Guest
|
|
Posted: Fri Jul 17, 2009 4:20 pm |
|
|
nothing happens. follow each step.
truth I'm already in despair over this situation I will rebuke the classes . the screen is in black. |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Fri Jul 17, 2009 4:34 pm |
|
|
Post your test program, that calls the Flex driver, and attempts to display
some text on the LCD.
Don't post the Flex driver, just post your test program. The program
should be very small, but complete, and it should be compilable with no
errors.
It should have the #include for the PIC, #fuses statement, #use delay(),
#include for the Flex driver, and main(). |
|
|
Guest
|
|
Posted: Fri Jul 17, 2009 4:42 pm |
|
|
Code: | #include <16F877.H>
#fuses XT, NOWDT, NOPROTECT, BROWNOUT, PUT, NOLVP
#use delay(clock = 4000000)
#include "flex_lcd.c"
//==========================
void main()
{
lcd_init(); // Always call this first.
while(1); {
lcd_putc("\hola mundo");
delay_ms(2000);
lcd_putc("\f");
}
} |
|
|
|
moronilehi
Joined: 16 Jul 2009 Posts: 8 Location: chile
|
|
Posted: Fri Jul 17, 2009 4:59 pm |
|
|
the probe in proteus simulator and it works fine but when I program the microcontroller only goes black LCD Screen
#include <16F877.H>
#fuses XT, NOWDT, NOPROTECT, BROWNOUT, PUT, NOLVP
#use delay(clock = 4000000)
#include "flex_lcd.c"
//==========================
void main()
{
lcd_init(); // Always call this first.
while(1) {
lcd_putc("\hola mundo");
delay_ms(2000);
lcd_putc("\f");
}
}
Last edited by moronilehi on Fri Jul 17, 2009 5:04 pm; edited 1 time in total |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Fri Jul 17, 2009 5:00 pm |
|
|
The semi-colon ; is blocking the program from entering the code inside
the braces. Remove it.
There is no way the program can "work fine" with that semi-colon in it. |
|
|
moronilehi
Joined: 16 Jul 2009 Posts: 8 Location: chile
|
|
Posted: Fri Jul 17, 2009 5:09 pm |
|
|
it had only copied a previous version inadvertently apology.had already corrected; but still not working |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Fri Jul 17, 2009 5:18 pm |
|
|
Always post the exact code that you are currently using. |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Fri Jul 17, 2009 5:28 pm |
|
|
Have you ever made your hardware PIC board run any program before ?
Have you made it blink an LED ?
Do you know that your hardware board works ?
I don't see a link to your Proteus schematic anymore. It looks like
you removed the link.
Do you have a crystal installed on your hardware board (with the
associated capacitors) ?
Do you have a pull-up resistor on the MCLR pin ?
Any of these things can make the board fail to work, if they are missing. |
|
|
moronilehi
Joined: 16 Jul 2009 Posts: 8 Location: chile
|
|
Posted: Fri Jul 17, 2009 5:31 pm |
|
|
Sorry I am using a translator to write. You are a big help. Really. And I appreciate it . What I meant is that the corrections requested but not yet working on lcd.
I do not know what can be |
|
|
|