pakeisti 4 bitų į 8 bitų LCD kodas

E

evaang2003

Guest
hi, i problema keičiant 4 bitų LCD modulis 8 bitų LCD modulis.
i kodo temperatūros jutiklis naudojant ds1820 kuri parodoma temperatūra 4 bitų LCD modulis.

Tačiau, mano LCD gali dirbti tik 8 bitų modulio.
gali kas nors parodyti man, kaip ją pakeisti?
i am naudojant CCS c kompiliatorių.
ir pridėkite čia 4bit lcd temperatūros jutiklis kodą ir 8 bitų LCD vairuotojas.
Čia yra rezultatas po ir sujungti juos tačiau šį darbą.

ji nuolat pasakoja man LineOfCharacters neatitinka faktinių skaičių.
kodėl?

void main (void)
(
char LineOfCharacters;
InitLCD ();
GoToLine (1);
printf (WriteChar, "temperatūra", 1);

while (TRUE)
(
ResetDS1820 ();
cDataOut = DS1820_SKIP_ROM;
WriteDS1820 ();
cDataOut = DS1820_CONVERT_T;
WriteDS1820 ();
WaitForConversion ();

ResetDS1820 ();
cDataOut = DS1820_SKIP_ROM;
WriteDS1820 ();
cDataOut = DS1820_READ_SCRATCHPAD;
WriteDS1820 ();
ReadDS1820 ();
iTemperature = iDataIn / 2;
GoToLine (2);
printf (WriteChar "% lu% cc% lu% cF", iTemperature, DEGREE_SYM, ((9 * iTemperature) / 5) 32, DEGREE_SYM);
)
)
Atsiprašome, bet jums reikia prisijungti, kad galėtumėte peržiūrėti šį priedą

 
sąsajos tarp mikrokontrolerio ir temperatūros jutiklis lm35 ar kitas požiūris į šiuos puslapius, LCD įprastas ir pavyzdys projektų, VB duomenų loging projektų, eikite čia
http://picinf.blogspot.com/

ir, jei norite naudoti mocrocontroller nuo 8051 šeimos ir norite sąsaja su kompiuteriu per nuoseklaus arba lygiagrečios uostą kartu su temperatūros duomenų loging, čia rasite pavyzdį ir projektus mikro valdikliai.
http://microcontroller51.blogspot.com/

 
gerai, aš rasiu 8 bitų LCD vairuotojas.
Tačiau programa ir parašyti nėra rodomas tekstas.
galima pasakyti, kas blogai?
pagrindinių () yra programa, ir parašė, o likusią dalį fuction yra 8 bitų tvarkyklė.#
Include <16F877a.H>
#
include <string.h>
# naudoti vėlavimą (laikrodis = 40000000)
#
include <stdio.h>

# define ĮR 0
# define DR 1
# define PERSKAITYKITE 1
# define RAŠYTI 0
# define lcd_2X16/ * Nustato bitų už Port C * /
struct (
int nepanaudoti: 5 / / Pirma 5 bitai nėra naudojamas LCD
int lt: 1 / / LT yra 6 bitų Port C RC5
int rs: 1 / / RS 7 bitų Port C RC6
int Rw: 1 / / RW yra 8 bitų Port C RC7
) LCDControl;
# byte LCDData = 0x08 / / Nurodo adresas kintamasis LCDData
/ / kaip Port D
# byte LCDControl = 0x07 / / Nurodo adresas struktūra
/ / LCDControl kaip Port C
# byte LCDDataDir = 0x88 / / Nurodo adresas kintamasis
/ / LCDDataDir, kaip TrisD
# byte LCDConDir = 0x87 / / Nurodo adresas kintamasis
/ / LCDConDir, kaip TrisC
# define LCD_DATA_IN LCDDataDir | = 0xFF / / nustatyti duomenų linijos įvedimas
# define LCD_DATA_OUT LCDDataDir & = 0x00 / / nustatyti duomenų linijos išvesties
# define LCD_CON_OUT LCDConDir & = 0x1F / / nustatyti kontrolės linijos išvesties/************************ Į WriteByte funkcija *******************/
/ *
Ši funkcija rašo baitas į LCD modulis su 8-bit
sąsaja
Įvesties parametrai:
int rs Šis kintamasis pasirenkamas registro įrašus.
DR pasirenka duomenų registras
IR pasirenka komandų registrą
int data_to_lcd Šis kintamasis saugo duomenis, kurie bus įrašyti į
pasirinktos registre
* /
tuščia WriteByte (trumpas int Rs, int data_to_lcd)
(
LCD_DATA_OUT / / LCD duomenys Autobusas yra išėjimas
LCDControl.rw = RAŠYTI / / Operacija yra parašyti operacija
LCDControl.rs = rs / / selects registre (DR ar ĮR)
delay_us (1); / / Palaukite mažiausiai 60ns
LCDControl.en = 1; / / Raise LT
LCDData = data_to_lcd / / Nustatyti duomenys Verslas norimą vertę
delay_us (1); / / Palaukite mažiausiai 195ns
LCDControl.en = 0; / / Atviras LT
delay_us (1) / / Keep RS ir RW dabartinio jų valstybių dėl
/ / bent 20ns
/ / Be to, išlaikyti esamą vertę duomenų Verslas
/ / ne mažiau kaip 10ns
)/************************ Į ReadByte funkcija *******************/
/ *
Ši funkcija nuskaito baitas iš LCD modulis su 8-bit
sąsaja
Įvesties parametrai:
int rs Šis kintamasis pasirenka registre skaityti nuo.
DR pasirenka duomenų registras
IR pasirenka komandų registrą
Produkcijos vertė: Ši funkcija grąžina vertė, baitas skaityti
* /
int ReadByte (trumpas int Rs)
(
int data_from_lcd / / Šis kintamasis naudojamas saugoti baitas
/ / nuskaito iš duomenų Verslas
LCD_DATA_IN; / / Uosto D yra įvesties uoste
LCDControl.rw = READ / / Operacija skaityti operacija
LCDControl.rs = rs / / selects registre (DR ar ĮR)
delay_us (1); / / Palaukite mažiausiai 60ns
LCDControl.en = 1; / / Raise LT
delay_us (1); / / Palaukite mažiausiai 360ns
data_from_lcd = LCDData / / Skaityti vertę visoje duomenys Verslas
LCDControl.en = 0; / / Atviras LT
delay_us (1) / / Keep RS ir RW dabartinio jų valstybių
/ / ne mažiau kaip 20ns
grįžti data_from_lcd;
)/ / Ši funkcija skaito IR registrą, 1 grąžinimą, jei LCD modulis yra užimtas arba 0, jei jis nėra
/************************ Į CheckBusyFlag funkcija ******************/
/ * Ši funkcija nuskaito baitas iš komandų registrą ir
bandymus 8 bitų, kuris yra užimtas vėliava
Produkcijos vertė: funkcija grąžina
1, jei užimta vėliava yra (LCD modulis užimtas)
0 jei Užimta Pažymėti aišku (LCD modulis nėra
užimtas)
* /
trumpas int CheckBusyFlag (tuščia)
(
int data_from_lcd / / Šis kintamasis naudojamas saugoti baitas
/ / skaityti nuo LCD
data_from_lcd = ReadByte (IR) / / Skaityti IR (Rs = 0)
return (bit_test (data_from_lcd, 7)); / / Išbandykite BF
/ / Atgal 1, jei nustatytas
/ / Return 0, jei aišku,
)
/************************ Į InitLCD funkcija *******************/
/ * Ši funkcija initialises LCD modulis (iniciacijos pagal
instrukcija).
Iniciacijos Parametrai:
Interface 8-bit
Skaičius rodyti eilučių 2-linijos ar 4-linija
Žymeklis poslinkio kryptimi didinti
Šrifto dydis 5x8dots
Rodyti
Žymeklis Išjungta
Žymeklis mirksìti Žymeklis mirksìti
* /tuščia InitLCD (tuščia)
(
delay_ms (15) / / Delay bent 15 ms
WriteByte (ĮR 0b00111000) / / Nustatykite funkciją nustatyti
/ / 8 bitų sąsaja, 2-linijos ar 4-line display, 5x8 šriftas

delay_ms (5); / / Delay mažiausiai 4.1ms
WriteByte (ĮR 0b00111000); / / apibrėžti funkciją nustatyti

delay_us (100); / / Delay mažiausiai 100us
WriteByte (ĮR 0b00111000); / / apibrėžti funkciją nustatyti

while (CheckBusyFlag ()); / / Palaukite, kol BF = 0
WriteByte (ĮR 0b00001100) / / Nustatykite ekrano įjungimo / išjungimo kontrolės
/ / rodyti, kursorius off, kursorius mirksìti off

while (CheckBusyFlag ()); / / Palaukite, kol BF = 0
WriteByte (ĮR 0b00000001); / / Atviras Ekranas

while (CheckBusyFlag ()); / / Palaukite, kol BF = 0
WriteByte (ĮR 0b00000110) / / Įrašas būdas nustatyti
/ / žymeklio kryptimi nepadidinimas, ne poslinkio ekrane
)/ / Rašyti pobūdžio LCD
/************************ Į WriteChar funkcija *******************/
/ * Ši funkcija rodo pobūdžio LCD.
Įvesties parametrai:
char simbolių Šis kintamasis saugo simbolis rodomas
LCD.
* /
tuščia WriteChar (char simbolių)
(
while (CheckBusyFlag ()); / / Palaukite, kol LCD modulis nėra užimtas
WriteByte (DR, pobūdį); / / Rašyti pobūdžio DR
)/ / Siųsdami komandą LCD
/************************ Į PutCommand funkcija *******************/
/ * Ši funkcija rašo baitas į komandų registrą.
Įvesties parametrai:
int komandų Šis kintamasis saugo baitas turi būti įrašomi į
komandų registrą.
* /
tuščia PutCommand (int komandos)
(
while (CheckBusyFlag ()); / / Palaukite, kol LCD modulis nėra užimtas
WriteByte (IR, komanda); / / Parašykite komandą IR
)
/************************ Į GoToLine funkcija *******************/
/ * Ši funkcija nustato žymeklį į pirmąją poziciją dėl
nurodytos eilutės LCD.
Įvesties parametrai:
int linija Šis kintamasis pasirenka LCD linija, dėl kurių
kursorius turi būti nustatytas.
* /
tuščia GoToLine (int eilutė)
(
int adresas / / Šis kintamasis rodiklis naudojamas nustatyti
/ / adresas, kuriuo žymeklį turi būti nustatytas
switch (eilutę) / / Nustatykite adresą į pirmąjį DDRAM adresas,
/ / nurodyti linija
(
case 1:
adresas = 0x00;
break;
2 atveju:
adresas = 0x40;
break;
3-as atvejis:
adresas = 0x14;
break;
atveju 4:
adresas = 0x54;
break;
default: / / yra žymi eilutė nustatyti žymeklio namų
adresas = 0x00;
break;
)
bit_set (adresas, 7); / / Bit 7 identifikuoja instrukcijų, kaip nustatyti
/ / DDRAM adresas
PutCommand (adresas); / / Nustatykite DDRAM adresas
)/ / Rašyti simbolių eilutė, LCD
# define TOTAL_CHARACTERS_OF_LCD 32
tuščia WriteString (char LineOfCharacters [TOTAL_CHARACTERS_OF_LCD])
(
printf (WriteChar, "% c", LineOfCharacters);
)void main ()
(
char LineOfCharacters [4] = ( "abc");
InitLCD ();
GoToLine (2);
printf (WriteChar, "% c", LineOfCharacters);

)

 

Welcome to EDABoard.com

Sponsor

Back
Top