📄 dianyuan.c
字号:
#include<reg51.h>
#include<intrins.h>
typedef unsigned int uint;
typedef unsigned char uchar;
uchar code table[]={
0xC0,0xF9,0xA4,0xB0,0x99,
0x92,0x82,0xF8,0x80,0x90};
uchar code select[]={
/*0x7f,0xbf,0xdf,0xef,*/
0xf7,0xfb,0xfd,0xfe};
uchar code tablecom[]={0x00,0x10,0x20,0x30,0x40};
sbit SCK=P1^0;
sbit CS=P1^1;
sbit SDI=P1^2;
sbit p1_5=P1^5;
sbit p1_6=P1^6;
sbit p1_7=P1^7;
#define S1 0x38
#define S2 0x34
#define S3 0x2c
#define S4 0x1c
uchar v=5,mv=0;
uint b,ss;
void delay(uint z)//延时
{
uint x,y;
for(x=z;x>0;x--)
for(y=124;y>0;y--);
}
void sysinit(void)//系统初始化
{
TMOD=0x11;
TH0=0xf8;
TL0=0x30;
TH1=0x4c;
TL0=0x00;
EA=1;
ET0=1;
ET1=1;
TR0=1;
TR1=1;
}
void senddat(unsigned long senddat)//发送数据函数
{
uchar i;
for(i=0;i<24;i++)
{
if((senddat&0x800000)==0)
SDI=0;
else
SDI=1;
_nop_();
SCK=1;
_nop_();
SCK=0;
senddat<<=1;
}
}
uchar keyscan(void)
{
uchar keyvalue;
P3=0xff;
keyvalue=P3;
keyvalue=P3&0x3c;
if(keyvalue==0x3c)
return(0xff);
delay(6);
P3=0xff;
keyvalue=P3;
keyvalue=P3&0x3c;
if(keyvalue==0x3c)
return(0xff);
while((P3&0x3c)!=0x3c);
return(keyvalue);
}
void keyset(uchar s)
{
switch(s)
{
case S1:
v++;b+=500;
break;
case S2:
v--;b-=500;
break;
case S3:
mv++;b+=100;
break;
case S4:
mv--;b-=100;
break;
}
}
main(void)//主函数
{
uchar i=0;
sysinit();
while(1)
{
CS=1;
_nop_();
_nop_();
CS=0;
_nop_();
senddat(0x210000+b);
}
}
void timer0 (void) interrupt 1 //定时器中断函数
{
static uchar num=0;
TH0=0xf8;
TL0=0x30;
P2=0xff;
switch(num)
{
case 0:
P0=table[v/10];
break;
case 1:
P0=table[v%10]&0x7f;
break;
case 2:
P0=table[mv/10];
break;
case 3:
P0=table[mv%10];
}
P2=select[num];
num++;
num%=4;
}
void timer1 (void) interrupt 3
{
TH1=0x4c;
TL0=0x00;
keyset(keyscan());
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -