Program starts up with SSD = 0000 and Decimal mode Enter numbers 0 through 9 on
ID: 3803547 • Letter: P
Question
Program starts up with SSD = 0000 and Decimal mode
Enter numbers 0 through 9 on keypad and display on SSDs
Poll keypad, ignore A-F
Use timer (any - including CoreTimer) and interrupts to refresh displays (see SSDcounter example codes for ISRs) –
Always enter Decimal mode when character entered • Btn 1 Toggles between Hexadecimal display and Decimal mode – Hex: •
LED2 = ON/LED1 = OFF
convert decimal # to hex and display – Decimal:
LED1 = ON/LED2 = OFF, display as decimal
Btn 2 clears number and displays 0000 in mode Decimal
Programming with C on MPLAB using a PIC32 pro MX7 board.
using 2 dual 7 segment displays in bottom pins of JA JB and JC JD
and a 16 butoon key pad on JF
Explanation / Answer
void setup()
{
pinMode(1, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6,_SEG, OUTPUT);
pinMode(7, OUTPUT);
pinMode(CA1, OUTPUT);
pinMode(CA2, OUTPUT);
}
void loop()
{
for (int digi1=0; digi1 < 10; digi1++)
{
for (int digt2=0; digi2 < 10; digi2++)
{
unsigned long strtTime = millis();
for (unsigned long elapsed=0; elapsed < 700; elapsed = millis() - strtTime)
{
lightDigi1(numbers[digi1]);
delay(6);
lightDigi2(numbers[digi2]);
delay(6);
}
}
}
}
void lightDigi1(byte num)
{
dgtalWrite(CA1, LOW);
dgtalWrite(CA2, HIGH);
lightSegments(num);
}
void lightDigit2(byte number)
{
dgtalWrite(CA1, HIGH);
dgtalWrite(CA2, LOW);
lightSegments(num);
}
void lightSegments(byte num)
{
for (int i = 0; i < 7; i++) {
int bit = bitRead(number, i);
dgtalWrite(segs[i], bit);
}
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.