P0=c;只能输出二进制数,并不能通过数码管显示数字而是乱码,需要把数转换为笔段码。
- #include <reg51.h>
- unsigned char code table[]={//共阴数码管段码"0~f-."
- 0x3f,0x06,0x5b,0x4f,
- 0x66,0x6d,0x7d,0x07,
- 0x7f,0x6f,0x77,0x7c,
- 0x39,0x5e,0x79,0x71,0x40,0x80};
- void csh()
- {
- SM0=0;
- SM1=1;
- // REN=1;
- // TI=0;
- // RI=0;
- // PCON=0;
- TH1=0xF3;
- TL1=0XF3;
- TMOD=0X20;
- // EA=1;
- // ET1=0;
- // ES=1;
- TR1=1;
- }
- void main()
- {
- int i,j;
- char c=0;
- csh();
- while(1)
- {
- // ES=0;
- // TI=0;
- // P0=c;
- P0=table[c];//在此插入数码管段码
- SBUF=c;
- while(!TI);
- TI=0;
- // ES=1;
- for(j=0;j<50;j++)
- for(i=0;i<5000;i++);
- c++;
- if (c>9)
- c=0;
- }
- }
复制代码 |