欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 總是在第46行 max7219_echo(unsigned char bw,sw,gw,dw); [打印本頁(yè)]

作者: 230157    時(shí)間: 2019-7-26 10:19
標(biāo)題: 總是在第46行 max7219_echo(unsigned char bw,sw,gw,dw);
#include<reg51.h>
#define uchar unsigned char

//地址定義
#define adr_bit_1 0x01        //顯示數(shù)據(jù)1的寄存器地址
#define adr_bit_2 0x02        //顯示數(shù)據(jù)2的寄存器地址
#define adr_bit_3 0x03        //顯示數(shù)據(jù)3的寄存器地址
#define adr_bit_4 0x04        //顯示數(shù)據(jù)4的寄存器地址
#define adr_bitrans_mode  0x09 //譯碼方式寄存器的地址
#define adr_light_con  0x0a //亮度寄存器
#define adr_scan_count 0x0b  //掃描界線寄存器
#define adr_close 0x0c                 //掉電控制寄存器
#define adr_glint_con 0x0d         //閃爍控制寄存器
#define adr_show_test 0x0f         //顯示測(cè)試寄存器

  //管腳定義
sbit jia=P1^0;
sbit jian=P1^1;
sbit max7219_pin_LOAD=P2^0;
sbit max7219_pin_CLK=P2^1;
sbit max7219_pin_DIN=P2^2;
sbit max7219_pin_RST=P2^3;

//函數(shù)聲明
void shuchu(unsigned char B );        //顯示輸出和電壓調(diào)節(jié)
void chaoshi_2s();                                //超時(shí)2s判斷子程序
void xd_delay();      
void  max7219_reset();                        //復(fù)位
void  max7219_init();                         //初始化控制寄存器
void  max7219_echo(unsigned char bw,sw,gw,dw);          //數(shù)據(jù)寄存器
void  max7219_send_data(unsigned char addr,da);          //完成一次寄存器的寫(xiě)操作
void  max7219_delay(void);

//uchar a[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

void main()
{
char timer=0;
uchar bw=0,sw=0,gw=5,dw=0;
uchar B;
//初始化
B=50;
P0=B;
max7219_reset();   //復(fù)位
max7219_init();           //初始化控制寄存器
max7219_echo(uchar bw,sw,gw,dw); //數(shù)據(jù)寄存器顯示
max7219_send_data(uchar addr,da); //完成一次寄存器的寫(xiě)操作

chaxun: if(P1==0xff)         //判斷是是否有鍵按下
{
  xd_delay();
  goto chaxun;
}
else
{   
  if(jia==0)                  //判斷是否按下+鍵
   {
    if(P0==0xff)   //輸出已為最大值
   goto chaxun;
  else                                  //未達(dá)最大值
   {
    chaoshi_2s();  //返回一個(gè) timer判斷
    if(timer==32)        //是否超過(guò)按鍵超過(guò)2s
    {
     chang_jia: v++;
     shuchujia_0.1v(char B);
     if(P0==0xff)                 //輸出已為最大值
      goto chaxun;
     else                                  //未達(dá)最大值
     {   if(jia==0)                         //判斷是否按下+鍵
      {         //xd_delay();
        goto chang_jia;
        }
       else
        goto chaxun;
       }
      }
      else
      {          v++;
       shuchujia_0.1v(uchar B);
       goto chaxun;
      }
     }
    }
    if(jian==0)                         //按下—鍵
    {  if(P0==0)                 //輸出已為最小值
      goto chaxun;
     else                           //已達(dá)最小值
     {        chaoshi_2s();        //返回一個(gè)判斷值timer
      if(timer==32)        //是否超過(guò)按鍵超過(guò)2s
      {        chang_jian: v--;
       shuchujian_0.1v(uchar B);
       if(P0==0)                //輸出已為最小值
        goto chaxun;
        else                  //未達(dá)最小值
        {        if(jian==0)         //判斷按下是-鍵
          {                //xd_delay();
            goto chang_jian;
          }
         else
          goto chaxun;
         }
        }
        else
        {
         v--;
         shuchujian_0.1v(uchar B)
         goto chaxun;
        }
       }
      }
     }
    }
void shuchu(uchar B)          //修改顯示數(shù)值及電壓輸出
{          //輸出電壓改變
P0=B;
//顯示改變
bw=B/1000;
sw=B%1000/100;
gw=B%1000%100/10+0x80;
dw=B%10;
/*bw=a[bw];sw=a[sw];gw=a[gw]+0x80;        dw=a[dw];*/
max7219_echo(unsigned char bw,sw,gw,dw);  //數(shù)據(jù)寄存器顯示
max7219_send_data(unsigned char addr,da);        //完成一次寄存器的寫(xiě)操作
}
void chaoshi_2s()                //查詢超2s子程序
{ TMOD=0x01;
  TH0=0xff;
TL0=0xff;
TR0=1;
while(jia==0||jian==0)
{ while(!TF0);                        //定時(shí)一次未到空等待
  timer++;
  TH0=0xff;                //重新裝入數(shù)值
  TL0=0xff;
  if(timer==32)
   break;
  }
}
//延時(shí)消抖
void xd_delay()
{         uchar i;
  for(i=0;i<2000;i++);
}
///完成max7219的復(fù)位
void  max7219_reset()
{  uchar i
  max7219_pin_RST=0;
  for(i=0;i<125;i++)
   max7219_delay();
  max7219_pin_RST=1;
  for(i=0;i<125;i++)
   max7219_delay();
    max7219_pin_RST=0;
    for(i=0;i<125;i++)
     max7219_delay();
}
//通過(guò)寫(xiě)控制寄存器,完成max7219的初始化
void  max7219_init()
{   max7219_reset();
   max7219_send_data(addr_scan_count,0x04);
   max7219_send_data(addr_light_con,0x80);
    max7219_send_data(addr_trans_mode,0xff);
     max7219_send_data(addr_close,0x01);
}
//入口參數(shù) bw,sw,gw,dw
//送8位顯示數(shù)據(jù)到顯示寄存器
void  max7219_echo(unsigned char bw,sw,gw,dw)
{   max7219_send_data(addr_bit_1,bw);
max7219_send_data(addr_bit_2,sw);
max7219_send_data(addr_bit_3,gw);
max7219_send_data(addr_bit_4,dw);
}
//入口地址:addr寄存器地址,da寄存器設(shè)置值
//把設(shè)置值寫(xiě)入對(duì)應(yīng)的寄存器中
void max7219_send_data(unsigned char addr,da)
{ uchar i,byte_out;
  byte_out=adr;
mwx7219_pin_DIN=1;
mwx7219_pin_CLK=1;
mwx7219_pin_LOAD=0;
for(i=1;i<8;i++)
{  mwx7219_pin_CLK=1;
   mwx7219_pin_DIN=(bit)(byte_out&0x80);
  byte_out=byte_out<<1;
  mwx7219_CLK=0;
  max7219_delay();
}
   mwx7219_pin_CLK=1;
   byte_out=da;
   for(i=0;i<7;i++)
   { mwx7219_pin_CLK=1;
     mwx7219_pin_DIN=(bit)(byte_out&0x80)
  byte_out=byte_out<<1;
   mwx7219_CLK=0;
  max7219_delay();
  }
  mwx7219_pin_CLK=1;
  mwx7219_pin_LOAD=1;
  mwx7219_pin_DIN=(bit)(byte_out&0x80);
  mwx7219_pin_CLK=0;
  max7219_delay();
  max7219_pin_CLK=1;
  }
  //延時(shí)
void max7219_delay(void)
  {  uchar i;
    for(i=0;i<125;i++)
  {
  }
}



總是在第46行 max7219_echo(unsigned char  bw,sw,gw,dw);附近顯示語(yǔ)法錯(cuò)誤,但是我又沒(méi)檢查出錯(cuò)誤出處,求指點(diǎn)

作者: CENTRE    時(shí)間: 2019-7-26 10:46
void  max7219_echo(unsigned char bw,sw,gw,dw)
{   max7219_send_data(addr_bit_1,bw);
max7219_send_data(addr_bit_2,sw);
max7219_send_data(addr_bit_3,gw);
max7219_send_data(addr_bit_4,dw);
}
這個(gè)函數(shù)需要放到
void shuchu(uchar B)          //修改顯示數(shù)值及電壓輸出
{          //輸出電壓改變
P0=B;
//顯示改變
bw=B/1000;
sw=B%1000/100;
gw=B%1000%100/10+0x80;
dw=B%10;
/*bw=a[bw];sw=a[sw];gw=a[gw]+0x80;        dw=a[dw];*/
max7219_echo(unsigned char bw,sw,gw,dw);  //數(shù)據(jù)寄存器顯示
max7219_send_data(unsigned char addr,da);        //完成一次寄存器的寫(xiě)操作
}這個(gè)需要調(diào)用函數(shù)前面
作者: CENTRE    時(shí)間: 2019-7-26 11:01
函數(shù)申明也需要void  max7219_echo(unsigned char bw,sw,gw,dw);  被調(diào)用的函數(shù)要在 需要調(diào)用這個(gè)void shuchu(unsigned char B );  函數(shù)之前。希望我的回答可以幫到你哦
作者: hspirit3    時(shí)間: 2019-7-26 11:14
max7219_echo(uchar bw,sw,gw,dw); //數(shù)據(jù)寄存器顯示  加入uchar 干嘛?
作者: hspirit3    時(shí)間: 2019-7-26 11:14
max7219_echo(uchar bw,sw,gw,dw); //數(shù)據(jù)寄存器顯示  多了uchar
作者: 230157    時(shí)間: 2019-7-26 11:19
hspirit3 發(fā)表于 2019-7-26 11:14
max7219_echo(uchar bw,sw,gw,dw); //數(shù)據(jù)寄存器顯示  加入uchar 干嘛?

數(shù)碼管不是用字符顯示的嗎?
作者: Jean036    時(shí)間: 2020-7-8 22:09
樓主最后解決問(wèn)題了嗎,我也遇到這個(gè)問(wèn)題了,按第一位大佬說(shuō)的做了,但沒(méi)解決




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1