728x90

728x90

Tuesday, May 31, 2022

ATMega32 Simple Multiplexing Display Example

In this programming example, I will show a very simple display multiplexing using a two-digit seven-segment display. It will show a value that read from the lower nibble of PortB.

ATMega32 Simple Multiplexing Display Example
Program Simulation

The display is common cathode type. I use a resistor network to cut down its forward current. The 74HC04 chip replace driving transistors, due to simulation difficulty. The lower nibble of PortB reads the digital inputs from a DIP switch. We will not need additional resistors because all input pins are turned high via software.

  1. /*
  2.  * muxDisplayDigitalRead.c
  3.  *
  4.  * Created: 5/30/2022 6:19:32 PM
  5.  * Author : dell
  6.  */
  7.  
  8. #include <avr/io.h>
  9.  
  10. #define F_CPU 4000000UL
  11. #include <util/delay.h>
  12.  
  13. int main(void)
  14. {
  15. unsigned char temp;
  16. /*Common Cathode Display*/
  17. unsigned char displayData[10]={0x3F,0x06,0x5B,0x4F, 
    0x66,0x6D,0x7D,0x07,0x7F,0x6F};
  18. /*PortB Input*/
  19. DDRB=0x00;
  20. /*Turn on PD0...3 of PortB*/
  21. PORTB=0x0F;
  22. /*PortB and PortD Output*/
  23. DDRC=0xFF;
  24. DDRD=0xFF;
  25. while (1)
  26. {
  27. /*Read PortB*/
  28. temp=PINB&0x0F;
  29. /*Multiplexing Display Process*/
  30. PORTD=0x00;
  31. PORTC=displayData[temp/10];
  32. /*Turn On Digit 1*/
  33. PORTD=0x01;
  34. /*Activate for 5ms*/
  35. _delay_ms(5);
  36.  
  37. PORTD=0x00;
  38. PORTC=displayData[temp%10];
  39. /*Turn On Digit 2*/
  40. PORTD=0x02;
  41. /*Activate for 5ms*/
  42. _delay_ms(5);
  43. }
  44. }
  45.  
  46.  

 Click here to download its source file.

ATMega32 Simple Multiplexing Display Example
Schematic Diagram

We can multiplex multi-digit 7-Segment display using the SN74HC168 serial to parallel shift registers chip.

No comments:

Post a Comment

320x50

Search This Blog

tyro-728x90