Не рокетсайнс. Свою напишешь
Не рокетсайнс. Свою напишешь
Код: Выделить всё
/***
Вывод пользовательских символов
Пример:
const char AV[] = {21,14,4,31,17,17,31,0};
void Custom_Chr()
{
Lcd_Cmd(64); // Запись в CGRAM
for (i = 0; i<=7; i++) Lcd_Chr_Cp(AV[i]);
Lcd_Cmd (0x02); // Return Home
Lcd_Chr(1, 1, 0); // Выводим в 1 строку в первый символ
}
***/
/**
Lcd_Cmd(0x01); // Очистка дисплея
**/
sbit LCD_RS at RB5_bit;
sbit LCD_EN at RB4_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;
void LCD_STROBE(void)
{
LCD_EN = 1;
delay_us(2);
LCD_EN = 0;
}
void Lcd_Dat(char c)
{
LCD_D4 = (c & 1) ? 1 : 0;
LCD_D5 = (c & 2) ? 1 : 0;
LCD_D6 = (c & 4) ? 1 : 0;
LCD_D7 = (c & 8) ? 1 : 0;
}
void Lcd_Cmd(char c)
{
LCD_RS = 0;
Lcd_Dat ( c >> 4 );
delay_us(2);
LCD_STROBE();
Lcd_Dat(c);
delay_us(2);
LCD_STROBE();
delay_ms(2);
}
void Lcd_Init()
{
LCD_RS = 0;
LCD_EN = 0;
Lcd_Dat(0x00);
delay_ms(15);
Lcd_Cmd (0x03);
LCD_STROBE();
delay_ms(5);
LCD_STROBE();
delay_ms(5);
LCD_STROBE();
delay_ms(5);
Lcd_Cmd(0x02);
delay_ms(5);
Lcd_Cmd(0x28);
delay_us(40);
Lcd_Cmd(0x06);
delay_us(40);
Lcd_Cmd(0x0C);
}
void Lcd_Chr_Cp(unsigned char c)
{
LCD_RS = 1;
Lcd_Dat ( c >> 4);
delay_us(2);
LCD_STROBE();
Lcd_Dat( c );
delay_us(2);
LCD_STROBE();
delay_ms(2);
}
void Lcd_Out_Cp(const char *q)
{
while (*q) {
Lcd_Chr_Cp(*q++);
}
}
void Lcd_Chr(char row, char col, char c){
if(row == 1)
{
Lcd_Cmd(0x80 + col - 1);
}
else if(row == 2)
{
Lcd_Cmd(0xC0 + col - 1);
}
Lcd_Chr_Cp(c);
}
void Lcd_Out(char row, char col, const char *q){
if(row == 1)
{
Lcd_Cmd(0x80 + col - 1);
}
else if(row == 2)
{
Lcd_Cmd(0xC0 + col - 1);
}
Lcd_Out_Cp(q);
}
Судя по даташиту питание 3 ВJOHN2018 писал(а):При включении с напряжением питания 5 Вольт 8 первых квадратиков и всё.
Код: Выделить всё
// Активизация четырехразрядного режима
lcd_com(0x03);
PORTC |= (1 << EN);
PORTC &= ~(1 << EN);
_delay_ms(10);
lcd_com(0x02);
PORTC |= (1 << EN);
PORTC &= ~(1 << EN);
_delay_ms(1); // можно попробовать уменьшить до _delay_us(200);
lcd_com(0x28);
lcd_com(0x0C);
lcd_com(0x06);
lcd_com(0x01);
_delay_ms(5);

