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

Search This Blog

Labels

25AA010A (1) 8051 (7) 93AA46B (1) ADC (30) Analog Comparator (1) Arduino (15) ARM (6) AT89C52 (7) ATMega32 (56) AVR (57) CCS PICC (28) DAC (1) DHT11 (2) Display (105) Distance Sensor (3) DS18B20 (3) dsPIC (2) dsPIC30F1010 (2) EEPROM (5) Environment Sensor (4) esp8266 (1) I2C (29) Input/Output (67) Interrupt (19) Keil (5) Keypad (10) LCD (47) Master/Slave (1) MAX7221 (1) MCP23017 (5) MCP23S17 (4) Meter (3) MikroC (2) Motor (15) MPLABX (71) Nokia 5110 LCD (3) OLED (2) One-Wire (6) Oscillator (8) PCB (6) PCD8544 (3) PCF8574 (5) PIC (107) PIC12F (2) PIC16F628A (2) PIC16F630 (1) PIC16F716 (3) PIC16F818 (10) PIC16F818/819 (2) PIC16F84A (15) PIC16F876A (1) PIC16F877A (9) PIC16F88 (1) PIC16F887 (60) PIC18 (19) PIC18F1220 (4) PIC18F2550 (3) PIC18F4550 (12) PWM (11) RTC (8) Sensor (10) SH1106 (1) Shift Register (11) Shift Registers (3) SPI (24) STM32 (6) STM32 Blue Pill (6) STM32CubeIDE (6) STM32F103C8T6 (6) SysTick (3) temperature sensor (11) Thermometer (21) Timer/Counter (31) TM1637 (2) UART (7) Ultrasonic (4) Voltmeter (7) WDT (1) XC16 (2) XC8 (94)