Например TDA7294

Форум РадиоКот • Просмотр темы - Дисплей от Siemens S65
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Вс июл 27, 2025 21:47:20

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 257 ]     ... , , , 6, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт ноя 06, 2009 11:55:20 
Вымогатель припоя
Аватар пользователя

Карма: 4
Рейтинг сообщений: 16
Зарегистрирован: Пн мар 23, 2009 09:25:58
Сообщений: 651
Откуда: Самара
Рейтинг сообщения: 0
Man писал(а):
По вашей ссылке нужно пройти регестрацию с одобрение админа=)


..."Для проверки написал программу со счетчиком, значение которого выводится в центре экрана, а по нажатию на кнопку, выводится 4 строки в разных местах."

Код:
/*****************************************************
This program was produced by the
CodeWizardAVR V1.25.9 Standard
Automatic Program Generator
© Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Chip type           : ATmega16
Program type        : Application
Clock frequency     : 14,300000 MHz
Memory model        : Small
External SRAM size  : 0
Data Stack size     : 256
*****************************************************/

#include <mega16>

#include <spi>

#include <string>

#include <delay>

#include <stdio>

#define DISP_W 132
#define DISP_H 176
#define CHAR_W 8
#define CHAR_H 14

// строки для примера
char txt1[]="Spirit for Datagor.ru";
char txt2[]="Siemens S65";
char txt3[]="display";
char txt4[]="Test programm";

// сопоставление выводов дисплея и микроконтроллера
#define RESET        PORTB.6
#define CS           PORTB.3
// тактовый и информационный вход дисплея
// подключены к аппаратному SPI микроконтроллера


unsigned int i=0, j=0;
unsigned int counter=0;


// массив символов
flash char ascii_tab[96][14]={
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // space (32)
{ 0x00, 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x3c, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00}, //!
{ 0x00, 0x66, 0x66, 0x66, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //"
{ 0x00, 0x00, 0x00, 0x6c, 0x6c, 0xfe, 0x6c, 0x6c, 0x6c, 0xfe, 0x6c, 0x6c, 0x00, 0x00}, //#
{ 0x00, 0x18, 0x18, 0x7c, 0xc6, 0xc2, 0xc0, 0x7c, 0x06, 0x86, 0xc6, 0x7c, 0x18, 0x18}, //$
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0xc2, 0xc6, 0x0c, 0x18, 0x30, 0x66, 0xc6, 0x00, 0x00}, // %
{ 0x00, 0x00, 0x00, 0x38, 0x6c, 0x6c, 0x38, 0x76, 0xdc, 0xcc, 0xcc, 0x76, 0x00, 0x00}, // &
{ 0x00, 0x18, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // '
{ 0x00, 0x00, 0x00, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30, 0x30, 0x18, 0x0c, 0x00, 0x00}, // (
{ 0x00, 0x00, 0x00, 0x30, 0x18, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x18, 0x30, 0x00, 0x00}, // )
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x3c, 0xff, 0x3c, 0x66, 0x00, 0x00, 0x00, 0x00}, // *
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00}, // +
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x30, 0x00}, // ґ
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // -
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00}, // .
{ 0x00, 0x00, 0x00, 0x02, 0x06, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0x80, 0x00, 0x00, 0x00}, // /
{ 0x00, 0x00, 0x00, 0x38, 0x6c, 0xc6, 0xc6, 0xd6, 0xc6, 0xc6, 0x6c, 0x38, 0x00, 0x00}, // 0 (48-32)
{ 0x00, 0x00, 0x00, 0x18, 0x38, 0x78, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x0c, 0x18, 0x30, 0x60, 0xc6, 0xfe, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x06, 0x3c, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x0c, 0x1c, 0x3c, 0x6c, 0xcc, 0xfe, 0x0c, 0x0c, 0x1e, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xfe, 0xc0, 0xc0, 0xc0, 0xfc, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x38, 0x60, 0xc0, 0xc0, 0xfc, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xfe, 0xc6, 0x06, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0x0c, 0x78, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0x60, 0x30, 0x18, 0x0c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x0c, 0x18, 0x30, 0x60, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x0c, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xde, 0xde, 0xde, 0xdc, 0xc0, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x66, 0x66, 0x66, 0xfc, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0, 0xc2, 0x66, 0x3c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xf8, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x66, 0x6c, 0xf8, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xfe, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x60, 0x60, 0xf0, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xde, 0xc6, 0x66, 0x3a, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x1e, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0xcc, 0xcc, 0x78, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xe6, 0x66, 0x6c, 0x6c, 0x78, 0x6c, 0x6c, 0x66, 0xe6, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xf0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x62, 0x66, 0xfe, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xc6, 0xee, 0xfe, 0xd6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0xc6, 0xc6, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xd6, 0xde, 0x7c, 0x0e, 0x00},
{ 0x00, 0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x60, 0x38, 0x0c, 0xc6, 0xc6, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x5a, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x6c, 0x38, 0x10, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xd6, 0xd6, 0xfe, 0x6c, 0x6c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0x7c, 0x38, 0x7c, 0xc6, 0xc6, 0xc6, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xfe, 0xc6, 0x8c, 0x18, 0x30, 0x60, 0xc2, 0xc6, 0xfe, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x3c, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0x70, 0x38, 0x1c, 0x0e, 0x06, 0x02, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x3c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x3c, 0x00, 0x00},
{ 0x10, 0x38, 0x6c, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff},
{ 0x00, 0x30, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0x76, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0xe0, 0x60, 0x60, 0x78, 0x6c, 0x66, 0x66, 0x66, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x1c, 0x0c, 0x0c, 0x3c, 0x6c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc6, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x1c, 0x36, 0x32, 0x30, 0x7c, 0x30, 0x30, 0x30, 0x78, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0xcc, 0x78},
{ 0x00, 0x00, 0x00, 0xe0, 0x60, 0x60, 0x6c, 0x76, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x0e, 0x06, 0x06, 0x06, 0x06, 0x66, 0x66, 0x3c},
{ 0x00, 0x00, 0x00, 0xe0, 0x60, 0x60, 0x66, 0x6c, 0x78, 0x6c, 0x66, 0xe6, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0xfe, 0xd6, 0xd6, 0xd6, 0xd6, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xf0},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0x0c, 0x1e},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x76, 0x66, 0x60, 0x60, 0xf0, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x70, 0x1c, 0xc6, 0x7c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x10, 0x30, 0x30, 0xfc, 0x30, 0x30, 0x30, 0x36, 0x1c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0x6c, 0x38, 0x10, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xd6, 0xd6, 0xfe, 0x6c, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x6c, 0x38, 0x38, 0x6c, 0xc6, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0x78},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xcc, 0x18, 0x30, 0x66, 0xfe, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x0e, 0x18, 0x18, 0x18, 0x70, 0x18, 0x18, 0x18, 0x0e, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x70, 0x18, 0x18, 0x18, 0x0e, 0x18, 0x18, 0x18, 0x70, 0x00, 0x00},
{ 0x00, 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0x00, 0x00, 0x00}
};

// определение основных цветов
// просто для удобства;)
#define BLACK 0x0000
#define RED   0xf800
#define GREEN 0x07e0
#define BLUE  0x001f
#define WHITE 0xffff


// цвет фона и текста по умолчанию
unsigned int textcolor=GREEN;
unsigned int bgcolor=0x0000;


// запись одного байта в дисплей
void lcd_write8(char dat)
{
  spi(dat);
}

// запись двух байт
void lcd_write(unsigned int dat)
{
  lcd_write8(dat>>8);
  lcd_write8 (dat);
}

// дергаем выводом CS для обозначения конца передачи данных
void lcd_cspulse(void)
{
  CS= 1;
  #asm("nop")
  CS= 0;
}

// выбор регистра в контроллере дисплея
void lcd_reg(char register_name)
{
  lcd_write8(0x74);  // стартовый байт на передачу команды
  lcd_write(register_name);
  lcd_cspulse();
}

// отправка двух байт в графическую память дисплея
void lcd_dat8(char register_dat1, char register_dat2)
{
  lcd_write8(0x76);  // стартовый байт на запись данных
  lcd_write8(register_dat1);
  lcd_write8(register_dat2);
  lcd_cspulse();
 
}

// то же самое, но из 16-и битной переменной
void lcd_dat(unsigned int data)
{
  lcd_write8(0x76);  // стартовый байт на запись данных
  lcd_write(data);
  lcd_cspulse();
}


// программа инициализации дисплея
void lcd_init_c(void)
{
  RESET=0;
  CS=1;
  delay_ms(1);
  RESET=1;
 
  delay_ms(10);
 
  CS=0;
 
  delay_ms(50);
  lcd_reg(0x00);lcd_dat(0x0001);

  lcd_reg(0x03);lcd_dat(0x000c);

  delay_ms(100);
  lcd_reg(0x0d);lcd_dat(0x0616);

  lcd_reg(0x01);lcd_dat(0x0215);
 
  delay_ms(150); 
  lcd_reg(0x07);lcd_dat(0x0037);

  CS= 1;
}


// заливка дисплея цветом color
void fill_screen(unsigned int color)
{
 
  CS= 0;  // select display
 
  lcd_reg(0x16);lcd_dat(0x8300);
  lcd_reg(0x17);lcd_dat(0xAF00);
  lcd_reg(0x21);lcd_dat(0x0000);
  lcd_reg(0x22);lcd_write8(0x76); 
 
  // start data transmission 
  for (i=0; i<DISP_H; i++)
  {
   for(j=0;j<DISP_W;j++)
   {
    lcd_write(color);
   }
  } 

  CS= 1;  // deselect display   
}

// поместить символ в графическую память дисплея
void put_char(char x, char y, char c, unsigned int color, char rot)
{
  char h,ch,p,mask;

  CS= 0;
 
  switch(rot)
  {
    default:
    case 0:
      lcd_reg(0x05);lcd_dat(0x0038);
      lcd_reg(0x17);lcd_dat8(x+CHAR_W-1, x);
      lcd_reg(0x16);lcd_dat8(y+CHAR_H-1, y);
      lcd_reg(0x21);lcd_dat8(x,y);
      lcd_reg(0x22);
      lcd_write8(0x76); 
      break;
    case 1:
      lcd_reg(0x05);lcd_dat(0x0030);
      lcd_reg(0x16);lcd_dat8(x+CHAR_W-1, x);
      lcd_reg(0x17);lcd_dat8(y+CHAR_H-1, y);
      lcd_reg(0x21);lcd_dat8(y, x);
      lcd_reg(0x22);
      lcd_write8(0x76); 
      break;
  }

 
  for (h=0; h<CHAR_H; h++) // every column of the character
  {       
       if (rot==1)
          ch=ascii_tab[ c-32 ][h];   
          else
          ch=ascii_tab[ c-32 ][CHAR_H-h-1];
   
        mask=0x80;
        for (p=0; p<CHAR_W; p++)  // write the pixels
        {
          if (ch&mask)
          {
            lcd_write(color);               
          }
          else
          {
            lcd_write(bgcolor);
          }
          mask=mask/2;
        }  // for p
  }
  CS= 1;  // deselect display   

}


// записать строку, начиная с координат x, y, цветом color и ориентацией orient
// если orient=0, то горизонтально, если =1, то вертикально
void put_string(unsigned char x, unsigned char y, char *str, unsigned int color, unsigned char orient)
{
  j=0;
  while (j<strlen(str))
  {
    put_char(x+j*CHAR_W,y,str[j],orient, color);   //  0 deg. rotated
    j++;
  }
}


interrupt [EXT_INT0] void ext_int0_isr(void)
{

}


// прерывание INT1
// запись строк примера в дисплей
interrupt [EXT_INT1] void ext_int1_isr(void)
{

  put_string(6,0,txt1,0, textcolor);

  put_string(25,00,txt2,1, textcolor);

  put_string(40,15,txt3,1, textcolor);

  put_string(35,120,txt4,0, textcolor);

}


interrupt [EXT_INT2] void ext_int2_isr(void)
{

}


void main(void)
{
PORTA=0x00;DDRA=0x00;PORTB=0x00;DDRB=0xFF;PORTC=0xFF;DDRC=0x00;PORTD=0xFF;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;
GICR|=0xE0;MCUCR=0x0A;MCUCSR=0x00;GIFR=0xE0;TIMSK=0x00;ACSR=0x80;SFIOR=0x00;SPCR=0x50;SPSR=0x01;

#asm("sei")

lcd_init_c(); // инициализация дисплея

fill_screen(bgcolor); // заливка черным

while (1)
      {

          char cnt[16];  // промежуточная переменная для функции sprint()
   
 
          sprintf(cnt,"%5u",counter);  // преобразование числа в строку

          put_string(68,60,cnt,0, BLUE); // вывод полученной строки
 
          counter++;  // инкремент переменной
     
      };
}


_________________
Нельзя всё знать, достаточно понимать.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Чт ноя 12, 2009 12:52:06 
Поставщик валерьянки для Кота

Карма: 11
Рейтинг сообщений: 58
Зарегистрирован: Пт окт 31, 2008 09:38:55
Сообщений: 1957
Откуда: Одесса
Рейтинг сообщения: 0
Здравствуйте гуру сименовых экранчиков!
Назрел такой вопросик :)
экран сименся наш-то может работать с СПИ выше 33 мегагерц?
тогда получится супер скорость обновления и уйдут проблемы с контрастностью!!!
Теперь вопрос! Зачем насиловать микроконтроллер разгоняя его до 20-30 мегагерц? Ради того чтоб СПИ выплёвывался быстро? но ведь это же последовательный интерфейс!
почему бы не применить буферизацию?
собрать на примитивной логике(пару регистров сдвиговых счетчик с дешифратором и наверное пару корпусов логики) которая бы на любой частоте доступной логике(а для НСТ не предел и 60 мегагерц) шмалила б какой-то участочек памяти или вообще просто выгружала б линейку сдвиговых регистров! по окончании выплевывания микроконтроллер парралельно за 4-5 тактов загружает линейку сдвиговиков и снова начинается выгрузка этого потока данных на максимальной частоте СПИ!
Или другой вариант - выпаять из любого сидюка или винта микруху - буффер она обычно статичный рам из себя представляет на 2-8 мегабайт с прямой парралельной адресацией (хотя у меня валяется микруха на 96 килобайт - как раз то что нужно!!!)
далее на логике(ну или на маленькой дешевенькой ПЛИСинке) делаем генератор адреса последовательный от 0 до 72К и те 8 бит что получаем на выходе микрухи памяти выгоняем последовательно одним сдвиговиком с генератором и так по кругу пока не кончатся адреса :) потом МК уже сам генерируя адрес и данные пишет в память комманды которые необходимо послать в экран(выделение области 132х176) и потом данные о цвете каждой точки последовательно в 8-миьитном формате....заполнили память ПАРРАЛЕЛЬНЫЙ методом - снова запускаем логический выплевыватель этой РАМы в экранчик на максимальной частоте а сами тем временем сигнал оцифровываем и обрабатываем :)
Кто что скажет по этому поводу?

_________________
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Чт ноя 12, 2009 21:47:03 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Пн мар 02, 2009 12:23:37
Сообщений: 169
Рейтинг сообщения: 0
да буфер харошая весч но...
у меня дисплей на частоте spi 12 мгц вроде работал выше уже не хотел запускаться :( внимательней бы почитали в интрнете что в телефоне етот дисплей работает на 13 мгц
Пробовал я на vs1000 она может без пролемс работать на 48 мгц :)
применить буфер можно при выводе видео а так не выжу смысла усложнять себе жызнь :)

_________________
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт ноя 13, 2009 12:00:56 
Поставщик валерьянки для Кота

Карма: 11
Рейтинг сообщений: 58
Зарегистрирован: Пт окт 31, 2008 09:38:55
Сообщений: 1957
Откуда: Одесса
Рейтинг сообщения: 0
не ну я имею ввиду то что авр-ке рамы-то маловато для этого экрана будет и скорости тоже....а так-всё решается :)
Как бы на простой логике наверное выйдет очень много корпусов....а это уже помехи и т.д. а на плиске забабахать такое дело было бы очень интересно...

_________________
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вс ноя 22, 2009 00:42:29 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 590
Зарегистрирован: Вт май 19, 2009 09:27:30
Сообщений: 3258
Откуда: Украина
Рейтинг сообщения: 0
Для ПЛИСки надо генератор тактирующий городить, или покупать готовый кварцевый генератор, или давать клоку с проца. А теперь вопрос $AVR+$ПЛИС=$ARM, или ARM всё таки дешевле?


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вс ноя 22, 2009 12:22:08 
Поставщик валерьянки для Кота

Карма: 11
Рейтинг сообщений: 58
Зарегистрирован: Пт окт 31, 2008 09:38:55
Сообщений: 1957
Откуда: Одесса
Рейтинг сообщения: 0
а что общего имеет арм с плис-кой ?
и вообще плис тут как-бы вообще не особо и нужна - не такая уж и большая сложность - я просто предлагаю соорудить SPI буферизированную пушку с огроменной скоростью выплевывающую в экран тучу данных размером с весь экран а контроллер-то будет только с памятью общяться и снова таки в 8 раз быстрее ибо парралельный режим...в принципе можно подобное организовать парой корпусов программ логики типа gal16v8 и одним аналогом советского сдвиговика - ир 17 .... генератор? неужто с МК нельзя взять частоту? Да или просто напросто выпаять из любого старого компа-телефона-винта - видеокарты и т.д. собственно генераторный модуль с ТТЛ выходом? преимущества-то превалируют! в первую очередь это возможность READ-MODIFY-WRITE :) ну и в том же духе - МК удобен прост и изучен :) ему не хватает памяти и частоты СПИ - почему б нам это не модернизировать причем если на плис-ке то в принципе-то до беспредела :) хоть 400 мегагерц ))

_________________
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вс ноя 22, 2009 19:37:57 
Встал на лапы
Аватар пользователя

Зарегистрирован: Чт ноя 13, 2008 19:22:03
Сообщений: 83
Рейтинг сообщения: 0
clawham идея интересная :))
Моглибы если несложно структурную схему набросать как на логике из паральлки в spi сделать ? логики много в наличии есть смысл попробать,плисин к сожелению нету только типо palce22v10,(pal20v10или8 точно непомню) pal16v8 .


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вс ноя 22, 2009 20:55:28 
Поставщик валерьянки для Кота

Карма: 11
Рейтинг сообщений: 58
Зарегистрирован: Пт окт 31, 2008 09:38:55
Сообщений: 1957
Откуда: Одесса
Рейтинг сообщения: 0
Ну вот чтото типа
Изображение

только нужно будет организовать возможность отключения микросхемы памяти от этой схемы и подключения к шине МК - дабы модифицировать её....ну в общем чисто или наипримитивнейшая плисина но с тучей ног или на логике...

_________________
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вс ноя 22, 2009 21:35:51 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 590
Зарегистрирован: Вт май 19, 2009 09:27:30
Сообщений: 3258
Откуда: Украина
Рейтинг сообщения: 0
Для непонятливых объясняю $AVR+$ПЛИС имелось ввиду суммарная стоимость АВРа и ПЛИСки. Насчёт памяти всего экрана явно будет круто, даже о%ительно, поскольку сама ПЛИСка потянет этак на $60-$80 или около этого. За 400 МГц даже не думай - это будет явно не по карману. Ты сам подумай 132х176х2Б=46464Б=371712б. Вот и посмотри сколько стоит такая ПЛИСина, которая вместит 400килобит. Но и хрен с ним, допустим купишь, а чем ты её BGAшную на плату посадишь? Так не лучше ли взять ARM с 64кБ памяти, который сам тебе в фоновом режиме будет скидывать в экран по прерываниям в то время пока ты на 55МГц чего-нибудь нарисуешь и всего за несчастных каких-нибудь $6-$8 :evil:


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн ноя 23, 2009 00:51:26 
Поставщик валерьянки для Кота

Карма: 11
Рейтинг сообщений: 58
Зарегистрирован: Пт окт 31, 2008 09:38:55
Сообщений: 1957
Откуда: Одесса
Рейтинг сообщения: 0
Вы видите мою структурную схемку? видите там есть счетчик сдвиговый регистр делитель на 8, а ещё там надо линейка переключателей шины адреса и шины данных внешней памяти...память то стоит копейки если вообще ни со старых мамок-винтов-видюх выпаять!взять микроплиску на 512 ключиков да и будет счастье....хотя можно и просто обойтись внешним умножителем 16 мегагерц на 2 и сдвиговиком...и выгружать в целый порт сразу 8 мь бит данных(а никто не запрещает и 16(два порта) и потом дать разрешение генератору с сдвиговиком - пусть выпулят этот байт на высокой скорости а по окончании прерывание и новый байт в регистр
можно взять несколько регистров - линейку ...загружать их парралельно а потом выплевывать высокой тактовой - получится спи модулек с палралельной загрузкой :)
но как по мне так лучше уже тогда внешняя память...незачем её организовывать в самой плисине её вентилями..это слишком дорого будет стоить вы правильно заметили!
в общем всёравно это риторика :) микроконтроллер всёравно слаб многомерно для этого экрана как ни крути :) с армами мне пока не светит работать...как и с плисинами :) больший интерес представляет контроллер для ноутбуковских панелей....но тут уже проще на ноутбуке же всё и сделать :)

_________________
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн ноя 23, 2009 02:29:22 
Друг Кота
Аватар пользователя

Карма: 58
Рейтинг сообщений: 389
Зарегистрирован: Чт мар 20, 2008 01:06:40
Сообщений: 3271
Откуда: Севастополь
Рейтинг сообщения: 0
Вот не пойму, чего вы добиваетесь.
Скорострельности ?
Ну так аппаратный SPI в атмелах работает на Fosc/2, в PIC-ах - на Fosc/4. Т.е. максимальная для этого дисплея скорость (12-13Мбит/с) достижима даже на номинальной для многих МК частоте. Ну, в крайнем случае, МК можно чуть разогнать.

Опять же, подгружать данные во внешнюю память все равно будет сам МК. Но за то время, пока он их "подгрузит", он же сам и сможет их выдать в SPI.
Да и вообще, пишите на асме. Тогда по-настоящему прочувствуете скорость железа )


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн ноя 23, 2009 09:24:32 
Поставщик валерьянки для Кота

Карма: 11
Рейтинг сообщений: 58
Зарегистрирован: Пт окт 31, 2008 09:38:55
Сообщений: 1957
Откуда: Одесса
Рейтинг сообщения: 0
Частота дисплея спокойно может перевалить за 33 мега! лично видел вживую на vs1101
дальше - частота мк 16 мег / 2 = 8 мег....из этих 8-ми мег только 4 будут результативными....4 мегабита в секунду!

а теперь берем парралельный весь порт а меги 16
полтора такта на изменение состояния, ещё такт на чтение
16/3=5,5 мегаБАЙТ в секунду!
во сколько раз круче?
а если внешнюю память организовать странично....пока выгружается первая половина - вторая рисуется МКшкой...модифицируется...это вполне ему под силу ибо спешить никуда не надо! гораздо больше времени процессорного экономится!
в принципе для армов всё то же самое реально только вот порт у него 32 бита....а следовательно при частоте 55 мегагерц получим 25 мегабит последовательных(3,125 мегабайт) или 55*4 = 220 мегабайт пиковой пропускной способности!!! разница-то есть?
помоему это и не может никак обсуждаться - любому устройству с графическим экраном и 24 битами на пикселю просто необходима внешняя память :)

конечно это слишком серьёзно для такого экранчика...он только по описаниям мне нравится 24 бита цвет 176х220 но....блин....качество этих цветов....кхм...мне собственно говоря не очень нравится ...

_________________
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн ноя 23, 2009 13:28:55 
Встал на лапы

Зарегистрирован: Ср авг 01, 2007 13:32:33
Сообщений: 94
Рейтинг сообщения: 0
Цитата:
конечно это слишком серьёзно для такого экранчика...он только по описаниям мне нравится 24 бита цвет 176х220 но....блин....качество этих цветов....кхм...мне собственно говоря не очень нравится ...


Это вы про какой экранчик?
s65 - 176х132 16бит. хотелось бы поболе - как вы писали 176 на 220


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн ноя 23, 2009 15:40:23 
Поставщик валерьянки для Кота

Карма: 11
Рейтинг сообщений: 58
Зарегистрирован: Пт окт 31, 2008 09:38:55
Сообщений: 1957
Откуда: Одесса
Рейтинг сообщения: 0
ну тоесть блин 132....перепутал малёха :)
и...насколько я знаю он умеет 24 бита отрабатывать!

_________________
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн ноя 23, 2009 23:17:27 
Друг Кота
Аватар пользователя

Карма: 58
Рейтинг сообщений: 389
Зарегистрирован: Чт мар 20, 2008 01:06:40
Сообщений: 3271
Откуда: Севастополь
Рейтинг сообщения: 0
Цитата:
6/3=5,5 мегаБАЙТ в секунду!
во сколько раз круче?

Есть т.н. принцип разумной достаточности.
При 5,5 МБайт/сек на этом дисплее можно (теоретич) получить 100кадров/сек.
Но это напоминает МПХ диаметром в 10см. Круто, но куда его такой присунуть ???

У этого дисплея малая диагональ, большая зернистость и хреновая цветопередача, ничего кроме циферок/буковок/графиков он не способен нормально отобразить. Думаю, достаточно просто поиметь в руках сам телефон, чтобы в этом убедиться.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт ноя 24, 2009 06:34:27 
Первый раз сказал Мяу!

Зарегистрирован: Сб окт 31, 2009 12:34:44
Сообщений: 25
Рейтинг сообщения: 0
abc писал(а):
ничего кроме циферок/буковок/графиков он не способен нормально отобразить.

Не совсем циферки:
www.sasamy.narod.ru/8.avi


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт ноя 24, 2009 18:11:54 
Друг Кота
Аватар пользователя

Карма: 58
Рейтинг сообщений: 389
Зарегистрирован: Чт мар 20, 2008 01:06:40
Сообщений: 3271
Откуда: Севастополь
Рейтинг сообщения: 0
Да, но ключевая фраза была "нормально отобразить". К дважды пережатому видео при 176х132pix это вряд ли относится...

Согласен, динамика хорошая.
Только вряд ли она получена с помощью скорострельной ПЛИСины. Скорее всего, с SPI и теми же 12-13Мбс.
Или у вас самоцель - непременно забабахать на нем видеомонитор и обставить китайцев, готорые уже готовый 2,5-дюймовый продают за 25$ ? "Это вряд ли" (с)

Все, спорить больше не буду. Занимайтесь маниловщиной сами.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт ноя 24, 2009 22:31:40 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 590
Зарегистрирован: Вт май 19, 2009 09:27:30
Сообщений: 3258
Откуда: Украина
Рейтинг сообщения: 0
Не хочу показаться особо навязчивым, но я уже приобрёл AT91SAM7S32 именно для этого экранчика, ибо ИМХО $крутойAVR+$ПЛИС(512macrosells)>>>$ARM. (Для непонятливых ещё раз $=цена)


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт ноя 24, 2009 23:15:49 
Друг Кота
Аватар пользователя

Карма: 58
Рейтинг сообщений: 389
Зарегистрирован: Чт мар 20, 2008 01:06:40
Сообщений: 3271
Откуда: Севастополь
Рейтинг сообщения: 0
а я - PIC18F45K20 )))
:beer:


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср ноя 25, 2009 17:11:03 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 590
Зарегистрирован: Вт май 19, 2009 09:27:30
Сообщений: 3258
Откуда: Украина
Рейтинг сообщения: 0
abc писал(а):
а я - PIC18F45K20 )))
:beer:
За солидарность :beer:


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 257 ]     ... , , , 6, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y