利用MEGA328制作辉光数码管显示电路
Posted 卓晴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用MEGA328制作辉光数码管显示电路相关的知识,希望对你有一定的参考价值。
简 介: 为了驱动两个辉光数码管,供有20个数字,使用MEGA32 MCU制作了一个秒表运行驱动电路板。
关键词
: 辉光数码管,IN 12,MEGA32
§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制作辉光数码管显示电路的主要内容,如果未能解决你的问题,请参考以下文章