學習代碼梗逮,數(shù)碼管動態(tài)顯示。
案例說明:第一個數(shù)碼管顯示1绣溜,時間為0.5s慷彤,然后關閉它,立即讓第二個數(shù)碼管顯示2怖喻,時間為0.5s底哗,再關閉它……一直到最后一個數(shù)碼管顯示6,時間同樣為0.5s锚沸,關閉它后再回來顯示第一個數(shù)碼管跋选,一直循環(huán)下去。
案例中給出的是非循環(huán)的代碼哗蜈, 這里我需改成了for循環(huán)的形式前标。最開始將i=1
放在了for循環(huán)的括號內(nèi)部,總是報錯距潘。由于初學不是很了解具體的原因炼列,特此記錄。
全部代碼:
#include<reg52.h> //52系列單片機頭文件
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6; //申明U1鎖存器的鎖存端
sbit wela=P2^7; //申明U2鎖存器的鎖存端
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x5f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uchar code table2[]={
0xfe,0xfd,0xfb,0xff,0xef,0xdf};
void delayms(uint);
void main()
{
while(1)
{
int i=1;
for(i;i<7;i++)
{
dula=1;
P0=table[i]; //送段選數(shù)據(jù)
dula=0;
P0=0xff; //送位選數(shù)據(jù)前關閉所有顯示音比,防止打開位選鎖存器時俭尖,
wela=1; //原來的段選位數(shù)據(jù)通過位選鎖存器造成混亂送位選數(shù)據(jù)
P0=table2[i];
wela=0;
delayms(500); //延時
}
}
}
void delayms(uint xms){
uint i,j;
for(i=xms;i>0;i--) //i=xms即延時約xms毫秒
{
for(j=110;j>0;j--);
}
}