找回密码
 注册会员
搜索附件  

动态扫描.rar

 

求助!单片机动态扫描(等了好久杂么人能解,悲哀):
本人学习单片机的动态扫描 于是想自己编一个计时器,开电源后打00:00:00开始计时 但是问题出来了 在数码管上设置的秒位他老是不在设定的位置上显示
我把程序看了几遍但是还是不知道问题出在哪里!!


因此向广大高手求助一下,救救小虾米!
以下是程序代码·······
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar minn,miaoo,miaos,miaog,fenn,fens,
feng,shii,shis,shig;
sbit dula=P2^6;
sbit wela=P2^7;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f};
void delay(uint z);
main()
{
TMOD=0x01;//T0工作方式1
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;//计算初值
EA=1;//开放中断
ET0=1;//启动定时器中断
TR0=1;//启动定时器
while(1)
{
if(minn==10)
{
minn=0;
miaoo++;
//fenn++;
//shii++;
if(miaoo==60)
{miaoo=0;
fenn++;}
if(fenn==60)
{fenn=0;
shii++;}
if(shii==12)
{shii=0;}
miaos=miaoo/10; //计算秒十位
miaog=miaoo%10;//计算秒个位
fens=fenn/10; //计算分十位
feng=fenn%10; //计算分个位
shis=shii/10; //计算时十位
shig=shii%10; //计算时个位

}



dula=1;
P0=table[miaog];
dula=0;
delay(5);
P0=0xff;
wela=1;
P0=0xdf;
wela=0;

dula=1;
P0=table[miaos];
dula=0;
delay(5);
P0=0xff;
wela=1;
P0=0xef;
wela=0;


dula=1;
P0=table[feng];
dula=0;
delay(5);
P0=0xff;
wela=1;
P0=0xf7;
wela=0;


dula=1;
P0=table[fens];
dula=0;
delay(5);
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
dula=1;
P0=table[shig];
dula=0;
delay(5);
P0=0xff;
wela=1;
P0=0xfd;
wela=0;

dula=1;
P0=table[shis];
dula=0;
delay(5);
P0=0xff;
wela=1;
P0=0xfe;
wela=0;



}
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
minn++;
}

最后在附件里有我在Proteus下 搭好的电路和 程序
还有一张图片


请指正


[ 此帖被atlas1191在2010-06-06 18:52重新编辑 ]



QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-12-25 15:04 , Processed in 0.040483 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

返回顶部