progressJanuary 2008
February 2008March 2008May 2008fileslinks |
usb - MAX7219 Test SoftwareOS : Windows 9x/2000/XP (etc) Compiler : VC++ 6 //---------------------------------------------------------------------------
#include <stdio.h>
#include "windows.h"
#include "mpusbapi.h" // MPUSBAPI Header File
//---------------------------------------------------------------------------
// Global Vars
char vid_pid[]= "vid_04d8&pid_000c"; // Default Demo Application Firmware
char out_pipe[]= "\\MCHP_EP1";
char in_pipe[]= "\\MCHP_EP1";
DWORD temp;
HINSTANCE libHandle;
HANDLE myOutPipe;
HANDLE myInPipe;
//---------------------------------------------------------------------------
// Prototypes
void GetSummary(void);
void LoadDLL(void);
void GetUSBDemoFWVersion(void);
DWORD SendReceivePacket(BYTE *SendData, DWORD SendLength, BYTE *ReceiveData,
DWORD *ReceiveLength, UINT SendDelay, UINT ReceiveDelay);
void CheckInvalidHandle(void);
//Custom Functions
void Raw7219(BYTE addr,BYTE data);
void LoadHigh();
int SendString(BYTE *send_buf,BYTE len);
void MakeRGBMap(BYTE *map, char *string);
#include "io_cfg.h"
#include "usb.h"
int main(int argc, char* argv[])
{
if(argc <= 2)
{
printf("\r\n- USAGE : mdb.exe <id><len><string>");
return 1;
}
BOOLEAN bQuit;
DWORD selection=7;
bQuit = false;
// Load DLL when it is necessary, i.e. on start-up!
LoadDLL();
LoadMap();
setRGB[0][0]=&setR1Col;
setRGB[0][1]=&setR2Col;
setRGB[0][2]=&setR3Col;
setRGB[0][3]=&setR4Col;
setRGB[1][0]=&setG1Col;
setRGB[1][1]=&setG2Col;
setRGB[1][2]=&setG3Col;
setRGB[1][3]=&setG4Col;
setRGB[2][0]=&setB1Col;
setRGB[2][1]=&setB2Col;
setRGB[2][2]=&setB3Col;
setRGB[2][3]=&setB4Col;
// Always a good idea to initialize the handles
myOutPipe = myInPipe = INVALID_HANDLE_VALUE;
int i,j;
BYTE color,rg_b,b_b;
char string[23];
printf("Enter the string to be displayed : ");
gets(string);
printf("Enter the color : \n");
printf(" 1. Red \n");
printf(" 2. Green \n");
printf(" 4. Blue \n");
printf(" : > ");
scanf("%d", &color);
printf("Displaying %s with colour %d ",string,color);
printf("RG,B Brightness [0-15] : ");
scanf("%d%d",&rg_b,&b_b);
//g_b=b_b=15;
//strcpy(string,"11");
//string[1]=255;
//string[1]='+';
//string[1]=0;
BYTE send_buf[64];
const int num_boards = 8;
int offset=0;
//color=7;
while(1)
{
//for(string[0]='A';string[0]<='Z';string[0]++,color++)
{
i=0;
color%=8;
if(!color)color=1;
//ClearBuffer(send_buf,64);
ClearAll7219();
BYTE ic1=0,ic2=num_boards>>1;
int k=0,p=offset;
while(string[i])
{
while(map[string[i]][k?k-1:0])
{
if(ic2 == 32)goto EOI;
if(p >= 0)
{
(*setRGB[0][(p)%4])(ic1,ic2,(color & 1)?map[string[i]][k]:0);
(*setRGB[1][(p)%4])(ic1,ic2,(color & 2)?map[string[i]][k]:0);
(*setRGB[2][(p)%4])(ic1,ic2,(color & 4)?map[string[i]][k]:0);
if(p && p%4==0)
{
ic1++;
ic2++;
}
}
k++;
p++;
}
i++;
k=0;
}
EOI:
{
InitMax7219(num_boards,send_buf,rg_b,b_b);
for(j=0;j<4;j++)
{
Shift7219(offset-1);
for(int n=0;n<num_boards;n++)
{
if(num_boards-n-1 == 4)
max[num_boards-n-1].exportByteInverse(j,send_buf+2+4*n);
else if((num_boards-n-1 == 5) || (num_boards-n-1 == 6))
max[num_boards-n-1].exportByteHalfInverse(j,send_buf+2+4*n);
else
max[num_boards-n-1].exportByte(j,send_buf+2+4*n);
}
SendString(send_buf,num_boards*4);
}
Sleep(300);
//offset--;
}
//for(i=2;i<2+32;i++)
// printf("%02x ",send_buf[i]);
//printf("\n");
} }
// Always check to close all handles before exiting!
if (myOutPipe != INVALID_HANDLE_VALUE) MPUSBClose(myOutPipe);
if (myInPipe != INVALID_HANDLE_VALUE) MPUSBClose(myInPipe);
myOutPipe = myInPipe = INVALID_HANDLE_VALUE;
// Always check to close the library too.
if (libHandle != NULL) FreeLibrary(libHandle);
return 0;
}//end main
Download the entire project (with dsw and dsp) here
| ||