|
|
View previous topic :: View next topic |
Author |
Message |
kein
Joined: 23 Jul 2007 Posts: 103
|
8x8 dot Matrix not displaying proper message |
Posted: Sat Feb 02, 2013 9:58 am |
|
|
Gentlemen,
I'm having problem displaying message on my 8x8 dot matrix display. I've modified a small c code rewriting it in C using CCS C compiler. In as far as my hardware is concern, I'm using a pic16f877a, a 74HC595, NPN transistors and a CD4017. As you would note in the code, I'm emulating serial communication by connecting the 74hc595 serial data pin to PIN_D2 as the serial port pins on the micro will be used for other purpose.
Scrolling is as expected except that the message being displayed is garbage. I have a strong feeling that I'm emulating the serial communication properly. The code is as attached below. Would anyone kindly assist.
Appreciate your help in advance.
javascript:emoticon('')
Code: | #include <16F877A.h>
#include <string.h>
//#device adc=10
#fuses HS,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay(clock=20000000)
#define mask 0x01
#define Shift 8
#define ButInput PIN_E0
// Define LCD module connections.
/* sbit Serial_Data at LATC2_bit;
SH_Clk at LATC6_bit;
ST_Clk at LATC7_bit;
CD4017_Clk at LATA2_bit;
CD4017_RST at LATA1_bit;*/
#define SH_CLK PIN_D0
#define ST_CLK PIN_D1
#define SER_DATA PIN_D2
#define CD4017_CLK PIN_D3
#define CD4017_RST PIN_D4
char columns [8] ={1,2,4,8,16,32,64,128};
//char const pat[8]={0x3f,0x02,0x04,0x02,0x3f,0xff,0x06, 0x0f};
const unsigned char CharData[][8] ={
{0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000},
{0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00000000, 0b00000100},
{0b00001010, 0b00001010, 0b00001010, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000},
{0b00000000, 0b00001010, 0b00011111, 0b00001010, 0b00011111, 0b00001010, 0b00011111, 0b00001010},
{0b00000111, 0b00001100, 0b00010100, 0b00001100, 0b00000110, 0b00000101, 0b00000110, 0b00011100},
{0b00011001, 0b00011010, 0b00000010, 0b00000100, 0b00000100, 0b00001000, 0b00001011, 0b00010011},
{0b00000110, 0b00001010, 0b00010010, 0b00010100, 0b00001001, 0b00010110, 0b00010110, 0b00001001},
{0b00000100, 0b00000100, 0b00000100, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000},
{0b00000010, 0b00000100, 0b00001000, 0b00001000, 0b00001000, 0b00001000, 0b00000100, 0b00000010},
{0b00001000, 0b00000100, 0b00000010, 0b00000010, 0b00000010, 0b00000010, 0b00000100, 0b00001000},
{0b00010101, 0b00001110, 0b00011111, 0b00001110, 0b00010101, 0b00000000, 0b00000000, 0b00000000},
{0b00000000, 0b00000000, 0b00000100, 0b00000100, 0b00011111, 0b00000100, 0b00000100, 0b00000000},
{0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000110, 0b00000100, 0b00001000},
{0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00001110, 0b00000000, 0b00000000, 0b00000000},
{0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000100},
{0b00000001, 0b00000010, 0b00000010, 0b00000100, 0b00000100, 0b00001000, 0b00001000, 0b00010000},
{0b00001110, 0b00010001, 0b00010011, 0b00010001, 0b00010101, 0b00010001, 0b00011001, 0b00001110},
{0b00000100, 0b00001100, 0b00010100, 0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00011111},
{0b00001110, 0b00010001, 0b00010001, 0b00000010, 0b00000100, 0b00001000, 0b00010000, 0b00011111},
{0b00001110, 0b00010001, 0b00000001, 0b00001110, 0b00000001, 0b00000001, 0b00010001, 0b00001110},
{0b00010000, 0b00010000, 0b00010100, 0b00010100, 0b00011111, 0b00000100, 0b00000100, 0b00000100},
{0b00011111, 0b00010000, 0b00010000, 0b00011110, 0b00000001, 0b00000001, 0b00000001, 0b00011110},
{0b00000111, 0b00001000, 0b00010000, 0b00011110, 0b00010001, 0b00010001, 0b00010001, 0b00001110},
{0b00011111, 0b00000001, 0b00000001, 0b00000001, 0b00000010, 0b00000100, 0b00001000, 0b00010000},
{0b00001110, 0b00010001, 0b00010001, 0b00001110, 0b00010001, 0b00010001, 0b00010001, 0b00001110},
{0b00001110, 0b00010001, 0b00010001, 0b00001111, 0b00000001, 0b00000001, 0b00000001, 0b00000001},
{0b00000000, 0b00000100, 0b00000100, 0b00000000, 0b00000000, 0b00000100, 0b00000100, 0b00000000},
{0b00000000, 0b00000100, 0b00000100, 0b00000000, 0b00000000, 0b00000100, 0b00000100, 0b00001000},
{0b00000001, 0b00000010, 0b00000100, 0b00001000, 0b00001000, 0b00000100, 0b00000010, 0b00000001},
{0b00000000, 0b00000000, 0b00000000, 0b00011110, 0b00000000, 0b00011110, 0b00000000, 0b00000000},
{0b00010000, 0b00001000, 0b00000100, 0b00000010, 0b00000010, 0b00000100, 0b00001000, 0b00010000},
{0b00001110, 0b00010001, 0b00010001, 0b00000010, 0b00000100, 0b00000100, 0b00000000, 0b00000100},
{0b00001110, 0b00010001, 0b00010001, 0b00010101, 0b00010101, 0b00010001, 0b00010001, 0b00011110},
{0b00001110, 0b00010001, 0b00010001, 0b00010001, 0b00011111, 0b00010001, 0b00010001, 0b00010001},
{0b00011110, 0b00010001, 0b00010001, 0b00011110, 0b00010001, 0b00010001, 0b00010001, 0b00011110},
{0b00000111, 0b00001000, 0b00010000, 0b00010000, 0b00010000, 0b00010000, 0b00001000, 0b00000111},
{0b00011100, 0b00010010, 0b00010001, 0b00010001, 0b00010001, 0b00010001, 0b00010010, 0b00011100},
{0b00011111, 0b00010000, 0b00010000, 0b00011110, 0b00010000, 0b00010000, 0b00010000, 0b00011111},
{0b00011111, 0b00010000, 0b00010000, 0b00011110, 0b00010000, 0b00010000, 0b00010000, 0b00010000},
{0b00001110, 0b00010001, 0b00010000, 0b00010000, 0b00010111, 0b00010001, 0b00010001, 0b00001110},
{0b00010001, 0b00010001, 0b00010001, 0b00011111, 0b00010001, 0b00010001, 0b00010001, 0b00010001},
{0b00011111, 0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00011111},
{0b00011111, 0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00010100, 0b00001000},
{0b00010001, 0b00010010, 0b00010100, 0b00011000, 0b00010100, 0b00010010, 0b00010001, 0b00010001},
{0b00010000, 0b00010000, 0b00010000, 0b00010000, 0b00010000, 0b00010000, 0b00010000, 0b00011111},
{0b00010001, 0b00011011, 0b00011111, 0b00010101, 0b00010001, 0b00010001, 0b00010001, 0b00010001},
{0b00010001, 0b00011001, 0b00011001, 0b00010101, 0b00010101, 0b00010011, 0b00010011, 0b00010001},
{0b00001110, 0b00010001, 0b00010001, 0b00010001, 0b00010001, 0b00010001, 0b00010001, 0b00001110},
{0b00011110, 0b00010001, 0b00010001, 0b00011110, 0b00010000, 0b00010000, 0b00010000, 0b00010000},
{0b00001110, 0b00010001, 0b00010001, 0b00010001, 0b00010001, 0b00010101, 0b00010011, 0b00001111},
{0b00011110, 0b00010001, 0b00010001, 0b00011110, 0b00010100, 0b00010010, 0b00010001, 0b00010001},
{0b00001110, 0b00010001, 0b00010000, 0b00001000, 0b00000110, 0b00000001, 0b00010001, 0b00001110},
{0b00011111, 0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00000100},
{0b00010001, 0b00010001, 0b00010001, 0b00010001, 0b00010001, 0b00010001, 0b00010001, 0b00001110},
{0b00010001, 0b00010001, 0b00010001, 0b00010001, 0b00010001, 0b00010001, 0b00001010, 0b00000100},
{0b00010001, 0b00010001, 0b00010001, 0b00010001, 0b00010001, 0b00010101, 0b00010101, 0b00001010},
{0b00010001, 0b00010001, 0b00001010, 0b00000100, 0b00000100, 0b00001010, 0b00010001, 0b00010001},
{0b00010001, 0b00010001, 0b00001010, 0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00000100},
{0b00011111, 0b00000001, 0b00000010, 0b00000100, 0b00001000, 0b00010000, 0b00010000, 0b00011111},
{0b00001110, 0b00001000, 0b00001000, 0b00001000, 0b00001000, 0b00001000, 0b00001000, 0b00001110},
{0b00010000, 0b00001000, 0b00001000, 0b00000100, 0b00000100, 0b00000010, 0b00000010, 0b00000001},
{0b00001110, 0b00000010, 0b00000010, 0b00000010, 0b00000010, 0b00000010, 0b00000010, 0b00001110},
{0b00000100, 0b00001010, 0b00010001, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000},
{0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00011111},
{0b00001000, 0b00000100, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000},
{0b00000000, 0b00000000, 0b00000000, 0b00001110, 0b00010010, 0b00010010, 0b00010010, 0b00001111},
{0b00000000, 0b00010000, 0b00010000, 0b00010000, 0b00011100, 0b00010010, 0b00010010, 0b00011100},
{0b00000000, 0b00000000, 0b00000000, 0b00001110, 0b00010000, 0b00010000, 0b00010000, 0b00001110},
{0b00000000, 0b00000001, 0b00000001, 0b00000001, 0b00000111, 0b00001001, 0b00001001, 0b00000111},
{0b00000000, 0b00000000, 0b00000000, 0b00011100, 0b00010010, 0b00011110, 0b00010000, 0b00001110},
{0b00000000, 0b00000011, 0b00000100, 0b00000100, 0b00000110, 0b00000100, 0b00000100, 0b00000100},
{0b00000000, 0b00001110, 0b00001010, 0b00001010, 0b00001110, 0b00000010, 0b00000010, 0b00001100},
{0b00000000, 0b00010000, 0b00010000, 0b00010000, 0b00011100, 0b00010010, 0b00010010, 0b00010010},
{0b00000000, 0b00000000, 0b00000100, 0b00000000, 0b00000100, 0b00000100, 0b00000100, 0b00000100},
{0b00000000, 0b00000010, 0b00000000, 0b00000010, 0b00000010, 0b00000010, 0b00000010, 0b00001100},
{0b00000000, 0b00010000, 0b00010000, 0b00010100, 0b00011000, 0b00011000, 0b00010100, 0b00010000},
{0b00000000, 0b00010000, 0b00010000, 0b00010000, 0b00010000, 0b00010000, 0b00010000, 0b00001100},
{0b00000000, 0b00000000, 0b00000000, 0b00001010, 0b00010101, 0b00010001, 0b00010001, 0b00010001},
{0b00000000, 0b00000000, 0b00000000, 0b00010100, 0b00011010, 0b00010010, 0b00010010, 0b00010010},
{0b00000000, 0b00000000, 0b00000000, 0b00001100, 0b00010010, 0b00010010, 0b00010010, 0b00001100},
{0b00000000, 0b00011100, 0b00010010, 0b00010010, 0b00011100, 0b00010000, 0b00010000, 0b00010000},
{0b00000000, 0b00001110, 0b00010010, 0b00010010, 0b00001110, 0b00000010, 0b00000010, 0b00000001},
{0b00000000, 0b00000000, 0b00000000, 0b00001010, 0b00001100, 0b00001000, 0b00001000, 0b00001000},
{0b00000000, 0b00000000, 0b00001110, 0b00010000, 0b00001000, 0b00000100, 0b00000010, 0b00011110},
{0b00000000, 0b00010000, 0b00010000, 0b00011100, 0b00010000, 0b00010000, 0b00010000, 0b00001100},
{0b00000000, 0b00000000, 0b00000000, 0b00010010, 0b00010010, 0b00010010, 0b00010010, 0b00001100},
{0b00000000, 0b00000000, 0b00000000, 0b00010001, 0b00010001, 0b00010001, 0b00001010, 0b00000100},
{0b00000000, 0b00000000, 0b00000000, 0b00010001, 0b00010001, 0b00010001, 0b00010101, 0b00001010},
{0b00000000, 0b00000000, 0b00000000, 0b00010001, 0b00001010, 0b00000100, 0b00001010, 0b00010001},
{0b00000000, 0b00000000, 0b00010001, 0b00001010, 0b00000100, 0b00001000, 0b00001000, 0b00010000},
{0b00000000, 0b00000000, 0b00000000, 0b00011111, 0b00000010, 0b00000100, 0b00001000, 0b00011111},
{0b00000010, 0b00000100, 0b00000100, 0b00000100, 0b00001000, 0b00000100, 0b00000100, 0b00000010},
{0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00000100, 0b00000100},
{0b00001000, 0b00000100, 0b00000100, 0b00000100, 0b00000010, 0b00000100, 0b00000100, 0b00001000},
{0b00000000, 0b00000000, 0b00000000, 0b00001010, 0b00011110, 0b00010100, 0b00000000, 0b00000000}
};
void send_data(unsigned char tmp);
unsigned char DisplayBuffer[]={0,0,0,0,0,0,0,0};
unsigned int speed;
char i, l, k, ShiftAmount, scroll, temp, shift_step=1, StringLength;
char message[]="SCROLLING MESSAGE ON LED DOT-MATRIX DISPLAY ";
char index;
void main()
{
//unsigned int8 i,j,k;
unsigned int16 cnt;
unsigned char num, column, repeat, count;
set_tris_b(0b00000000); //all output 0b00000000
set_tris_d(0b00000000); //all output 0b00000000
set_tris_e(0b00000001); //PORTE bit 0 is input
cnt = 0L;
k = 0;
output_b(0x00);
output_d(0x00);
StringLength = strlen(message) ;
while(TRUE)
{
//loops();
for (k=0; k<StringLength; k++)
{
for (scroll=0; scroll<(8/shift_step); scroll++)
{
for (ShiftAmount=0; ShiftAmount<8; ShiftAmount++)
{
index = message[k];
temp = CharData[index-32][ShiftAmount];
//DisplayBuffer[ShiftAmount] = temp;
//DisplayBuffer[ShiftAmount] = (temp << shift_step)| (temp >> ((8-shift_step)-scroll*shift_step));
DisplayBuffer[ShiftAmount] = (DisplayBuffer[ShiftAmount] << shift_step)| (temp >> ((8-shift_step)-scroll*shift_step));
}
speed = 5; //55;//+ADC_Read(0)/10;
for(l=0; l<speed;l++)
{
for (i=0; i<8; i++)
{
//send_data_serially(DisplayBuffer[i]);
send_data(DisplayBuffer[i]);
//send_data(CharData[i]);
output_high(CD4017_CLK);
output_low (CD4017_CLK);
Delay_ms(1);
} // i
output_high(CD4017_RST);//CD4017_RST = 1;
output_low (CD4017_RST); //CD4017_RST = 0;
for(i = 0; i < 8; i++)
DisplayBuffer[i]=0;
} // l
} // scroll
} //
}
}
void send_data(unsigned char tmp)
{
unsigned int16 Flag;
unsigned char t;
unsigned int16 msk;
msk = 0x0001;
for (t=0; t<8; t++)
{
Flag = tmp & msk;
if(Flag==0) output_low(SER_DATA); //Serial_Data = 0;
else output_high(SER_DATA); //Serial_Data = 1;
output_high(SH_CLK); //SH_CLK = 1;
output_low(SH_CLK); //SH_CLK = 0;
msk = msk << 1;
}
// Apply clock on ST_Clk
output_high(ST_CLK); //ST_CLK = 1;
output_low (ST_CLK); //ST_CLK = 0;
} | |
|
|
asmboy
Joined: 20 Nov 2007 Posts: 2128 Location: albany ny
|
|
Posted: Sat Feb 02, 2013 12:34 pm |
|
|
got a schematic that shows what you have done?
it also seems self evident that if the big CONST bit table
is junk - so will be the messages ......
lastly delay_ms(1) Sounds good if there is a 100 ft of cable between the pic
and the cmos logic but its a lot of wasted time otherwise.
do you observe ringing on your drive lines? id so consider drawing current and put a 4.7k resistor terminator out there and shorten the delay A LOT..... |
|
|
Mike Walne
Joined: 19 Feb 2004 Posts: 1785 Location: Boston Spa UK
|
|
Posted: Sat Feb 02, 2013 1:25 pm |
|
|
Make it easier for us to decipher your code.
A brief explanation of what's happening would help.
As would some sort of schematic (even crude ASCII art will do).
Have you looked at any waveforms with a 'scope?
Explain clearly what works and what doesn't.
Mike |
|
|
kein
Joined: 23 Jul 2007 Posts: 103
|
|
Posted: Sat Feb 02, 2013 6:33 pm |
|
|
Thanks Gents for your response. I'm having trouble posting the schematic as I cannot see any import button and the (ALT+P) isn't working for me. How do I post a schematic onto the forum.?
Thanks. |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Sat Feb 02, 2013 6:54 pm |
|
|
Post the schematic on a free image hosting website, and then post a link
to it in your next post.
Example of a free image host:
http://www.imageshack.us/ |
|
|
kein
Joined: 23 Jul 2007 Posts: 103
|
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Sat Feb 02, 2013 11:12 pm |
|
|
My suggestion is to completely declare the array dimensions, as shown
below in bold:
Quote: |
const unsigned char CharData[95][8] ={
|
|
|
|
kein
Joined: 23 Jul 2007 Posts: 103
|
|
Posted: Sat Feb 02, 2013 11:49 pm |
|
|
Hello PCM Programmer,
Thanks for your reply. I did exactly as you said. There is something strange about my 8x8 display matrix. When I send a byte say 0b01111110, the dot matrix displays something like:
Quote: | 01111110
01111110
01111110
01111110
01111110
01111110
01111110
01111110 |
I was expecting only the first row to display 01111110 and everything else to be zeros or OFF.
What is going on here?
http://imageshack.us/photo/my-images/145/schemt.png/ |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Sun Feb 03, 2013 12:33 am |
|
|
Quote: | When I send a byte say 0b01111110,
|
I don't see that byte listed in the CharData array. So you must be doing
some experiment, other than using the posted code. If so, post the
full program code for the experiment.
Also post a link to the data sheet for the 8x8 dot matrix display. |
|
|
gpsmikey
Joined: 16 Nov 2010 Posts: 588 Location: Kirkland, WA
|
|
Posted: Sun Feb 03, 2013 1:27 am |
|
|
Just out of curiosity, why are you showing Q8 and Q9 of the 4017 shorted to ground ? (they are outputs - CMOS inputs should not be left floating, but outputs are OK).
If it were me, I would try a simple program that simply counted up at say a 1 hz rate displaying the count without any scrolling etc attempted just to make sure I had things connected correctly.
mikey _________________ mikey
-- you can't have too many gadgets or too much disk space !
old engineering saying: 1+1 = 3 for sufficiently large values of 1 or small values of 3 |
|
|
kein
Joined: 23 Jul 2007 Posts: 103
|
|
Posted: Sun Feb 03, 2013 2:53 am |
|
|
Gents,
You are right PCM Programmer, the byte 0b01111110 was not part of the origin value in the table. It is a number I chose to send to the shift to see what would be displayed. The 8x8 Dot matrix I'm using is a "12pcs 8x8 Dot Matrix 3mm Red LED Display Common cathode" as can be seen in the link below. The code below is complete and can be used for experience to understand the problem.
http://www.ebay.com.au/itm/12pcs-8x8-Dot-Matrix-3mm-Red-LED-Display-Common-cathode-/160768142334?_trksid=p3284.m263&_trkparms=algo%3DSI%26its%3DI%26itu%3DUCI%252BRTU%26otn%3D21%26pmod%3D230699071667%26ps%3D54
gpsmikey,
I thought by connecting Q8 and Q9 of the 4017 to the ground would leave them not floating. They are now left unconnected.
As suggested, I have now modified the code to just display characters without scrolling as can be seen the code below. Still, the display is not as expected.
Code: | #include <16F877A.h>
#device adc=10
#fuses HS,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay(clock=20000000)
#use FIXED_IO( D_outputs=PIN_D4,PIN_D3,PIN_D2,PIN_D1,PIN_D0 )
#define Latch PIN_D0
#define Data_In PIN_D1
#define Clk PIN_D2
#define CD4017_Clk PIN_D3
#define CD4017_MR PIN_D4
#define Shift 8
const unsigned BYTE Alphabets[130]={
0x7e, 0x09, 0x09, 0x09, 0x7E, // A
0x7f, 0x49, 0x49, 0x49, 0x36, // B
0x3e, 0x41, 0x41, 0x41, 0x22,
0x7f, 0x41, 0x41,0x22, 0x1c,
0x7f, 0x49, 0x49, 0x49, 0x63,
0x7f, 0x09, 0x09, 0x09, 0x01,
0x3e, 0x41, 0x41, 0x49, 0x7a,
0x7f, 0x08, 0x08, 0x08, 0x7f,
0x00, 0x41, 0x7f, 0x41, 0x00, // I
0x20, 0x40, 0x41, 0x3f, 0x01,
0x7f, 0x08, 0x14, 0x22, 0x41,
0x7f, 0x40, 0x40, 0x40, 0x60,
0x7f, 0x02, 0x04, 0x02, 0x7f,
0x7f, 0x04, 0x08, 0x10, 0x7f,
0x3e, 0x41, 0x41, 0x41, 0x3e,
0x7f, 0x09, 0x09, 0x09, 0x06,
0x3e, 0x41, 0x51, 0x21, 0x5e,
0x7f, 0x09, 0x19, 0x29, 0x46,
0x46, 0x49, 0x49, 0x49, 0x31, // S
0x01, 0x01, 0x7f, 0x01, 0x01,
0x3f, 0x40, 0x40, 0x40, 0x3f,
0x1f, 0x20, 0x40, 0x20, 0x1f,
0x3f, 0x40, 0x30, 0x40, 0x3f,
0x63, 0x14, 0x08, 0x14, 0x63,
0x07, 0x08, 0x70, 0x08, 0x07,
0x61, 0x51, 0x49, 0x45, 0x43 // Z
};
void send_data_serially(unsigned char tmp);
void main()
{
unsigned short count, column, num, repeat;
set_tris_d(0b00000000); //all output 0b00000000
output_d(0x00);
while(TRUE)
{
//TODO: User Code
// Display 26 alphabets
for (num=0; num<26; num++)
{
for (repeat=0; repeat<100; repeat++)
{
column = 1;
for(count = num*5;count < (num*5+6);count++)
{
//PORTB = Alphabets[count];
//PORTA = column;
send_data_serially(Alphabets[count]);
Delay_ms(1);
output_high(CD4017_Clk );
output_low (CD4017_Clk );
Delay_ms(1);
} // i
output_high(CD4017_MR);//CD4017_RST = 1;
output_low (CD4017_MR); //CD4017_RST = 0;
}
}
}
}
void send_data_serially(unsigned char tmp)
{
unsigned char i;
unsigned char Data2Send;
unsigned char Dmsk;
output_low(Latch);
output_low(clk); //ST_CLK = 0;
for(i = 0; i < Shift; i++)
{
Data2Send = tmp >> i;
if(Data2Send & 0x001) output_high(Data_In); //Serial_Data = 1;
else output_low(Data_In); //Serial_Data = 0;
output_high(Clk); //SH_CLK = 1;
output_low (Clk); //SH_CLK = 0;
}
output_high(Latch); //ST_CLK = 1;
} |
|
|
|
temtronic
Joined: 01 Jul 2010 Posts: 9225 Location: Greensville,Ontario
|
|
Posted: Sun Feb 03, 2013 6:42 am |
|
|
You might want to look at and test with the driver that CCS supplies for the 74595. Called 74595.c ,located in the drivers folder.
A quick look shows your 74595 sequence of 'bit setting' is not the same as theirs.
Probably a good idea to start with a simple 'light an LED,then 2,3...8' program to be sure the hardware and driver are correct.
it's always easier to preceed from known good basic code that try to debug complex code !
hth
jay |
|
|
kein
Joined: 23 Jul 2007 Posts: 103
|
|
Posted: Sun Feb 03, 2013 9:18 am |
|
|
Hi temtronic,
I tried the code but it didn't work either. Can anyone post a simple code that I may test?
The situation is very frustrating and my final year project is now in limbo. |
|
|
Mike Walne
Joined: 19 Feb 2004 Posts: 1785 Location: Boston Spa UK
|
|
Posted: Sun Feb 03, 2013 9:34 am |
|
|
Your not taking notice of what you are being told.
Start from simple beginnings.
Break your task into small sections.
Code each section one at a time,
Test each section 'til you are certain it is error free.
Now that we've got a schematic, it doesn't look like you've analysed what happens as you drive the display.
Get it clear in your own mind how you want the system to operate, before you start coding.
Tell us how you think it needs to go.
There have been loads of posts on this before.
Please answer this simple question:-
What is your design target for the mean (average) current through an illuminated LED?
(100uA?, 300uA?, 1ma?, 3mA?, 10mA? What? )
Mike
EDIT Is your deadline tomorrow?
The guys on this forum WILL help you.
BUT (BIG BUT) this is a help forum, NOT a do it for you forum.
YOU have to do the work, the others and I will willingly assist.
You're the one who wants the paper certificate.
We've all done it before.
Your tutor could easily find the code if it's posted here.
We do this work for a living and charge $$$$$£££££. |
|
|
kein
Joined: 23 Jul 2007 Posts: 103
|
|
Posted: Sun Feb 03, 2013 11:55 pm |
|
|
You're absolutely, Mike. My apologies.
That said, I finally got something happening with the code below. However, there are still issues with characters being displayed as some dots are found to be missing from the displayed character. The screenshots are as attached.
Has anyone come across this problem before?
Regards.
Kein
http://imageshack.us/photo/my-images/39/schem.png/
http://imageshack.us/photo/my-images/194/schem2.png/
Code: | #include <16F877A.h>
#device adc=10
#fuses HS,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay(clock=20000000)
#BYTE PORT_B = 0X06 //define location of register port_b
#BYTE PORT_D = 0X08 //define location of register port_d
#BYTE TRIS_B = 0X86 //define location of register TRIS_B
#BYTE TRIS_D = 0X88 //define location of register TRIS_D
//#use FIXED_IO( D_outputs=PIN_D4,PIN_D3,PIN_D2,PIN_D1,PIN_D0 )
#define CLR PIN_B0
#define Latch PIN_B1
#define Data_In PIN_B2
#define CLK PIN_B3
const unsigned char letters[16] = {
0xFF, 0x01, 0xEE, 0xEE, 0xEE, 0x01, 0xFF, 0xFF, //A
0xFF, 0x00, 0x76, 0x76, 0x76, 0x89, 0xFF, 0xFF //B
};
void Clear_Shift_Register();
void Send_Data_In (unsigned char s);
void main()
{
unsigned char count, column,num, repeat;
TRIS_B = 0b00000000; // Set PORTB direction to be output
TRIS_D = 0b00000000; // Set PORTB direction to be output
PORT_B = 0x00; // Turn OFF LEDs on PORTB
PORT_D = 0x00; // Turn OFF LEDs on PORTB
//count = 0;
Clear_Shift_Register();
while(1)
{
//DO THE FOLLOWING
for (num=0;num<2;num++)
{
for (repeat=0; repeat<200; repeat++){
column =0b10000000;
for (count = num*8;count < (num*8+8);count++)
{
Send_Data_In (letters[count]);
PORT_D =column;
delay_us(500);
column = column>>1;
Clear_Shift_Register();
}
}
}
}
}
void Clear_Shift_Register()
{
output_low(CLR); //Clear shift register
output_high(CLR); //Clear shift register
}
void Send_Data_In (unsigned char s)
{
unsigned char t;
for(t =0b10000000; t > 0; t>>=1) //for(t =0; t < 8; t++)
{
//if(s&0x80) output_low(Data_In); //Test MSB 7
if(s&0x01) output_high(Data_In); //Test MSB 7
else output_low(Data_In); //Test MSB 7output_high(Data_In); //skip to here if clear
output_high(CLK); //
output_low (CLK);
s >>=1;
}
output_high(Latch); //Latch in the data
output_low(Latch);
} |
|
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|