搜索
bottom↓
回复: 7

开源了!奉上双MAX7219串联驱动16位数码管的GCC驱动程序!

[复制链接]

出0入0汤圆

发表于 2006-4-28 23:50:43 | 显示全部楼层 |阅读模式
/*

*********************************************************************************************************

*                                        MAX7219驱动程序头文件  

*  

*                                         All Rights Reserved

*

*                                               V1.00

*

* File Name     : max7219.h

* Developed By  : Lv Gao Pan

* Email         : lvgaopan@gmail.com

* Target MCU    : ATMEGA16L

* Complier      : gccavr 3.4.3 + gccavrlibc 1.2.3

* Develope Date : 2005.11.18

* Latest Change : 2005.12.05

* Note          : 用于综合显示仪的双芯片串连驱动

*********************************************************************************************************

*/

#ifndef __MAX7219_H__

#define __MAX7219_H__

#include <avr/io.h>



// 寄存器地址定义

#define NO_OP                0x00

#define DECODE_MODE        0x09

#define INTENSITY        0x0a

#define SCAN_LIMIT        0x0b

#define SHUTDOWN        0x0c

#define DISP_TEST        0x0f



// 管脚定义

#define MAX7219_DIN                PA7

#define MAX7219_CLK                PD1

#define MAX7219_LOAD        PD0



#define MAX7219_DIN_PORT        PORTA

#define MAX7219_CLK_PORT        PORTD

#define MAX7219_LOAD_PORT        PORTD



// 端口操作宏定义

#define MAX7219_DIN_SET                (MAX7219_DIN_PORT |= (1<<MAX7219_DIN))

#define MAX7219_DIN_CLR                (MAX7219_DIN_PORT &= ~(1<<MAX7219_DIN))

#define MAX7219_CLK_SET                (MAX7219_CLK_PORT |= (1<<MAX7219_CLK))

#define MAX7219_CLK_CLR                (MAX7219_CLK_PORT &= ~(1<<MAX7219_CLK))

#define MAX7219_LOAD_SET        (MAX7219_LOAD_PORT |= (1<<MAX7219_LOAD))

#define MAX7219_LOAD_CLR        (MAX7219_LOAD_PORT &= ~(1<<MAX7219_LOAD))



// 函数原型

void max_init( void );

void display(unsigned char addr1,unsigned char data1,unsigned char addr2,unsigned char data2);



#endif







/*

*********************************************************************************************************

*                                           MAX7219驱动程序  

*  

*                                         All Rights Reserved

*

*                                               V1.00

*

* File Name     : max7219.c

* Developed By  : Lv Gao Pan

* Email         : lvgaopan@gmail.com

* Target MCU    : ATMEGA16L

* Complier      : gccavr 3.4.3 + gccavrlibc 1.2.3

* Develope Date : 2005.11.18

* Latest Change : 2005.12.05

* Note          : 用于综合显示仪的双芯片串连驱动

*********************************************************************************************************

*/

#include "max7219.h"



void max_init(void)

{

        unsigned char MAX7219_Loop;

        display( INTENSITY, 0x03, INTENSITY, 0x03);

        display( SCAN_LIMIT, 0x07, SCAN_LIMIT, 0x07 );

        display( DECODE_MODE, 0xff, DECODE_MODE, 0xff );

        display( SHUTDOWN, 0x01, SHUTDOWN, 0x01 );

        for( MAX7219_Loop = 0; MAX7219_Loop < 8; MAX7219_Loop++ )

        {

                display(( MAX7219_Loop + 1 ), 0x0a, ( MAX7219_Loop + 1 ), 0x0a );

        }

}

//IDDIS.PCB数码管分布示意

/*

addr2=4,addr2=3,addr2=2,addr2=1

addr2=8,addr2=7,addr2=6,addr2=5

addr1=8,addr1=7,addr1=6,addr1=5

addr1=4,addr1=3,addr1=2,addr1=1

*/

void display(unsigned char addr1,unsigned char data1,unsigned char addr2,unsigned char data2)

{

        unsigned long Send_Data;

        unsigned char Dis_Loop;

        Send_Data  = addr1;

        Send_Data <<= 8;

        Send_Data += data1;

        Send_Data <<= 8;

        Send_Data += addr2;

        Send_Data <<= 8;

        Send_Data += data2;



        MAX7219_CLK_CLR;

        MAX7219_LOAD_CLR;

        for( Dis_Loop = 0; Dis_Loop < 32; Dis_Loop++ )

        {               

                MAX7219_CLK_CLR;

                if( Send_Data & 0x80000000 )

                        MAX7219_DIN_SET;

                else

                        MAX7219_DIN_CLR;



                Send_Data <<= 1;

               

                MAX7219_CLK_SET;

        }

        MAX7219_LOAD_SET;

}

-----此内容被lvgaopan于2006-04-28,23:56:32编辑过



原理图在此

点击此处打开armok01116030.pdf




-----此内容被lvgaopan于2006-04-29,00:29:55编辑过

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2006-4-29 08:05:21 | 显示全部楼层
顶一下

出0入0汤圆

发表于 2006-4-29 09:00:58 | 显示全部楼层
感动中~~~~!





谢谢楼主~!

出0入0汤圆

发表于 2006-4-29 09:05:59 | 显示全部楼层
MAX7219以前用51的时候做过,很久了,那时价格贵,普通的产品是不敢用的。

出0入0汤圆

 楼主| 发表于 2006-4-29 12:15:44 | 显示全部楼层
现在价格也贵,不过性能很稳定,一直在用它。

出0入0汤圆

发表于 2007-8-21 15:27:13 | 显示全部楼层
新手到!!!请问该程序的主函数怎么写!!!谢谢!!急啊

出0入0汤圆

发表于 2012-4-28 19:59:03 | 显示全部楼层
学习了 谢谢分享

出0入0汤圆

发表于 2013-1-25 13:11:00 | 显示全部楼层
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 07:16

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表