DIY TV LCD-scherm met Arduino en Smart Remote (4 / 5 stap)

Stap 4: Het doen van de codering en verbinding maken met de slimme afstandsbediening


De volgende stap is technisch het moeilijkst, de codering. Niet alle code hier lezen, deze code is in de taal van de code C, krijgen een milieu te programmeren van een bord met de ontvanger die de golven ontvangt met de slimme afstandsbediening, ik heb een slimme externe vorm en Osepp kit en het is compatibel met arduino. Kopieer deze code naar uw omgeving en het programma moet de arduino of de kamer die is aangesloten op het LCD-scherm/TV.

/****************************************************************************

LCD-AVR-4d.c - gebruik een HD44780U gebaseerde LCD met een Atmel ATmega-processor Copyright (C) 2013 Donald Weiman (weimandn dit programma is vrije software: je kunt het herdistribueren en/of aanpassen onder de voorwaarden van de GNU General Public License zoals gepubliceerd door de Free Software Foundation, versie 3 van de licentie, of (naar uw keuze) een latere versie. Dit programma is gedistribueerd in de hoop dat het nuttig zal zijn, maar zonder enige garantie; zelfs zonder de impliciete garantie van verkoopbaarheid of geschiktheid voor een bepaald doel. Zie de GNU General Public License voor meer details. U moet ontvangen een kopie van de GNU General Public License along with this program. Als dat niet het geval is, zie. * / / *** Bestand: LCD-AVR-4d.c, datum: 16 September 2013 richten: ATmega328 Compiler: avr-gcc (AVR Studio 6) Auteur: Donald Weiman Summary: 4-bits gegevens interface, drukke vlag niet ten uitvoer gelegd. Elke LCD-pin kan worden aangesloten op een willekeurige beschikbare poort I/O. Omvat een eenvoudige schrijven tekenreeks routine. * / / *** Programma notities *** dit programma maakt gebruik van een 4-bits Gegevensinterface maar doet niet de drukke vlag gebruiken om te bepalen wanneer de LCD controller is klaar. De regel van de LCD RW (pin 5) niet is verbonden met de uP en het moet worden verbonden met GND voor het programma te laten functioneren. Alle vertragingen zijn langer dan die welke in de meeste gegevensbladen om langzamer dan normale LCD-modules tegemoet te komen. Deze eis is goed gedocumenteerd, maar bijna altijd genegeerd. De informatie in een notitie aan de onderkant van de kolom van de rechterhand (Execution Time) van de instructie ligt. De vier data lijnen, evenals de controle van de twee lijnen kunnen worden uitgevoerd op elke beschikbare I/O pin van een willekeurige poort. Dit zijn de verbindingen die worden gebruikt voor dit programma:------| ATmega328 || LCD | | | | | | PD7|---------------->| D7 || PD6|---------------->| D6 || PD5|---------------->| D5 || PD4|---------------->| D4 | | | | D3 | | | | D2 | | | | D1 | | | | D0 | | | | | | PB1|---------------->| E | | | GND---> |RW || PB0|---------------->| RS | ----------- ---------- **************************************************************************/

#define F_CPU 16000000UL

#include #include

LCD-interface (moet eens met de bovenstaande diagram) / / ervoor te zorgen dat de LCD RW pin is verbonden met GND #define lcd_D7_port PORTD / / lcd D7 verbinding #define lcd_D7_bit PORTD7 #define lcd_D7_ddr DDRD

#define lcd_D6_port PORTD / / lcd D6 verbinding #define lcd_D6_bit PORTD6 #define lcd_D6_ddr DDRD

#define lcd_D5_port PORTD / / lcd D5 verbinding #define lcd_D5_bit PORTD5 #define lcd_D5_ddr DDRD

#define lcd_D4_port PORTD / / lcd D4 verbinding #define lcd_D4_bit PORTD4 #define lcd_D4_ddr DDRD

#define lcd_E_port PORTB / / lcd Enable pin #define lcd_E_bit PORTB1 #define lcd_E_ddr DDRB

#define lcd_RS_port PORTB / / lcd Registreer Selecteer pin #define lcd_RS_bit PORTB0 #define lcd_RS_ddr DDRB

LCD module informatie #define lcd_LineOne 0x00 / / start van lijn 1 #define lcd_LineTwo 0x40 / / begin van de lijn 2 //#define lcd_LineThree 0x14 / / start van lijn 3 (20 x 4) //#define lcd_lineFour 0x54 / / start van lijn 4 (20 x 4) //#define lcd_LineThree 0x10 / / start van lijn 3 (16 x 4) //#define lcd_lineFour 0x50 / / start van lijn 4 (16 x 4)

LCD instructies #define lcd_Clear 0b00000001 / / alle tekens vervangen door ASCII 'ruimte' #define lcd_Home 0b00000010 / / terug cursor naar de eerste positie op de eerste lijn #define lcd_EntryMode 0b00000110 / / cursor verplaatsen van links naar rechts op lezen/schrijven #define lcd_DisplayOff 0b00001000 / / draai scherm uit #define lcd_DisplayOn 0b00001100 / / weergeven op, cursor uitschakelen, don't blink niet teken #define lcd_FunctionReset 0b00110000 / / reset de LCD #define lcd_FunctionSet4bit 0b00101000 / / 4-bit gegevens , 2-regelig display, 5 x 7 lettertype #define lcd_SetCursor 0b10000000 / / cursorpositie instellen

Program ID uint8_t program_author [] = "Donald Weiman"; uint8_t program_version [] = "LCD-AVR - 4 d (gcc)"; uint8_t program_date [] = "Sep 16, 2013";

Functie Prototypes nietig lcd_write_4(uint8_t); nietig lcd_write_instruction_4d(uint8_t); nietig lcd_write_character_4d(uint8_t); nietig lcd_write_string_4d(uint8_t *); nietig lcd_init_4d(void);

/ *** Main programmacode *** / int main(void) {/ / configure de microprocessor pinnen voor de data lijnen lcd_D7_ddr | = (1 <

configureren van de microprocessor pinnen voor het besturingselement lijnen lcd_E_ddr | = (1 <

initialiseren van de LCD controller zoals bepaald door de definieert (LCD instructies) lcd_init_4d(); initialiseren van de LCD-display voor een 4-bits interface

weergeven van de eerste regel van de informatie-lcd_write_string_4d(program_author);

cursor naar het begin van de tweede regel instellen lcd_write_instruction_4d(lcd_SetCursor | lcd_LineTwo); _delay_us(80); 40 VS vertragen (min)

weergeven van de tweede regel van informatie de lcd_write_string_4d(program_version);

eindeloze lus while(1); keren 0; } / *** Einde hoofdprogramma code ***

* === 4-bits LCD functies === * / / * naam: lcd_init_4d doel: initialiseren van de LCD-module voor een 4-bits Gegevensinterface Entry: neerkomt (LCD instructies) ingesteld voor de gewenste bewerking Exit: geen parameters notities: gebruik tijd vertragingen in plaats van controle van de drukke vlag * / void lcd_init_4d(void) {/ / Power-up vertragen _delay_ms(100); / 40 mSec vertraging van de oorspronkelijke

BELANGRIJK - op dit punt de LCD-module is in de 8-bit-modus en het verwacht te ontvangen / / 8 gegevensbits, een beetje op elk van de 8 data lijnen, telkens wanneer de 'E'-regel is gepulseerde. / / Omdat de LCD-module is bedraad voor de 4-bits modus, alleen de bovenste vier data lijnen bent verbonden met / / de microprocessor en de lagere vier data lijnen meestal open zijn gelaten. Daarom, wanneer / / de regel van de 'E' is gepulseerde, de LCD controller zal lezen welke gegevens opgezet op de bovenste / / vier data lijnen en de lagere vier data lijnen zullen hoog zijn (als gevolg van interne pull-up circuits). / / Gelukkig de instructie 'FunctionReset' niet de zorg over wat er op de lagere vier bits dus / / deze instructie op alleen de vier zijden van de beschikbare gegevens kan worden verzonden en het zal worden geïnterpreteerd / / goed door de LCD controller. De 'lcd_write_4' subroutine zal het bereiken van deze instelling als de / / controle lijnen eerder correct zijn geconfigureerd.

Instellen van de RS en E lijnen voor de 'lcd_write_4' subroutine. lcd_RS_port & ~(1< =

Reset de LCD controller lcd_write_4(lcd_FunctionReset); eerste deel van reset reeks _delay_ms(10); 4.1 mS vertraging (min)

lcd_write_4(lcd_FunctionReset); tweede deel van reset reeks _delay_us(200); 100uS vertraging (min)

lcd_write_4(lcd_FunctionReset); derde deel van reset reeks _delay_us(200); deze vertraging wordt weggelaten in de data sheet

Voorlopige functie ingesteld instructie - alleen gebruikt voor het instellen van de 4-bits modus. Het aantal lijnen of het lettertype kan niet worden ingesteld op dit moment, aangezien de controller is nog steeds in de / / 8-bit mode, maar de data transfer-mode kan worden gewijzigd omdat deze parameter wordt bepaald door een / / van de bovenste vier stukjes van de instructie. lcd_write_4(lcd_FunctionSet4bit); 4-bits modus _delay_us(80); instellen 40uS vertraging (min)

Functie Set instructie lcd_write_instruction_4d(lcd_FunctionSet4bit); modus, regels en lettertype _delay_us(80); instellen 40uS vertraging (min)

De volgende drie instructies zijn opgegeven in de data sheet als onderdeel van de initialisatie routine, / / dus het is een goed idee (maar waarschijnlijk niet nodig) doen ze net als opgegeven en vervolgens opnieuw hen / / later als de toepassing een andere configuratie vereist.

Display on/off controle instructie lcd_write_instruction_4d(lcd_DisplayOff); Schakel weergave uit _delay_us(80); 40uS vertraging (min)

Duidelijk Display instructie lcd_write_instruction_4d(lcd_Clear); duidelijk display RAM _delay_ms(4); 1.64 mS vertraging (min)

// ; Vermelding modus ingesteld instructie lcd_write_instruction_4d(lcd_EntryMode); instellen van de gewenste verschuiving kenmerken _delay_us(80); 40uS vertraging (min)

Dit is het einde van de LCD controller initialisatie zoalsgespecificeerd in de data sheet, maar het display / / in de OFF-voorwaarde heeft gelaten. Dit is een goed moment om te schakelen de weergave ON terug. Display on/off controle instructie lcd_write_instruction_4d(lcd_DisplayOn); Draai de weergave ON _delay_us(80); 40uS vertraging (min)}

/*........................................................................... Naam: lcd_write_string_4d; Doel: een reeks tekens weergegeven op de LCD-post: (theString) is de tekenreeks die moet worden weergegeven Exit: geen parameters notities: gebruik tijd vertragingen in plaats van controle van de drukke vlag * / void lcd_write_string_4d (uint8_t theString[]) {vluchtige int i = 0; / / karakter teller * / terwijl (theString [i]! = 0) {lcd_write_character_4d(theString[i]) i ++; _delay_us(80); / / 40 VS vertragen (min)}}

/*........................................................................... Naam: lcd_write_character_4d doel: Stuur een byte van informatie naar de LCD gegevensregister Entry: (theData) is de informatie moet worden toegezonden aan de gegevens registreren Exit: geen parameters notities: behandelt niet RW (drukke vlag is niet geïmplementeerd) * /

ongeldig lcd_write_character_4d(uint8_t theData) {lcd_RS_port | = (1 <

/*........................................................................... Naam: lcd_write_instruction_4d doel: Stuur een byte van informatie naar het LCD instructie register binnenkomst: (theInstruction) is de informatie die wordt verzonden naar het register van de instructie Exit: geen parameters notities: behandelt niet RW (drukke vlag is niet geïmplementeerd) * / void lcd_write_instruction_4d(uint8_t theInstruction) {lcd_RS_port & = ~(1<

/*........................................................................... Naam: lcd_write_4 doel: een byte van informatie verzenden met ingang van de LCD-module: (theByte) is de informatie moet worden gezonden naar het gewenste LCD-register RS is geconfigureerd voor het gewenste LCD register E lage RW is lage Exit: geen parameters notities: vertragingen of de drukke vlag gebruiken * / void lcd_write_4(uint8_t theByte) {lcd_D7_port & = ~(1<

lcd_D6_port & ~(1< =

lcd_D5_port & ~(1< =

lcd_D4_port & ~(1< =

Schrijf de gegevens / / 'Adres opzettijd' (40 nS) lcd_E_port | = (1 <

De zeer volgende ding die je kan doen is optioneel, u konden verbinden met uw smartphone of Samsung de arduino, dit is vrij moeilijk om te doen, maar u kon een app downloaden en deze code van de IR-afstandsbediening met de app en aanpassen.

Gerelateerde Artikelen

Gemakkelijk LCD-scherm met Arduino

Gemakkelijk LCD-scherm met Arduino

In dit instructable leert u over het maken van een LCD-scherm met een arduino.Ding zult noodzaak-:1. 10 k potentiometer2. mannelijke kop bedraad3. jumper draden4. breadboard5. Arduino(I used UNO r3)6. aansluitkabel voor arduinoStap 1: Eerst de bepaal
Arduino Nano: De BMP180 barometerdruk en de temperatuur I2C 2 X 16 LCD-scherm met Visuino

Arduino Nano: De BMP180 barometerdruk en de temperatuur I2C 2 X 16 LCD-scherm met Visuino

De BMP180 is een zeer populaire gecombineerde sensor voor temperatuur en barometrische druk Arduino. Ik heb reeds Instuctable met BMP180. Een aantal mensen gevraagd maar hoe kunt u een ander I2C apparaat op dezelfde I2C bus als de BMP180. Ik heb eind
Arduino Nano: Ultrasone Ranger(Ping) afstand I2C 2 X 16 LCD-scherm met Visuino

Arduino Nano: Ultrasone Ranger(Ping) afstand I2C 2 X 16 LCD-scherm met Visuino

In dit Instructable, zal ik u tonen hoe gemakkelijk het is om de Ultrasone Sensor verbinden met Arduino en de afstand op een LCD-schermweergegeven.Houd er rekening mee dat de aantekening op enkele van de foto's in dit Instructable correct werken op s
Arduino Nano: DHT11 temperatuur een vochtigheid I2C 2 X 16 LCD-scherm met Visuino

Arduino Nano: DHT11 temperatuur een vochtigheid I2C 2 X 16 LCD-scherm met Visuino

Ik heb al twee Instructables gemaakt over het gebruik van DTH11/DTH21/DTH22 en AM2301 temperatuur en vochtigheid sensoren met Arduino en je kunt ze vinden hier en hier. Ik maakte ook Instructable op I2C LCD karakterdisplay, en één over het gebruik va
Arduino Nano: I2C 2 X 16 LCD-scherm met Visuino

Arduino Nano: I2C 2 X 16 LCD-scherm met Visuino

Karakter LCD-schermen zijn een zeer veel gebruikte voor Arduino projecten, om kleine hoeveelheden tekstuele informatie te geven. De meest voorkomende zijn de fundamentele rechtstreeks aangesloten beeldschermen en degene met I2C adapter. De I2C -versi
Arduino-Bit mappig op LCD-scherm met LOGO

Arduino-Bit mappig op LCD-scherm met LOGO

Dit project van Arduino wordt gebruikt voor weergave Arduino LOGO op LCD-scherm met behulp van de functie van de createChar van LiquidCrystal bibliotheek.In dit is het LOGO een teken van de aangepaste ontworpen door een binaire waarde te geven aan el
Het gebruik van de LCD-display met arduino tutorial

Het gebruik van de LCD-display met arduino tutorial

Hi iedereen hoop u zijn prima :)Vandaag display i'am gaan om je te leren hoe met een LCD met Arduino (gewoon een hel wereld-bericht).Als u een beginner bent of je nog nooit gespeeld met LCD vertoning met Arduino voordat, dit instructable zeker voor u
Berichten schrijven in een nokia5110 scherm met arduino.

Berichten schrijven in een nokia5110 scherm met arduino.

Met de volgende instructies zal u zitten kundig voor gemakkelijk afdrukken van berichten in een nokia 5110-LCD-scherm met behulp van een Arduino microcontroler.Wat we nodig hebben:Hardware:LCD LCD Display scherm Nokia 5110Arduino, (In dit voorbeeld b
LCD-scherm van Arduino

LCD-scherm van Arduino

Het type van de LCD display worden veel gebruikt om statusinformatie van een machine weer te geven. In de afbeelding wordt alleen het typische aspect van deze interface weergegeven.Stap 1:Er zijn verschillende typen display, zoals 2 x 20, dat 2 rijen
Ultrasone afstandsmeter met LCD-scherm van Arduino UNO

Ultrasone afstandsmeter met LCD-scherm van Arduino UNO

In deze tutorial gaan we zien een ander gebruik van de HC-SR04 ultrasone module. In deze module wordt vaak gebruikt op robots en speelgoedauto's te vinden van belemmeringen, maar het kan worden gebruikt voor het meten van afstanden ook.Afstanden geme
Thermohygrometer met klok en LCD-scherm van Arduino UNO

Thermohygrometer met klok en LCD-scherm van Arduino UNO

Deze 7 stappen rijdt u door de "bouw" van een thermo-hygrometer met klok op Arduino UNO.Gegevens en de tijd, de vochtigheid en de temperatuur worden getoond op een LCD 16 x 2 weergeven. Als u een LCD-scherm hebt aangeschaft en wilt weten hoe goe
YouTube Stats weergeven op een 320 x 240 Pixel LCD-scherm met een Arduino Uno

YouTube Stats weergeven op een 320 x 240 Pixel LCD-scherm met een Arduino Uno

Deze kleine Instructable zal u tonen hoe te een 320 x 240 pixel LCD scherm aangesloten op een Arduino Uno met een schild netwerk ook gebruiken, om te tonen stats voor Youtube-kanalen.Ik heb dit gemaakt als ik wilde om te zien hoeveel abonnees en stan
Hoe te gebruiken een Nokia 5110 84 X 48 LCD-scherm met je Arduino (het is gemakkelijk en goedkoop!)

Hoe te gebruiken een Nokia 5110 84 X 48 LCD-scherm met je Arduino (het is gemakkelijk en goedkoop!)

Het is goedkoop en eenvoudig toe te voegen een 84 X 48 LCD aan uw Arduino project.  Deze Nokia 5110 displays zijn overschot uit de Nokia-telefoons van de late 90 's.  Terwijl de tech oud is, maakt het een fantastische backlit display voor uw projecte
Bestuur van de LCD-scherm met behulp van een Linkit en Bluetooth

Bestuur van de LCD-scherm met behulp van een Linkit en Bluetooth

HalloIn dit instructable leert u over interfacing LCD met Linkit één en het beheer van het zelfde met BluetoothStap 1: Onderdelen die vereist zijn LinKit één BoardArduino UNO16 * 2 LCD met LCD schildBluetooth-antenne (gevonden samen met Linkit één)Sm