Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 23.08.2018, 10:10  
Alpout
Прописка
 
Аватар для Alpout
 
Регистрация: 13.09.2011
Адрес: Уфа
Сообщений: 253
Сказал спасибо: 20
Сказали Спасибо 19 раз(а) в 14 сообщении(ях)
Alpout на пути к лучшему
Вопрос Дисплей ST7920(128х64) и PIC16F887. Не работает графический режим.

В упор не вижу где косяк. Не могу найти грань переключения графического режима и текстового? В документации не нашел описание между переключениями режимами текстового режима и графического. Приложу код и видео работы дисплея, может где-то ошибся...Буду рад помощи..ST7920.rar
st7920.pdf
Код:
/*
 * File:   newmain.c
 * Author: Acer
 *
 * Created on 27 02 2018 , 23:44
 */
#include ‹xc.h›
#ifndef _XTAL_FREQ
#define _XTAL_FREQ 8000000
#endif
#define Rst  RD4
#define Clk  RD5
#define Sid  RD6
#define CS   RD7


#define Dsp_Clear      0b00000001
#define Home            0
#define Entry_mode     0b00000111
#define Dsp_Ctrl       0b00001100
#define Function_Set_Ext   0b00101110
#define Function_Set_Basic 0b00111010

#define CMD		0
#define DATA	1
unsigned char X, Y;

static const char Font[][5] = {
    { 0x00, 0x00, 0x00, 0x00, 0x00}, // sp
    { 0x00, 0x00, 0x2f, 0x00, 0x00}, // !
    { 0x00, 0x07, 0x00, 0x07, 0x00}, // "
    { 0x14, 0x7f, 0x14, 0x7f, 0x14}, // #
    { 0x24, 0x2a, 0x7f, 0x2a, 0x12}, // $
    { 0x23, 0x13, 0x08, 0x64, 0x62}, // %			

    { 0x36, 0x49, 0x55, 0x22, 0x50}, // &
    { 0x00, 0x05, 0x03, 0x00, 0x00}, // '
    { 0x00, 0x1c, 0x22, 0x41, 0x00}, // (
    { 0x00, 0x41, 0x22, 0x1c, 0x00}, // )
    { 0x14, 0x08, 0x3E, 0x08, 0x14}, // *
    { 0x08, 0x08, 0x3E, 0x08, 0x08}, // +  
    { 0x00, 0x00, 0x50, 0x30, 0x00}, // ,
    { 0x10, 0x10, 0x10, 0x10, 0x10}, // -
    { 0x00, 0x60, 0x60, 0x00, 0x00}, // .
    { 0x20, 0x10, 0x08, 0x04, 0x02}, // /  

    { 0x3E, 0x45, 0x49, 0x51, 0x3E}, // 0
    { 0x00, 0x21, 0x7F, 0x01, 0x00}, // 1
    { 0x23, 0x45, 0x49, 0x51, 0x21}, // 2
    { 0x42, 0x41, 0x51, 0x69, 0x46}, // 3		
    { 0x0C, 0x14, 0x24, 0x7F, 0x04}, // 4
    { 0x00, 0x71, 0x51, 0x51, 0x4E}, // 5
    { 0x1E, 0x29, 0x49, 0x49, 0x06}, // 6
    { 0x40, 0x47, 0x48, 0x50, 0x60}, // 7
    { 0x36, 0x49, 0x49, 0x49, 0x36}, // 8
    { 0x30, 0x49, 0x49, 0x4A, 0x3C}, // 9		
    { 0x00, 0x36, 0x36, 0x00, 0x00}, // :
    { 0x35, 0x36, 0x00, 0x00, 0x00}, // ;
    { 0x08, 0x14, 0x22, 0x41, 0x00}, // ‹
    { 0x14, 0x14, 0x14, 0x14, 0x14}, // =
    { 0x00, 0x41, 0x22, 0x14, 0x08}, // ›
    { 0x20, 0x40, 0x45, 0x48, 0x30}, // ?
    { 0x26, 0x49, 0x4D, 0x45, 0x3E}, // @

    { 0x7E, 0x88, 0x88, 0x88, 0x7E}, // A
    { 0x7F, 0x49, 0x49, 0x49, 0x36}, // B
    { 0x3E, 0x41, 0x41, 0x41, 0x22}, // C
    { 0x7F, 0x41, 0x41, 0x22, 0x1C}, // D
    { 0x7F, 0x49, 0x49, 0x49, 0x41}, // E
    { 0x7F, 0x09, 0x09, 0x09, 0x01}, // F
    { 0x3E, 0x41, 0x49, 0x49, 0x7A}, // G
    { 0x7F, 0x08, 0x08, 0x08, 0x7F}, // H
    { 0x00, 0x41, 0x7F, 0x41, 0x00}, // I
    { 0x20, 0x40, 0x41, 0x3F, 0x01}, // J
    { 0x7F, 0x08, 0x14, 0x22, 0x41}, // K
    { 0x7F, 0x40, 0x40, 0x40, 0x40}, // L
    { 0x7C, 0x04, 0x18, 0x04, 0x78}, // m
    { 0x7F, 0x04, 0x08, 0x10, 0x7F}, // N
    { 0x3E, 0x41, 0x41, 0x41, 0x3E}, // O
    { 0x7F, 0x09, 0x09, 0x09, 0x06}, // P
    { 0x3E, 0x41, 0x51, 0x21, 0x5E}, // Q
    { 0x7F, 0x09, 0x19, 0x29, 0x46}, // R
    { 0x46, 0x49, 0x49, 0x49, 0x31}, // S
    { 0x01, 0x01, 0x7F, 0x01, 0x01}, // T 
    { 0x3F, 0x40, 0x40, 0x40, 0x3F}, // U
    /*	{ 0x1F, 0x20, 0x40, 0x20, 0x1F },  // V
        { 0x3F, 0x40, 0x38, 0x40, 0x3F },  // W
        { 0x63, 0x14, 0x08, 0x14, 0x63 },  // X
        { 0x07, 0x08, 0x70, 0x08, 0x07 },  // Y
        { 0x61, 0x51, 0x49, 0x45, 0x43 },  // Z
        { 0x00, 0x7F, 0x41, 0x41, 0x00 },  // [
        { 0x55, 0x2A, 0x55, 0x2A, 0x55 },  // 55
        { 0x00, 0x41, 0x41, 0x7F, 0x00 },  // ]
        { 0x04, 0x02, 0x01, 0x02, 0x04 },  // ^
        { 0x40, 0x40, 0x40, 0x40, 0x40 },  // _
        { 0x00, 0x01, 0x02, 0x04, 0x00 },  // '
        { 0x20, 0x54, 0x54, 0x54, 0x78 },  // a
        { 0x7F, 0x48, 0x44, 0x44, 0x38 },  // b
        { 0x38, 0x44, 0x44, 0x44, 0x20 },  // c
        { 0x38, 0x44, 0x44, 0x48, 0x7F },  // d
        { 0x38, 0x54, 0x54, 0x54, 0x18 },  // e
        { 0x08, 0x7E, 0x09, 0x01, 0x02 },  // f
        { 0x0C, 0x52, 0x52, 0x52, 0x3E },  // g
        { 0x7F, 0x08, 0x04, 0x04, 0x78 },  // h
        { 0x00, 0x44, 0x7D, 0x40, 0x00 },  // i
        { 0x20, 0x40, 0x44, 0x3D, 0x00 },  // j
        { 0x7F, 0x10, 0x28, 0x44, 0x00 },  // k
        { 0x00, 0x41, 0x7F, 0x40, 0x00 },  // l
        { 0x7C, 0x04, 0x18, 0x04, 0x78 },  // m
        { 0x7C, 0x08, 0x04, 0x04, 0x78 },  // n
        { 0x38, 0x44, 0x44, 0x44, 0x38 },  // o
        { 0x7C, 0x14, 0x14, 0x14, 0x08 },  // p
        { 0x08, 0x14, 0x14, 0x18, 0x7C },  // q
        { 0x7C, 0x08, 0x04, 0x04, 0x08 },  // r
        { 0x48, 0x54, 0x54, 0x54, 0x20 },  // s
        { 0x04, 0x3F, 0x44, 0x40, 0x20 },  // t
        { 0x3C, 0x40, 0x40, 0x20, 0x7C },  // u
        { 0x1C, 0x20, 0x40, 0x20, 0x1C },  // v
        { 0x3C, 0x40, 0x30, 0x40, 0x3C },  // w
        { 0x44, 0x28, 0x10, 0x28, 0x44 },  // x
        { 0x0C, 0x50, 0x50, 0x50, 0x3C },  // y
        { 0x44, 0x64, 0x54, 0x4C, 0x44 },  // z  

        { 0x08, 0x08, 0x36, 0x41, 0x41 },  // {
        { 0x00, 0x00, 0x7F, 0x00, 0x00 },  // |
        { 0x41, 0x41, 0x36, 0x08, 0x08 },   // }
        { 0x02, 0x01, 0x02, 0x02, 0x01 },   // ~ */


};

void LCD_Write(char cd, unsigned char c) // отправка данных в 24 такта
{
    
    char i;
    Clk = 1;Sid = 0; 
    CS = 1;
    Clk = 0;
    //  Sid = 1
    Sid = 1;
    for (i = 0; i ‹ 5; i++) {
        Clk = 1;
        asm("nop");
        Clk = 0;
    }
    // ... : RW
    Sid = 0;
    Clk = 1;
    asm("nop");
    Clk = 0;
    // ... : RS
    Sid = cd;
    Clk = 1;
    asm("nop");
    Clk = 0;
    // ... 
    Sid = 0;
    Clk = 1;
    asm("nop");
    Clk = 0;
    // ... 
    for (i = 0; i ‹ 4; i++) {
        Clk = 0;
        if (c & 0x80) Sid = 1;
        else Sid = 0;
        Clk = 1;
        c ‹‹ = 1;
    }
    // ... 
    for (i = 0; i ‹ 4; i++) {
        Clk = 0;
        Sid = 0;
        Clk = 1;
    }
    // ... 
    for (i = 0; i ‹ 4; i++) {
        Clk = 0;
        if (c & 0x80) Sid = 1;
        else Sid = 0;
        Clk = 1;
        c ‹‹ = 1;
    }
    // ... 
    for (i = 0; i ‹ 4; i++) {
        Clk = 0;
        Sid = 0;
        Clk = 1;
    }
    // ... 
    Clk = 0;
    CS = 0;
}

void LCD_init(void) {
     __delay_ms(45);
    Rst = 0;
    asm("nop");
    Rst = 1;
   LCD_Write(CMD, Function_Set_Basic);
     __delay_us(120);
   LCD_Write(CMD, Function_Set_Basic);
     __delay_us(40);
    LCD_Write(CMD, Dsp_Ctrl);
     __delay_us(120);
    LCD_Write(CMD, Dsp_Clear);
     __delay_ms(11);
    LCD_Write(CMD, Entry_mode);
    __delay_ms(11);
   
}

void main(void) {
    TRISD = 0; PSTRCON = 0;
    LCD_init();

   
  // LCD_Write(CMD, Function_Set_Basic);   
  // LCD_Write(CMD, Dsp_Clear);
  // LCD_Write(CMD, 0b00001111);
    __delay_ms(100);
   LCD_Write(CMD, Function_Set_Ext); 
   LCD_Write(CMD, 0b10000001);
   LCD_Write(CMD, 0b10000001);
   LCD_Write(DATA, 0x7E);  // { 0x7E, 0x88, 0x88, 0x88, 0x7E}, // A
   LCD_Write(DATA, 0x88);
   LCD_Write(DATA, 0x88);LCD_Write(DATA, 0x88);LCD_Write(DATA, 0x7E);
   __delay_ms(500);
   LCD_Write(DATA, 0x7E);  // { 0x7E, 0x88, 0x88, 0x88, 0x7E}, // A
   LCD_Write(DATA, 0x88);
   LCD_Write(DATA, 0x88);LCD_Write(DATA, 0x88);LCD_Write(DATA, 0x7E);
   __delay_ms(500);
 LCD_Write(DATA, 0x7F);  // { 0x7F, 0x49, 0x49, 0x49, 0x36}, // B
 LCD_Write(DATA, 0x49);
LCD_Write(DATA, 0x49);LCD_Write(DATA, 0x49);LCD_Write(DATA, 0x36);    
//Переход через секунду ко второй части работы:
    __delay_ms(1000);
    LCD_Write(CMD, Function_Set_Basic);
    __delay_ms(1);
    LCD_Write(CMD, Dsp_Clear);
    __delay_ms(500);
    LCD_Write(DATA, 255);
    __delay_ms(500);
    LCD_Write(DATA, 255);
    __delay_ms(500);
    LCD_Write(DATA, 255);
    __delay_ms(500);
    LCD_Write(DATA, 255);
    while (1);
    //return;
}
Реклама:
Alpout вне форума  
Непрочитано 25.08.2018, 14:02  
Dtolok
Гражданин KAZUS.RU
 
Регистрация: 28.11.2007
Адрес: харьков
Сообщений: 850
Сказал спасибо: 339
Сказали Спасибо 43 раз(а) в 23 сообщении(ях)
Dtolok на пути к лучшему
По умолчанию Re: Дисплей ST7920(128х64) и PIC16F887. Не работает графический режим.

у меня та же проблема только с 12232F - переключение между режимами отвечает extended function set отвечает за него бит G. включается режим установкой этого бита в 1. но- у меня работает текстовой а вот в графику никак не перейду.
Dtolok вне форума  
Непрочитано 25.08.2018, 14:03  
Dtolok
Гражданин KAZUS.RU
 
Регистрация: 28.11.2007
Адрес: харьков
Сообщений: 850
Сказал спасибо: 339
Сказали Спасибо 43 раз(а) в 23 сообщении(ях)
Dtolok на пути к лучшему
По умолчанию Re: Дисплей ST7920(128х64) и PIC16F887. Не работает графический режим.

вот ссылка https://tutorial.cytron.io/wp-conten...datasheet2.jpg

и ссылка на сайт https://tutorial.cytron.io/2012/01/0...ng-to-skpic32/
Dtolok вне форума  
Непрочитано 25.08.2018, 14:29  
mike-y-k
Модератор
 
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,260
Сказал спасибо: 11,170
Сказали Спасибо 3,860 раз(а) в 2,930 сообщении(ях)
mike-y-k на пути к лучшему
По умолчанию Re: Дисплей ST7920(128х64) и PIC16F887. Не работает графический режим.

Alpout, страница 17 в Вашем же DS - Extended Function Set, где бит G=1 определяет работу с графической памятью
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
mike-y-k вне форума  
Сказали "Спасибо" mike-y-k
Dtolok (25.08.2018)
Непрочитано 25.08.2018, 15:35  
Dtolok
Гражданин KAZUS.RU
 
Регистрация: 28.11.2007
Адрес: харьков
Сообщений: 850
Сказал спасибо: 339
Сказали Спасибо 43 раз(а) в 23 сообщении(ях)
Dtolok на пути к лучшему
По умолчанию Re: Дисплей ST7920(128х64) и PIC16F887. Не работает графический режим.

все так - только не переходит!!! выводит всякую кракозябру!!!
Dtolok вне форума  
Непрочитано 25.08.2018, 15:55  
mike-y-k
Модератор
 
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,260
Сказал спасибо: 11,170
Сказали Спасибо 3,860 раз(а) в 2,930 сообщении(ях)
mike-y-k на пути к лучшему
По умолчанию Re: Дисплей ST7920(128х64) и PIC16F887. Не работает графический режим.

Dtolok, странно, смотреть на тайминги для команд и проверять сигналы на ногах.
Сейчас нет ничего на этом чипе под рукой для проверить, но графика там работает (у меня работала ). Все было по DS
Как альтернатива - поискать под этот дисплей библиотеки в том же arduino и посмотреть на реализацию
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
mike-y-k вне форума  
Сказали "Спасибо" mike-y-k
Dtolok (25.08.2018)
Непрочитано 25.08.2018, 17:10  
Dtolok
Гражданин KAZUS.RU
 
Регистрация: 28.11.2007
Адрес: харьков
Сообщений: 850
Сказал спасибо: 339
Сказали Спасибо 43 раз(а) в 23 сообщении(ях)
Dtolok на пути к лучшему
По умолчанию Re: Дисплей ST7920(128х64) и PIC16F887. Не работает графический режим.

да есть готовая ... но блин!!! не врублюсь в чем проблема
Dtolok вне форума  
Непрочитано 25.08.2018, 17:14  
Dtolok
Гражданин KAZUS.RU
 
Регистрация: 28.11.2007
Адрес: харьков
Сообщений: 850
Сказал спасибо: 339
Сказали Спасибо 43 раз(а) в 23 сообщении(ях)
Dtolok на пути к лучшему
По умолчанию Re: Дисплей ST7920(128х64) и PIC16F887. Не работает графический режим.

а вы делали на 12864 или на 12232f может все таки проблема в чипе? использую библиотек SKPIC32 - шриф обычный без проблем - а графика лезут иероглифы!
Миниатюры:
Нажмите на изображение для увеличения
Название: IMG_20180825_161206[1].jpg
Просмотров: 0
Размер:	260.3 Кб
ID:	132029  
Dtolok вне форума  
Непрочитано 25.08.2018, 17:22  
Dtolok
Гражданин KAZUS.RU
 
Регистрация: 28.11.2007
Адрес: харьков
Сообщений: 850
Сказал спасибо: 339
Сказали Спасибо 43 раз(а) в 23 сообщении(ях)
Dtolok на пути к лучшему
По умолчанию Re: Дисплей ST7920(128х64) и PIC16F887. Не работает графический режим.

может мой дисплей не графический??? http://www.lcdinline.com/2015/PPP/02...Jing-KM12232F/
Dtolok вне форума  
Непрочитано 25.08.2018, 17:35  
mike-y-k
Модератор
 
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,260
Сказал спасибо: 11,170
Сказали Спасибо 3,860 раз(а) в 2,930 сообщении(ях)
mike-y-k на пути к лучшему
По умолчанию Re: Дисплей ST7920(128х64) и PIC16F887. Не работает графический режим.

Dtolok, ну у меня они совсем под другой МК были (MSP430 и на ассемблере ).
Вариант именно ST7920, но большего сейчас уже не скажу - лет 8 прошло уже.
Надо смотреть сигналы на всех линиях, проверять правильность последовательностей, фазировку, частоту, отсутствие шумов, правильность интервалов между посылками,…
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
mike-y-k вне форума  
Сказали "Спасибо" mike-y-k
Dtolok (25.08.2018)
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обзоры покупок товаров на GEARBEST.COM mikesmith Барахолка электронных компонентов 397 12.10.2018 22:51
Графический дисплей из МС6205 alex6002 Микроконтроллеры, АЦП, память и т.д 1 17.04.2012 13:25
Не работает дисплей inisider Микроконтроллеры, АЦП, память и т.д 4 19.06.2010 23:22
Не работает программа инициализации компаратора PIC16F887 alexander70 Микроконтроллеры, АЦП, память и т.д 1 30.09.2009 12:18
Телефон Cameron CT-2040 не работает ни дисплей ни клавиатура RA3TSL Поиск схем. Делимся схемами 0 11.10.2008 19:53


Часовой пояс GMT +4, время: 04:07.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot