Det finns exempel på nätet som utför det jag vill utföra men jag måste lära mig någon gång. Har blivit lite less på att kopiera kod och inte förstå vad som händer.
Hårdvara: Mjukvara:
- - MicroC Pro for PIC
- - Att ta in ett analogt värde till µC:n och presentera detta korrekt på displayen. Visningen skall kunna flytta "komma" för att visa värde högre än 9,999.
För det första; hur ska jag lägga upp det här?
Jag har börjat att definera vad porten heter som styr var segment för sig. Har också definerat hur många siffror som finns.
Vad bör nästa steg bli? I min skalle så ska jag på något vis få displayen att visa 0.000 default och sedan gå upp till 9.999 innan den slår om till 10.000 osv.
Det jag behöver hjälp med först och främst är hur jag ska tänka för att få lite flöde på det.
Så här långt så har jag avklarat hårdavarubiten med att koppla upp allt och skriva siffra för siffra på displayen. Displayen är multiplexad med gemensam anod så genom PORTA (1:a på respsektive utgång) så styr jag vilken siffra som ska visas och med PORTD vilka segment som ska tändas (genom att sänka respektive segmentsport).
Det är inte heller något problem att ta in det analoga värdet och placera detta i en byte stor variabel.
Den obefintliga koden som jag skrivit än så länge syns nedan. Vidare så har det nog ingen betydelse hur konfigureringen ser ut då jag hantera detta själv. Med andra ord så är det alla definitioner och huruvudprogrammet jag inte kan.
EDIT: Ser att jag skrivit fel antal element i "NUMBER" arrayen men det är fixat.
Kod: Markera allt
void init() {
OSCCON = 0b11111000; //x4 PLL and 32MHz
ANSELA = 0;
ANSELB = 0;
ANSELD = 0;
ANSELE = 0;
CM1CON0 = 0;
CM2CON0 = 0;
CM3CON0 = 0;
CM4CON0 = 0;
OPA1CON = 0;
OPA2CON = 0;
OPA3CON = 0;
TRISD = 0;
LATD = 0;
TRISA = 0;
LATA = 0;
TRISC.B3 = 0;
TRISC.B4 = 1;
}
#define NUMPORT PORTD
#define DIGITPORT PORTA
const int DIGIT[3] = {
0b00000010,
0b00000100,
0b00001000,
0b00010000
};
const int NUMBER[10] = {
0b11000000, //0
0b11111001, //1
0b10100100, //2
0b10110000, //3
0b10011001, //4
0b10010010, //5
0b10000010, //6
0b11111000, //7
0b10000000, //8
0b10010000 //9
};
void main() {
init();
while(1) {
LATA.B1 = 1;
}
}