Visa värde på 7 segment display
Postat: 12 november 2011, 20:05:27
Jag försöker lära mig att programmera PIC. Och i den boken som jag läser så är avslutas varje kapitel med övningar. Och i den övningen som jag inte lyckas lösa så ska man mäta på en potentiometer och skriva ut resultatet på två 7 segment displayer. Den ända hjälpen man får är ett kopplingsschema.
Jag har dubbelkollat så jag har kopplat rätt. Så jag misstänker att det är jag som missat något i koden:
Jag får inga felmeddelanden när jag kompilerar koden och jag lyckas ladda in den i PIC:en med min PICKIT 3. Men displayerna visar inget. Är det någon som kan hjälpa mig med vad jag gjort för fel? Behöver ni kopplingsschemat så säg till så ska jag försöka fixa till något.
Jag har dubbelkollat så jag har kopplat rätt. Så jag misstänker att det är jag som missat något i koden:
Kod: Markera allt
#include <pic18.h>
#include <delay.c>
unsigned char sjuseg(unsigned char siffra);
unsigned char ad8bit(unsigned char kanal);
double Ain;
char Aint;
void main () {
TRISC = 0x00;
ADCON0 = 0xC1;
TRISD = 0x00;
CMCON = 0x07;
LAT7 = 1;
LAT6 = 1;
while(1) {
Ain = 0.01953*ad8bit(0)+0.05;
Aint = (char)(Ain * 10);
PORTC = sjuseg(Aint/10+0x30);
LAT6=0;
DelayMs(1);
LAT6=1;
PORTC = sjuseg(Aint%10+0x30);
LAT7=0;
DelayMs(1);
LAT7=1;
}
}
unsigned char ad8bit(unsigned char kanal) {
kanal <<= 3;
ADCON0 = 0xC1;
DelayMs(10);
GODONE = 1;
while (GODONE);
return ADRESH;
}
unsigned char sjuseg(unsigned char siffra) {
unsigned char seg;
switch (siffra) {
case 0:
seg = 0x3f;
break;
case 1:
seg = 0x06;
break;
case 2:
seg = 0x5b;
break;
case 3:
seg = 0x4f;
break;
case 4:
seg = 0x66;
break;
case 5:
seg = 0x6d;
break;
case 6:
seg = 0x7d;
break;
case 7:
seg = 0x07;
break;
case 8:
seg = 0x7f;
break;
case 9:
seg = 0x6f;
break;
}
return seg;
}