Proteus CodeVision ongelma?

G

Gigica

Guest
Hei, minulla on ongelma Proteus simuloida LCD-c-koodi koottu kanssa CodeVision.Tässä on kaavamainen ja c-koodin.Code:/************************************************* ****

Tämä ohjelma, jonka

CodeWizardAVR V1.25.3 Professional

Automaattinen ohjelma Generator

Š Copyright 1998-2007 Pavel Haiduc, HP InfoTech srl

http://www.hpinfotech.comChip type: AT90S2313

Kello taajuus: 8.000000 MHz

Muistin malli: Tiny

Ulkopuolinen SRAM koko: 0

Data Stack koko: 32

************************************************** *** /# include <90s2313.h>

# include <delay.h>mitätön clearDisplay ()

(

PORTB = 0x08;

# ASM (CLI)

delay_us (1);

# ASM ( "sei")

PORTB = 0;

PORTB = 0x18;

# ASM (CLI)

delay_us (1);

# ASM ( "sei")

PORTB = PORTB &0xf7;

delay_ms (5);

)mitätön entryModeSet (char inc_dec, char shift_normal)

(PORTB = 0x08;

# ASM (CLI)

delay_us (1);

# ASM ( "sei")

PORTB = 0;

PORTB = 0x48 | (inc_dec <<5) | (shift_normal <<4);

# ASM (CLI)

delay_us (1);

# ASM ( "sei")

PORTB = PORTB &0xf7;

delay_us (40);

)mitätön displayOnOff (char display_on, char cursor_on, char blink_on)

(PORTB = 0x08;

# ASM (CLI)

delay_us (1);

# ASM ( "sei")

PORTB = 0;

PORTB = 0x88 | (display_on <<6) | (cursor_on <<5) | (blink_on <<4);

# ASM (CLI)

delay_us (1);

# ASM ( "sei")

PORTB = PORTB &0xf7;

delay_us (40);

)mitätön cursorOrDisplayShift (char displayShift_cursorShift, char right_left)

(PORTB = 0x18;

# ASM (CLI)

delay_us (1);

# ASM ( "sei")

PORTB = PORTB &0xf7;

PORTB = 0x08 | (displayShift_cursorShift <<7) | (right_left <<6);

# ASM (CLI)

delay_us (1);

# ASM ( "sei")

PORTB = PORTB &0xf7;

delay_us (40);

)mitätön functionSet (char data_length, char one_two_rows, char dimension_char)

(PORTB = 0x28 | (data_length <<4);

# ASM (CLI)

delay_us (1);

# ASM ( "sei")

PORTB = PORTB &0xf7;

PORTB = 0x08 | (one_two_rows <<7) | (dimension_char <<6);

# ASM (CLI)

delay_us (1);

# ASM ( "sei")

PORTB = PORTB &0xf7;

delay_us (40);

)
mitätön setDDRAMaddress (char osoite)

(PORTB = (0x88 | osoite) &0xfd;

# ASM (CLI)

delay_us (1);

# ASM ( "sei")

PORTB = PORTB &0xf7;

PORTB = 0x08 | (osoite <<4);

# ASM (CLI)

delay_us (1);

# ASM ( "sei")

PORTB = PORTB &0xf7;

delay_us (40);

)mitätön writeData (char data)

(PORTB = 0x0A | tietoja;

# ASM (CLI)

delay_us (1);

# ASM ( "sei")

PORTB = PORTB &0xf7;

PORTB = 0x0A | (tiedot <<4);

# ASM (CLI)

delay_us (1);

# ASM ( "sei")

PORTB = PORTB &0xf7;

delay_us (40);

)initLCD ()

(delay_ms (15);

PORTB = 0x38;

# ASM (CLI)

delay_us (1);

# ASM ( "sei")

PORTB = 0;

delay_ms (5);

PORTB = 0x38;

# ASM (CLI)

delay_us (1);

# ASM ( "sei")

PORTB = 0;

delay_us (160);

PORTB = 0x38;

# ASM (CLI)

delay_us (1);

# ASM ( "sei")

PORTB = 0;

delay_us (160);

PORTB = 0x28;

# ASM (CLI)

delay_us (1);

# ASM ( "sei")

PORTB = 0;

delay_us (160);

/ / functionSet (0,1,0);

functionSet (0,1,0);

delay_ms (1);

displayOnOff (0,0,0);

delay_us (160);

displayOnOff (1,1,0);

delay_us (160);

entryModeSet (1,0);

delay_us (160);)mitätön printMessage (flash char * viesti)

(while (* viesti) writeData (* viesti );}

/ / Toteaa maailmanlaajuisesti muuttujat tästä
mitätön main (void)

(

/ / Port B käynnistystoimien

/ / Func0 = Out Func1 = Out Func2 = Out Func3 = Out Func4 = Out Func5 = Out Func6 = Out Func7 = Out

/ / State0 = 0 State1 = 0 State2 = 0 State3 = 0 State4 = 0 State5 = 0 State6 = 0 State7 = 0

DDRB = 0xff;

PORTB = 0xff;/ / Port D initialization

/ / Func0 = Vuonna Func1 = Vuonna Func2 = Vuonna Func3 = Vuonna Func4 = Vuonna Func5 = Vuonna Func6 = Vuonna Func7 = In

/ / State0 = T State1 = T State2 = T State3 = T State4 = T State5 = T State6 = T State7 = T

DDRD = 0x00;

PORTD = 0x00;/ / Timer / Counter 0 käynnistystoimien

/ / Clock source: System Clock

/ / Kellon arvo: 7,813 kHz

TCCR0 = 0x00;

TCNT0 = 0x00;/ / Timer / Counter 1 käynnistystoimien

/ / Clock source: System Clock

/ / Kellon arvo: Timer 1 Pysäytetty

/ / Mode: Normal top = FFFFh

/ / OC1A output: lopettaa.

/ / OC1B output: lopettaa.

/ / Noise Canceler: Off

/ / Input Capture on Falling Edge

TCCR1A = 0x00;

TCCR1B = 0x00;

TCNT1H = 0x00;

TCNT1L = 0x00;

OCR1AH = 0x00;

OCR1AL = 0x00;/ / External Interrupt (s) käynnistystoimien

/ / INT0: Off

/ / INT1: Off

GIMSK = 0x00;

MCUCR = 0x00;/ / Timer (s) / Counter (s) Interrupt (s) käynnistystoimien

TIMSK = 0x00;/ / Analog vertailutehdas käynnistystoimien

/ / Analog vertailutehdas: Off

/ / Analog vertailutehdas Input Capture on Timer / Counter 1: Off

/ / Analog vertailutehdas Output: Off

ACSR = 0x80;

/ / Global mahdollistaa katkaisevat

initLCD ();kun taas (1)

(

clearDisplay ();

printMessage ( "ensimmäinen rivi");

delay_ms (1500);

setDDRAMaddress (0x40);

printMessage ( "toinen rivi");

delay_ms (1500);

)

)
 
Proteus ei ole 100% luotettava.Minulla on samanlainen ongelma ulkoisten keskeyttää (logiikka muuttaa mode/ATMega16).Oma koodi works fine itse, mutta se ei toimi Proteus.

 
CodeVision on kirjaston toimintoja käsittelyn helpottamiseksi LCD moduulit rakennettu kanssa Hitachi HD44780 siru tai vastaava,
niin miksi ei käyttää sitä?

 
Mahdollisesti tämä on sync asiasta 4-bittisessä tilassa.

Olen ymmärtänyt, kun alkuarvojen LCD on 4-bittisessä tilassa LCD on todella 8-bittisessä tilassa.Tämä puolestaan tarkoittaa, että sinun ei löydy varattu signaali tässä vaan toteuttaa käsikirja viivytystä.

Jälkeen, ohjausta, LCD valtio on ratkaistu ja kaikki kirjoittaa / lukee olisi napostella leveä.

Tiedän, että useimmat kertaa laitteisto pienemmän "väärän" firmware täytäntöönpano työtä tämä on riippuvainen kellon nopeus.

A 'C' täytäntöönpanosta 4-bittisessä tilassa on saatavilla .. / Näytteet / hakemisto ja Proteus asennus.Iain.

 

Welcome to EDABoard.com

Sponsor

Back
Top