我根据这图在Proteus上面画了仿真,由于没有8550这个型号的三极管就随便用了个管子,发现根本不行。
我想显示34,给我显示了99.
我觉得可能是三极管的频率不够,所以将低了频率,还是不行。
- #include<reg52.h>
- typedef unsigned char u8;
- typedef unsigned int u16;
- sbit smg1=P2^5;
- sbit smg2=P2^4;
- u8 gsmg_code[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
- void delay_10us(u16 ten_us)
- {
- while(ten_us--);
- }
- void main()
- {
- u8 i=0;
- while(1)
- {
- P1=gsmg_code[3];
- smg1=0;
- smg2=1;
- delay_10us(5000);
- P1=0XFF;
- P1=gsmg_code[4];
- smg1=1;
- smg2=0;
- delay_10us(5000);
- P1=0XFF;
- }
- }
复制代码
感觉还是频率的问题,如果用真的8550,可以吗?
因为没有实物,也是不了。
我用单片机直接连公共端控制的时候,是可以的。
|