我的程序:
#include <reg52.h>
unsigned int ms;
unsigned char shumaguan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
//sbit wei1=P2^4;
sbit wei2=P2^5;
sbit wei3=P2^6;
sbit wei4=P2^7;
void delay (unsigned int ms)
{
unsigned int i;
unsigned char j;
for(i=0;i<ms;i++)
{
for(j=0;j<200;j++);
for(j=0;j<102;j++);
}
}
void main()
{
//P0=0xfe;wei1=1;P0=shumaguan[0];delay(5);wei2=0;delay(5);
P0=0xfd;wei2=1;P0=shumaguan[1];delay(5);wei2=1;//delay(5);
P0=0xfb;wei3=1;P0=shumaguan[2];delay(5);wei3=1;//delay(5);
P0=0xf7;wei4=1;P0=shumaguan[3];delay(5);wei4=1;//delay(5);
}
因为P2^4是接继电器的,所以用这个引脚会出问题,可是如果要用的数码管较多的话,还是要用这个脚的。
主要是这个程序显示的数字位置不对,为什么呢?请大侠赐教
此帖出自
小平头技术问答
P0=oxff //消影
P2=(P2|&0x0f)|0x70 //假设P2^0---P2^3为选通位 选通P2^0
P0=0xee //显示1 (共阳级数码管)
delay-ms(10);//调用延时函数
(如此循环4次,其他时间在去做其他任务。)如果I/O紧张选通位较多,可以接译码器扩展选通位如74HC138
一周热门 更多>