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

Posted 卓晴

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用MEGA328制作辉光数码管显示电路相关的知识,希望对你有一定的参考价值。

简 介: 为了驱动两个辉光数码管,供有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.2 单面快速制版PCB

1.1.2 焊接制作电路

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

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

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

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

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

1.2 下载程序

1.2.1 下载接口

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

▲ 图1.2.1 下载接口转换电路

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

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

1.2.2 下载软件

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

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

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

1.3 建立测试软件

1.3.1 建立MEGA32的工程文件

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

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

▲ 图1.3.1 工程的选项

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

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

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

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

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

 

§02 光管数码驱动电路


2.1 电路设计

2.1.1 原理图设计

AD\\Atmel\\NiXieTube\\NiXieTube.SchDoc

▲ 图2.1.1 控制原理图MCU M32

▲ 图2.1.2 输出控制电路

2.1.2 单面电路板设计

▲ 图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
//------------------------------------------------------------------------------
/*
**==============================================================================
** 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
//------------------------------------------------------------------------------
/*
**==============================================================================
** 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(以上是关于利用MEGA328制作辉光数码管显示电路的主要内容,如果未能解决你的问题,请参考以下文章

IN-12辉光数码管:俄罗斯进口的器件

辉光数码管的驱动与响应时间

增加ATMEGA328 实验电路板对外引脚

增加ATMEGA328 实验电路板对外引脚

后处理之辉光效果

iOS 开发 - 绘制辉光效果