Code: Selecteer alles
#include <stdio>
#include "reg832.h"
#define e P0_2
#define rs P0_3
#define lcdport P0 //SELECTIE POORT 0
#define cleardisp 0x01 //LEEG MAKEN VAN HET SCHERM
#define cursathom 0x02 //CURSOR OP DE EERSTE PLAATS ZETTEN
#define ENTRYMODE 0x06 //00000110B ;CURSOR NAAR RECHTS, SCHERM VAST
#define DISPLAYON 0x01 //00000001B ;HOMEN EN CLEAR CURSOR
#define DISPLAYOF 0x08 //00001000B ;DISPLAY OFF, CURSOR OFF
#define CURSOROFF 0x0C //00001100B ;DISPLAY ON ZONDER CURSOR
#define CURSORONB 0x0F //00001111B ;CURSOR ON AND BLINK
#define CURSORONN 0x0E //00001110B ;CURSOR ON NO BLINK
#define FUNCTIONS 0x28 // 00101000B ;INTERFACE LENGTE EN KARAKTER FONT
#define CGRAM 0x40 //01000000B ;SELECTIE KARAKTER GENERATOR RAM
#define DDRAM 0x80 //10000000B ;SELECTIE DATA DISPLAY RAM
// SerInit stelt de seriële poort in op 9600 baud
void serinit (void)
{
if ((PLLCON & 0x07) <= 5)
{
//hier mogen we alleen komen als de waarde van de PLL bruikbaar is
T3FD = 0x2D;
T3CON = (((~PLLCON)-2) & 0x07)+0x80; //baudrate instellen afhankelijk van pll
SCON = 0x50; //Uart initializeren
}
}
// putchar functie nodig voor printf
void putchar(char c)
{
TI=0;
SBUF=c;
while(!TI); //wachten tot het karakter is verzonden
}
void wait (int time)
{
int i;
for (i=0;i<time;i++); // time keer niets doen.
}
void lcdnibd (unsigned char c)
{
rs=1;
e=0;
c&=0xF0;
c|=0x0b;
P0=c;
e=1;
e=1;
e=0;
wait(100);
}
void lcdd (unsigned char c)
{
lcdnibd(c);
c=c<<4;
lcdnibd(c);
}
void lcdmsg (unsigned char * str)
{
for(;*str!=0;str++)
lcdd(*str);
}
void lcdnibc (unsigned char c)
{
rs=0;
e=0;
c&=0xF0;
c|=0x03;
P0=c;
e=1;
e=1;
e=0;
wait(1000);
}
void lcdc (unsigned char c)
{
lcdnibc(c);
c=c<<4;
lcdnibc(c);
}
void lcdinit (void)
{
P0=0x03;
wait(100);
lcdnibc(0x30);
lcdnibc(0x30);
lcdnibc(0x30);
lcdnibc(0x20);
lcdc(FUNCTIONS);
lcdc(CURSORONB);
lcdc(DISPLAYON);
lcdc(ENTRYMODE);
}
int adcinlezen (void)
{
long int ingang;
ingang = ADCDATAH & ADCDATAL;
return ingang;
}
// hoofdprogramma
int main (void)
{
long int ingang;
char buff[16];
serinit();
lcdinit();
ADCCON1 = 0xEF;
ADCCON2 = 0x2C;
while(1)
{
ingang = adcinlezen();
sprintf(buff, "%ld",ingang);
lcdmsg (buff);
P2=0xAA;
wait(1500);
P2=0x55;
wait(1500);
}
}