欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
流水燈,數碼管同時工作
[打印本頁]
作者:
瀟瀟123
時間:
2017-5-13 22:44
標題:
流水燈,數碼管同時工作
請教怎么讓流水燈和數碼管同時工作,我弄的總只能顯示其中一個…剛剛入門的小白,最好能推薦些有相關的詳細教程的,謝謝謝謝!!
作者:
admin
時間:
2017-5-14 00:40
這是我八年前寫的程序,你可以參考一下:
http://m.raoushi.com/bbs/dpj-3011-1.html
作者:
瀟瀟123
時間:
2017-5-18 20:37
admin 發表于 2017-5-14 00:40
這是我八年前寫的程序,你可以參考一下:
http://m.raoushi.com/bbs/dpj-3011-1.html
這是我的程序,如果是想要在定時器定義一個變量用來延時 ,也可以的嗎 大概要怎么弄啊
#include<reg52.h>
#include <intrins.h>
sbit key1=P1^0;
sbit key2=P1^1 ;
sbit key3=P1^2;
sbit key4=P1^3;
sbit key5=P1^4; //第五個鍵盤調節分
sbit key6=P1^5;
typedef unsigned char u8;
typedef unsigned int u16;
u8 smgduan[16]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07,
0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71,};// 段選
u8 smgduan1[16]={0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF,};
u8 smgwei[8]={0x00,0x04,0x08,0x0c,0x10,0x14,0x18,0x1c}; //位選
u8 a[4];//保存時鐘的數據
u8 sec,min;
void delay(u16 i)
{
while(i--);
}
void time0init() //定時器0初始化
{
TMOD=0X01;
TH0=0Xfc;
TL0=0X18; //1ms
TR0=1;
EA=1;
ET0=1;
}
void display()
{
u8 i;
a[0]=smgduan[sec%10];
a[1]=smgduan[sec/10];
a[2]=smgduan1[min%10];
a[3]=smgduan[min/10];
for(i=0;i<4;i++)
{
P0=a[i];
P2=smgwei[4-i];
delay(300); //不同的延時時間對數碼管顯示亮度會產生很大的影響,時間越短影響越大
}
}
//--聲明全局函數--//
void Delay10ms(unsigned int c); //延時10ms
/*******************************************************************************
* 函 數 名 : abc
* 函數功能 : 主函數
* 輸 入 : 無
* 輸 出 : 無
*******************************************************************************/
abc()
{
if(min==40)
{
unsigned char LED;
LED = 0x01; //0xfe = 1111 1110
while (1)
{
P0 = LED;
Delay10ms(50);
LED = LED << 1; //循環右移1位,點亮下一個LED "<<"為左移位
if (P0 == 0x00) //當它全滅的時候,重新賦值
{
LED = 0x01; // 0xfe = 1111 1110
}
}
}
}
/*******************************************************************************
* 函 數 名 : Delay10ms
* 函數功能 : 延時函數,延時10ms
* 輸 入 : 無
* 輸 出 : 無
*******************************************************************************/
void Delay10ms(unsigned int c) //誤差 0us
{
unsigned char a, b;
//--c已經在傳遞過來的時候已經賦值了,所以在for語句第一句就不用賦值了--//
for (;c>0;c--)
{
for (b=38;b>0;b--)
{
for (a=130;a>0;a--);
}
}
}
void keyscan()
{
if(key2==0)
{
delay(200);
if(key2==0)
{
delay(200);
min=0;
sec=0;
while (!key2);}
}
if(key1==0)
{
delay(200);
if(key1==0)
{
delay(200);
while (!key1);
TR0=~TR0;
}
}
if(key3==0)
{
delay(200);
if(key3==0)
{
delay(200);
sec +=10;
while(!key3);
}
}
if(key5==0)
{
delay(200);
if(key5==0)
{
delay(200);
min+=10;
while(!key5);}
if(min>=60)
{delay(200);
min=0;
sec=0;
while(!key5);}}
if(key6==0)
{
delay(200);
if(key6==0)
{
delay(200);
if(min>=10)
min-=10;
while(!key6);}
else
{delay(200);
min=0
sec=0;
while(!key6);}
}
if(key4==0)
{
delay(200);
if(key4==0)
{
delay(200);
if(sec>=10)
{delay(200);
sec-=10;
while(!key4);
}
else if(min>=1&&sec<=10)
{delay(200);
min-=1;
sec+=50;
while(!key4);
}
else if(min==0&&sec<=10)
{delay(200);
min=0;
sec=0;
while(!key4);
}
}
}
}
void main()
{
time0init();
while(1)
{ abc();
keyscan();
display();
}
}
void time0() interrupt 1
{
static u16 j;
TH0=0Xfc;
TL0=0X18; //1ms
j++;
if(j==1000) //1s
{
j=0;
sec++;
if(sec>=60)
{
sec=0;
min++;
if(min>=60)
{
min=0;
}
}
}
}
復制代碼
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1