у нас в комиссионках SD карточки на 16-32 метра стоят 50р.
соответственно шесть проводков можно подпаять напрямую без картридера.
roboforum.ruТехнический форум по робототехнике. |
|
|
#include <mega128.h>
#include <spi.h>
#include <delay.h>
#define reset PORTC.4 //RESET от LCD подключён к 39-й ноге МК
#define DC PORTC.5 //Выбор режима ввода данных(1=D-данные /0=C- команды) от LCD подключён к 40-й ноге МК
//VDD на +5В.
// SCLK LCD на 11-ю ногу МК (SCK)
// SDIN LCD на 12-ю ногу МК (MOSI)
// CS LCD на земле.
//Vout (7нога) LCD на + кондёра 1-4.7мкФ и на землю.
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port B initialization /output
PORTB=0x00;
DDRB=0xFF;
// Port C initialization
PORTC=0xFF;
DDRC=0xF0;
// Port G initialization
PORTG= 0b11111011;
DDRG= 0b00000100;
// SPI initialization
// SPI Type: Master
// SPI Clock Rate: 2*3000,000 kHz // У меня кварц 12МГц.
// SPI Clock Phase: Cycle Half
// SPI Clock Polarity: Low
// SPI Data Order: MSB First
SPCR=0x50;
SPSR=0x01;
//////////////////////////////START///////////////////////
// ИНИЦИАЛИЗАЦИЯ ДИСПЛЕЯ
DC =0; // режим приёма команд
reset =0; //сбросить LCD
delay_ms(1); // задержка 1мСек.
reset=1;
delay_ms(1);
spi(0x21); // включить питание, расшир. команды
spi(0xC8); // включить внутренний источник питания
spi(0x06); // выбрать температурный режим
spi(0x13); // выбрать систему питания
spi(0x20); // установить обычный набор инструкций
spi(0x0C); // устаноить режимы -дисплей пустой, обычное отображение
delay_us(500);
//дисплей готов, виден всякий бред...
/*
unsigned int i;
DC=0 ; // режим приёма кодов
spi(64); // адрес строки = 0
spi(128); // адрес столбца = 0
DC =1; //режим приёма данных
for(i=0;i<909;i++) spi(0xAA); // запись (вывод на экран) чёрточек , если не 0хAA , а скажем 0х00, то весь экран "очистится".
Можно только по сюда написать, а дальше моё извращение (вырезал из своей програмы и быстренько причесал для форума)
*/
while (1)
{
// Place your code here
if (PIND.4 == 0) { // при замыкании кнопки (29нога МК) на массу.
unsigned int i;
DC=0 ; // режим приёма кодов
spi(64); // адрес строки = 0
spi(128); // адрес столбца = 0
DC =1; //режи приёма данныйх
for(i=0;i<909;i++) spi(0x0F); // запись (вывод на экран) чёрточек
}; // скобка для if
// работает ли МК и бегает ли по циклу (тест...)
PORTG = 255; // включить пищалку или чветодиод (у меня, посто так собрана схема) на любой ноге порта G
delay_ms(350); // пауза 350 мС
PORTG = 0; // выключить пищалку
delay_ms(350); // пауза 350 мС
if (PIND.5 == 0) { // при замыкании кнопки (30нога МК) на массу.
unsigned int i;
DC=0 ; // режим приёма кодов
spi(64); // адрес строки = 0
spi(128); // адрес столбца = 0
DC =1; //режи приёма данныйх
for(i=0;i<909;i++) spi(0x55); // запись (вывод на экран) линий
}; // скобка для if
}; // общий цикл
}; // майн
Сейчас этот форум просматривают: GoGo.Ru [Bot] и гости: 6