📄 display.c
字号:
#include <reg52.h>
#include <stdio.h>
#include <absacc.h>
#include <ctype.h>
#include <intrins.h>
typedef unsigned char uchar;
sbit STB=P1^5;
sbit CLK=P1^4;
sbit DATA0=P1^3;
int A[6];
int a1,a2,a3,a4,a5,a6;
unsigned char i,j;
float DATA;
extern void delay(unsigned long );
extern void Display(float display_data);
/***********************************************************************************/
main()
{//int A[6]={19,19,0,0,0,0};
A[4]=23;
A[5]=24;
while(1)
{
Display(18.6);
delay(0xffff);
A[4]=19;
A[5]=16;
Display(26.7);
delay(0xffff);
A[4]=23;
A[5]=24;
Display(8.3);
delay(0xffff);
Display(0.9);
delay(0xffff);
Display(26);
A[4]=19;
A[5]=16;
delay(0xffff);
Display(6);
delay(0xffff);
A[4]=23;
A[5]=24;
Display(138);
delay(0xffff);
}
}
//***************************************数码管显示函数**************************************/
void Display(float display_data)
{
uchar D[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0X88,0X83,0XC6,0XA1,0X86,0X8E,0X89,0XC7,0X8C,0X88,0XC1,0X91,0XFF,0X9C,0XC6};
uchar dp_data,Y;
if(display_data<1)
{A[0]=22;
A[1]=22;
A[2]=0;
A[3]=(int)(display_data*10);
}
else if(display_data<10)
{A[0]=22;
A[1]=22;
A[2]=(int)(display_data/1);
A[3]=(int)(display_data*10)%10;
}
else if(display_data<100)
{A[0]=22;
A[1]=(int)(display_data/10);
A[2]=(int)(display_data)%10;
A[3]=(int)(display_data*10)%10;
}
else if(display_data<1000)
{A[0]=(int)(display_data/100);
A[1]=(int)(display_data/10)%10;
A[2]=(int)(display_data)%10;
A[3]=(int)(display_data*10)%10;
}
a1=A[0];
a2=A[1];
a3=A[2];
a4=A[3];
a5=A[4];
a6=A[5];
for(i=0;i<6;i++)
{dp_data=D[A[i]];
if(i==2)
dp_data=dp_data&0x7f;
for(j=8;j>0;j--)
{ CLK=0;
if(dp_data&0x80)
Y=1;
else Y=0;
DATA0=Y;
CLK=1;
dp_data=dp_data<<1;
}
}
STB=0;
STB=1;
delay(2);
STB=0;
}
void delay(unsigned long s)
{
for(;s>0;s--);
{
for(;s>0;s--);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -