导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→max7219驱动数码管不成功,急!!!

* 61138: max7219驱动数码管不成功,急!!!

   zz830415 
zz830415发表的帖子 

 max7219驱动数码管不成功,急!!!
很简单的原理,就是单片机带max7219,7219驱动数码管,现阶段就是想让数码管显示1,2,3就好了。我用的Keil调试程序,显示没有问题,也生成了HEX文件,但是我把HEX文件烧进单片机,数码管就是不显示啊,我用的单片机是STC89C52,程序如下,版主和大家帮个忙吧!!

#include   <reg52.h>   
/*****************************
宏定义声明
*****************************/
//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 

/*************************************************************************
管脚定义:
不同的电路板上,改变这里的定义,
*************************************************************************/
sbit LOAD = P0^1; //MAX7219    Load-Data Input:     rising edge   pin 12 
sbit DIN  = P0^0;  //MAX7219    Serial-Data Input:    rising edge   pin 1
sbit CLK  = P0^2;  //MAX7219   Serial-Clock Input:   maximum 10MHz   pin 13

/***********************************************************
函数声明
***********************************************************/
void Write_Max7219_byte(unsigned char temp);
void Write_Max7219(unsigned char address,unsigned char dat);
void Init_Max7219(void);

/***************
测试程序,
显示1~3
***************/
void main(void)
{
 unsigned char i; 
 Init_Max7219();  
 while(TRUE)
 {  
  for(i=1; i  <4; i++) 
  {
   Write_Max7219(i,i);
  }
 } 
}
/******************************************
发送一个字节的子程序:
上升沿发送数据,
MSB first
******************************************/
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;
 }
}
/**********************************************************
向寄存器中写入一个数据
先写地址,后写数据
load 上升沿锁存数据
**********************************************************/
void Write_Max7219(unsigned char address,unsigned char dat)

 LOAD = LOW;
 Write_Max7219_byte(address); 
 Write_Max7219_byte(dat);
 LOAD = HIGH;                 
}
/**********************
初始化max7219 子函数
设置工作寄存器
需要查看芯片手册
**********************/
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,  0x02);   //SCAN LIMIT 0~7 0xX0~0xX7
 Write_Max7219(INTENSITY,  0x04);   //Set Intensity   0xX0~0xXf
}



发表时间:2009年8月12日16:14:16

  
回复该帖

本主题共有 2 帖,分页:>>>>>该主题的所有内容[2]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

  74035.[详细]延时函数
摘要:首先声明我是新手。一直在学习。好像你这里缺少延时函数,所以你虽然调试通过,但显示的东西你是看不到的。不知道我说的对不对。有老师来指导一下哈......(138字)
- [gjchch][460次] 2009年8月13日

[上一篇帖子]:视频监控、多媒体终端等最佳嵌入式开发板平台--ARM9上海辰汉电子推出基于i.MX27的多媒体应用开
[下一篇帖子]:基于PB375A超低成本的U盘数据采集器设计[原创]基于PB375A超低成本的U盘数据采集器设计 B