Вопросы по статье "LCD16s2d+avr (4bit)"

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Аватара пользователя
Pa5ha
Прорезались зубы
Сообщения: 243
Зарегистрирован: Ср авг 31, 2005 20:09:08
Откуда: Петрозаводск, Карелия.
Контактная информация:

Вопросы по статье "LCD16s2d+avr (4bit)"

Сообщение Pa5ha »

В общем код инициализации дисплея:

Код: Выделить всё

;****************************************************
; Инициализация LCD
;****************************************************
;команды sbi, cbi  - установка/сброс бита
;a0	pd6
;r/w	pd5
;e	pd4
;db4	pd0
;db5	pd1
;db6	pd2
;db7	pd3

INIT_LCD16S2D:
	ldi Temp,0
	ldi Temp1,0
	ldi Temp2,18

Init_next0:
	ldi Temp3,0b00010000
	out PortD,Temp3
	rcall Delay40mks

	ldi ZL,Low(LCD_INIT_DATA*2)
	ldi ZH,High(LCD_INIT_DATA*2)
	add ZL,Temp
	adc ZH,Temp1

	lpm
	mov Temp3,r0
	out PortD, Temp3
	inc Temp

	rcall Delay40mks
	cbi PortD, 4
	rcall Delay40mks

	dec Temp2
	brne Init_next0
	
	ret
LCD_INIT_DATA:
;      are3210    are3210
.db 0b00010011 ; 30h Установка разрядности
.db 0b00010011 ; 30h Установка разрядности
.db 0b00010011 ; 30h Установка разрядности
.db 0b00010010 ; 20h Установка разрядности

.db 0b00010010 ; 28h (2Ah) Установка разрядности
.db 0b00011000 ;

.db 0b00010000 ; 0Ch Выглючение дисплея
.db 0b00011000 ;

.db 0b00010000 ; 01h Очистка, курсор влево
.db 0b00010001 ;

.db 0b00010000 ; 06h Установка направления и разрешения сдвига
.db 0b00010110 ;

.db 0b00010000 ; 0Fh Включить индикатор и мигающий курсор
.db 0b00011111 ;

.db 0b00011100 ; Курсор влево
.db 0b00000000 ;

.db 0b01001100 ; Вывод символа
.db 0b01000010 ;

;****************************************************
; Пауза
;****************************************************
Delay40mks:
	push Temp
	push Temp1
;	push Temp2

	ldi Temp,0
	ldi Temp1,0
;	ldi Temp2,1
Loop:
	dec Temp
	brne Loop
	dec Temp1
	brne Loop
;	dec Temp2
;	brne Loop

;	pop Temp2
	pop Temp1
	pop Temp

	ret
Не работает зараза. Не инициализируется. Надо ещё на форуме мэлта спросить.
2kb of eeprom should be enought for everybody (C) Bill Gates` cat :)
Реклама
Аватара пользователя
Serega
Говорящий с текстолитом
Сообщения: 1529
Зарегистрирован: Пн авг 22, 2005 21:02:22
Откуда: Питер

Сообщение Serega »

ПАША!!! Я русским по белому писал: в одной строке масива должно быть ЧЕТНОЕ количество элементов!!! Вот опять, по верхам хватаешь - и от этого куча глупых вопросов :)
Лучше быть первым в деревне, чем вторым в Риме
Реклама
Аватара пользователя
Pa5ha
Прорезались зубы
Сообщения: 243
Зарегистрирован: Ср авг 31, 2005 20:09:08
Откуда: Петрозаводск, Карелия.
Контактная информация:

Сообщение Pa5ha »

Да суть от этого не поменялась. Все равно не работает :) А как будет перенос на другую строку? "\\"? Или тут такого нет?
2kb of eeprom should be enought for everybody (C) Bill Gates` cat :)
Аватара пользователя
Pa5ha
Прорезались зубы
Сообщения: 243
Зарегистрирован: Ср авг 31, 2005 20:09:08
Откуда: Петрозаводск, Карелия.
Контактная информация:

Сообщение Pa5ha »

Новая версия:

Код: Выделить всё

;****************************************************
; Инициализация LCD
;****************************************************
;команды sbi, cbi  - установка/сброс бита
;a0	pd6
;r/w	pd5
;e	pd4
;db4	pd0
;db5	pd1
;db6	pd2
;db7	pd3

INIT_LCD16S2D: 
	ldi R16,0 
	out PortD,R16 
	rcall Delay40mks 
	ldi Temp1,16 
	ldi ZL,Low(LCD_INIT_DATA*2) 
	ldi ZH,High(LCD_INIT_DATA*2) 
Init_next0: 
	lpm R16,Z+ 
	out PortD,R16 
	nop ;Не менее 40нс 
	sbi PortD,4 
	nop 
	nop 
	nop 
	nop ;Не менее 230нс 
	cbi PortD,4 
	rcall Delay40mks 
	dec Temp1 
	brne Init_next0 
	ret 

LCD_INIT_DATA: 
; 30h 30h 30h 20h 28h 0Ch 06h 0Fh C0h 
.db 

0b0011,0b0011,0b0011,0b0010,0b0010,0b1000,0b0000,0b1100,0b0000,0b0110,0b0000,0b1111,0b1100,0b0000,0b100011,0b100010 
Тоже не пашет. Наверно железяка такая мертвая, что не работает :)
2kb of eeprom should be enought for everybody (C) Bill Gates` cat :)
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Pa5ha
Прорезались зубы
Сообщения: 243
Зарегистрирован: Ср авг 31, 2005 20:09:08
Откуда: Петрозаводск, Карелия.
Контактная информация:

Сообщение Pa5ha »

Код: Выделить всё

;****************************************************
; Вывод текстовой строки на дисплей
;****************************************************
WriteLn:
	lpm Temp,Z+
	cpi Temp,36
	breq WriteLnEnd

	push Temp
	Swap Temp
	andi Temp,0b00001111
	ori Temp,0b01000000
	out PortD,Temp
	nop ;Не менее 40нс
	nop
	sbi PortD,4 
	nop
	nop
	nop 
	nop 
	nop 
	nop ;Не менее 230нс 
	cbi PortD,4 
	rcall Delay40mks 

	pop Temp
	andi Temp,0b00001111
	ori Temp,0b01000000
	out PortD,Temp
	nop ;Не менее 40нс
	nop
	sbi PortD,4 
	nop
	nop
	nop 
	nop 
	nop 
	nop ;Не менее 230нс 
	cbi PortD,4 
	rcall Delay40mks 

	rjmp WriteLn
WriteLnEnd:
	ret
;****************************************************
; Всякие тексты, чтоб выводить
;****************************************************
Text01:
.db "Simanama$",36
Вот скажите мне, почему эта хрень зацикливается? Вызов:

Код: Выделить всё

	ldi ZL,Low(Text01*2) 
	ldi ZH,High(Text01*2)
	rcall WriteLn 
И вообще, что-то странное происходит...
2kb of eeprom should be enought for everybody (C) Bill Gates` cat :)
Реклама
Аватара пользователя
Pa5ha
Прорезались зубы
Сообщения: 243
Зарегистрирован: Ср авг 31, 2005 20:09:08
Откуда: Петрозаводск, Карелия.
Контактная информация:

Сообщение Pa5ha »

Итак, я все разжучил и написал процедуру вывода строки, процедуру засылки системных команд и процедуру инициализации. Дело за малым, за статьей с фотками...
Вложения
code.asm
(6.38 КБ) 544 скачивания
2kb of eeprom should be enought for everybody (C) Bill Gates` cat :)
Реклама
Аватара пользователя
Max
Админ
Сообщения: 10815
Зарегистрирован: Вт авг 23, 2005 15:23:25
Откуда: Москва
Контактная информация:

Сообщение Max »

Давай, давай :) Камон камон :)
Аватара пользователя
Pa5ha
Прорезались зубы
Сообщения: 243
Зарегистрирован: Ср авг 31, 2005 20:09:08
Откуда: Петрозаводск, Карелия.
Контактная информация:

Сообщение Pa5ha »

Итка, пока Серега исчет статью у мебя в аське...
2kb of eeprom should be enought for everybody (C) Bill Gates` cat :)
Аватара пользователя
Pa5ha
Прорезались зубы
Сообщения: 243
Зарегистрирован: Ср авг 31, 2005 20:09:08
Откуда: Петрозаводск, Карелия.
Контактная информация:

Сообщение Pa5ha »

Блин, забыл сказать
...мы придумываем следующую схему. Нужно теперь к этой схеме подключить датчик, чтоб посчитать импульсы света. Возможно, слабые. Нужна и(н)дейка :)

Добавлено:

Нашел схему. Что можно поставить вместо фотодиода? В смысле по каким параметрам выбирать?
Вложения
taho_sch.gif
(42.17 КБ) 531 скачивание
2kb of eeprom should be enought for everybody (C) Bill Gates` cat :)
Аватара пользователя
Max
Админ
Сообщения: 10815
Зарегистрирован: Вт авг 23, 2005 15:23:25
Откуда: Москва
Контактная информация:

Сообщение Max »

ФД-7, ФД-256 - любой :)
Аватара пользователя
Pa5ha
Прорезались зубы
Сообщения: 243
Зарегистрирован: Ср авг 31, 2005 20:09:08
Откуда: Петрозаводск, Карелия.
Контактная информация:

Сообщение Pa5ha »

Ладно, хрен с ним с тахометром. Будет маза сделаем :)

Ну а в следующей статье, маи друзья я попробую рассказать про подключение LCD от нофелета.
2kb of eeprom should be enought for everybody (C) Bill Gates` cat :)
Аватара пользователя
Pa5ha
Прорезались зубы
Сообщения: 243
Зарегистрирован: Ср авг 31, 2005 20:09:08
Откуда: Петрозаводск, Карелия.
Контактная информация:

Сообщение Pa5ha »

А чо схема такая большая? Мож можно лишнее выкинуть? :) Зачем фильтр с дроселями нужен?
2kb of eeprom should be enought for everybody (C) Bill Gates` cat :)
Ответить

Вернуться в «Разные вопросы по МК»