📄 数码管检测.c
字号:
//各个数码管依次从a段亮到dp段。
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit ser=P1^5;
sbit rclk=P1^4;
sbit srclk=P1^7;
uchar a,i,j,k,x,y,h,weitable[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f},
duantable[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //位编码和段编码
void delay(uint x) //延时函数
{
uint a,b;
for(a=x;a>0;a--)
for(b=112;b>0;b--);
}
void main()
{
a=1;
while(1)
{
x=0;
for(h=0;h<8;h++)
{
for(i=0;i<8;i++)
{
k=weitable[x]; //x的值表示第几个数码管亮
for(j=0;j<8;j++)
{
srclk=0;
k=k<<1;
ser=CY;
srclk=1;
}
k=duantable[y];
for(j=0;j<8;j++)
{
srclk=0;
k=k<<1;
ser=CY;
srclk=1;
}
rclk=0;
rclk=1;
delay(500);
a++;
y++;
if(a==9) //当一个数码管的八段都亮完之后,a重新计数。
{
a=1;
x++;
y=0; //y为段控制
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -