Atmega32 и LCD
Может у кого-то найдётся исходник для вывода данных на графический модуль МТ-12864A ?
Хотя бы пример. Просто не особо времени есть для изобретения велосипеда. Микроконтроллер Atmega32. И какие выводы куда подключать?
#include ‹mega32.h›
char init[]={0x30,0x30,0x30,0x3A,0x08,0x01,0x06,0x0e};
char stroka_LCD_OUT[2][16]=
{{0xd1,0xec,0xee,0xf2,0xf0,0xe8,0xec,0x20,0x20,0xe 3,0xf0,0xe0,0xf4,0xe8,0xea,0xf3},
{0x20,0x20,0xcc,0xd2,0xad,0x31,0x32,0x38,0x36,0x34 ,0xc0,0x20,0x76,0x35,0x20,0x20}};
int a,b;
void strobdata();
void strobset();
void initLCD();
void outLCD();
void delay(int);
void main(void)
{
{
PORTA=0x00;
DDRA=0xFF;
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0xFF;
PORTD=0x00;
DDRD=0x00;
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
MCUCR=0x00;
MCUCSR=0x00;
TIMSK=0x00;
ACSR=0x80;
SFIOR=0x00;
}
initLCD();
while (1)
{
a=0;
b=1;
outLCD();
}
}
void delay(int time)
{
int i;
for (i=0; i‹time*5; i++)
{}
}
void strobset()
{
PORTA=4;
PORTA=0;
}
void strobdata()
{
PORTA=5;
delay(10);
PORTA=0;
}
void initLCD()
{
int i;
PORTC=0;
PORTA=0;
for (i=0;i‹8;i++)
{
PORTC=init[i];
delay(20);
PORTA=4;
delay(20);
PORTA=0;
delay(20);
}
}
void outLCD(void)
{
int i;
PORTC=0x80;
strobset();
for (i=0; i‹16; i++)
{
PORTC=stroka_LCD_OUT[a][i];
strobdata();
}
delay(1);
PORTC=0xC0;
strobset();
for (i=0; i‹16; i++)
{
PORTC=stroka_LCD_OUT[b][i];
strobdata();
}
PORTC=0x80;
strobset();
}
Исходник примера вывода на МТ-16S2. Кварц - 10МГц. Шина данных жк-модуля подключена к PORTC, A0 к PORTA.0, R/W - к PORTA.1, E - к PORTA.2 Вывод 3 - на общий. Данный пример просто выводит две строки на дисплей.
Хотелось бы увидеть подобный пример для графического модуля MT-12864, чем проще, тем лучше. Главное, чтобы рабочий был.
|