跪求MAX7219驱动数码管的时钟代码

RT

void init_max7219()

{

  w_max7219(0x0a,0x07);  //显示亮度,取值范围0~f

  w_max7219(0x0b,0x07);  //8位扫描显示,取值范围0x01~0x07

  w_max7219(0x09,0x00);  //译码方式,0x00为不译码,0xff为译码

  w_max7219(0x0c,0x01);  //操作方式,0x00为低功耗模式,0x01为正常操作模式

  w_max7219(0x0f,0x00);  //显示状态,0x00为正常显示,0x01为显示测试

  timer_ms(2);

}


/*********************************************************************************************

函数名称:w_max7219

函数功能:向MAX7219写入数据

入口参数:addr MAX7219内部寄存器地址,wdata 写入内部寄存器的操作数值

出口参数:

其    å®ƒï¼š

*********************************************************************************************/

void w_max7219(unsigned char addr,unsigned char wdata)

{

  unsigned int temp,i=1,j,k;

  LD=0;

  while(i<16)

  {

    if(i<8) temp=addr;  //先写入MAX7219内部寄存器地址,再向内部寄存器写入操作数值

else temp=wdata;

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

{

 CLK=0;

 if((temp&0x80)==0x80) DIN=1;  //先发送数据的最高位

 else DIN=0;

      for(k=5;k>0;k--);  //时钟频率高的单片机需曾加延时时间,此处为12MHz ,k=5

 CLK=1;

      for(k=5;k>0;k--);

 temp<<=1;  

}

i+=8;

  }

  LD=1;

}


/*-------------------------------------------------------------------------------------------

追问

你的这个不完整啊 好几个错误和警告 哥哥

追答

这只是MAX7219的初始化个写数据代码,剩下的就是你自己要怎么操作了啊,这没必要再贴了吧

追问

大哥求贴全 有太多的东西不懂啊
顺便求大哥帮个忙 有头文件的话请顺便把头文件的东西也复制出来吧

追答

#include
//#define uint unsigned int
//#define uchar unsigned char
unsigned int i;
sbit CLK=P2^2; //MAX7219时钟信号线
sbit LD=P2^1; //数据加载线
sbit DIN=P2^0; //数据输入线
unsigned char code num[]={0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b,
0x77,0x1f,0x4e,0x3d,0x01,0x00};
void w_max7219(unsigned char addr,unsigned char wdata);
void init_max7219(); //MAX7219
void timer_ms(unsigned char tim);

unsigned char a,b;
//unsigned char num[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,}; //共阳
void main(){
while(1){
init_max7219(); //MAX7219初始化函数
w_max7219(0x01,num[1]); //向MAX7219
w_max7219(0x02,num[2]);
w_max7219(0x03,num[3]);
w_max7219(0x04,num[4]);
w_max7219(0x05,num[5]);
w_max7219(0x06,num[6]);
w_max7219(0x07,num[7]);
w_max7219(0x08,num[8]);

}
}

void init_max7219()
{
w_max7219(0x0a,0x07);
w_max7219(0x0b,0x07);
w_max7219(0x09,0x00);
w_max7219(0x0c,0x01);
w_max7219(0x0f,0x00);
timer_ms(2);
}

/*********************************************************************************************
函数名称:w_max7219

*********************************************************************************************/
void w_max7219(unsigned char addr,unsigned char wdata)
{
unsigned int temp,i=1,j,k;
LD=0;
while(i0;k--);
CLK=1;
for(k=5;k>0;k--);
temp<<=1;
}
i+=8;
}
LD=1;
}

/*-------------------------------------------------------------------------------------------
函数名称: timer_ms
函数说明: 1ms延时子程序

------------------------------------------------------------------------------------------*/

void timer_ms(unsigned char tim)
{
unsigned char i;
while(tim--)
{
for(i=0;i<200;i++); //延时1ms
}
}

追问

大哥 #include 这个头文件里面内容是什么呀

追答

标准51的东西,汗

追问

大哥 这个头文件在哪里得呀 我找不到

追答

keil自带,不用你管,只要用就可以了

追问

我的KEIL没有reg52.h 大哥你能发给我吗 我扣442877642

温馨提示:内容为网友见解,仅供参考
无其他回答

跪求MAX7219驱动数码管的时钟代码
w_max7219(0x09,0x00); \/\/译码方式,0x00为不译码,0xff为译码 w_max7219(0x0c,0x01); \/\/操作方式,0x00为低功耗模式,0x01为正常操作模式 w_max7219(0x0f,0x00); \/\/显示状态,0x00为正常显示,0x01为显示测试 timer_ms(2);} \/ 函数名称:w_max7219 函数功能:向MAX7219写入数据 ...

MAX7219驱动数码管为共阴还是共阳
共阴数码管,但不是常规编码,其编码规则如下:uchar code seg[]={0x00,0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b,}\/\/空白,0~9

用7219驱动数码管显示,为什么只能当开电源瞬间时能够显示输入的数据...
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 void Write_Ds1302_byte(unsigned char temp);void Write_Ds1302( unsigned char ad...

MAX7219驱动数码管无法正常显示
void Init_Max7219(void){ Write_Max7219(SHUT_DOWN, 0x01); \/\/设置掉电模式 Write_Max7219(DISPLAY_TEST, 0x00); \/\/设置不工作寄存器 Write_Max7219(DECODE_MODE, 0x09); \/\/设置编码模式 Write_Max7219(SCAN_LIMIT, 0x06); \/\/扫描控制寄存器 Write_Max7219(INTENSITY, 0x04); ...

max7219数码管小数点点不上
{ max7219_send(j,0xf8);\/\/0x08无小数点,0xf8有小数点 HAL_Delay(100);} for(j=1;j<9;j++){ max7219_send(j,0x0f);\/\/清屏,0xff会显示小点 HAL_Delay(100);} \/* USER CODE END WHILE *\/ for(j=1;j<9;j++){ max7219_send(j,j);HAL_Delay(500);} uint8_t max7219_...

四位一体数码管各位数字显示怎么实现单独控制?求解。需要什么芯片?_百度...
MAX7219可以驱动4个或8个数码管,下面是一个驱动4个数码管的连接图:```MAX7219 数码管1 数码管2 数码管3 数码管4 DIN ---| | | | | CLK ---| | | | | CS\/LOAD ---| | | | | GND ---| | | | | VCC ---...

用51单片机连接max7219芯片做秒计时器,求帮看下程序
在时钟上升沿时数据被载入内部的16位寄存器。sbitpinLOAD= P3^1;\/\/LOAD (MAX7219) 载入数据。连续数据的后16位在LOAD端的上升沿时被锁定。sbitpinCLK= P3^2;\/\/在时钟的上升沿, 数据移入内部移位寄存器。 下降沿时, 数据从DOUT端输出。uchar codeLEDcode[]= { 0x7e, 0x30, 0x6d, 0x79, ...

急!!!max7219驱动数码管问什么会闪烁不停?各种方法都试过了,没效果...
我这有7219的正确模块程序,网上也大把的有,你先把程序有问题的可能性排除掉,那就可以考虑硬件了。我现在在用7219驱动4个数码管,很正常,我认为程序的问题可能性大!因为硬件就连接几个单片机的端口,调试思路如下:烧入正确测试程序,如显示静态的1234等等(网上下载程序);软件排除后,检查7219与...

STC89C52控制MAX7219驱动数码管无法正常显示
如果在仿真是正确的话,会怀疑板子线路,程序是不会跑错的,在锁存数据时加一段延时吧。让数据稳定。参考资料:MS

max7219能否同时驱动两块液晶,一块是5位数码管,另一块是3位数码管?
答:max7219具有亮度控制功能,不知道你注意到了没有,他是通过+VDD和ISET之间接一个电阻来提高段电流的,最小值为9.53K,设定段电流为40mA. 显示亮度还可以通过亮度寄存器来控制,数字控制显示亮度是通过亮度寄存器的低四位来控制的脉宽调制器来控制。

相似回答