永发信息网

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

答案:1  悬赏:20  手机版
解决时间 2021-03-23 08:30
  • 提问者网友:嗝是迷路的屁
  • 2021-03-22 15:26
跪求MAX7219驱动数码管的时钟代码
最佳答案
  • 五星知识达人网友:人類模型
  • 2021-03-22 16:37

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);
}



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;
}



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;
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--);
CLK=1;
for(k=5;k>0;k--);
temp<<=1;
}
i+=8;
}
LD=1;
}



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
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯