#include<reg52.h> #define uchar unsigned char #define uint unsigned int uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar code table1[]={50,3,25}; uchar code table2[]={55,20,3}; uchar a=50,b=55,n=0,m=0; uchar j,k,c3,c2,c1,c0; uchar pp; void delay(unsigned int i) { int j; for(i;i>0;i--) for(j=20;j>0;j--); } void display(uchar x,uchar y,uchar o,uchar p) { P2=0x02; P3=table[x]; delay(5); P3=0xff; P2=0x01; P3=table[y]; delay(5); P3=0xff; P2=0x04; P3=table[o]; delay(5); P3=0xff; P2=0x08; P3=table[p]; delay(5); P3=0x00; } void main() { TMOD=0x01; TR0=1; TH0=(65536-46080)/256; TL0=(65536-46080)%256; ET0=1; EA=1; while(1) { if(TF0==1) { TF0=0; pp++; TH0=(65536-46080)/256; TL0=(65536-46080)%256; } if(pp==20) { pp=0; a--; b--; if(a==0) { n++; a=table1[n]; if(n==2) { n=0; } } if(b==0) { m++; b=table2[m]; if(m==2) { m=0; } } } c0=a%10; c1=a/10; c2=b%10; c3=b/10; display(c1,c0,c2,c3); } } |
#include<reg52.h> #define uchar unsigned char #define uint unsigned int uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar code table1[]={50,3,25}; uchar code table2[]={55,20,3}; uchar a=50,b=55,n=0,m=0; uchar j,k,c3,c2,c1,c0; uchar pp; void delay(unsigned int i) { int j; for(i;i>0;i--) for(j=20;j>0;j--); } void display(uchar x,uchar y,uchar o,uchar p) { P2=0x02; P3=table[x]; delay(5); P3=0xff; P2=0x01; P3=table[y]; delay(5); P3=0xff; P2=0x04; P3=table[o]; delay(5); P3=0xff; P2=0x08; P3=table[p]; delay(5); P3=0x00; } void main() { TMOD=0x01; TR0=1; TH0=(65536-46080)/256; TL0=(65536-46080)%256; ET0=1; EA=1; while(1) { if(TF0==1) { TF0=0; pp++; TH0=(65536-46080)/256; TL0=(65536-46080)%256; } if(pp==20) { pp=0; a--; b--; if(a==0) { n++; a=table1[n]; if(n==2) { n=0; } } if(b==0) { m++; b=table2[m]; if(m==2) { m=0; } } } c0=a%10; c1=a/10; c2=b%10; c3=b/10; display(c1,c0,c2,c3); } } |
47okey 发表于 2018-6-12 13:13 试过在延时后加P3=0x00,那样就整个不亮了 |
两个管子都连一起的话,要想同时显示,需要关闭(消隐)后打开另一个管子的控制段 |
显示另一位时,上一位要消隐,就是发先灭掉 |
复用没做好吧!!! |