打印
[STM32F0]

求助各位大神 nucleof030直接驱动数码管怎么接线

[复制链接]
1166|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 guoxing2016 于 2016-3-20 18:53 编辑

在mbed中文网站上看到了直接驱动数码管的接线图,我是硬件零基础,现在手里有一块STM32 NUCLEO F030的板子,想直接驱动一位数码管学习一下。
但是在网上搜了好久,自己也一点都不懂,那么多针脚,都不知道该怎么跟数码管接起来。
求助各位大神,能不能点醒一下。

附上mbed驱动数码管接线图如下


我知道这个问题对于大家来说真的很低级,只是特别想学习硬件开发知识,起步太晚,基础弱得很,也从来没有玩过单片机,求助大家能不能帮我一下。

另外我手里有的数码管是共阳极的。

-------------------------------我---是---分---割---线------------------------------------------------------------------------------------------
自己试着做出来了,现在把结果放出来。
STM32-NucleoF030R8-驱动一位数码管.pdf (674.26 KB)



沙发
ayl439| | 2016-3-16 23:19 | 只看该作者
我给你解释一下,不知你能否明白
1、数码管,共阳极的话,一般8个字段,把公共极接到电源正极V(一般大于2.5V),8个字段,每个字段对应一个引脚,把某个引脚再串联一个电阻R接到地(电源负极),那个引脚对应的字段就会亮,亮度跟电压和限流电阻的大小有关系,你可以找个数码管的手册看看,一般最大电流不超过20mA,电流的计算方法是I=(V-Vled)/R。V为加的电源电压,Vled为数码管每个字段的正向导通电压,R为串的电阻。
2、单片机控制的话,如果单片机IO输出电流足够点亮LED(或者不需要LED很亮),就是用8个IO接到前面我说的地的位置,电源电压V等于单片机的电压(IO的高电平),这样IO输出高的话,对应的字段就不亮,IO输出低的话,对应的字段就亮。往往IO驱动能力不够(输出电流太小,导致数码管非常暗),这时候就要在IO和数码管(限流电阻)之间串联一个74芯片增强驱动。不嫌麻烦,用8个三极管也可以增强驱动。

使用特权

评论回复
板凳
ayl439| | 2016-3-16 23:20 | 只看该作者
自学不容易啊。。。多看看书,多动动手把,从基础知识看起,最好看看电路基础、模拟电子技术和数字电子技术,要不很多东西很难理解

使用特权

评论回复
地板
ayl439| | 2016-3-17 09:20 | 只看该作者
哦对,再看看单片机应用开发的基础书,上面数码管的问题你就非常清楚了

使用特权

评论回复
5
稳稳の幸福| | 2016-3-17 11:40 | 只看该作者
直接用IO口驱动啊,有共阳极也有共阴极,你把IO口作为IO功能的输出模式就行了,记得上拉电阻啊。

使用特权

评论回复
6
Jessicakjdsl| | 2016-3-17 13:45 | 只看该作者
电源和地在什么地方呢?

使用特权

评论回复
7
guoxing2016|  楼主 | 2016-3-17 23:02 | 只看该作者
各位亲们,我已经做出来了!!!!!!!!!!!!!

哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
代码已上传(PDF),正在审核中,通过后会附上。

哈哈哈哈哈哈哈

使用特权

评论回复
8
guoxing2016|  楼主 | 2016-3-17 23:02 | 只看该作者
本帖最后由 guoxing2016 于 2016-3-20 16:12 编辑

先把代码贴出来,以下是main.cpp
#include "mbed.h"

DigitalOut myled(LED1);
BusOut NixieTube(PC_5, PC_6, PC_7, PC_8, PC_9, PC_10, PC_11, PC_12);

int main() {
    while(1){
        for(int i = 0; i < 10; i++) {
            switch(i) {
                case 0: NixieTube = 0xC0; break;
                case 1: NixieTube = 0xF9; break;
                case 2: NixieTube = 0xA4; break;
                case 3: NixieTube = 0xB0; break;
                case 4: NixieTube = 0x99; break;
                case 5: NixieTube = 0x92; break;
                case 6: NixieTube = 0x82; break;
                case 7: NixieTube = 0xF8; break;
                case 8: NixieTube = 0x80; break;
                case 9: NixieTube = 0x90; break;
            }
            myled = !myled;
            wait(1.0);
        }
        myled = !myled;
        NixieTube = 0x7F;
        wait(0.5);
        myled = !myled;
        NixieTube = 0xFF;
        wait(0.5);
    }
}

使用特权

评论回复
9
guoxing2016|  楼主 | 2016-3-17 23:04 | 只看该作者
开发板型号:STM32 Nucleo-F030R8
编译环境:mbed
导入库文件:mbed-src
实现功能:使数码管循环显示【0,1,2,3,4,5,6,7,8,9,小数点】

开发板连接管脚图:
A        7        CN10-6(PC5)
B        6        CN10-4(PC6)
C        4        CN10-19(PC7)
D        2        CN10-2(PC8)
E        1        CN10-1(PC9)
F        9        CN7-1(PC10)
G        10        CN7-2(PC11)
。        5        CN7-3(PC12)
3或者是8连接开发板的CN5-8(AVDD)

使用特权

评论回复
10
guoxing2016|  楼主 | 2016-3-17 23:10 | 只看该作者

使用特权

评论回复
11
guoxing2016|  楼主 | 2016-3-17 23:11 | 只看该作者

使用特权

评论回复
12
guoxing2016|  楼主 | 2016-3-17 23:14 | 只看该作者

使用特权

评论回复
13
guoxing2016|  楼主 | 2016-3-18 00:35 | 只看该作者
大家接数码管的时候别忘记接限流电阻哈,虽然这是个常识,但是话说我前几天才知道。零基础玩电路最重要的还得是谨慎,我现在都是先拿电池确认电路没问题了才敢接板。(前几天玩着玩着闻到一股焦糊味儿,一看电线都冒烟儿了,短路...)

使用特权

评论回复
14
guoxing2016|  楼主 | 2016-3-18 11:16 | 只看该作者
下一步的目标是:学习串口编程,实现用电脑键盘控制数码管显示。加油!

使用特权

评论回复
15
guoxing2016|  楼主 | 2016-3-20 18:51 | 只看该作者
前几天实现了简单的驱动数码管,今天试着完成了“使用电脑键盘控制数码管的显示”,主要是学习开发板的串口通信功能。

例程名称        :使用PC键盘控制一位数码管的显示
开发板型号        :STM32 Nucleo-F030R8
编译环境        :mbed (网址:https://developer.mbed.org/)
导入库文件        :mbed-src
终端串口软件        :SecureCRT
实现功能                :按下键盘数字键【0,1,2,3,4,5,6,7,8,9,小数点】,
                 使数码管显示对应数字。

1. 以下是main.cpp
#include "mbed.h"
//------------------------------------
// Hyperterminal configuration
// 9600 bauds, 8-bit data, no parity
//------------------------------------
Serial pc(SERIAL_TX, SERIAL_RX);
DigitalOut myled(LED1);
BusOut NixieTube(PC_5, PC_6, PC_7, PC_8, PC_9, PC_10, PC_11, PC_12);
void echoUsart()
{
    unsigned char cGot = pc.getc();
    pc.printf("%c is received!\n\r", cGot);
    pc.printf("ASCII %d is received!\n\r", cGot);
    switch(cGot) {
        case '0': NixieTube = 0xC0; break;
        case '1': NixieTube = 0xF9; break;
        case '2': NixieTube = 0xA4; break;
        case '3': NixieTube = 0xB0; break;
        case '4': NixieTube = 0x99; break;
        case '5': NixieTube = 0x92; break;
        case '6': NixieTube = 0x82; break;
        case '7': NixieTube = 0xF8; break;
        case '8': NixieTube = 0x80; break;
        case '9': NixieTube = 0x90; break;
        case '.': NixieTube = 0x7F; break;
    }
}
int main()
{
    pc.attach(&echoUsart, SerialBase::RxIrq);
    while(1) {
        wait(0.5);
        myled = !myled;
    }
}

2. 开发板与数码管的连接
    连接方式与我的上一个例程保持不变。
        数码管段位        数码管管脚        开发板管脚
        A                                  7                                 CN10-6 (PC5)
        B                                 6                                 CN10-4 (PC6)
        C                                 4                                 CN10-19(PC7)
        D                                 2                                 CN10-2 (PC8)
        E                                  1                                 CN10-1 (PC9)
        F                                 9                                 CN7-1  (PC10)
        G                                 10                                CN7-2  (PC11)
        。                                5                                 CN7-3  (PC12)
       3/8                               CN5-8  (AVDD)

3. 终端串口软件截图(SecureCRT)

4. 最后是我亲爱的板子

5. PDF
STM32-NucleoF030R8-PC键盘控制数码管显示.pdf (766.44 KB)

欢迎大家交流。

使用特权

评论回复
16
guoxing2016|  楼主 | 2016-3-20 19:16 | 只看该作者
但是现在还有一个问题,我本来想用键盘方向键控制数码管的,比如向上键使数码管正在显示的数字加一,但是测试发现上下左右键收到的ASCII码值都是27啊,与ESC相同。这是什么情况???有没有了解的朋友?

使用特权

评论回复
17
拉克丝| | 2016-3-20 20:24 | 只看该作者
数码管实际上也是LED,楼主该看看是共阳还是共阴极的

使用特权

评论回复
18
598330983| | 2016-4-6 11:33 | 只看该作者
把7段形码,做个数组,放数组里,单独来个显示程序

使用特权

评论回复
19
598330983| | 2016-4-6 11:33 | 只看该作者
如果你实在搞不好,这样吧,你用MAX7219驱动,这个芯片可以驱动8位的LED数码管。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

51

帖子

1

粉丝