Menu

Adskeeper - header widge

728x90

Search This Blog

468x60

Navbar

AdsKeeper - IAB Display Standard Ad Unit

Saturday, October 9, 2021

AT89C52 and 7-Segments Display Using C in Keil

 A typical digital display device is 7-Segments display. It’s very easy to program and interface to digital IC, or microcontroller for novice learner.

AT89C52 and 7-Segments Display Using C in Keil

They come with different color and digit size. Common cathode and anode is a way to identify it. These two types are complement. Digital data inputs (7-Segments codes) to these two device type are different (complemented).

Voltage and current requirement for each segment are different depending on display’s digit-size. These parameters must be known as they are stated in device’s specification. Typically interfacing between digital controller and this device require a current limiting resistor for each segment.

AT89C52 typically supplied at +5V. So its digital output driving is +5V. We need to add a resistor between digital output pin of this controller and display.

AT89C52 and 7-Segments Display Using C in Keil
Schematic diagram for program simulation

AT89C52 operates at 12MHz from external crystal oscillator. P1.0 is a digital input. Whenever it’s pressed it increase value of counter. Controller counts up to 16. P2 interfaces to a single common anode type 7-Segments display.

C program is written in Keil IDE for 8051 device. Coding is very simple.

#include <REG52.h>
sbit button=P1^0;
// common anode
unsigned char SSD[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
//unsigned char SSD[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
unsigned char cnt=0;
void main(){
P2=0x00;
button=1;
cnt=0;
while(1){
if(button==0){
while(button==0);
cnt++;
if(cnt==16) cnt=0;
}
P2=SSD[cnt];
}
}


Click here to download this example package.


No comments:

Post a Comment

Adskeep- Standard Ads

336x280

DIY Electronic Projects And Instruments

AdsKeeper - 2091654

Labels

23K256 (1) 24C16B (2) 25AA010A (2) 8051 (7) 93AA46B (1) ADC (39) Analog Comparator (1) Arduino (16) ARM (32) AT89C52 (7) ATMega32 (59) ATMega644P (27) AVR (88) AVR PCB (2) Bootloader (1) CCS PICC (31) Change Notify Interrupt (CNI) (2) DAC (2) DHT11 (5) Display (156) Distance Sensor (3) dot matrix (1) ds1307 (10) DS18B20 (6) ds3231 (1) ds3232 (2) dsPIC (12) dsPIC30F1010 (3) dsPIC30F2010 (12) EEPROM (5) Environment Sensor (6) ESP32 (1) esp8266 (1) Graphical LCD (3) HD44780 (10) I2C (38) ILI9341 (1) Input/Output (83) Interrupt (22) IoT PCB (1) Keil (5) Keypad (16) KS0108 (3) LCD (84) LM35 (4) Master/Slave (2) MAX7221 (1) MCP23017 (8) MCP23S17 (7) MCP4921 (1) MCP4922 (2) Meter (3) MikroC (2) MikroC ARM (1) MikroC dsPIC (7) Module PCB (2) Motor (15) MPLABX (73) Nokia 5110 LCD (4) OLED (2) One-Wire (7) Oscillator (8) PCB (13) PCD8544 (3) PCF8574 (10) PIC (116) 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 (15) SH1106 (3) Shift Register (15) Shift Registers (19) SN74HC595N (9) Software TWI (2) SPI (44) sprinf (3) ST7735 (1) STM32 (29) STM32 Black Pill (1) STM32 Blue Pill (12) STM32 HAL (23) STM32CubeIDE (32) STM32F103C8T6 (9) STM32F103R6 (18) STM32F401CCU6 (1) SysTick (7) temperature sensor (15) TFT (1) TG12864A (1) Thermometer (22) Timer/Counter (32) TM1637 (2) twi (10) UART (11) Ultrasonic (4) Voltmeter (7) WDT (1) XC16 (2) XC8 (96)