Унутри (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Матвеев Роман 19 ноября 2004 г. 12:48
В ответ на: Странно. Кондовый компилер, ни разу не имел с ним проблемм. отправлено Andrew_Q 19 ноября 2004 г. 12:32

#include

#define FALSE 0
#define TRUE 1

#define setb_RST ( PORTC&=( ~( 1<<5 ) ) )
#define clrb_RST ( PORTC|=( ( 1<<5 ) ) )
#define setb_RW ( PORTC|=( ( 1<<4 ) ) )
#define clrb_RW ( PORTC&=( ~( 1<<4 ) ) )
#define setb_DI ( PORTC|=( ( 1<<3 ) ) )
#define clrb_DI ( PORTC&=( ~( 1<<3 ) ) )
#define setb_E ( PORTC|=( ( 1<<2 ) ) )
#define clrb_E ( PORTC&=( ~( 1<<2 ) ) )

#define tstb_ANI_EN ( ( ~PINA )& ( 1<<2 ) )

/*****************************************************************************/
unsigned char x = 0;
unsigned char y = 0;
int temp;
char i;

char flash font5image[1024]={0x70,0x88,0x80,0x80,0x98,0x88,0x78,0x00, // 71 - 'G'
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 1 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 2 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 3 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 4 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 5 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 6 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 7 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 8 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 9 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 10 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 11 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 12 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 13 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 14 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 15 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 16 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 17 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 18 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 19 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 20 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 21 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 22 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 23 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 24 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 25 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 26 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 27 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 28 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 29 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 30 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 31 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 32 - ' '
0x80,0x80,0x80,0x80,0x80,0x00,0x80,0x00, // 33 - '!'
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 34 - '"'
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 35 - '#'
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 36 - '$'
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 37 - '%'
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 38 - '&'
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 39 - '''
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 40 - '('
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 41 - ')'
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 42 - '*'
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 43 - '+'
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 44 - ','
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 45 - '-'
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 46 - '.'
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 47 - '/'
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 48 - '0'
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 49 - '1'
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 50 - '2'
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 51 - '3'
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 52 - '4'
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 53 - '5'
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 54 - '6'
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 55 - '7'
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 56 - '8'
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 57 - '9'
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 58 - ':'
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 59 - ';'
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 60 - '<'
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 61 - '='
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 62 - '>'
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 63 - '?'
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 64 - '@'
0x20,0x50,0x88,0x88,0xF8,0x88,0x88,0x00, // 65 - 'A'
0xF0,0x88,0x88,0xF0,0x88,0x88,0xF0,0x00, // 66 - 'B'
0x70,0x88,0x80,0x80,0x80,0x88,0x70,0x00, // 67 - 'C'
0xF0,0x88,0x88,0x88,0x88,0x88,0xF0,0x00, // 68 - 'D'
0xF8,0x80,0x80,0xF0,0x80,0x80,0xF8,0x00, // 69 - 'E'
0xF8,0x80,0x80,0xF0,0x80,0x80,0x80,0x00, // 70 - 'F'
0x70,0x88,0x80,0x80,0x98,0x88,0x78,0x00, // 71 - 'G'
0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x00, // 72 - 'H'
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00, // 73 - 'I'
0x08,0x08,0x08,0x08,0x08,0x88,0x70,0x00, // 74 - 'J'
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 75 - 'K'
0x80,0x80,0x80,0x80,0x80,0x80,0xF8,0x00, // 76 - 'L'
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 77 - 'M'
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 78 - 'N'
0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x00, // 79 - 'O'
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 80 - 'P'
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 81 - 'Q'
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 82 - 'R'
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 83 - 'S'
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 84 - 'T'
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 85 - 'U'
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 86 - 'V'
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 87 - 'W'
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 88 - 'X'
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 89 - 'Y'
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 90 - 'Z'
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 91 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 92 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 93 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 94 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 95 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 96 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 97 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 98 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 99 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //100 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //101 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //102 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //103 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //104 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //105 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //106 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //107 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //108 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //109 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //110 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //111 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //112 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //113 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //114 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //115 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //116 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //117 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //118 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //119 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //120 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //121 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //122 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //123 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //124 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //125 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //126 -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};//127 -
char flash font5length[128]={6,6,6,6,6,6,6,6, // 0- 7
6,6,6,6,6,6,6,6, // 8- 15
6,6,6,6,6,6,6,6, // 15- 23
6,6,6,6,6,6,6,6, // 24- 31
6,2,6,6,6,6,6,6, // 32- 39
6,6,6,6,3,6,6,6, // 40- 47
6,6,6,6,6,6,6,6, // 48- 55
6,6,6,6,6,6,6,6, // 56- 63
6,6,6,6,6,6,6,6, // 64- 71
6,2,6,6,6,6,6,6, // 72- 79
6,6,6,6,6,6,6,6, // 80- 87
6,6,6,6,6,6,6,6, // 88- 95
6,6,6,6,6,6,6,6, // 96-103
6,6,6,6,6,6,6,6, // 104-111
6,6,6,6,6,6,6,6, // 112-119
6,6,6,6,6,6,6,6 }; // 120-127
int flash font16image[11]={0x11, 0x12, 0x13};

/*****************************************************************************/
#define LCD_ON 0x3F
#define LCD_OFF 0x3E
#define LCD_SET_START_LINE 0xC0
#define LCD_SETX 0xB8
#define LCD_SETY 0x40

void LCDWriteC( char _com )
{
DDRA = 0xFF;
PORTA = _com;
clrb_E;
clrb_RW;
clrb_DI;

setb_E;
setb_E;
setb_E;
clrb_E;
clrb_E;
clrb_E;
}

void LCDSetX( char _x )
{
LCDWriteC( LCD_SETX | ( 7 - ( _x & 0x07 ) ) );
x = _x;
}

void LCDSetY( char _y )
{
if( _y <= 63 ) {
PORTC|=( ( 1<<1 ) );
PORTC&=( ~( 1<<0 ) ); }
else {
PORTC&=( ~( 1<<1 ) );
PORTC|=( ( 1<<0 ) ); }
LCDWriteC( LCD_SETY | ( _y & 0x3F ) );
y = _y;
}

void LCDSetXY( char _x, char _y ) {
LCDSetY( _y ); LCDSetX( _x ); }

char LCDReadD( void )
{
char temp;

clrb_E;
setb_RW;
setb_DI;

DDRA = 0x00;
setb_E;
setb_E;
setb_E;
temp = PORTA;
clrb_E;
}

void LCDWriteD( char _data )
{
DDRA = 0xFF;
PORTA = _data;
clrb_E;
clrb_RW;
setb_DI;

setb_E;
setb_E;
setb_E;
clrb_E;
clrb_E;
clrb_E;
}

void LCDInit( void )
{
LCDSetXY( 0, 64 );
LCDWriteC( LCD_ON );
LCDSetXY( 0, 0 );
LCDWriteC( LCD_ON );
}

/*****************************************************************************/
char Font5Image( char _c, char _y )
{
return( font5image[ ( _c<<3 ) + _y ] );
}

void LCDDrawChar5( char _c )
{
for( i=0; i<8; i++ )
{
// LCDSetXY( ( x>>3 ) , y+i );
// temp = LCDReadD() << 8;
// LCDSetXY( ( x>>3 )+1, y+i );
// temp += LCDReadD();
// temp &= ~( ( 0xFF00 << ( 8 - font5length[_c] ) ) >> ( x & 0x07 ) );
temp = Font5Image( _c, i ) << ( 8 - ( x & 0x07 ) );
LCDSetXY( ( x>>3 ) , y+i );
LCDWriteD( temp & 0xFF);
LCDSetXY( ( x>>3 )+1, y+i );
LCDWriteD( temp >> 8 );
}

x = font5length[_c];
}

/*****************************************************************************/
void DrawDig16( char _d )
{
static char i;

for( i=0; i<24; i++ )
{
LCDSetXY( x+0, y+i );
LCDWriteD( font16image[_d*24+i] >> 8 );
LCDSetXY( x+1, y+i );
LCDWriteD( font16image[_d*24+i] & 0xFF );
}

x += 16;
}

/*****************************************************************************/
void main( void )
{
int i;

PORTA = 0xFF;
PORTB = 0xFF;
PORTC = 0xFF;
PORTD = 0xFF;

DDRA = 0xFF;
DDRB = 0xFF;
DDRC = 0xFF;
DDRD = 0xFF;

LCDInit();

x=0; y=0;

LCDDrawChar5( 'H' );
/* LCDDrawChar5( 'E' );
LCDDrawChar5( 'L' );
LCDDrawChar5( 'L' );
LCDDrawChar5( 'O' );
LCDDrawChar5( '!' );
LCDDrawChar5( '!' );
LCDDrawChar5( '!' );*/

while( TRUE )
{
}
}
/*****************************************************************************/

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru