stm32单个数码显示
大家在使用是注意引脚接线,之前把引脚对错了搞了好久才把想要的效果显示出来
硬件 | 最小系统stm32f103ct86 |
---|---|
软件 | keil 、j-link下载器’ |
一.数码管分类
数码管也称LED数码管,不同行业人士对数码管的称呼不一样,其实都是同样的产品。
按发光二极管单元连接方式可分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮
1.共阴数码管
对于共阴极数码管来说,当某个发光二极管的阳极为高电平时,发光二极管点亮,相应的段被显示。同样,共阳极数码管的阳极连接在一起,公共阳极接+5V,当某个发光二极管的阴极接低电平时,该发光二极管被点亮,相应的段被显示
2.共阳数码管
共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮
数码管引脚图
*j引脚接线 | PA0 - A | PA1 - B | PA2 - C | PA3 - D | PA4 - E | PA5 - F |PA6 - G |PA7 - DP |
二.代码部分
#ifndef _SMG2_H_
#define _SMG2_H_
#include "stm32f10x.h"
//unsigned char code smgduan1[] ={ 0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8,0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e};//共阳数码管
//unsigned char code smgduan2[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//共阴数码管
void SMG_GPIO_Config(void);
void SMG_Display(void);
#endif
//这里我是已共阴数码管为例
#include "smg2.h"
#include "stm32f10x.h"
#include "delay.h"
u8 const smg_data[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//共阴数码管
void SMG_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_SetBits(GPIOA, GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7); // turn off all led
}
void SMG_Display(void)
{
u8 i;
for(i=0;i<16;i++)
{
GPIO_Write(GPIOA,smg_data[i]);
delay_ms(1000);
}
}
#include<stdio.h>
#include "stm32f10x.h"
#include"delay.h"
#include "smg2.h"
int main(void)
{
SMG_GPIO_Config();
while(1)
{
SMG_Display();
}
}