16F877A development board cursus deel 1

Vergelijkbare documenten
SchemaTheek Magazine 2. In dit magazine:

Peripheral Interface Controllers. BRAC clubavond PE2WDO

LocoServo Handleiding

De seriële poort Jan Genoe KHLIM

Hieronder volgt een programma met een subroutine die vanaf verschillende plaatsen wordt opgeroepen.

LocoServo Handleiding

Cloud2 Online Backup - CrashplanPRO

In deze mannual zal ik het voorbeeld van de Led cube gebruiken maar de principes zijn op alles toepasbaar.

ES1 Project 1: Microcontrollers

Workshop Arduino voor beginners deel 2

Goedkope rotors aansturen?

Handleiding voor demonstratie multimeter

Inhoudstafel: OVERZICHT VAN DE AANSLUITINGEN... 3 LUIDSPREKER AANSLUITINGSMOGELIJKHEDEN... 4 OMSCHRIJVING VAN DE LEDS... 4

PIC Callgever Door PA1RUM

Elbo Technology BV Versie 1.1 Juni Gebruikershandleiding PassanSoft

Arduino CURSUS. door Willy - 09-juni-2017

S88XPressNetLI v1.0. Installatie- en gebruikershandleiding en naslagwerk KDesign Electronics, PCB ontwerp door RoSoft

Handleiding ISaGRAF. Wil men het programma bewaren, dan is het verstandig een back-up te maken: C9 Back-up / Restore

Seriële bluetooth verbinding ATmega128

GEÏNTEGREERDE PROEF. VTI Sint-Laurentius. Pakketweegschaal. Industriële informatie & communicatietechnologie SCHOOLJAAR

De FOR lus: // terug naar waar je vandaan kwam Serial.begin(115200); // communicatie snelheid met de PC

SI-Profibus. Unidrive M700-M702 en Siemens S7-300 PLC (STEP 7)

A Quick Start Guide: AVR programmeren

Opgave Tussentijdse Oefeningen Jaarproject I Reeks 4: Lcd Interface & Files

Arduino Workshop 1 Zuid-Limburg

Oefening 1 - Seriële communicatie via USB

Handleiding software USB PIC DEV. BOARD

Bedrade afstandbediening Introductie van het spare part. Knoppen en display van de afstandbediening.

InteGra Gebruikershandleiding 1

Tweede workshop Arduino

Microcontrollers Labo

Arduino : Morse Voltmeter

Installation Manual Mobile Dispencer Point ~ PayCon II

Installatiehandleiding

Oefeningen Interpretatie I Reeks 6 : Registermachines

Universele telefoonprint met/voor PIC besturing

SI-Profinet. Unidrive M200-M400 en Siemens S PLC (TIA portal)

Arduino Cursus, Deel 2 Programmeren. Simon Pauw, ZB45, Amsterdam

ID-er/sequencer. Beschrijving. Pag 1/6

M2000Pe. Installatiehandleiding. Controller

Installatie & Snelstart Gids iais Wireless(draadloos) AIS Ontvanger en NMEA Server

Tetra Industriële Security

Inhoud. 1 De Microcontroller 1. 2 De taal C Declaraties Functies In- en uitvoer Voorwaardelijke opdrachten 41

Alfanet PC-interface 2e gen.

WBelectronics. Infinity USB Phoenix - Handleiding

Hoofdstuk 7. Computerarchitectuur

Afstandsbediening met de MSX

Bedieningshandleiding voor de Exocompact Display

Gebruikers handleiding. JupiterPro. P2000 alarmontvanger

SmartSDR CAT + DDUtil handboek

Installatie handleiding

Bouwbeschrijving UniSAI

Atelier Michel Koene Multi-Lichtwand

EmSE presentatie. Starten met de ATtiny2313: Een RGB powerled driver Kees Moerman, 13 juli 2010

MICRO:BIT. Uitdaging 5 Magic8. Origineel: Micro:bit Educational Foundation 2016 Vertaling: CoderDojo Kennemerwaard 2017

Installatie van Linux Mint 13

Workshop itrain - 21/02/2015

systeemtester

Xelion ESPA koppeling Handleiding Beheer V1.6

Zelf PIC's programmeren. Deel-13 IR-sensor

Spanningsdriver LEDVD5CH10A-V12 ZigBee interface met LCD display

Installeren van de Arduino programmeer omgeving

Inleiding Digitale Techniek

Personal tag. Personal tag. Drukknop of bewegingsdetector. TABEL 2 Samenvatting van de Programmeerfuncties

Stap 1: Registreer via de link op de G-schijf beschikbaar na inloggen met de teken-account, verzend via Submit. Nadien krijg je een bevestiging op

Locobuffer Handleiding

Thijs Assies. DMX-512 met een PICmicro

De CPU in detail Hoe worden instruc4es uitgevoerd? Processoren 28 februari 2012

Spanningdriver LEDVD5CH20A-V9 DALI interface met LCD display

Spanningdriver LEDVD5CH20A-V7 Real Time Clock met LCD scherm

Computerhandleiding JKexer 9840

Handleiding KE 4209 USB Barcode scanner

B870P PLUS NEDERLANDS

Accelerometer project 2010 Microcontroller printje op basis van de NXP-LPC2368

MULTIMEDIABOX.nl Custom made solutions hardware & software. Advanced Menu

Logo quiz Project Inleiding op de Logo!

Snel aan de slag met de Mini Squirrel datalogger

Frostwire handleiding. Inleiding. Voor- en nadelen van Frostwire. Installatie van Frostwire

Registreren Inloggen - Profiel beheren

Vr.Model-nr MPFOL15. Gebruikershandleiding

Installatiehandleiding

Meervoudige Smart-Card Duplicator. Gebruiksaanwijzing

INHOUD. KHLim dep IWT MeRa 1/22

Spanningsdriver 11 WiFi interface met LCD display

GEÏNTEGREERDE PROEF. VTI Sint-Laurentius. Pakketweegschaal. Industriële informatie & communicatietechnologie SCHOOLJAAR

Hoofdstuk 3: Processen: Beschrijving en Besturing. Wat is een proces? Waarom processen? Wat moet het OS ervoor doen? Is het OS zelf een proces?

1. WAT STAAT ER OP DE BORD HET LEERBORD TESTEN DE PC-VERBINDING TESTEN... 6

Spanningsdriver LEDVD5CH10A-V11 WiFi interface met LCD display

Computer Instructies voor de SM-5062

Priva Blue ID Network scanner / Syslog Tool

IDAgeChecker BDX118T11xx Manual V02.00

Computerhandleiding MX-851

Inhoudsopgave. Handleiding: MC v2.0a. Pagina - 1 -

Morpheus. Gebruikers Handleiding Clifford Electronics Benelux, Lijnden.

Produktinformatie Volgnummersysteem Q-basic plus. Indicatieprijs: vanaf Euro 3.500,00 excl. BTW en installatie

Installatie-instructies

Transcriptie:

16F877A development board cursus deel 1 Auteur: Stijn Coenen (Stynus) [0909-005] Een tijd geleden waren er development boardjes voor de PIC16F877A te koop. Er was toen beloofd eloofd dat er een cursus voor geschreven ging worden voor de basis dingen in picbasic. Het heeft een tijdje geduurd maar hier is de cursus dan toch. In dit eerste deel komt de uitleg over de demo code aan bod. De fuses en hoe de leds worden aangestuurd, komt omt hier niet aanbod om de simpele reden dat dit allemaal op picbasic.nl heel goed is uitgelegd. Het eerste deel van de code is de 7 segment displays aansturen. Dit gebeurd in een subroutine met de volgende code: Dispuit: If digitbit = 0 Then DigitSel digitval = digit1 Subroutine begin begi Als de display selectiebit 0 is dan Het rechste display selecteren De waarde die op het rechtse display moet komen in digitval zetten digitbit = 1 De digit selectie bit op 1 zetten voor het linkse display bij de volgende keer dat deze subroutine wordt aangeroepen Als de display selectiebit 1 is dan DigitSel Het linkse display selecteren digitval = digit2 De waarde die op het linkse display moet komen in digitval zetten digitbit = 0 De digit selectie bit op 0 zetten voor het rechtse display bij de volgende keer dat deze subroutine wordt aangeroepen Select digitval De uitgangen aansturen In digitval zit nu de waarde dat het display moet gaan weergeven. met de case structuur wordt nu het stukje code dat bij dat getal uitgevoerd Case 0 Bijvoorbeeld voor 0 wordt dit stukje uitgevoerd uitgev tot aan de volgende case De displays zijn op de volgende manier opgebouwd: a f g b Case 1 e d c Case 2 Case 3 Schematheek.net 23

Case 4 Case 5 Case 6 Case 7 Case 8 Case 9 Case 10 A Case 11 B Case 12 C Case 13 D Case 14 E Case 15 F Case EndSelect DelayMS 1 met display opgelicht segmenten terug uitzetten uit subroutine 1 ms wachten Alle Terugkeren Schematheek.net 24

Dit stuk code wordt in het hoodprogramma (main) aangeroepen door de volgende regel: Telkens als deze sub routine wordt aangeroepen wordt er naar 1 van de 2 displays weggeschreven. Bij sommige programma s is dat zo echter niet heel handig. Daarvoor kan er nog een 2 de subroutine gemaakt worden. Bijvoorbeeld: Dispaanst: Aangezien de displays om de beurt worden aangestuurd moet de dispuit sub regelmatig aangeroepen worden. Anders gaan de displays knipperen of eventueel zelfs uitblijven. Een tweede deel van het demo programma vormt een knightrider. Dit deelprogramma zit ook in een subroutine. Maar omdat de knightrider veel te snel zou gaan als de subroutine bij elke cyclus wordt aangeroepen is er een vertragingslusje met een teller tussen gezet. Dit kan hier omdat de leds niet gemultiplext zijn. If vertraging = 100 Then GoSub Knightrider vertraging = 0 Inc vertraging Als vertraging de waarde 100 heeft bereikt dan de subroutine knightrider uitvoeren Vertraging terug op 0 zetten Als de waarde van 100 nog niet bereikt is dan vertraging +1 doen De knightrider subroutine ziet er alsvolgt uit: Knightrider: Subroutine voor knightrider If knightbit = 0 Then Leds naar links verplaatsen Inc KnightTel Waarde knightrider +1 doen If KnightTel = 7 Then Als de waarde 7 is (hoek) dan knightbit = 1 knightbit op 1 zetten zodat bij de volgende cyclus de leds de andere kant opgaan Leds naar rechts verplaatsen Dec KnightTel Waarde knightrider -1 doen If KnightTel = 1 Then Als de waarde 1 is (hoek) dan volgende knightbit = 0 cyclus de leds de andere kant opgaan Leds naar rechts verplaatsen Select KnightTel De leds aansturen volgens de waarde van KnightTel Case 1 Bijvoorbeeld bij de waarde 1 wordt hoog gemaakt en de rest van de leds laag Case 2 Case 3

Case 4 Case 5 Case 6 Case 7 Case EndSelect Terugkeren naar waar de subroutine is opgeroepen Een laatste deel van de code bestaat uit de seriële interface en het lcd aansturen. De seriële interface moet bij het opstarten van de pic worden ingesteld. We gebruiken hier de interne uart van de pic. HSERIAL_CLEAR = On Zorgt ervoor dat de buffer automatisch leeg wordt gemaakt voordat er data wordt ontvangen Declare HSERIAL_BAUD 9600 Snelheid op 9600 bits/seconde instellen HSERIAL_RCSTA = %10010000 Hardware seriële poort opzetten in continue mode HSERIAL_TXSTA = %00100000 Verzenden via uart opzetten in asynchrone mode INTCON = %11000000 Interrupt opzetten ON_INTERRUPT GoTo SeriIn Bij interrupt naar SeriIn springen PIE1.5 = 1 Interrupt voor usart opzetten De interrupt routine ziet er als volgt uit: SeriIn: HSerIn [serdata] Print serdata Interrupt routine ontvangen data in serdata zetten ontvangen data op het lcd printen Schematheek.net 26

HSerOut [serdata] Context Restore Data terug naar pc sturen ter bevestiging Data herstellen en teruggaan De tekst die bij het opstarten naar de pc wordt verzonden gebeurd met het volgende stukje code: SerUit: HSerOut ["***********************************", 13,10] HSerOut ["* SchemaTheek.Net *", 13,10] HSerOut ["* PIC16F877A ontwikkelbordje *", 13,10] HSerOut ["* Demo programma V1.2 *", 13,10] HSerOut ["* Laatste update: 23/12/2008 *", 13,10] HSerOut ["***********************************", 13,10] HSerOut ["Type hier uw tekst voor op het lcd:", 13,10] De, 13,10 op het einde van de data zorgt ervoor dat de volgende tekst op een nieuwe regel komt in de terminal. Dit was het grootste deel van de demo code uitgelegd. Als er nog vragen zijn dan mogen die altijd op het SchemaTheek forum gesteld worden. De complete code is op de site te downloaden bij de pagina van dit artikel. Schematheek.net 27