Tutorial Microcontroller MCS-51 ATMEL ISP
 

 

Super MCS51 Trainer

Standart MCS51 Trainer

Standart AVR Trainer

Programmer USBASP

Standart ARM Trainer

  3. Experiment 7 Seven segmen

In this experiment, we are going to DRIVE 7 segmen that connected to PORT IO microcontroller STM32F407. In this experiment, Common Anoda 7 segmen are connected to PORTB4, PORTB5, PORTB7, PORTB8, PORTB11, PORTB12, PORTB13, PORTB14, and Driver transistor are connected to PORTE12, PORTE13, PORTE14, PORTE15. Coocox software are used to edit, to compile and to upload, in discovery board STM32F407. Dont forget to use 3.3V power suppply in schematic as shown in Fig 1. Standart library used in this experiment are CMIS library: STM32f4xx_gpio.h, STM32f4xx_rcc.h.

Fig. 1. Interfacing 7 segmen display with ARM STM32F4 board trainer

Fig. 2. Seven Segmen Interface

 

Fig.3. CMIS Library for Seven Segmen experiment

#include "stm32f4xx.h"
#include "stm32f4xx_gpio.h"
#include "stm32f4xx_rcc.h"
unsigned char data;
void delay (int a);
void switchInit(void);
void ledInit(void);
// delay function
void delay (int a)
{
volatile int i,j;
for (i=0 ; i < a ; i++)
{
j++;
}
return;
}
//
void LEDinit()
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
//
//GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init(GPIOE, &GPIO_InitStructure);
}
//
void digitNumber (int digit)
{
switch (digit)
{
case 1:
{
GPIO_ResetBits(GPIOE,GPIO_Pin_12);//SegI
GPIO_SetBits(GPIOE,GPIO_Pin_13);//SegII
GPIO_SetBits(GPIOE,GPIO_Pin_14);//SegIII
GPIO_SetBits(GPIOE,GPIO_Pin_15);//SegIV
break;
}
case 2:
{
GPIO_SetBits(GPIOE,GPIO_Pin_12);//SegI
GPIO_ResetBits(GPIOE,GPIO_Pin_13);//SegII
GPIO_SetBits(GPIOE,GPIO_Pin_14);//SegIII
GPIO_SetBits(GPIOE,GPIO_Pin_15);//SegIV
break;
}
case 3:
{
GPIO_SetBits(GPIOE,GPIO_Pin_12);//SegI
GPIO_SetBits(GPIOE,GPIO_Pin_13);//SegII
GPIO_ResetBits(GPIOE,GPIO_Pin_14);//SegIII
GPIO_SetBits(GPIOE,GPIO_Pin_15);//SegIV
break;
}
case 4:
{
GPIO_SetBits(GPIOE,GPIO_Pin_12);//SegI
GPIO_SetBits(GPIOE,GPIO_Pin_13);//SegII
GPIO_SetBits(GPIOE,GPIO_Pin_14);//SegIII
GPIO_ResetBits(GPIOE,GPIO_Pin_15);//SegIV
break;
}
}
}
//
void lightNumber(int numberToDisplay)
{
switch (numberToDisplay)
{
case 0:
{
GPIO_ResetBits(GPIOB,GPIO_Pin_4);//a
GPIO_ResetBits(GPIOB,GPIO_Pin_5);//b
GPIO_ResetBits(GPIOB,GPIO_Pin_7);//c
GPIO_ResetBits(GPIOB,GPIO_Pin_8);//d
GPIO_ResetBits(GPIOB,GPIO_Pin_11);//e
GPIO_ResetBits(GPIOB,GPIO_Pin_12);//f
GPIO_SetBits(GPIOB,GPIO_Pin_13);//g
break;
}
case 1:
{
GPIO_SetBits(GPIOB,GPIO_Pin_4);//a
GPIO_ResetBits(GPIOB,GPIO_Pin_5);//b
GPIO_ResetBits(GPIOB,GPIO_Pin_7);//c
GPIO_SetBits(GPIOB,GPIO_Pin_8);//d
GPIO_SetBits(GPIOB,GPIO_Pin_11);//e
GPIO_SetBits(GPIOB,GPIO_Pin_12);//f
GPIO_SetBits(GPIOB,GPIO_Pin_13);//g
break;
}
case 2:
{
GPIO_ResetBits(GPIOB,GPIO_Pin_4);//a
GPIO_ResetBits(GPIOB,GPIO_Pin_5);//b
GPIO_SetBits(GPIOB,GPIO_Pin_7);//c
GPIO_ResetBits(GPIOB,GPIO_Pin_8);//d
GPIO_ResetBits(GPIOB,GPIO_Pin_11);//e
GPIO_SetBits(GPIOB,GPIO_Pin_12);//f
GPIO_ResetBits(GPIOB,GPIO_Pin_13);//g
break;
}
case 3:
{
GPIO_ResetBits(GPIOB,GPIO_Pin_4);//a
GPIO_ResetBits(GPIOB,GPIO_Pin_5);//b
GPIO_ResetBits(GPIOB,GPIO_Pin_7);//c
GPIO_ResetBits(GPIOB,GPIO_Pin_8);//d
GPIO_SetBits(GPIOB,GPIO_Pin_11);//e
GPIO_SetBits(GPIOB,GPIO_Pin_12);//f
GPIO_ResetBits(GPIOB,GPIO_Pin_13);//g
break;
}
case 4:
{
GPIO_SetBits(GPIOB,GPIO_Pin_4);//a
GPIO_ResetBits(GPIOB,GPIO_Pin_5);//b
GPIO_ResetBits(GPIOB,GPIO_Pin_7);//c
GPIO_SetBits(GPIOB,GPIO_Pin_8);//d
GPIO_SetBits(GPIOB,GPIO_Pin_11);//e
GPIO_ResetBits(GPIOB,GPIO_Pin_12);//f
GPIO_ResetBits(GPIOB,GPIO_Pin_13);//g
break;
}
case 5:
{
GPIO_ResetBits(GPIOB,GPIO_Pin_4);//a
GPIO_SetBits(GPIOB,GPIO_Pin_5);//b
GPIO_ResetBits(GPIOB,GPIO_Pin_7);//c
GPIO_ResetBits(GPIOB,GPIO_Pin_8);//d
GPIO_SetBits(GPIOB,GPIO_Pin_11);//e
GPIO_ResetBits(GPIOB,GPIO_Pin_12);//f
GPIO_ResetBits(GPIOB,GPIO_Pin_13);//g
break;
}
case 6:
{
GPIO_ResetBits(GPIOB,GPIO_Pin_4);//a
GPIO_SetBits(GPIOB,GPIO_Pin_5);//b
GPIO_ResetBits(GPIOB,GPIO_Pin_7);//c
GPIO_ResetBits(GPIOB,GPIO_Pin_8);//d
GPIO_ResetBits(GPIOB,GPIO_Pin_11);//e
GPIO_ResetBits(GPIOB,GPIO_Pin_12);//f
GPIO_ResetBits(GPIOB,GPIO_Pin_13);//g
break;
}
case 7:
{
GPIO_ResetBits(GPIOB,GPIO_Pin_4);//a
GPIO_ResetBits(GPIOB,GPIO_Pin_5);//b
GPIO_ResetBits(GPIOB,GPIO_Pin_7);//c
GPIO_SetBits(GPIOB,GPIO_Pin_8);//d
GPIO_SetBits(GPIOB,GPIO_Pin_11);//e
GPIO_SetBits(GPIOB,GPIO_Pin_12);//f
GPIO_SetBits(GPIOB,GPIO_Pin_13);//g
break;
}
case 8:
{
GPIO_ResetBits(GPIOB,GPIO_Pin_4);//a
GPIO_ResetBits(GPIOB,GPIO_Pin_5);//b
GPIO_ResetBits(GPIOB,GPIO_Pin_7);//c
GPIO_ResetBits(GPIOB,GPIO_Pin_8);//d
GPIO_ResetBits(GPIOB,GPIO_Pin_11);//e
GPIO_ResetBits(GPIOB,GPIO_Pin_12);//f
GPIO_ResetBits(GPIOB,GPIO_Pin_13);//g
break;
}
case 9:
{
GPIO_ResetBits(GPIOB,GPIO_Pin_4);//a
GPIO_ResetBits(GPIOB,GPIO_Pin_5);//b
GPIO_ResetBits(GPIOB,GPIO_Pin_7);//c
GPIO_ResetBits(GPIOB,GPIO_Pin_8);//d
GPIO_SetBits(GPIOB,GPIO_Pin_11);//e
GPIO_ResetBits(GPIOB,GPIO_Pin_12);//f
GPIO_ResetBits(GPIOB,GPIO_Pin_13);//g
break;
}
}
}
//
void switchInit(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6 ;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_25MHz;
GPIO_Init(GPIOE, &GPIO_InitStructure);
}
int main(void)
{
 LEDinit();
 while (1)
           {
           lightNumber(5);
           digitNumber(1);
           delay(5000);
           lightNumber(6);
           digitNumber(2);
           delay(5000);
           lightNumber(7);
           digitNumber(3);
           delay(5000);
           lightNumber(8);
           digitNumber(4);
           delay(5000);
           }
}