ATmega16控制MAX7219驱动数码管

ATmega16控制MAX7219驱动数码管,提供源码,原理图,焊接实物图等。链接见文末。
这里写图片描述

这里写图片描述

原理图

这里写图片描述

源码

MAX7219.H

/**********************************************************
* 文  件  名 : MAX7219.H 
* 描      述 : MAX7219驱动包程序 
* 创  建  人 : 夏玉峰  
* 单      位 : 佳木斯大学 信息电子技术学院 电子协会 
* 日      期 : 2012.9.30
* 开 发 环 境: ICCAVR 7.22 ATmega16
* 邮      箱 : xiayufeng90520@163.com
* 版  本  号 : 1.00
**********************************************************/
#ifndef _MAX7219_H_
#define _MAX7219_H_

#include <iom16v.h>
#include <macros.h>

//功能寄存器宏定义
#define DECODEMODE   0X09     //译码控制寄存器地址
#define INTENSITY    0X0A     //亮度控制寄存器地址
#define SCANLIMIT    0X0B     //扫描界限寄存器地址
#define SHUTDOWN     0X0C     //关断模式寄存器地址
#define DISPTEST     0X0F     //测试控制寄存器地址
//外部可调用函数定义
void MAX7219_Write(unsigned char addr, unsigned char dat);
void MAX719_Init(void);

#endif

MAX7219.C

/**********************************************************
* 文  件  名 : MAX7219.c 
* 描      述 : MAX7219驱动包程序 
* 创  建  人 : 夏玉峰  
* 单      位 : 佳木斯大学 信息电子技术学院 电子协会 
* 日      期 : 2012.9.30
* 开 发 环 境: ICCAVR 7.22  ATmega16
* 邮      箱 : xiayufeng90520@163.com
* 版  本  号 : 1.00
**********************************************************/

#include "max7219.h"

/**************************************************************
** 函数名称: void SPI_Init(void) 
** 功能描述: SPI初始化
** 输   入: 无
** 全局变量: 无
** 调用模块: 无
** 说    明:
** 注    意:
**************************************************************/
void SPI_Init(void) 
{
    DDRB=0xB0;   //选通7219
    SPCR=0x51;   //spi设置
}
/**************************************************************
** 函数名称: void MAX7219_WriteByte(unsigned char date)
** 功能描述: 向MAX7219写一个字节
** 输   入: unsigned char date 字节内容
** 全局变量: 无
** 调用模块: 无
** 说    明:
** 注    意:
**************************************************************/
void MAX7219_WriteByte(unsigned char date)
{
    SPDR = date;                    /* 启动数据传输 */
    while (!(SPSR & (1<<SPIF)));/* 等待传输结束 */
}
/**************************************************************
** 函数名称: void MAX7219_Write(unsigned char addr, unsigned char dat)
** 功能描述: 向MAX7219写指令
** 输   入: unsigned char addr  地址 
             unsigned char dat   数据
** 全局变量: 无
** 调用模块: 无
** 说    明:
** 注    意:
**************************************************************/
void MAX7219_Write(unsigned char addr, unsigned char dat)
{
     PORTB = 0X00;
     MAX7219_WriteByte(addr);  //选择寄存器地址
     MAX7219_WriteByte(dat);   //选择让芯片执行命令
     PORTB = 0X10;
}

/**************************************************************
** 函数名称: void MAX7219_Init(void)  
** 功能描述: MAX7219初始化
** 输   入: 无
** 全局变量: 无
** 调用模块: 无
** 说    明:
** 注    意:
**************************************************************/
void MAX7219_Init(void)      
{ 
    SPI_Init();                      //SPI功能初始化
    MAX7219_Write(SHUTDOWN, 0x01);   //关断模式寄存器;关断状态,最低位D0=0;正常状态,最低位D0=1
    MAX7219_Write(DISPTEST, 0x00);   //显示测试寄存器;测试状态,最低位D0=1,各位显示全亮;正常工作状态,最低位D0=1
    MAX7219_Write(DECODEMODE, 0xff); //译码控制寄存器;0XFF,全译码
    MAX7219_Write(SCANLIMIT, 0x07);  //扫描界限寄存器;设置显示的LED的个数(1~8),如设置为0xX4时,LED 0~5显示
    MAX7219_Write(INTENSITY, 0x08);  //亮度控制寄存器;共有16级可选择,用于设置LED的显示亮度,0X00-0X0F
}

下载链接

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值