| 看样子你是用protues仿真的,那个四位的有问题,你换成一位一位的,就好了 |
| 哥们,这个肯定是程序问题,,你再好好查查程序 |
| 看看你的电路和程序是不是用的同样的IO口,你的数码管是共阳还是共阴。程序是共阳的段码。程序没问题主要看你的电路,和数码管。 |
| 是程序有问题还是硬件有问题这不好说,就算同一个程序不同的人制作出来会有不同结果。 |
| 你全点亮 先确定数码管没有坏 |
| 你全点亮 看看是不是数码管坏了 |
| 实物能不能显示?有的时候仿真出不来是器件显示时间不够 |
|
本帖最后由 末将 于 2016-2-15 22:44 编辑 这是程序 照着书上写的 #include<reg52.h> #define uchar unsigned char #define uint unsigned int sbit dula=P2^6; sbit wela=P2^7; sbit led1=P1^0; uchar code table []={0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e}; void delayms(uint); void display(uchar,uchar); uchar num,num1,num2,shi,ge; void main() {TMOD=0x11; TH0=(65536-45872)/256; TL0=(65536-45872)%256; TH1=(65536-45872)/256; TL1=(65536-45872)%256; EA=1; ET0=1; ET1=1; TR0=1; TR1=1; while(1) { display(shi,ge); } } void display (uchar shi,uchar ge) { dula=1 ; P0=table[shi]; dula=0; P0=0xff; wela=1; P0=0xfe; wela=0; delayms(5); dula=1; P0=table[ge]; dula=0; P0=0xff; wela=1; P0=0xfd; wela=0; delayms(5); } void delayms(uint xms) { uint i,j; for(i=xms;i>0;i--) for(j=110;j>0;j--); } void T0_time() interrupt 1 { TH0=(65536-45872)/256; TL0=(65536-45872)%256; num1++; if(num1==4) { num1=0; led1=~led1; } } void T1_time() interrupt 3 { TH1=(65536-45872)/256; TL1=(65536-45872)%256; num2++; if(num2==20) { num2=0; num++; if(num==60) num=0; shi=num/10; ge=num%10; } } |
| 现在本来应该是02 |