Menu

728x90

468x60

Navbar

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

336x280

Search This Blog

Labels

23K256 (1) 24C16B (2) 25AA010A (2) 8051 (7) 93AA46B (1) ADC (34) Analog Comparator (1) Arduino (16) ARM (13) AT89C52 (7) ATMega32 (58) ATMega644P (27) AVR (87) AVR PCB (2) Bootloader (1) CCS PICC (31) Change Notify Interrupt (CNI) (2) DAC (2) DHT11 (4) Display (133) Distance Sensor (3) ds1307 (10) DS18B20 (5) ds3231 (1) ds3232 (2) dsPIC (5) dsPIC30F1010 (3) dsPIC30F2010 (5) EEPROM (5) Environment Sensor (5) ESP32 (1) esp8266 (1) Graphical LCD (2) I2C (38) ILI9341 (1) Input/Output (76) Interrupt (22) IoT PCB (1) Keil (5) Keypad (16) KS0108 (2) LCD (75) LM35 (3) Master/Slave (2) MAX7221 (1) MCP23017 (8) MCP23S17 (7) MCP4921 (1) MCP4922 (2) Meter (3) MikroC (2) Module PCB (1) Motor (15) MPLABX (73) Nokia 5110 LCD (4) OLED (2) One-Wire (7) Oscillator (8) PCB (10) PCD8544 (3) PCF8574 (10) PIC (108) PIC12F (3) PIC16 (105) PIC16F628A (3) PIC16F630 (2) PIC16F716 (4) PIC16F818 (11) PIC16F818/819 (3) PIC16F84A (16) PIC16F876A (2) PIC16F877A (9) PIC16F88 (2) PIC16F887 (60) PIC18 (19) PIC18F1220 (5) PIC18F2550 (5) PIC18F4550 (12) PICKit2 (1) PICMicro PCB (4) Pin Change Interrupt (1) PWM (12) RTC (12) SBN0064G (1) Sensor (13) SH1106 (3) Shift Register (13) Shift Registers (10) Software TWI (2) SPI (39) ST7735 (1) STM32 (11) STM32 Black Pill (1) STM32 Blue Pill (12) STM32 HAL (5) STM32CubeIDE (13) STM32F103C8T6 (9) STM32F401CCU6 (1) SysTick (4) temperature sensor (13) TFT (1) TG12864A (1) Thermometer (22) Timer/Counter (32) TM1637 (2) twi (10) UART (8) Ultrasonic (4) Voltmeter (7) WDT (1) XC16 (2) XC8 (96)