Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
08/06/11 08:52
Read: times


 
#183227 - Driving HT16K33 using 89S52
Hi,

I am driving 8 seven segment display using HT16K33 (20 pin package) with 89S52 contoller.

But my display not turns on.I read the datasheet & write the program according to it.

Can anybody help me to find out the mistake in the code.

The code is as below.

/*
Led display program using 16K33 (20 pin package) with 89s52 controller
*/
#include <c:c51incstdio.h>
#include <c:c51increg52.h>
#include <c:c51incintrins.h>

#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long int

#define SDA P25
#define SCL P24

uint ms10;

int stop(),
start(),
delay(),
outdata(),
shout(unsigned char serialout),
init_driver();

int init_driver() /*Driver initialisation program start here */
{
start(); //start command to HT16K33
shout(0x00); //display data address pointer
shout(0x21); //Turns on internal oscillator
shout(0x81); //Display on blinking off
shout(0xef); //Dimming set to 16/16
stop();
SDA = 1;
SCL = 1;
}

int outdata() /*Driver initialisation program start here */
{
start(); //start command to HT16K33
shout(0xe0); //slave address
shout(0x01); //command reg address byte display address set to 0x01
shout(0x55); //data byte 4 segnent turns on & 4 turns off
stop(); //stop command
SDA = 1;
SCL = 1;
}


stop() //stop subroutine for HT16K33
{
SDA = 0;
SCL = 1;
_nop_();
SDA = 1;
_nop_();
_nop_();
_nop_();
}

start() //start subroutine for HT16K33
{
SDA = 1;

SCL = 1;
_nop_();
SDA = 0;
_nop_();
_nop_();
SCL = 0;
_nop_();
}

int shout(unsigned char serialout) //Data transfer to HT16K33 subroutine
{
unsigned char eepromcounter;
eepromcounter = 0x08; //8 bit data transmission so counter loaded with 0x08
while(eepromcounter) //while counter does not become 0 out data to 16K33
{
serialout = serialout << 1; //left shift datareg
_nop_();
SDA = CY; //move carry on SDA line
_nop_();
SCL = 1; //give clock pulse
_nop_();
_nop_();
_nop_();
_nop_();
SCL = 0;
--eepromcounter; //decrement the counter by 1
}
SDA = 1; //make SDA high
_nop_();
_nop_();
SCL = 1; //give clock pulse
_nop_();
_nop_();
SCL = 0;
}

delay() //delay routine
{
unsigned char dly2;

dly2 = 0x100; //0x20
while(dly2 != 0x00)
--dly2;
}


void main(void)
{
SP = 0xa0;

delay(); //give power on delay of greater than 100 ms

TMOD = 0x11; //0001 0001 //both timers are initialised to 16 bit mode

TR0 = 1;
TR1 = 1;

TH0 = 0xfc; //load timer 0 for 1 ms
TL0 = 0x17;

TH1 = 0xec; //load timer 1 for 5 ms
TL1 = 0x78;

P0 = 0xff; //make all port as output port
P1 = 0xff;
P2 = 0xff;
P3 = 0xff;

init_driver(); //call driver initialisation routine

IE = 0x8a;

for(;;);
}

timecalc() interrupt 1 using 1
{
TH0 = 0xfc;
TL0 = 0x17;

++ms10;
if(ms10 > 1000) //1 sec timer
{
ms10 = 0;
outdata(); //every 1 sec give o/p to HT16K33
}
}

time() interrupt 3 using 3
{
TH1 = 0xfc;
TL1 = 0x17;
}





List of 19 messages in thread
TopicAuthorDate
Driving HT16K33 using 89S52            01/01/70 00:00      
   How to post legible source code            01/01/70 00:00      
      HLL Delay Routines - beware!!            01/01/70 00:00      
      modified code            01/01/70 00:00      
         How do you think that will help??            01/01/70 00:00      
   some comments on code            01/01/70 00:00      
      testing of new code            01/01/70 00:00      
         HLL Delay Routines            01/01/70 00:00      
         one thing            01/01/70 00:00      
            CY in C ? _NOT_            01/01/70 00:00      
               I'll use new code.            01/01/70 00:00      
   Getting success            01/01/70 00:00      
      one modification            01/01/70 00:00      
      For How Long?            01/01/70 00:00      
         No need to use that instruction            01/01/70 00:00      
            Start by caring about the C standard            01/01/70 00:00      
               Learning the 'C' programming language            01/01/70 00:00      
            C Language Supports No Carry Bits            01/01/70 00:00      
            Talking to HT16K33            01/01/70 00:00      

Back to Subject List