#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define du P0
#define we P2
uint temp ,shi ,ge, numdu,tt ,bai ;
uchar code table[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0
x83,0xc6,0xa1,0x86,0x8e};
sbit control = P3^6 ;
void delay(uint z) ;
void display(uint bai ,uint shi ,uint ge) ;
void init() ;
void main()
{
init() ;
while(1)
{
if(tt==20)
{
tt=0 ;
temp ++ ;
if(temp == 100)
temp = 0 ;
bai = temp/100 ;
shi = temp%100/10 ;
ge = temp%10 ;
display(bai,shi,ge) ;
}
}
}
void init()
{
control = 0 ;
temp = 0 ;
TMOD = 0x01 ;
TH0 = (65536-50000)/256 ;
TL0 = (65536-50000)%256 ;
EA = 1 ;
ET0 = 1 ;
TR0 = 1 ;
}
void display(uint bai ,uint shi ,uint ge)
{
control = 1 ;
du = table[bai] ;
we = 0xfe ;
delay(5) ;
du = table[shi] ;
we = 0xfd ;
delay(5) ;
du = table[ge] ;
we = 0xfb ;
delay(5) ;
}
void delay(uint z)
{
uint x ,y ;
for(x = 100 ;x > 0 ;x--)
for(y = z ;y > 0 ;y--) ;
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
tt++;
}
ps:我的单片机有P3^6同时控制位选和断选,位选为P0,断选为P2
问题:三个数码管不能同时显示,只能轮流跳着显示,即使delay加长也一样,但是用两个锁存器控制断选和位选的打开管脚,复用P0管脚这种设置的单片机不会出现我的情况。求解决办法??
未命名.jpg (147.88 KB, 下载次数: 0)
下载附件
2012-4-16 15:59 上传
该送什么就送什么
一周热门 更多>