если нужно могу тестовую програмку скинуть для пик шоб проверить работу модуля.
- Вложения
-
- экран.JPG
- (170.97 КБ) 926 скачиваний
Да нет у меня таких проблемав. Просто когда оцифровываешь несколько сотен изо-байтиков, чисто по вероятности несколько штук накосячишь. А прога это делает на раз и без ошибок. Только у нее должны быть как минимум 2 режима, потому что бывают графические ЖКИ, у которых байтик разворачивается построчно, у других - поколонно. Со вторыми работать проще.Ethereal писал(а):Значит у тебя проблемы с переводом в уме двоичных чисел в шестнадцатеричные.
Если протыкать на обоих концах разъемами - таки да, а для пайки предпочитаю скрутить из МГТФок несколько пар. Не очень эстетично, зато нервы экономит.БАТАРЕЙКУС писал(а):а какж тогда быть, что вы можите предложить? я вот пака лутшей альтернативы невстречал.Не люблю разделывать эти плоские кабели.
Код: Выделить всё
void OpenXLCD_1(void)
{
DATA_PORT = 0;
TRIS_DATA_PORT = 0xff;
TRIS_RW = 0; // All control signals made outputs
TRIS_RS = 0;
TRIS_E = 0;
RW_PIN = 0; // R/W pin made low
RS_PIN = 0; // Register select pin made low
E_PIN = 0; // Clock pin made low
}
Код: Выделить всё
void OpenXLCD_2(unsigned char lcdtype)
{
// Delay for 15ms to allow for LCD Power on reset
DelayPORXLCD();
TRIS_DATA_PORT = 0; // Data port output
DATA_PORT = 0b00110000; // Function set cmd(8-bit interface)
E_PIN = 1; // Clock the cmd in
DelayFor18TCY();
E_PIN = 0;
// Delay for at least 4.1ms
DelayXLCD5ms();
DATA_PORT = 0b00110000; // Function set cmd(8-bit interface)
E_PIN = 1; // Clock the cmd in
DelayFor18TCY();
E_PIN = 0;
// Delay for at least 100us
DelayXLCD100();
DATA_PORT = 0b00110000; // Function set cmd(8-bit interface)
E_PIN = 1; // Clock cmd in
DelayFor18TCY();
E_PIN = 0;
TRIS_DATA_PORT = 0xff; // Make data port input
return;
}Код: Выделить всё
TRIS_DATA_PORT = 0; // Make port output
DATA_PORT = data; // Write data to port
RS_PIN = 1; // Set control bits
RW_PIN = 0;
DelayFor18TCY();
E_PIN = 1; // Clock data into LCD
DelayFor18TCY();
E_PIN = 0;
RS_PIN = 0; // Reset control bits
TRIS_DATA_PORT = 0xff; // Make port input
RS_PIN = 1; // Set control bits
RW_PIN = 0;
DelayFor18TCY();
E_PIN = 1; // Clock nibble into LCD
DelayFor18TCY();
E_PIN = 0;
DelayFor18TCY();
E_PIN = 1; // Clock nibble into LCD
DelayFor18TCY();
E_PIN = 0;Код: Выделить всё
#define RW_PIN PORTAbits.RA2 /* PORT for RW */
#define TRIS_RW TRISAbits.TRISA2 /* TRIS for RW */
#define RS_PIN PORTAbits.RA1 /* PORT for RS */
#define TRIS_RS TRISAbits.TRISA1 /* TRIS for RS */
#define E_PIN PORTAbits.RA3 /* PORT for D */
#define TRIS_E TRISAbits.TRISA3 /* TRIS for E */
#define CS1_PIN PORTAbits.RA4
#define TRIS_CS1 PORTAbits.TRISA4
#define CS2_PIN PORTAbits.RA5
#define TRIS_CS2 PORTAbits.TRASA5 /выбор кристалов
mdscorp писал(а):для тупого
Код: Выделить всё
1) выставляеш на RW, RS нулевые уровни.
2) подаёш единичный уровень(в дальнейшем "1") на Reset
3)ждёш 2мкс.
4)подаёш 1 на CS1, CS2.
5ждёш 2мкс.
6)подаёш 0 на Reset
7)ждёш 2мкс.
8)подаёш 1на Reset
9)ждёш 2мкс.
10)подаёш B'00111111' на D7-D0
11)ждёш 2мкс.
12)подаёш 1 на E
13) ждёш 12мкс
14)подаёш 0 на E
15) очищяеш D7-D0 спасибо, очень доходчивоБАТАРЕЙКУС писал(а):для тупого
Код: Выделить всё
void OpenXLCD_2(unsigned char lcdtype)
{
// Delay for 15ms to allow for LCD Power on reset
DelayPORXLCD();
TRIS_CTRL_PORT = 0;
RW_PIN = 0;
RS_PIN = 0;
RST_PIN = 1;
DelayXLCD5ms(); //ждёш 2мкс.
CS1_PIN = 1;
CS2_PIN = 1; //4)подаёш 1 на CS1, CS2.
DelayXLCD5ms(); //5ждёш 2мкс.
RST_PIN = 0; //6)подаёш 0 на Reset все ресет отпущен
DelayXLCD5ms(); //7)ждёш 2мкс.
RST_PIN = 1; // 8)подаёш 1на Reset
DelayXLCD5ms(); // 9)ждёш 2мкс.
TRIS_DATA_PORT = 0; //
DATA_PORT = 0b00111111; // 10)подаёш B'00111111' на D7-D0
DelayXLCD5ms(); //11)ждёш 2мкс.
E_PIN = 1; // Clock the cmd in
DelayFor18TCY();
E_PIN = 0; //12)подаёш 1 на E 13) ждёш 12мкс 14)подаёш 0 на E
TRIS_DATA_PORT = 0; //
DATA_PORT = 0;
return;
}Код: Выделить всё
movlw B'10111000' ; запить в экран номер
call Stron_StolB ;; нулевой страницы
movlw B'01000000' ; запить в экран номер
call Stron_StolB ; нулевой строки
movlw B'10111111' ; запить в экран номер
call Stron_StolB ; седьмой страницы
movlw B'01111111' ; запить в экран номер
call Stron_StolB ; 63-его столбца
;-----------------------------------------------------------------
Stron_StolB bcf PortA,3 ;
movwf PortC ;
call Pause_10 ;
bsf PortA,5 ;
call Pause_10 ;
bcf PortA,5 ;
clrf PortC ;
return ;
;-----------------------------------------------------------------
Пробный он-лайн редактор символов.Sounds писал(а):Подскажите а в чём можно символы рисовать?
Код: Выделить всё
#include "somefile.h" // <- Инкладим файл с папки проекте
#include <somefile.h> // <- Инкладим файл с папки компилятора