原创 max7219c语言驱动程序

2006-10-20 07:45 5368 10 9 分类: MCU/ 嵌入式
//max7219 led drive program
//for 51 mcu
//designed by zhaoliang
//2005-6-12 13:52
#i nclude

/***********************************************************************/
//common part
#define  HIGH     1
#define  LOW      0
#define  TRUE      1
#define  FALSE      0
#define  ZERO      0
#define  MSB       0x80
#define  LSB       0x01
//max7219 part
#define  DECODE_MODE   0x09
#define  INTENSITY     0x0A
#define  SCAN_LIMIT    0x0B
#define  SHUT_DOWN     0x0C
#define  DISPLAY_TEST  0x0F


//pin defined
/***********************************************************************/
//change this part at different board
sbit LOAD="P1"^2; //MAX7219    Load-Data Input:    rising edge  pin 12
sbit DIN="P1"^1; //MAX7219    Serial-Data Input:   rising edge  pin 1
sbit CLK="P1"^0; //MAX7219   Serial-Clock Input:  maximum 10MHz  pin 13


//function define
/***********************************************************************/
void Write_Max7219_byte(unsigned char temp);//write max7219 a byte
void Write_Max7219(unsigned char address,unsigned char dat);//write max7219 command and data
void Init_Max7219(void);//Initize max7219


//test program display from 1~8
/***********************************************************************/
void main(void)
{
 unsigned char i;
 Init_Max7219(); 
 while(TRUE)
 { 
  for(i="1";i<9;i++) 
  {
   Write_Max7219(i,i);
  }
 }
}
/***********************************************************************/
void Write_Max7219_byte(unsigned char temp)
{
 unsigned char i;
 for (i="0";i<8;i++)     
  { 
   CLK="LOW";
     DIN=(bit)(temp&MSB);     
     temp<<=1; 
     CLK="HIGH";
   }
}
/***********************************************************************/
void Write_Max7219(unsigned char address,unsigned char dat)

 LOAD="LOW";
   Write_Max7219_byte(address);
   Write_Max7219_byte(dat);
  LOAD="HIGH";                 
}
/***********************************************************************/
void Init_Max7219(void)      
{
 Write_Max7219(SHUT_DOWN, 0x01);   //Normal Operation XXXXXXX1 Shutdown Mode   XXXXXXXX0
 Write_Max7219(DISPLAY_TEST, 0x00);   //Normal Operation XXXXXXX0 Display Test Mode XXXXXXXX1
 Write_Max7219(DECODE_MODE, 0xff);   //Decode Mode Select D7~D0 1 B decode 0 No decode
 Write_Max7219(SCAN_LIMIT, 0x07);   //SCAN LIMIT 0~7 0xX0~0xX7
 Write_Max7219(INTENSITY, 0x04);   //Set Intensity   0xX0~0xXf
}

文章评论1条评论)

登录后参与讨论

用户383150 2010-11-1 09:48

楼主,不知道能不能看到我的回复,我做了这个芯片的级联,发现有这个问题:芯片上电的时候有的情况下LED全显示,就是8.,此后再怎么初始化都无效,能不能给我看一下楼主的原理图
相关推荐阅读
zhaoliang_0801_926809075 2009-07-28 09:13
基于FPGA和avr单片机的DDS信号发生器
基于FPGA和avr单片机的DDS信号发生器1、项目简介本设计提出了一种使用经济有效的低频信号发生器的设计方法,系统可以实现各种频率各种相位的输出,可以实现ASK、FSK调制信号的输出,其他的调制信号...
zhaoliang_0801_926809075 2009-07-27 23:30
出售msp430uif usb 仿真器
电路板稍有瑕疵,背面需要跳根线,请追求完美的朋友绕到,谢谢 :)此次一共有39块PCBPCB 定价 12元 (瑕疵修改后,定价15元)成品 定价 140元(瑕疵修改后,定价150元)芯片封装:MSP4...
zhaoliang_0801_926809075 2009-07-27 23:15
开源项目-基于FPGA的等精度频率计
开源项目-基于FPGA的等精度频率计1、项目简介:这是本人06年的一个课程设计,当时做完之后,总结了一个片论文发表《电子工程师》有兴趣的朋友可以看看,论文写的比较详细。利用51单片机和FPGA控制实现...
zhaoliang_0801_926809075 2009-07-04 23:38
FPGA入门系列实验教程——实验三 LED流水灯
FPGA入门系列实验教程——实验三 LED流水灯声明:本实验教程编写的目的就是为了指导FPGA初学者轻松入门,让初学者少走些弯路,但由于版主学习FPGA时间不长,水平有限,教程中肯定会出现这样或那样的...
zhaoliang_0801_926809075 2009-07-04 23:37
FPGA入门系列实验教程——实验一 点亮LED
FPGA入门系列实验教程——实验一 点亮LED声明:本实验教程编写的目的就是为了指导FPGA初学者轻松入门,让初学者少走些弯路,但由于版主学习FPGA时间不长,水平有限,教程中肯定会出现这样或那样的错...
zhaoliang_0801_926809075 2009-07-04 23:37
FPGA入门系列实验教程——实验二 LED闪烁灯
FPGA入门系列实验教程——实验二 LED闪烁灯声明:本实验教程编写的目的就是为了指导FPGA初学者轻松入门,让初学者少走些弯路,但由于版主学习FPGA时间不长,水平有限,教程中肯定会出现这样或那样的...
我要评论
1
10
关闭 站长推荐上一条 /2 下一条