Например TDA7294

Форум РадиоКот • Просмотр темы - Переделка кода для Atmega 8515+ "LCD16s2d+avr (8bit)"
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Чт июн 26, 2025 15:50:57

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 5 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Переделка кода для Atmega 8515+ "LCD16s2d+avr (8bit)"
СообщениеДобавлено: Вс сен 25, 2011 15:02:01 
Открыл глаза

Зарегистрирован: Пн янв 10, 2011 00:12:19
Сообщений: 75
Рейтинг сообщения: 0
Всем привет попробовал переделать код по статье "LCD16s2d+avr (4bit)" для Atmega 8515.Не работает не судите строго я только учусь :)

ПОМОГИТЕ ПОЖАЛУЙСТА!!!

Вот код:

;*******************************************************************
;********************************************************************
; ----------
;| Набор процедур для управления |
;| LCD16S2D ----------
; ----------| By Pa5ha |
; ----------

.include file "C:\AVR\AvrAssembler2\Appnotes\m8515def.inc"

.def Temp = R16
.def Temp1=R17
.def Temp2=R18
.def Temp3=R19
.def Temp4=R20
;.equ RS = 5
;.equ RW = 6
;.equ E = 7
.equ SPEED = 14 ; 14 äëÿ XTAL=16MHz, 10 äëÿ XTAL=8MHz,
; 6 äëÿ XTAL=4MHz, 5 äëÿ XTAL<4MHz
.cseg
.org 0


;*********************************************************
rjmp Reset ;âåêòîðà ïðåðûâàíèé
rjmp INT_0
rjmp INT_1
rjmp Timer1_capt1
rjmp Timer1_compA
rjmp Timer1_compB
rjmp Timer1_OVF1
rjmp Timer0_OVF0
rjmp SPI_STC
rjmp USART_RX
rjmp USART_UDRE
rjmp USART_TX
rjmp ANA_COMP
rjmp INT_2
rjmp TIMER0_COMP
rjmp EE_RDY
rjmp SPM_RDY



;Reset: ;RESET
INT_0: ;1 INT0
INT_1: ;2 INT1
Timer1_capt1:;3 Çàõâàò Ò/Ñ T1
;Timer1_compA:;4 Ñîâïàäåíèå "A" Ò/Ñ T1
Timer1_compB:;5 Ñîâïàäåíèå "B" Ò/Ñ T1
Timer1_OVF1:;6 Ïåðåïîëíåíèå Ò/Ñ T1
Timer0_OVF0: ;7 Ïåðåïîëíåíèå Ò/Ñ T0
SPI_STC: ;8 Ïåðåäà÷à ïî SPI çàâåðøåíà
USART_RX: ;9 USART, ïðè¸ì çàâåðø¸í
USART_UDRE: ;10 Ðåãèñòð äàííûõ USART ïóñò
USART_TX: ;11 USART, ïåðåäà÷àçàâåðøåíà
ANA_COMP: ;12 Àíàëîãîâûé êîìïàðàòîð
INT_2: ;13 INT2
TIMER0_COMP: ;14 Ñîâïàäåíèå Ò/Ñ T0
EE_RDY: ;15 EEPROM, ãîòîâî
SPM_RDY: ;16 Ãîòîâíîñòü SPM


reti


;****************************************************
; ИНИЦИАЛИЗАЦИЯ
;****************************************************
Reset:
ldi Temp,0b11111111 ; íàñòðîéêà ïîðòîâ
;ser temp
out DDRA, temp
out DDRD, temp

ldi Temp,0
out PortD,Temp

InitAvr:
;Initialize stack pointer
ldi temp, LOW(RAMEND)
out SPL, temp
ldi temp, HIGH(RAMEND)
out SPH, temp
;*********************
;Ðàáîòà ñ LCD

rcall Delay40mks ; Ïàóçà ïåðåä âêëþ÷åíèåì
rcall Init_LCD16s2d ; Èíèöèàëèçàöèÿ äèñïëåÿ

rcall Write_CGRAM ; Ñîçäàíèå ñîáñòâåííîãî ñèìâîëà

ldi Temp,0b10000000
rcall WriteCmd ; Óñòàíîâêà êóðñîðà
ldi ZL,Low(Text01*2)
ldi ZH,High(Text01*2)
rcall WriteLn ; Âûâîä ñòðîêè

ldi Temp,0b11000001
rcall WriteCmd ; Óñòàíîâêà êóðñîðà
ldi ZL,Low(Text02*2)
ldi ZH,High(Text02*2)
rcall WriteLn ; Âûâîä ñòðîêè
;*********************

ldi Temp,0b01000000 ;ðàçðåøèòü ïðåðûâàíèÿ êîìïàðàòîðà
out TIMSK,Temp

ldi Temp,0b00000011 ;òàêòîâûé ñèãíàë = CK/64
out TCCR1B,Temp

ldi Temp,0x4C ;èíèöèàëèçàöèÿ êîìïàðàòîðà
out OCR1AH,Temp
ldi Temp,0x4B
out OCR1AL,Temp

ldi Temp1,0b00000001 ;Èíèöèàëèçàöèÿ èíäèêàòîðà

ldi Temp,0 ;îáíóëåíèå òàéìåðà
out TCNT1H,Temp
out TCNT1L,Temp

sei ;ðàçðåøèòü ïðåðûâàíèÿ


;****************************************************
; ОСНОВНОЙ ЦИКЛ
;****************************************************
Inf:
rjmp Inf ;áåñêîíå÷íûé öèêë


;****************************************************
; ОБРАБОТЧИК ПРЕРЫВАНИЯ КОМПАРАТОРА
;****************************************************

Timer1_compA:
ldi Temp,0 ;îáíóëåíèå òàéìåðà
out TCNT1H,Temp
out TCNT1L,Temp


Shift: cpi Temp1,0b10000000 ;ñðàâíèòü ñ êðàéíèì çíà÷.
breq Init ;åñëè ðàâíî - çàãðóçêà íà÷. çíà÷.

lsl Temp1 ;èíà÷å - ñäâèã âëåâî
rjmp Output ;ïåðåéòè íà âûâîä â ïîðò

Init: ldi Temp1,0b00000001 ;çàãðóçèòü íà÷. çíà÷åíèå
Output: out PortA,Temp1 ;âûâîä â ïîðò

reti ;âûõîä èç îáðàáî÷èêà


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

ldi Temp,0
Loop:
dec Temp
brne Loop

pop Temp

ret

;****************************************************
; Пауза
;****************************************************
Delay1500mks:
push Temp
push Temp1

ldi Temp,0
ldi Temp1,20
Loop3:
dec Temp
brne Loop3
dec Temp1
brne Loop3

pop Temp1
pop Temp

ret

;****************************************************
; Инициализация 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
out PortD,r0;Temp
adiw ZL,1 ; AddImmedaiate to Word. Èíêðåìåíòèòñÿ ñëîâî.
nop ;?? ????? 40íñ
nop
sbi PortD,4
nop ;?? ????? 230íñ
nop
nop
nop
nop
nop
cbi PortD,4
rcall Delay40mks
dec Temp1
brne Init_next0

rcall Delay1500mks

; ldi Temp,0
; out PortD,Temp

ret
LCD_INIT_DATA:
; are3210 are3210
;8bit
.db 0b00000011,0b00000011 ; 30h ????????? ???????????
.db 0b00000011,0b00000010 ; 20h ????????? ???????????

;4bit
.db 0b00000010,0b00001000 ; 28h ????????? ???????????

.db 0b00000000,0b00001000 ; 0Ch ?????????? ???????

.db 0b00000000,0b00000110 ; 06h ????????? ??????????? ? ?????????? ??????

.db 0b00000000,0b00001111 ; 0Fh ???????? ????????? ? ???????? ??????

.db 0b00001000,0b00000000 ; ?????? ?????

.db 0b00000000,0b00000001 ; 01h ???????, ?????? ?????

;****************************************************
; Установка адреса для последующих операции и
; выбор оласти DDRAM.
; Входные данные: R16(Temp) - адрес DDRAM + 0x80.
; Изменяется регистр R16(Temp).
;****************************************************
WriteCmd:
push Temp
;Swap Temp
lsr Temp
lsr Temp
lsr Temp
lsr Temp
andi Temp,0b00001111
out PortD,Temp
nop ;íå ìåíåå 40íñ
nop
sbi PortD,4
nop ;íå ìåíåå 230íñ
nop
nop
nop
nop
nop
cbi PortD,4
nop ;íå ìåíåå 270íñ
nop
nop
nop
nop
nop
nop

pop Temp
andi Temp,0b00001111
out PortD,Temp
nop ;?? ????? 40??
nop
sbi PortD,4
nop ;?? ????? 230??
nop
nop
nop
nop
nop
cbi PortD,4
rcall Delay40mks

ret

;****************************************************
; Вывод текстовой строки на дисплей.
; Входные данные: регистр Z - адрес строки в
; программной памяти. '$' - конец строки.
; Изменяется регистр R16(Temp), Z.
;****************************************************
WriteLn:
lpm
mov Temp,r0
cpi Temp,'$'
breq WriteLnEnd

adiw ZL,1

push Temp
Swap Temp
andi Temp,0b00001111
ori Temp,0b01000000
out PortD,Temp
nop ;?? ????? 40íñ
nop
sbi PortD,4
nop ;?? ????? 230íñ
nop
nop
nop
nop
nop
cbi PortD,4
nop ;?? ????? 270íñ
nop
nop
nop
nop
nop
nop

pop Temp
andi Temp,0b00001111
ori Temp,0b01000000
out PortD,Temp
nop ;?? ????? 40íñ
nop
sbi PortD,4
nop ;?? ????? 230íñ
nop
nop
nop
nop
nop
cbi PortD,4
rcall Delay40mks

rjmp WriteLn
WriteLnEnd:
ret

;****************************************************
; Всякие тексты, чтоб выводить
;****************************************************
Text01:
.db 'I',0,0x4b,0x50,0xA5,0x43,0x54,0xB0,0xAC,0x41,0x20,0x26
Text02:
.db "radiokot.ru "

;****************************************************
; Запись своих символов в CGRAM
;****************************************************

Write_CGRAM:
ldi Temp,0b01000000 ; Âûáîð îáëàñòè ïàìÿòè CGRAM
rcall WriteCmd

; ldi R16,0
; out PortD,R16
; rcall Delay40mks
; ldi Temp1,8
ldi ZL,Low(Symbol_data*2)
ldi ZH,High(Symbol_data*2)
;Init_next0:

; brne Init_next0
rcall WriteLn
; rcall Delay1500mks

; ldi Temp,0
; out PortD,Temp

ret
Symbol_data:
; are3210 are3210
.db 0b00000000,0b00000000
.db 0b00001010,0b00011111
.db 0b00001110,0b00000100
.db 0b00000000,0b00000000
;.db '$'






;.EXIT
;Ïîäêëþ÷åíèå èíäèêàòîðà ê ïîðòó D ïî âàðèàíòó 4-õ áèòíîãî èíòåðôåéñà:
;a0 (4) (11) pd6
;r/w (5) (9) pd5
;e (6) (8) pd4
;db4 (11) (2) pd0
;db5 (12) (3) pd1
;db6 (13) (6) pd2
;db7 (14) (7) pd3


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Переделка кода для Atmega 8515+ "LCD16s2d+avr (8bit)"
СообщениеДобавлено: Пн сен 26, 2011 14:25:31 
Открыл глаза

Зарегистрирован: Пн янв 10, 2011 00:12:19
Сообщений: 75
Рейтинг сообщения: 0
Что ни кто не юзает Megu 8515?????Может у кого есть другая прога для LCD скиньте плиззззззззз


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Переделка кода для Atmega 8515+ "LCD16s2d+avr (8bit)"
СообщениеДобавлено: Пн сен 26, 2011 17:15:21 
Друг Кота
Аватар пользователя

Карма: 49
Рейтинг сообщений: 392
Зарегистрирован: Вс июл 12, 2009 19:15:29
Сообщений: 7013
Откуда: Ижевск
Рейтинг сообщения: 0
Вы бы ссылку хоть на статью дали.

_________________
Docendo discimus


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Переделка кода для Atmega 8515+ "LCD16s2d+avr (8bit)"
СообщениеДобавлено: Пн сен 26, 2011 18:58:14 
Открыл глаза

Зарегистрирован: Пн янв 10, 2011 00:12:19
Сообщений: 75
Рейтинг сообщения: 0
ВОТ ЭТО В ПОИСКОВИКЕ НАБЕРИТЕ: "LCD16s2d+avr (4bit)"


Вернуться наверх
 
В продаже новые LED-драйверы XLC компании MEAN WELL с диммингом нового поколения

Компания MEAN WELL пополнила ассортимент своей широкой линейки светодиодных драйверов новым семейством XLC для внутреннего освещения. Главное отличие – поддержка широкого спектра проводных и беспроводных технологий диммирования. Новинки представлены в MEANWELL.market моделями с мощностями 25 Вт, 40 Вт и 60 Вт. В линейке есть модели, работающие как в режиме стабилизации тока (СС), так и в режиме стабилизации напряжения (CV) значением 12, 24 и 48 В.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Переделка кода для Atmega 8515+ "LCD16s2d+avr (8bit)"
СообщениеДобавлено: Пн сен 26, 2011 19:19:40 
Открыл глаза

Зарегистрирован: Пн янв 10, 2011 00:12:19
Сообщений: 75
Рейтинг сообщения: 0
ВОТ тут уже что то мигает :)) :))
Помогите приспособить к Mega8515
Везде всегда про tinny пишут,а про megu ничего :cry:
;*******************************************************************
;********************************************************************
; ----------
;| Íàáîð ïðîöåäóð äëÿ óïðàâëåíèÿ |
;| LCD16S2D ----------
; ----------| By Pa5ha |
; ----------

.include file "C:\AVR\AvrAssembler2\Appnotes\m8515def.inc"



;4MHz

.def tmp =r16
.def tmp1 =r17
.def lcddata =r21
.def data =r22
.def temp = r23

.equ e=1
.equ rs=2

;PA0..PA3 - D0..D3
;PD1 - e
;PD2 - rs
.equ SPEED = 14 ; 14 äëÿ XTAL=16MHz, 10 äëÿ XTAL=8MHz,
; 6 äëÿ XTAL=4MHz, 5 äëÿ XTAL<4MHz

.cseg
.org 0
ldi Temp,0b11111111
;ser temp
out DDRA, temp
out DDRD, temp

ldi Temp,0
out PortD,Temp

InitAvr:
;Initialize stack pointer
ldi temp, LOW(RAMEND)
out SPL, temp
ldi temp, HIGH(RAMEND)
out SPH, temp
; rcall Delay40mks
lcdinit:
push tmp1
push lcddata
ldi tmp1, 0
ldi r30,low(InitData*2)
ldi r31, high(InitData*2)
init:
lpm lcddata, Z+
ldi tmp1, '$'';ЧТО ЭТО '$'?
cpse lcddata, tmp1
rcall WrCMD
cpi lcddata, 0b00010000
breq d1500
rcall delay40mks
naz:
ldi tmp1, '$';ЧТО ЭТО '$'?
cpse tmp1, lcddata
rjmp init
pop lcddata
pop tmp1
ret


d1500:
rcall delay1500mks
rcall delay40mks
rjmp naz



InitData:
.db 0b11000000, 0b00100000
.db 0b11000000, 0b00000000
.db 0b11000000, 0b00000000
.db 0b00010000, 0b00000000, '$';ЧТО ЭТО '$'?

WrCMD:
push lcddata
swap lcddata
sbi portD, e
nop
nop
nop
nop
nop
nop
nop
out portA, lcddata
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cbi PortD, e
pop lcddata
ret

write:
push lcddata
swap lcddata
sbi portD, e
sbi portD, rs
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
out portA, lcddata
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cbi PortD, e
cbi portD, rs
pop lcddata
ret

WriteLn:
push lcddata
push tmp1
Ln:
rcall delay40mks
rcall delay40mks
lpm lcddata, Z+
ldi tmp1, '$'
cpse lcddata, tmp1
rjmp wr
re:
cpse lcddata, tmp1
rjmp Ln
pop tmp1
pop lcddata
ret
wr:
rcall write
swap lcddata
rcall write
rjmp re

longDelay:
ldi tmp, 255

d11:
ldi tmp1, 0xff
dec tmp
cpi tmp, 0
brne d12
ret
d12:
dec tmp1
cpi tmp1, 0
breq d11
brne d12
ret

Delay40mks:
push Tmp
ldi Tmp,0
Loop:
dec Tmp
brne Loop
pop Tmp
ret


Delay1500mks:
push Tmp
push Tmp1
ldi Tmp,0
ldi Tmp1,20
Loop3:
dec Tmp
brne Loop3
dec Tmp1
brne Loop3
pop Tmp1
pop Tmp
ret
;==Èíèöèàëèçàöèÿ LCD==============
;rcall lcdinit
;==Ïîñûëêà êîìàíä=================
ldi lcddata, 0b00110100
rcall wrcmd
ldi lcddata, 0b00001100
rcall wrcmd
ldi lcddata, 0b00000001
rcall wrcmd
ldi lcddata, 0b00000110
rcall wrcmd
rcall delay1500mks
;========Âûâîä òåêñòà=============
ldi ZL, low(TEXT*2)
ldi ZH, high(TEXT*2)
rcall writeln
rcall delay40mks

TEXT:
.db "RADIOKOT$"


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y