Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.77/31: Рейтинг темы: голосов - 31, средняя оценка - 4.77
Subo
0 / 0 / 0
Регистрация: 07.01.2012
Сообщений: 2
1

STM32L Discovery и дисплей от Nokia 1202/1203/1280

10.01.2012, 18:23. Просмотров 5937. Ответов 4
Метки нет (Все метки)

Здравствуйте! Проблема с дисплеем от Nokyo 1202.
Уже неделю борюсь с этим монохромным дьяволом!
Пробовал управлять через USORT и дрыгать ножками, бесполезно.
Datasheet на STE2007 изучен, статьи прочитаны. Подключаю, включаю, никакой реакции.

Если кто может, дайте рабочую демку какую-нибудь, а то может пайка кривая. В архиве два проекта для Keil, платка для SL, и фотография прилагается.

PS Где-то пару дефайнов в stm32l1xx.h для личных нужд(чтоб соответствовали дш) поправил, уже не помню где, сори. В архив stm32l1xx.h тоже вложил, на всякий случай.

[188.85 Кб]
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2012, 18:23
Ответы с готовыми решениями:

STM32F051R8T6 + NOKIA 1202, NOKIA1616 (EXAMPLE)
Подключил дисплейчик привожу код, кому то пригодится. Подключен к SPI1. CS и RESIT программно....

STM32L-Discovery + диод
Всем привет. Обзавелся я отладочной платой STM32T-Dyscovery, и требуется измерить температуру с...

STM32L Discovery + HC-SR04
Здравствуйте, ребят помогите пожалуйста с исходниками или примером работы контролера STM32T...

LCD в STM32L-Discovery
Не получается сгенерировать символы на ЖК-дисплее в STM32T-Dyscovery. Сначала был косяк в том что,...

Внешний резонатор на STM32L-Discovery.
На плату STM32T-Dyscovery хочу поставить внешний резонатор. С кварцами до 14 МГц плата работает. А...

4
otixsys
0 / 0 / 0
Регистрация: 10.02.2010
Сообщений: 66
11.01.2012, 04:32 2
И нициализация дисплея ничем не отличается от nokii1100 вот библиотека для работы с 1100, посмотрите если будут вопросы обращайтесь, и по окончании записи нужно перевести sck в 0.

[3.19 Кб]
0
Subo
0 / 0 / 0
Регистрация: 07.01.2012
Сообщений: 2
11.01.2012, 17:01 3
Спасибо, otixsys, последовал Вашему совету. Но, увы.
Код
#include "stm32l1xx.h"
void lcd_init(void);
void lcd_sck(uint8_t mode);
void lcd_mosi(uint8_t mode);
void lcd_res(uint8_t mode);
void lcd_cs(uint8_t mode);
void lcd_send(uint8_t data,uint8_t mode);
void nop(volatile uint32_t i);
void SystemInit(void) {};
uint8_t i;

int main(void)
{
RCC->AHBENR|=RCC_AHBENR_GPIOCEN; // включаем тактирование порта C
GPIOC->MODER|=GPIO_MODER_MODER0_0; // SCK
GPIOC->MODER|=GPIO_MODER_MODER1_0; // MOSI
GPIOC->MODER|=GPIO_MODER_MODER2_0; // CS
GPIOC->MODER|=GPIO_MODER_MODER3_0; // RES
GPIOC->OSPEEDR|=GPIO_OSPEEDR_OSPEEDR0 // устанавливаем скорость
|GPIO_OSPEEDR_OSPEEDR1
|GPIO_OSPEEDR_OSPEEDR2
|GPIO_OSPEEDR_OSPEEDR3;
GPIOC->ODR&=~(1<<0); // SCK down
GPIOC->ODR&=~(1<<1); // MOSI down
GPIOC->ODR|=(1<<2); // CS up
GPIOC->ODR|=(1<<3); // RES up
//////////////////////////////////////////////////
lcd_init();
//////////////////////////////////////////////////
lcd_send(0xB0,0);
for(i=0; i<8; i++) {lcd_send(0xFF,1);}
}

void lcd_init(void)
{
lcd_send(0xE2,0); nop(100000); // сбрасываем, ждём;
lcd_send(0x3D,0);
lcd_send(0x01,0);
lcd_send(0xE1,0);
lcd_send(0x16,0);
lcd_send(0xA4,0);
lcd_send(0x2F,0);
lcd_send(0xAF,0); // включаем LCD
}

void lcd_send(uint8_t data,uint8_t mode)
{
uint8_t i;
lcd_cs(0); nop(100); // CS down
if(mode) {lcd_mosi(1); nop(10);} else {lcd_mosi(0); nop(10);} // 8-й бит; Data - 1; Commomd - 0;
lcd_sck(1); nop(10); // SCK up
lcd_sck(0); nop(10); // SCK down
for(i=0; i<8; i++)    // 7, 6, 5, 4, 3, 2, 1, 0 биты
{
if(data&(0x80>>i)) {lcd_mosi(1); nop(10);} else {lcd_mosi(0); nop(10);}
lcd_sck(1); nop(10); // SCK up
lcd_sck(0); nop(10); // SCK down
}
lcd_cs(1); nop(100); // CS up
}

void nop(volatile uint32_t i)
{
while(i) i--;
}

void lcd_cs(uint8_t mode) // CS , 0 - down , 1 - up;
{
if(mode) {GPIOC->ODR|=(1<<2);} else {GPIOC->ODR&=~(1<<2);}
}

void lcd_mosi(uint8_t mode)   // MOSI , 0 - down , 1 - up;
{
if(mode) {GPIOC->ODR|=(1<<1);} else {GPIOC->ODR&=~(1<<1);}
}

void lcd_res(uint8_t mode) // RES , 0 - down , 1 - up;
{
if(mode) {GPIOC->ODR|=(1<<3);} else {GPIOC->ODR&=~(1<<3);}
}

void lcd_sck(uint8_t mode) // SCK , 0 - down , 1 - up;
{
if(mode) {GPIOC->ODR|=(1<<0);} else {GPIOC->ODR&=~(1<<0);}
}
В чём же дело?
0
otixsys
0 / 0 / 0
Регистрация: 10.02.2010
Сообщений: 66
12.01.2012, 02:15 4
Попробуйте тестером посмотреть оно вообще там переключается, например вывод cs,может экран конченый?

Зачем эти странные манипуляции с битами воспользуйтесь регистром BSRR.
0
Omkit5o
0 / 0 / 0
Регистрация: 01.02.2011
Сообщений: 219
12.01.2012, 15:31 5
Может сюда http://tuxotronic.org/wiki/somponent/lcd/ste2007 стоит глянуть ?
0
12.01.2012, 15:31
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.01.2012, 15:31

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Начало работы с STM32L-Discovery
Здравствуйте, хочу научиться программированию на C для микроконтроллеров. Купил этот...

STM32L-Discovery и экран от nokii1100
Доброго времени суток уважаемые форумчане, наигрался с платой STM32T-Dyscovery и решил прикрутить к...

подключение stm32l-discovery к keil
Всем доброго времени суток. в армах я новичок, прикупил себе плату stm32l-discovery. при...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.