P0口接了八个led,采用共阳的接法,通过以下程序可以让这八个led按要求点亮。单片机中经常会使用到数组,尤其以后的数码管和led点阵,所有这部分学习放在前面。
led采用共阳的接法的意思就是,led的两个引脚中,阳极通过一个限流电阻接在5V电源上,阴极接在可以控制的IO口上,这样八个led都通过这种方式接,接好后就如下图:
- #include <AT89X51.H>
- //定义数组
- unsigned char code table[]={0xfe,0xfd,0xfb,0xf7,
- 0xef,0xdf,0xbf,0x7f,
- 0xfe,0xfd,0xfb,0xf7,
- 0xef,0xdf,0xbf,0x7f,
- 0x7f,0xbf,0xdf,0xef,
- 0xf7,0xfb,0xfd,0xfe,
- 0x7f,0xbf,0xdf,0xef,
- 0xf7,0xfb,0xfd,0xfe,
- 0x00,0xff,0x00,0xff,
- 0x01};
- //定义无符号的变量i
- unsigned char i;
-
- //定义延时函数的声明及实现
- void delay(void)
- {
- unsigned char m,n,s;
- for(m=20;m>0;m--)
- for(n=20;n>0;n--)
- for(s=248;s>0;s--);
- }
- void main(void)
- {
- while(1)
- {
- //判断是否为数组最后一个元素,如不是,则继续执行
- if(table[i]!=0x01)
- {
- //把第i个元素赋给p2口
- P2=table[i];
- //循环变量i自加
- i++;
- //调用延时函数
- delay();
- }
- else
- {
- i=0;
- }
- }
- }
复制代码 |