找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2611|回復(fù): 2
收起左側(cè)

定時(shí)器控制數(shù)碼管動(dòng)態(tài)掃描——(有錯(cuò)誤)

[復(fù)制鏈接]
ID:76556 發(fā)表于 2015-4-10 03:10 | 顯示全部樓層 |閱讀模式
我的意思是想讓其數(shù)碼管以0~60循環(huán)顯示數(shù)字但是最后只能顯示個(gè)位或十位
而且位選也錯(cuò)了我叫它往東它卻往西讓后又往北!
從早上寫(xiě)到晚上21點(diǎn)  改了好久好久  其結(jié)果是要么控制各位要么控制十位...
達(dá)不到我所要求的工作目的!   瞬間明白為什么程序員愛(ài)加班了。。。而且有時(shí)加班時(shí)間超過(guò)14個(gè)小時(shí)............
#include<reg51.h>

#define uchar unsigned char
#define uint unsigned int
uchar aa,ss,ge,shi;
uchar code shuzi[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
sbit a=P1^0;
sbit b=P1^1;
void time(uchar k);
void display(ge,shi);
void display(ge,shi);
void main()
{
TMOD=0x01;   
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;   
IT0=1;   
ET0=1;  
TR0=1;
P1=0;
P2=0;       
while(1)
{
P1=0;
P2=0;
display(ge,shi);
}
}
void display(ge,shi)
{
a=1;
P2=shuzi[ge];
time(1);
P2=0;
a=0;

b=1;
P2=shuzi[shi];
time(1 );
P2=0;
b=0;


}
void time(uchar k)
{
uchar x,y;
for(x=100;x>0;x--)
for(y=k;y>0;y--);
}
void dsq0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
if(aa==20)
{
aa=0;
ss++;
if(ss==60)
{
ss=0;
}
shi=ss/10;
ge=ss%10;
}
}




設(shè)計(jì)者:薛羽豪


相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

ID:76556 發(fā)表于 2015-4-10 03:11 | 顯示全部樓層
花了12多個(gè)小時(shí)的寫(xiě)出來(lái)的程序.......... 但可惜只能單獨(dú)執(zhí)行個(gè)位或者十位....都申明完了但是就是不能一起執(zhí)行  位選那里也出了錯(cuò)  高低電平的輸出全部給我反著來(lái)  然后順序也給我反著來(lái)
回復(fù)

使用道具 舉報(bào)

ID:76556 發(fā)表于 2015-4-10 03:11 | 顯示全部樓層
現(xiàn)在來(lái)解釋一下錯(cuò)誤的原因
1,位選/段選寫(xiě)錯(cuò)了并且其釋放的電平高低寫(xiě)錯(cuò)了
2,沒(méi)有考慮到電路的陽(yáng)/陰極接法,線(xiàn)也接錯(cuò)了,程序必須與電路匹配
3,最好寫(xiě)上初始化函數(shù)
4,有些變量沒(méi)取對(duì)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表