📄 liyi.c
字号:
#include <REG2051.H>
#include <stdio.h>
#define uchar unsigned char
sbit DIN=P1^0;
sbit LOAD=P1^1;
sbit CLK=P1^2;
sbit sound=P3^7;
sbit kaiguan=P1^7;
//unsigned char code dispbit[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
//unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
unsigned char disbuf[8]={0,0,0,0,0,0,10,10};
unsigned char temp[8];
unsigned char dispcount;
unsigned char T0count;
unsigned char timecount;
bit flag;
unsigned long chushizhi=1000;
void send(uchar add,uchar dat);
void s_seg(uchar X1,uchar X2,uchar X3, uchar X4,uchar X5,uchar X6,uchar X7, uchar X8);
void initt0andt1(void);
void frequency_process(void );
void main(void)
{
// unsigned char i;
sound=0;
kaiguan=0;
initt0andt1();
while(1)
{
if(flag)
{
flag=0;
frequency_process();
s_seg(disbuf[0],disbuf[1],disbuf[2],disbuf[3],disbuf[4],disbuf[5],disbuf[6],disbuf[7]);
}
}
}
void frequency_process(void )
{
uchar i;
// unsigned long freadd;
unsigned long my_result;
my_result=T0count*65536+TH0*256+TL0;
my_result=chushizhi-my_result;
if(my_result<100) sound=1; else sound=0;
if(my_result<80) kaiguan=1;else kaiguan=0;
for(i=0;i<8;i++)
{
temp[i]=0;
}
i=0;
while(my_result/10)
{
temp[i]=my_result%10;
my_result=my_result/10;
i++;
}
temp[i]=my_result;
for(i=0;i<8;i++)
{
disbuf[i]=temp[7-i];
}
timecount=0;
T0count=0;
TH0=0;
TL0=0;
TR0=1;
}
void initt0andt1(void)
{
TMOD=0x15;
TH0=0;
TL0=0;
TH1=(65536-4000)/256;
TL1=(65536-4000)%256;
TR1=1;
TR0=1;
ET0=1;
ET1=1;
EA=1;
}
void t0(void) interrupt 1 using 0 //T0
{
T0count++;
}
void t1(void) interrupt 3 using 0 //T1 4ms中断一次
{
TH1=(65536-4000)/256;
TL1=(65536-4000)%256;
timecount++;
if(timecount==250)
{
TR0=0;
timecount=0;
flag=1;
}
//P0=dispcode[dispbuf[dispcount]];
//P2=dispbit[dispcount];
//dispcount++;
//if(dispcount==8)
// {
// dispcount=0;
// }
}
void send(uchar add,uchar dat)
{
uchar ADS,i,j;
CLK=0;
LOAD=0;
DIN=0;
i=4;
while(i<16)
{
if(i<8)
{
ADS=add;
}
else
{
ADS=dat;
}
for(j=8;j>=1;j--)
{
if((ADS&0x80)==0)
{ DIN=0 ;}
else
{ DIN=1;}
ADS=ADS<<1;
CLK=1;
CLK=0;
}
i=i+8;
}
LOAD=1;
}
//void s_seg(uchar X1,uchar X2,uchar X3,uchar X4,uchar X5,uchar X6,uchar X7, uchar X8)
void s_seg(uchar X1,uchar X2,uchar X3, uchar X4,uchar X5,uchar X6,uchar X7, uchar X8)
{
send(0x0c,0x01);//正常状态
send(0x0b,0x07);//设置扫描范围DIG0-7
send(0x0a,0x05);//设置亮度11/32
send(0x09,0xff);//采用译码方式
send(0x01,X1);
send(0x02,X2);
send(0x03,X3);
send(0x04,X4);
send(0x05,X5);
send(0x06,X6);
send(0x07,X7);
send(0x08,X8);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -