找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3936|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

關(guān)于單片機(jī)驅(qū)動(dòng)MAX7219程序 的程序問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:70752 發(fā)表于 2015-7-4 15:16 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#include<reg51.h>
#include<intrins.h>
#define u8 unsigned char
#define u16 unsigned int

sbit DIN=P1^7;    //MAX7219  DIN串行數(shù)據(jù)輸入端
sbit CLK=P1^6;    //MAX7219  CLK 時(shí)鐘線
sbit LD=P1^5;     //MAX7219  LOAD片選端

sbit RET_813=P3^2;   //813        的6腳

void timer_ms(u8 tim)
{
  u8 i;
  while(tim--)
  {
    for(i=0;i<200;i++);   //延時(shí)1ms
  }
}

void w_max7219(u8 addr,u8 wdata)
{
   u8 j;
   u8 i;
   u8 temp;
   i=2;
  LD=0;
  while(i<16)
  {
    if(i<8)
        {
           temp=addr;  //先寫入MAX7219內(nèi)部寄存器地址,再向內(nèi)部寄存器寫入操作數(shù)值
        }
        else
        {
           temp=wdata;
        }
        for(j=0;j<8;j++)
        {
          CLK=0;
          if(temp&0x80)
          {
                    DIN=1;  //先發(fā)送數(shù)據(jù)的最高位
          }
          else
          {
                   DIN=0;
          }

          _nop_();
          CLK=1;
          _nop_();
          temp<<=1;
        }
        i=i+8;
  }
  LD=1;

}




void init_max7219()
{
  w_max7219(0x0c,0x01);  //操作方式,0x00為低功耗模式,0x01為正常操作模式
  w_max7219(0x0f,0x00);  //顯示狀態(tài),0x00為正常顯示,0x01為顯示測(cè)試
  w_max7219(0x0b,0x07);  //8位掃描顯示,取值范圍0x01~0x07
  w_max7219(0x09,0x00);  //譯碼方式,0x00為不譯碼
  w_max7219(0x0a,0x07);  //顯示亮度,取值范圍0~f

  timer_ms(2);
}

void main()
{
    u16 m;
        init_max7219();
        while(1)
        {
        //  w_max7219(0X01,0X0F);
        //  w_max7219(0X02,0X0E);
         // w_max7219(0X03,0X0D);
         // w_max7219(0X04,0X0C);
         // w_max7219(0X05,0X10);
         // w_max7219(0X06,0X50);
         // w_max7219(0X07,0XA0);
          //w_max7219(0X08,0XF0);
            m++;
            if(m>15000)
            {
                 m=0;
               
                 RET_813=!RET_813;   //看門狗工作指示燈
            }
         }

}

這個(gè)程序是用MAX219控制LED發(fā)光二極管,現(xiàn)在出現(xiàn)問題,
只要main函數(shù)中注釋掉的w_max7219(0X01,0X0F);  這種函數(shù)       如果不注釋,看門狗的工作指示燈就不亮了,也就是程序死循環(huán)了
當(dāng)注釋后,再編譯,看門狗正常閃爍,程序正常走,     所以請(qǐng)大俠幫忙看下這個(gè)7219程序是哪兒出問題了。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表