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

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

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

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

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

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

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 29.03.2007, 01:41  
goooblin
Прохожий
 
Регистрация: 24.03.2007
Сообщений: 2
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
goooblin на пути к лучшему
По умолчанию как вывести на LCD данные из буфера?

Здравствуйте. У меня в программе на микроконтроллер атмега8 нужно вывести данные из буфера на LCD(16х2).
Тоесть создал буфер( byte TnBuf [65]; ),в который помещаем данные - 65 бит.
Данные нужно вывести в формате ANSII.

Сейчас стоит вот такая конструкция:
Цитата:
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x18 ;PORTB
#endasm
#include ‹lcd.h›
char data[16]={'0','1','2','3','4','5','6','7','8','9','A','B', 'C','D','E','F'};
char aaa;
char bbb;

byte i,k,j;
void main(void)
{
lcd_init(16);
lcd_gotoxy(0,0);
lcd_clear();
}

void lcd_display(char *str)
{
j=0;
k=0;
for (i=0; i‹9; i++)
{

aaa = str[i]››4;
bbb = str[i]&0b00001111;
lcd_gotoxy (j++, k);
lcd_putchar (aaa+4;
lcd_gotoxy (j++, k);
lcd_putchar (bbb+4;
if ((j==&&(k==0)) {k=1; j=0;}

}
}

lcd_display(data);
Выводит нето что нужно,а нужно чтобы выводил строчку из 16 символов.

Подскажите пожалуйста, как это лучше реализовать?
Может есть другие способы вывести содержимое буфера на дисплей?
Реклама:
goooblin вне форума  
Непрочитано 29.03.2007, 10:53  
kapNemo
Временная регистрация
 
Регистрация: 09.01.2006
Сообщений: 63
Сказал спасибо: 0
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
kapNemo на пути к лучшему
По умолчанию Re: как вывести на LCD данные из буфера?

Сообщение от goooblin
Данные нужно вывести в формате ANSII.
Какой-то новый стандарт? Про него не знаю, а вот если старый добрый ASCII пойдет...
Код:
char data[17]={'0','1','2','3','4','5','6','7','8','9','A','B',  'C','D','E','F',0x00};
...
void main(void)
{
lcd_init(16);
lcd_gotoxy(0,0); 
lcd_clear();

lcd_puts(data);
}
kapNemo вне форума  
Непрочитано 29.03.2007, 11:00  
fuccer
Частый гость
 
Регистрация: 17.01.2007
Сообщений: 30
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
fuccer на пути к лучшему
По умолчанию

смотря еще какой ЛЦД пользуешь! Я юзаю в одном проекте такую вещь:

АТмега8, порт Ц - для вывода.
Распиновка битов:
С0 - D4
С1 - D5
С2 - D6
С3 - D7
С4 - RS
С5 - E

Вот проца для вывода символа в индюк:
indout(RS,число)
RS: 1 - в CGRAM, 0 - в регистры управления

Код:
#include ‹delay.h›
void indout(char rs,char io)
{
PORTC.5=0;
delay_us(1);
if (rs==0) {PORTC.4=0;} else {PORTC.4=1;}
PORTC&=0b11110000;
PORTC|=io››4;
PORTC.5=1;
delay_us(1);
PORTC.5=0;
delay_us(1);
PORTC.5=1;
PORTC&=0b11110000;
PORTC|=io & 0b1111;
PORTC.5=0;
delay_us(5);
}
Прога для печати из FLASH:
print (длина,адрес)
адрес - метка, где лежит текст. Также можно делать так:
print (11,"PERVYI NAH!")

если в дефайне убрать FLASH, то прога будет печатать из SRAM. Ставишь свой буфер и впирет:
print (16,data)

Код:
void print(char leng,flash char *text)
{char ch_off=0;
while (leng›1) {indout(1,*(text+ch_off));leng--;ch_off++;}}
инициализация дисплея - запускать в самом начале один раз:
Код:
void ind_init(void)
{
indout(0,1);        //CLS
indout(0,2);        //cursor home
indout(0,4+2);      //increment
indout(0,8+0b101);  //d_ON,blink,nocursor
indout(0,32+0b1000+dimmer);//bright
indout(0,128+0);    //setpos = 0
}

просто очистка экрана: indout(0,1)

установка позиции курсора:
SETPOS(строка,столбец)
нумерация с нуля

Код:
void setpos(char row,char col)
{char cgadd=0;
if (row==0) cgadd=0x80+col;
if (row==1) cgadd=0xC0+col;
if (row==2) cgadd=0x94+col;
if (row==3) cgadd=0xD4+col;
indout(0,cgadd);}

Вот рисуног LCD

-- Прилагается рисунок: --
fuccer вне форума  
Непрочитано 29.03.2007, 11:03  
fuccer
Частый гость
 
Регистрация: 17.01.2007
Сообщений: 30
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
fuccer на пути к лучшему
По умолчанию

кстати, индикатор - любой, совместимый с HD44780
fuccer вне форума  
Непрочитано 29.03.2007, 17:36  
avr123-nm-ru
Почётный гражданин KAZUS.RU
 
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
avr123-nm-ru на пути к лучшему
По умолчанию

Вот о выводе на LCD - avr123.nm.ru/z5.htm
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
avr123-nm-ru вне форума  
Непрочитано 30.03.2007, 05:58  
fuccer
Частый гость
 
Регистрация: 17.01.2007
Сообщений: 30
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
fuccer на пути к лучшему
По умолчанию

Сообщение от avr123-nm-ru
Вот о выводе на LCD - avr123.nm.ru/z5.htm
стандартная процедюра из КодеВизарда не всегда подходит. Особенно, на PORTC в Меге8 Она жрет целый порт, причем оставляет посередине пустой бит (который R/W - для HD44780 с Dual Port RAM читать готовность вообще не надо). Тем более, в других компилерах процедурки другие, или их вообще нет
fuccer вне форума  
Непрочитано 30.03.2007, 06:02  
fuccer
Частый гость
 
Регистрация: 17.01.2007
Сообщений: 30
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
fuccer на пути к лучшему
По умолчанию

avr123-nm-ru
а вообще, у тебя классный ресурс (если на огромные шрифты не смотреть ), все просто и понятно, буду пацанов отсылать туды
fuccer вне форума  
Непрочитано 30.03.2007, 07:19  
avr123-nm-ru
Почётный гражданин KAZUS.RU
 
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
avr123-nm-ru на пути к лучшему
По умолчанию

Жду реальных ПАЦАНОВ !

Вот задачку новую делаю по последовательной передаче данных в синтезаторы LMX2316
avr123.nm.ru/z12.htm

__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
avr123-nm-ru вне форума  
Непрочитано 30.03.2007, 09:52  
fuccer
Частый гость
 
Регистрация: 17.01.2007
Сообщений: 30
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
fuccer на пути к лучшему
По умолчанию

LMX2306- пройденный этап

В проекте радиостанции "Аметист" использовал следующее:

(данные из еепром, группами по 4 байта)
(djnz: macro
dec @0
brne @1 - очень удобно...)

Код:
;======================================
;********** USED SUBROUTINES **********
;======================================
;
BBout:
	push tmp
	push tmp1
	cbi portc,5
	sbi ddrc,4
	cbi portc,4
	ldi tmp1,8	;c5-busclk, c4-busdta
	rcall dms
bbout1: rol tmp
	cbi portc,4
	brcc ibbo0
	sbi portc,4
ibbo0:	sbi portc,5
	rcall dms
	cbi portc,5
	rcall dms
	djnz tmp1,bbout1
	rcall dms
	pop tmp1
	pop tmp
	ret

BBout2:
	push tmp
	push tmp1
	cbi portc,5
	sbi ddrc,4
	cbi portc,4
;	ldi tmp1,8	;c5-busclk, c4-busdta
	rcall dms
	rjmp bbout1

;iBBout:
;	push tmp
;	push tmp1
;	ldi tmp1,8	;c5-busclk, c4-busdta
;ibbout1:ror tmp
;	cbi portc,4
;	brcc ibbo1
;	sbi portc,4
;ibbo1:	sbi portc,5
;	nop
;	nop
;	cbi portc,5
;	nop
;	nop
;	djnz tmp1,ibbout1
;	pop tmp1
;	pop tmp
;	ret


BBin:	
	push tmp1
	cbi ddrc,2
	ldi tmp1,8	;c5-busclk, c2-busdta for cmx
	clr tmp
bbin1:	clc
	sbi portc,5
	nop
	nop
	nop
	nop
	nop
	nop
	clc
	sbic pinc,2
	sec
	rol tmp
	cbi portc,5
	nop
	nop
	nop
	nop
	nop
	nop
	djnz tmp1,bbin1
	pop tmp1
	ret
;======================================

Synth:			; Writing freq from table to synthesizer

	lds tmp,TC_Chan	;format: [Addr,],mode= (0-Tx or 1-Rx) PORTB4-LMX_LE
	clr tmp1
	clc
	rol tmp
	rol tmp1
	rol tmp
	rol tmp1		; mul 4
	clc
	mov zh,tmp1
	mov zl,tmp
	adiw zh:zl,3
	; shifted table on 2+1 (to first value)
	cbi PORTB,4
	cpi mode,0
	breq endcp

	subi zh,-16		; if in receive mode then choose 2nd table
endcp:	;mov ZH,tmp1
	;mov ZL,tmp		; now we have Full absolute address of 2nd cell at this channel


	clr tmp
	sts data1,tmp		;bank0
	sts data2,ZH
	sts data3,ZL
	rcall ee_read
lds tmp,data4;;;;;;;;;;;;small byte
	push tmp
	rcall ee_read
lds tmp,data4
push tmp
rcall ee_read
lds tmp,data4


andi tmp,0b00000011
clc
ror tmp
ror tmp
ror tmp
ror tmp
sbr tmp,0b10000000
	cbi PORTB,4
;	ldi tmp,001
	ldi tmp1,3
	rcall bbout2		;write complete
pop tmp;lds tmp,data4;
	ldi tmp1,8
	rcall bbout
pop tmp		; 2nd byte 
	ldi tmp1,8
	rcall bbout
	ldi tmp,2		; [1,0]
	ldi tmp1,2
	rcall ibbout2		; control bitz for N counter
	sbi PORTB,4
	rcall dms
	cbi portb,4


;======
	ldi tmp1,16
	sts data2,tmp1
	ldi tmp1,1
	sts data3,tmp1
	rcall ee_read
lds tmp,data4;small byte
	push tmp
	clr tmp1
	sts data3,tmp1
rcall ee_read

	cbi PORTB,4
	ldi tmp,001
	ldi tmp1,3
	rcall ibbout2		;write complete
lds tmp,data4
	ldi tmp1,8
	rcall bbout
pop tmp		; 2nd byte 
	ldi tmp1,8
	rcall bbout
	ldi tmp,0		; [0,0]
	ldi tmp1,2
	rcall ibbout2		; control bitz for R counter
	sbi PORTB,4
	rcall dms
	cbi portb,4
ret



;	ldi tmp1,3	;c5-busclk, c4-busdta
ibbout2:rcall dms
	ror tmp
	cbi portc,4
	brcc ibbo2
	sbi portc,4
ibbo2:	sbi portc,5
	rcall dms
	cbi portc,5
	rcall dms
	djnz tmp1,ibbout2
	ret
fuccer вне форума  
Непрочитано 01.04.2007, 17:14  
dimonbest
Гражданин KAZUS.RU
 
Аватар для dimonbest
 
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
dimonbest на пути к лучшему
По умолчанию

Лучше дествительно написать свою функцию вывода информации на LCD экранчик. Как минимум экономиться 1 порт контроллера. datasheet и пример моих функций в CodeVisionVR могу выложить если интересно...
dimonbest вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вывести русские символы на LCD из CAVR mdn_tec Микроконтроллеры, АЦП, память и т.д 51 27.05.2012 23:52
Как передать данные через модем roog Автоматика и аппаратура связи 4 08.02.2009 02:56
как вывести буквы на дисплей andron-kip Микроконтроллеры, АЦП, память и т.д 4 27.10.2008 00:28
подскажите как вывести значение ацп на индикатор ctefan Микроконтроллеры, АЦП, память и т.д 13 06.04.2007 10:59
Как вывести из ступора DS1307? Muzicant Микроконтроллеры, АЦП, память и т.д 4 09.10.2006 19:28


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


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