728x90

728x90

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

320x50

Search This Blog

tyro-728x90