今晚注定是個(gè)無眠之夜,人需要有一種信念,并為之努力,如果能夠這樣的話,我想再大的困難也不是什么困難了,今天晚上看了亞運(yùn)會(huì)開幕式,除了感嘆國家進(jìn)步,作為一個(gè)廣東人,也很驕傲以外,我更看重的是晚會(huì)上的場(chǎng)景,幾乎百分之七十(這個(gè)數(shù)字是比較保守的估計(jì))以上都使用到了LED燈技術(shù),看完以后很興奮,不僅感概當(dāng)初沒有選錯(cuò)專業(yè),這不正是我們電子類的東西嗎?很多東西都要用到電子,我們的世界,因?yàn)橛辛穗娮樱辛藛纹瑱C(jī),而讓我們的生活變得豐富多彩了。
看著里面的LED燈變幻莫測(cè)的樣子,真的想自己編點(diǎn)東西會(huì)“動(dòng)一動(dòng)”的,呵呵,所以把今天學(xué)到的數(shù)碼管動(dòng)態(tài)顯示再加以應(yīng)用了,雖然這個(gè)程序搞了很久,但卻成功了,呵呵,得出的結(jié)論是,一個(gè)成功是由無數(shù)的失敗換來的,值!
下面是我編的一個(gè)程序,實(shí)現(xiàn)數(shù)碼管在0至100之間,數(shù)碼管以1秒的速度自動(dòng)加1;程序如下:#include<reg52.h>
unsigned char table[]= { //數(shù)碼管數(shù)組顯示內(nèi)容
0x3f,
0x06,
0x5b,
0x4f,
0x66,
0x6d,
0x7d,
0x07,
0x7f,
0x6f
};
int shi,ge,bai,a; //定義變量
unsigned int temp=0; //給數(shù)碼管賦初值
void timer1();//顯示程序調(diào)用聲明
void delay()//數(shù)碼管位選定時(shí)約1MS
{
int i,j;
for(i=1;i>0;i--)
for(j=120;j>0;j--);
}
void main()
{
TMOD |= 0x10; //定時(shí)設(shè)置的打開
TMOD &= 0xdf;
TH1 = (65536-50000)/256;
TL1 = (65536-50000)&256;
ET1 = 1;
TR1 = 1;
while(1) //實(shí)現(xiàn)位選和段選的操作及調(diào)用
{
bai =temp/100;
shi = temp%100/10;
ge = temp%10;
timer1();
P0 = 0x00;
P1 = table[bai];
delay();
P0 = 0x01;
P1 = table[shi];
delay();
P0 = 0x02;
P1 = table[ge];
delay();
}
}
void timer1() //段選內(nèi)容,實(shí)現(xiàn)1S自動(dòng)加1功能
{
if(TF1==1)
{
TF1=0;
TH1 = (65536-50000)/256;
TL1 = (65536-50000)&256;
a++;
if(a==20)
{
a=0;
temp++;
if(temp==100)
temp=0;
}
}
}
當(dāng)然,還是聲明,我的開發(fā)板是由P0.1至P0.3控制位選的,由P1口控制段選內(nèi)容的。