Jump to content

splcomp

Members
  • Content Count

    1
  • Joined

  • Last visited

Community Reputation

0 Обычный

About splcomp

  • Rank
    Новенький

Информация

  • Город
    Мыски

Электроника

  • Стаж в электронике
    Менее года
  1. Подскажите, где ошибка. Никак не получается вывести символ на вторую строчку. Когда в коде прописываешь выводить символ на вторую строчку то и на первой ничего не высвечивается. А если только на первой то все работает? #define F_CPU 4800000UL #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #include <stdio.h> #include <stdlib.h> //--------------------------------------------------------------------- #define e1 PORTB|=0b00010000; //устанавливаем линию е на дисплеи в 1 #define e0 PORTB&=0b11101111; //устанавливаем линию е на дисплеи в 1 #define rs1 PORTB|=0b00100000; //устанавливаем линию rs на дисплеи в 1 (передаем данные) #define rs0 PORTB&=0b11011111; //устанавливаем линию rs на дисплеи в 1 (передаем команду) //--------------------------------------------------------------------- void port_ini(void) //Задаем параметры порта { PORTB = 0x00; DDRB = 0xFF; } //--------------------------------------------------------------------- void polbyte(unsigned char c) //отправляем пол байта { e1; //устанавливаем линию е на дисплеи в 1 _delay_us(50); PORTB&=0b11110000; // очищаем младший байт порта PORTB|=c; //посылаем в порт e0; //устанавливаем линию е на дисплеи в 0 _delay_us(50); } //--------------------------------------------------------------------- void byte(unsigned char c, unsigned char mod) //отправляем весь байт { if (mod==0) { rs0; //говорим контроллеру что будем передовать команды } else rs1; // иначи передаем данные unsigned char hc=0; //объявляем переменную старшую часть байта hc=c>>4; //сдвигаем старшую часть в право(во младшую) polbyte(hc); //передаем старшую часть байта polbyte(c);// передаем весь байт (из которой передасться только младшая) } //--------------------------------------------------------------------- void setpos (unsigned char x, unsigned char y) //устанавливаем позицию курсора { char adress; adress = (0x40*y+x)|0b10000000; byte(adress,0); } //--------------------------------------------------------------------- void sendchar (unsigned char c) //передаем данные { byte(c,1); } //--------------------------------------------------------------------- void lcd_clear () { byte(0x01,0); _delay_us(1500); } //--------------------------------------------------------------------- void str_lcd (char str1[]) { wchar_t n; for (n=0;str1[n]!='\0';n++) sendchar(str1[n]); } //--------------------------------------------------------------------- void lcd_ini(void) //Подключаемся к дисплею { _delay_ms(15); polbyte(0b00000011); _delay_ms(4); polbyte(0b00000011); _delay_us(100); polbyte(0b00000011); _delay_ms(1); polbyte(0b00000010); _delay_ms(1); byte(0b00101000,0);//передаем команда работать с 4бит, и в 2 линии _delay_ms(1); byte(0b00001100,0); //включаем дисплей. курсоры не не выводим _delay_ms(1); byte(0b00000110,0); //заставляем курсор двигаться с право на лево _delay_ms(1); } //--------------------------------------------------------------------- int main(void) { port_ini(); lcd_ini(); lcd_clear (); setpos(2,0); str_lcd("Hello world"); // setpos(0,0); //устанавливаем позицию курсора // sendchar('n');//передаем данные // setpos(10,0); //устанавливаем позицию курсора // sendchar('n');//передаем данные // setpos(1,1); //устанавливаем позицию курсора // sendchar('n');//передаем данные while (1) { } }
×
×
  • Create New...