標(biāo)題: 求助---寫了個(gè)顯示程序顯示總不對(duì) [打印本頁(yè)]

作者: zhangrun11    時(shí)間: 2010-8-2 07:10
標(biāo)題: 求助---寫了個(gè)顯示程序顯示總不對(duì)

寫一個(gè)數(shù),然后把他顯示出來(lái),不知為啥顯示的不對(duì),請(qǐng)指點(diǎn)下,鼓搗好幾天了,也沒(méi)有頭緒,謝謝


#include <AT89X52.h>
#include <math.h>
#define uchar unsigned char
#define unint  unsigned int
sbit DUAN=P2^0;     //74HC573的LE端    LED的段選端
sbit WEI=P2^1;      //74HC573的LE端    LED的位選端
unint  a[5];
unint j;
unint temp;
uchar xian[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,};//共陰顯示字庫(kù) 0123456789
void delay(unint z)              //1ms延時(shí)
{
unint x,y;
 for(x=z;x>0;x--)
  for(y=110;y>0;y--);
}
void wei_1(uchar wei)       //鎖存器573的數(shù)碼管位控制
{
 WEI=1;
 P0=wei;
 WEI=0;
}

void duan_1(uchar duan)       //鎖存器573的數(shù)碼管段控制
{
 unint i;
 DUAN=1;
 P0=xian[duan];
 DUAN=0;
 for(i=200;i>0;i--);
}
void shuzhi()
{a[0]=temp/100000;
 temp=temp%100000;
 a[1]=temp/10000;
 temp=temp%10000;
 a[2]=temp/1000;
 temp=temp%1000;
 a[3]=temp/100;
 temp=temp%100;
 a[4]=temp/10;
 temp=temp%10;
 a[5]=temp;
  }
  void display2()         //顯示
{
shuzhi();
wei_1(0x7f);    /*秒*/
duan_1(a[0]);
 wei_1(0xbf);
 duan_1(a[1]);
 wei_1(0xdf);    /*-*/
 duan_1(10);
 wei_1(0xef);   /*分*/
 duan_1(a[2]);
 wei_1(0xf7); 
duan_1(a[3]);
 wei_1(0xfb);    /*-*/
 duan_1(10);
 wei_1(0xfd);   /*時(shí)*/
 duan_1(a[4]);
 wei_1(0xfe); 
 duan_1(a[5]);
  }
 void main()
{   temp=323456;
 display2();

}


作者: zhangrun11    時(shí)間: 2010-8-2 20:47

。。。。。


作者: zhouli297    時(shí)間: 2010-8-3 04:09

隨便一看就發(fā)現(xiàn)好幾處錯(cuò)誤         void wei_1(uchar wei)       //鎖存器573的數(shù)碼管位控制
{
 WEI=1;
 P0=wei;
 WEI=0;
}

此段 P0=WEI??不解  P0口應(yīng)該送入具體數(shù)據(jù)。比如0Xff········;

其二   有語(yǔ)法錯(cuò)誤  void duan_1(uchar duan)       //鎖存器573的數(shù)碼管段控制
{
 unint i;
 DUAN=1;
 P0=xian[duan];
 DUAN=0;
 for(i=200;i>0;i--);
}

據(jù)我所知   for應(yīng)該在P0=xian 之前  而且數(shù)組里面的duan  應(yīng)該改成變量i....。我也是初學(xué)   總覺(jué)得你的程序問(wèn)題很多 仔細(xì)看看吧     還有你的數(shù)組名前最好加個(gè)code  這樣就不會(huì)占用寶貴的RAM空間

[此貼子已經(jīng)被作者于2010-8-3 4:16:28編輯過(guò)]

作者: zhangrun11    時(shí)間: 2010-8-3 07:27

for是一個(gè)循環(huán),延時(shí)用的

那個(gè)wei在后面有 數(shù)據(jù)給他,

仍然謝謝,能不能給我講下code的用法,


作者: zhangrun11    時(shí)間: 2010-8-3 07:33
我寫他主要就是因?yàn)槲业?302那個(gè)時(shí)鐘顯示時(shí)間不對(duì),那段數(shù)組和顯示就是1302程序中的一部分,有數(shù)組時(shí)候顯示就亂了,等待中。。。。。。。。。。。。。。。。。
作者: admin    時(shí)間: 2010-8-9 20:04
zhouli297 兄弟說(shuō)得很對(duì)啊,你這個(gè)程序錯(cuò)的地方太多了,你還是參考一下我給出的板子附帶的例程吧,那個(gè)是測(cè)試通過(guò)的,你用的好像是老板子對(duì)吧,只需要改下 段和位的端口就行了,其他都一樣




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