久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
為什么000-999的跑表按下暫停開關只顯示個位,不顯示十位和百位
[打印本頁]
作者:
雀四久
時間:
2024-8-3 10:44
標題:
為什么000-999的跑表按下暫停開關只顯示個位,不顯示十位和百位
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit wela=P2^7;
sbit dula=P2^6;
sbit key1=P3^4;
sbit key2=P3^5;
sbit key3=P3^6;
sbit key4=P3^7;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,};
uchar bai,shi,ge,tt;
uint aa;
void init();
void delay(uint z);
void display(uchar bai,uchar shi,uchar ge);
void main()
{
init();
while(1)
{
bai=aa/100;
shi=aa%100/10;
ge=aa%10;
display(bai,shi,ge);
if(key1==0)
{
delay(5);
if(key1==0)
{
TR0=0;
}
while(!key1);
delay(5);
while(!key1);
}
else
TR0=0;
}
}
void init()
{
aa=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void timer0() interrupt 1
{
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
tt++;
if(tt==100)
{
tt=0;
aa++;
if(aa==999)
aa=0;
}
}
void display(uchar bai,uchar shi,uchar ge)
{
wela=1;
P0=0xfe;
wela=0;
dula=1;
P0=table[bai];
dula=0;
delay(1);
wela=1;
P0=0xfd;
wela=0;
dula=1;
P0=table[shi];
dula=0;
delay(1);
wela=1;
P0=0xfb;
wela=0;
dula=1;
P0=table[ge];
dula=0;
delay(1);
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
作者:
xiaobendan001
時間:
2024-8-3 11:36
只顯示個,百十顯示0還是根本不亮?不暫停就顯示正常了?
作者:
cy009
時間:
2024-8-3 12:39
雖然沒有原理圖,但通過分析你的程序,幾點建議:
1.你的案例,用到了兩片鎖存器分別驅動數碼管的段和位,感覺有些浪費,用三個三極管驅動位端口就可以了。當然你的方案是為了節省IO口,但是驅動三位數碼管就沒那個必要了。
2.你遇到的問題:按下暫停開關只顯示個位,不顯示十位和百位。問題出在按鍵松手檢測“while(!key1);”,程序運行到這里就進入死循環等待,按理應該是數碼管全部熄滅,但是電路中有兩個鎖存器,能保持進入松手檢測前的數據,根據你編寫的動態顯示函數,最先掃描的是百位,最后掃描的是個位,所以進入按鍵程序前是掃描個位,故松手檢測時顯示的是個位。
3.解決辦法:在松手檢測時繼續調用顯示函數。程序為:“while(!key1) display(bai,shi,ge);”
作者:
雀四久
時間:
2024-8-3 13:20
xiaobendan001 發表于 2024-8-3 11:36
只顯示個,百十顯示0還是根本不亮?不暫停就顯示正常了?
更本不亮,不暫停就正常跑
作者:
雀四久
時間:
2024-8-3 14:05
xiaobendan001 發表于 2024-8-3 11:36
只顯示個,百十顯示0還是根本不亮?不暫停就顯示正常了?
根本不亮,對不暫停是正常的
作者:
zhuls
時間:
2024-8-3 14:14
程序架構的原因,所以按鍵后只顯示個位是正常的:
因為你暫停后是原地空轉,沒有進行動掃顯示,所以只能顯示取后一次的數值,而你顯示的最后一次就是個位數。
要想暫停后還能全屏顯示,你可以再開一個定時器,這個就專門負責動態掃顯,為了中斷減少對其它進程的影響,一次中斷只顯示一個數,下一次中斷顯示下一個數。。。
原則上來說,暫停鍵也不是原地打轉,而是關閉定時器的計數。。。
作者:
xiaobendan001
時間:
2024-8-3 16:49
只顯示個 的時候,亮度會變亮?看你住程序里面TR=0了,KEY1不管按不按都會TR=0啊。你那個計時怎么計的啊?
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
一区二区三区不卡视频
|
狠狠涩
|
两性免费视频
|
国产成人精品亚洲男人的天堂
|
97精品国产
|
www.99热
|
日韩一二区
|
高清乱码男女免费观看
|
亚洲国产福利
|
午夜久久久久久
|
午夜免费观看视频
|
黄色免费av
|
激情五月综合色婷婷一区二区
|
成人在线观看视频网站
|
亚洲综合三区
|
四虎黄色影院
|
91精品久久久久
|
欧美成人一级片
|
成人免费在线观看网站
|
激情婷婷
|
欧美日韩国产一区
|
精品久久视频
|
蜜桃视频一区二区
|
婷婷97
|
激情av网站
|
久久综合影院
|
国产传媒一区二区
|
黄色免费网站在线观看
|
天天天天天干
|
一级黄色性生活片
|
国产对白videos麻豆高潮
|
成年人av
|
黄色一级免费看
|
91av导航
|
午夜性色
|
日本三级一区
|
亚洲视频不卡
|
99视频网
|
美女黄色免费网站
|
欧美区在线
|
国产小视频在线观看
|