利用MEGA328制作辉光数码管显示电路

举报
tsinghuazhuoqing 发表于 2022/02/04 00:41:01 2022/02/04
【摘要】 简 介: 为了驱动两个辉光数码管,供有20个数字,使用MEGA32 MCU制作了一个秒表运行驱动电路板。 关键词: 辉光数码管,IN 12,MEGA32 ...

简 介: 为了驱动两个辉光数码管,供有20个数字,使用MEGA32 MCU制作了一个秒表运行驱动电路板。

关键词 辉光数码管IN 12MEGA32

MEGA32测试电路
目 录
Contents
测试MEGA32的
MCU电路
下载程序
建立测试软件
辉光管数码驱动电路
电路设计
软件设计
运行情况
制作总结

 

§01 MEGA32测试电路


  面在IN-12辉光数码管:俄罗斯进口的器件中测辉光数码管的显示性能。在 辉光 辉光数码管的驱动与响应时间测试了利用13001晶体管驱动辉光管电路。

1.1 测试MEGA32的MCU电路1

  设计制作MEGA32的测试电路,是但原来的基于MEGA32的开发工具链进行测试。

1.1.1 测试电路设计

▲ 图1.1.1 原理电路图

▲ 图1.1.1 原理电路图

▲ 图1.1.2 单面快速制版PCB

▲ 图1.1.2 单面快速制版PCB

1.1.2 焊接制作电路

  一分钟后的到电路板,进行焊接组装成测试电路板。

  提供+5V工作电源,工作电流为22mA。

▲ 图1.1.3 焊接后的测试电路板

▲ 图1.1.3 焊接后的测试电路板

  测量晶体管脚的MCU的晶振高频信号。由于这个芯片是已经编程的芯片,内部应该具有BOOTLOADER的程序。ATMEGA328实验电路板

▲ 图1.1.4 测量晶体振荡频率信号

▲ 图1.1.4 测量晶体振荡频率信号

1.2 下载程序

1.2.1 下载接口

  下面是下载接口电平转换电路。根据现在的定义,可以直接按照顺序连接到现在的电路板上。

▲ 图1.2.1 下载接口转换电路

▲ 图1.2.1 下载接口转换电路

  使用接口下载器连接UART1完成程序下载:

▲ 图1.2.2 使用接口下载器连接UART1完成程序下载

▲ 图1.2.2 使用接口下载器连接UART1完成程序下载

1.2.2 下载软件

  使用MEGA328 DOWNLOAD PROGRAM:8328完成程序下载。

下载参数设置:
端口:COM1
波特率:115200
MCU:MEGA328

▲ 图1.2.3  下载程序完成程序下载

▲ 图1.2.3 下载程序完成程序下载

1.3 建立测试软件

1.3.1 建立MEGA32的工程文件

  建立新的MEGA32的工程文件。所在的目录为:

D:\zhuoqing\window\Atmel\test\2022\NIXIEMEGA32

▲ 图1.3.1 工程的选项

▲ 图1.3.1 工程的选项

  将下面的例程代码拷贝到所建的MEGA328工程文件中。

D:\zhuoqing\window\Atmel\UserCode\M32

▲ 图1.3.2 利用ICCV7构建MEGA328的开发工程

▲ 图1.3.2 利用ICCV7构建MEGA328的开发工程

  修改定义在control.h中的 LED 端口之后,重新编译下载执行。电路板出现闪烁过程。

▲ 图1.3.3  下载之后测试程序在闪烁

▲ 图1.3.3 下载之后测试程序在闪烁

 

§02 光管数码驱动电路


2.1 电路设计

2.1.1 原理图设计

AD\Atmel\NiXieTube\NiXieTube.SchDoc

▲ 图2.1.1 控制原理图MCU M32

▲ 图2.1.1 控制原理图MCU M32

▲ 图2.1.2 输出控制电路

▲ 图2.1.2 输出控制电路

2.1.2 单面电路板设计

▲ 图2.1.3 单面板的PCB的设计

▲ 图2.1.3 单面板的PCB的设计

2.2 软件设计

D:\zhuoqing\window\Atmel\test\2022\NIXIEMEGA32\MAIN.C

/*
**==============================================================================
** MAIN.C :                               -- by Dr. ZhuoQing, 2014-2-6
**
** Description:
**     
**==============================================================================
*/

//------------------------------------------------------------------------------
int putchar(char c) {
    SendChar(c);                                // Only send the character from U
    return c;
} 

//------------------------------------------------------------------------------
void main(void) {
    unsigned int nCount;
    unsigned char ucChar;
    unsigned int nIncCount;
    int nNumber;
    int nShowNumber;
    
    //--------------------------------------------------------------------------
    Mega32Init();                               // Initialize MCU
    ControlInit();                              // Initialize control 
    CommandInit();
    
    //--------------------------------------------------------------------------
    cprint("Test MEGA32.  -- by Dr.ZHUOQING.\r\n");
    nCount = 0;
    nIncCount = 0;
    nNumber = 0;
    
    //--------------------------------------------------------------------------
    for(;;) {
        if(nCount & 0x100) ON(LED);
        else OFF(LED);
        nCount ++;
        
        //----------------------------------------------------------------------
        if(++nIncCount >= 100) {
            nIncCount = 0;
            nNumber ++;
            if(nNumber >= 100) nNumber = 0;
            
            nShowNumber = 1 << (nNumber/10);
            SetNum1(nShowNumber);
            nShowNumber = 1 << (nNumber%10);
            SetNum2(nShowNumber);
        }
        
        //----------------------------------------------------------------------
        WaitTime(1);
        
        //----------------------------------------------------------------------
        if(CAN_RECE) {
            ReceChar(&ucChar);
            SendChar(ucChar);
            ProcSerial(ucChar);
        }
        
        //----------------------------------------------------------------------
    }    
    
}

//------------------------------------------------------------------------------

//==============================================================================
//             END OF THE FILE : MAIN.C
//------------------------------------------------------------------------------

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
/*
**==============================================================================
** CONTROL.H:             -- by Dr. ZhuoQing, 2014-2-6
**
**  Description:
**
**==============================================================================
*/
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//==============================================================================
//			PORT DEFINITION
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void ControlInit(void);

//------------------------------------------------------------------------------
void SetNum1(int nNumber);
void SetNum2(int nNumber);

//==============================================================================
//             END OF THE FILE : CONTROL.H
//------------------------------------------------------------------------------

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
/*
**==============================================================================
** CONTROL.C:             -- by Dr. ZhuoQing, 2014-2-6
**
**==============================================================================
*/

//------------------------------------------------------------------------------

//==============================================================================
//                CONTROL FUNCTION
//------------------------------------------------------------------------------
void ControlInit(void) {
    OFF(LED);
    OUT(LED);

    OFF(TN1);
    OUT(TN1);
    OFF(TN2);
    OUT(TN2);
    OFF(TN3);
    OUT(TN3);
    OFF(TN4);
    OUT(TN4);
    OFF(TN5);
    OUT(TN5);
    OFF(TN6);
    OUT(TN6);
    OFF(TN7);
    OUT(TN7);
    OFF(TN8);
    OUT(TN8);
    OFF(TN9);
    OUT(TN9);
    OFF(TN10);
    OUT(TN10);
    OFF(TN11);
    OUT(TN11);
    OFF(TN12);
    OUT(TN12);
    OFF(TN13);
    OUT(TN13);
    OFF(TN14);
    OUT(TN14);
    OFF(TN15);
    OUT(TN15);
    OFF(TN16);
    OUT(TN16);
    OFF(TN17);
    OUT(TN17);
    OFF(TN18);
    OUT(TN18);
    OFF(TN19);
    OUT(TN19);
    OFF(TN20);
    OUT(TN20);
    OFF(TN21);
    OUT(TN21);
    OFF(TN22);
    OUT(TN22);
    OFF(TN23);
    OUT(TN23);
    OFF(TN24);
    OUT(TN24);   
}

//------------------------------------------------------------------------------
void SetNum1(int nNumber) {
    if(nNumber & 0x1)       ON(TN1);
    else OFF(TN1);
    if(nNumber & 0x2)       ON(TN2);
    else OFF(TN2);
    if(nNumber & 0x4)       ON(TN3);
    else OFF(TN3);
    if(nNumber & 0x8)       ON(TN4);
    else OFF(TN4);
    if(nNumber & 0x10)       ON(TN5);
    else OFF(TN5);
    if(nNumber & 0x20)       ON(TN6);
    else OFF(TN6);
    if(nNumber & 0x40)       ON(TN7);
    else OFF(TN7);
    if(nNumber & 0x80)       ON(TN8);
    else OFF(TN8);
    if(nNumber & 0x100)       ON(TN9);
    else OFF(TN9);
    if(nNumber & 0x200)       ON(TN10);
    else OFF(TN10);
    if(nNumber & 0x400)       ON(TN11);
    else OFF(TN11);

}

//------------------------------------------------------------------------------
void SetNum2(int nNumber) {
    if(nNumber & 0x1)       ON(TN12);
    else OFF(TN12);
    if(nNumber & 0x2)       ON(TN13);
    else OFF(TN13);
    if(nNumber & 0x4)       ON(TN14);
    else OFF(TN14);
    if(nNumber & 0x8)       ON(TN15);
    else OFF(TN15);
    if(nNumber & 0x10)      ON(TN16);
    else OFF(TN16);
    if(nNumber & 0x20)      ON(TN17);
    else OFF(TN17);
    if(nNumber & 0x40)       ON(TN18);
    else OFF(TN18);
    if(nNumber & 0x80)       ON(TN19);
    else OFF(TN19);
    if(nNumber & 0x100)       ON(TN20);
    else OFF(TN20);
    if(nNumber & 0x200)       ON(TN21);
    else OFF(TN21);
    if(nNumber & 0x400)       ON(TN22);
    else OFF(TN22);
            
}

//==============================================================================
//                END OF THE FILE : CONTROL.C
//------------------------------------------------------------------------------

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123

2.3 运行情况

▲ 图2.2.1  辉光管运行情况

▲ 图2.2.1 辉光管运行情况

 

作总结 ※


  了驱动两个辉光数码管,供有20个数字,使用MEGA32 MCU制作了一个秒表运行驱动电路板。


■ 相关文献链接:

● 相关图表链接:


  1. 测试电路板AD工程文件:AD\Atmel\NiXieTube\NiXieTube.SchDoc ↩︎

文章来源: zhuoqing.blog.csdn.net,作者:卓晴,版权归原作者所有,如需转载,请联系作者。

原文链接:zhuoqing.blog.csdn.net/article/details/122769832

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。