| ??? 12/18/04 20:15 Read: times |
#83435 - Changes as comments Responding to: ???'s previous message |
Sorry,
this is my first time registration on this Site. This time I made the corrections about posting and showed the changes with comments. I included a few delays, because I read in some other sites that these delays can change the result. Of course I'm not sure... Now I hope that the Posting seems to be better. /* =============== 2L_x_16C_TEST=============*/
/*====== Brief Description of program =======*/
/* Program to test out a 2 line LCD
on 0803 PCB. It also toggles a LED.
Code compiled and checked OK
on hardware. - 12 Nov 2004: 5.00PM */
/*==============Include Files ===============*/
#include <reg52.h>
#include <string.h> //was not included!
/*============== Type Defines ================*/
typedef unsigned char tChar;
typedef unsigned int tInt;
typedef unsigned long tLong;
/*============== Bit Defines =================*/
sfr P4 = 0xe8; //was not included!
sbit LCD_RS = P4^0; //was "...= P1^0;"
sbit LCD_R_W = P4^1; //was "...= P1^1;"
sbit LCD_ENB = P4^2; //was "...= P1^2;"
sbit TST_LED = P3^0; //was "...=P2^0;"
bit FLG_CPL;
/*==========Function Prototypes ==============*/
void ready(void);
void command(tChar);
void display(tChar *);
void msDelay(tInt);
/*================== MAIN ====================*/
void main(void)
{
msDelay(3); //was not included!
command(0x38);
msDelay(1);
command(0x38);
msDelay(1);
command(0x38);
msDelay(1);
command(0x0c);
command(0x01);
msDelay(5);
display("TEST");
while(1)
{
msDelay(10);
if (FLG_CPL == 1) // Toggle test LED
{
FLG_CPL = 0;
TST_LED = 0;
}
else
{
FLG_CPL = 1;
TST_LED = 1;
}
}
}
/*===============COMMAND==============================*/
void command(tChar cmd)
{
ready();
P1 = cmd; //was "P0 = cmd;"
LCD_RS = 0;
LCD_R_W = 0;
LCD_ENB = 1;
msDelay(2); //was not included!
LCD_ENB = 0;
}
/*================READY=============================*/
void ready(void)
{
msDelay(1);
}
/*================DISPLAY==============================*/
void display(tChar *msg)
{
tInt count;
for (count=0; count <= strlen(msg)-1; ++count)
{
if(count == 16)
command(0xc0);
ready();
P1 = msg[count]; //was "P0 = msg[count];"
LCD_RS = 1;
LCD_R_W = 0;
LCD_ENB = 1;
msDelay(1); //was not included!
LCD_ENB = 0;
}
}
/*==================MSDELAY=============================*/
void msDelay(tInt msec)
{
tInt cntr_1, cntr_2;
for (cntr_1 = 0; cntr_1 <= msec; ++cntr_1 )
{
for ( cntr_2 = 0; cntr_2 <= 5000; ++cntr_2);
}
}
/*================================================*/
Regards Mehmet KURT |
| Topic | Author | Date |
| C Code for LCD | 01/01/70 00:00 | |
| code | 01/01/70 00:00 | |
| Changes as comments | 01/01/70 00:00 | |
| re: code | 01/01/70 00:00 | |
| debugging? | 01/01/70 00:00 | |
| Points to check | 01/01/70 00:00 | |
| solution | 01/01/70 00:00 | |
| lcd display problem | 01/01/70 00:00 | |
| how to help when not knowing with what | 01/01/70 00:00 | |
| lcd display problem | 01/01/70 00:00 | |
| Contrast Problem. | 01/01/70 00:00 | |
| CONTRAST pot ? | 01/01/70 00:00 | |
lcd display problem ....solved | 01/01/70 00:00 |



