寫一個(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(); }
。。。。。
隨便一看就發(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空間
for是一個(gè)循環(huán),延時(shí)用的
那個(gè)wei在后面有 數(shù)據(jù)給他,
仍然謝謝,能不能給我講下code的用法,
歡迎光臨 (http://www.torrancerestoration.com/bbs/) | Powered by Discuz! X3.1 |