📄 led.c
字号:
#include "main.h"
unsigned char code seg[10]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x19};
unsigned char code seg_zero[10]={0x02,0x9e,0x24,0x0c,0x98,0x48,0x40,0x1e,0x00,0x18};unsigned char dispbuff[6];
void delay12(unsigned int temp1)
{
while(temp1--);
}
void Moni_Send(unsigned char dsdata)
{
unsigned char i,temp=0;
CLK=0;
for(i=0;i<=7;i++)
{
temp=dsdata&0x01;
dsdata=dsdata>>1;
if(temp==0)
DAT=0;
else
DAT=1; //置数据在端口上
CLK=1; //发出移位脉冲
CLK=0;
}
}
//清空显示---------------------------------------------------------------
void disp_cls(void)
{ char i;
for(i=0;i<8;i++)
{
Moni_Send(0xff);
}
}
void disp_int()
{ char i,j;
for(i=0;i<10;i++)
{
dispbuff[0]=seg[i];
dispbuff[1]=seg[i];
dispbuff[2]=seg[i];
dispbuff[3]=seg[i];
dispbuff[4]=seg[i];
dispbuff[5]=seg[i];
dispbuff[6]=seg[i];
dispbuff[7]=seg[i];
for(j=0;j<8;j++)
{Moni_Send(dispbuff[j]);
}
delay12(60000);
disp_cls();
}
}
//*键盘处理程序--------------------------------------------
unsigned char key_chk()
{
unsigned char temp,key_c;
// 11xx xxxx
P2 =0xF0; // 1111 0000
ACC =P2 & 0xF0; // 1111 0000
B =ACC;
P2 =0x0F; // 0000 1111
ACC =P2 & 0x0F; // 0000 1111
temp=ACC | B;
if( temp !=0xff ) // 1111 1111
{
switch( temp)
{
case 0x77: key_c= 0; break;//0
case 0xbd: key_c= 1; break;//1
case 0xbb: key_c= 2; break;//2
case 0xb7: key_c= 3; break;//3
case 0xed: key_c= 4; break;//4
case 0xeb: key_c= 5; break;//5
case 0xe7: key_c= 6; break;//6
case 0xdd: key_c= 7; break;//7
case 0xdb: key_c= 8; break;//8
case 0xd7: key_c= 9; break;//9
case 0x7b: key_c= 10; break;//chuanhuan
case 0xee: key_c= 11; break; //+
case 0xbe: key_c= 12 ; break; //*
case 0x7d: key_c= 13; break; //<-
case 0xde: key_c= 14; break; //clear
case 0x7e: key_c= 15; break;//enter
default: key_c=0xff;
}
return(key_c);
}
else return(0xff);
}
unsigned char get_key()
{
unsigned char temp,temp1;
temp=key_chk();
delay12(15320);
temp1=key_chk();
if(temp==temp1)
return temp;
else
return 0xff;
// do
// {
// temp=key_chk();
// delay12(12000);
// temp1=key_chk();
// }
// while(temp==0xff||temp!=temp1);
// return(temp);
}
//*显适数值程序--------------------------------------------
void disp_num(unsigned char *buff)
{
dispbuff[5]=seg[buff[5]]; //ge wei
dispbuff[4]=seg[buff[4]]; //shi wei
dispbuff[3]=seg[buff[3]]; //bai wei
dispbuff[2]=seg[buff[2]]; //qian wei
dispbuff[1]=seg[buff[1]]; //wang wei
dispbuff[0]=seg[buff[0]]; //shiwang wei
//if(buff[5]==0)dispbuff[5]=0xff;
//if(buff[4]==0)dispbuff[4]=0xff;
//if(buff[3]==0)dispbuff[3]=0xff;
//if(buff[2]==0)dispbuff[2]=0xff;
//if(buff[1]==0)dispbuff[1]=0xff;
Moni_Send(0xff);
Moni_Send(0xff);
Moni_Send(dispbuff[3]);
Moni_Send(dispbuff[2]);
Moni_Send(dispbuff[1]);
Moni_Send(dispbuff[0]);
}
void disp_num_dot(unsigned char *buff)
{
dispbuff[5]=0xff; //ge wei
dispbuff[4]=0xff; //shi wei
dispbuff[3]=0xff; //bai wei
dispbuff[2]=seg_zero[buff[2]]; //qian wei
dispbuff[1]=seg[buff[1]]; //wang wei
dispbuff[0]=seg[buff[0]]; //shiwang wei
Moni_Send(dispbuff[5]);
Moni_Send(dispbuff[4]);
Moni_Send(dispbuff[3]);
Moni_Send(dispbuff[2]);
Moni_Send(dispbuff[1]);
Moni_Send(dispbuff[0]);
}
void disp_num_dot2(unsigned char *buff)
{
dispbuff[5]=seg[buff[5]]; //ge wei
dispbuff[4]=seg[buff[4]]; //shi wei
dispbuff[3]=seg[buff[3]]; //bai wei
dispbuff[2]=seg_zero[buff[2]]; //qian wei
dispbuff[1]=seg[buff[1]]; //wang wei
dispbuff[0]=seg[buff[0]]; //shiwang wei
Moni_Send(dispbuff[5]);
Moni_Send(dispbuff[4]);
Moni_Send(dispbuff[3]);
Moni_Send(dispbuff[2]);
Moni_Send(dispbuff[1]);
Moni_Send(dispbuff[0]);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -