- /*8位共阳数码管循环显示0--F;*/
- #include<reg52.h>
- #include<intrins.h>
- #define uint unsigned int
- #define uchar unsigned char
- uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; //共
- 阳数码管显示编码0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F;
- uchar code wela[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //位选开关
- void delay(z) //延时函数;
- {
- uint i,j;
- for(i=z;i>0;i--)
- for(j=100;j>0;j--);
- }
- void main() //主函数;
- {
- uchar i;
- P2=wela[0]; //选择第一个数码管的第一位(位选)1111 1110
- i=0;
- do //do-while 循环;
- {
- P0=table[i]; //数码管的显示赋值
- delay(500); //延时
- //P0=0x00; //消隐 0000 0000
- P2=_crol_(P2,1); //数码管位选左移 1111 1101 以此类推
- i++;
- if(i==16) i=0; //判断是否达到显示16次后,重新显示
- }
- while(1);
- }
复制代码 |