Luke
Luke

Reputation: 2486

Driving Dual 7 Segment Display Using Arduino

Okay, so I am trying to drive a 7 segment based display in order to display temperature in degrees celcius. So, I have two displays, plus one extra LED to indicate positive and negative numbers.

My problem lies in the software. I have to find some way of driving these displays, which means converting a given integer into the relevant voltages on the pins, which means that for each of the two displays I need to know the number of tens and number of 1s in the integer.

So far, what I have come up with will not be very nice for an arduino as it relies on division.

tens = numberToDisplay / 10;
ones = numberToDisplay % 10;

I have admittedly not tested this yet, but I think I can assume that for a microcontroller with limited division capabilities this is not an optimal solution.

I have wracked my brain and looked around for a solution using addition/subtraction/bitwise but I cannot think of one at all. This division is the only one I can see.

Upvotes: 1

Views: 1028

Answers (2)

xenomancer
xenomancer

Reputation: 46

You might also try using a 7-seg display driver chip to simplify your output and save pins. The MC14511BCP (a "4511") is a good one. It'll translate binary coded decimal (BCD) to the appropriate 7-seg configuration. Spec sheets are available here and they can be commonly found at electronics parts stores online.

Upvotes: 1

Mchl
Mchl

Reputation: 62405

For this application it's fine. You don't need to get bothered with performance in a simple thermometer.

If however you do need something quicker than division and modulo, then bitwise operations come to help. Basically you would use bitwise & operator, to compare your value to display with patterns describing digits to be displayed on the display.

See the project here for example: http://fritzing.org/projects/2-digit-7-segment-0-99-counting-with-arduino/

Upvotes: 1

Related Questions